«Испанский» код

Максим Иванов опубликованно в Human40K, 16 апреля 2026 г., не обновлялось

Работая с Unreal Engine, я пришёл к неутешительному выводу, что данный движок только опосредованно подходит для работы с 2D. Существует много методов настройки и инструментов UE для 2D, но такой подход даже близко неэкономичен по сравнению, например, с Defold или тем же Phaser.

Я остановил свой выбор на Phaser.js в силу того, что знаком с JavaScript с 2010 г. Это мой второй язык программирования, на котором пишу так долго, первый — C#.

_

Phaser by Examples

Книга... Книга неплохая, в ней много примеров с полным исходным кодом игр, плюс код есть на GitHub . Если у вас нет опыта в node.js и npm, то при запуске примеров из книги вы увидите белый экран и через F12 ошибки в консоле. После долгая переделка кода под свои реалии, чтобы просто запустить.

Пелло Ксабьер Альтадиль Изура

Конечно, автор примеров, он же соавтор книги, скорее всего, баск. Но в мой первый год освоения Phaser в голове отчётливо свистело словосочетание «испанский стыд»: как можно было выпустить книгу для новичков (читай, одиночек), напичкав её «корпоративной хренью»?

Ключевая мысль в том, что знание языка JavaScript не равно знанию инфраструктуры, технологии и платформы и связки js/ts + node.js + npm — это совершенно разный подход к написанию кода и разработки. Да, у авторов есть своё видение, как объяснять, как работать с Phaser.js, но при этом они никак не объясняют, как работать со связкой 'js+phaser.js+node.js+npm'. Создаётся впечатление, что разработчики фреймворка сознательно уходят в сторону зависимости от платформы node.js, а знание оной идёт как само собой разумеющаяся данность на их территории. Взяв пример из репозитория — он без npm не работает! Делаешь просто по книге — там порядок (в теории), в книге чистый js-код.

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

Маттео Тревизан, заказчик книги

Думаю, таких комментариев не возникло бы, если все бы ещё были поголовно разработчиками на node.js

Ремарка: корпоративной хренью я здесь назвал подход, который 100% практикуется в коллективах на JS/TS с использованием Node.js. Я никого здесь не собираюсь критиковать в подходе разработки — это моё личное мнение. Но тем не менее аргументированное тем, что у меня за 16 лет сложились свои привычки, паттерны в написании кода.

Я прекрасно понимаю, что есть коллективная разработка на TS, что без порядка утонешь в синтаксическом сахаре или просто утонешь в большом проекте без типизации и прочее и прочее... Но представьте чисто гипотетически, что мне это не надо. Так сложилось, что я разработчик-одиночка, и все эти ваши npm, node.js, ts даром мне не сдались, если я могу обходится текстовым редактором и веб-браузером для создания своих сайта или логики проекта, то зачем мне весь этот когнитивный груз?.. У меня нет проблемы, что мой код кто-то не поймёт, главное — чтобы я его понимал сам.

Хоть и основные примеры в книге были на JS, запах остальных волшебных слов там стоял отчётливо, особенно когда пытался запустить проект из VS Code — все они крашились, останавливаясь на белом «листе бумаги». Да, в самой книге все примеры только на JS, но кто будет заниматься copy-paste’ом из PDF-файла, если есть код в открытом доступе? Правда, нюанс в том, что этот код грузится через npm.

Думаю, когда возникают проблемы в студиях, они не лезут в YouTube, а решают проблему на месте, посоветовавшись друг с другом. Должно быть, опыта у них много, если студия имеет заработок, было бы иначе — нечем было бы платить зарплаты. Даже после починки примера с Марсом я пытался написать им на почту, в ответ — тишина. После я с чистой совестью забыл про Phaser.

В любом случае я ему благодарен, что сочинил именно такой пример про Марс, где игра рассказывает историю... Думаю дочитать всё-таки эту книгу, так как мне понравились игры автора, да и технология работает корректно, — с другой стороны, это был мой личный опыт, на никакую объективность не претендую.

Марсианский пример

Самое обидное, что единственный пример ради которого я стал переводить книгу на русский (перевод PDF-документа) был именно пример под номером 6. Это интересный момент поскольку на данном этапе моя игра мало чем отличается от оригинала, представленной в книге и на itch.io, Marstranded от Pello.

Например, все переделки пока что под капотом, но некоторые ассеты уже мои и мной сделанные.

Diablo 4 Armor set
Внутриигровой ассет. Станция для генерации кислорода из марсианского льда.

Когда я очистил код от всяких там примочек для сборки и просто его запустил в браузере, стали появляться те ошибки, чья природа говорила, что сама логика игры поломана в принципе. Остальные примеры до я пробовал чинить и вроде бы успешно. Первое, что бросилось в глаза, — поломанное использование алгоритма поиска A*, боты не хотели шевелиться. Потом я починил их уже с помощью DeepSeek — не знаю, сколько бы понадобилось времени без него. Там ещё было много ошибок в блоках кода со шрифтами... Но их я починил относительно быстро. Не знаю, по большому счёту, если вы откроете его пример mars на GitHub , то можете сами увидеть, что там.

После как от моего желания овладеть Phaser с нуля за месяц остались лишь одни ошмётки, я удалился от него подальше. Видя, что реализовано передвижение персонажа по тайлам, переход между уровнями, активация объектов, грамотные коллизии, я решил, что после месяца с небольшим каждодневной разработки с меня хватит. Потому что в итоге игра ломанная, а про желание её улучшать и дополнять после интенсивной работы и речи быть не могло. Но в 2025-м в моей жизни появился DeepSeek, и это поменяло правила игры... Не буду утруждать себя рассказами про потерю контекста, который он видит только в начале и в конце, поэтому нет смысла вести с ним длительные диалоги. Как он имитирует знание посредством перемножения матриц весов внимания (поисковики были первыми со своей релевантностью), но с точки зрения решения формальных задач он, безусловно, помощник. Если делить свою задачу на этапы, где каждый последующий вытекает из предыдущего, и описывать задачу без омонимии (двусмысленности), то почти на 99,9% вы получите именно тот код, который ищете. Нужно ясно понимать, чего ты желаешь: ясные мысли ясно излагают.

Интуиции

Порой бывает, что для реализации идеи нужны годы её формирования даже в какое-то простейшее предложение, некая совокупность предмыслей, наращивая мощь, проявляется в каком-то акте действия. Что тут говорить о завершённой работе, если даже сами идеи могут оформляться годами?! Иллюзией было бы полагать, что что-то грандиозное появляется в какой-то короткий промежуток времени, — не обманывайтесь, — всё большое формируется в процессе жизни, а не возникает тотчас же. Так же случилось с этой игрой: я с детства мыслил о собственной игре про космос, начиная с RTS DUNE на 16-bit. Та замануха, которая рождалась в процессе игры в DUNE II , порождала желание думать, изучать выдуманную вселенную Фрэнка Герберта.

Шли годы...

Пока Дени Вильнёв не внёс свои коррективы... И знаете что? Он точно уловил на 99.9% ход и настроение моих мыслей касательно Дюны. Когда я стал представлять, какую мелкую игру я могу сделать один, и главное — просто. Передо мной после просмотра творчества Вильнёва вставала картина красной планеты и черноволосого юноши среди марсианских руин и остовов космических кораблей.

Max.Mars

Управляется только с клавиатуры и ПК (играть с телефона/планшета не получится). Max.Mars

Жизнь на Земле, паря в космическом пространстве 4 млрд. лет, ни разу не покидала массово родную планетарную систему или пределы ближайшей α Центавры, и вряд ли это произойдёт через ещё 4 млрд. лет. Вселенная существует с момента Большого взрыва 13,7 млрд. лет, за такой срок Солнца, подобные нашему, вместе с подобными Землями уже родились и уничтожились, оставив белого карлика вместо солнечной системы. И если была там такая же жизнь, то к тому моменту её родную планету уже поглотила биосфера/техносфера вместе с ноосферой, защитив от разрушения, объединив в единую систему (сфера Дайсона). И с тех пор эта конструкция корабля-ковчега бороздит пространство по только ему известному маршруту, наверняка приближаясь к ресурсоёмким планетам и планетарным системам. Нет большого смысла и возможностей (световое ограничение, околосветовая скорость) покидать родной мир, проще постепенно подчинить и управлять им, включая его орбиту и само солнце. Конечно, с оговоркой, что по впечатляющему стечению обстоятельств в одной системе не оказалось две идентичных пары Земля-Луна. Луна нужна в том числе для стабилизации климата на миллионы лет, без неё, например, не обеспечивался бы стабильный наклон оси на крайне долгий период, что весьма упорядочивает жизненные циклы (смена времён года). Без длительного влияния Луны ураганные ветры дули на Земле с такой же силой, как на Юпитере или Сатурне, — земные сутки длились всего 6 часов вместо 24-х и уже ~25-ти сегодняшних благодаря Луне.

Смотря крупные блокбастеры про освоение космоса, мало кто задумывается об абсолютной нереализуемости большинства технологий для так называемого «межзвёздного будущего» или реализуемых, на крайний случай, только для межпланетарного. По крайней мере, это будет совсем не так, как это показывается в фильмах «Звёздные войны», «Стартрек» и «Аватар». Это будущее настолько непонятно, что в него аж страшно заглядывать: не люди, а что-то иное; не прыжки в пространстве-времени, а долгие перелёты, растянутые на тысячелетия. Начиная от скорости причинности, на которой обновляется информация во вселенной, заканчивая «лёгкими» планетами (Луна, Марс, планетарные системы Юпитера и Сатурна) в ближнем космосе; Венера — это фантастическая задача терраформирования. Касаемо Марса, там гравитация в 0.38g, недавние исследования на мышах на орбите показали, что существует физический порог минимального притяжения, после которого наступают необратимые изменения в организме, ведущие к летальному исходу. Даже если нам удастся управлять гравитацией сродни магнетизму. Даже если сверхкрепкие корабли-ковчеги смогут пребывать, не ломаясь, в космосе сотни миллениумов, то уже будет не человеко, а машиноподобный живой вид в космическом пространстве, бороздящий просторы вселенной в поисках Новой Земли, чтобы просто дать «семена» тех, кто нужен в новой реалии, и явно не людям. Наша главная задача — не разрушить то, что имеем, собственную Землю. Аналогии с мореплаванием и отделение от родителя здесь просто неуместны — другая логика: океан — часть биосферы, но не космос. Переехать от «родителя» на другой континент — это смена геолокации, а не космической локации. Здесь жизнь, там — смерть.

Url: https://www.wgelement.com/post20251118/?id=20251118&rel=post

Номер блога subtext Параметр 'id' отсутствует

Рассуждение на тему компьютерных игр

About project

WG Element

Блог о компьютерных играх. Core