Найти тему
ZDG

Пингвины и клавиши, или как вдохнуть жизнь в старый проект

У одного из моих долгостроев особая судьба.

Его я начинал как упражнение: сделать игру, не имея никакой идеи. Привело меня к этому одно неприятное наблюдение.

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

Парадокс в том, что эти игры можно назвать успешными уже по факту их существования, но мне они кажутся ужасными. Там плохая графика, отсутствие стиля, неоригинальный сюжет, примитивный геймплей, кривые интерфейсы и т.д.

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

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

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

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

В основу легли два компонента.

Есть класс игр, где лапа (захват) спускается вниз и хватает различные предметы. Нужно точно рассчитать время запуска лапы (или направление) и постараться, чтобы она не зацепила опасный предмет.

игра Gold Mine
игра Gold Mine

Вторым компонентом стали морские волны. Я не помню точно при каких обстоятельствах, но как-то раз сделал симуляцию морских волн и она мне чисто визуально понравилась.

Поэтому я решил сделать игру про море, где нужно ловить предметы лапой.

Однако при чём там море и что будет лапой?

Пингвин, который боялся воды

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

Идея выглядела абсурдной, но я решил не заморачиваться. Ведь именно такие заморочки и останавливали меня всегда. Поэтому плевать – просто возьму и и сделаю.

-2

И это сработало. Я стал просто делать. Внедрил симуляцию плавучести и раскачки на волнах. Льдина, раскачиваясь, позволяла пингвину прыгать под различными углами. Сделал различные алгоритмы движения и поведения рыб и прочих предметов в воздухе. Придумал ещё кучу фишек геймплея на будущее, они появлялись как грибы, успевай только записывать.

Я сделал уникальный оконный интерфейс со своими меню и кнопками, нарисовал шрифты, логотип и многое другое.

-3

Но тут произошло кое-что печальное.

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

Поэтому я решил переписать её на HTML 5 + JavaScript.

-4

Это потребовало много времени, так как код, написанный на Flash, использовал структуры рендеринга, прямого аналога которым в JS не существовало.

Так что мне пришлось написать много кода, который замещал Flash: диспетчер событий; классы Stage, DisplayObjectContainer, DisplayObject, MovieClip и Sprite; загрузчик графики.

и ещё много...
и ещё много...

Только после этого я смог продолжать заниматься собственно игрой.

Но как раз это меня и подкосило. Тяжелее, чем начинать – только продолжать. Поэтому постепенно я стал уделять игре всё меньше внимания, и она так и осталась в списке незавершенных.

Но наконец я нашёл способ закончить её :) Дело в том, что недавно я увлёкся механическими клавиатурами, к которым приобретаю разные интересные кейкапы.

И вот что вчера пришло в посылке:

-6

Я буду доделывать игру про пингвина, используя клавиатуру с пингвинами :) Это поможет мне сосредоточиться на задаче и не бросать её.

Сейчас портирование на JS закончено на 95%. В дальнейшем я буду вести дневник, описывая, что было сделано, что осталось, и с какими проблемами столкнулся.