kvisaz (kvisaz) wrote,
kvisaz
kvisaz

Categories:

Нюк-караван - игра про постапокалипсис в браузере

Неделю назад опубликовал статью на Хабре про постъядерный караван. Это простая игрушка - даже не игрушка, а скорее технодемо, чего можно добиться на обычном JavaScript, HTML и CSS. Технологии внутри таковы, что это можно было писать даже в 2003 году, но тогда я не умел.

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

Постъядерный караван встреча с бандитами


О внутреннем устройстве игры


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

То есть идея в самом костяке проста - цикл и генератор рандомных событий. В базовом варианте такую игру, думаю, можно было бы реализовать на любом устройстве с выводом - даже на обычном принтере (если его перепрошить). Эх, где я был в 70е??



Эту простую идею я увидел в туториале тут - https://gamedevacademy.org/js13kgames-tutorial/

Туториал был сделан по одной древней игре - как раз из 70х! - которая называлась Oregon Trail. Про американских переселенцев, которые помирали от дизентерии и индейцев. Первая версия, вроде бы, как раз реализовалась на устройстве вроде телетайпа - просто с текстовым выводом, если я правильно понял отпечатки на дне своих раскопок в Гугле.

В 80х эта игра выглядела уже на миллион долларов, по тогдашним меркам. Версия с Apple II выглядела так:
Версия Oregon Trail с Apple II

Не играл, признаюсь. Пробовал только игру из туториала на JavaScript. Она выглядела так

Игра про караван из туториала

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

Ну-ка, ну-ка, подумал я. Легким движение руки брюки превращаются... брюки превращаются... в элегантные постъядерные шорты

Первая версия Нюк-каравана

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

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

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

2D карта

Вообще 2D-карту я хотел ввести потом, а сначала мечтал просто написать туториальчик по одномерной игре. Но как-то так получилось, что мысли обогнали планы. Карта технологически реализовалась не так сложно, как я ожидал. Переход от 1D к 2D занял примерно два чистых часа времени. Ну и переход себя оправдал - игра сразу стала выглядеть намного приятнее. Я думаю, это сказалось и на общей оценке статьи на Хабре (положительной)

Потом я посмотрел и сделал универсальную диалоговую систему, которую присобачил для магазинов, бандитов и вообще любых сообщений, включая смерть. Что надо отметить - даже простой диалог с одной кнопкой "Выход" смотрится куда живее, чем просто сообщение в лог. Интерактивчик - великая штука!



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

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

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

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



О статье на Хабр


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

Чего не ожидал - что "технодемо" будет воспринято как почти полноценная игра. Некоторые манчкины быстро напилили себе чит-коды (точнее, чит-скрипты) и давай торговать со встречными караванами, гордо отчитываясь в комментах:
- У меня 15 миллионов браминов, я прошел игру?
- Короче, выхожу из города с миллионом людей в караване, десятью миллионами стволов и сотней млн браминов. Встречаю бандитов, и случайно нажимаю на "Бежать" - теряю тонны денег, еды и быков!!



Помимо приятного чувства "мое детище не так уродливо, оно даже кого-то увлекло на написание читов!", манчкины подарили мне бесплатный тест. Так я узнал, что бесконечный лог - плохая идея для игры. Вообще, массив пополняемых данных без лимита - плохой паттерн для любого проекта. У чемпионов по караванам с миллионами браминов этот бесконечный лог приводил к пожиранию многих гигов памяти и в итоге к крашу браузера. Чит-защита от бога. Шутка. Пофиксил размер, ограничил его 10 последними сообщениями и все пошло прекрасно.


Исходный код


Исходный код игры, с картинками, HTML и CSS выложен на GitHub с лицензией CC0 - то есть полной свободой на копирование, изменение и использование. Она настолько простая, что даже не требует сервера - играть можно на любом локальном компьютере, был бы браузер.

Я специально прошерстил pixabay.org и opengameart.org, чтобы добыть там очищенные от всяких прав изображения. Надо сказать, pixabay меня приятно удивил большим количеством пристойных картинок. Но то, что сейчас есть в игре - это, пожалуй, максимум, что можно выжать из публичных изображений. Впрочем, любой уход от текстовых корней и подъем графики будет сопряжен со значительными затратами. Так что для простых игр надо играть на простом поле.

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

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

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


Такие постъядерные пироги
Tags: Игры, Нюк-караван, игрострой
Subscribe

  • Функциональная застройка в Швейцарии

    Теория дизайна (не проверял) - если вы родились, выросли и прожили в одном стиле архитектуры, любой другой стиль покажется вам глотком свежего…

  • Автопилот Кассандры

    Еще я вспомнил смешной случай - как поступал в ТУСУР и не мог решить последнюю задачу по физике. И на интуиции что-то правдоподобное набросал. При…

  • Сервисная экономика - не то, что я думал

    С "сервисной экономикой" не все так просто. Кто-то пишет "сервисная экономика == экономика услуг". Идем смотреть, что такое услуги, находим там весь…

  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 7 comments