Comments
21.12.07: Разработка AstroMenace. Инструментарий.
Я думаю, мало кто будет спорить что инструментарий – очень весомая составляющая в создании любой программы, и к его подбору надо подходить очень внимательно. Вряд ли вы будите менять IDE, компилятор, систему контроля версий и другие «подручные» программы/утилиты в течении разработки проекта. Сейчас я хочу вам рассказать о том, какой использовался инструментарий при разработке игры AstroMenace. Наверняка это будет интересно, особенно если учесть, что в процессе разработки проект был перенесен с Windows на Linux, естественно с переходом на кросс-платформенное ПО разработки.
Начало разработки AstroMenace (Windows).
Первоначально, игра AstroMenace разрабатывалась исключительно для Windows ОС. Соответственно, я применял то, что уже давно «откатал» на других проектах:
1) IDE
В качестве IDE использовался Visual Studio 2005 Express Edition с установленным PSDK для компиляции win32 исполняемых бинарников. Как показала практика, данной бесплатной версии IDE вполне достаточно для написания игр.
2) Редактор ресурсов.
Т.к. экспресс версия IDE не содержала редактора ресурсов, для удобства был установлен (фактически просто распакован из архива) очень простой редактор под названием ResEdit.
3) Контроль версий.
В качестве системы контроля версий был выбрана CVS. Как сервер использовался cvsnt, как клиент WinCVS. Почему именно CVS а не SVN? Сейчас даже тяжело и ответит... наверно меня «подкупил» текстовый формат хранения данных, плюс, меня вполне устраивали возможности CVS.
«Второй» этап разработки (кросс-платформа, GNU/Linux и Windows).
Когда AstroMenace был на стадии альфа версии, по странному стечению обстоятельств, я перешел на использование операционной системы GNU/Linux, с последующим переделыванием проектов под кросс-платформенность. Естественно, старый инструментарий не годился, и пришлось занятся небольшим поиском. В конце-концов получился вот такой короткий список:
1) IDE
Как IDE был выбран Code::Blocks (использовались только Nightly билды конечно). CB понравился сразу, чем-то напоминает VCPP (те же воркспейсы, проекты и т.п.), абсолютно одинаково выглядит (и почти одинаково работает) в Windows и Linux, имеет небольшой размер (обновлять Nightly билды не составляет труда даже).
Честно говоря, работая в виндовс я присматривался к gcc (Mingw) и естественно смотрел в сторону Code::Blocks. Но релиз кандидат Code::Blocks, который я скачал с их сайта, начисто отбил охоту использовать и CB и gcc, да и вообще всего опен сорсного. :-) Только много позже мне рассказали о Nightly билдах.
2) Контроль версий.
Для работы с CVS были установлены: тот же cvsnt как сервер и gCVS как клиент (фактически копия WinCVS). Честно говоря, gCVS мне не совсем понравился (что вообще может понравится в древнем не развивающемся проекте), но он делал все что мне было нужно и тратить время на поиски другого клиента я уже не стал (это я к тому, что лучше его не использовать :-) ).
Забегая вперед, могу сказать что в новом проекте мы используем связку svn + RapidSVN. На данный момент я считаю это самым оптимальным вариантом.
Следующим шагом стал выбор кросс-платформенных библиотек. Раньше все было просто: DirectX SDK + приправить по вкусу (ogg/vorbis, jpeg и т.д.). Думаю понятно, что использовать DirectX было уже невозможно. В итоге, в течении полугода был подобран наиболее оптимальный набор библиотек. Как не странно, «убийцей» DirectX выступила связка из всего 2-х библиотек (в моем случае, конечно):
1) Как «основу» я взял libSDL. Проект хорошо развивается, прост и надежен (благо уже многие годы его оттачивают). Фактически, libSDL предоставляет полную свободу, забирая на себя всю рутину связанную со взаимодействием с операционной системой. Плюс, библиотека ориентирована на использование совместно с OpenGL (в случае 3D приложений). А что еще нужно?
2) Для вывода звука, после некоторых «метаний» был окончательно выбран OpenAL. Первоначально, я выбрал libSDL_mixer, но возникшие в процессе использования «нюансы» внесли небольшое разочарование. В итоге, пришлось осваивать более низкоуровневый OpenAL, кстати библиотека тоже ориентирована на использование с OpenGL, что не может не радовать
Вот собственно и все, что я хотел рассказать.
Comments made
Vadi wrote:
23.12.07 05:37:19
Viewizard wrote:
Ну, я как-бы писал об инструментарии (хоть немного и "захватил" библиотеки). Статей о движках, как их "правильно" писать, как выбирать и т.д. я прочитал довольно много, но это отдельная история и к разработке AstroMenace прямого отношения не имеет ;)
N++ хорош :), правда я как в линукс перешел использую только gedit (мне хватает)...
N++ хорош :), правда я как в линукс перешел использую только gedit (мне хватает)...
23.12.07 06:01:59
goodhabit wrote:
Не рассматривал git как вариант кстати? Где-то в новостях проскакивал пост про то, как кто-то попытался перенести репозиторий gcc на git, вследствие чего размер репозитория увеличился на порядок О.о. Но как оказалось сам Торвальдс подписан на рассылку gcc, и после прочтения написал ответ - рассказал как и в каких ситуациях лучше использовать git, и продемонстрировал перенос. После чего размер репозитория уменьшился. Опять-таки на порядок :) Кстати вскоре после этого действительно обновилась документация.
27.01.08 17:26:26
Viewizard wrote:
:))) прикольно. Нет, честно говоря меня git не "зацепил". Фактически всегда рассматривал только 2 варианта для реального применения - cvs и svn.
27.01.08 23:33:06
Add Comment
Comments must be approved before being published.
Хотя я сам только с ~года назад начал программировать и разрабатывать, я всё ещё не могу прижится к одному IDE - не знаю почему. Просто сижу на Notepad++ и всё. Благо в wine он отлично работает - автор только на винде писал его, и изза библиотек ни кто так его и не смог пока перевсти на линукс (ето собственно и единственная программа для корой я-то wine и использую).
А cvs/svn и всяких вообще не силён :( снаю только cvs/svn checkout.
Я тут недавно прочитал о движках (http://www.beyond3d.com/con...), вы как ето дело обошли?