Comments

25.02.08: Разработка AstroMenace. Подготовка к разработке (программирование).

AstroMenaceЯ планирую поделится некоторыми соображениями по поводу разработки кросс-платформенных игр в плане программирования, естественно на базе уже разработанной игры. Возможно, кому-то покажется полезным данный опыт (по крайней мере я на это надеюсь). Сейчас хотелось бы остановится на таком моменте как подготовка.

Прежде всего, хочу сразу посоветовать не делать глупостей и двойную работу. Возможно, по началу вам будет интересно «сделать все самому», но в последствии это может сильно ударить вас по самому больному для любого разработчика месту – времени. К чему я все подвожу – не старайтесь сразу пуститься во все тяжки и делать свой «движок» или как вы там это назовете, возьмите уже проверенный набор библиотек и просто «обвяжите» его своим кодом, если вам так хочется, назовите полученное движком (бить вас никто за это не будет). В будущем это вам очень поможет – гораздо проще, когда критический код исправляет целое сообщество, и вам нужно просто взять и использовать, плюс, не забывайте главное – вы должны делать ИГРУ, а не копаться и вылизывать код не имеющий к игровому процессу прямого отношения. Объясняю сразу этот нюанс. Как правило, критический код (прорисовка, вывод звука, работа с системой) не имеют к игровому коду (логика, алгоритмы поведения и т.п.) никакого отношения. И ваша задача – сконцентрироваться именно на игровом коде, одновременно переложив на кого-то все остальное (в данном случае это будет сообщество вокруг выбранной вами библиотеки). Только в этом случае вы сможете максимум времени посвятить игре, и реализовать все задумки, а не «стабилизировать» критический код урезая кол-во фич из-за недостатка времени.

Надеюсь, я вас убедил использовать сторонние библиотеки. :-)

В AstroMenace в качестве «основы» была использована библиотека libSDL. Почему был остановлен выбор именно на данной библиотеке:
1) Кросс-платформенная с открытыми исходными кодами.
2) В ней реализованы все необходимые функции.
3) Уже давно развивается, и делает это весьма успешно.
4) Достаточно много документации и примеров.
5) Большое сообщество, или как сейчас модно говорить «комьюнити».

Если по каким-то причинам вам не понравится libSDL, думаю, вы сможете найти что-то по душе. На данный момент недостатка в подобных библиотеках не наблюдается.

Второй библиотекой, составляющей с libSDL комплект «убийца DirectX» для игры AstroMenace послужила OpenAL. Как показали некоторые эксперименты (первоначально я пытался использовать libSDL_mixer), OpenAL более низкоуровневый и дает больше свободы, что мне и было нужно.


Второй важный аспект, на который советую сразу обратить внимание – это поддержка 64-х битных операционных систем. Наличие на рынке 64-х битных Windows и Linux уже факт, и все таки или иначе идет к ним. Потому, рекомендую сразу «заложить» в вашей игре поддержку таких систем. Как говорится – лишним это не будет. ;-)

Что нужно сделать:
1) При выборе библиотек обязательно учесть этот параметр. Т.е. сама библиотека должна свободно работать на 64-х битных системах.
2) Учесть это при написании кода. В интернете масса статей с перечнем возможных «проблем» при написании программ для 32/64 битных платформ, лично для меня наиболее важным было 2 пункта: а) надо быть очень осторожным при конвертировании типов указателей на области памяти (в идеале вообще этого не делать); б) бинарные маски и прочие моменты при работе с битами.

Вот собственно и все на сегодня. :-)

Comments made

No comments yet

Add Comment



Comments must be approved before being published.

  • About

    Блог Куринного Михаила, основателя небольшой компании по разработке компьютерных игр с замысловатым названием Viewizard. Да собственно что говорить, заходите и смотрите сами - www.viewizard.com

  • Categories

<   October 2008   >
MonTueWedThuFriSatSun
  12345
6789101112
13141516171819
20212223242526
2728293031