(Начало в №17)
RAD-GameDev
Здравствуйте снова, уважаемые. Сегодня мы продолжим говорить о разработке игрушек, игр и игрищ, и, пожалуй, после сегодняшней статьи сделаем в этом разговоре небольшой перерыв. А может, и большой - там посмотрим по обстоятельствам. А пока что в качестве финального аккорда к балладе о GameDev'е расскажу о быстрой разработке игр.
Вообще, конечно, RAD (Rapid Application Development - быстрая разработка приложений) и GameDev совместимы с собой довольно ограниченно. Потому что специфика разработки игр состоит в том, что, помимо программирования, очень много времени и сил требует работа дизайнеров и звукорежиссеров, которые делают визуальный и звуковой облик игры. Однако с точки зрения программиста RAD-GameDev очень даже возможен, и тут на помощь разработчику приходят не только готовые движки, но и различные специализированные инструменты для разработки игр с быстрой графикой. Естественно, говорить мы будем именно о них, поскольку быстрая разработка сапёров и пасьянсов - это уже совсем другой разговор, лежащий больше в области учебников по Delphi.
Чтобы не расписывать долго в общем, какими бывают среды для быстрой разработки игр, расскажу о них на конкретных примерах.
3D Game Studio
Интересный подход к быстрой разработке игр предлагает продукт компании Conitec под названием 3D Game Studio (www.3dgamestudio.com). Разработчику даются готовый физико-графический движок (по своим параметрам, скажем так, не слишком выдающийся, но при умелом использовании дающий приятные для глаза результаты), редакторы уровней и трёхмерных моделей, и компилятор специального игрового языка WDL. Общая схема такая: с помощью какого-нибудь трёхмерного редактора создаются модели и предметы для игровых уровней, далее они импортируются в соответствующие редакторы 3D Game Studio, с помощью которых создаются карты уровней, накладываются текстуры и всё это вместе компилируется в файлы с игровыми уровнями. Скрипты на WDL управляют поведением объектов: монстров, предметов - в общем, всем, вплоть до дверей. Они также управляют разными стандартными эффектами а-ля туман, огонь, разные вспышки и прочие "красивости". Помимо использования WDL, движок можно программировать с помощью внешних плагинов, которые пишутся на знакомых программисту Delphi, C++ и прочих языках.
По словам производителя, 3D Game Studio имеет гигантское количество поставляемых вместе с программой моделей, текстур, готовых уровней и прочего. Ну, гигантское или нет, это уже вопрос выбора прилагательного, но их присутствует некоторое количество.
3D Game Studio привлекательна для ленивых людей тем, что можно создавать игры, даже не занимаясь программированием. Конечно, при этом Вы вряд ли получите что-то, что можно будет без зазрения совести назвать шедевром, но вполне качественный шутер можно создать и используя только готовые скрипты из поставляемой вместе с программой библиотеки. Однако, конечно, всех возможностей движка вы тогда из своей игры не выжмете.
Скрипт WDL, применяемый при разработке игр в 3D Game Studio, похож на C++ и даже часто называется своими авторами C-Script'ом. От полноценного C++ он отличается невозможностью определения новых структурных и объектных типов, а также существенно упрощённой работой с указателями. Однако, как пишут разработчики 3D Game Studio, с помощью плагинов на "полноценном" C++ (или не менее полноценном Delphi) можно гораздо лучше создавать более интересные вещи.
Но 3D Game Studio - далеко не единственная игровая среда, имеющаяся на рынке. Поэтому не думаю, что стоит писать только о ней. Переходим к следующему RAD-инструменту для создания игр.
Blitz3D
Если предыдущая среда разработки игр позволяет создавать их, не написав собственноручно ни единой строчки программного кода, то с Blitz3D такой номер уже не пройдёт. Потому что работа с этим инструментом заключается именно в написании программного кода - пусть даже и не на пугающем новичков C++, а на одном из диалектов Basic'а.
Найти этот продукт можно в Интернете по адресу blitzbasic.com. В общем и целом, программирование в нём, как и в 3D Game Studio, сводится к издевательствам над игровым движком. Он, по словам многих, более хорош, чем тот, который предлагается разработчикам, выбравшим 3D Game Studio, но, конечно, в любом случае хуже, чем тот, которые ваши конкуренты могут написать собственными руками. Хотя многие достаточно известные игры всё же написаны с его помощью (их список можно найти на официальном сайте программы), что, несомненно, поднимает статус этого инструмента в глазах game developer'ов. Для рендеринга движок Blitz3D использует DirectX.
Для тех, кого впечатлила предыдущая статья из серии "Романтика GameDev'а", хочу сообщить приятную вещь: существует кросс-платформенный вариант этого средства разработки, который называется BlitzMax. Язык в BlitzMax несколько отличается от того, который используется в Blitz3D, в сторону чуть большей сложности. В нём присутствуют динамические массивы, указатели на функции, ООП в виде наследования и полиморфизма объектов, различные числовые типы переменных. Работают игры, созданные с его помощью, под управлением операционных систем Windows, Linux и MacOS X. Правда, в отличие от его чисто Windows'кого собрата Blitz3D, его движок работает на основе OpenGL. Что, в общем-то, для кросс-платформенного движка вполне естественно.
Типичный программный код на Blitz'овском Basic'е выглядит следующим образом:
Repeat ; Allow the user to switch to wireframe mode. If KeyHit(17) Then wire = Not wire WireFrame wire ; Move the camera around RotateEntity campiv,Sin(ll#)*10,ll#,0 ll# = ll# + 0.2 PointEntity camera,campiv ; Terrain Detail level If KeyDown(26) Then curdetail = curdetail - 10 If KeyDown(27) Then curdetail = curdetail + 10 TerrainDetail water,curdetail,True ; Here we itterate through all the cells on the terrain grid (switch wireframe on to see them) and then make them simply bounce up and down. For z = 0 To WATER_GRID_SIZE-1 For x = 0 To WATER_GRID_SIZE-1 hite# = Sin(WaterY(z,x)) ModifyTerrain water,x,z,Abs(hite#/2)+.5,False WaterY(z,x) = WaterY(z,x) + 1 Next Next ; Update the world stuff UpdateWorld RenderWorld ; Print some simple details on screen. Text 0,0,"W = Wireframe Toggle" Text 0,12,"LOD = [ and ] (" + curdetail + ")" ; Flip display Flip Until KeyDown(1)
Поскольку код (я взял его из примеров, идущих в стандартной поставке Blitz3D) снабжён комментариями, хотя они и на английском языке, подробно на нём останавливаться не будем, он здесь просто как иллюстрация того, каков язык, используемый в Blitz3D.
Однако, как бы не был хорош Blitz3D, я всё же хочу рассказать ещё об одной среде разработки, самой, пожалуй, мощной, но одновременно и самой простой, и при этом, однако, самой непонятной в сегодняшнем обзоре.
EON Studio
Почему я говорю, что эта среда разработки самая простая? Потому что в ней можно создавать игры, не программируя. Хотя на самом деле сами разработчики, EON Reality (www.eonreality.com), заверяют, что их разработка самым что ни на есть замечательным образом подходит для разработки любых мультимедийных приложений.
Как и в случае с 3D Game Studio, разработка начинается с того, что где-то как-то создаются модели, которые после импортируются в среду разработки. Только в EON Studio, в отличие от первой программы обзора, нет собственного редактора моделей. Далее все возможные манипуляции с трёхмерными объектами производятся либо с помощью "интуитивно понятного графического интерфейса EON Studio" (цитата из справки к программе), либо с помощью скриптов и плагинов. Однако, в отличие от 3D Game Studio, EON Studio может взаимодействовать с различными приложениями через ActiveX, то есть приложения, созданные в EON Studio, могут управляться другими через эту технологию.
Почему же, представляя EON Studio, я сказал, что это в сегодняшнем обзоре самая непонятная среда? Все дело в первом взгляде на "интуитивно понятный интерфейс" (как уже надоел этот штамп, используемый разработчиками!). Взгляните на скриншот.
Большой список с иконками в правой части окна приложения содержит в себе разные структуры, которые как раз и управляют поведением объектов в сцене. Что получается при визуальном конструировании взаимодействий между объектами, можно представить, взглянув на левую часть окна, где объекты отображаются в виде прямоугольников со значками, а связи между ними - стрелками. При этом объектов, как и связей, может быть очень много, так что в них не так уж и сложно запутаться. Поэтому, на мой взгляд, такой способ разработки игр сопряжён с изрядными неудобствами.
Вообще-то, мне EON Studio этим напомнила High Assembler - среду разработки, которую российские программисты написали для того, чтобы "каждая кухарка могла быть программистом". Я, кстати, когда-то уже писал о ней в "КВ". Как видите, разработчики из EON Reality пошли ещё дальше - каждая кухарка сможет стать game developer'ом...
Что касается таких моментов, как качество движка, то тут по моим личным впечатлениям разработчикам есть над чем работать. Но, с другой стороны, Eon Studio ведь не только для игр, а для других задач, быть может, и нет необходимости в различных эффектах.
Таким образом, подводя итоги, можно сказать, что EON Studio и 3D Game Studio подходят больше всего тем, кто хочет обойтись без программирования, а Blitz3D - тем, кто не хочет изучать C++ и довольствуется Basic'ом.
Однако, поскольку я обещал сделать перерыв в статьях по GameDev'у, хочется сказать ещё несколько слов на тему разработки игр вообще. Надеюсь, мои рассказы обо всяких сложностях не отбили у вас охоту к этому увлекательному процессу. В помощь тем, кто не потерял энтузиазма, дам несколько ссылок. Во-первых, обращайтесь к сайту www.gamedev.ru, самому крупному русскоязычному порталу по разработке игр. Во-вторых, читайте www.3dnews.ru. Там много всего по трёхмерной графике и играм. Не так давно открылся и белорусский GameDev-портал www.gamedev.by, но он пока, к сожалению, пустой, хотя за ним следить тоже, несомненно, стоит. Также интересный сайт dev.swargo.com, посвящённый белорусскому GameDev'у. А в общем, гуглите и обрящете. Читайте книги, пробуйте примеры. GameDev - сфера не закрытая, и информации по нему достаточно много. Но теория без практики, разумеется мертва, поэтому не забывайте о главном - чтобы разработать игру, нужно, как минимум, её разрабатывать.
Вадим СТАНКЕВИЧ
![Версия для печати Версия для печати](https://www.kv.by/sites/all/modules/print/icons/print_icon.png)
Горячие темы