Перейти к содержимому
Открыть в приложении

Лучший способ просмотра. Узнать больше.

АнимеФорум

Полноэкранное приложение на домашнем экране с push-уведомлениями, значками и другими функциями.

Чтобы установить это приложение на iOS и iPados
  1. Нажмите на иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите Добавить на домашний экран.
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите на меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на домашний экран или Установить приложение.
  3. Подтвердите, нажав Установить.

Визуальные новеллы своими руками.

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

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

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

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

 

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

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

 

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

Отредактировано от Гость (см. историю изменений)

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

YesToFreedom.org

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

Лучшие авторы в этой теме

Самые популярные посты

  • Алекс__
    Алекс__

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

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

  • Вот файл немного доделанного (не полностью) перевода для новой версии Ren'Py 6.14.1 (Откуда взял первоначальный файл не помню. Может и с этого форума ) Скачать   Положить в <Ren'Py 6.14.1/launcher/

Опубликованные изображения

Рекомендуемые ответы

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

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

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

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

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

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

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

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

Отредактировано от Radogast (см. историю изменений)

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

Отредактировано от Radogast (см. историю изменений)

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

 

Лейтенант

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

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

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

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

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

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

Любительская работа на основе конструктора "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 (лечится скачиванием и установкой оного)

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

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

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

 

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

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

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

Radogast

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

 

Jacksom

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

 

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

 

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

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

 

MrStitch

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

Отредактировано от Элионт (см. историю изменений)

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

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

 

Jacksom

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

 

 

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

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 (см. историю изменений)

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

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

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

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

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

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

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

 

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

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 недель позже...
Добрый вечер. Это снова я со своим нубским вопросом. В игре есть меню где каждый пункт запускает видео, но после видео игра заканчивается. Как сделать так что бы после видео игра не заканчивалась а возвращалась в меню? Побывал с метками, выдает ошибку.

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

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

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

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

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

  • 1 месяц позже...

Посидел вечерок и организовал таймер на версии Ренпи 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 (хотя и коряво, ибо при таком принудительном перекидывании потом при выходе из игры появляется сообщение об утрате данных)

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

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

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

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

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

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

 

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

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

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

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

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

Приветик всем, я совсем недавно начала знакомство с 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

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

 

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

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

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

Гость
Ответить на эту тему...

Последние посетители 0

  • Ни одного зарегистрированного пользователя не просматривает данную страницу.

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

Аккаунт

Навигация

Поиск

Настроить push-уведомления в браузере

Chrome (Android)
  1. Нажмите на значок замка рядом с адресной строкой.
  2. Выберите Разрешения → Уведомления.
  3. Настройте предпочтения.
Chrome (Desktop)
  1. Нажмите на значок замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите пункт Уведомления и настройте параметры по своему усмотрению.