Разработка игр - игроделанье - довольно скучная штука, но иногда дающая массу удовольствия как от факта создания игры "под себя", так и от созерцания собственного неповторимого эго, победившего разум во всех его проявлениях :)
Кто из нас, по уши завязших в компьютерах, не играл в компьютерные игрушки? Вот именно, никому не пришло в голову отказаться в своё время от какого-нибудь бомбермена или диггера. Все играли и играют в игрушки, за исключением тех, кто делает вид, что не играет, а занимается полезным делом (штаны просиживать :) ).
Может я и плохой танцор, но всё же я хочу начать с вами, уважаемые читатели данного журнала, диалог, направленный на углубление познаний в области игроделания, тобишь геймдева по-нерусски. Тема эта безгранична и необъятна, и, как говорил Козьма Пруткофф, "Невозможно объять необъятное". Посему я не ставлю себе целью объять необъятное. Однако, я не прочь, так сказать, необъять объятное.
Что, затрепался я уже, скажете вы. Да, это так. Перейдём уже к делу.
Что же такое, эта самая игра?
Игра - это ОБМАН нас с вами. Добрые дядьки-программёры, в перерывах между распитием пива и прочих прохладительных напитков, пытаются заставить эту безмозглую штуку с надписью "ПИСИ" рисовать нам горстки пикселей и килограммы аудиосэмплов, внушая нам, маленьким детЯм, что это не пиксели снуют по экрану, а самый распоследний ДУМ-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, я бы воздержался, т.к. там хоть и есть мультиплатформенность, но качество реализации и архитектура лично меня не устраивают. Код необходимо оформлять как можно более автономными модулями. Это полезно не только при распределённой разработке, но и для реиспользования кода, упрощения создания и развития проекта. Форматирование кода также играет не последнюю роль в производительности программиста. Правильно оформленный код и подробные комментарии намного облегчат работу.
Самое главное, это не гнаться за рекордами, не пытаться сразу же создать что-то грандиозное и "лучше, чем у всех". Зря время потратите. Начинать надо с простого и доводить дело до победного конца. И, прежде всего, грамотно прорабатывайте структуру игры и кода, диздок (дизайн-документ) не помешает.
Не ищите готовых решений, их просто-напросто нет! Лучше себя родного никто не напишет. Интернет - это большая помойка, найти алмаз в которой ой как нелегко.
На этот раз пока всё. Много воды, но это моя первая статья, да потратил я на неё час. Потому не судите строго и да не судимы будете :)