RenPy. Урок 3. Ветвления и переменные

от
GameDev    renpy, визуальные новеллы

Автор: lolbot



Страшная правда: последовательно/параллельно
На самом деле, show/scene только помечает картинку к отображению. События на экране случаются на строчках с with/репликах/паузах. Сравните:
Последовательное применение dissolve:
  1. show dv smile swim far at left with dspr
  2. show us fear dress far at right with dspr

Параллельное применение dissolve:
  1. show dv smile swim far at left
  2. show us fear dress far at right
  3. with dspr




Наводим красоту: порядок спрайтов
show... - если персонажа на экране нет, показать поверх всех, если есть, не менять порядок
show... behind <тэг> - за спиной у кого-то
  1. show dv smile swim close at cright
  2. show un angry pioneer behind dv
show... zorder <число> - чётко задать порядок
  1. show unblink zorder 11
  2. show un shy body zorder 10



Ещё больше ресурсов: play и stop
play sound_loop <звук> - играть зацикленный звук
play sound <звук> - играть звук, не зацикливать
  1. play sound sfx_bed_squeak2
  2. play sound sfx_alisa_falls
  3. play sound_loop sfx_gusty_wind
stop sound_loop - как обычно
stop sound - как правило, не нужно
Список звуков:
  С повторением lesson3_sound_loops.lst
  Без повторения lesson3_sounds.lst



Ветвления и переменные: общая идея
  1. init:
  2.     $ х = 0
  3. label somewhere1:
  4.     ...
  5.     $ х += 1
  6.     ...
  7. label somewhere2:
  8.     if x > 0:
  9.         jump success
  10.     jump failure




Ветвления и переменные: объявление переменных
Хороший тон - объявить переменную в init-блоке.
  1. init [<приоритет>]:
  2.     $ <имя переменной> = <выражение>
  3. init 10:
  4.     $ x = y + z
  5. init:
  6.     $ у = 20
  7.     $ z = 10




Ветвления и переменные: изменение переменных
Пока считаем, что все ваши переменные - числа.
$ <имя переменной> = <выражение>
  1. $ х = 0
  2. $ х = у
  3. $ х = у + 1
  4. $ x = x + 1
  5. $ x = (x + 1) * (x / 2)
  6. $ un_lp += 1
  7. $ money *= 2
  8. $ score = min(intellect, money, strength)




Ветвления и переменные: if-условия
if <условие>:
     <вложенный блок>

1 из 3Презентация
  1. if times_been_to_sl_house == 0:
  2.     "Я впервые оказался у Слави дома."




Python-выражения: смена дня и ночи$ <время>_time() - выбор оформления игры
  1. $ prolog_time()
  2. $ day_time()
  3. $ sunset_time()
  4. $ night_time()
$ persistent.sprite_time - выбор оттенка спрайтов
  1. $ persistent.sprite_time = "day"
  2. $ persistent.sprite_time = "sunset"
  3. $ persistent.sprite_time = "night"




Python-выражения: задержки паузы
$ renpy.pause(<ceк>)
  1. $ renpy.pause(0.2)
  2. $ renpy.pause(1.0)
  3. $ renpy.pause(1.5)
$ renpy.pause(<ceк>, hard=True) - без права пропуска
  1. $ renpy.pause(6.2, hard=True)



Меню выборовОбычное меню:
  1. us "Тебе нравятся гигантские сколопендры?"
  2. menu:
  3.     "Они мне противны!":
  4.         $ us_lp -= 2
  5.         us "Уууу... Ну ладно..."
  6.     "Не уверен":
  7.         us "Ну ладно..."
  8.     "Да, очень!":
  9.         jump bad_end_ololo

Меню выборов с наворотами
  1. menu:
  2.     "Куда бы мне пойти?"
  3.     "В свою палатку":
  4.         jump home_evening
  5.     "На пляж":
  6.         jump beach_evening
  7.     "В гости к Мику" if (know_where_miku_lives > 0):
  8.         jump hentai_evening

Карта лагеря как способ выбора (список зон lesson3_zones.lst):
  1. $ disable_all_zones()
  2. $ set_zone("camp_entrance","bus_event")
  3. $ set_zone("forest","forest_event")
  4. $ show_map()
  5. menu:
  6.     "К воротам лагеря":
  7.         jump bus event
  8.     "В лес":
  9.         jump forestevent

Карта лагеря с возвратом:
  1.     $ disable_all_zones()
  2.     $ set_zone("camp_entrance","bus_event")
  3.     $ set_zone("forest","forest_event")
  4.     jump map_loop
  5.  
  6. label map_loop:
  7.     $ show_map()
  8.  
  9. label bus_event:
  10.     ...
  11.     $ disable_current_zone()
  12.     jump map_loop




Домашнее задание урока 3. Ветвления и переменные
  • +3
  • views 38516