forum
Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА: Смена дня и ночи

Смена дня и ночи 04.01.2011 19:54 #222

  • AnnTenna
  • AnnTenna аватар
  • Вне сайта
  • Администратор
  • ловлю волны настроения
  • Сообщений: 4129
  • Спасибо получено: 1386
  • Репутация: 323
Скоро выложу сюда открытую демку, где реализована смена дня и ночи также, как в игре. С пояснениями, конечно :)
Последнее редактирование: 03.07.2011 21:19 от AnnTenna.
Администратор запретил публиковать записи.

Re:Смена дня и ночи 09.01.2011 01:53 #316

  • AnnTenna
  • AnnTenna аватар
  • Вне сайта
  • Администратор
  • ловлю волны настроения
  • Сообщений: 4129
  • Спасибо получено: 1386
  • Репутация: 323
Введение.

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

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

Свойства.

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



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

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



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

0 – утро

1 – день

2- вечер

3 - ночь

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

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



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

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

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


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



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

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

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

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



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

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

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

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

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


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

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



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

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

Запуск.

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



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

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

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

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

Re:Смена дня и ночи 09.01.2011 02:03 #318

  • Lekste
  • Lekste аватар
  • Вне сайта
  • Разработчик
  • Мяяяяяяяяяяяяя!
  • Сообщений: 415
  • Спасибо получено: 127
  • Репутация: 82
Спасибо. Очень полезная статья, хоть я и не разрабатываю РПГ (фантазии не хватит, лучше покодить :) ).
Насколько я понял, в этом примере, объявлена переменная, которая хранит текущее время и, по нему путём сравнения, определяется время суток?

P.S. Девушка за столиком, даже вечером говорит "Добрый день!". :)
Не воспринимай воздействие с негативной стороны, и жизнь станет проще... :)
Последнее редактирование: 09.01.2011 02:07 от Lekste.
Администратор запретил публиковать записи.

Re:Смена дня и ночи 09.01.2011 02:14 #320

  • 123th
  • 123th аватар
  • Вне сайта
  • Активный
  • Сообщений: 211
  • Спасибо получено: 6
  • Репутация: 0
ну надо же!!!
там всётаки где то есть миллисекундный таймер!!! значит можно делать анимацию сменой тайлсета с нормальной скоростью! :woohoo:

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

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

Re:Смена дня и ночи 09.01.2011 02:22 #322

  • Lekste
  • Lekste аватар
  • Вне сайта
  • Разработчик
  • Мяяяяяяяяяяяяя!
  • Сообщений: 415
  • Спасибо получено: 127
  • Репутация: 82
А спрайт игрока нельзя будет тоже притемнить, чтоб не выделялся?

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

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

Re:Смена дня и ночи 09.01.2011 02:31 #323

  • AnnTenna
  • AnnTenna аватар
  • Вне сайта
  • Администратор
  • ловлю волны настроения
  • Сообщений: 4129
  • Спасибо получено: 1386
  • Репутация: 323
Lekste, пожалуйста :)
Насколько я понял, в этом примере, объявлена переменная, которая хранит текущее время и, по нему путём сравнения, определяется время суток?
Да, можно и так сказать, хоть и время хранится только в 4ех состояниях, то есть довольно приближенно, в данном случае.
P.S. Девушка за столиком, даже вечером говорит "Добрый день!".
:blush: :laugh: Да, есть такое, ну ничего страшного, главное, что суть понятна!

123th да чего это ты со своей анимацией , всё пытаешься ее пристроить :laugh:
что же касается времени суток - описываемый способ не самый лучший, хотябы потому, что ночью начинают светиться источники света, чего упорно в данном случае не происходит.
НУ, в Городе Знаний фонари маленько светятся, реагируя на ночь :)
вообще было бы неплохо это обсудить и подобрать самый удобный способ осуществления смены времени суток, не обладающий такими недостатками.
Да, ведь наверняка есть способ гораздо лучше этого.
А спрайт игрока нельзя будет тоже притемнить, чтоб не выделялся?
Да можно, хоть это и накладно, каждый раз менять спрайт, тем более если учесть, что персонажи могут быть разные. Лучше, я думаю в этом случае с тайлсетами просто полупрозрачные накладывать как бы тени и светлые участки (почти как в демке с пещерой)...Это реализуемо, можно сделать довольно красиво даже. Хоть и повозиться придется.
беда конструкторов игр этой сери в том, что у тех которые обладают большими встроенными возможностями управления событиями и ресурсами отвратительная графика, а у тех что обладают хорошей графикой сильно урезают возможности управления.
А это вообще отдельная тема для разговора! Еще не изобрели идеального конструктора, к сожалению.
Кстати, а встроенный скриптовый язык на основе руби тоже не позволит управлять ивентами также гибко, как на версиях с отвратительной графикой?
Благодаря этому скриптовому языку возможности более новых мейкеров гораздо шире. Только проблема в том, что далеко не каждый владеет руби и может применить его на практике. То есть возможность-то есть, но применить ее не так уж просто. Хороший движок должен поддерживать такие вещи без программирования.

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

Re:Смена дня и ночи 09.01.2011 23:07 #358

  • Lekste
  • Lekste аватар
  • Вне сайта
  • Разработчик
  • Мяяяяяяяяяяяяя!
  • Сообщений: 415
  • Спасибо получено: 127
  • Репутация: 82
Благодаря этому скриптовому языку возможности более новых мейкеров гораздо шире. Только проблема в том, что далеко не каждый владеет руби и может применить его на практике.

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

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

Кстати, графика довольно неплохая. Ярко, красочно, но не режет глаза.
А в процессе игры совсем перестаешь замечать квадратики.
Не воспринимай воздействие с негативной стороны, и жизнь станет проще... :)
Последнее редактирование: 09.01.2011 23:59 от Lekste.
Администратор запретил публиковать записи.
  • Страница:
  • 1
Время создания страницы: 0.136 секунд
сайт другаСветлая зона и Академия РПГ Мейкераkn4kn5Плагины для RPG MakerДневник одной нэкоknНовая Реальность Топ Разработка игр