artomberus: Исправил множество мелких деталей. Исправил (надеюсь!) баг с перевыполнением плана. Теперь стабильно приходим к камню на пути со 100%. А дальше буду делать счетчик прогресса только в конце разработки, когда будет ясно, что эпизоды больше не будут редактироваться в плане сюжета-квестов, чтобы потом не переделывать. Дополнил игру звуками, где их не было. Изменил поведение озвучки. Разобрался, что творится с кодом - у меня действительно проигрываемый звук определялся тем, какой вызывается первый, и если в обработчике пишу snd.play() - то пока он играется - никакого клика нет, вот он и гасится, и в принципе это мне и надо, хотя это, наверное, плохой тон, так делать. Побочный эффект подобного подхода - при клике или переходе в другую сцену - текущий звук резко прерывается. Возможно, это не так и плохо, потому, что меня смущало, что можно скатить камень с горы и потом быстро прокликать путь внутрь хижины, а звук камня будет играться. И подобные моменты. Теперь хотя бы логично - ушел с места звука - его больше не слышишь. В идеале вообще бы плавное затухание, но заморачиваться с этим пока не стал, и так слишком много внимания приделяю деталям, углубляюсь в них в ущерб основной линии разработки. Разобрался, более-менее, с живыми объектами. Спасибо Петру за подсказку и идею. С ними можно сделать нормальную реализацию звуков, но пока мне лень...) Зато теперь с игроком всюду ходит невидимый life объект в инвентаре и выполняет действия, которые невозможно привязать к локации или наличию предметов в сцене. Сцены с морем и лодкой, с дубом - дополнены. В коде реализован режим вечера, который пилил уже давно. При изменении одной переменной после каждого перехода игрока по сцене отрисовка сцены затемняется (привет, полупрозрачные png) - только в сценах "на улице". Это нужно для сюжета, связано с одним квестом и возможностью выбора. Должно получиться забавно. Проработал варианты действий-диалогов в трактире. При кажущейся простоте сцены там много всего реализовано. Тоже есть выбор, что за чем делать, и что не делать. Возможно, есть баги, если какой-то вариант не предусмотрел в коде, но я старался прописывать строго всю логику - весь спектр вариантов. Сейчас стало интереснее. Самое последнее, что можно сделать сейчас в игре - получить муку. После этого тупик и дальше надо писать продолжение, но я пока не продумал сюжетные детали. При первом за игру переходе к лодке у моря - инстед на пару секунд подвисает. Наверное, я написал неоптимальный код. Или это потому, что у меня "окна". Но скорее - потому, что использую рандом, плюс запускаю 2 дополнительных звука в разных каналах. Но зато там всё ровно так, как задумал. Прописал дополнительные реакции на предметы. Хочу сделать ещё одну штуку, но пока не разобрался, как. При клике на всех объектах, которые у меня являются глаголами - выводить свою, не стандартную реакцию. Что-то вроде того, как сейчас при клике топором ('topor') на "Ты можешь {drinkwater|попить} воды из него." - вызывается реакция - p[[Ударим топором по глаголу?]] . Хотелось бы написать одну функцию и прописать её во всех глаголах сразу. Подобрать одну нейтральную фразу... Хм. Надо подумать. Хочу добавить паутину в хижину. Не знаю, зачем и какой квест с этим, но вот идея не покидает меня. Дошло до меня, хотя и запоздало, что можно в однотипных операциях присваивать обработчику какую-то функцию, и её отдельно в коде написать, таким образом тиражировать одинаковые реакции в разных местах. Я это сделал в одном месте и сократил код на 90 строчек. Здорово, попробую всюду, где это возможно - делать так. Начал использовать функцию-обработчик cond = . Чтобы по условию показывать нужные ветки диалога. Раньше я примитивно делал копию диалога, менял его в нужном направлении и перенаправлял туда игрока по условию. Это, конечно, тоже работает, но это раздувает код. Поэтому потихоньку буду стараться расширять вариативность в одном и том же диалоге, а не делать несколько. Снова-таки - доходит это до меня поздно, но лучше хотя бы так. В самом начале, когда писал код игры - я реализовал вывод сообщения "Не пей, братец, козленочком станешь" неправильно - в описании, вместе с остальным текстом, и пришлось вручную убирать этот текст при переходе и вообще писать странные костыли, чтобы в разных локациях оно не съезжало никуда. Не знаю, что меня смутило сначала, ведь по идее всё это можно было сделать в act= и тогда бы сообщение выводилось аккуратной строчкой сверху, как и любая другая реакция. Теперь лень переделывать, но когда доберусь, то возможно сделаю правильно. А так я намудрил слишком много всяких переменных и условий... Плохой код( Но я так учусь, да, на своих граблях. Потом всегда понимаю, как надо было сделать. А ещё хочется кнопку сделать, снизу, слева от меню. Что-то вроде walkin-a в комнату-локацию с титрами, переключением языка (когда переведу на инглиш), и прочими опциями, статистикой, например. Для этого надо осваивать спрайты, а они меня пугают ) И может, к счастью, потому, что сейчас это абсолютно второстепенно. Пробовал запускать игру без встроенной темы. На мобильном и на компьютере. Как ни странно - а играть можно, всё более-менее на своих местах, и вот, где пригодилась прозрачность предметов в инвентаре. Поэтому если критичен размер шрифта - можно включить стандартную тему, отмасштабировать шрифт и так играть - всё будет работать, хотя и выглядеть не очень. Сюжетно - есть подвижки, есть общее понимание, но нет конкретики, что за чем. Думаю пока. Решение квестов в деревне приведет игрока за её пределы, но куда? Сам не знаю, есть идея, но нет её обоснования по сюжету) После тестирования нового кода и отсутствия очевидных багов - отправляю на GitHub. Удобно - потом я просто скачиваю zip архив через браузер смартфона и он устанавливается в инстед. Можно легко обновлять игру в любой момент - и тестить где угодно, когда есть свободная минута. Потихоньку перечитываю stead3-ru.pdf, и упрощаю себе жизнь. Главное - продолжать. Интересно, кто из читателей этой ветки форума - следит за изменениями или тестирует их, когда появилась такая возможность. А кто ждет финальный вариант, чтобы не размазывать впечатление и чувство новизны?...) Всем спасибо за внимание :)
Ссылка:
http://instead-games.ru/forum/index.php?p=/discussion/comment/13285/#Comment_13285