Небольшой набор примеров для тех безумцев, что рискнули последовать моей дорогой и писать текстовые квесты в формате Wonder для Twine.Twine - это бесплатный редактор текстовых квестов, которые можно экспортировать в HTML, о нем я писал ранее, как и о формате Wonder . С помощью черной магии я сделал для Steam игру Лорды Проклятых Земель, но золота мне это не принесло, так что не спешите сразу туда.Эта статья - ответы на вопросы, которые падают в личку.Вопрос: Я хочу добавить переменные в квест, к примеру, золото.Пишите прямо в параграфе такВы стоите перед воротами замка. Вход платный, 50 золотых. {{ this.gold = 100; }}Это работает так - Wonder пытается интерпретировать двойные фигурные скобки как JavaScript. This в данном случае будет некий новый объект, в котором хранятся все переменные игры. В него можно вкладывать свои объекты.Вопрос: Я хочу показать переменную в текстеПишите такУ вас в кармане {{=this.gold}} золота.Это работает так - если после двойных фигурных скобок сразу идет символ =, то Wonder пытается вывести результат работы скрипта прямо по месту его написания. Это идеально работает с одиночными переменными, если вы их определили заранее.То есть можно сразу писать такВы стоите перед воротами замка. Вход платный, 50 золотых. {{ this.gold = 100; // создали переменную и можно показывать сразу }} У вас в кармане {{=this.gold}} золота.Вопрос: А можно теперь сделать так, чтобы в зависимости от количества золота одни переходы открывались, а другие нет.Да, нужно вставить скрипт с JavaScript-конструкцией if... else... и особой командой Wonder - Wonder.showText(text) - которая выводит любой текст, в том числе и ссылку на следующий параграф Twine. Текст надо показывать в кавычках.Вы стоите перед воротами замка. Вход платный, 50 золотых. {{ this.gold = 100; // создали переменную и можно показывать сразу }} У вас в кармане {{=this.gold}} золота. {{ if(this.gold>50) Wonder.showText("[[Вы можете пройти в ворота | goldGate]]"); else Wonder.showText("Вы не можете пройти в ворота, у вас мало золота"); }}"[[Вы можете пройти в ворота | goldGate]]" - это обычная ссылка во всех форматах Twine.If... else работает такif(условие) { // команды, если условие выполняется } else { // команды, если условие НЕ выполняется }Фигурные скобки в самом if..else... не обязательны. И само else не обязательно. Это стандартная конструкция во многих языках программирования, не только в JavaScript.Вопрос: как изменить количество золота в карманахЛюбым легальным в JavaScript способом изменить переменную, которую вы создали. Самый компактный способ записи - знак операции и знак равноВот вы прошли в ворота. {{ this.gold -= 50; }} У вас в кармане {{= this.gold}} золота.Так можно складывать, вычитать, делить и умножать. Этого хватит на многое.{{ this.gold -= 50; // это комментарий в JavaScript. Золото уменьшилось на 50 this.gold += 50; // Золото увеличилось на 50; this.gold *= 2; // Золота увеличилось в 2 раза this.gold /= 2; // золото уменьшилось в 2 раза this.gold = 1000; // одинарный знак равно - присваивание. Теперь золота 1000 }}Вопрос: Сложно, сложно, не понимаю!Да, это так. Но если сумеете взять эту горку, то освоите основы JavaScript и CSS, а это пригодится и в других форматах Twine. А то и программистом можно случайно стать, а это хороший квест сам по себе.Вопрос: Сколько денег принесли "Лорды Проклятых Земель"Плата за Steam - это было 6000 рублей - не отбилась. Это неудивительно, учитывая обилие дешевых игр с графикой.
Спасибо тебе за статьи.
После создания тестовой игры для себя по фану мне прилетел заказ на создание простенького квеста
ничего себе! )
Рад за тебя