Общие идеи последовательного построения:
Карта строится из узлов, то есть вершин. Это может быть в самом простом случае плоская карта или как у меня сферическая. Для ориентации в пространстве используется пронумерованная "клетка".
У пользователя есть как минимум 3 карты: физическая, климатическая и визуальная. Далее, возможно, политическая.
Клетка берет среднее арифметическое своих узлов для собственного определения рельефа и климата, плюс дополнительные параметры.
Физическая карта есть обычная географическая, показывающая рельеф местности, то есть высоту над уровнем моря, а также озера и реки (и возможно наиболее важные объекты, например крупные города и "юниты"). Рельеф задается в узлах по высоте. Например, 0 - уровень моря, 1 - 100м, 2 - 200м, 3 - 500м и так далее в соответствии со стандартными физическими картами.
Климатическая карта дает информацию о климате, то есть в совокупности температуру и влажность, а также озера и реки (и возможно наиболее важные объекты, например крупные города и "юниты"). Если на клетку "посажен" лес, то он строиться в соответствии с рельефом и климатом (по средним арифметическим значением узлов). При этом программа сама выбирает какой это лес, например, хвойный или тропический или экваториальный. Климатическая карта отображает климатические пояса, соответствующие стандартным климатическим поясам.
Визуальная карта изображает "все, что вижу", показывает все объекты на поверхности карты.
Озера находятся выше уровня моря, но заполнены водой, о чем говорит специальный параметр "клетки", что это озеро. Реки строятся по узлам, по серединам фигур, по серединам ребер и различаются по своей полноводности.
Иллюстрацию смотрите в предыдущем посте.
ссылка
Интересно было бы протестировать демо на разных компах. Тестировал на 3-х, адекватно запустился только на том, где компилировал.
Может специфика кода, вот думаю.
Код вроде правильный, теоретически. На одном компе скорее видеокарта такая, а на другом видимо непонимает компилятор. Значит проблемы: на одном изображение не обновляется, когда раскрываешь окно, на другом земля серого цвета. попрошу отписаться всех, кто будет тестить.
Можете и код протестить, все замечания можно сюда писануть.
<div class='quotetop'>Цитата(superregistr * 10.2.2010, 17:48) [snapback]324707[/snapback]</div>Код вроде правильный, теоретически. На одном компе скорее видеокарта такая, а на другом видимо непонимает компилятор. Значит проблемы: на одном изображение не обновляется, когда раскрываешь окно, на другом земля серого цвета. попрошу отписаться всех, кто будет тестить.
Можете и код протестить, все замечания можно сюда писануть.
[/b]
земля серая, обновляется нормально, видео intel gma x3100
<div class='quotetop'>Цитата(superregistr * 13.2.2010, 21:59) [snapback]325028[/snapback]</div>извиняюсь за задержку...Ches01
Попробуй еще раз. Проблема с видеокартой. Заменил glColor3f на glColor4f.
исправленная программа
[/b]
вот теперь все отлично, рельеф цветной
<div class='quotetop'>Цитата</div>видеокарта встроенная и, видимо, драйвер упрощенный. Он прописал где-то у себя обращение к glColor4f, а когда обращаюсь через glColor3f, он эту функцию игнорирует, ихмо. Спасибо за тестинг, учту в следующих версияхвот теперь все отлично, рельеф цветной [/b]
[attachmentid=6463]
Сфера полностью доделана Нумерация узлов и треугольников происходит по правилу правого винта, закручиваясь сверху вниз.
Скачайте testland_3_4.rar. Запустите testland_3_4_1.exe. Программа работает в консоли, попросит ввести число итераций, для тестинга хорошо подходит 4. Можете побаловаться и ввести 3. Итерация 5 подойдет для самой игры. Далее будут выводится рабочие данные, нажимайте "энтер". В конце программа поблагодарит вас, создаст файл ClearMap.map и закроется. В файле ClearMap.map хранятся данные "чистой" сферы.
Загрузите программу testland_3_4_2.exe. Программа загружает чистую сферу из файла ClearMap.map и накладывает на нее рельеф. Покрутите шарик. Крутится? Молодцы, значит вы все сделали правильно.
В файлах testland_3_4_1.rar и testland_3_4_2.rar исходники самих программ. Если будут вопросы по коду, обращайтесь.
Ого! Поздравляю! выглядит супер
EC2 - разработка игры
Мастерская Steam - мои моды для Civilization V
Last Citadel - сайт игроков Warlords III
Теперь осталось всего ничего.
Провести пару несложных арифметических операций и оценить сколько же понадобиться времени на все.
ЗЫ Код я смотрел... изменения не очень большие, за эти несколько месяцев.
<div class='quotetop'>Цитата</div>Всегда на вопрос: можно ли сделать, я всегда отвечаю: можно) Потому что теоретически можно сделать все) Конкретно по теме, то там узлы со значением высоты над уровнем моря. Каждому узлу в зависимости этой высоты ставится в соответствие цвет: например, зеленый, коричневый или голубой. В программе включено сглаживание цветов, это означает, что будет плавный переход от зеленого к голубому, например. Значит граница при увеличении будет нечеткой. Поэтому в данном случае четкую граничную линию придется дорабатывать отдельно.а можно ли сделать чтобы граница раздела суши и моря более четкая была?[/b]
И чего я к вам раньше не заглядывал, а вы ко мне...
У меня в проекте также шарики делятся, на сферические треугольники, но UEF космос и делать мир круглым или нет, такой проблемы даже не возникало. http://www.elite-games.ru/conference/viewt...2028360#2028360
Разработка игры Вселенная: расширяя пределы. Universe: extending the frontier. (UEF)
<div class='quotetop'>Цитата(Dr Gobbels * 14.4.2010, 13:39) [snapback]332888[/snapback]</div>А откуда ты их скачивал? Разные версии КьТи да имеют разные длл. Они уже лежат в копилке http://mygame.civfanatics.ru/objects/mygam...4.dll.files.rar от этой версии.Суперрегистр, не мог бы ты пожалуйста выложить и необходимые ДЛЛки тоже? Я скачал их с инета, но, видимо, не попал с версией - ругается, что не найдена точка входа в процедуру _Z5qFreePv
[/b]
<div class='quotetop'>Цитата(Pavel Zachesa * 14.4.2010, 12:31) [snapback]332878[/snapback]</div>Ух, будет время внимательно прочитаю. Как я понял, у вас задействовано все пространство сферы, а не только поверхность. Не проще ли полностью перейти в сферическую систему координат?И чего я к вам раньше не заглядывал, а вы ко мне...
У меня в проекте также шарики делятся, на сферические треугольники, но UEF космос и делать мир круглым или нет, такой проблемы даже не возникало. http://www.elite-games.ru/conference/viewt...2028360#2028360
[/b]
superregistr, разбивка в 5 итераций выглядит шикарно!
было бы здорово еще подсчитать регулярность сетки. то есть насколько я знаю метод разбиения икосаэдра приводит к некоторым искажениям... по идее они должны быть тем более заметны чем больше мы производим разбиений. было бы здорово сравнить минимальную и максимальную длины ребер между соседними вершинами.
еще было бы круто окрашивать местность в зависимости не только от высоты.. или накладывать текстуру на какието области.. чтобы различать к примеру пустыню и степь.
EC2 - разработка игры
Мастерская Steam - мои моды для Civilization V
Last Citadel - сайт игроков Warlords III