forum

Смена дня и ночи

Больше
04 янв 2011 16:54 - 03 июль 2011 18:19 #222 от AnnTenna
AnnTenna создал тему: Смена дня и ночи
Скоро выложу сюда открытую демку, где реализована смена дня и ночи также, как в игре. С пояснениями, конечно :)
Последнее редактирование: 03 июль 2011 18:19 пользователем AnnTenna.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
08 янв 2011 22:53 #316 от AnnTenna
AnnTenna ответил в теме Re:Смена дня и ночи
Введение.

Статья рассчитана на людей, которые уже имеют определенное представление о RPG-Maker 2003. Также она может дать вам общее представление, каким образом делается смена дня и ночи. К статье прилагается демо-версия, в которой реализовано всё, что описано.

Для начала следует заметить, что такая система, как смена дня и ночи может быть в игре сделана совершенно по-разному, на RPG-мейкере существует десятки таких способов. Так что я уточняю, что буду рассказывать про свой способ. Сначала я думала, что эта статья будет посвящена смене дня и ночи именно в моей игре «Легенда о Дряньке». Но в процессе написания, я нашла у себя в скрипте некоторые неоптимальные вещи, так что решила, что буду рассказывать не точь-в-точь, как было сделано в игре, а так, как я считаю, следует сделать лучше всего.

Свойства.

Начну с элементарного вопроса: чем отличается в первую очередь день от ночи? Правильно - освещением! Днем, как правило, у нас светло, вечером начинает темнеть, а ночью совсем темно. Цвет экрана настраивается довольно просто.

[IMG


Еще день и ночь имеют такое свойство, как последовательность. То есть: сначала светает, светло, темнеет, темно, светает, светло, темнеет, темно, светает.. что-то я увлеклась.. короче, и так далее. Для наглядности, условно разделим сутки на 4 части: утро, день, вечер и ночь. В «Дряньке» именно такое разделение. Но, вообще, никто не мешает разделить сутки на 2 части: темно и светло, например, или на 24 части по часам, но не будем усложнять…

Сейчас будет важный момент: для реализации смены ночи была использована всего одна переменная!

[IMG


Назовем ее «смена дня и ночи». Она у нас будет принимать значения:

0 – утро

1 – день

2- вечер

3 - ночь

И, наконец, еще одно немаловажное свойство – это параллельность. День и ночь меняются всегда параллельно с любым происходящим, с течением времени.

Поэтому система смены дня и ночи будет организована у нас как параллельный процесс. Заходим в базу данных игры, открываем вкладку «Общие события».

[IMG


Назовём событие «день и ночь». Вызывается оно параллельно в течении всей игры.

Отсчитываем время.

Как многие уже поняли, мы будем менять время, а когда пройдет нужный промежуток времени – менять время суток. Отсчет времени я делаю с помощью функции «Ждать».
[IMG


По истечении нужного промежутка времени нам необходимо менять нашу переменную, и в результате, как мы потом увидим, освещение будет меняться.

[IMG


Здесь я сначала проверяю, чему равно значение переменной, если оно меньше или равно двум, то у нас - утро, день или вечер, иначе – ночь. В зависимости от этого мы переходим либо дальше по кругу (плюс 1), либо возвращаемся в начало - если у нас сейчас ночь, то нужно перейти на утро. Затем мы должны некоторое время подождать. От того, сколько мы будем ждать единиц, будет зависеть скорость перехода. В данном тестовом варианте я задала значение специально небольшим, всего 50 секунд, чтобы было наглядно видно, как меняется день и ночь.

Таким образом, данная конструкция будет работать в цикле, меняя последовательно значения переменной «0001: Смена дня и ночи»

Делаем нужное освещение.

Но этого нам еще мало для счастья, потому что это не отражается у нас в игре. А для того, чтобы увидеть, как это работает, перейдем на нашу карту, на которой мы желаем это сделать, и там создадим специальный ивент.

[IMG


Этот волшебный ивент будет работать у нас как источник света, я назвала его «текущая освещенность». Мой способ смены дня и ночи предполагает, что на всех картах, на которых происходит смена дня и ночи, должен стоять такой вот подобный ивент из этого семейства. Конечно, ставим его невидимым, под героем, параллельно. Внутри проверяем значения переменной с помощью ветвления. Если у нас значение переменной равно 0, то это утро – ставим освещенность яркую, Иначе - если 1, то день – нейтральная освещенность, Иначе, если 2, то вечер – начинает темнеть, Иначе, если 3, то ночь, ставим, чтобы было темно, как ночью.

Этот способ удобен тем, что на разных картах освещенность в зависимости от смены дня и ночи может быть разная. А неудобен тем, что везде нужно проставлять этот ивент, который задаёт освещенность.

Реакция на время суток.

Теперь займемся жителями деревни, которая расположена на нашей карте. Смена дня и ночи не будет выглядеть такой реалистичной, если населяющие игровой мир существа не будут обращать на это никакого внимания. Так что давайте я покажу, как я делаю разную реакцию на смену дня и ночи.

Рассмотрю самый простейший вариант, девушку, которая круглые сутки находится на одном месте.
[IMG


Как видете, у неё 4 вкладки, на каждой из них написано, чему равно значение переменной смены дня и ночи, и в зависимости от этого она произносит разные фразы. В приложенной демке я добавила еще несколько человек, некоторые из них появляются только в определенное время суток, то есть определенные вкладки у них отсутствуют.

Какая же смена дня и ночи без гостиницы, в которой можно поспать? Вообще то, оно и так уже выглядит более менее похоже, но мы пойдем дальше, и сделаем гостиницу, в которой можно будет отдыхать только ночью, и просыпаться утром.

[IMG


Здесь мы сначала проверяем, равна ли наша переменная трём, то есть, наступила ли ночь. Если ночь наступила, то предлагаем ночлег, иначе предлагаем зайти попозже. В случае с ночлегом мы не забываем переключать переменную на значение 0 – утро. Иначе получится, что мы не спали.

Также в демке я добавила специальный куст, который по команде игрока может изменить время суток.

Запуск.

Теперь мы можем запустить проект и увидеть это всё в действии! Чего-то, сутки меняются слишком быстро, не так ли? Не проблема, сейчас мы это объясним!

[IMG


Вот, теперь порядочек, всё логично, всё работает!

Демка прилагается! Скачать

Если вам нравится - можете не стесняться и брать мои наработки для своих каких-нибудь проектов на RPG-мейкере. Рада, если мой опыт окажется вам полезным.

Напоследок ложка дёгтя: перед тем, как вставлять в игру такую систему как смена дня и ночи, хорошенько подумайте - а надо ли оно? Дело в том, что в определенных случаях эта "фишка" совсем не оправдана и может даже изрядно испортить игру. Не верите? А вот в "Дряньке" были неоднократные случаи, когда люди жаловались на то, что надоело, как везде темно, а ночью магазины закрыты, ничего не купить, а гостиницу не найти... Так что думайте сами, решайте сами. А как это делать, теперь вы знаете!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
08 янв 2011 23:03 - 08 янв 2011 23:07 #318 от Lekste
Lekste ответил в теме Re:Смена дня и ночи
Спасибо. Очень полезная статья, хоть я и не разрабатываю РПГ (фантазии не хватит, лучше покодить :) ).
Насколько я понял, в этом примере, объявлена переменная, которая хранит текущее время и, по нему путём сравнения, определяется время суток?

P.S. Девушка за столиком, даже вечером говорит "Добрый день!". :)

Не воспринимай воздействие с негативной стороны, и жизнь станет проще... :)
Последнее редактирование: 08 янв 2011 23:07 пользователем Lekste.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
08 янв 2011 23:14 #320 от 123th
123th ответил в теме Re:Смена дня и ночи
ну надо же!!!
там всётаки где то есть миллисекундный таймер!!! значит можно делать анимацию сменой тайлсета с нормальной скоростью! :woohoo:

что же касается времени суток - описываемый способ не самый лучший, хотябы потому, что ночью начинают светиться источники света, чего упорно в данном случае не происходит.
есть мысль, что правильнее менять тайлсет, сделав несколько копий и в редакторе притемнив нужные копии на определённый уровень, но места кторые предположительно будут освещены ночным освещением оставить яркими.
у этого способа есть свой недостаток - сам персонаж либо останется тёмным на свету, либо светлым в темноте.

вообще было бы неплохо это обсудить и подобрать самый удобный способ осуществления смены времени суток, не обладающий такими недостатками.
правда опять же другие движки этой серии предлагают более лёгкие решения, поскольку поддерживают прозрачность в тайлах и имеют некоторые другие опции упрощающие задачу.
беда конструкторов игр этой сери в том, что у тех которые обладают большими встроенными возможностями управления событиями и ресурсами отвратительная графика, а у тех что обладают хорошей графикой сильно урезают возможности управления.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
08 янв 2011 23:22 #322 от Lekste
Lekste ответил в теме Re:Смена дня и ночи
А спрайт игрока нельзя будет тоже притемнить, чтоб не выделялся?

Кстати, а встроенный скриптовый язык на основе руби тоже не позволит управлять ивентами также гибко, как на версиях с отвратительной графикой?

P.S. Графика не главное - главное сюжет и польза для мозга.
Жаль что не все это понимают и большинство знакомых поиграли в ЛОД не больше 5 минут... :(

Не воспринимай воздействие с негативной стороны, и жизнь станет проще... :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
08 янв 2011 23:31 - 09 янв 2011 01:37 #323 от AnnTenna
AnnTenna ответил в теме Re:Смена дня и ночи
Lekste, пожалуйста :)

Насколько я понял, в этом примере, объявлена переменная, которая хранит текущее время и, по нему путём сравнения, определяется время суток?

Да, можно и так сказать, хоть и время хранится только в 4ех состояниях, то есть довольно приближенно, в данном случае.

P.S. Девушка за столиком, даже вечером говорит "Добрый день!".

:blush: :laugh: Да, есть такое, ну ничего страшного, главное, что суть понятна!

123th да чего это ты со своей анимацией , всё пытаешься ее пристроить :laugh:

что же касается времени суток - описываемый способ не самый лучший, хотябы потому, что ночью начинают светиться источники света, чего упорно в данном случае не происходит.

НУ, в Городе Знаний фонари маленько светятся, реагируя на ночь :)

вообще было бы неплохо это обсудить и подобрать самый удобный способ осуществления смены времени суток, не обладающий такими недостатками.

Да, ведь наверняка есть способ гораздо лучше этого.

А спрайт игрока нельзя будет тоже притемнить, чтоб не выделялся?

Да можно, хоть это и накладно, каждый раз менять спрайт, тем более если учесть, что персонажи могут быть разные. Лучше, я думаю в этом случае с тайлсетами просто полупрозрачные накладывать как бы тени и светлые участки (почти как в демке с пещерой)...Это реализуемо, можно сделать довольно красиво даже. Хоть и повозиться придется.

беда конструкторов игр этой сери в том, что у тех которые обладают большими встроенными возможностями управления событиями и ресурсами отвратительная графика, а у тех что обладают хорошей графикой сильно урезают возможности управления.

А это вообще отдельная тема для разговора! Еще не изобрели идеального конструктора, к сожалению.

Кстати, а встроенный скриптовый язык на основе руби тоже не позволит управлять ивентами также гибко, как на версиях с отвратительной графикой?

Благодаря этому скриптовому языку возможности более новых мейкеров гораздо шире. Только проблема в том, что далеко не каждый владеет руби и может применить его на практике. То есть возможность-то есть, но применить ее не так уж просто. Хороший движок должен поддерживать такие вещи без программирования.

Ну, надеюсь, со временем будет возможность делать игры не только с хорошим сюжетом, но и с хорошей графикой...чтобы всем знакомым понравилось ^_^
Последнее редактирование: 09 янв 2011 01:37 пользователем AnnTenna. Причина: добавление

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
09 янв 2011 20:07 - 09 янв 2011 20:59 #358 от Lekste
Lekste ответил в теме Re:Смена дня и ночи

Благодаря этому скриптовому языку возможности более новых мейкеров гораздо шире. Только проблема в том, что далеко не каждый владеет руби и может применить его на практике.


Ну, основы есть даже в справке к мейкеру, при желании можно прочесть и попрактиковаться.
Было б время... :)

А всех желаемых возможностей без скриптинга не предусмотреть.
Да и при очень большом чуде, будет трудно найти нужную в бесконечном их списке.

Кстати, графика довольно неплохая. Ярко, красочно, но не режет глаза.
А в процессе игры совсем перестаешь замечать квадратики.

Не воспринимай воздействие с негативной стороны, и жизнь станет проще... :)
Последнее редактирование: 09 янв 2011 20:59 пользователем Lekste.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.069 секунд
Работает на Kunena форум
сайт друга Светлая зона и Академия РПГ Мейкера Коленка Chrono Series iFiction DK Plugins Дневник нэко PDP-11 Новая Реальность Топ Разработки игр