Найти тему
ZDG

Как я писал игру Kinetic Worm #2: Преодоление

Предыдущая часть: Начало

Я назвал эту часть "Предоление", что звучит несколько пафосно, но это действительно был один из главнейших этапов, который меня кое-чему научил.

Итак, я отказался от трёхмерной реализации из-за того что это было сложновато, и также из-за того, что не совсем понятен был геймплей, когда часть змеи находится на невидимых гранях кубика.

В двумерной релизации кубик не вращался, но это породило новую проблему: как тогда быть с невидимыми гранями?

И тогда я решил, что их попросту не будет. То есть змея будет ползать только по тем граням, которые видны. Поначалу я хотел явно сделать границы игрового поля, в которые нельзя врезаться:

Но потом решил, что и этого не надо. Край поля и есть край, и как показал опыт, игроку это было весьма легко понять и без подсказок.

Собственно почему я называю это преодолением? Такой простой вопрос существенно затормозил разработку игры, и возможно, что через некоторое время я бы совсем её забросил. Но сделав некоторые допущения, я не только решил вопрос, но и увидел новые возможности.

Переход к 2D и отмена невидимых граней привели к тому, что уровень стало возможно сделать не только кубом, но и более сложной фигурой:

-2

Геометрия уровня теперь не была ограничена. Я мог создать любой набор плоскостей, при одном условии: чтобы они не пересекались и не перекрывали друг друга.

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

  • ориентацию в пространстве по осям x-y-z
  • координаты начала (левого верхнего угла)
  • ширину и высоту

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

Считав координаты плоскостей в память, движок искал среди них те, у которых грани соприкасаются. Найдя такие грани, он строил карту переходов. То есть, например, двигаясь по плоскости A и дойдя до грани A1 в позиции X, змея должна была перейти на плоскость B и продолжить двигаться от грани B4 в позиции Y.

Оставалось сделать:

  • систему меню
  • менеджер ресурсов
  • игровые уровни
  • анимированную графику
  • музыкальное и звуковое сопровождение

Читайте дальше: Музыка, звук и графика