Ren'Py 8.0 is finally released... do not rush to it.

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,369
15,285
It's a big news for Ren'Py authors, but it come with a big warning, reason for this post.

The version 8.0 see Ren'Py pass from the old, and now unsupported, Python 2.7, to the recent and supported Python 3.9. This imply a lot of subtle changes in all Python parts, as well as in Ren'Py ones.
The most obvious one, divisions of integers will not anymore return an integer. It can seem futile, but it already broke at least one game in the past, when the branch 7.x slowly introduced the port to Python 3.x. The game used a division to decide what image to display, assuming to have file names like "base0.jpg" and other "base2.jpg". Except that, the result now being float values, it got names like "base0.123.jpg" and others "base2.5637.jpg"... Images that obviously wasn't present.

By themselves, those changes are nothing impossible to deal with. Especially if you use really few Python. But they can be really annoying, especially when the player who report an error don't know how to explain what happen. You'll end finding it, and fixing it, possibly with some help, but you'll loose time doing so.
Therefore, I want to remember you that the branch 8.x of Ren'Py do not come alone. In parallel, PyTom continue the branch 7.x. The version 7.5 have been released at the same time that the version 8.0. It have all the novelties and fixes that come with the version 8.x, but is built around Python 2.7 as usual.
This permit you to continue to devel your game at your speed, while taking benefit from the fixes and additions, without having to care yet about porting your code to Python 3.9. So, do not switch to the branch 8.x, unless you're starting a new game. Python 2.7 not being supported anymore is not an issue, and do not lower the security of your game (and by extension of your players).


This being said, I remind that since the version 7.3 (or is it the 7.4, I have a sudden doubt), Ren'Py added an instruction, rpy python 3. Every rpy file starting by this line will be proceeded as if Ren'Py was using Python 3.9. This permit you to slowly, file by file, port your code to the future.
I guess that the branch 7.x will continue for one or two years, so take your time, and stay on this branch as long as you can, or need, in order to not unknowingly break your game.
 

Rich

Old Fart
Modder
Donor
Respected User
Game Developer
Jun 25, 2017
2,490
7,035
Personally, I'm looking forward to the continuation of the "8.0" series, because I've been using Python 3 for years and always hiccup a bit when I have to fall back to 2.7 for Ren'py.

That being said, I echo what anne O'nymous says - this is a very experimental time for Ren'py, and there's zero reason to jump on 8.0 just because it's the latest and greatest. Stick with what works for now and wait for it to mature.
 

MissFortune

I Was Once, Possibly, Maybe, Perhaps… A Harem King
Respected User
Game Developer
Aug 17, 2019
4,914
8,026
Does Ren'Py 8.0 have any new features for VN developers out-of-the-box? Or is it just what's under the hood that's changed?
As far as I can tell, Ren'Py has basically been the same on the surface for a while now with all the changes being under the hood for the most part. Don't really see it changing in that regard. The important is obviously the newer python version, and slightly less major but still notable, is Ren'Py bringing support for Visual Studio Code as Microsoft is killing Atom and the removal of 32-bit support.
 

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,369
15,285
Does Ren'Py 8.0 have any new features for VN developers out-of-the-box? Or is it just what's under the hood that's changed?
As I said, the 8.x branch have nothing that isn't also in the 7.5.x one. The two branches do exactly the same, except that one do it with Python 2.7, and the other with python 3.9.
By example, PyTom released a 8.0.1 few hours ago to fix some issues, and released a 7.5.1 in the exact same time, to fix the exact same issues.


As far as I can tell, Ren'Py has basically been the same on the surface for a while now with all the changes being under the hood for the most part.
Yes and no. There isn't much big changes since the 7.4.6 one year ago, that introduced the model based approach, first step to 3D in Ren'Py. But the few changes that happened aren't insignificant. Among them there's:

You can make a statement last as long as needed by Ren'Py to predict the future images. I haven't tested it, but if it works with videos it can be a big improvement.
A menu can now automatically repeat the last dialog line when there's caption defined, through . This permit to place the dialog line as effective part of the dialog, then still have it displayed when the menu will pop-up. Useful for the authors, and also useful for the players who skip a part already played because they had to restart, or are following more than one route.
There's a that permit, among other things, to avoid the use of imagebutton tricks to close a modal screen. It can also probably replace the same imagebutton used to fake a modal screen when in fact you just used a showif to display something on top of its screen.
And that permit amazing tricks by placing a dynamic element near to the actually focused point. This with the help of a new set of functions that give you information regarding the said focused element ; what by itself can also be useful for other things. Now tooltips can be placed near to their button, you can surely have more visual effects when a button is hovered, hovering menu (like in some AAA games), and probably more.
Even more interesting, the expression property now also apply to screens. You can show, hide or call them based on an expression, not just on hard coded names. In addition to that, you can now use the Hide screen action without screen name, what will close the current screen ; this permit to have an unified UI for your screens shown/called with the said expression property.
Oh, and you can have overlay screens that are shown even over the game menus ; who wanted to do something like this ?
The screen statement can proceed a key, then pass it to other key statements, possibly in other screens. It can feel useless, but it open the gate to lot of possibilities for dynamic games. You'll have the main screen that effectively proceed the key, and you'll switch between the screens displayed on top of it ro do some pre-processing that would modulate the effect ; better than having to pass through a lot if.

So, yes, not changes as significant than the model based approach, the shaders and the support for Live2D. But still some really interesting changes. And, as I said above, they are available both in the 8.x branch and the 7.5.x one.