artomberus: Когда игра разрастается до большого количества действий - уже не получается каждый раз прокликивать всё для тестирования логики работы. Поэтому временно делаю переход к нужному моменту из первой сцены. Получается такой универсальный объект-ссылка, который буду постоянно модифицировать в процессе разработки. Сейчас медленно, но верно работаю над первым диалогом в игре. Технически - разобрался. Есть примеры, достаточно подробное описание того, как они работают. В содержательном плане труднее. Надо найти общий стиль речи, который должен соблюдаться, быть однородным, независимо от того, в какой день я пишу тексты, оно не должно влиять. Сильно косить под старину не получается пока, мышление-то современное. Но и доводить совсем до абсурда и присваивать древней сказочной рыбе современную речь тоже нельзя... Поэтому будем считать, что наши герои не такие картонные, какими их показывали, и у них тоже есть эмоции и отношение ко всему ) Это позволяет посмотреть на те же вещи под новым углом, добавляет интереса. Причем законы остаются старыми, а проблемы - современные. Для примера покажу отрывок, самый первый макет диалога, который буду улучшать. Я понял, что мне лучше сначала расписать все варианты, как часть рассказа - а потом уже вставить их в игру. В ней они смотрятся иначе - более органично и атмосферно, благодаря оформлению - но первоначально писать мне проще не в редакторе кода. "Ты в третий раз закинул удочку. Волны озера разошлись в стороны, пропуская рыбу, которую ты так бесцеремонно вытащил на берег. Только когда она попала тебе в руки, ты понял, что рыбка-то не обычная, а золотая! И говорящая! Ты аккуратно снял крюк... ^ -- Кто же так с рыбками-то обращается? - золотая рыбка нервно и обижено смотрела на тебя своими мудрыми глазами, из-за ран, которые ты ей нанес. -- Так-так, так. И где же твой невод? 1 ветка. —- Невод? Какой невод? -- Ты сказки в детстве читал? Старик был один, добрый, но старуху слушался... Пошел он однажды в море, закинул невод... один раз закинул, второй... А на третий словил меня. А я чудеса творить умею. Силы морские, да и всей Земли, подвластны мне. Не потому, что я царица морская, а потому, что у природы всё едино... Та история закончилась не очень хорошо. Хотя старик и не виноват ни в чем. Но вот сейчас я снова на берегу - поэтому и спрашиваю - где твой невод? Что за варварские методы нынче пошли? Рыба тоже чело... рыба. Рыба тоже живое существо. —- Ну... я... ээ... Заблудился я, в общем. Уснул дома, правда, спал плохо... Но когда открыл глаза - оказался здесь, в лесу. Не знаю, почему и каким образом перенесся сюда. Но выживать-то как-то надо. Нашел удочку и вот... -- Эх, парень. Не с того ты начал свое путешествие... —- Какое путешествие? - Земля умирает. Вы, люди, уничтожаете ее. —- Но... -- Не перебивай, когда с тобой говорит рыба, которой несколько сотен лет. Планета гибнет, потому, что люди используют свой дар во вред себе же. Вы умеете делать удивительные вещи! А вместо этого воюете, загрязнаете воздух, воду, да саму землю... " Вот как-то так. Пока сыро, понимаю. Собственно, дальше в диалоге пойдет раскрытие части истории, но только той, которая сподвигнет главного героя пойти вперед - отчасти потому, что другого выбора ему не оставили, отчасти потому, что мир в опасности. Так и вспоминается говорящее дерево из первой Кирандии: *очень пафосным голосом*: "Земля умирает, Брендон". Наверное, в чем-то мы всегда копируем предшественников, на чём научены - те образы и приходят в голову. Для меня в игровом плане первые две Кирандии - это альма матер, да и эталон игры в принципе - реализация, атмосфера, история. То, к чему надо стремиться. Странно: в 5 классе мне одновременно и равноценно нравилось как сидеть над квестами Кирандии, так и рубиться в Quake. Изначально предстоял выбор, в каком лице говорить о главном герое. Здесь мне вспомнился опыт другой игры - Space Quest, в русских переводах было всюду ты - "Ты нахально спер банку". Из действий самым забавным было - обнюхать - такой концентрации юмора я не видел после этого ни в одной игре, как вот в этой серии. Уже есть общая, секретная идея в игре - которую раскрывать не буду: именно та тайна, узнав которую в конце пути игрок получает свои эмоции, впечатления, философские мысли и так далее. Технически оно реализуется в еще одном счетчике, который будет кое-что подсчитывать, и в зависимости от этого менять концовку. Т.е. предварительно можно сказать, что концовки будет 2. Их достаточно для замысла, да и вообще я согласен, начитавшись разных умных статей :smiley: , что иллюзия выбора важнее самого выбора. Но возможно, потом я придумаю что-то иное. А пока 2 концовки. После реализации диалога и открытия еще одной локации мы наконец-то начинаем большое путешествие, и весь первый квест будет, по сути, уже сделан ) Дальше - другой эпизод, другие предметы и так далее - все придется создавать с ноля. Но в среднем это примерно 1/10 игры, а может меньше. В плане оформления - куда же без него - реализовал (правда, не до конца) одну мелочь, но очень уж хотелось, чтобы так было: В первой, вводной сцене с кнопкой "дальше" - инвентарь, конечно, скрыт, да и прогрессбар тоже. Но подложка под них в фоне нарисована, а она в этой сцене не нужна. Я добавил код для смены фона в этой сцене, чтобы в следующей тут же его сбросить обратно на стандарт. Первая сцена: room { forcedsc = true; nam = 'main'; noinv = true; title = 'Вступление'; pic = 'gfx/0.png'; enter = function() snd.music 'mus/Beginning.ogg' theme.gfx.bg "gfx/bg_good.png" end; Вторая сцена (развилка): room { nam = "start"; title = 'Развилка'; pic = 'gfx/1.png'; enter = function() snd.music 'mus/Atlantis.ogg' theme.reset 'scr.gfx.bg' end; И все бы хорошо! При старте новой игры - Первая сцена с фоном без подложки для инвентаря, только прямоугольник слева. Вторая уже - плавно появляющийся инвентарь - мы включаем всё, нужное для игры, она оживает на глазах =) И дальше все работает правильно. Но. Есть сценарий запуска игры, который рисует подложку в инвентарь на первой сцене. Если запустить новую игру, и тут же ее закрыть. Тогда при повторном заходе - состояние theme.gfx.bg "gfx/bg_good.png" не сохраняется, как и указано в документации к инстеду - предлагается восстанавливать его самому. А вот как это сделать - я нигде не нашел и не смог догадаться... Я делал вот так: function init () take 'статус' take 'fonarik' if here()=='main' then theme.gfx.bg 'gfx/bg_good.png' else theme.reset 'scr.gfx.bg' return end end Писал это же условие в других сценах. Не работает...( И не понимаю, почему, ведь такая логика вернее - проверяем, в первой ли мы сцене, и если да - меняем фон, иначе - рисуем стандартный, с подложкой. Но чего-то я не вижу... Это же делаю в диалогах - и видимо будет то же самое - пока играешь - все правильно, но когда закроешь игру на этом месте - оно не сохранит состояние. Подскажите, пожалуйста, если из этого можно понять, как помочь. Удочка теперь отображает индикатор сборки, если кто-то не поймет, почему игрок ею не ловит, а пытается ее мыть - потому, что нельзя ловить удочкой, на которой нет снастей или червя) Для других предметов, которые надо как-то модифицировать перед применением - сделаю примерно такой же индикатор. Это наглядно. Взял это не на пустом месте, а после тестирования одним человеком, которому сие было непонятно. Еще на скриншоте виден шрифт меню. По сюжету, наверное, не буду рассказывать больше так подробно - должна быть интрига, спойлер ) Но учитывая, что игра будет довольно большой, это только начало, и то пока не доработанное. Спасибо за внимание :smile:
Ссылка:
http://instead-games.ru/forum/index.php?p=/discussion/comment/12822/#Comment_12822