00:57

I'm not dead... yet.
Решил в свободное время начать делать компьютерную игру. Это должно стать трехмерной стратегией. Основными фишками будет то, что в ней воевать будут роботы, которых надо будет конструировать из набора запчастей. То есть не будет каких-то фиксированных юнитов. Будет несколько видов ходовых частей, корпусов, брони, много разного оружия и вундервафель. и игрок сможет это компоновать как хочет, получая юниты разных классов. Потом он будет строить армады роботов по своим проектам и отправляться громить врага. Также система повреждений будет больше напоминать варгейм - никаких полосок хелсов у юнитов. Каждый снаряд или поражает цель, или не поражает. Хорошая броня всего лишь понижает шанс удачного попадания, а хорошая пушка - всего лишь повышает. Еще хотелось бы сделать по-настоящему умных юнитов - чтобы не получилось как сейчас - один солдат воюет с врагом, а другие стоят в пяти шагах от них и не обращают никакого внимания на бой, пока игрок не щелкнет мышкой. С другой стороны, не хотелось бы, чтобы все юниты сами бросались в самоубийственную атаку на вражескую базу, завидев какое-то движение с той стороны. Надо сделать чтобы они сами могли оценивать ситуацию и игрок мог заранее определять их поведение в различных ситуациях. А может я забью на это болт. В общем планируется много интересных фишек, продумывать всю игровую механику я доверил одному человеку, который очень увлекается стратегиями и варгеймами. Авось чего и выйдет.

Вот правда моделлера и маппера нам не хватает, да и самого редактора мап пока нет...

и еще проблемы с графическим движком. Я начал разбираться в Ogre3d, но уж чересчур он тормозной. На моем домашнем компе тормозит даже то, что я наваял сейчас... просто случайно генерирующаяся карта высот, на базе которой строится "ландшафт". В программе используется всего две текстуры и выдранная из SDK модель робота (нет, я не собираюсь вставлять ее в игру), а размер карты высот составляет 80 на 80 (в игре я планировал карты размером минимум 1000х1000). В общем убожество полное, но даже это выдает всего 20-60 фпс. Буду курить мануалы по оптимизации. Или, может, перейти на какой-нибудь другой бесплатный движок, пока еще не поздно?..

п.с: скрин - cs922.vkontakte.ru/u1674956/98011260/x_ceb8db8a...

@музыка: Mitsumune Shinkichi - I'm not Junk

Комментарии
03.11.2009 в 04:30

Кто с чем к нам зачем, тот от того и того!
С другой стороны, не хотелось бы, чтобы все юниты сами бросались в самоубийственную атаку на вражескую базу, завидев какое-то движение с той стороны. Надо сделать чтобы они сами могли оценивать ситуацию и игрок мог заранее определять их поведение в различных ситуациях.
Напиши AI, который сможет победить любого человека в Го. Такой AI сможет управлять даже реальными армия довольно эффективно.
03.11.2009 в 09:05

Была такая RTS "Machines". Там как раз набор шасси, стволов, двигателей и возможность конструировать своих юнитов. В Warzone 2100 тоже, в принципе, было что-то подобное.

Ogre 3d тормозит в режиме дебага, в релизном должен выдавать вполне приличные 100-120 фпс, проверь ключи компиляции.
03.11.2009 в 09:44

I'm not dead... yet.
stradetch Нет. Я не собираюсь делать АИ для игры в Го.

almaburu Просто разница в скорости между рабочим и домашним компом поразительная. Да, на работе проц побыстрее (селерон 1.8 против селерона 1.2) и оперативки гиг, а не полгига. Но то, что на работе даже в дебаге выдавало приличную скорость, дома подвесило комп минут на десять, в течение которых я пытался хоть как-то убить процесс. В любом случае, оптимизация нужна. Вообще, надо почитать как делаются большие ландшафты. Пока что ничего полезного не нагуглил. Я, конечно, могу разбить ландшафт на куски, чтобы не просчитывать сразу все, но даже первоначальное построение буфера вершин/нормалей/текстурных координат в огровских объектах при инициализации будет занимать несколько минут, а это не гут для такой примитивной графики.
03.11.2009 в 09:58

I'm not dead... yet.
чтобы не быть голословным, вот кусок кода, из-за которого тормозит:


Правильность доставания координат из массива и оптимизацию обхода опустим. Если закомментировать операторы, связанные с ManualObject, то обработка массива занимает 15-30 миллисекунд, в противном случае - 750-800.

думаю попробовать пихнуть этот набор треугольников в StaticGeometry, может будет лучше работать. Еще я пробовал создать меш и запихнуть в него вершины, обращаясь напрямую к его внутренним буферам. Мне кажется так должно быть побыстрее. Но, несмотря на все усилия, на выходе получалась пустота. То есть меш есть, массивы не пустые, но на экране он почему-то не отображается. Хотя код брал из примера на Ogre Wiki.
03.11.2009 в 10:05

I'm not dead... yet.
кстати, я только что подумал, что количество вершин можно сократить в 4 раза, потому что из каждой вершины выходят 4 треугольника... и сейчас у меня по идее получается ,что в одной и той же точке создается 4 вершины. правда будет чуть сложнее высчитать индексы, но это все-таки сэкономит и память, и ресурсы проца.
03.11.2009 в 10:34

Just-a-Shadow
У огра есть нативная поддержка LOD, и обычно делают динамическую смену сетки для больших ландшафтов.
Есть классические реализации вроде такой - www.youtube.com/watch?v=I3_pb6Gq5hs&translated=... (700fps)

www.ogre3d.org/forums/viewtopic.php?f=11&t=4984...

И обращаю внимание еще раз, не жди на дебаге больше чем 10-12 fps, он всегда медленнее на пару порядков.
03.11.2009 в 11:59

Я плакалЪ...
Каким образом игроки будут зарабатывать новые детали? Будут какие-то ресурсы?
03.11.2009 в 15:34

I'm not dead... yet.
almaburu Спасибо. Про лод я знаю, просто вопрос в том, как создавать эти сетки... рендерятся-то они достаточно быстро (мне не нужно, чтобы игрок сразу мог видеть всю карту, а значит можно разбить ее на кусочки и рендерить не все), вот создание занимает много времени. Хотя я тут провел кое-какие оптимизации, в общем пока меня быстродействие устраивает.
Можно еще задам вопрос, раз ты в этом разбираешься?) нужен редактор уровней. Просто не хочу изобретать велосипед. Чтобы там было удобно редактировать карту высот. Еще желательно чтобы можно было назначать для каждой клеточки свои свойства (тип материала) и кидать на карту разные произвольные объекты, но в принципе это я и сам могу запилить... И сохранять в каком-нибудь несложном формате, или вообще в XML. Должна же существовать какая-то более-менее универсальная тулза.

yaplakal
Этот вопрос не совсем ко мне :) да, мы рассчитывали что в игре будут какие-то ресурсы... например они будут добываться в захваченных зданиях (типа нефтяных вышек в Generals), или собираться из каких-то специальных зон на карте. Пока ХЗ.