Технические решения
Автор: Alena Категория: Программист
Несколько слов о том, какие технические решения используются при разработке игры, и почему используются именно они. Также я немного расскажу о том, от чего пришлось отказаться.
Разработка ведется на C++, версия DirectX - DirectX8.1. Почему именно эта версия? Как написано где-то в FAQ‘е нам хочется, чтобы играть могли как можно больше людей. И, в целом, 8.1 хватает.
В качестве багтракинговой системы используем TaCo. В качестве системы контроля версий SubVersion. Для работы с документацией у нас есть wiki.
Об использовании, а вернее о неиспользовании сторонних движков. Я смотрела различные движки еще до того, как стала работать с Джимом. Я ковырялась с 2Д игровыми движками Allegro и PopCap Framework. Оба бесплатные, оба с открытыми исходниками. PopCap мне очень понравился и, если мне когда-нибудь случится заниматься разработкой 2Д игры, я, скорее всего, буду использовать его. С ним есть только один неприятный момент - он использует fmod для проигрывания звука, а он платный. Так что, либо надо докупать к нему fmod, ну или, что на мой взгляд лучше, выковырять оттуда fmod и прикрутить что-нибудь другое. Но поскольку мы используем 3D, это все не очень актуально.
Из 3D я смотрела OGRE. Бесплатный, исходники открытые. Небесплатные я вообще не смотрю, потому что те, что за деньги, мы купить не в состоянии, а отутствие исходников приводит к проблемам. Если в движке что-то не так и ты хочешь это просто поменять, с открытыми исходниками все просто - зарываешься в исходник и меняешь.
Поскольку это было некоторое время назад, моя информация может устареть, но вот что я про него помню. OGRE - это только графический движок. Причем версию DirectX они используют девятую. Я так понимаю, это обычное дело для игровых движков - использовать последнюю версию DirectX. При использовании OGRE, да и вообще любого движка, придется с собой таскать некий объем бинарников. Причем использовать я скорее всего буду не всё, что там есть. Поскольку мы не отказываемся от shareware распространения игры, и в начале разработки этот путь вообще казался наиболее вероятным, то таскать за собой что-либо лишнее не хотелось бы. Далее, движок - это некий кусок, вообще говоря, неизведанного и плохо контролируемого кода, с которым надо разбираться, который будет иногда преподносить сюрпризы, и с этим придется что-то делать. Это не стандартная протестированная вдоль и поперек библиотека, в исходники которой лазить не приходится. В случае OGRE, одного OGRE недостаточно. Нужна еще физика. Я смотрела ODE (бесплатный, с открытыми исходниками). Опять же, не специально для этого проекта, просто смотрела в свое время… Есть, кстати, демка с движением машины на ODE. Только в демке машина едет по ровной плоскости, а это не очень интересно. В принципе, в ODE поддержана работа с произвольными поверхностями, но я почитала, что про него пишут, посмотрела демки… Так вот, работа с произвольными поверхностями там работает недостаточно корректно, а проезд машины по ландшафту - это фактически основное что мне нужно от физики. Плюс, опять же, поискала мнения по его использованию. Говорят: “да, ODE неплохой, можно использовать, но только его придется обработать напильником”. Итак, придется таки изучать исходники, что-то под себя менять. И опять же, мне не нужна вся физика из ODE, мне нужна только часть, очень небольшая, которая как раз работает не очень. И это еще один бинарник. И плюс это скрещивание одного стороннего кода с другим сторонним кодом. Я знаю удачный пример скрещивания OGRE и ODE, человек писал в форуме OGRE об удачной реализации эмулятора вертолета. Но я все же решила, что минусов слишком много.
Я почитала теорию, посмотрела по диагонали исходники и документацию этих движков и решила, что я смогу реализовать нужное нам с Джимом подмножество фич самостоятельно. Я также скачивала и смотрела исходники игры Dead Justice от Cat Mother, всегда полезно.
Да, ко всем прочим минусам использования стороннего кода прибавляется еще один: используя его, ты отнимаешь у себя часть fun’а. Джим ведь взял на себя всю самую скучную часть - придумывание истории, рисование графики, дизайн уровней. Мне же осталось самое интересное - реализация алгоритмов. Расклад получился очень удачный. Фактически от Джима я получаю описание того, чего он хочет от кода. Без каких-либо указаний как именно я должна это реализовывать. Ему нужно, чтобы работало. Поскольку Джим имеет опыт программирования, то сформулировать задачу он умеет хорошо. Я это реализую с использованием болванок и собственноручно нарисованных текстур в моем любимом графическом редакторе Paint. После этого отдаю Джиму, он это конфигуряет, подставляет графику… Я помню как-то увидев результат сказала: “надо же, как красиво!” Джим смеется: “ты же сама это программила”. Вообще да, но у меня это выглядело несколько… иначе.
Было направление, которое я ковыряла долго, но которое не принесло каких-либо результатов. Это упаковка данных, аналогично тому как пакуют данные демосценеры в 4K и 64K интро. Эти же подходы применены в небезызвестном “кригере” (.kkrieger). Опять же, работать в этом направлении я начала, держа в голове shareware вариант игры. Тут чем меньше, тем лучше. Нет, 64К, это, конечно, слишком мало, да и 96K как у “кригера” - это тоже все еще экстремально малый объем, но избавиться от нескольких лишних мегабайтов было бы неплохо.
Основная идея упаковки, которая используется в интро - это генерация текстур и моделей программно. Совсем без каких-либо дополнительных средств это делать затруднительно, поэтому имеет смысл написать какую-нибудь тулзу себе в помощь. Авторы “кригера” для этого использовали самописный редактор .werkkzeug1, который может скачать любой желающий. Но редактор этот заточен под создание демок, на выходе получаешь уже готовую демку. Я его крутила и так и сяк, но как его приспособить к разработке игры не знаю.
И в любом случае, это нам совсем не подходило. К тому моменту Джим уже рисовал все в 3DStudio, попиксельно выверяя свои текстуры и предлагать ему переходить на какой-то совершенно неизвестный редактор, который еще к тому же и сырой, смысла не имело.
Насколько удачными окажутся принятые мною решения, покажет время. Пока все идет нормально.


Алена и Джим, подохнуть просто от вас. Ну мега-люди
Тьфу, кроме сумбура, ничего не лезет в голову.
Автор: dustypup (11.15.05, Ноябрь 15, 2005, 23:45)Добрый вечер!
Насколько я помню, OGRE держит и DX8 и 9 и OGL…
Насчет того, что движок писать интересно самому - это точно, но вот с физикой это заморока… Вообще прикручавать к своему движку ODE и LUA сейчас очень модно! =) Кстати видел на ODE игруху категории A, вот только запамятовал название. =(
Если я правильно понял, то Ваш проект рассчитан на 2 года, т.е Вы его готовите к 2007 году? Если так, то много ли найдется людей в 2007 году без 9го ДХа?
Кстати какие впечатления о SubVersion? Он вообще стабилен? Удобен? В сравнениии скажем с Perforce?
С Уважением,
Автор: Alena (11.16.05, Ноябрь 16, 2005, 1:57)dustypup
2dustypup:
>Насколько я помню, OGRE держит и DX8 и 9 и OGL…
Да, я давно его смотрела, могу ошибаться.
>Если я правильно понял, то Ваш проект рассчитан на 2 года, т.е Вы его готовите к 2007 году?
На 2 года. Но начали мы его год назад. То есть мы планируем выпустить его в 2006.
>Если так, то много ли найдется людей в 2007 году без 9го ДХа?
Тут на мое мнение повлияла работа с shareware. Там действует правило: выбирай наименьшую возможную версию DirectX. Очень многие люди вообще не знают что такое DirectX и уж точно не могут его проапгрейдить.
>Кстати какие впечатления о SubVersion? Он вообще стабилен? Удобен?
Отличная штука, никаких нареканий.
>В сравнениии скажем с Perforce?
Никогда с таким не работала. А, мне тут Маньяк подсказывает, что он платный…
Автор: tensor (11.16.05, Ноябрь 16, 2005, 2:47)О, раз речь зашла о платности.
Автор: Alena (11.16.05, Ноябрь 16, 2005, 2:58)Компилируется все MinGW(кстати, есть для него библиотеки DirectX 8.1, я только от DX7 видела) или аналоги?
2tensor:
Но SubVersion очень хороший бесплатный аналог, поэтому я даже не буду пытаться пользоваться Perforce.
Пока я все компилирую MSVC++6.0. Но я таки планирую финальную версию скомпилять микрософтовским бесплатным компилятором.
Не, я понимаю куда брошен камень.
P.S. О народ! 3 часа ночи, а все не спят.
Автор: DemNZV (11.16.05, Ноябрь 16, 2005, 8:02)… все вполне укладывается в нормальные представления о продукте. Ждем-с новостей дальше
Автор: dustypup (11.16.05, Ноябрь 16, 2005, 19:41)…и демку, демку!!! =)))
2Alena
>То есть мы планируем выпустить его в 2006.
Ок. Невнимательно читал…
>Очень многие люди вообще не знают что такое DirectX и уж точно не могут его проапгрейдить.
Есть такое дело, только такие люди в игры не играют… =)
>Отличная штука, никаких нареканий.
Хм, надо будет посмотреть… А то на работе либо perforce, либо vss, а для дома ничего маленького, бесплатного и удобного не могу найти… =(
Автор: Jim (11.16.05, Ноябрь 16, 2005, 22:28)> Есть такое дело, только такие люди в игры не играют…
Субъективный подход. На самом деле таких людей на порядок больше, чем тех, кто “в теме”. Хотя бы на основе той статистики, что я имею среди своих знакомых и родственничков. Какой там DirectX!? Notepad то без посторонней помощи запустить не могут. А слово “драйвер” это для них, что-то из области авто.ру Зато все в голос орут: “Как так я не могу играть в Doom 3?!! Я ХАЧУ! У меня крутой компьютер!”. И, естественно, все утверждают, что им “продавец сказал, что на таком крутом компьютере (2 мегагерцовый селерон с встроенной в мамашку видеокарточкой на интеловом чипсете) у меня все игры пойдут”. И, естественно, все ваши попытки объяснить, что есть некоторая сугубо железно-софтовая разница между MS Word и Doom, воспринимаются, как попытки по-быстрому от них отделаться. Обижаются. Увы - это придется принимать в расчет и как-то жить с этим. Процент понимающих геймеров ничтожно мал в той массе потенциальных потребителей, которые готовы платить за игру, вполне обоснованно полагая, что делая это, они не обязаны понимать разницу между DirectX8 и DirectX9.
Я немного утрирую, но суть, думаю, понятна…
Автор: storkvist (11.17.05, Ноябрь 17, 2005, 4:47)Во-первых, хвалю за желание написать свой движок. Ну и как бы… Восхищаюсь, что ли такой уверенностью в своих силах…
Надеюсь, что все получится…
Во-вторых, у меня недавно был разговор с другом, на тему того, что программисты - такой народ, которых хлебом не корми - дай сделать все самому, самостоятельно. Пусть даже до него все это было сделано другими людьми и не раз… Я как бы и за собой такое замечаю…
Поэтому хотел бы уточнить: Почему все-таки не была рассмотрена идея взять уже написанный движок и улучшить его? Это на самом деле настолько сложно, что самому написать легче? Насколько я понимаю, единственная проблема - необходимость разбираться в чужом коде. Но, на первый взгляд, (может быть взгляд дилетанта
) это ничуть не сложнее, чем просто ручками все вбивать самому. Передо мной сейчас стоит примерно такая же проблема, что и перед вами год назад: взять что-то готовое и отшлифовать под себя, или писать все самому…
Может быть это даже такой… идеологический вопрос: я улучшу, мою версию кто-нибудь улучшит и т.д. Глядишь, через год-два получится супер классная вещь…
Автор: dustypup (11.17.05, Ноябрь 17, 2005, 12:23)2Jim
Может оно и так, хотя у меня таких знакомых почти что нет. В основном либо знают комп и играют, либо совсем к компу не подходят…
2storkvist
Автор: Maniac (11.17.05, Ноябрь 17, 2005, 21:57)Свой велосипед изобретать всегда интересно. =) Это есть процесс познания. И даже если в итоге у этого велосипеда будут квадратные колеса, все равно это своё собственное детище. =)
Я, хоть и не Алена, но уж очень хочется ответить на тему “писать свой/брать чужой”. Дело в том, что это как раз *не* идеологическая проблема. Это простой инженерный выбор. Если чужой движок хорошо соответствует задаче, то наверное проще будет взять его и переделать. Если движок хорошо подходит к одному требованию к игре из пятидесяти — наверное этот движок не пойдет.
И еще, кроме чисто количественных оценок еще очень важна квалификация самого программиста. Если программист хороший, то он и велосипед в состоянии изобрести очень хороший и, что главное, хорошо подходящий к его задаче.
Конечно, когда делаешь в начале этот выбор, не все можно просчитать и оценить. Поэтому в нем всегда есть какая-то вероятность того, что выбор сделан неправильно. Но и это не так уж страшно. Тут достаточно отсечь очевидно дохлые варианты, а с тем, что ты не угадал максимально эффективный путь с самого начала, можно примириться.
Но главное — не изобретать себе святых правил типа “всегда надо искать библиотеку” или “все надо писать самому”…
Автор: Alena (11.17.05, Ноябрь 17, 2005, 23:41)Про велосипеды: если подходить к вопросу формально, я ничего не изобретаю. Все алгоритмы, которые я использую, широко известны. Мне остается лишь выбрать наиболее подходящий и реализовать его. Хотя нет, один раз изобрести велосипед мне таки пришлось, потому что я долго искала что-либо подходящее, не нашла, пришлось заняться изобретательством.
2storkvist:
>Восхищаюсь, что ли такой уверенностью в своих силах
:-)
>хлебом не корми - дай сделать все самому, самостоятельно
Ну да, самостоятельная реализация - это лучший способ разобраться, да и вообще это интересно. Если бы Линус Торвальдс не захотел вдруг написать операционную систему, не было бы у нас никакого Линукса.
Не факт, что у тебя получится лучше, чем уже есть. Но если не пробовать и не пытаться, то точно не получится.
Но в данном конкретном случае отказ от движка был все-таки результатом анализа плюсов и минусов.
>Почему все-таки не была рассмотрена идея взять уже написанный движок и улучшить его?
Уже написанный движок, вне зависимости от того, графический он или движок физики, неважно, довольно сложен. Там сделаны большие обобщения, и именно поэтому с его помощью, грубо говоря, можно написать и тетрис, и RPG. У нас, конечно, не тетрис, но нужен мне был бы только небольшой кусок. То, что я пишу, сильно проще, и подходит только для нашей игры, зато подходит хорошо. Движок избавляет тебя от определенного ряда проблем, зато лишает тебя гибкости. Ну и Маньяк там выше хорошо написал.
>Это на самом деле настолько сложно, что самому написать легче?
Ох, не люблю я такие оценки. “Сложно” - очень нечеткое понятие. Кому-то сложно, кому-то просто. В данном конкретном случае, для меня, для моей задачи, я сочла это нецелесообразным.
>Насколько я понимаю, единственная проблема - необходимость разбираться в чужом коде.
Это один из минусов, не самый большой. Например, я определенно буду использовать сторонний звуковой движок, потому что я плохо умею работать со звуком. Я буду использовать PopCap’овский движок, если мне когда-либо придется работать с 2Д. Я бы использовала сторонний движок для всей игры, если бы нашла движок, который решал бы все мои проблемы настолько хорошо, насколько для 2Д случаев это делает PopCap.
>это ничуть не сложнее, чем просто ручками все вбивать самому
Тут, возможно, сложилось такое впечатление, что я буквально открыла пустой файл и начала ваять. Нет. С DirectX SDK идет довольно много неплохих примеров, кое-что я оттуда взяла. Там же, кстати, есть Framework для 3D приложений, я его использую.
>Передо мной сейчас стоит примерно такая же проблема, что и перед вами год назад
Автор: tensor (12.05.05, Декабрь 5, 2005, 15:49)Ну вот, я изложила, что именно привело меня к такому решению. Сравнительно скоро увидим, насколько я была права/не права.
Да, если интересует конкретно как я что реализовывала, пишите, можно прямо сюда. Про тени напишу непременно.
PopCap мне очень понравился и, если мне когда-нибудь случится заниматься разработкой 2Д игры, я, скорее всего, буду использовать его.
И тут лицемерие ;(
Метеор же типичная 2Д игра, и 3Д-меши и т.д. там совсем не в тему.
Несколько человек в титрах указано, и никто даже не подумал, что 2Д гораздо лучше там было бы…
И последний мой вопрос. Энтузиазм - это, конечно, хорошо. Вы совсем ничего не говорите о денежной стороне процесса, а для многих читателей (не студентов) это гораздо важнее каких-либо shadow map (которые на практикуме в институте делали) или ландшафтов в 3Д.
Одно дело - игра или программа, которую один человек 3 месяца делает и потом она денег на жизнь нормально приносит. И совсем другое, когда 2 человека, да еще и больше года. Даже по скромным расчетам подобная игра должна принести хотя бы 1*2*24*2 = 96К, чтобы только окупить проживание (в течение этих двух лет). Да и как быстро она это все окупит, тоже неясно. Ненадежно, имхо, и сколько ни спрашиваю, из тех, кто в вузе хорошо писал [графические] программы, никто на такие призрачные условия не пойдет.
Игры на энтузиазме - это, наверно, хорошо для студентов. Но вы то уж вроде далеко не студенты.
Из тех, кто много “на публику” пишет, _http://www.enkord.com
Автор: Jim (12.05.05, Декабрь 5, 2005, 16:39)Он, правда, на форумах в основном общается. Он и про художественно-технические вопросы пишет (он одновременно и художник, и программист), и про финансовую сторону - как с двух игр (срок создания игры около 4 месяцев) открыл офис с несколькими работниками. Просто подобные вещи лучше читаются (я не студент), когда видно, что, как и за сколько сделали.
И последний мой вопрос. Энтузиазм - это, конечно, хорошо. Вы совсем ничего не говорите о денежной стороне процесса… …Но вы то уж вроде далеко не студенты.
Именно потому, что мы не студенты уже давно, вопрос денег не стоит настолько остро, чтобы имело смысл его разжевывать. За Алену не скажу - не имею распростаненной в народе привычки считать чужие деньги, но лично я имею постоянный и стабильный доход, позволяющий мне вполне безбедно существовать и заниматься чем-то “на энтузиазме”. Это плохо? Тут что-то не правильно?
Безусловно, мы могли заколбасить убогую шаровару которые пипл хавает. Стрясти бабла и дописать в свое порфолио эту “эпохальную победу”. Возможно, у кого вопрос денег - болезненный, им так и следует поступать. Но я не вижу _лично_для_себя_ в этом ни удовольствия, ни чести. Так, что, предлагаю, вопрос денег пускай студенты, не студенты и протча, решают каждый самостоятельно. Еще не хватало, чтобы мы людей жить учили
Не говоря уже о том, что… А о каких деньгах говорить то? Шкуру неубитого медведя делить - некомильфо. Будет игра - будут деньги, будет тема, а сейчас, шадоумэпы гораздо более интересная и более приоритетная задача.
Автор: Jim (12.05.05, Декабрь 5, 2005, 16:43)Кстати, если кому это действительно настолько интересно. Текущая себестоимость проекта составила около 18К рублей. По крайней мере из моего кармана. Эта сумма растратиласть на плановые ежемесячные заседания в кабаках, где мы имеем привычку разбирать полеты. Не все можно по аське и в мыле адекватно обсудить.
Автор: tensor (12.05.05, Декабрь 5, 2005, 17:54)Это плохо? Тут что-то не правильно?
Не плохо и не неправильно. Надо просто четко сказать (там где FAQ или еще где), что и как делается.
Энтузиазм, проблем денег не имеем, можем себе позволить заниматься, чем хотим. Бизнес-планов не планируем, будет игра - там и посмотрим, че будет. А пока ради интереса.
И усе. Вопросов таких не будет.
Безусловно, мы могли заколбасить убогую шаровару которые пипл хавает. Стрясти бабла и дописать в свое порфолио эту “эпохальную победу”.
Автор: tensor (12.05.05, Декабрь 5, 2005, 18:16)Не нужно сразу впадать в крайности. А то чушь получается
Возможно, у кого вопрос денег - болезненный, им так и следует поступать. Но я не вижу _лично_для_себя_ в этом ни удовольствия, ни чести. Так, что, предлагаю, вопрос денег пускай студенты, не студенты и протча, решают каждый самостоятельно. Еще не хватало, чтобы мы людей жить учили
Зло, категорично, и не совсем по теме
.
)
, а то опять не так поймут) и т.д.
Автор: Jim (12.05.05, Декабрь 5, 2005, 19:20)Речь ведь не о “проблеме денег”, а о “проблеме денег за работу_труд” или скорее о более четких планах [слово “деньги” уводит дискуссию не туда] и т.д..
Студенты просто легко переносят такие вещи как “работа на опыт”, “работа на перспективу”, “работа за идею” (независимо от того, есть ли у них деньги на жизнь вобще или нет).
Поэтому я и говорю “студенты” (а не в смысле бедные слои населения
А вот потом уже “идеи”, “перспектива” и прочие вещи отходят на второй план. Стабильность, четкость условий, продуманность (видите, я даже про деньги уж боюсь написать
И часто никак это не связано с тем, сколько денег на жизнь имеется.
[слово “деньги” уводит дискуссию не туда] и т.д..
Абсолютно. Т.к., если с первой проблемой, еще все более-менее ясно. То со второй мы уходим в глубоко философскую тему. В частности, только ли деньги можно считать адекватной платой за труд и что мы подразумеваем под трудом, как таковым в контексте такого проекта, как наш?
А вот потом уже “идеи”, “перспектива” и прочие вещи отходят на второй план. Стабильность, четкость условий, продуманность (видите, я даже про деньги уж боюсь написать
, а то опять не так поймут) и т.д.
Мне исключительно жаль таких людей. Стабильность, четкость и продуманность (а уж тем более деньги, про которые страшно говорить) - это творческая смерть. Избави небеса меня от такой судьбы
Автор: Atz (01.04.06, Январь 4, 2006, 2:04)Идеологический вопрос… На самом деле. Вступление на сайте есть. Я признаться, не очень подробно Ваш сайт ковырял (времени мало), но вот бизнес-план почему-то в глаза не бросился.
А ведь это - наверно, самое важное для начинающего проекта!
Теперь конкретика. Предлагаю всё-таки состыковаться к КД-лабовцами (я совершенно незаинтересован, просто очень много играл в Вангеры и в Периметр), отслеживал историю, многое знаю об их играх и про историю - тоже…
Движок обеих игр - воксельный. В настоящий момент времени решена там есть физика, решена проблема состыковки вокселей с полигональными объектами. Разумеется, ланшшафт полностью изменяемый…
А самое главное:
ВЕДЬ НЕ ЗРЯ ЖЕ ОНИ ВЫПУСТИЛИ SDK!!
Это как приглашение к сотрудничеству, как я понимаю.
Автор: Atz (01.04.06, Январь 4, 2006, 2:05)Стоит как минимум посмотреть обе игры, там очень много полезного!
Автор: Jim (01.04.06, Январь 4, 2006, 12:41)Готовые движки не устраивают хоть чьи. Именно в силу “бизнес плана”. Да и смысла нет. Уже даже сейчас в плане физики, то, что есть дает все необходимое. Естественно, я видел и вагнеров и периметр, такие проекты пропускать нельзя. Но у нас немного другие цели. КД-лабовцев, кстати, я очень уважаю. На мой взгляд одна из лучших команд наших.
Автор: Black Angel (09.12.06, Сентябрь 12, 2006, 14:42)Может я немного опоздал с вопросом, но всё же что на счёт звукового движка? Просто сам недавно занимался встраиванием звука в свой двиг и открыл для себя замечательную звуковую библиотеку Squall от российских разработчиков. Так, что если звуком ещё не занимались, советую присмотреться к Шквалу.
Автор: Alena (09.12.06, Сентябрь 12, 2006, 20:03)Нет, совсем не опоздал. У нас сейчас есть некий промежуточный вариант, но нас он не очень устраивает. Так что над звуком мы будем продолжать работать.
Угу, слышала про такой. Думала смотреть его или нет, теперь посмотрю обязательно. Спасибо
.
Автор: Black Angel (09.13.06, Сентябрь 13, 2006, 14:19)Компания, создатели Шквала, на сколько мне известно закрылась. Разработку библиотеки продолжает один человек (AT_Marat@list.ru - Гилязетдинов Марат), ему можно задавать вопросы по библиотеке, а также внести некоторые предложения, в данный момент он как аз модернизацией занят, afaik.