Discuss how to use the Ren'Py engine to create visual novels and story-based games. New releases are announced in this section.
Forum rules
This is the right place for Ren'Py help. Please ask one question per thread, use a descriptive subject like 'NotFound error in option.rpy' , and include all the relevant information - especially any relevant code and traceback messages. Use the code tag to format scripts.
This is a pre-release version of Ren'Py. Please test it and report bugs, but don't release games with it until it becomes final.
I'm pleased to announce Ren'Py 6.16 "In the Arena". This release brings with it:
Improved Android support, including the ability to build APKs from the launcher, support for Expansion APKs, and support for televison-based consoles like the OUYA.
The ability to associate JSON information with a save file, and access that information in the load and save screens.
Save file synchronization when Ren'Py is run from a shared directory.
Support for a creator dumping the text of the game script, and for automatically playing appropriately-named voice files.
Improvements to the gallery (including a new navigation overlay) and the music room (such as shuffle, loop, and single-track toggles.)
As well as a number of minor improvements and bugfixes.
This release has been brought to you by:
kyouryuukunn
Koichi "vbkaisetsu" Akabe
Tom "PyTom" Rothamel
With thanks to antoinentx for improving support for international directories, and everyone who contributed ideas, bug reports, and feedback to Ren'Py development.
PyTom wrote:Improved Android support, including the ability to build APKs from the launcher, support for Expansion APKs, and support for televison-based consoles like the OUYA.
Wow, thanks! I'm playing with this.
It's true that the Android screen asks the user to download first the RAPT, and gives the link. But it's possible to clic the "Install SDK & Create Keys" without the RAPT, and then:
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/android.rpy", line 438, in script
File "game/android.rpy", line 440, in python
AttributeError: 'NoneType' object has no attribute 'install_sdk'
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "C:\Users\f\Documents\renpy-6.16.0-sdk\renpy\execution.py", line 288, in run
node.execute()
File "C:\Users\f\Documents\renpy-6.16.0-sdk\renpy\ast.py", line 720, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "C:\Users\f\Documents\renpy-6.16.0-sdk\renpy\python.py", line 1304, in py_exec_bytecode
exec bytecode in globals, locals
File "game/android.rpy", line 440, in <module>
AttributeError: 'NoneType' object has no attribute 'install_sdk'
Windows-Vista-6.0.6001-SP1
Ren'Py 6.16.0.295
Ren'Py Launcher 6.16.0.295
I know that this is the user's (=my) fault, but maybe the button could be insensitive if the RAPT is not installed.
Just wondering, the OUYA uses IAP only, so it means that you can build only freewares for OUYA right? maybe is a rhetorical question but wanted to be sure thanks
You might be able to put something together with Pyjnius ( http://pyjnius.readthedocs.org/en/latest/ ), which Ren'Py includes. You can also add Java code to Ren'Py by adding it to the src directory inside RAPT.
A problem is that right now, In-App Purchasing on Android is really annoying - there are multiple stores, each store does thing differently, and it's all done asynchronously with a ton of callbacks and state machines. Simply learning how to do is is a day or two of work - and honestly, it's not work that interests me, so I'm not planning on doing it.
It's my hope that someone will put together an easy-to-use synchronous library for in-app purchasing - something with a couple of functions I can just call in a thread. But until someone does so, I don't plan to work on IAP myself.
If someone else wants to write an IAP solution and contribute it back to the project I'd be happy to take it. (And help with Ren'Py-specific advice as necessary.)
Supporting creators since 2004 (When was the last time you backed up your game?)
1 Open Lancher and open tutorial.
2 Start the game.
3 Open the game menu.
5 Open the "auto" page.
4 click "Quit" and close a prompt.
5 Do No4 again and again.
6 The below error happens.
I'm sorry, but an uncaught exception occurred.
While running game code:
IOError: [Errno 2] No such file or directory: 'C:\\Documents and Settings\\kuma\\Application Data/RenPy/launcher-4\\persistent.new'
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "Z:\renpy-6.16.0-sdk\renpy\bootstrap.py", line 265, in bootstrap
renpy.main.main()
File "Z:\renpy-6.16.0-sdk\renpy\main.py", line 330, in main
renpy.persistent.update(True)
File "Z:\renpy-6.16.0-sdk\renpy\persistent.py", line 354, in update
save()
File "Z:\renpy-6.16.0-sdk\renpy\persistent.py", line 364, in save
renpy.loadsave.location.save_persistent(data)
File "Z:\renpy-6.16.0-sdk\renpy\savelocation.py", line 419, in save_persistent
l.save_persistent(data)
File "Z:\renpy-6.16.0-sdk\renpy\savelocation.py", line 291, in save_persistent
with open(fn_new, "wb") as f:
IOError: [Errno 2] No such file or directory: 'C:\\Documents and Settings\\kuma\\Application Data/RenPy/launcher-4\\persistent.new'
Sorry, that is my mistaken traceback.
The Correct traceback is below.
===========================================
I'm sorry, but an uncaught exception occurred.
While running game code:
File "renpy/common/_layout/screen_load_save.rpym", line 17, in script
File "game/screens.rpy", line 312, in python
File "game/screens.rpy", line 295, in python
File "renpy/common/00action_file.rpy", line 113, in python
IOError: [Errno 2] No such file or directory: u'C:\\renpy-6.16.0-sdk\\tutorial/game\\saves\\auto-2-LT1.save'
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "C:\renpy-6.16.0-sdk\renpy\execution.py", line 288, in run
node.execute()
File "C:\renpy-6.16.0-sdk\renpy\ast.py", line 720, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "C:\renpy-6.16.0-sdk\renpy\python.py", line 1304, in py_exec_bytecode
exec bytecode in globals, locals
File "renpy/common/_layout/screen_load_save.rpym", line 17, in <module>
$ ui.interact()
File "C:\renpy-6.16.0-sdk\renpy\ui.py", line 237, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "C:\renpy-6.16.0-sdk\renpy\display\core.py", line 1846, in interact
repeat, rv = self.interact_core(preloads=preloads, **kwargs)
File "C:\renpy-6.16.0-sdk\renpy\display\core.py", line 2088, in interact_core
root_widget.visit_all(lambda i : i.per_interact())
File "C:\renpy-6.16.0-sdk\renpy\display\core.py", line 246, in visit_all
d.visit_all(callback)
File "C:\renpy-6.16.0-sdk\renpy\display\core.py", line 246, in visit_all
d.visit_all(callback)
File "C:\renpy-6.16.0-sdk\renpy\display\core.py", line 246, in visit_all
d.visit_all(callback)
File "C:\renpy-6.16.0-sdk\renpy\display\core.py", line 246, in visit_all
d.visit_all(callback)
File "C:\renpy-6.16.0-sdk\renpy\display\core.py", line 248, in visit_all
callback(self)
File "C:\renpy-6.16.0-sdk\renpy\display\core.py", line 2088, in <lambda>
root_widget.visit_all(lambda i : i.per_interact())
File "C:\renpy-6.16.0-sdk\renpy\display\screen.py", line 166, in per_interact
self.update()
File "C:\renpy-6.16.0-sdk\renpy\display\screen.py", line 266, in update
self.screen.function(**self.scope)
File "C:\renpy-6.16.0-sdk\renpy\screenlang.py", line 1217, in __call__
renpy.python.py_exec_bytecode(self.code.bytecode, locals=scope)
File "C:\renpy-6.16.0-sdk\renpy\python.py", line 1304, in py_exec_bytecode
exec bytecode in globals, locals
File "game/screens.rpy", line 312, in <module>
use file_picker
File "C:\renpy-6.16.0-sdk\renpy\display\screen.py", line 595, in use_screen
screen.function(**scope)
File "C:\renpy-6.16.0-sdk\renpy\screenlang.py", line 1217, in __call__
renpy.python.py_exec_bytecode(self.code.bytecode, locals=scope)
File "C:\renpy-6.16.0-sdk\renpy\python.py", line 1304, in py_exec_bytecode
exec bytecode in globals, locals
File "game/screens.rpy", line 295, in <module>
add FileScreenshot(i)
File "renpy/common/00action_file.rpy", line 113, in FileScreenshot
screenshot = renpy.slot_screenshot(__slotname(name, page))
File "C:\renpy-6.16.0-sdk\renpy\loadsave.py", line 528, in slot_screenshot
return get_cache(slotname).get_screenshot()
File "C:\renpy-6.16.0-sdk\renpy\loadsave.py", line 643, in get_screenshot
rv = self.screenshot = location.screenshot(self.slotname)
File "C:\renpy-6.16.0-sdk\renpy\savelocation.py", line 393, in screenshot
return l.screenshot(slotname)
File "C:\renpy-6.16.0-sdk\renpy\savelocation.py", line 207, in screenshot
zf = zipfile.ZipFile(filename, "r")
File "/home/tom/ab/x64lucid-deps/install/lib/python2.7/zipfile.py", line 701, in __init__
IOError: [Errno 2] No such file or directory: u'C:\\renpy-6.16.0-sdk\\tutorial/game\\saves\\auto-2-LT1.save'
Windows-XP-5.1.2600-SP3
Ren'Py 6.16.0.295
Ren'Py Tutorial 6.16 "In the Arena"
==========================================================
And C:\\renpy-6.16.0-sdk\\tutorial/game\\saves\\auto-2-LT1.save exists.
I've released 6.16.0.335, the second pre-release, to the same place. You can update Ren'Py, but you'll need to re-download RAPT and unzip it over the current RAPT.
This release fixes the bugs mentioned above, which stemmed from a race condition between auto-save and the file display code. It also changes config.auto_voice so that it allows a function, and fixes the auto-voice code in the case where there's only a single voiced line. Finally, it includes a lot of documentation improvements contributed by akakyouryuu and myself.
Please, download it and check it out. (We especially need people who do complex things with persistent to make sure that works.)
Supporting creators since 2004 (When was the last time you backed up your game?)
Best types of beta testers? Idiots like me: downloaded and, on second attempt, made a successful Android build of "The Question." On my third pass, using 'Build & Install,' it gets to the point where...
[echo]Installing C:\[location] onto default emulator or device...
And just hangs there, doing nothing. My Android Smartphone is physically attached to my computer via a USB cable and it powered on. Please point out my stupidity, if you'd be so kind.