VN I'm close to wrapping up development on a new VN engine prototype and I need some input.

What kind of save features do you want to see in my engine at bare minimum?

  • Just an autosave and a dozen or so save slots.

    Votes: 0 0.0%
  • Just an autosave, as long as more saving options get added after launch.

    Votes: 0 0.0%

  • Total voters
    25
  • Poll closed .
Status
Not open for further replies.

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,398
15,311
[Yeah, I know, I'm grumpy again]

I ask you guys, what Ren'Py features do you wish were better?
Its users.

Globally speaking, there's nothing in this thread that can't already be done relatively easily by Ren'Py, even the phone system, if you take the time to read the documentation. And half of what is asked is already possible with less than 5 lines added to the right screen ; when then aren't natively available without changes.


• Chat history is always visible right to the beginning of the conversation.
H key.


- Inbuilt gallery functionality. Both for bonus images and replaying scenes.
This already exist in Ren'Py. A bit complex for people with few coding knowledge, but both the gallery functionality and the replay system exist and are really efficient.


- Inbuilt walkthrough/hint system. Pretty popular request from players, so making it easier for devs to do it themselves would be helpful.
Three lines in the "choice" screen, and the use of menu attributes.
Python:
screen choice(items):
    style_prefix "choice"

    vbox:
        for i in items:
            # <---
            if store.walkThroughIsOn:
                textbutton ( i.caption if not "hint" in i.kwargs else i.caption + "  [{color=#0F0}" + i.kwargs["hint"] + "{/color}]" ) action i.action
            else:
            # --->
                textbutton i.caption action i.action

label whatever:
    menu:
        "do this"( hint="This consequence" ):
            [...]
        "do that"( hint="That consequence" ):
            [...]

- Better system of managing save states, so saves don't get broken if a new variable or some other reference is added in the wrong place. This is probably more complex than I'm making it sound, though.
It's not "more complex", it's impossible.
Those errors happen because there's coders who don't care about what the documentation say regarding the way to declare a variable. They'll not care more with this new engine than they are doing with Ren'Py.


For the save system itself, [...] Renaming tabs and saves would keep their playthrough organised.
You can already rename save pages in Ren'Py ; click on the "page x" in top of the screen. As for naming the save files, it's natively supported. It's just that the default interface do not include the five/six lines needed to enter the name of the save.


Probably would be a pain in the ass to implement this, but honestly the Renpy save system mostly works fine as is, so would have to be something pretty good to provide a significant improvement.
In Ren'Py itself, doing what you want would need three lines and the change of two values.
Python:
screen file_slots(title):
   [...]
            # <---
            viewport:
                scrollbar "vertical"
                style "whatever you want"
            # --->

                # Change those values
                grid gui.file_slot_cols gui.file_slot_rows:
    [...]

I don't know what rollback means ,
Excuse-me, you want to make a game engine better than Ren'Py, and you don't know the most used and praised feature that Ren'Py offer ? The rollback is the possibility to revert the game to its previous state, step by step, technically up to an unlimited number of past interactions. What mean that, technically, you can finish the game, then play it backward and have the exact expected game state corresponding to the moment you now are in the game.
Practically, the number of step back is limited by the needed memory to store each one of them.


but as long as by "unlimited" you mean hundreds of slots the rest of those features will definitely be implemented.
Ren'Py have QWORD number of save pages that, once the interface tweaked to include a viewport (as shown above) can have QWORD number of save slots. I don't know what he meant by "unlimited", but even with the full default configuration Ren'Py offer billions of save slots to the players.


the thing I hate the most about renpy is how you can't chain animations while guaranteeing completed loops, and how you can't change any useful variables from inside animation loops.
You mean ATL animation ?
If yes, you can guaranty that the loops will be completed:
Python:
image myAnim:
    "image 1"
    pause 0.1
    block:
        "image 2"
        pause 0.1
        "image 3"
        pause 0.1
        repeat 3
    block:
        "image 4"
        pause 0.1
        "image 5"
        pause 0.1
        repeat 2
    function endMe

init python:
    def endMe( trans, st, at ):
        store.animationFinished = True
        return None

screen showAnim( animName ):
    timer 0.01 repeat True action If( store.animationFinished, [ SetVariable( "animationFinished", False ), Return() ], NullAction() )

    add animName

label whatever:
    call screen showAnim( myAnim )
And all values in an ATL code can be variables (if my memory don't betray me, they can also be returned by a callable).

And if you meant video animations, it's also possible with a simple hard pause (it's bad).


+Being able to decide whether you want to skip through unseen text or not
This should do it:
Python:
# shift + tab  to change betwee unseen text to seen only.
screen unseenSkip():
    key "shift_K_TAB" action Preference("skip", "toggle")
    if store._preferences.skip_unseen:
        text "unseen" xalign 1.0 yalign 0.0

init 10 python:
    config.overlay_screens.append( "unseenSkip" )
 

SecretSal

Active Member
Aug 25, 2016
797
1,869
anne O'nymous : Thanks for that, very thorough as usual. I know all those functionalities are possible with Renpy, but I figured if OP wanted to make a noob-friendly alternative to Renpy, having popular options like Gallery and Walkthrough already set up and requiring minimal extra work from the creator could be useful. Yes, it's easy enough to just add the relevant code yourself, but I'm assuming this is aimed at users who aren't familiar with code yet, otherwise I don't see how the new engine would provide anything different.

Also, the chat history was just a specification for the phone chat screen. Some popular phone chat modules work just like textboxes and show one message at a time and then clear the screen to show the next one. Just wanted to specify that I wanted the one that maintains the chat history in the message screen with another character. Again, I know that Renpy can already do it (several games already use it), just thought I'd add more detail in case they took that option seriously.

Just checking, with the code that you shared for the save page, could you add new viewports as a player when desired (if wanting to save on a different route), and switch between the created viewports by selecting the respective title? Because that's the only way I can think of to really improve the default save page functionality.

Overall, I agree that Renpy is robust enough as it is, but if someone wants to try make a more streamlined version, I'd be interested to see how they approach it. Talking about it and delivering are two very different things, of course. And I don't see anything replacing Renpy as the standard for VNs for a while in any case.
 
Dec 9, 2018
9
10
Excuse-me, you want to make a game engine better than Ren'Py, and you don't know the most used and praised feature that Ren'Py offer ? The rollback is the possibility to revert the game to its previous state, step by step, technically up to an unlimited number of past interactions.
I know what it is, just wasn't familiar with the terminology and I did achieve better rollback than Ren'Py offers before I quit the project. But realistically there is no reason for me to reinvent the wheel just to make VNs slightly more polished. Like you said, most of the features people want are already possible and it's up to the devs to implement them. The more I worked with Godot the more I realized how bad it actually was for a project like this. If I or anyone else decides to remake Ren'Py in the future it should probably be in Unity and even then it'd be pointless because anyone trying to make an actual game alongside a VN will likely be able to quickly make their own system or be satisfied with the multitude of VN add-ons the Unity Asset Store already has to offer.
 

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,398
15,311
[...] I did achieve better rollback than Ren'Py offers before I quit the project.
You did better than keeping a complete copy of all game's scopes ? Including, among other things, the none predictability of already done randomization, choice picked, and the possibility to voluntary exclude something from this copy ? And this, each time the game advance from one step.
Then when advancing backward, you did better than restoring this copy. And finally, when advancing forward again, you did better than picking the choice already made by the player, and returning the number previously generated each time there's a randomization.

For the readers not at ease with technical concept, basically speaking consider that "complete copy of all game's scopes" mean "saving the content of the whole part of the computer memory dedicated to the game". And if you have difficulties to see what can be done more than this, it's normal, because the answer is "nothing".
Not that Ren'Py is perfect, or the best game engine in the world. Just that doing a better rollback that its rollback is nearly impossible.
 
Status
Not open for further replies.