Перейти к содержанию
Обновление форума
Опубликовано
comment_1946405

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

Я взял на себя смелость и создал локализацию игрового интерфейса движка (файл template\localize.rpy) а также перевёл на русский демонстрацию. Всё это согласованно с создателем движка и включено в распространяемый архив, доступный с [url="http://www.renpy.org/wiki/renpy/rus" target="_blank" rel="nofollow">Русской Странички движка Ren'Py

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

Спойлер
(не ждите ничего сверхъестественного. Сделана на скорую руку, только как пример. Приведённая в игре информация может быть предметом дискуссии. Если считаете, что она неточна -- милости прошу.)

 

От всей души надеюсь, что вас это заинтересует.

И помните, теперь судьба визуальных новелл на русском и в ваших руках!

 

ЗЫ. ОГРОМНАЯ просьба: протестируйте демо и файл локализации на предмет очепяток и отпишитесь сюда. Пожалуйста!

Изменено пользователем Гость (смотреть историю редактирования)

Цензуре - твёрдое и решительное "НЕТ"!!!

YesToFreedom.org

  • Ответов 1 тыс
  • Просмотры 379,1 тыс
  • Создана
  • Последний ответ

Топ авторов темы

Популярные посты

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

  • Рен'пи ожидал конец строки, а обнаружил двоеточие... (должно быть просто <jump dush>) Двоеточие ставится в конце первой строки блока - оно показывает, что последующие строки этого блока должны и

  • Что ж, не думаю что это хорошо браться с середины, но надо же хоть как то начинать)) К концку недели ждите первый перевод... наверно по порядку, так что - ATL. Может кому пример подам ^_^   Кому инте

Изображения в теме

Рекомендуемые сообщения

Опубликовано
comment_2735798

Запустить можно только хэлп просто так, если надо запустить другой файл, то тут уже питон нужен.

http://python.su/forum/viewtopic.php?id=3477

Не закрывай рта тем кто открывает тебе глаза.

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

Опубликовано
comment_2735803
Мне нужно запустить другую игру сделанную так же на Ren'Py а не другую программу (хотя если можно запустить другую программу я бы это то же использовал).
Опубликовано
comment_2735813
Запустить-то теоретически можно - смотри ссылку в моём предыдущем посте, но для этого надо применить вставку на чистом питоне.

Не закрывай рта тем кто открывает тебе глаза.

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

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

Изменено пользователем Radogast (смотреть историю редактирования)

Опубликовано
comment_2735841
Может я просто не так выразился. Вся игра состоит из нескольких частей (tutorial_playing.rpy, tutorial_quickstart.rpy, tutorial_sprite.rpy и т.д.)к которым обращаются по ходу программы. А мне нужно обращаться к этим частям из главного меню.

Изменено пользователем Radogast (смотреть историю редактирования)

Опубликовано
comment_2735912

Radogast, из главного меню не получится, а вот сразу после нажатия "новая игра" - там можешь вставить какое хочешь меню. Не получится так как должна быть вызвана Start(), иначе половина функций не движка не запустится, а чтобы её изменить, надо в сам движок лезть.

 

Лейтенант

1) Установи яву (Java Runtime Environment)

2) Либо используй другой редактор, например *.rpy можно открыть в Notepad++ и выставить подсветку синтаксиса Питона (синтаксис > P > Python).

Не закрывай рта тем кто открывает тебе глаза.

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

Опубликовано
comment_2736041
Жаль конечно, но все равно спасибо :). А можно сделать так что бы игра не продолжалась дальше пока игрок не сохраниться, или автосохранение сделать можно?
Опубликовано
comment_2736095

Визуальная новелла «Проклятие мертвой хозяйки».

Любительская работа на основе конструктора "Novelty". Как всегда с заимствованным артом и частью музыки (к сожалению, за неимением таланта :( )

В новелле три варианта развития событий в зависимости от выбора игрока и 4-5 концовок. Среднее время ~15-20 мин. Размер ~ 84 Mb

1 архив:

http://narod.ru/disk/38595811001/%D0%9F%D1%80%D0%BE%D0%BA%D0%BB%D1%8F%D1%82%D0%B8%D0%B5%20%D0%BC%D0%B5%D1%80%D1%82%D0%B2%D0%BE%D0%B9%20%D1%85%D0%BE%D0%B7%D1%8F%D0%B9%D0%BA%D0%B8.part1.rar.html

2 архив:

http://narod.ru/disk/38591764001/%D0%9F%D1%80%D0%BE%D0%BA%D0%BB%D1%8F%D1%82%D0%B8%D0%B5%20%D0%BC%D0%B5%D1%80%D1%82%D0%B2%D0%BE%D0%B9%20%D1%85%D0%BE%D0%B7%D1%8F%D0%B9%D0%BA%D0%B8.part2.rar.html

3 архив:

http://narod.ru/disk/38596813001/%D0%9F%D1%80%D0%BE%D0%BA%D0%BB%D1%8F%D1%82%D0%B8%D0%B5%20%D0%BC%D0%B5%D1%80%D1%82%D0%B2%D0%BE%D0%B9%20%D1%85%D0%BE%D0%B7%D1%8F%D0%B9%D0%BA%D0%B8.part3.rar.html

 

Существующие известные проблемы (или фичи конструктора Novelty):

- иногда после загрузки сохранения пропадает фон или музыка (лечится прохождением игры за один раз ).

- на Висте и 7-ке при выходе из игры выдается ошибка (просто игнорируйте)

- иногда (у меня на нетбуке) требует найти некий .dll (лечится скачиванием и установкой оного)

Опубликовано
comment_2736154

Кстати, кавычки не надо, av = renpy.random.randint(1, 9) возврашает число, а ты его пытаешься сравнивать со строкой из одного символа.

Хотя хз, может и заработает, я не пробовал так.

Так я ещё только начинаю постигать renpy no jutsu и видимо не так понял из написанного в руководстве для начинающих.))

 

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

Нас мало, но мы в сэйлор-фуку!

[Neko][ Ня!][Общество любителей кошек][Дядьки][Alter Madness] team's

Опубликовано
comment_2736257

Radogast

Можно, через механизм быстрого сохранения.

 

Jacksom

Что, новелти доделали таки? Или ты на текущей? Я как-то пытался разобраться но ниасилил ибо поделка сыра как моя оболочка RenaiWorkshop для написания новелл на RenPy без программирования. Но я свою начал два дня назад, а новелти думал RIP.

 

RenaiWorkshop - это таже RenPy-новелла, только написанная на чистом питоне, а текст читается из txt-файла. Создание состоит в том чтобы набрать ресурсов, положить их в соответствующие папки (папки переименовывать нельзя), и по ходу чтения "на лету" подключать, украшая. На текущем этапе можно сделать что-нибудь вроде "Ночи Незабудок" путём добавления к тексту фоновых картинок и музыки. Только линейное, развилок пока нет.

 

В комплекте технодемка, перелистнуть - пробел, текст находится в файле text\start.txt.

UPD: пока не собирался выкладывать, но к слову пришлось, да и версия работоспособная.

 

MrStitch

Используй функцию renpy.notyfy(str(имя переменной)) - вывод уведомления в верхнем левом углу экрана. Посмотри какие значения принимают пересенные. Также попробуй сделать как я сказал, и есть ещё вариант, специально для этих случает - renpy.random.choice(['вариант1','вариант2']).

Изменено пользователем Элионт (смотреть историю редактирования)

Не закрывай рта тем кто открывает тебе глаза.

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

Опубликовано
comment_2736304

 

Jacksom

Что, новелти доделали таки? Или ты на текущей?

 

 

Скачивал почти год назад. Очевидно та же самая версия. На Висте не работала, но 7-ку уважает. С моим уровнем это самое то. Именно, что конструктор. Я подобными демо-недоделками отрабатываю технологии и возможности. Мне скрипты пока не важны. Ветки делает и ладно ))

Опубликовано
comment_2738014

I'm sorry, but an uncaught exception occurred.

 

While running game code:

File "game/script.rpy", line 242, in script

centered ""

UnicodeDecodeError: 'utf8' codec can't decode byte 0xd0 in position 56: invalid continuation byte

 

-- Full Traceback ------------------------------------------------------------

 

Full traceback:

File "D:\Documents and Settings\Admin\������� ����\�����\renpy-6.13.7\renpy\bootstrap.py", line 276, in bootstrap

File "D:\Documents and Settings\Admin\������� ����\�����\renpy-6.13.7\renpy\main.py", line 354, in main

File "D:\Documents and Settings\Admin\������� ����\�����\renpy-6.13.7\renpy\main.py", line 95, in run

File "D:\Documents and Settings\Admin\������� ����\�����\renpy-6.13.7\renpy\execution.py", line 267, in run

File "D:\Documents and Settings\Admin\������� ����\�����\renpy-6.13.7\renpy\bootstrap.py", line 451, in report_exception

File "encodings\utf_8.pyo", line 16, in decode

UnicodeDecodeError: 'utf8' codec can't decode byte 0xd0 in position 56: invalid continuation byte

 

Windows-XP-5.1.2600-SP3

Ren'Py 6.13.7.1646

A Ren'Py Game 0.0

 

Что не так?

 

Выдает когда пишу так : $ ui.image ("zadanie1.jpg", xpos = 0.557, yalign = 0.37, zoom = 0.25)

Изменено пользователем Radogast (смотреть историю редактирования)

Опубликовано
comment_2738358

������� ����\�����

Во первых - без кириллицы в пути.

Во вторых - а зачем ui.image() если есть скрины? Хотя никто не запрещает, но используя класс ui многого что позволяют скрины не сделаешь.

Не закрывай рта тем кто открывает тебе глаза.

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

Опубликовано
comment_2738661
Уважаемы гуру. Хотелось бы набраться наглости и попросить код для миниигры, которая часто встречается в играх. Смысл такой в на экране быстро высвечиваются стрелки вправо влево вверх вниз в рандомной последовательности, а игрок должен успевать нажать соответствующую клавишу. Допустим 10 последовательностей. Ошибся или не успел нажать - проиграл, прошел все десять выиграл. Очень надо, т.к. на этом строится вся моя визуальная новелла. Сам, увы, пока сообразить, как это сделать не могу. Заранее спасибо.
Опубликовано
comment_2738875

код для миниигры

 

Писать за тебя не буду, но материалы подкину:

1) Управление с клавиатуры - тут устаревший код, требуется некоторая модификация:

 

    # обработка нажатий клавиатуры для
   # выполнения своих, а не предусмотренных движком функций
   class KeyboardListener(renpy.Displayable):

       def __init__(self):
           renpy.Displayable.__init__(self)

       # This function listens for events.
       def event(self, ev, x, y, st):

           # We only care about keydown events.
           if ev.type != pygame.KEYDOWN:
               return
           
           # обрабатываем событие
           if ev.key == pygame.K_SPACE:
               renpy.notify("Нажата клавиша --пробел--")
               
           return

       # Return a small empty render, so we get events.
       def render(self, width, height, st, at):
           return renpy.Render(1, 1)

   # Create a Listener to actually listen for the code.
   keyboard_listener = KeyboardListener()
   
screen Keyboard_Listener:
   add(keyboard_listener)

label start:
   show screen Keyboard_Listener
    и далее по скрипту....  

 

2) Коды всех клавиш

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

Не закрывай рта тем кто открывает тебе глаза.

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

  • 2 недели спустя...
Опубликовано
comment_2742320
Добрый вечер. Это снова я со своим нубским вопросом. В игре есть меню где каждый пункт запускает видео, но после видео игра заканчивается. Как сделать так что бы после видео игра не заканчивалась а возвращалась в меню? Побывал с метками, выдает ошибку.
Опубликовано
comment_2742333

но после видео игра заканчивается

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

А на будущее - слишком размыто проблему описал. А где код с видео, "пробование с метками" и какую ошибку при этом выдаёт? Сорри, шарить по мозгам чере веб-интерфейс не умею ^_o

Не закрывай рта тем кто открывает тебе глаза.

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

Опубликовано
comment_2742372
Получилось, пробелов мало наставил:) Спасибо за помощь:)

Изменено пользователем Radogast (смотреть историю редактирования)

  • 1 месяц спустя...
Опубликовано
comment_2752033

Посидел вечерок и организовал таймер на версии Ренпи 6-12-2.Под спойлером полный код.

Создай новый проект и замени содержимое script.rpy содержимым спойлера.

 


define e = Character('Eileen', color="#c8ffc8")

init python:
   import thread,time
   
   # функция, которая будет запущена в другом потоке
   def timer():
       renpy.notify(u"Таймер запущен.")
       while True: # бесконечный цикл
           time.sleep(1) # ждём секунду
           persistent.timer_counter -= 1 # уменьшаем счётчик
           renpy.notify(u"%d"%persistent.timer_counter) # оповещаем пользователя
               
           if persistent.timer_counter == 0: # время почти вышло
               time.sleep(1) # последняя секунда
               persistent.timer_result = False # результат - не успели
               return
	
   # запуск таймера
   def start_timer(time):
       persistent.timer_counter = time # время в секундах 
       persistent.timer_result = True # результат Истина пока время не истечёт
       thread.start_new_thread(timer,()) # запускаем поток.
	
   # переход по результатам таймера
   def timed_jump(success,failure):
       # если успели
       if persistent.timer_result:
           persistent.timer_counter = 1 # фактически, это отключает таймер
           renpy.jump(success) 
       # если не успели
       else:
           renpy.jump(failure)
	
   # отключение таймера и переход, вне зависимости от результатов
   def no_timed_jump(destination):
       persistent.timer_counter = 1
       renpy.jump(destination)
    	
# Поехали!     	
label start:
   e "На следующий выбор вам будет дано ограниченное время."
   $start_timer(10) # запускаем таймер на 10 секунд
   menu timed_menu:
       "Выбирай мудро (и быстро)!"
       "Сесть на автобус":
           $timed_jump("MadeInTime","TooSlow")
       "Подождать другого":
           $no_timed_jump("WaitingAnotherBus")
           
   return

label MadeInTime:
   e "Вы успели."
   return

label TooSlow:
   e "Автобус ушёл."
   jump WaitingAnotherBus
   return    
   
label WaitingAnotherBus:
   e "Подожду другого, может хоть там свободные места будут."
   return    

 

Если что - обращайся.

 

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

 

Ну например суть вот в чём:

Высвечивается меню с выбором вариантов действия и допустим игроку даётся на размышление 3 сек. Если он в это время ничего не предпримет и таймер будет равен нулю, то игрока выкидывает в другой лейбл.

 

Просто хочется проделать тот же фокус, что и в Сакуре Тайсен, но получается это только в версии 6.9.3 (хотя и коряво, ибо при таком принудительном перекидывании потом при выходе из игры появляется сообщение об утрате данных)

Опубликовано
comment_2753439

3 секунды мало )) - за это время прочитать и кликнуть не успеешь.

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

Не закрывай рта тем кто открывает тебе глаза.

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

Опубликовано
comment_2753458

3 секунды мало )) - за это время прочитать и кликнуть не успеешь.

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

 

3 секунды сферическое число в вакууме :)

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

Опубликовано
comment_2753588
Не получится (( - таймер работает в другом потоке и попытка выполнить джамп из него приведёт к вылету.

Не закрывай рта тем кто открывает тебе глаза.

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

Опубликовано
comment_2755198

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

Картинки в фотошопе нарисовала, код нашла. А вот куда вставить не знаю. Версия движка 6.9.3

 

init -2 python:
   layout.imagemap_load_save(
       "loadsave_ground.png",
       "loadsave_idle.png",
       "loadsave_hover.png",
       "loadsave_selected_idle.png",
       "loadsave_selected_hover.png",
       [
           (58, 26, 140, 103, "previous"),
           (140, 26, 227, 103, "page_auto"),
           (227, 26, 310, 103, "page_1"),
           (310, 26, 391, 103, "page_2"),
           (391, 26, 474, 103, "page_3"),
           (474, 26, 559, 103, "page_4"),
           (559, 26, 640, 103, "page_5"),
           (640, 26, 725, 103, "next"),
                              
           (32, 134, 271, 344, "slot_0"),
           (271, 134, 512, 344, "slot_1"),
           (512, 134, 754, 344, "slot_2"),
           ])
   

   style.file_picker_ss_window.xalign = 0.5
   style.file_picker_ss_window.yalign = 0.35
   style.file_picker_text_window.xalign = 0.5
   style.file_picker_text_window.yalign = .85    
   config.thumbnail_width = 125
   config.thumbnail_height = 93

Опубликовано
comment_2755219

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

 

хм... а если пустить в одном потоке?

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

Важная информация

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.