|
Разработка компьютерных игр
Разработка игр - игроделанье - довольно скучная штука, но иногда дающая массу удовольствия как от факта создания игры "под себя", так и от созерцания собственного неповторимого эго, победившего разум во всех его проявлениях.
Что такое игра?
Игра - это ОБМАН нас с вами. Добрые дядьки-программёры, в перерывах между распитием пива и прочих прохладительных напитков, пытаются заставить эту безмозглую штуку с надписью "ПИСИ" рисовать нам горстки пикселей и килограммы аудиосэмплов, внушая нам, маленьким детЯм, что это не пиксели снуют по экрану, а самый распоследний ДУМ-III. А мы, лопухи, бежим в ларёк за новыми ЖЕФОРСАМИ, дабы восполнить кривизну рук разработчиков, написавших медленную процедуру вывода пикселей.
Нас, наивных игроков, обманывают, выдавая примитвный алгоритм преследования/уклонения за "Искусственный интеллект - AI", и кучу треугольников за лицо героя. И мы верим! Почему? Потому, что вчера и этого то не было. Главное не совершенство продукта, а превосходство над конкурентами. Вот он смысл жизни гейм-девелопера. Само-собой, если игра хороша, превосходит все мыслимые аналоги, но она не может быть идеалом. Потому можно каждый раз штамповать пропатченную "новую" версию, и "рубить баблосы" с доверчивых пользователей. Но не всё так просто. Кругом нам, осмелившимся творить само святое - игры, суют палки в колёса. Начиная от отсутствия уже готовых свободных мощных игровых движков и документации на железяки с программами, кончая проблемами с распространением уже готового продукта. Хотя, если вы гений, и создали нечто гениальное, не всё так плохо, пошевелив руками и пораскинув мозгами, вы найдёте хорошего продюсера и издателя.
Для создания законченного продукта главное - желание. Опыт, знания и всё остальное найдётся. Естественно, лёжа на печи, ничего не получишь. Надо ТВОРИТЬ. Пусть это будет что-то простенькое, но ЭТО надо довести до конца. И, свернув первую гору, на весь дом закричать "Я, Вася Пупкин, Я - ГЕРОЙ!". Потом уже готовить почву под новые горы для сворачивания. Игрокам нужны не треугольники, их не интересует, сколько байт занимает заголовок файла текстурки в модели. Игроку интересна ИГРА. Пусть треугольников будет меньше, но нельзя давать игроку красивую в графическом плане конфетку, ущербную в плане играбельности.
На чём писать игру?
Писать на никому не известном языке СИ, точнее его путаном диалекте СИ++ (C++, CPP). Я три с половиной года пользую Борланд Дельфи. Хорошая, я бы сказал, это штука, но... Игры всё же лучше писать именно на СИ. Есть, конечно, рынок флеш-игр, игр на ява-аплетах. Но у нас разговор идёт о платформе PC, конкретно ОС Windows. Хотя, опыт он и в Африке опыт. Пересесть на Sony Плейстейшены и прочие "денди" с PC не составит труда для опытного специалиста. На дельфях можно сваять крутую игру, но, увы, есть некоторые проблемы. Много Уже межплатформенная поддержка языка, мало библиотек, документации и недоверие со стороны "крутых" сишников и потребителей продукта.
Впрочем, пишите на чём хотите. Я вот до недавнего времени предпочитал для игроделия среду Delphi. Но, на более менее должном уровне познав великий и могучий MSVC (от этого не менее глючный и тормозной), я решил посвятить своё драгоценное время именно игроделию на языке СИ.
Стоит ли использовать библиотеку MFC для создания не-GUI игр?
Под Windows для этого лучше подходит WinAPI. Главное хорошенько изолировать ОС-зависимую часть от собственно движка. Всё, что можно отделить от движка, например скрипты, графику, модели, лучше сразу отделить от движка.
Какой графический API мы будем использовать?
OpenGL. Можно Direct3D-DirectXGraphics(DirectX), но, данный API из года в год переписывается одной никому не известной шаражкой, а потому весьма заковырист и противоречив. OpenGL, в отличие от DirectX, есть не только на Windows.
Через чего звук будем выводить?
Через библиотеку fmod. Дюже хороша. В смысле нет достойных альтернатив, акромя bass, midas, miles и прочих.
Что, уже руки чешутся скорее засесть за Вижуал Студию и сваять свой индивидуально необыкновенный гипершедевр? Если у вас это в первый раз, лучше не торопиться, если вы не хотите создать Сферического Коня в Вакууме.
Лучше тихо мирно полазить по просторам интернета и посмотреть, что уже создано, почитать форумы и факи, покомпилировать чужие игры и разобраться с желаниями.
Можно использовать уже готовые игровые движки, например Quake или Unreal. Но это уже будет больше похоже на создание новых модов под эти игры, чем собственно своей игры. Желательно ориентироваться на открытые стандарты и технологии, такие как OpenGL. Рекомендовать использовать такие библиотеки, как SDL, я бы воздержался, т.к. там хоть и есть мультиплатформенность, но качество реализации и архитектура лично меня не устраивают. Код необходимо оформлять как можно более автономными модулями. Это полезно не только при распределённой разработке, но и для реиспользования кода, упрощения создания и развития проекта. Форматирование кода также играет не последнюю роль в производительности программиста. Правильно оформленный код и подробные комментарии намного облегчат работу.
Источник: http://sources.ru/magazine/0804/gamedev.html
|