Postmortem по «Инженеру»
Если вы ещё не играли в «Инженера», то — вот, пожалуйста. Удобнее будет открыть в отдельном окне. В игре даже есть мультиплеер.
А теперь будет длинный рассказ об игре и, конечно, спойлеры.

Карта игры — в середине листа. Там даже есть координаты в Google Maps, по которым она рисовалась. Над картой игры — план по интерфейсу.
Изначально я хотел сделать маленькую игру в одном замкнутом районе, который был бы битком набит людьми. Какой-нибудь восточный базар или торговый квартал, из которого нельзя выйти без официальной бумаги. Опыт создания лабиринтов показал, что лабиринты я ненавижу, поэтому игра сразу задумывалась с очень простой картой, где сложно запутаться.
На первом же листе виден концепт. Это игра о маленькой умирающей деревне, которая жива только благодаря дешёвой рабочей силе — роботам. Они добывают еду, следят за порядком и позволяют людям забыть о том, что их всего девятнадцать человек без определённой работы.


В черновиках были и загадки. Например, вам выдают коробку и говорят передать, но ни в коем случае не открывать. Если открыть, через два хода прилетает самонаводящаяся ракета и всех убивает. Её можно было ОТКРЫТЬ, а затем ВЫБРОСИТЬ и быстро уйти. Эту загадку я выкинул, потому что не смог придумать других полезных назначений на глагол ОТКРЫТЬ.
Ещё я планировал сделать ускоренный режим, в котором было бы меньше текста. Особые варианты фраз для тех, кто спешит. Потому что в самом первом диалоге, который был в игре (он был позднее вырезан вместе со всей локацией) был коридор чуть ли не из десяти экранов от начала до конца, без возможности выйти. Вопрос-ответ, вопрос-ответ, и так пока не закончится разговор.
Поэтому следующим этапом было писать и писать то, что, по моему мнению, надо будет переписать потом.
Неопределённость не идёт тексту на пользу. Вот этот NPC может выглядеть совсем не так, а вот эта локация может оказаться не здесь. Это заставляет использовать меньше уточнений, описаний — или наоборот, выкручивать описательность на максимум, чтобы выжили хотя бы какие-то детали. Крайность — враг умеренности.
Примерно на этом этапе я полностью отказался от идеи какой-нибудь процедурной генерации или подобной новинки для INSTEAD. Когда текст доставляет столько проблем, браться за какой-нибудь экспериментальный геймплей и чинить баги нет никакого желания.
С другой стороны, в «Инженере» изначально планировался экспериментальный геймплей. Я хотел внести сопротивляющиеся параметры из ChoiceScript, неявный выбор из Undum, дневник квестов и мультиплеер. Больше всего вопросов было вокруг мультиплеера, но он оказался одной из самых простых фич, потому что не надо было ломать ядро INSTEAD'а. А вот фразы в диалогах, которые отображаются, но не могут быть выбраны, немного сломали логику диалогов.
Кстати, ещё немного о геймплее: я решил разделить стандартную схему управления INSTEAD на более чёткую. Чтобы результат клика был более предсказуем, когда щелчок по ссылке может перенести игрока в новую локацию или диалог, а когда — нет. Обычно в INSTEAD играх игрок может догадываться о результате кликов мыши только по косвенным признакам: относится ли ссылка к одушевлённому предмету (ведёт в диалог), описывает ли направление (ведёт в локацию) или действие (влияет на сцену).
У меня был чёткий набор глаголов, чтобы можно было пользоваться действием ОСМОТРЕТЬ не опасаясь, что сцена как-то изменится. После долгого планирования выяснилось, что я могу использовать только два глагола: «ОСМОТРЕТЬ» и «ГОВОРИТЬ», потому что на всё остальное у меня не нашлось применения. Клик внутри сцены однозначно соответствует глаголу ОСМОТРЕТЬ. Это очень хорошее правило интерфейса, но мне всё-таки пришлось его нарушить в сцене, когда герой берёт автомобиль: осмотр авто автоматически убирает его со сцены в инвентарь игрока. Просто ГОВОРИТЬ с автомобилем — это глупо, а глагола ВЗЯТЬ у меня не было.
Я уже знал, что игра будет маленькой, поэтому в ней можно позволить себе больше. Например, не заморачиваться на указатели и подсказки по квестам: в ней так мало объектов и локаций, что потеряться будет трудно. Но всё равно игру пришлось сделать ещё меньше.
К концу разработки я писал, чтобы вырезать написанное «после релиза». Просто потому, что я не успеваю сделать так, как хочется и задумано. То есть, вот эта сюжетная ветка будет удлинена, поэтому этого диалога вообще не будет. Кое-где будет дополнительная локация, поэтому эта ветка диалога будет не здесь и не с этим NPC.
А потом выяснилось, что я попросту не успеваю, и надо резать квесты. Я оставил только два основных квеста, на которых напрямую строился сюжет, и выкинул всё остальное. Вслед за этим выкинул опустевшие локации. В Lua-коде игры спрятана готовая локация, в которую можно попасть только через консоль разработчика — это была самая первая локация, которую я сделал, когда планы сюжета ещё не были закончены, а планов по квестам попросту не было. Я не знаю, нашёл ли это кто-нибудь.
Объявление о релизе расставило всё по местам: игра — скучная. Из игроков пришлось тянуть отзывы силой, при этом они охотнее обсуждали события вокруг игры, чем саму игру. Игра не была отвратительной или привлекательной, скорее средненькой. Отполированной, но маленькой. Нечего обсуждать. Мультиплеер в действии, насколько мне известно, так никто и не попробовал.
А ещё я понял, что переписать не удастся. В сеттинге маленькой деревни на девятнадцать человек нечего делать, в него будет очень сложно вставить действительно интересные эпизоды. Нет разнообразия локаций, нет эпичных заморочек или хитрых квестов. Если удариться и реализовать всё, то в маленькой гордой деревне обнаружатся две различные полурелигиозные организации, пара тайных погребов с неведомыми штуками и парад фриков на второстепенных ролях. Это слишком смелый сеттинг, чтобы его продать как дикое захолустье. А значит, надо делать новую игру, с новым сеттингом, по опыту этой.
Так закончилась история «Инженера».
А теперь будет длинный рассказ об игре и, конечно, спойлеры.
Первая идея

Карта игры — в середине листа. Там даже есть координаты в Google Maps, по которым она рисовалась. Над картой игры — план по интерфейсу.
Изначально я хотел сделать маленькую игру в одном замкнутом районе, который был бы битком набит людьми. Какой-нибудь восточный базар или торговый квартал, из которого нельзя выйти без официальной бумаги. Опыт создания лабиринтов показал, что лабиринты я ненавижу, поэтому игра сразу задумывалась с очень простой картой, где сложно запутаться.
На первом же листе виден концепт. Это игра о маленькой умирающей деревне, которая жива только благодаря дешёвой рабочей силе — роботам. Они добывают еду, следят за порядком и позволяют людям забыть о том, что их всего девятнадцать человек без определённой работы.


В черновиках были и загадки. Например, вам выдают коробку и говорят передать, но ни в коем случае не открывать. Если открыть, через два хода прилетает самонаводящаяся ракета и всех убивает. Её можно было ОТКРЫТЬ, а затем ВЫБРОСИТЬ и быстро уйти. Эту загадку я выкинул, потому что не смог придумать других полезных назначений на глагол ОТКРЫТЬ.
Ещё я планировал сделать ускоренный режим, в котором было бы меньше текста. Особые варианты фраз для тех, кто спешит. Потому что в самом первом диалоге, который был в игре (он был позднее вырезан вместе со всей локацией) был коридор чуть ли не из десяти экранов от начала до конца, без возможности выйти. Вопрос-ответ, вопрос-ответ, и так пока не закончится разговор.
«Я это перепишу»
После написания первой локации с первым квестодателем я понял, что выходит плохо. На какой-то горе происходит неизвестно что, там сидит неизвестно кто и строит какие-то сложные интриги, причём даже я не имею никакого понятия, что должно получиться в итоге.Поэтому следующим этапом было писать и писать то, что, по моему мнению, надо будет переписать потом.
Неопределённость не идёт тексту на пользу. Вот этот NPC может выглядеть совсем не так, а вот эта локация может оказаться не здесь. Это заставляет использовать меньше уточнений, описаний — или наоборот, выкручивать описательность на максимум, чтобы выжили хотя бы какие-то детали. Крайность — враг умеренности.
Примерно на этом этапе я полностью отказался от идеи какой-нибудь процедурной генерации или подобной новинки для INSTEAD. Когда текст доставляет столько проблем, браться за какой-нибудь экспериментальный геймплей и чинить баги нет никакого желания.
С другой стороны, в «Инженере» изначально планировался экспериментальный геймплей. Я хотел внести сопротивляющиеся параметры из ChoiceScript, неявный выбор из Undum, дневник квестов и мультиплеер. Больше всего вопросов было вокруг мультиплеера, но он оказался одной из самых простых фич, потому что не надо было ломать ядро INSTEAD'а. А вот фразы в диалогах, которые отображаются, но не могут быть выбраны, немного сломали логику диалогов.
Кстати, ещё немного о геймплее: я решил разделить стандартную схему управления INSTEAD на более чёткую. Чтобы результат клика был более предсказуем, когда щелчок по ссылке может перенести игрока в новую локацию или диалог, а когда — нет. Обычно в INSTEAD играх игрок может догадываться о результате кликов мыши только по косвенным признакам: относится ли ссылка к одушевлённому предмету (ведёт в диалог), описывает ли направление (ведёт в локацию) или действие (влияет на сцену).
У меня был чёткий набор глаголов, чтобы можно было пользоваться действием ОСМОТРЕТЬ не опасаясь, что сцена как-то изменится. После долгого планирования выяснилось, что я могу использовать только два глагола: «ОСМОТРЕТЬ» и «ГОВОРИТЬ», потому что на всё остальное у меня не нашлось применения. Клик внутри сцены однозначно соответствует глаголу ОСМОТРЕТЬ. Это очень хорошее правило интерфейса, но мне всё-таки пришлось его нарушить в сцене, когда герой берёт автомобиль: осмотр авто автоматически убирает его со сцены в инвентарь игрока. Просто ГОВОРИТЬ с автомобилем — это глупо, а глагола ВЗЯТЬ у меня не было.
Я уже знал, что игра будет маленькой, поэтому в ней можно позволить себе больше. Например, не заморачиваться на указатели и подсказки по квестам: в ней так мало объектов и локаций, что потеряться будет трудно. Но всё равно игру пришлось сделать ещё меньше.
«Я это вырежу»
К концу разработки я писал, чтобы вырезать написанное «после релиза». Просто потому, что я не успеваю сделать так, как хочется и задумано. То есть, вот эта сюжетная ветка будет удлинена, поэтому этого диалога вообще не будет. Кое-где будет дополнительная локация, поэтому эта ветка диалога будет не здесь и не с этим NPC.
А потом выяснилось, что я попросту не успеваю, и надо резать квесты. Я оставил только два основных квеста, на которых напрямую строился сюжет, и выкинул всё остальное. Вслед за этим выкинул опустевшие локации. В Lua-коде игры спрятана готовая локация, в которую можно попасть только через консоль разработчика — это была самая первая локация, которую я сделал, когда планы сюжета ещё не были закончены, а планов по квестам попросту не было. Я не знаю, нашёл ли это кто-нибудь.
Публичность
Объявление о релизе расставило всё по местам: игра — скучная. Из игроков пришлось тянуть отзывы силой, при этом они охотнее обсуждали события вокруг игры, чем саму игру. Игра не была отвратительной или привлекательной, скорее средненькой. Отполированной, но маленькой. Нечего обсуждать. Мультиплеер в действии, насколько мне известно, так никто и не попробовал.
А ещё я понял, что переписать не удастся. В сеттинге маленькой деревни на девятнадцать человек нечего делать, в него будет очень сложно вставить действительно интересные эпизоды. Нет разнообразия локаций, нет эпичных заморочек или хитрых квестов. Если удариться и реализовать всё, то в маленькой гордой деревне обнаружатся две различные полурелигиозные организации, пара тайных погребов с неведомыми штуками и парад фриков на второстепенных ролях. Это слишком смелый сеттинг, чтобы его продать как дикое захолустье. А значит, надо делать новую игру, с новым сеттингом, по опыту этой.
Так закончилась история «Инженера».
Одна из проблем РИЛ как раз в том, что игрушки маленькие, Никаких по-настоящему глубоких сюжетов и длинных повествований.
И с «Инженерами» та же беда — игра просто не успевает увлечь, за 10 минут можно практически обойти всё.
Я понимаю, что писать большую игру страшно именно по причине того, что неизвестно, будет ли в неё играть хотя бы десяток человек. Есть хорошие урк-авторы, написавшие (относительно) большие игры и пропавшие. И причина, я думаю, как раз в том, что их работа не была достаточно оценена.
Мне самому «Инженеры» понравились, но игра всё равно производит впечатление демки, слишком очевидно, что её обрезали.
Для меня же это вообще первый опыт с квестовыми RPG. Именно такого масштаба, чтобы каждый квест был размером с мини-игру, а не обычным звеном в загадке. Раньше я просто писал «рубишь дерево — получаешь ветку» и эта строчка в плане сюжета выливается в один-два абзаца. А здесь строчка «пришёл к человеку — получил программатор», даже без каких-то уточнений, усложнений и условий (их тоже выкинули) превращается в полноценный диалог.
Кстати, забыл написать о ещё одной проблеме дизайна конкретно этой игры: награды за квесты. Сначала я выкидываю из игры прокачку персонажа, выкидываю деньги (потому что нет магазинов, боевой системы, смысла что-то покупать), думаю «вот, будет чистый квест, ничего лишнего, хорошо»… а потом я вижу, что мне нечем награждать игрока за выполнение квестов: ни очков опыта, ни денег не осталось. Значит, на каждый квест нужно придумывать какой-нибудь полезный интересный артефакт в награду. И теперь каждый квест становится ещё тяжелее писать.
А, ещё в игре я хотел битвы с мини-боссами, как в Deus Ex: Human Revolution. То есть, диалог «дяденька, мне очень нужна эта штука» через линзу амбиций выглядел как долгая и сложная битва упрашивания, угроз, использования окружения (кто где стоит, до чего может дотянуться) и что только можно придумать. А потом я открываю редактор и понимаю, что мне бы простой диалог закончить для начала, а потом «я же перепишу».
В ChoiceScript есть randomtest (автопрохождение методом случайного выбора) и quicktest (автопрохождение методом перебора всех вариантов). В веб-движках есть веб-инструменты (например, я использую QUnit для тестов Salet, или можно взять расширение для макросов). Это автоматические тесты, то есть, мне нужно их один раз настроить и потом достаточно только запускать.
В том же инстеде для отладки есть только консоль разработчика. Это удобный инструмент, но вот очень паршиво, что он — единственный.
Вот это правильно. Инструменты должны быть понятными и удобными.