Смена дня и ночи
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Статья рассчитана на людей, которые уже имеют определенное представление о RPG-Maker 2003. Также она может дать вам общее представление, каким образом делается смена дня и ночи. К статье прилагается демо-версия, в которой реализовано всё, что описано.
Для начала следует заметить, что такая система, как смена дня и ночи может быть в игре сделана совершенно по-разному, на RPG-мейкере существует десятки таких способов. Так что я уточняю, что буду рассказывать про свой способ. Сначала я думала, что эта статья будет посвящена смене дня и ночи именно в моей игре «Легенда о Дряньке». Но в процессе написания, я нашла у себя в скрипте некоторые неоптимальные вещи, так что решила, что буду рассказывать не точь-в-точь, как было сделано в игре, а так, как я считаю, следует сделать лучше всего.
Свойства.
Начну с элементарного вопроса: чем отличается в первую очередь день от ночи? Правильно - освещением! Днем, как правило, у нас светло, вечером начинает темнеть, а ночью совсем темно. Цвет экрана настраивается довольно просто.
Еще день и ночь имеют такое свойство, как последовательность. То есть: сначала светает, светло, темнеет, темно, светает, светло, темнеет, темно, светает.. что-то я увлеклась.. короче, и так далее. Для наглядности, условно разделим сутки на 4 части: утро, день, вечер и ночь. В «Дряньке» именно такое разделение. Но, вообще, никто не мешает разделить сутки на 2 части: темно и светло, например, или на 24 части по часам, но не будем усложнять…
Сейчас будет важный момент: для реализации смены ночи была использована всего одна переменная!
Назовем ее «смена дня и ночи». Она у нас будет принимать значения:
0 – утро
1 – день
2- вечер
3 - ночь
И, наконец, еще одно немаловажное свойство – это параллельность. День и ночь меняются всегда параллельно с любым происходящим, с течением времени.
Поэтому система смены дня и ночи будет организована у нас как параллельный процесс. Заходим в базу данных игры, открываем вкладку «Общие события».
Назовём событие «день и ночь». Вызывается оно параллельно в течении всей игры.
Отсчитываем время.
Как многие уже поняли, мы будем менять время, а когда пройдет нужный промежуток времени – менять время суток. Отсчет времени я делаю с помощью функции «Ждать».
По истечении нужного промежутка времени нам необходимо менять нашу переменную, и в результате, как мы потом увидим, освещение будет меняться.
Здесь я сначала проверяю, чему равно значение переменной, если оно меньше или равно двум, то у нас - утро, день или вечер, иначе – ночь. В зависимости от этого мы переходим либо дальше по кругу (плюс 1), либо возвращаемся в начало - если у нас сейчас ночь, то нужно перейти на утро. Затем мы должны некоторое время подождать. От того, сколько мы будем ждать единиц, будет зависеть скорость перехода. В данном тестовом варианте я задала значение специально небольшим, всего 50 секунд, чтобы было наглядно видно, как меняется день и ночь.
Таким образом, данная конструкция будет работать в цикле, меняя последовательно значения переменной «0001: Смена дня и ночи»
Делаем нужное освещение.
Но этого нам еще мало для счастья, потому что это не отражается у нас в игре. А для того, чтобы увидеть, как это работает, перейдем на нашу карту, на которой мы желаем это сделать, и там создадим специальный ивент.
Этот волшебный ивент будет работать у нас как источник света, я назвала его «текущая освещенность». Мой способ смены дня и ночи предполагает, что на всех картах, на которых происходит смена дня и ночи, должен стоять такой вот подобный ивент из этого семейства. Конечно, ставим его невидимым, под героем, параллельно. Внутри проверяем значения переменной с помощью ветвления. Если у нас значение переменной равно 0, то это утро – ставим освещенность яркую, Иначе - если 1, то день – нейтральная освещенность, Иначе, если 2, то вечер – начинает темнеть, Иначе, если 3, то ночь, ставим, чтобы было темно, как ночью.
Этот способ удобен тем, что на разных картах освещенность в зависимости от смены дня и ночи может быть разная. А неудобен тем, что везде нужно проставлять этот ивент, который задаёт освещенность.
Реакция на время суток.
Теперь займемся жителями деревни, которая расположена на нашей карте. Смена дня и ночи не будет выглядеть такой реалистичной, если населяющие игровой мир существа не будут обращать на это никакого внимания. Так что давайте я покажу, как я делаю разную реакцию на смену дня и ночи.
Рассмотрю самый простейший вариант, девушку, которая круглые сутки находится на одном месте.
Как видете, у неё 4 вкладки, на каждой из них написано, чему равно значение переменной смены дня и ночи, и в зависимости от этого она произносит разные фразы. В приложенной демке я добавила еще несколько человек, некоторые из них появляются только в определенное время суток, то есть определенные вкладки у них отсутствуют.
Какая же смена дня и ночи без гостиницы, в которой можно поспать? Вообще то, оно и так уже выглядит более менее похоже, но мы пойдем дальше, и сделаем гостиницу, в которой можно будет отдыхать только ночью, и просыпаться утром.
Здесь мы сначала проверяем, равна ли наша переменная трём, то есть, наступила ли ночь. Если ночь наступила, то предлагаем ночлег, иначе предлагаем зайти попозже. В случае с ночлегом мы не забываем переключать переменную на значение 0 – утро. Иначе получится, что мы не спали.
Также в демке я добавила специальный куст, который по команде игрока может изменить время суток.
Запуск.
Теперь мы можем запустить проект и увидеть это всё в действии! Чего-то, сутки меняются слишком быстро, не так ли? Не проблема, сейчас мы это объясним!
Вот, теперь порядочек, всё логично, всё работает!
Демка прилагается! Скачать
Если вам нравится - можете не стесняться и брать мои наработки для своих каких-нибудь проектов на RPG-мейкере. Рада, если мой опыт окажется вам полезным.
Напоследок ложка дёгтя: перед тем, как вставлять в игру такую систему как смена дня и ночи, хорошенько подумайте - а надо ли оно? Дело в том, что в определенных случаях эта "фишка" совсем не оправдана и может даже изрядно испортить игру. Не верите? А вот в "Дряньке" были неоднократные случаи, когда люди жаловались на то, что надоело, как везде темно, а ночью магазины закрыты, ничего не купить, а гостиницу не найти... Так что думайте сами, решайте сами. А как это делать, теперь вы знаете!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Насколько я понял, в этом примере, объявлена переменная, которая хранит текущее время и, по нему путём сравнения, определяется время суток?
P.S. Девушка за столиком, даже вечером говорит "Добрый день!".
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
там всётаки где то есть миллисекундный таймер!!! значит можно делать анимацию сменой тайлсета с нормальной скоростью! :woohoo:
что же касается времени суток - описываемый способ не самый лучший, хотябы потому, что ночью начинают светиться источники света, чего упорно в данном случае не происходит.
есть мысль, что правильнее менять тайлсет, сделав несколько копий и в редакторе притемнив нужные копии на определённый уровень, но места кторые предположительно будут освещены ночным освещением оставить яркими.
у этого способа есть свой недостаток - сам персонаж либо останется тёмным на свету, либо светлым в темноте.
вообще было бы неплохо это обсудить и подобрать самый удобный способ осуществления смены времени суток, не обладающий такими недостатками.
правда опять же другие движки этой серии предлагают более лёгкие решения, поскольку поддерживают прозрачность в тайлах и имеют некоторые другие опции упрощающие задачу.
беда конструкторов игр этой сери в том, что у тех которые обладают большими встроенными возможностями управления событиями и ресурсами отвратительная графика, а у тех что обладают хорошей графикой сильно урезают возможности управления.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Кстати, а встроенный скриптовый язык на основе руби тоже не позволит управлять ивентами также гибко, как на версиях с отвратительной графикой?
P.S. Графика не главное - главное сюжет и польза для мозга.
Жаль что не все это понимают и большинство знакомых поиграли в ЛОД не больше 5 минут...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Да, можно и так сказать, хоть и время хранится только в 4ех состояниях, то есть довольно приближенно, в данном случае.Насколько я понял, в этом примере, объявлена переменная, которая хранит текущее время и, по нему путём сравнения, определяется время суток?
:blush: :laugh: Да, есть такое, ну ничего страшного, главное, что суть понятна!P.S. Девушка за столиком, даже вечером говорит "Добрый день!".
123th да чего это ты со своей анимацией , всё пытаешься ее пристроить :laugh:
НУ, в Городе Знаний фонари маленько светятся, реагируя на ночьчто же касается времени суток - описываемый способ не самый лучший, хотябы потому, что ночью начинают светиться источники света, чего упорно в данном случае не происходит.
Да, ведь наверняка есть способ гораздо лучше этого.вообще было бы неплохо это обсудить и подобрать самый удобный способ осуществления смены времени суток, не обладающий такими недостатками.
Да можно, хоть это и накладно, каждый раз менять спрайт, тем более если учесть, что персонажи могут быть разные. Лучше, я думаю в этом случае с тайлсетами просто полупрозрачные накладывать как бы тени и светлые участки (почти как в демке с пещерой)...Это реализуемо, можно сделать довольно красиво даже. Хоть и повозиться придется.А спрайт игрока нельзя будет тоже притемнить, чтоб не выделялся?
А это вообще отдельная тема для разговора! Еще не изобрели идеального конструктора, к сожалению.беда конструкторов игр этой сери в том, что у тех которые обладают большими встроенными возможностями управления событиями и ресурсами отвратительная графика, а у тех что обладают хорошей графикой сильно урезают возможности управления.
Благодаря этому скриптовому языку возможности более новых мейкеров гораздо шире. Только проблема в том, что далеко не каждый владеет руби и может применить его на практике. То есть возможность-то есть, но применить ее не так уж просто. Хороший движок должен поддерживать такие вещи без программирования.Кстати, а встроенный скриптовый язык на основе руби тоже не позволит управлять ивентами также гибко, как на версиях с отвратительной графикой?
Ну, надеюсь, со временем будет возможность делать игры не только с хорошим сюжетом, но и с хорошей графикой...чтобы всем знакомым понравилось
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Благодаря этому скриптовому языку возможности более новых мейкеров гораздо шире. Только проблема в том, что далеко не каждый владеет руби и может применить его на практике.
Ну, основы есть даже в справке к мейкеру, при желании можно прочесть и попрактиковаться.
Было б время...
А всех желаемых возможностей без скриптинга не предусмотреть.
Да и при очень большом чуде, будет трудно найти нужную в бесконечном их списке.
Кстати, графика довольно неплохая. Ярко, красочно, но не режет глаза.
А в процессе игры совсем перестаешь замечать квадратики.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.


