29 июля 2011

Конкурс: подведение итогов! :)

Ну вот и подошел к концу конкурс, в котором мне довелось принять участие. Скажу сразу - fun'а было много, и я благодарен организаторам за доставленную радость! В данный момент на общий суд выложены все работы участников и проходит голосование. Ну, а пока запасемся терпением и посмотрим на то, что вышло в итоге...
Всего пришло шесть работ, из них одна - редактор, который вряд ли можно назвать "игрой на конкурс", но все же пусть будет, ведь автор проделал много работы, да и GlScene не помешают хорошие демки!

Итак, в этом сообщении я расскажу о том, какая вообще у меня была цель, когда я делал свою игру на конкурс, немного распишу этапы разработки и черкну еще чего-нибудь немного.
По сути я хотел показать всем разработчикам GlScene, что за месяц-полтора можно собраться и сделать игру качества "на продажу", ведь каждый из начинающих геймдевелоперов мечтает о том, чтобы зарабатывать своими играми. Так вот - это действительно реально, только нужно "сесть и сделать"!
Многие сетуют на то, что вся игра и ее интерфейс на английском языке. Согласен, возможно здесь это было лишнее. Но все же следует помнить, что, если соберетесь распространять игру по широкой аудитории, необходимо позаботиться о том, чтобы все было на английском. Таким образом, я в любой момент могу выложить игру на gamedev.net, pascalgamedevelopment.com, forum.indiegamer.com, и нет необходимости что-то переделывать, переводить или вносить какие-либо еще изменения.
В общем, моя игра под названием "Square is going home" сделана, архив со всеми работами выложен, конкурс прошел и теперь мы ждем итогов!
Поэтому не буду откладывать и немного распишу те этапы разработки, которые я прошел вместе с конкурсным проектом.
Итак, как я делал конкретно эту игру...

Этап первый: сперва я сделал прототип
Самый первый и ответственный этап. Делаем прототип, чтобы на нем понять, играбельная ли штука выходит. В самом прототипе всего по-минимому: ни интерфейса, ни курсора, ни множества уровней и т.д. Простейшая отрисовка объектов, всего один уровень, два-три игровых объекта. Здесь главное - геймплей! Оттачиваем параметры, взаимодействие объектов и все остальное, что влияет именно на игровые действия.
К примеру, повторив игровые элементы из игры-оригинала znBalance, я понял, что игропроцесс раздражает. Проблема крылась в том, что оригинальная игра является флешкой, из-за чего физика подтормаживает и можно видеть, что прямоугольник, "прилипший" к стене можно легко вытащить, сильно стукнув по нему кругом игрока. У меня же физика отрабатывает довольно точно, в следствие чего из угла прямоугольник вытащить практически невозможно. В реальности это можно сравнить с тем, что любыми ударами сверху по кирпичу, подкинуть его вверх не получится. А во флешке можно, из-за неточностей вычислений и проникновений тел друг в друга. Итак, нужно было что-то делать, вся игровая механика разваливалась. В итоге меня осенило, и я поменял объект игрока с круга на квадрат - теперь прямоугольник всегда можно опрокинуть через вершину, действуя квадратом с одной из сторон.

Первые игровые уровни
Затем я начинаю собирать простые уровни. Это сподвигает на то, чтобы сделать систему переключения между ними, сделать подгрузку расположений объектов и параметров камеры. На этом этапе необходимо выбрать способ хранения и загрузки игровых объектов. Вариантов много: XML, скрипты, ini-файлы, бинарники или что-то другое... Тут же чистим появляющиеся утечки памяти при выгрузке объектов и переключениях между уровнями. Важный этап - здесь уже огнем и водой проверяется геймплей - можно ли за 15-20 минут придумать и набросать интересный уровень в выбранной игровой концепции? В конце этого этапа я выкладывал рабочий скриншот. Смотришь и думаешь: "Мда, графика ужасающая..." Поэтому по возможности сразу переходим к следующему этапу разработки!

Поднимаем общий графический уровень
Для самомотивации и ласкания взора, улучшаем внешний вид игры: фоновое изображение, текстура на объектах и прочее. Здесь также необходимо поддерживать играбельность. А то можно заиграться с дизайном объектов, что будет трудно различить, что на экране является игровым объектом, а что фоном. В общем, для меня это довольно трудоемкий, но очень интересный этап. Сначала несколько дней бегаю по интернетам, в поисках красивых дизайнерских решений, затем рисую все в FireWorks'е, а потом уже программирую в Delphi. К примеру, вот png-картинка, которую я нарисовал до того, как подобные элементы вошли в игру:



Добавляем интерфейс
Обычно программисты не уделяют много внимания интерфейсу игры. Ведь сами привыкли "лазать через консоль", поэтому считается нормальным оставить игру без меню или кнопки рестрата, повесив эту функцию на какую-нибудь клавишу клавиатуры. Но лично мне кажется, что лучше потратить несколько дней на интерфейсное оформление игры, чем потом писать мануал по тем или иным горячим клавишам и каждому объяснять, что "нужно было нажать f5 для перехода на следующий уровень"...
Итак, первым делом я создаю элементы и диалоги, которые буду использовать в первую очередь. Затем остальные, без которых можно обойтись в ближайшее время. Чем чаще встает потребность в отсутствующей кнопке или в недоделанном диалоге, тем быстрее его необходимо сделать.

Уровни, уровни, уровни...
Все, интерфейс есть, графика почти окончательная, геймплей присутствует, уровни могут переключаться между собой. Остается наполнить игру интересными игровыми ситуациями, чтобы игрок не заскучал. И начинается мучительное (хотя так не всегда) придумывание уровней, или это еще называют LevelDesign. Очень ответствуенный этап, на котором нельзя промахиваться. Если уровень не получается, лучше попробовать создать новый или доработать имеющийся. Нельзя бросать на полпути или вставлять в игру явную халтуру. Обычно действует правило "лучше меньше, но лучше". При этом я стараюсь придумать идей больше, чем запланировал уровней, для того, чтобы можно было откинуть неиграбельные элементы. При составлении уровней для "Square is going home" было много проблем и недоработок, так как несколько довольно выжных и интересных игровых объектов пришлось вырезать из игры с корнем, так как доделать их в срок я не успевал. Пришлось придумывать из того, что есть. Скриншоты того, что вышло:





Шлифовка и полировка
Для кого-то заключительный этап разработки игры становится невыносимой рутиной; кому-то приходится изменять архитектуру, чтобы вместить маленький винтик; кто-то вообще исключает полировку из своего списка задач... Лично я в данном проекте на полировку оставил всего пару дней, которые пошли игре на пользу! Здесь обычно немного балансируется физика, сортируются уровни, по необходимости доделывается система загрузки и сохранения профиля с пройденными уровнями и так далее... Тут же правим баги, латаем дыры, в общем доводим все до блеска! Можно попросить друзей с разным набором железа и операционных систем потестировать итоговое творение. Нет ли багов на преловутой Windows7, правильно ли отрабатывает физика на слабых компьютерах - все это подлежит проверке, а значит требует времени.

Релиз!
Сладкий момент отпускания призведения в массы... Можно вздохнуть с облегчением и переключиться на новые интересные проекты!

Вот приблизительно такие этапы я бы выделил при разработке "Square is going home", но в целом такая схема творчества переходит у меня из проекта в проект. Местами удобно, но где-то и не очень.

Сообщения, схожие по тематике:

4 коммент.:

  1. "Нельзя бросать на полпути или вставлять в игру явную халтуру" - эх, а я ведь так и сделал со своим единственным игровым уровнем. Хотя, отлично понимал, что его следует переделать.

    Спасибо за статью, интересно было почитать.

    ОтветитьУдалить
  2. Игра супер! Час рабочего времени убит!!
    Когда маленький квадратик тащит большой представил себя белкой из Ледникового периода большим орехом

    ОтветитьУдалить
  3. Товарищ Л.! Познавательно и, в целом, я согласен по всем пунктам.

    Разве что, иногда я мешаю некоторые этапы, например, частично дорабатываются меню и сеттинг (то бишь графическое оформление, сюжетная составляющая) уже на этапе левел-дизайна. Это, конечно, в какой-то степени плохо, но без смешивания или итерационного (циклом) подхода часто не обойтись.

    ОтветитьУдалить
  4. Ulop, если есть чувство "могу сделать лучше" - тогда действительно стоит постараться и переделать... если же у меня происходит затык и не получается улучшать игру, тогда перехожу на следующий этап, стараясь выделить время на доработку))
    рад, что получилось интересно! буду стараться и впредь))

    Rinat, класс! очень здорово, что тебе понравилось! безумно рад!
    про белку смешно - отличное сравнение)))..
    надо будет отдельно выложить линк на игру, чтобы не качать большущий архив со всеми работами...

    perfect daemon, здорово, что у многих разработчиков сходится взгляд на создание игры!
    да, по поводу смешивания - тоже иногда приходится менять последовательность или перескакивать с этапа на этап... но все же в последнее время стараюсь выдерживать сроки на разработку и последовательность этапов, тогда разработка идет немного быстрее и координированней...

    надо будет еще рассказать о способе взаимодействия художник+программист - есть несколько нюансов, которые влияют на разработку... но лично у меня пока не выработались конкретные схемы, которые привели бы к успеху((..

    ОтветитьУдалить