В этой серии материалов я расскажу об этапах создания игры Kinetic Worm, которая вышла в 1999 году, то есть уже 22 года назад.
Я не буду особо углубляться в программирование, а хочу просто вспомнить старые добрые времена, пояснить, откуда брались идеи, какие были проблемы в разработке и как они решались.
Идея игры
Вы знаете, я практически всё время, с тех пор как увидел компьютер, пытался придумать оригинальную идею игры. Мне не хотелось повторять то, что уже сделано. Но мне это никогда не удавалось, будто в голове стоял какой-то блок.
Иногда ко мне приходили идеи игр, но они выражались в кратковременном видении: как будто вспышкой перед глазами проносился кусок уже готового геймплея, где, например, герой бежит и что-то делает. Я это видел так чётко, что казалось, будто уже есть готовая игра.
Но этого было слишком мало. Как только я начинал думать над тем, как из этого короткого видения сделать полноценную игру, то понимал, что не хватает очень многих деталей. Это как сон, который кажется логичным и понятным, но только до тех пор, пока не проснёшься.
Но с Kinetic Worm (далее – KW) оказалось не так.
Музыка
Толчком к созданию игры обычно является какой-то один яркий стимул. Это может быть супер-реалистичность (3D, рейтрейсинг и т.д.), или открытый мир, или харизма главгероя, или захватывающий сюжет, или, наконец, просто музыка.
В случае с KW это была именно музыка. Я увидел, совершенно внезапно, как змея ползёт по плоскости большого куба, и одновременно с этим появилась идея сопровождающей музыки.
Я был очень взбудоражен и тут же, не теряя ни минуты, сел и написал эту музыку в Scream Tracker.
Тут надо сказать, что композитор из меня и сейчас никакой, а тогда и подавно. Из всего музыкального образования я знал только названия нот, и написать какую-то хотя бы минимальную музыку для меня было настоящим достижением. К тому времени я уже пытался написать несколько треков, но все они были плохи или просто недоделаны.
Но в случае с KW произошло нечто иное. Меня как будто изнутри распирала неведомая энергия, и я очень быстро набросал трек, который стал главной темой игры.
Он был всё ещё очень сырой и передавал лишь общую идею, но мне на помощь пришёл мой друг bnbb и сделал полную аранжировку для этой мелодии, после чего она стала полноценным музыкальным треком.
Визуализация
То, что я увидел, было трёхмерной игрой "Змейка". Но не такой трёхмерной, как, например, Axy Snake:
Здесь уровень, хоть и состоит из 3D-моделей, остаётся плоским. В моём же случае змея была плоской, а сам уровень был трёхмерным. Идея была в том, чтобы змея ползала не по плоскости, а по кубу. При этом за головой змеи должна была следовать камера, что давало вид "от третьего лица":
Направление движения всегда было вперёд, а при поворотах должен был вращаться весь куб – ну, как обычно территория вращается вокруг бегущего персонажа. И главное, змея должна была переползать с грани на грань куба:
Если она заползала на невидимую грань, куб должен был поворачиваться этой гранью к нам.
Технические сложности
Надо сказать, что в те времена я очень робел перед 3D. Сейчас тоже не сказать что смелый. В общем, вращающийся кубик я бы смог сделать, но здесь нужны были ещё и текстуры, и динамическая камера, и змея, которая должна ползти по кубику.
Но это было не главное, что помешало сделать игру в том виде, как она была задумана. Главное, что при виде "от первого лица" змея очень ограниченно видела себя. Как мы знаем, по правилам змее нельзя пересекаться с самой собой, поэтому очень важно видеть картину целиком, а не её фрагменты.
Даже если сделать вид на куб издали, как на второй картинке, при заворачивании на невидимую плоскость змея 100% не увидит, что там. Значит, при приближении к границе с невидимой плоскостью куб надо было разворачивать заранее. А если змея передумает?
Возможно, это бы и прокатило, но я уже был достаточно напуган масштабом проблем, чтобы отказаться от 3D.
Поэтому решил делать игру в 2D, а точнее, в псевдо-3D. Избавившись от одних проблем, я получил другую. Теперь у меня на экране был изометрический куб, по нему ползала змея, я видел змею целиком. То есть я получил геймплей обычной змеи, только с движением в разных плоскостях.
Проблема же была в том, что змея уже не могла заползти на невидимую сторону куба, потому что он не мог вращаться. Но эта невидимая сторона явно намекала, что она есть, ведь мы видели именно выпуклый куб.
Как решилась эта проблема и что было дальше, читайте в следующей части: Преодоление