Каждый программист хочет сделать свою игру
Ну или не каждый. Но я точно хотел! Еще в школе, когда мы проходили Pascal, я допытывал молодую практикантку-информатичку, смогу ли я сделать свою игру-платформер, как Марио. Она уверила, что точно смогу и совсем-совсем скоро.
Это была вопиюще наглая ложь — чтобы на графическом движке паскаля собрать хоть что-то отдаленно похожее на марио, нужно было знать явно больше, чем уровень информатики 8 класса.
Моих познаний тогда хватило только на “кто хочет стать миллионером” в текстовом формате. Естественно, вопросы были всегда одинаковые и в том же порядке. Максимально линейная викторина в одном файле, целиком состоящая из if-else, но оно работало!
Под завершение школы открыл для себя прекрасный Game Maker — там можно было сделать своего марио! Во флэше нарисовал ассеты, собрал сопливо-философскую игру со смыслом с печальным саундтреком на пианино. Позаливал ее на все форумы, куда дотянулись руки, и даже получил под сотню комментариев.
А чтоб вы понимали, раньше чтобы протестировать чужую игру, надо было качать exe-файл через не самый быстрый ADSL-интернет. Вот ведь мотивация была у людей, сейчас из аппстора за 10 секунд не заставишь скачать.
Мой первый публичный инди-проект, получается! Ссылку на это свое творение я давать не буду — там полный кринж и глубокий смысл от гормонального нестабильного тинейджера. Скриншотов будет более чем достаточно, чтобы оценить весь масштаб творца.

Дальше я ушел в веб-разработку с головой и делал всякие серьезные вещи: системы поиска тендеров с госзакупок, внутренние CRM-ки для строительных компаний и всякое такое, но ручки-то тянулись к чему-то игривому хехе.
А так как я больше любил фронтенд и знал js, то и использовал то, что было под рукой: колупал WebGL, всякие игровые движки для веба типа PixiJS и тридешный ThreeJS. Не было ни малейшего плана, ни понимания, что же я хочу сделать — просто делал что-то прикольное без цели, как самурай.
Услышал про клеточные автоматы? Надо сделать свой! Если не в курсе, то это упрощенная до максимума модель симуляции. Представьте тетрадный листочек, на нем клеточки. У каждой клетки есть восемь соседей. Если клетка закрашена, то считаем что в ней есть жизнь, она “живая”. Правила простые:
- Если у живой клетки есть 2 или 3 соседа, то все прекрасно, она продолжит жить.
- Если у клетки 1 или вообще нет соседей, то ей становится грустненько, и она умирает.
- А еще наша клетка немного интроверт, поэтому если вокруг больше 3 соседей, то она тоже умирает.
- Если у пустой клетки три соседа, то там зарождается жизнь.

Этими правилами в целом можно описать жизнь эмигранта в Тбилиси
Каждый ход клетки умирают и рождаются, и можно наблюдать за симуляцией “жизни”, которая в чем-то похожа на чашку петри. Такая игра без игрока, где можно только наблюдать, интерактивное кинцо до того, как sony его придумали. Идея этой игры родилась аж в 1970 году, и там есть много математических заморочек и идей, которые появились из этого. Не буду углубляться, если вас заинтересовало, то в википедии поподробнее.
Я собрал свою версию этого алгоритма, но накосячил с логикой, поэтому поколения почти всегда растут вправо и вниз)
Это клевое ощущение, когда из под твоих рук появляется не просто что-то полезное, этого мне хватало и на работе с автоматизацией бизнес-задачек, но и что-то практически живое.

Меня перло от хитрых анимаций. Например тут я узнал, что можно очень просто сделать симуляцию огня, если анимировать шарики, размывать их пересечения, а потом сверху накладывать фильтр, который все градиентные переходы приведет к фиксированному цвету:
Звучит заморочено, но на деле это два простых шага обработки, которые дают прикольный результат.
Примерно в то время (а это был год 2016-17) набирал популярность codepen — платформа для фронтендеров, где они занимались примерно таким же: собирали прикольные визуальные штуки и делились прототипами. Я думаю именно там я получил большинство aha-moments в своей жизни и большую часть скиллов по фронтенду, когда разбирал часами какой-нибудь хитрый рендер через webgl или простой слайдер на чистом css через хитрую логику работы с input[type=radio] и css селекторами на базе выбранного элемента.
Примерно тогда же набирал свою популярность dribbble, платформа для дизайнеров, где они также выкладывали кусочки интерфейсов и концепты UX-анимаций. И там можно было найти крутую идею, которую интересно было реализовать кодом.
И вот так, копошась в чужом коде по вечерам вместо сериальчиков, я собирал свои прототипы. Иногда страшненькие, например, как этот примитивный ASCII генератор поверхности (помните старые игры про танчики или worms?):
Иногда что-то более физичное, например, тут какая-то симуляция ветра и стрел:
А некоторые прототипы я даже пытался довести до более цельного продукта. Помните древнюю DOS-игру про лыжника, который едет с горы и там периодически появляется йети?

Не исключаю что этот йети причина множества детских травм
Собрал простой концепт “типа-лыжника” и следа за ним:
Попробовал довести это до реальной игры, пришлось занырнуть уже куда-то глубже, чем во фронтенд. Скачал unity, посмотрел гайды, помучился с 3D-моделированием, собрал даже какую-то сцену:

Видео не осталось, но по скриншотам было миленько:

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

Змейка. Только управлять ей надо было с помощью наклонов своего тела. Весьма фаново!

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

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

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