Войти на сайт

Авторизация, ждите ...
×
  • Страница:
  • 1
  • 2
  • 3

ТЕМА: Смена дня и ночи (RPG Maker 2003)

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38195

  • AnnTenna
  • AnnTenna аватар
  • Вне сайта
  • Администратор
  • ловлю волны настроения
  • Сообщений: 4616
  • Спасибо получено: 4779
  • РазработчикПроект месяца 1 место3 место2 место Проект месяца 2 местоПобедитель конкурсаПобедитель Сбитой кодировкиКоммерсантВетеран3 место в Кодировке
Введение.

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

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

Свойства.

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



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

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



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

0 – утро

1 – день

2- вечер

3 - ночь

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

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



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

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

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


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



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

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

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

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



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

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

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

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

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


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

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



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

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

Запуск.

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



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

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

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

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

Последнее редактирование: 9 года 7 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: mephis, Герберт Уэст, 100500, DeadElf79

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38212

  • Герберт Уэст
  • Герберт Уэст аватар
  • Вне сайта
  • Светлый дракон
  • Псевдофилософ
  • Сообщений: 802
  • Спасибо получено: 104
  • Учитель3 место
Превосходный туториал ;)
Однако, если в опции "Цвет экрана" сделать время перехода не 30, а, скажем, 100 десятых секунды, то переход получится более плавным и правдоподобным.
Иначе создаётся впечатление, что не солнышко зашло, а лампочка погасла (слишком резкий переход) :lol:
Естественно, автор об этом знает, это я для других написал, кто, может быть, ещё не догадался (для них же замечу, что этот туториал подходит не только для смены дня и ночи, но и, скажем, для изменения погоды).
Но мне, думаю, равно как и многим другим, мозолит глаза другая неприятность.
Я говорю про резкое исчезновение неписей (NPC).
Сам процесс смены времени суток отлично сбалансирован, на мой взгляд, это оптимальный вариант. Но такая, не побоюсь сказать, телепортация неписей как по мановению волшебной палочки несколько портит всё впечатление.
Я уже сам долго ломаю голову над тем, как заставить неписей идти к определённой точке.
Если нпс стоит весь день на одном месте, а вечером отправляется домой, то никаких проблем не возникает.
Для этого мы просто прописываем ему маршрут до дома.
Но если он весь день напролёт болтается по городу, а потом приходит время возвращаться в хату, то маршрут в данном случае не поможет.
Эх, почему они не сделали кроме команд "Идти к герою" команду "Идти к событию №..." :(
Всё было бы так просто.
Псевдофилософ
Последнее редактирование: 13 года 11 мес. назад от Герберт Уэст.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: AnnTenna

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38214

  • AnnTenna
  • AnnTenna аватар
  • Вне сайта
  • Администратор
  • ловлю волны настроения
  • Сообщений: 4616
  • Спасибо получено: 4779
  • РазработчикПроект месяца 1 место3 место2 место Проект месяца 2 местоПобедитель конкурсаПобедитель Сбитой кодировкиКоммерсантВетеран3 место в Кодировке
Спасибо!
Ты прямо сказал то, о чем я забыла добавить, а потом уже только вспомнила!
Но такая, не побоюсь сказать, телепортация неписей как по мановению волшебной палочки несколько портит всё впечатление.
Мда, имеет место быть такой недостаток..ну что ж поделаешь. Я вот пока и не знаю, как сделать по-другому, чтобы плавненько было...:)

Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38215

  • mephis
  • mephis аватар
  • Вне сайта
  • Светлый дракон
  • Коллекционер
  • Сообщений: 727
  • Спасибо получено: 124
  • ПереводчикУчитель
Да, статья хорошая! Молодец, АннТенна!

Насчёт плавненько. Был бы это XP/VX — можно было б, скажем, вечером, заставлять NPC бежать домой, а как добегут — переключать у них личные свитчи, а утром обратно возвращать. Вообще, со скриптом дискретного времени можно было б целые расписания задвигать. Но вот с 2000/2003-м... Куча свитчей понадобится.

Надо ещё подумать, может другие варианты есть...

edit: Кстати, ссылка на демку почему-то не работает.
→ → ↓ ↑ Y
Последнее редактирование: 13 года 11 мес. назад от mephis.
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38219

  • AnnTenna
  • AnnTenna аватар
  • Вне сайта
  • Администратор
  • ловлю волны настроения
  • Сообщений: 4616
  • Спасибо получено: 4779
  • РазработчикПроект месяца 1 место3 место2 место Проект месяца 2 местоПобедитель конкурсаПобедитель Сбитой кодировкиКоммерсантВетеран3 место в Кодировке
mephis, странно, только вчера проверяла, ссылка рабочая была. Вообще, демка лежит в нашем файлоархиве, просто я прямую брала оттуда, наверно, это нельзя так было делать - но вчера работала отменно. :whistle:

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

Последнее редактирование: 13 года 11 мес. назад от AnnTenna. Причина: ага
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38225

  • Герберт Уэст
  • Герберт Уэст аватар
  • Вне сайта
  • Светлый дракон
  • Псевдофилософ
  • Сообщений: 802
  • Спасибо получено: 104
  • Учитель3 место
Второй способ неплохой...однако это ппц...
Придётся каждому прописывать маршрут до дома, так ещё и не в одном экземпляре.
Хотя...если попробовать совместить все способы, то может быть это и облегчит задачу.
Псевдофилософ
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38227

  • Злодей
  • Злодей аватар
  • Вне сайта
  • Архитектор Миров
  • Настоящее звание: Прокуратор! Просто опечатка!
  • Сообщений: 1876
  • Спасибо получено: 78
кстати! дрянька - это хороший пример того, как смену дня и ночи делать НЕ СЛЕДУЕТ.
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38229

  • Герберт Уэст
  • Герберт Уэст аватар
  • Вне сайта
  • Светлый дракон
  • Псевдофилософ
  • Сообщений: 802
  • Спасибо получено: 104
  • Учитель3 место
А в чём заключаются основные неудобства?
В общем, система нормальная, немного подкорректировать и всё становится просто замечательно...если не считать пропадающих неписей, но о них разговор отдельный.
Псевдофилософ
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38237

  • Злодей
  • Злодей аватар
  • Вне сайта
  • Архитектор Миров
  • Настоящее звание: Прокуратор! Просто опечатка!
  • Сообщений: 1876
  • Спасибо получено: 78
Вот именно. Недостаток в призрачных неписях, и местах куда нельзя попасть днём, или ночью.
При таком готическом раскладе, надо сделать возможность спать, как в готике: до полудня, до утра, до полуночи.
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38239

  • Герберт Уэст
  • Герберт Уэст аватар
  • Вне сайта
  • Светлый дракон
  • Псевдофилософ
  • Сообщений: 802
  • Спасибо получено: 104
  • Учитель3 место
Злодей пишет:
При таком готическом раскладе, надо сделать возможность спать, как в готике: до полудня, до утра, до полуночи.
Вот именно!!! Тем более, что это совсем несложно сделать. А то, что магазины ночью не работают,так это тоже не беда, на то есть фантазия и смекалка автора.
Магазины закрываются, а в подворотне появляется барыга и продаёт всё, что тебе нужно. Просто и практично.
Псевдофилософ
Последнее редактирование: 13 года 11 мес. назад от Герберт Уэст.
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38244

  • Злодей
  • Злодей аватар
  • Вне сайта
  • Архитектор Миров
  • Настоящее звание: Прокуратор! Просто опечатка!
  • Сообщений: 1876
  • Спасибо получено: 78
А обход препятствий?
Проще уж пускай нпц исчезают при выходе из локации. Во время перемещения между картами.
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38260

  • mephis
  • mephis аватар
  • Вне сайта
  • Светлый дракон
  • Коллекционер
  • Сообщений: 727
  • Спасибо получено: 124
  • ПереводчикУчитель
Ну-ка давай не темни, 123-ий. Делись лёгким рецептом, если знаешь.

Задача следующая: некоторый NPC стоит в некотором месте, заранее неизвестном, т.е. обычный рандомно бродячий. Требуется в определённый момент времени заставить его прибежать в заранее ИЗВЕСТНУЮ точку, скажем, его дом. На пути у него могут быть как статичные препятствия в виде окружения, так и динамические, в виде идущей толпы и/или самого ГГ. Найденный путь необязательно должен быть оптимальным, но всегда конечным, т.е. он не должен где-то подвиснуть не зная как пройти.

Целевой мэйкер: 2000/2003, т.к. для XP/VX решение мне известно.
→ → ↓ ↑ Y
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38263

  • mephis
  • mephis аватар
  • Вне сайта
  • Светлый дракон
  • Коллекционер
  • Сообщений: 727
  • Спасибо получено: 124
  • ПереводчикУчитель
Подскажи, используя какие условия NPC сможет вылезти отсюда:
% - Препятствие
@ - NPC
^ - дом NPC, куда он должен попасть
 
........
....%...
....%.@.
.^..%%%%
........
всётаки зная пару особенностей рм2к3, замечу, что было бы логично выбрать правильный уровень для этого объекта - скажем ниже игрока, а все остальные объекты, которые так или иначе могут помешать движению расположить на уровне игрока или выше.
Это он типа куриц и кошек будет, которые под ногами у ГГ могут ходить? Не, так не пойдёт. Ну накрайняк в маршруте можно включить полную проходимость ивенту, но результат тоже будет некошерный — с бегущим сквозь стены NPC.


edit: Тьху, долбанная подсветка синтаксиса! Ну почему нельзя моноширинный шрифт в неё поставить?
→ → ↓ ↑ Y
Последнее редактирование: 13 года 11 мес. назад от mephis. Причина: заменил символы
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38265

  • James
  • James аватар
  • Вне сайта
  • Архитектор Миров
  • Ленивый мечтатель
  • Сообщений: 1167
  • Спасибо получено: 159
  • Писатель 2 местоОрганизатор конкурсов3 местоПобедитель конкурса2 место РазработчикПисатель
Статья хорошая, многим может пригодиться.
Только вот её бы в Энциклопедию - зря она что ли создана была?

На форуме её легко потеряют, в энциклопедии - куда позже.
Аннтенна, перенесёшь? Или мне перенести?
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38266

  • mephis
  • mephis аватар
  • Вне сайта
  • Светлый дракон
  • Коллекционер
  • Сообщений: 727
  • Спасибо получено: 124
  • ПереводчикУчитель
123th, ты пьяный что ли? Если ты выпил — на форум не пиши.
но кто то не тем местом читал видимо или даже не старался применить прочитанное к мозгу...
Это ты самокритично.
если ты не в состоянии сам код написать то я за тебя его писать не буду.
Нафиг мне твой код сдался :laugh: Простыми словами опиши — "если, то" — т.е. твой текст меня вполне устраивает.

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

Если в моём примере сверху NPC поставить одно препятствие, он по твоему алгоритму никогда не выйдет.
идти вверх, пока значение у больше 0 и х больше 3
если у = 0 идти влево пока х больше 3
если х =< 3 идти вниз пока у меньше 4
если у=4 и 1<х=<3 идти влево
если у=4 и х=1 идти вверх
если у=3 и х=1 исчезнуть в двери.
% - Препятствие
@ - NPC
^ - дом NPC, куда он должен попасть
 
........
....%.%.
....%.@.
.^..%%%%
........


Так скажи — "сморозил херню, как сделать не знаю".
→ → ↓ ↑ Y
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38267

  • Герберт Уэст
  • Герберт Уэст аватар
  • Вне сайта
  • Светлый дракон
  • Псевдофилософ
  • Сообщений: 802
  • Спасибо получено: 104
  • Учитель3 место
Я вообще немного в этом разбираюсь, так что извините, что лезу, но...
в инструменте "двигать событие" можно поставить условие "игнорировать препятствие", при этом обычно нпс начинает обходить все препятсятвия, которые ему встречаются. Если его поставить, то, быть может, вышеизложенный алгоритм сработает.
Псевдофилософ
Последнее редактирование: 13 года 11 мес. назад от Герберт Уэст.
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38268

  • mephis
  • mephis аватар
  • Вне сайта
  • Светлый дракон
  • Коллекционер
  • Сообщений: 727
  • Спасибо получено: 124
  • ПереводчикУчитель
Герберт, ты про эту галку?

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

У Злодея, например, с этим был связан жесточайший баг в его ООР3 с полным зависанием игры.

Здесь эта фишка не сработает, потому что она только для маршрута, а у нас тут условия в основном, а команда "Двигать событие" выполняется только для одного шага (в выбранном направлении). Следовательно, что будет ивент ждать, что не будет — стена с места не сойдёт.

Или сработает, но нужно какое-то другое её применение... :dry:
→ → ↓ ↑ Y
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38269

  • mephis
  • mephis аватар
  • Вне сайта
  • Светлый дракон
  • Коллекционер
  • Сообщений: 727
  • Спасибо получено: 124
  • ПереводчикУчитель
Ну почему долбанный Входомозг сделал команду "Шагнуть к Игроку", но не сделал "Шагнуть к Ивенту"??? Ух, гады.
→ → ↓ ↑ Y
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Злодей

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38271

  • Герберт Уэст
  • Герберт Уэст аватар
  • Вне сайта
  • Светлый дракон
  • Псевдофилософ
  • Сообщений: 802
  • Спасибо получено: 104
  • Учитель3 место
Да, это бы решило много проблем.
Эй, Cherryyy? Куда он пропал? Надо ему намекнуть, чтобы занялся этой проблемкой.
ЗЫ. Кстати, ты личку смотрел? Я тебе там кое-что скинул.
Псевдофилософ
Последнее редактирование: 13 года 11 мес. назад от Герберт Уэст.
Администратор запретил публиковать записи гостям.

Смена дня и ночи (RPG Maker 2003) 13 года 11 мес. назад #38279

  • Герберт Уэст
  • Герберт Уэст аватар
  • Вне сайта
  • Светлый дракон
  • Псевдофилософ
  • Сообщений: 802
  • Спасибо получено: 104
  • Учитель3 место
Вот носа попрошу не касаться :angry:
Теоретически я понял, что ты имеешь в виду. Идея, признаться, впечатлила, если не вдаваться в подробности.
Но, вот, практически я себе пока что плохо представляю, как это сделать, но это, опять же, по причине своей собственной неопытности в подобных вопросах, я этого не отрицаю.
Псевдофилософ
Последнее редактирование: 13 года 11 мес. назад от Герберт Уэст.
Администратор запретил публиковать записи гостям.
  • Страница:
  • 1
  • 2
  • 3
Время создания страницы: 0.261 секунд