[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] - [Архив - Каталог - К доске] [Главная]

[Назад]
Ответ
Файл: 1384980891007.png -(247 KB, 960x720, lesson1_slide00.PNG)
247 No.37014  

Объявляю этот тред территорией кружка кибернетики.

>> No.37015  
Файл: 1384981321522.png -(454 KB, 960x720, lesson1_slide01.PNG)
454

Идея подобного курса зрела уже давно, но как-то не было уверенности, что это кому-то надо. Сейчас же встретилась куча факторов, начиная с осенней хандры по нереализованным педагогическим амбициям (не преподаю уже года 4), заканчивая раздражением от безграмотных заявлений про скрипт Ычан Эроге в соответствующих тредах.

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

>> No.37016  
Файл: 1384981414018.png -(427 KB, 960x720, lesson1_slide02.PNG)
427

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

Скорее всего подойдёт вообще любая программа, за исключением notepad.exe

>> No.37017  
Файл: 1384981545972.png -(400 KB, 960x720, lesson1_slide03.PNG)
400

Вот так выглядит сообщение со сломанной кодировкой. :3

>> No.37018  
Файл: 1384981658385.png -(463 KB, 960x720, lesson1_slide04.PNG)
463

Подробнее про переводы строк читайте тут: http://en.wikipedia.org/wiki/Newline

Поддержка обоих вариантов нужна чтобы не было проблем при коллективном редактировании файлов с github.

>> No.37019  
Файл: 1384981781832.png -(445 KB, 960x720, lesson1_slide05.PNG)
445

Киллер-фича Рен-пи и его главная уязвимость в том, что он подхватывает всё подряд в папке game. Мы этим воспользуемся для того, чтобы обучиться работе с движком, просто подкладывая файлы.

>> No.37020  
Файл: 1384981905025.png -(445 KB, 960x720, lesson1_slide06.PNG)
445

Команды можно разделить на однострочники и блоки. Блоки заканчиваются на двоеточие, вложенные в блок команды имеют отступ на 4 пробела больше.

>> No.37021  
Файл: 1384982049698.png -(483 KB, 960x720, lesson1_slide07.PNG)
483

Label - как раз такой вот блок. В случае с Ычан Эроге, управление передаётся сначала на метку start, затем на prologue, затем на opening, затем на day1 и так далее.

Прервать цепочку можно командой return.

>> No.37022  
Файл: 1384982134884.png -(443 KB, 960x720, lesson1_slide08.PNG)
443

Основная масса кода - описания и реплики. Встроенного контроля длины нет, если текст не помещается в рамочку, это выглядит криво.

Мораль: следите за длиной и проверяйте экспериментально.

>> No.37023  
Файл: 1384982374372.png -(470 KB, 960x720, lesson1_slide09.PNG)
470

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

Мнемоника: **UN**yl-tan, **DV**ache-tan, **US**sr-tan, **SL**avya, **MI**ku, **UV**ao-tan, **EL**ektronik, **SH**urik, **M**i**Z**u, **M**od-**T**an, **C**ollider-**S**ama, **PI**oneer.

>> No.37024  
Файл: 1384982496823.jpg -(95 KB, 640x426, frog buddha.jpg)
95

Хорошо, что некоторые эрогеи - кавайные няши.
Держи лягушку!

>> No.37026  
Файл: 1384982808047.png -(449 KB, 960x720, lesson1_slide10.PNG)
449

Про то, как можно показывать графику - в следующем уроке. В этом уроке - про то, что можно показывать, в частности про спрайты и фоны.

В игре объявлено 123 фона, которые можно показать командой scene bg. Почти все они начинаются либо с ext_, либо с int_, а заканчиваются либо _day, либо _night, либо _sunset.

>> No.37028  
Файл: 1384983213085.png -(455 KB, 960x720, lesson1_slide11.PNG)
455

В игре 384 различных спрайта. Большая часть команд показа спрайтов имеет формат:

show <персонаж> <выражение лица> <одежда>

Некоторые исключения:

  • безликий пионер не имеет ни лица, ни сменной одежды, он показывается просто:
    show pi
  • у Мод-тян между выражением лица и одеждой может опционально вклиниваться шляпа:
    show mt sad dress
    show mt sad panama dress
  • у Юли нет вариантов одежды (wtf?)
    show uv dontlike
>> No.37029  
Файл: 1384983333486.png -(419 KB, 960x720, lesson1_slide12.PNG)
419

Показанный спрайт висит до тех пор, пока не произойдёт одно из трёх:

  • show сменит персонажу эмоцию и/или одежду
  • hide скроет персонажа
  • scene скроет всех персонажей (она это делает)
>> No.37030  
Файл: 1384983455190.png -(428 KB, 960x720, lesson1_slide13.PNG)
428

Команда вывода музыки вообще говоря не обязана содержать кваратных скобок и ковычек. Но раз уж в коде everlasting_summer-1.0-all сделано так, будем придерживаться такого же синтаксиса.

>> No.37031  
Файл: 1384983645410.png -(438 KB, 960x720, lesson1_slide14.PNG)
438

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

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

>> No.37032  
Файл: 1384983815768.png -(436 KB, 960x720, lesson1_slide15.PNG)
436

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

>> No.37033  
Файл: 1384983903181.png -(489 KB, 960x720, lesson1_slide16.PNG)
489

Если RenPy после ваших изменений не загрузился или свалился посреди игры, не надо паниковать. Он сам, английским по белому говорит, в чём ваша проблема.

Наиболее типовые ошибки приведены на этом слайде.

>> No.37034  
Файл: 1384984019619.png -(253 KB, 960x720, lesson1_slide17.PNG)
253

Пришло время закрепить полученные знания на практике.

>> No.37035  
Файл: 1384984241826.png -(444 KB, 960x720, lesson1_slide18.PNG)
444

http://cf.ichan.ru/lections/lesson1.zip - в этом архиве все материалы данной лекции:

  • слайды
  • список фонов
  • список спрайтов
  • список музыкъ
  • debug.rpy, упомянутый на этом слайде
  • файлы, необходимые для выполнения следующих упражнений
>> No.37036  
Файл: 1384984348984.png -(449 KB, 960x720, lesson1_slide19.PNG)
449

Это задание призвана объяснить, насколько плоха идея не писать сценарий сразу в rpy-формате.

>> No.37037  
Файл: 1384984467071.png -(460 KB, 960x720, lesson1_slide20.PNG)
460

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

>> No.37038  
Файл: 1384984651103.png -(457 KB, 960x720, lesson1_slide21.PNG)
457

Последнее задание - творческое. Ради него всё и затевалось.

Домашнюю работу публикуйте прямо в треде.

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

>> No.37039  

wai-wai-wai
А можно простой пример и вязанка для некодеров?

>> No.37040  

>>37039 No.

>> No.37041  

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

>> No.37042  
Файл: 1384988684999.png -(413 KB, 800x820, 0d3f23a876a8626fbdc02b5b14064ab5.png)
413

Вот этот вот эрогей кавайный, а Риточка некавайный!

>> No.37043  
Файл: 1384988884012.jpg -(35 KB, 640x480, .jpg)
35

>>37039 Теперь покажите мне сложный пример, и пример кодинга ITT.

>> No.37045  
Файл: 1385015248971.jpg -(254 KB, 583x827, cce119e53c105cd45759fc6391ad33b7-d34fsgy.jpg)
254

>>37041
Маладца, хорошо зделал.

>> No.37046  

>>37014
3 дня ждал этот тред

>> No.37049  

>>37038
Ты только не останавливайся, няша.
Я в Лето ещё не играл, потому спойлерить себе ничего не буду. Делал наугад.
label lesson1_task1:

 scene bg ext_square_sunset
play music music_list["eternal_longing"]
"Поужинав до отвала, я пошёл в свой домик, поспать.
th"Я вообще люблю спать после еды."
th"И есть после сна."
"Хороший вечер сегодня: прохладный ветерок несёт по небу редкие облачка, стрёкот кузнечиков успокаивает и расслабляет."
show dv normal pioneer
#"(появляется Алиса, взгляд нейтральный)"
play music music_list["awakening_power"]
#"(музыка напряжённая)"
dv"Эй, Семён."
me"А?"
show dv angry pioneer
#"(взгляд Алисы недобрый)"
dv"С тебя должок, ты ведь не забыл?"
"Руки похолодели, в висках начало бешено стучать."
th"Что ещё за должок?!"
me"Д.. Должок? Помню-помню, как же."
th"Ааааа, что я делаю, ничерта ведь не помню"
return
>> No.37050  

>>37038
label lesson1_task2:

play music music_list["promise_from_distant_days"]
sceen bg black
"Мне снова снился этот сон..."
scene bg int_house_of_mt_day
voice "Семен... Семен!"
"Маша рукой, я перевернулся на другой бок."
sceen bg black
voice "Ну Семееееен! Ну вставаааай"
"Не хотя я всё-таки открыл глаза."
scene bg int_house_of_mt_day
show us normal dress
"Передо мной стояла Ульяна"
me"Д.. Доброе утро. Чего тебе?"
return
>> No.37051  

>>37038
label lesson1_task3:

 scene bg int_house_of_mt_day
"Щель в потоке казалась мне незнакомой."
th" Незнакомая щель..."
"Интересно, что там за ней?"
"Может быть, портал в другой мир? Например..."
"...населённый отважными семиугольными покорителями вселенной."
us" Семён. Эй, Семён. Ты там?"
"От мыслей о щели в потолке меня оторвал девчачий голос за окном."
"И чего ещё им надо? Опять какие-нибудь глупые розыгрыши затеяли."
"Я привстал на кровати и как можно громче ответил:"
me" Там я, там. Чего надо!?"
us" О, здорово!"
"На крыльце послышался топот ног, и в домик вбежала Ульянка, захватив с собой запах парящей на солнце травы смешанный с пылью."
show us smile sport
"Половицы заскрипели от её энергичных движений. Мне её поведение показалось странным."
us" Опять разлёживаешься на своей глупой кровати?"
me" Что? Как кровать может быть глупой?"
"Я попытался вставить резонное замечание, но Ульянка меня не слушала."
"Она схватила меня за руку и потянула за собой."
us" Пошли, я тебе такое покажу!"
"Она вытянула меня за собой на улицу."
scene bg ext_playground_day
show us smile sport
"После полутьмы домика, солнце почти ослепило меня, и я чуть было не слетел со ступенек."
me" Не так быстро!"
"Ульянка остановилась и дала мне придти в себя."
"Затем она зашагала по тропинке, увлекая меня за собой."
"Со спортплощадки слышался гам играющих в волейбол."
us" Ты целыми днями торчишь в своём домике. Тебе не скучно?"
me" Нет."
us" А я не верю!"
me" Как хочешь. Что ты хотела мне показать?"
us" Увидишь!"
"Я вздохнул. Солнце объявило мне войну и пыталось испечь меня ещё до обеда."
me"А ты постоянно носишься по улице. Ты не устаёшь?"
us" Не-а!"
me" А я не верю."
"Попытка вернуть её вопрос отправителю не привела ни к чему."
show us dontlike sport
us" Ну и дурак."
"Она показушно надулась. Я чуть не рассмеялся, глядя на её неуклюжие попытки выглядеть обиженной."
scene bg ext_house_of_un_day
"Дорожка привела нас к домикам где жили девчонки."
me" Надеюсь, это не какой-нибудь глупый розыгрыш?"
"Я остановился перед дверью в нерешительности."
us" Заходи!"
"Ульянка толкнула меня вперёд, и я пролетел сквозь дверь, с грохотом распахнув её."
scene bg int_house_of_un_day
"..."
show un shocked body at left
show dv angry body at right
"Уши мои залил девчачий визг."
"Глаза, хоть и ослеплённые солнцем, успели ухватить белёсые контуры тел девушек, переодевавшихся внутри."
"Против моего желания они пожирали все запретные кусочки их обнажённой кожи, скача от грудей до заветного треугольника между ног."
"Почему-то в мозгу крутилась идиотская мысль о том, что у них разное количество волос на лобке."
"Я попятился, наткнулся на порог, и споткнулся, растянувшись на пороге."
hide un with dissolve
hide dv with dissolve
"Надо мной, в торжествующей позе возвышалась Ульянка."
show us laugh2 sport
us" Так то!"
"Она радостно подпрыгнула на месте."
us" Это вам за то, что не взяли меня на пляж!"
"Девчонки тем временем уже спрятались за мебель и куски одежды."
"Они смотрели на меня взглядами, сочетающими страх и презрение. Только Ульянка была довольна."
"Я почувствовал себя униженным."
hide us
scene bg ext_house_of_un_day
"Кое как поднявшись на ноги, я развернулся и вышел на улицу. Солнце меня ненавидело."
us" Эй, погоди!"
me" Чего тебе ещё!"
"Я старался сдержать подкатывающий к горлу комок обиды, но голос меня не слушался."
us" Ну извини!"
us" Извини, слышишь!?"
us" Я думала, раз ты парень, тебе должно было это понравиться."
me" Теперь они меня ненавидят!"
"Мой голос треснул, и я замолчал."
show us upset sport
"Ульянка появилась передо мной."
us" Ну, хочешь, заходи ко мне сегодня вечером."
"Я воззрился на неё с непониманием."
us" Я не буду тебя ненавидеть. Обещаю."
"Я кивнул, не в силах вымолвить ни слова."
show us smile sport
us" Вобщем, теперь ты знаешь, где я живу! А теперь мне надо ещё разобраться с этими врединами!"
"Она убежала."
hide us
"Ветер лизнул меня по щеке - там, где скатилась слеза, и на секунду я почувствовал прохладу."
return

с:dead - это она к чему?

>> No.37052  

>>37049 Если не хочешь себе спойлерить, то можешь его установить и тут же удалить папку /game/scenario/. Будет вылетать на кнопке "начать игру", но можно будет тестировать домашнее задание.

Иначе это напоминает уроки программирования с компьютером из фанеры и богатой фантазией.

В задании 2 ( >>37050 ) пока что есть ошибки. И да, на будущее: лучше хотя бы дублировать текст архивом, чтобы разметка не испортила форматирования.

>> No.37053  

Почему-то body работает только с унылкой, остальные не показываются голыми. Что я делаю не так?

>> No.37054  

Возможно, на слайдах плохо видно, но реплики работают так:

me "Привет, пионерлагерь!"

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

Чтобы быстро выправить твои задания >>37051>>37050>>37049, рекомендую воспользоваться глобальной заменой по всему файлу.

>> No.37055  

>>37052
Нет, не напоминает. Я не к тому, что я пишу в блокноте. Я пишу в ренпае. Я не хочу перерывать все паки спрайтов и бэков в поисках подходящей к сцене картинки и прослушивать музыку, и всё это делать в отрыве от геймплея ещё не заценённой игры.
Проблема стоит с отловом багов, т.к. для запуска скрипта нужно иметь хотя бы заглушки для отсутствующих музык и ЦГ - а их делать в лом.
>>37050
Скажи хоть сколько осталось ошибок, побудь компилятором на секунду, плиз.

>scene
>> No.37056  

>>37054
РенПаю (моей версии) на это глубоко положить.

>> No.37058  
Файл: 1385034601466.jpg -(8 KB, 240x180, .jpg)
8

>>37055

> Я не к тому, что я пишу в блокноте.

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

>> No.37059  

>>37058
Ладно, уговорил. Пойду, наклепаю заглушек.

>> No.37060  

>>37058
Я открывал виндовским код БЛ, он превращает его в месиво в одну строчку.

>> No.37061  

>>37059
Прогнал через компилятор.
Спрятать "с" в vioce случайно не получится даже у самого бухого кодера.
и в >>37049 нет закрывающей кавычки.
c:go

>> No.37062  

>>37059 Используй эроге в качестве заглушки же. Решение из >>37052 - самое простое и действенное.

>> No.37063  

>>37060 Ровно об этом сказано в >>37018.

>> No.37065  

label lesson1_task1:

play music music_list["my_daily_life"]
scene bg ext_square_night
"Поужинав до отвала, я пошёл в свой домик, поспать."
th "Я вообще люблю спать после еды."
th "И есть после сна."
"Хороший вечер сегодня: прохладный ветерок несёт по небу редкие облачка, стрёкот кузнечиков
успокаивает и расслабляет."
show dv normal pioneer
play music music_list["drown"]
dv "Эй, Семён."
me "А?"
show dv angry pioneer
dv "С тебя должок, ты ведь не забыл?"
"Руки похолодели, в висках начало бешено стучать."
th "Что ещё за должок?!"
me "Д.. Должок? Помню-помню, как же."
th "Ааааа, что я делаю, ничерта ведь не помню"

return
>> No.37067  

>>37066
Как минимум две ошибки.
А вообще, я бы ещё и текст правил.

>> No.37068  

label lesson1_task3:

play music music_list["always_ready"]
scene bg int_dining_hall_sunset
th "Мне всегда нравились девушки старше меня."
th "Моя первая любовь - учительница младших классов."
th "Она была такая строгая, и это меня очень возбуждало."
th "Интересно, сколько лет этой пионервожатой?"
"И тогда я решил познакомиться с ней поближе."

scene bg int_house_of_mt_sunset
scene bg ext_house_of_mt_sunset
"Постояв несколько секунд в нерешительности, я постучался."
voice "Заходи."
"Медленно открыв дверь, я увидел Ольгу Дмитриевну, но..."
scene bg int_house_of_mt_sunset
show mt normal swim
mt "Славя, подожди, я переоденусь."
show mt surprise swim
mt "Сла... Семён?!"
show mt rage swim
mt "Ах ты гадёныш!"
me "Но вы же сказали, что можно зайти!"
mt "Ой! Извини!"
show mt smile swim
mt "Я Славю ждала, но раз уж пришёл, рассказывай."
me "Я хотел спросить..."
"Я не смог закончить фразу:"
"Из моей головы вылетело всё, что я хотел сказать"
"И я не мог оторвать взгляд от этих сисек"
"Сиськи!"
"Вот это сиськи!"
show mt angry swim
mt "Куда это ты уставился?"
me "Я это..."
me "Вам так идёт этот купальник!"
show mt surprise swim
mt "Ой!"
show mt smile swim
mt "Таак, подлизываешься?"
mt "Значит, просить чего-то пришёл?"
"Весь мой план знакомства пошёл лисе под хвост"
th "Скажу как есть"
me "Если честно, я с вами поближе познакомиться хотел."
show mt surprise swim
"Немного смутившись, я опустил голову."
"И увидел лежащие на кровати Стринги!"
play music music_list["went_fishing_caught_a_girl"]
"Удивлённо подняв взгляд, я увидел сердитое лицо Ольги Дмитриевны."
"Она схватила стринги и убрала руку за спину"
show mt angry swim
mt "Ты ничего не видел! Понял?!"
mt "Только посмей кому-то рассказать!"
th "Хороший сегодня день!"
return
>> No.37071  

label lesson1_task2:

play music music_list["a_promise_from_distant_days"]
scene black
"Мне снова снился этот сон..."
scene bg int_house_of_mt_day
voice "Семен... Семен!"
"Отмахнувшись рукой, я перевернулся на другой бок."
scene black
voice "Ну Семееееееен! Ну вставаааай"
th "Нехотя я всё-таки открыл глаза."
scene bg int_house_of_mt_day
show us normal dress
"Передо мной стояла Ульяна"
me "Д.. Доброе утро. Чего тебе?"
return
>> No.37072  

>>37038
Эх, хотел сделать своё рен-пи, с спрайтами и музыкой, да не судьба, скилл не тот. Придется переделывать сценарий эроге, там все уже готово.

>> No.37073  

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

>> No.37074  

>>37073
Я имею в виду, написать эти упражнения и запустить их вместо сценария эроге.

>> No.37076  

>>37074
Не получается, лол. Там все скомпилировано так, что можно и делов наделать, если что-то свое подставлять.

>> No.37077  

http://pastebin.com/kt6475t7
http://pastebin.com/c6Y4z9DW

>> No.37078  

>>37071
Не хватает буквы "ё". Возьми у Лолбота, в >>37036 их с избытком.
Всё верно, продолжай в том же духе.

>> No.37079  

>>37077
http://pastebin.com/0QVZJhga

>> No.37083  
Файл: 1385068726348.jpg -(9 KB, 256x192, .jpg)
9

>>37060

> он превращает его в месиво в одну строчку

О чём и речь. Работать с кодом без переносов строк, в принципе, можно (но в данном случае не поручусь), но работать так с большими кусками кода неудобно.
А у меня вот бида. Хочется, интереса ради, присоединиться, и посмотреть, что из меня в этом плане получится. Но, с системой что-то не так, не могу скопировать нужные файлы в нужное место. Придётся попробовать как раз:
>>37052

> уроки программирования с компьютером из фанеры и богатой фантазией

Благо у меня уже был такой опыт, положительный.

>> No.37084  

>>37083

>Но, с системой что-то не так, не могу скопировать нужные файлы в нужное место.

А в чём это проявляется? Может папка read-only?

>> No.37085  

>>37084 Нет, не read-only. Выдаёт ошибку при попытке сохранения: "не удалось сохранить файл ... часть данных потеряны ... попробуйте сохранить файл в другое место". Винчестер старый, и я лентяй. Вообще, это довольно редкий случай, обычно всё нормально проходит. И задания я скачал. Но теперь при этой ошибке ещё и система виснет намертво.

>> No.37087  

>>37053

>Почему-то body работает только с унылкой, остальные не показываются голыми. Что я делаю не так?

Оказалось, что в коде everlasting_summer-1.0-all прописаны только body-спрайты Лены и Алисы. Исправил эту досадную проблему.
Положи куда-нибудь в папку с игрой (да хоть в тот же /game/debug/) вот этот файл: http://rghost.ru/50342827

Теперь станут доступны body-спрайты для шести персонажей: dv, mi, mt, sl, un, us.
Для остальных тело либо не нарисовано вообще никак (cs, sh), либо недопокрашено, по крайней мере в этой сборке (el, mz, uv).

>> No.37089  

>>37087
Это начинает попахивать модостроем...

>> No.37090  

>>37089
Эроге такое эрогешное, что моды к эроге выйдут раньше, чем само эроге.

>> No.37091  

>>37090
Но ведь модов тоже ждать осталось недолго, не?

>> No.37092  

>>37090

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

Пилите, Шура, пилите.

>> No.37093  

>>37092

>не надо с нуля делать овердохрена фонов, спрайтов, цг, звука и музыки

Ну, знаешь, моды они разные бывают.
Конечно, "золотой калаш от ВАСЯНА 2002" не требует серьёзной переделки, но качественные моды - те, что достойны упоминания, могут иметь количество контента, сравнимое с оригинальной игрой.

>> No.37095  

>>37093

Такие моды вряд ли выйдут раньше. Здесь две недели только скоординироваться пытались, а ведь надо ещё рисовать.

>> No.37096  

Всем доброе утро и извините за опоздание!
http://rghost.ru/50344833

>> No.37098  

>>37096 Но где же комната?

>> No.37100  

>>37092

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

Это как подойти. Для третьего задания я бы ввёл нового персонажа. Это же филлер, да и характеры существующих я знаю не слишком хорошо, и всех рутов не видел.
А вообще, у меня небольшая проблема — не могу придумать повод пригласить Семёна именно посмотреть комнату. Или там можно и о какой-то помощи попросить, и заодно показать комнату?
Первые два задания выполнены. Осталось пробудить фантазию.

>> No.37101  

>>37100

>не могу придумать повод пригласить Семёна именно посмотреть комнату.

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

>> No.37102  
Файл: 1385113716846.jpg -(538 KB, 800x700, 6612e9fb48e29ec381c6b843676c9d4f.jpg)
538

Лолботуэ как всегда няша. Давно сам хотел сесть немного подучить РенПай, но постоянно отстанавливало отсутстви туторов «для нубов».

>> No.37103  
Файл: 1385114005560.jpg -(94 KB, 428x581, arLuRUyH9C0.jpg)
94

>>37100
Это для рекламщиков, но, при допиливании напильником сработает и для нужд анона.

>> No.37104  
Файл: 1385114030665.jpg -(100 KB, 428x583, h-FT0nhsrA4.jpg)
100

>>37103

>> No.37106  

>>37103
Мозговой штурм чуть сложнее по правилам будет. А тут он в одно предложение вписан.

>> No.37109  

>>37106
Да тут всё чуть посложнее будет. Воспринимай это как список ссылок для гугла.

>> No.37110  

>>37109

> список ссылок для гугла

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

>> No.37111  

>>37110
Уверен, Семён охотно посмотрит на её домик и даже войдёт в него.

>> No.37112  

label lesson1_task1:

play music music_list["my_daily_life"]
scene bg ext_square_night
"Поужинав до отвала, я пошёл в свой домик, поспать."
th "Я вообще люблю спать после еды."
th "И есть после сна."
"Хороший вечер сегодня: прохладный ветерок несёт по небу редкие облачка, стрёкот кузнечиков успокаивает и расслабляет."
show dv normal pioneer
play music music_list["eat_some_trouble"]
dv "Эй, Семён."
me "А?"
show dv rage pioneer
dv "С тебя должок, ты ведь не забыл?"
"Руки похолодели, в висках начало бешено стучать."
th "Что ещё за должок?!"
me "Д.. Должок? Помню-помню, как же."
th "Ааааа, что я делаю, ничерта ведь не помню"

return

>> No.37113  

>>37112
label lesson1_task2:

play music music_list["a_promise_from_distant_days"]
scene bg black
"Мне снова снился этот сон..."
scene bg int_house_of_mt_day
voice "Семен... Семен!"
"Маша рукой, я перевернулся на другой бок."
scene bg black
voice "Ну Семееееееен! Ну вставаааай"
th "Нехотя я всё-таки открыл глаза."
scene bg int_house_of_mt_day
show us normal dress
"Передо мной стояла Ульяна"
me "Д.. Доброе утро. Чего тебе?"

return

>> No.37114  

>>37113
label lesson1_task3:

play music music_list["get_to_know_me_better"]
scene bg ext_square_day
"Я сидел на лавочке, подпирая голову рукой. Настроение было хуже некуда."
th "Да что я делаю, черт возьми? Время идёт, а ответов больше не становится."
th "В конце концов, так я рискую остаться здесь насовсем."
th "Или нет? Кто будет вечно держать меня в пионерлагере?"
th "С другой стороны, кто знает что вообще им нужно?"
un "Семен!"
"Мои размышления прервала Лена."
stop music
play music music_list["she_is_kind"]
show un shy pioneer
"Я удивился, что ей хватило смелости вот так кого-то окликнуть."
me "Привет. Что такое?"
un "Семён, понимаешь. У меня там... У меня..."
"Она так залилась румянцем, что я удивился как у неё ещё хватает крови."
me "Что у тебя?"
un "У меня там сломалось..."
th "Этого ещё не хватало."
me "Ну, я не знаю, скажи Ольге Дмитриевне."
show un scared pioneer
"Кажется, мой ответ не на шутку испугал её."
un "Она будет ругаться, вот я и..."
"Договорить я ей не дал."
me "Тогда сходи к Шурику с Электроником."
show un sad pioneer
"Испуг на её лице мгновенно сменился печалью."
th "Опять двадцать пять, сейчас ещё и заплачет."
"От этой мысли мне стало паршиво. Нужно что-то сказать."
me "А знаешь, давай я посмотрю, раз ты уже меня попросила."
show un smile pioneer
"Лена мгновенно просияла."
th "Надо же, теперь даже не верится, что пару секунд назад она была готова лить слезы. Просто сама переменчивость."
"Мы быстро зашагали к её палатке."
scene bg black
stop music
scene bg ext_house_of_un_day
"Она предусмотрительно пропустила меня вперед."
scene bg int_house_of_un_day
"Внутри было светло, вещи были аккуратно разложены."
me "Ну, и что у тебя слома..."
show un shy pioneer
"Не дав мне договорить, она подошла и залилась румянцем."
un "Ой, извини, я... я тебя обманула."
th "Это ещё что? Неужели лагерь решил показать клыки?"
me "Зачем?!"
show un scared pioneer
"От неожиданности мой голос оказался куда громче обычного. Лена не медлила с испугом."
play music music_list["i_dont_blame_you"]
un "Прости, прости, я только хотела..."
show un cry pioneer
"Внезапно она заплакала. Я попытался её успокоить."
me "Стой, не надо, я не хотел тебя испугать."
"Но она не умолкала. Её голос едва пробивался сквозь плач."
un "Семён, ты...ты, мне нравишься!"
th "Вот так новость. Я ждал от этого лагеря инопланетян, чертей, аномалий, но уж никак не ждал, что скромная девочка в слезах будет признаваться мне в любви."
un "Ты мне нравишься почти с самого начала! Я не знала как сказать тебе! Поэтому и выдумала эту глупость!"
"Надо было что-то сказать."
me "Лена, я всё понимаю, но..."
show un sad pioneer
"На секунду она перестала рыдать."
me "Но я не могу ответить тебе тем же. Прости."
play music music_list["drown"]
show un shocked pioneer
"Она мгновенно изменилась в лице. Ничего нового, но я никак не мог привыкнуть."
"Я уж было хотел извиняться дальше, но тут случилось неожиданное."
show un rage pioneer
"В её глазах появилось столько ненависти, что я потерял дар речи."
un "Не можешь? Не можешь?! А кому можешь?!"
th "Да что с ней творится?"
un "Славе, к которой грязь не липнет?! Алисе с её поганой потребностью во внимании?! А может Ольге Дмитриевне?! Ты же любишь пресмыкаться?!"
me "Послушай, я может и виноват, но это уже слишком!"
un "Может?! Ну, конечно может!"
th "А, к черту, надо уходить."
hide un
"Я развернулся к двери и уж было хотел с силой распахнуть её, но она была заперта."
th "И почему я не удивлён?"
"Я уже почти разобрался с замком, как вдруг спину пронзила жуткая боль."
"Немного задержавшись внутри, она рванула к грудине. Я в ужасе схватился за сердце."
"Руки ощутили влагу и тепло. Я опустил глаза. Галстук почти исчез на расплывающемся по рубашке пятне."
scene bg black
"Всё исчезло. Но двигаться уже не нужно. Тусклой искоркой в темноте напоследок промелькнула фраза."
th "Кто будет вечно держать меня в пионерлагере?"

return

>> No.37115  

>>37098
А зачем нам комната? Комната не нужна.

>> No.37123  

>>37115 Вроде же в задании просили комнату.

>> No.37124  

>>37123
Примерная тема же. Позволяет отклоняться. Я ведь этот текст написал несколько раньше, а сейчас только оформил. В следующий раз наверное напишу ближе к теме.

>> No.37125  

>>37096 Скрипт не грузится. Ошибок во втором задании тоже масса.

>> No.37127  

>>37125
Если насчет "Встовааай", то это я специально оставил.

>> No.37129  

>>37125

> не грузится.

Как мне его загрузить?

>> No.37131  

>>37129

  1. Перечитай >>37035
  2. Кидаешь сделанные тобой .rpy файлы в /game/
  3. ???
  4. Правишь, пока твой сценарий не будет крашить игру.
  5. Выставляешь правильную версию домашнего задания и пьёшь чай с тортиками, как настоящая Юичка. Или Азунян. Ну или кем ты там хочешь быть
>> No.37132  

>>37111 Его ждёт большой облом, по крайней мере в этот раз.
>>37115 Прямо на траве за столовой? А верёвка Семёну зачем?
>>37127 Насчёт этого не уточняли. Я исправляю.
>>37131

> Правишь, пока твой сценарий не будет крашить игру.

lol Это во «Вредные советы».

> Ну или кем ты там хочешь быть

Я вот хотел бы быть учителем Мугички, который поймает её на перемене с пивом и сигаретой, и оставит после уроков.

>> No.37136  

>>37131 Судя по тому, чем он читал >>37035, он - сценарист Мугичка.

>> No.37139  

>>37077>>37079

У меня тут все нормально?

>> No.37140  

>>37139
Вставляй@запускай. Начнём с того, что у тебя нет идентации.

>> No.37148  

Кажется, ошибка, описанная в >>37085, имеет место только при сохранении/скачивании файлов БЛ, или вообще уже отпустило. С другими файлами не повторялась. А может и правда нужно было попробовать с другой папкой.
Подозреваю, что таки придётся запускать, хотя бы третье задание. По той же причине, подозреваю, что буду бит за графоманию (уже превысил минимальный объём, а Сёма ещё только в домик вошёл, хотя конец где-то рядом), но ничего с собой поделать не могу, иначе боюсь сделать какой-то бессвязный огрызок (ну и спасибо некоторым персонажам с их характерами). Скоро выложу, ждать осталось недолго.

>> No.37155  

>>37131
Так, спасибо, я вчера разобрался сам, но немного по-другому, поэтому уроки идут подряд один за другим (переход через меню выбора).
Процесс дебаггинга мне дико вставляет, обожаю его. Но компилятор тут какой-то неправильный, я привык к хоткеям Visual Studio, а тут надо отдельно запускать.
http://rghost.ru/50374699
Все отладил, до/переписал и это даже более-менее смотрибельно (мои знания о ренпае немного больше чем в первом уроке, потому что суровые русские программисты читают визуальные новеллы в исходниках).
Тут недавно рекомендовали AkelPad, а он вставляет пробелы вместо символов табуляции?

>> No.37156  
Файл: 1385196634170.png -(14 KB, 366x482, akel.png)
14

>>37155 Нажимаешь Tab, получаешь 4 пробела. Выделяешь несколько строк + нажимаешь Tab, они сдвигаются вправо на 4 пробела. Выбираешь глобальную замену "\t" на " " (включив Esc-последовательности), в файле не остаётся табуляций.

Вообще, если любишь студию, то, может быть, можно и её под это дело приспособить. Как-то.

>> No.37157  

>>37156
Я пользуюсь notepad++ (первое что попалось из блокнотозаменителей, он вроде норм), проблему решил, но придется включать режим "Питон".

>> No.37159  

Спидран-патч:

http://rghost.ru/50369329
Более никаких канцеляризмов, долгих сюжетных линий, быстрое получение обходного листа.
Игроку предлагается стать автором всех диалогов в собственном воображении.
Вы читаете диалоги только в ключевых моментах.
Идеально подходит для трансляций спидранов и прохождения всех рутов. Экономия времени более 9000 часов.

Приятной игры!

Релиз подготовлен: Bookfags, AnonFM

>> No.37161  

>>37159
Не нужен.

>> No.37162  

>>37159 Лол, использование сразу 3х кодировок в одном readme-файле - это что-то прекрасное. Особенно то, что выбор среди прочего пал на OEM866, но аккуратно обошли стороной KOI8-R.

>> No.37163  

>>37159 Для лучшего эффекта можно убрать из скрипта все вот такое места, когда window идут парами.

window show
window hide
>> No.37165  

>>37163
Тогда будут проёбаны локации и спидран будет очень быстрым

>> No.37166  

>>37165 Как насчёт:

pause 0.0001 
>> No.37174  

101 Бамп!

>> No.37199  
Файл: 1385329898069.png -(248 KB, 960x720, lesson2_slide00.PNG)
248

Ну что, кажется, пора продолжать!

>> No.37200  
Файл: 1385330374117.png -(455 KB, 960x720, lesson2_slide01.PNG)
455

Спасибо всем тем, кто отвечал на вопросы в треде.
Спасибо всем, сделавшим и приславшим домашнее задание.
Спасибо за 100 бампов за лекцию.

Пробежимся по домашке:

  • в задании 1 почему-то несколько человек проигнорировало строчку "(музыка напряжённая)", будьте повнимательней
  • задание 2 некоторые люди наивно пытались сдать не запуская код. Очень наивно.
  • в задании 3 у двоих вообще нет музыки. Это вы зря, меньше атмосферы выходит же.

Насчёт "Маша рукой", "Не хотя" и прочих. Они были вставлены просто так, чтобы каждый из вас задумался о том, интересно ли ему вообще подобное править.

>> No.37202  
Файл: 1385330796585.png -(432 KB, 960x720, lesson2_slide02.PNG)
432

Этот слайд специально обращён к тем, кто не придерживается предложенного числа отступов.

Чуваки, пока вы работаете одни и на небольшом проекте, к которому никогда не вернётесь, вы вольны писать как угодно.

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

Правила кодирования не всегда содержат только хорошие практики. Часто они могут вызывать у вас негодование и даже НЕНАВИСТЬ. У меня так бывает, когда нужно добавить строчку на С++ в файл, в котором в качестве отступов используются не священные 4 пробела, а мерзкая табуляция. Но золотой принцип таков: если ты куда-то что-то добавляешь, придерживайся того стиля, который там заведён.

Подробнее читайте тут: http://en.wikipedia.org/wiki/Coding_conventions

>> No.37203  
Файл: 1385331078695.png -(440 KB, 960x720, lesson2_slide03.PNG)
440

Отдельное обращение к тем, кто не хочет запускать игру, чтобы её не спойлерить.

С одной стороны, сама постановка вопроса смехотворна. Это тред в основном про моддинг вполне конкретной игры. Если вы не хотите её запускать, то ваши мотивы мне не понятны.

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

>> No.37204  
Файл: 1385331275429.png -(419 KB, 960x720, lesson2_slide04.PNG)
419

А мы тем временем двинем вперёд.

С точки зрения RenPy, CG ничем не отличаются от фонов. Они также выводятся с помощью scene, отличие только в том, что поверх них как правило нет смысла не рисовать спрайты.

>> No.37205  
Файл: 1385331471943.png -(439 KB, 960x720, lesson2_slide05.PNG)
439

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

Беглый анализ скрипта говорит о том, что они как правило вроде бы не используются вместе. Тем не менее, они работают на отдельном звуковом канале. play/stop ambience на останавливает музыку, а play/stop music не останавливает эмбиент.

>> No.37206  
Файл: 1385331798383.png -(442 KB, 960x720, lesson2_slide06.PNG)
442

Реплики и описания допускают разметку собственной системой тэгов. Часть из них напоминает HTML, часть предназначены для ВН-специфических задач.

В everlasting_summer-1.0-all используются всего 3 тэга. Курсив и жирный - {i}tallic и {b}old.

{w} ждёт перехода вперёд чтобы разрешить отрисовать остаток строки.

Про другие тэги расскажу в следующие разы.

>> No.37207  
Файл: 1385332030585.png -(430 KB, 960x720, lesson2_slide07.PNG)
430

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

>> No.37208  
Файл: 1385332172018.png -(449 KB, 960x720, lesson2_slide08.PNG)
449

Спрайты Ычан Эроге заботливо подготовлены к отображению в трёх вариантов близости к зрителю.

far - почти в полный рост
ничего - обычные спрайты как спрайты
close - очень близко к Семену

Поэкспериментируйте с ними, посмотрите, что уместнее.

>> No.37209  
Файл: 1385332268301.png -(440 KB, 960x720, lesson2_slide09.PNG)
440

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

>> No.37210  
Файл: 1385332369466.png -(445 KB, 960x720, lesson2_slide10.PNG)
445

Dissolve плавно растворяет то, что надо скрыть, одновременно потихоньку проявляя то, что надо отрисовать. Полезно для появления спрацтов, смены эмоций, исчезновения спрайтов, смены времени суток.

>> No.37211  
Файл: 1385332475960.png -(454 KB, 960x720, lesson2_slide11.PNG)
454

fade сначала растворяет картинку в чёрном цвете, затем проявляет из неё новую. Можно использовать для смены фона, например. Или для вспышек света. Обычно бессмысленно использовать вместе с show.

>> No.37212  
Файл: 1385332547750.png -(426 KB, 960x720, lesson2_slide12.PNG)
426

Семен споткнулся? Его ударили? punch поможет отобразить это на экране!

Встречается посреди текста, безо всяких show или scene.

>> No.37213  
Файл: 1385332664119.png -(438 KB, 960x720, lesson2_slide13.PNG)
438

В Эроге есть довольно стильный самодельный эффект моргания глазами.

show blink отображает слой, в котором сначала закрываются глаза, а потом остаётся висеть непрозрачная чёрная пелена. Она уйдёт только при вызове hide blink или любом scene.

>> No.37214  
Файл: 1385332714849.png -(440 KB, 960x720, lesson2_slide14.PNG)
440

Резко переключать музыку не здорово. fadein/fadeout позволяют это делать постепенно.

>> No.37215  
Файл: 1385332732423.png -(465 KB, 960x720, lesson2_slide15.PNG)
465

Вот как-то так.

>> No.37216  
Файл: 1385332743762.png -(253 KB, 960x720, lesson2_slide16.PNG)
253
>> No.37217  
Файл: 1385333037760.png -(454 KB, 960x720, lesson2_slide17.PNG)
454

Качайте http://cf.ichan.ru/lections/lesson2.zip

В этот раз в приложении:

  • обновлённый стартер домашки
  • патч >>37087
  • список фонов (подмножество 2009)
  • список музыки (подмножество 2009)
  • обновлённый список спрайтов (теперь с учётом body-патча)
  • список CG
  • список эмбиентов
  • lesson2_task2.rpy для исправления
>> No.37218  
Файл: 1385333241689.png -(449 KB, 960x720, lesson2_slide18.PNG)
449

Поскольку всего сразу не расскажешь, ваше задание 1.3 получилось топорным, как "Май нэйм из Лолбот. Ай эм фром Раша. А лайк ту врайт коуд."

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

>> No.37219  
Файл: 1385333300447.png -(452 KB, 960x720, lesson2_slide19.PNG)
452

Снова задание на исправление чужих ошибок.

>> No.37220  
Файл: 1385333442611.png -(445 KB, 960x720, lesson2_slide20.PNG)
445

Последнее задание - творческое. Ради него всё и затевалось.

И да, по возможности выкладывайте всё-таки ссылки на архивы или файлы. Так мне проще их тестировать.

>> No.37221  

Влезу своими грязными ногами. Если вам очень-очень хочется, чтобы на экране не происходило вообще ничего, и игрок не мог бы с этим ничего поделать, используйте это:

$ renpy.pause(x)

где x — число секунд. Принцип действия, я полагаю, будет объяснён в последующих лекциях, но вещь зело полезная, да выразительность придаёт.
>>37220
Какой в этот раз минимальный порог? Четыре задания, или всё те же два?

>> No.37222  

>>37221

> и игрок не мог бы с этим ничего поделать

Игрок сможет нажать клавишу any key, и ему не придётся ждать.

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

>> No.37224  

>>37222
Всё лучше, чем многоточия или пустое окно текста. А колдунство, пожалуй, и не нужно - иначе при быстрой промотке у игрока внезапно пауза. Ставить костыль ещё и для этого? По мне так изврат.
И чем заставлять бедных Сейбер каждый раз править злочастный debug.rpy, лучше решить проблему с динамической компоновкой модификаций. Благо цена вопроса - двадцать строчек питона и ввод стандарта наименований

>> No.37225  

>>37199
А размер сэмплов растёт.
Лолботуэ в последнем уроке скажет: "Последнее задание - творческое. Ради него всё и затевалось. Напишите свою эроге. Минимальное время разработки - 5 лет".
_____
Выложь все 3-ьи задания анонов отдельной строчкой в меню дебуга! Хотеть почитать и подрочить!

>> No.37226  

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

>> No.37227  

>>37210

>dissolve
>смены эмоций

крипота!

>> No.37234  

>>37225 Поскольку Ren-пи требует уникальности меток, то нужно, чтобы каждый из учеников выбрал себе никнейм. Мы пойдём на это?

>> No.37236  

>>37217
http://rghost.ru/50434622
По поводу задания "раз". Мне оно показалось уж очень субъективным. Мало ли, что Уички могут себе навыдумывать в плане совершенства/несовершенства своих же работ.
По поводу задания "два". Мне кажется, я понимаю, что ты подталкиваешь к правке авторского текста/эффектов и выбора спрайтов. Однако без могучей воли продюсера/режиссёра/редактора тут не справиться. Исправить можно лишь очевидную ошибку, касательно авторского текста - подправить грамматику, например. Обсуждение того, какие использовать слова, спрайты и эффекты - прерогатива автора, ящитаю. Что следует сделать - отправить ему список замечаний.
Но это только моё мнение.

>> No.37237  

>>37234
Пусть берут номера своих первых постов, куле.

>> No.37240  

В идеале бы, конечно, цвета. Mr. Brown, Mr. Blonde, Mr. Blue, Mr. Pink и так далее.

>> No.37241  

>>37240
Если ты к этому>>37237, то цвета слишком ассоциативны. Так и до самолюбования недалеко.

>> No.37245  

>>37240
У меня есть свой собственный ник, и если до такого дело дойдет, я буду использовать его, окей?

>> No.37248  

>>37245
Сдаётся мне, он тут у каждого есть. Или ты думаешь, что все кто сидит на АИБ рождаются анонимусами?
Но, не переживай, никто тебя за это не осудит. Нет ведь?

>> No.37252  

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

>> No.37253  

>>37252
С трудом понимаю, что ты пытаешься сказать. Вопрос о преффиксах к меткам, кажется мне, изначально заключался не в возможности их проставить, а в том, какие они должны быть, применительно к участникам этого курса. Вопрос несущественный, по моему мнению.
О правильных или неправильных эффектах судить автору. Тебе они могут казаться совершенно неверными, мне, вот например, красная вспышка однозначно говорит о том, что кого-то пырнули ножом, и, почему-то, обязательно в спину, но автор её использовал, значит он может видеть огни диско именно так. А раз он может, значит могут и другие. Если при указании на это он скажет: "О, хуйню сморозил - там белая должна была быть, - или ещё лучше, - Я тут как раз атл для диско-шара закончил, вставьте, пожалуйста", - тогда это можно счесть ошибкой и исправить. Иначе все "неправильные" эффекты попадают под "видение автора".

>> No.37255  

>>37253
Насчёт модификаций развёрнутый ответ я напишу позже. Общий смысл в том, что можно, конечно, накидать кучу файлов, и компоновщик их съест, разрешая конфликт имён. А можно ввести стандарт модификаций. Скажем, первой строчкой идёт имя модификации, все лейблы начинаются с префикса-имени. Случайные коллизии компоновщик, опять же, исправляет.
А по поводу задания: там ошибка не в плане "зачем это нужно", а в "этот эффект не имеет никакого смысла" (он просто некорректно отображается, чувство прекрасного не спрашивали). Если и на этот раз не поймёшь, то внимательно перечитай посты про blink и fadeout

>> No.37258  

>>37255

>Если и на этот раз не поймёшь, то внимательно перечитай посты про blink и fadeout

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

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

>>37258
Мне наоборот показалось, что задание на внимательность ко всем этим "пропущенностям". По поводу правок текста Лолбот уже сам сказал в >>37200.
А >>37234 не я писал, и идеи не придерживаюсь. Сам этот компоновщик существует наполовину как концепт, пока обрабатывает самые простые случаи. Может, он тут вообще никому не нужен. Но я его таки допилю Да и Лолбот говорил, что у него уже есть такое.
Но да закроем на время тему.

>> No.37265  

>>37259

>>37234 не я писал

А оно и так понятно. Впрочем, я начинаю повторяться.
А "компоновщик" ты пили, любопытно посмотреть.

>> No.37279  

>>37219
_task2
_task02
Теперь я понял, что во первом уроке это задание я все же завалил, лол.

>> No.37284  

>>37213
Семен такой циклопчик, мне прям понравилось.

>> No.37307  

>>37224

>И чем заставлять бедных Сейбер каждый раз править злочастный debug.rpy, лучше решить проблему с динамической компоновкой модификаций. Благо цена вопроса - двадцать строчек питона и ввод стандарта наименований

Хорошая идея. Займусь обязательно. Цена вопроса даже не двадцать, а ещё меньше строчек.
>>37225

> Последнее задание -творческое. Ради него всё и затевалось. Напишите свою эроге. Минимальное время разработки - 5 лет

:3
>>37258
Азуняны, не ссорьтесь же...

>> No.37308  

Хм... неожиданная встреча в лесу.
В лесу я встретил лису?
Но где спрайты лисы?

>> No.37309  

>>37308
А ещё "Forest maiden" указывает на используемую музыку и Славю. Однако никто не запрещает переписать встречу Рены с К1 на узкой дорожке из первой арки Цикад, например.
А вместо лисы используй Сыроежкина.

>> No.37310  

>>37309 Ну, вообще неожиданно в лесу можно встретить кого угодно, хоть Славю, хоть Юлю, хоть Доктора, хоть лису, хоть Десу.

>> No.37313  
Файл: 1385472351128.jpg -(94 KB, 1002x709, 08_06_18_1213733730130.jpg)
94

>>37308
Лолисичку!

>> No.37314  

>>37313

>3

А где первые две?

>> No.37315  

>>37314
это v3, она самая проработанная. Сейчас поищу, где-то были.

>> No.37316  
Файл: 1385473735076.jpg -(124 KB, 1002x709, 1213826781727.jpg)
124

>>37315
Не, не сохранял, есть такая.
А если ты про номер на купальнике - не знаю, лол.

>> No.37319  

А задания обязательно выполнять как мод для эроге или можно в новом проекте ориджинал контентить?

>> No.37320  

>>37319 Подумай сам:
-в лекциях пока что не было слова о том, как добавлять свои спрайты
-лекции освещают не только встроенный функционал RenPy, но и эрогейские навороты (моргание глаз и т.п.)
-некоторые домашние задания непосредственно посвящены редактированию скриптов, которые являются модами для эроге

Никто не может тебе запретить экспериментировать с написанием своих проектов. Но этот курс всё-таки про моды для Everlasting Summer v1.0

>> No.37324  

>>37320
Надеюсь, про то, как добавлять свои ресурсы (спрайты, сцены и т.д.), будет в одном из уроков.

>> No.37325  

http://rghost.ru/50472193

>> No.37326  

>>37316
Видать, лисомаскот, приуроченный к дате выхода файерфокса 3.
Сколько ж лет назад это было.

>> No.37327  

>>37324 Обязательно будет. Вероятно, в четвёртом уроке, потому что третий про переменные, ветвления, меню и карту лагеря.

>> No.37328  
>И чем заставлять бедных Сейбер каждый раз править злочастный debug.rpy, лучше решить проблему с динамической компоновкой модификаций. Благо цена вопроса - двадцать строчек питона и ввод стандарта наименований

Вот некоторый вариант решения: http://rghost.ru/50472781

В debug.rpy пишется однострочник (!):

jump expression renpy.display_menu(sorted([(v,k) for (k,v) in mods.iteritems()]))

А в каждом моде регистрируется первая метка в 2 строки:

init python:
mods["student1_lesson2_task1"] = u"Щель в потоке казалась мне незнакомой..."

Пока у историй нет названий, назвал их по первым строчкам.

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

>> No.37332  
Файл: 1385517675473.png -(133 KB, 450x253, sengoku1.png)
133
>Насчёт окружения: не понадобится ничего особенного. Хватит обычного текстового редактора. Быть может, вы уже им пользуетесь каждый день.
>Скорее всего подойдёт вообще любая программа, за исключением notepad.exe

http://www.uvviewsoft.com/synwrite/
Пользуясь случаем, спалю немного годноты.

>> No.37334  

>>37332

И я спалю немного годноты. Был раньше в стандартной поставке Ренпая, потом убрали.
http://www.scintilla.org/SciTE.html

>> No.37335  

Может я и не по адресу, но моя задача разобрать имеющиеся игровые скрипты "по косточкам" и портировать на свой собственный VN-движок. Цель - запуск там, где запуск RenPy на данный момент невозможен. Сразу говорю, я не собираюсь переизобретать/портировать все фичи RenPy, возможно даже придется местами перепилить сюжет (к примеру, момент с картами использует вставки на питоне, если я правильно понимаю), задачей минимум является портирование самого сценария (пусть на выходе даже будет сишный код, компилируемый сразу в бинарник, без промежуточного движка)

Если кто-то может по косточкам разобрать текущие скрипты и объяснить мне некоторые команды, устройство имеющихся скриптов, то зайдите пожалуйста в unrenpy@conference.jabber.ru

>> No.37337  
Файл: 1385544258029.jpg -(14 KB, 277x240, lookatu.jpg)
14
>Может я и не по адресу, но моя задача разобрать имеющиеся игровые скрипты "по косточкам"

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

>портировать на свой собственный VN-движок.

Шо, опять?

>Цель - запуск там, где запуск RenPy на данный момент невозможен.

iPhone? Других вариантов даже в голову не приходит, потому что RenPy можно юзать везде, под что можно собрать Python 2.x, то есть под что угодно, кроме яблок.

>Сразу говорю, я не собираюсь переизобретать/портировать все фичи RenPy

Мне известно по меньшей мере три написанных на Ычане ВН-движка, так или иначе интерпретирующих rpy-файлы, выполняя при этом подмножество RenPy. Один из них - мой полузаброшенный RenPSP, написанный на Lua микродвижок для SonyPSP, сейчас развивается одним филлипинцем. Второй - написанный на C#, кажется, за авторством пользователя desufag с канала эроге. Также господин isage, вроде бы, занимался написанием собственного, полностью кроссплатформенного движка на Сях, который интерпретировал свой формат скриптов, но для которого существовал конвертер из rpy.

>задачей минимум является портирование самого сценария

Возможно, тебя заинтересует https://github.com/lolbot-iichan/rpy2wse . Данный конвертер (пока что сыроватый и недописаный, но это вопрос времени) сначала конвертирует игру в свой внутренний формат, а затем из него генерирует xml. Возможно, форкнуть это дело и переписать только фазу кодогенерации будет проще, чем писать конвертер с нуля.

>Если кто-то может по косточкам разобрать текущие скрипты и объяснить мне некоторые команды, устройство имеющихся скриптов

См. выше.

>зайдите пожалуйста в unrenpy@conference.jabber.ru

Зайду сегодня ночером, если будет время.

>> No.37338  

А вообще кто-нибудь еще делает домашку кроме меня? Или все такие же как я, ленивые?
У меня почти все готово, осталось только написать сценарий к заданию 3.

>> No.37339  

А, уже два задания готово, а я думал только одно. Ну ок.

>> No.37340  

Guy-kun вроде делал для дисчана проигрыватель ренпи-скриптов под айфоны, правда соусы, к сожалению, закрыты...

>> No.37341  

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

>> No.37342  

>>37341
Ну задание 3 ты точно можешь делать :3

>> No.37343  

>>37341 Если тебе это будет весело и интересно, присоединяйся. Ну и да, с удовольствием почитаем третьи задания от человека, у которого уже есть опыт в запиливании кото ВН.

>> No.37346  

>>37338>>37340
В отличие от вас, ленивых задниц, я уже всё сделал и запостил:
>>37325

>> No.37349  

>>37346
Молодец, но как-то неокончено.
Мне надо все продумать, и начать писать, у меня такие безумные идеи, что так просто написать сто строчек не получится. Наверное.

>> No.37350  

>>37349
Цель задания - продемонстрировать владение рассмотренными инструментами и показать стиль новеллизации.

>> No.37351  

>>37350

> стиль новеллизации.

Мой стиль - г-но, я так считаю.

>> No.37353  

Начинать с первого ДЗ или со второго ДЗ? Я не знаю, как тут у вас заведено для вновь пришедших

>> No.37355  

>>37353
Никак не заведено, лол. Слоупоков приветствуем, но не злоупотребляйте. Начинай с чего хочешь.

>> No.37356  

>>37353 Одно из заданий второго урока - улучшить одно из своих заданий первого урока, так что...

>> No.37361  

Вот вам мой бред, генератор безумных идей работает как никогда.
Данный текст написан чисто для фана и не претендует на особенную серьезность. Но если кто-нибудь напишет почему я пишу как г-но с обоснованиями как улучшить стиль, я буду только рад, спасибо.
Советую не заглядывать в папку game до прохождения, слишком большие спойлеры.
Я использовал кучу задержек, так что если экран вдруг станет черным и ничего не происходит - не стоит кликать мышкой, это специально так сделано.
А еще мне понравилось копипастить код. Но до полного понимания его нужно идти глубже. Спасибо ЛолБот. И спасибо Сейбе, которая добыла исходники.
Такие дела.
http://rghost.ru/50506521

Существует ли функция, типа {w}, но делающая задержку не до клика, а на несколько секунд? Кажется, что её мне категорически не хватает.

>> No.37371  
Файл: 1385667093473.jpg -(1186 KB, 1817x1022, screenshot0001.jpg)
1186

>>37361 Вот уж не думал, что доживу до эроге с QRGB121-тян!

>Существует ли функция, типа {w}, но делающая задержку не до клика, а на несколько секунд? Кажется, что её мне категорически не хватает.

Есть такой тэг! {w=0.5} ждёт либо 0.5 секунд, либо клика мышью, что случится раньше. Аналогично, {w=1} ждёт не больше 1 секунды, и так далее.

Несколько моментов:

  1. На её экранчике с текущим шрифтом невозможно различать буквы А и Я, О и Д, с буквой Ю вообще бида. Может, у меня профессиональная травма, но это почему-то первое, на что я обратил внимание при чтении, во что не поверил. Кстати, если кто-то в этом треде предложит более удачный шрифт, помогу прикрутить его к синхронному отображению поверх спрайта, чтобы дублировать надписи. Это совсем не сложно, если у строки не завален горизонт. Если завален, то сложно, но тоже возможно.
  2. Текущая версия не у всех заработает. Дело в том, что и у тебя, и в sprites.rpy есть блоки "init:", причём твои блоки юзают функции из чужих блоков, т.е. должны выполняться позже. Чтобы работало стабильно и у всех, просто замени "init:" на "init 1:" , а "init python:" на "init 1 python:", тогда оно будет выполняться гарантированно позже, чем код инициализации основных спрайтов. Я в третьей лекции расскажу, что это за циферки и нафига они нужны.
  3. Вместо lamp1.png - lamp6.png правильнее было бы сделать по одной png на каждую лампочку. Тогда 4мя картинками можно закодировать все 15 комбинаций горения. text1.png - text6.png тогда можно тоже оставить в одном экземпляре, без лампочек. И да, я надеюсь, ты не руками писал sprites_qr.rpy? Потому что sprites.rpy точно не писался вручную.
  4. Вообще, тебе люто не хватает анимированных спрайтов, но я про это расскажу не раньше 4ой лекции, а то и 5ой. У тебя вообще как с кодированием? Знаешь, что такое машина состояний?
  5. НЯ!
>> No.37383  

>>37371

>невозможно различать буквы А и Я, О и Д, с буквой Ю вообще бида

БE3HOГNM же.
Ну и некомими. Без них никак.

>> No.37384  

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

>> No.37386  
Файл: 1385727425220.png -(0 KB, 22x41, digit.png)
0

>>37383 Мугичка, прочитай внимательно демку >>37361-Азунян, там же есть и некомими.

>>37371 Пока что лучший вариант знакоместа для будущего шрифта из всех, что пришли в голову. Что скажете?

Поддерживаются:
0123456789 -_
АБВГДЕЗИКЛМНОПРСТУхЧЬЭЯ
ABCDEFHIJKLMnOPRSTUvxYz

Не поддерживаются:
ËЖЙФЦШЩЪЫЮ
GQW

>> No.37389  

>>37371

> невозможно различать буквы

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

> Текущая версия не у всех заработает.

Окей, потом поправлю.

> по одной png на каждую лампочку. Тогда 4мя картинками можно закодировать все 15

Я тут столкнулся с проблемой (до разделения лампочек я не додумался правда): функция, которая составляет спрайт из кусочков, принимает только нечетное число аргументов (авторитетное мнение компилятора). Поэтому я ввел empty.png, костыль, но работает.

> надеюсь, ты не руками

конечно нет, большую часть я копипастил одно сколько надо, а потом пробежался автозаменой несколько раз (правда вроде в первый раз все же вручную адреса прописывал)

> У тебя вообще как с кодированием?

В общем-то с кодированием у меня как-то. После второго курса программирование у нас закончилось (сейчас идут математические модели - это жопа полная, не знаю как их сдам). Лекции я не посещал, потому что они были скучные и их можно было на компе прочитать (все же пришлось потом читать, но я мало что запомнил, потому что это было надо только для экзамена, а не для практики). Что-то небольшое написать смогу, но сильно глубоко пока не заходил. Ну, если мне дадут какой-нибудь набор функций, то я смогу что-нибудь из них собрать, а вот с написанием их самим - не знаю.

> машина состояний

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

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

>> No.37390  
Файл: 1385739710925.png -(246 KB, 744x475, owtmvbnzcxaskgjfhdoiweury.png)
246
>Это задание призвана объяснить, насколько плоха идея не писать сценарий сразу в rpy-формате.

Моя твоё задание пОнять.
Но у меня есть тян, которая как приведенная в примере Юичка, написала сценарий в txt-формате. Что мне с ним делать? Как мне расставить сцены и спрайты? Хорошо, текст сконвертировать не долго, а вот как персонажей добывать? Вбивать руками, представляя себе тот или иной спрайт, предварительно выучив все-все-все доступные комбинации?
Это похоже на упомянутые:

>уроки программирования с компьютером из фанеры и богатой фантазией

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

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

>Команда вывода музыки вообще говоря не обязана содержать кваратных скобок и ковычек.
>ковычек
>ковычки на слайде

http://ru.wikipedia.org/wiki/Кавычки
http://ru.wiktionary.org/wiki/кавычка

>> No.37393  
Файл: 1385745617395.jpg -(21 KB, 150x149, Inet_16.jpg)
21

>>37371
А QRGB121-тян-то с Новосибирска! ДЕАНОН!!!

>> No.37394  

>>37393
Ну, я просто не нагуглил лучшей эмблемы.

>> No.37395  

>>37389 В общем, если предложишь шрифт-картинку для необходимых букв, основанный на текущих цифровых знаках или на знаке >>37386, я прикручу его к твоему спрайту. Чтобы всякие
30РА8СТ8ЧU отображались синхронно с текстом.

>> No.37396  

>>37395
Для некоторых букв подходит только двойной знак. То есть два таких символа. Например Ю.

>> No.37399  
Файл: 1385793543515.png -(211 KB, 800x1000, letters.png)
211

>>37386
По такому шаблону можно сделать так, например.
Некоторые буквы не очень смотрятся, но хулѣ ж тут.

>> No.37400  
Файл: 1385794879064.jpg -(69 KB, 500x645, 1377653842310.jpg)
69

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

>> No.37401  

Вот всё (похоже оказалось, что не все, спасибо Соус), что можно сделать с таким форматом. (Я занимался таким развлечением уже давно, еще в детстве) Это предварительный вариант - я не уверен, какие символы будут лучше, поэтому некоторые имеют по несколько вариантов - для обсуждения. К тому же некоторые могут быть составлены только из двух кусков.
Оказывается, латиница гораздо больше подходит для этого формата символов, чем кириллица. Некоторые символы латиницы пропущены, потому что совпадают, но некоторые совпадающие я оставил.
Также передаём огромный привет и благодарность Почте Советского Союза.
http://rghost.ru/50539826

Я почитал немного статей про Питон, может быть попробую что-нибудь написать. По крайней мере основные конструкции я понял.
Вообще, идея отображения такого текста на спрайте вроде бы довольно проста, если бы я знал синтаксис и встроенные функции Питона и Ренпая чуть лучше, я бы наверное смог написать и сам.

> В целом же всё зависит от реализации.

Я увидел такую реализацию (если она возможна): читаем побуквенно текст, затем делаем комбинированный спрайт из основного и картинок с буквами на заданных местах.

>> No.37402  

И спрайт я дорисую. Я уже проапгрейдил панельку на четыре ячейки с цифрами, их теперь 20.

>> No.37404  

>>37402 Заодно сделай, чтобы строчка вывода символов была строго параллельна горизонту, сейчас она чуть-чуть завалена. Если будет так, то поддержать шрифт можно будет в 2 строки или около того.

>> No.37405  

>>37404
Так перспектива же.

>> No.37406  

>>37404
Окей, я сделаю горизонтально, но в две строки делать не нужно.

>> No.37413  
Файл: 1385835909346.png -(63 KB, 400x400, alp.png)
63

>>37386
По 12 бит на один символ.

>> No.37421  

>>37413 Прикольный вариант.

А я пока набросал поддержку для шрифта >>37401. Заменить на любой другой шрифт не составит проблем, просто подмените qr/sfont.png на нужный.

По поводу двух строчек, вот они:
$ renpy.register_sfont("qrfont", size=22, filename="qr/sfont.png", charset="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЖжЗИЙКЛМНОПРСТУФфХЦЧШшЩщЪЫыЬЭЮюЯ -→,")
image qrtext = ParameterizedText(font="qrfont",size=22,xpos=695,ypos=843,xanchor=0,yanchor=0)

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

show qrtext u"ЛОЛ.Юю."
>> No.37423  
Файл: 1385844156769.jpg -(970 KB, 1817x1022, screenshot0004.jpg)
970

Упс. Вот сцылко: http://rghost.ru/50557016

>> No.37440  
Файл: 1385852931341.png -(15 KB, 1040x22, letters.png)
15

>>37421
Вот.

>> No.37441  
Файл: 1385853150259.png -(16 KB, 516x483, sasasa.png)
16

>>37440
Правда не уверен, что сюда можно было налазить.

>> No.37442  
Файл: 1385879466900.png -(66 KB, 1000x1000, qrbg_v4_base.png)
66

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

>> No.37443  

>>37442
НЕКАВАЙНЫМ

>> No.37444  
Файл: 1385884661385.png -(99 KB, 1000x1000, 1385879466900.png)
99

>>37443
Мимо

>> No.37449  

>>37444
НЕСЕРДИТЫМ ЦУН-ЦУН

>> No.37456  

Хм, а кто-то ещё делает задание? Или можно уже не ждать и двигаться дальше?

>> No.37458  

>>37443
Иди в жопу, времени не было сегодня.
И между прочим, она сначала будет такая (у нас типа всё серьезно), а уши потом отрастут.

>> No.37459  
Файл: 1385924154616.png -(82 KB, 1000x1000, qrbg4_mimimi.png)
82

Так достаточно кавай? Что с ушами сделать?

>> No.37460  

>>37459
Не очень.
Оставшиеся лампочки с таблом выглядят как носопырка. Уши как будто облезлые. Огромный черный логотип внизу вообще ни туда, ни сюда (в плне кавайности)

>> No.37461  
Файл: 1385928543406.jpg -(57 KB, 1000x1000, Untitled005.jpg)
57

Окаваен.

>> No.37466  

Ну-ка, художники итить, нарисуйте Лолботыча, пора запиливать КМБ по Ренпаю и распространять.

>> No.37467  
Файл: 1385959432637.png -(88 KB, 1000x1000, qrbg4_mimimi.png)
88

Пока так вот. Конечно, уши довольно сильно выделяются по стилю, но по идее они и должны так делать. Да и что плохого в том, чтобы холодной твердой пластмассовой коробочке иметь мягкие и нежные меховые кошачьи ушки? (здесь мне хотелось вставить еще кучу прилагательных, но я воздержался)
С румянцем фиг знает что делать — я попробовал вчера представить, как он был бы нарисован акварелью — наиболее реалистичное что мне пришло в голову.
Логотип — давно прошу, найдите лучше, есди можете. Любой подойдет, даже с надписью.

>> No.37468  
Файл: 1385959468957.png -(89 KB, 1000x1000, qrbg4_mimimimi.png)
89

>>37467
Или даже так. Моар пушистости и кавая. ^_____^
Блин, пока я тут рисую коробку с ушками, люди уже целые спрайты там рисуют. Надо заканчивать уже.

>> No.37485  

Походу всем надоело. Значит нужны свежие вбросы. Окей, будут.

>> No.37497  
Файл: 1386005047553.png -(249 KB, 960x720, lesson3_slide00.PNG)
249

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

>> No.37498  
Файл: 1386005507362.png -(459 KB, 960x720, lesson3_slide01.PNG)
459

Начну с того, что расскажу об одной из вещей, касательно которых я вас сознательно обманул ранее. В >>37210 я для простоты умолчал про различные варианты применения with, оставив акцент лишь на использовании в паре с ровно одним scene/show/hide. Тем не менее, уже в >>37212 критический ум мог заметить неладное.

В общем, вот как всё обстоит на самом деле: with может являться как независимой командой, относящейся ко всему написанному выше, до прошлой точки взаимодействия; а может и являться модификатором отдельной show-команды.

>> No.37499  

>>37497
Ура, товарищи!
>>37498
Догадался до этого сам, а затем экспериментально подтвердил.

>> No.37500  
Файл: 1386005947535.png -(456 KB, 960x720, lesson3_slide02.PNG)
456

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

Новые спрайты по умолчанию отображаются поверх всех. Смена эмоций уже отрисованных по умолчанию не меняет их порядка.

Чтобы добиться другого поведения, есть два подхода:

  • использовать behind, косвенно ссылаясь на порядок
  • вручную указать порядок, используя zorder
>> No.37501  
Файл: 1386006281346.png -(454 KB, 960x720, lesson3_slide03.PNG)
454

Ещё больше ресурсов трону ресурсов.

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

В принципе, с точки зрения кода нет никакой разницы, какие звуки играть одноразово, а какие циклить. В список lesson3_sound_loops.lst я внёс те звуки, которые циклятся в существующем сценарии Ычан Эроге. В список lesson3_sounds.lst вошли вообще все sfx-звуки, объявленные в коде.

>> No.37502  
Файл: 1386006454914.png -(409 KB, 960x720, lesson3_slide04.PNG)
409

Основное, о чём хотелось сегодня поговорить - это ветвления и переменные.

Допустим, мы хотим, чтобы в игре был некий счётчик. У него есть какое-то начальное значение, он как-то меняется по мере развития игры и он как-то на игру влияет (иначе, зачем он?).

Общая идея синтаксиса этого дела - вот. Подробнее про каждую из частей - далее.

>> No.37503  
Файл: 1386007060868.png -(429 KB, 960x720, lesson3_slide05.PNG)
429

На самом деле, этот шаг необязательный. Но если его не сделать, на неаккуратном коде могут происходить падения посреди игры. Можете считать это частью iichan eroge coding convention.

Так вот, до сих пор единственными верхнеуровневыми блоками для нас были label. Есть ещё и init-блоки.

Упрощённо, процесс загрузки игры можно представить себе так:

  • все rpy-файлы компилируются в rpyc-файлы
  • все rpyc-файлы подгружаются в память игры
  • все-все init-блоки всех-всех rpyc-файлов сортируются по приоритету, если приоритет не указан, он считается равен 0
  • выполняется блок с наименьшем приоритетом (например, -9999), за ним второй наименьший и так далее. Если несколько блоков имеют одинаковый приоритет, их порядок считаем неопределённым.
  • когда все они загружены, управление передаётся уже самой игре

Пока что считаем, что внутри init-блоков могут быть только питоновские выражения. Для создания переменной, достаточно присвоить ей что-нибудь.

Если нам нужен счётчик, то хватит чего-то типа:

init:
$ counter = 0
>> No.37504  
Файл: 1386007393964.png -(440 KB, 960x720, lesson3_slide06.PNG)
440

Самыми полезными выражениями являются присваивания арифметики.
Обнулить x: $ x = 0
Приравнять x текущему значению y: $ x = y
Приравнять x текущему значению y плюс два: $ x = y + 2
Приравнять x текущему значению x плюс два: $ x = x + 2
Увеличить что-то на сколько-то можно и проще: $ x += 2

Аналогично, есть операции -=, *=, /=. Все они подразумевают, что переменная слева от этого знака уже существует и чему-то исчислимому равна.

В принципе, там может стоять вообще любое питоновское выражение, вплоть до запроса статистики из сетевой таблицы рекордов или подсчёта чётности числа JPG-файлов на жёстком диске. Но вам, надеюсь, хватит приведённых вещей.

>> No.37505  
Файл: 1386007782175.png -(452 KB, 960x720, lesson3_slide07.PNG)
452

Раз есть переменные, то они должны на что-то влиять. Простейший вариант - это if-блоки. Они могут располагаться как внутри init-блоков, так и внутри label-блоков. Сконцентрируемся на втором.

Условием в случае числовой переменной может быть её сравнение с чем-нибудь. В python используются следующие сравнения (равно, не равно, меньше, менеше или равно, больше, больше или равно): 2 == 2, 2 != 3, 2 < 3, 2 <= 3, 3 > 2, 3 >= 2

Условия можно группировать через and, or и not. Если это вдруг вам понадобится, используйте круглые скобки для избежания недоразумений.

>> No.37506  
Файл: 1386008016913.png -(436 KB, 960x720, lesson3_slide08.PNG)
436

Где if, там и else!*
*- на самом деле нет

else-блок опционально может идти вслед за if-блоком.

Кстати, обратите внимание на "%(times_been_to_sl_house)d". Это один из самых простых способов вывести текущее значение переменной прямо в реплику, видимую для игрока.

Может быть полезно при отладке неправильно работающего кода.

>> No.37508  
Файл: 1386008444397.png -(447 KB, 960x720, lesson3_slide09.PNG)
447

Раз уж заговорили о $-строках, то грех не дать вам наконец несколько наиболее необходимых из них.

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

Одна из них - это оформление рамочки для текста (а также игрового меню, но наиболее заметно оно по рамочке). Она разная в прологе, днём, ночью и при близком к горизонту солнце.

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

>> No.37509  
Файл: 1386008639326.png -(429 KB, 960x720, lesson3_slide10.PNG)
429

>>37221-кун прав, давно пора было рассказать про паузы, но хотелось дать их уже после какого-никакого пояснения того, что такое $, чтобы не было ощущения полной магии.

Кстати, непропускаемая пауза делается очень просто. Процитирую слова создателя RenPy: They can be invoked by passing hard=True to renpy.pause, but it's probably a bad idea to use them.

>> No.37510  
Файл: 1386008912467.png -(427 KB, 960x720, lesson3_slide11.PNG)
427

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

Простейший пример интерактивности в визуальных новеллах - это меню выбора действия. Скриптуются они просто: menu-блок, в который вложены блоки вариантов ответа.

>> No.37512  
Файл: 1386009127522.png -(432 KB, 960x720, lesson3_slide12.PNG)
432

Меню может опционально содержать вопрос. В приведённом примере это строка "Куда бы мне пойти?", расположенная поверх всех вариантов и не являющаяся блоком.

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

>> No.37513  
Файл: 1386009430142.png -(437 KB, 960x720, lesson3_slide13.PNG)
437

Выбор на карте в общем-то эквивалентен меню.

disable_all_zones нужно чтобы очистить карту от активных зон (например, с прошлого раза отображения карты). Затем активные области по одной активируются при помощи set_zone. Когда карта подготовлена, можно её показать при помощи show_map.

>> No.37514  
Файл: 1386009699419.png -(436 KB, 960x720, lesson3_slide14.PNG)
436

Посещение нескольких мест - популярных сценарий использования карты. Для этого подготовка карты и show_map разделяются на различные метки. Если после какого-то из мест на карте нужно на неё вернуться, то просто делается jump на ту метку, в которой живёт show_map.

Если при этом нужно отключить область, по которой только что был сделан переход на карте, используется $ disable_current_zone()

>> No.37515  
Файл: 1386009836176.png -(254 KB, 960x720, lesson3_slide15.PNG)
254

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

>> No.37517  
Файл: 1386010479266.png -(436 KB, 960x720, lesson3_slide16.PNG)
436

http://cf.ichan.ru/lections/lesson3.zip - материалы лекции.

  • слайды
  • списки звуков
  • список доступных зон на карте
  • сделанный на базе >>37328 компоновщик заданий, позволяющий подкладывать новые скрипты, не редактируя каждый раз несчастный debug.rpy
  • все ваши творческие домашние задания, доступные через этот компоновщик, в качестве имени задания зарегистрирована первая строка.
  • lesson3_task1.rpy - заготовка для задания от Юички

Чтобы как-то вас различать, вы у меня числитесь под никами student1, student2 ... student5. В том порядке, в котором сдавалось первое домашнее задание. Если вы желаете сохранить этот ник, впредь используйте его. Если вы хотите другой - возьмите другой.

Идея в том, чтобы отныне использовать некий ник ВСЮДУ как префикс. Текущий компоновщик считает ником ту часть зарегистрированной метки, что идёт до первого подчёркивания.

>> No.37518  
Файл: 1386010601967.png -(460 KB, 960x720, lesson3_slide17.PNG)
460

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

>> No.37519  
Файл: 1386010686963.png -(461 KB, 960x720, lesson3_slide18.PNG)
461

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

>> No.37522  
Файл: 1386011402886.png -(468 KB, 960x720, lesson3_slide19.PNG)
468

Последнее задание - творческое. Ради него всё и затевалось.

Вот и всё на сегодня. Спасибо приславшим домашку, она была действительно интересная.

>> No.37524  

А теперь вопросы к преподавателю.

>>37500
Насчет спрайтов. Хорошая ли идея наладить лампочки QRBG121-тян, как отдельный комбинированный спрайт? Фактически, это пятнадцать вариантов расположения, т.е пятнадцать отдельных спрайтов. Лучше в голову только пришло сделать все четыре лампы отдельными спрайтами и отображать их прямо в коде. Но тогда придется вручную отслеживать их горение, по сравнению с предыдущим вариантом. Я пока не доведу эту штуку до идеала, я не успокоюсь, извините.

>>37501
А разделы music и ambience автоматически зациклены, да?

>>37506
А какже elseif/elif? В ренпае он есть? Олсо, на слайде ошибка - выведет "Джва раза. 2 раза."

>>37509
Да не очень-то и плохая идея. Можно пилить целые мультики на таком движке и заставлять читателя их смотреть СМОТРИ СУКА!

>>37508
А значок $, он что означает? Что пошел код, не относящийся к выводу чего-либо на экран и это программная часть?

>>37508
А если не указано, по умолчанию берется day_time()?

>>37514

> jump на ту метку, в которой живёт show_map.

Но проще ведь написать просто $ show_map(), а не делать лишний блок для этого.

>>37517

>student4

Если выбрать какой-то ник, то это будет нечестно по отношению к остальным, потому что файл будет лежать в папочке первым. Так что пока будем студентами.

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

Спасибо.

>> No.37528  

>>37523

>Хорошая ли идея наладить лампочки QRBG121-тян, как отдельный комбинированный спрайт?

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

>А разделы music и ambience автоматически зациклены, да

Угу. Пока что единственный рассказанный мною способ вывести что-то не зациклив, это play sound.

>А какже elseif/elif? В ренпае он есть?

Есть elif. Я пока что про них умолчал, чтобы не перегружать рассказ.

>Олсо, на слайде ошибка - выведет "Джва раза. 2 раза."

Не ошибка, а особенность поведения, б-бака... :3

>Да не очень-то и плохая идея. Можно пилить целые мультики на таком движке

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

>А значок $, он что означает?

Вставка на голом питоне длиной в одну строку. Про многострочные вставки расскажу в следующий раз.

>А если не указано, по умолчанию берется day_time()?

По умолчанию там... В общем, очень плохо там всё по умолчанием в нынешней версии. Во избежание проблем, я прямо в debug.rpy принудительно day_time() зову, чтобы у вас прошлая домашка работала.

>Но проще ведь написать просто $ show_map(), а не делать лишний блок для этого.

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

>Если выбрать какой-то ник, то это будет нечестно по отношению к остальным, потому что файл будет лежать в папочке первым.

Ааб Виталий Владимирович, залогинься.

>Так что пока будем студентами.

Моё дело - предложить, чтобы вы не чувствовали себя безымянными анонимами, определяемых лишь по номеру пос... WAI~~~

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

Я подумаю о таком формате, но вряд ли. Текущий вариант мне удобнее.

>> No.37529  

>>37528

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

Таки да, я еще не определился. Мне кажется, что каждая лампочка в автоматически должна включаться, когда прибор что-то выполняет, или находится в каком либо состоянии (напр. вкл/выкл). Это происходит без участия QRBG-тян, но вообще, она может ими управлять т.е. включать-выключать по собственному желанию.

> вы не чувствовали себя безымянными анонимами

Окей, залогинился, запишите. Не очень хочется чтобы меня называли тот_парень_который_достал_всех_спрайтом_QRBG121-тян. Я просто не очень люблю неймфажить, так как ничего особенного сейчас из себя не представляю. Когда-то давно неймфажил в тематике, делал общественно-полезную работу, а потом перестал — работа закончилась, да и надоело.

Ну ладно, спокойной ночи всем, пора спать писать реферат по физике.

>> No.37531  

>>37528

>на голом питоне

Ну не совсем. Как-никак, вызывается это уже из контекста игры со всеми подключенными ранее библиотеками, нет?

И раз уж начались питоновские вставки и множественные каналы музыки, открою ещё одну полезную фичу:

$ volume(<число1>, <число2>, '<название канала>')

уменьшает громкость канала до максимума*число1 за число2 секунд. Т.е. $ volume(0.5, 'music') уменьшает громкость музыки в половину моментально, а $ volume(1.0, 2, 'music') возвращает до максимума за две секунды. Учтите, что число1 лежит в пределе между 0.0 и 1.0!

>>37529
Так вот ты где, няша.

>> No.37532  

>>37531
Ох неты! Меня вычислили! Anonymous mode on.

>> No.37533  

>>37531
И да, число2 опционально, и его можно опустить. Тогда берётся умолчание 0.

>> No.37598  

>>37531 А чем принципиально смена громкости отличается от fadein/fadeout?

>> No.37637  

>>37598
Тем, что можно убавить звук, например, вполовину и так оставить.

>> No.37652  

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

>> No.37653  

>>37652
Да, странный дебуг. Еще в нем не хватает сортировки по номеру задания, ящитаю.

>> No.37677  

>>37652

>есть ли возможность для неактивных зон на карте отображать хотя бы картинку? Прозрачный экран - это некрасиво. Или, у меня что-то не так...

Не очень тебя понял. Можешь сделать скриншот текущего поведения и кривую фотожабу в пейнте ожидаемого поведения?

>>37652>>37653

>не даёт доступа к меню заданий, а сразу выводит зарисовки анонов
>еще в нем не хватает сортировки по номеру задания, ящитаю.

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

>> No.37678  

Сейберы, у меня время на 3й урок время будет только к выходным, вы подождите меня.

>> No.37696  
Файл: 1386317694416.jpg -(306 KB, 1920x1080, scren.jpg)
306

>>37677

>кривую фотожабу в пейнте

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

>> No.37697  

>>37696 А, ты про дефольтную заглушку. Вообще, этот функционал никем особо никогда не использовался, так что так и остался недописанным. Насколько я помню, там при регистрации списка зон карты указывается, какой фон для каждой зоны отображать. Видимо, кто-то из проклятых мудаков (может и я) в какой-то момент это сломал, а раз функционал никому был не нужен, никто и не заметил. Посмотреть смогу только вечером, а ты пока глянь в сторону media.rpy и других мест, может там просто именование картинок съехало или какая функция-обёртка умерла.

>> No.37698  

>>37696
Посчитав, понял что пятью строками не ограничиться...
Блин!

>> No.37699  

Со свободным временем, в которое я собирался выполнять задания (и уже почти всё сделал по первому уроку) случилась бида. Пожалуй, лучше мне побыть наблюдателем. У меня тут вопрос по редакторам:
>>37332, >>37334 Чем они хоть отличаются-то? А то ставить каждый и проверять функционал, или долго гуглить, как-то лень.
Пользователь NotePad++ и AkelPad

>> No.37700  
> случилась бида. Пожалуй, лучше мне побыть наблюдателем.

Очень жаль.

>> No.37715  

>>37698 В общем, самое простое, это внутри nothing_here использовать в качестве фона store.map_zones[global_map_result]["default_bg"], предварительно нормально его заполнив в media.rpy

>> No.37771  

Кажется, домашка оказалась слишком сложной и все разбежались...

>> No.37772  

>>37771
Пропало вдохновение. Дофига скреативить надо, я не могу столько перед сессией.

>> No.37773  

>>37772 Можно делать частями.

>> No.37781  

>>37773
Я бы выложил частями, но лучше всё сразу.

>> No.37791  

>>37771
Студент 2 не разбежался.
Просто у него большая концесеместровая запарка.

>> No.37846  

>>37038

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

Условие всё ещё в силе.

>> No.37847  

>>37846
Да и пофиг. И еще бамплимит.

>> No.37848  

>>37847
Сессия важнее.

>> No.37849  
Файл: 1386764678244.jpg -(91 KB, 624x807, 1372363475952.jpg)
91

>>37848 Хороших экзаменов.

>> No.37850  

>>37849
Еще и зачеты сначала, и допуски-лабы.

>> No.37851  
Файл: 1386765709077.jpg -(167 KB, 500x598, CatGirl.jpeg)
167

>>37850 Окей, держи ещё.

>> No.37852  

>>37846

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

Разумеется.
Просто небольшая сессионная пауза.

>> No.37853  
Файл: 1386766162661.jpg -(145 KB, 600x800, Samurai_cat_girl_by_tickledpinky.jpg)
145

>>37852 И тебе хороших экзаменов.

>> No.38042  

Бамплимит. Теперь кружок кибернетики тут: >>38012



Удалить сообщение []
Пароль
[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] - [Архив - Каталог - К доске] [Главная]