Предыдущая часть: Начало
Я назвал эту часть "Предоление", что звучит несколько пафосно, но это действительно был один из главнейших этапов, который меня кое-чему научил.
Итак, я отказался от трёхмерной реализации из-за того что это было сложновато, и также из-за того, что не совсем понятен был геймплей, когда часть змеи находится на невидимых гранях кубика.
В двумерной релизации кубик не вращался, но это породило новую проблему: как тогда быть с невидимыми гранями?
И тогда я решил, что их попросту не будет. То есть змея будет ползать только по тем граням, которые видны. Поначалу я хотел явно сделать границы игрового поля, в которые нельзя врезаться:
Но потом решил, что и этого не надо. Край поля и есть край, и как показал опыт, игроку это было весьма легко понять и без подсказок.
Собственно почему я называю это преодолением? Такой простой вопрос существенно затормозил разработку игры, и возможно, что через некоторое время я бы совсем её забросил. Но сделав некоторые допущения, я не только решил вопрос, но и увидел новые возможности.
Переход к 2D и отмена невидимых граней привели к тому, что уровень стало возможно сделать не только кубом, но и более сложной фигурой:
Геометрия уровня теперь не была ограничена. Я мог создать любой набор плоскостей, при одном условии: чтобы они не пересекались и не перекрывали друг друга.
С этого момента концепция игры оформилась полностью. Я приступил к написанию движка. Чтобы не делать редактор уровней (это было лень и долго), я решил просто задавать их вручную. То есть каждая плоскость, из которой состоял уровень, имела
- ориентацию в пространстве по осям x-y-z
- координаты начала (левого верхнего угла)
- ширину и высоту
Все эти данные для каждой плоскости я сначала считал, а потом заносил руками в конфигурационный файл. Было сложновато, но в целом нормально, так что об отсутствии редактора я не жалел (на редактор точно ушло бы больше времени).
Считав координаты плоскостей в память, движок искал среди них те, у которых грани соприкасаются. Найдя такие грани, он строил карту переходов. То есть, например, двигаясь по плоскости A и дойдя до грани A1 в позиции X, змея должна была перейти на плоскость B и продолжить двигаться от грани B4 в позиции Y.
Оставалось сделать:
- систему меню
- менеджер ресурсов
- игровые уровни
- анимированную графику
- музыкальное и звуковое сопровождение
Читайте дальше: Музыка, звук и графика