Alternatives to ren'py

uhohitsuhoh

Newbie
May 21, 2017
38
22
So I'm bored lately and decided to try messing with making a simple VN/choose your own adventure type game again.

Ren'py is by far my favorite platform to choose from when PLAYING these types of games. I love how easy it is to just right click and save, and how its all mouse oriented etc. There are a couple unity games I enjoy but in general I'd prefer everyone used Ren'py

Which is my problem now, when making my little trial run of a game. I can't code, Ren'py is the bane of my existence, I have no desire to learn it, I've tried from time to time but i tend to work from the beginning to end. Even in DAZ I know how i want stuff to go, but I will create each scene in order and not jump around. So when I want to do Ren'py its the same, I'll try to create a custom title screen, begin reading tutorials and looking at code and just get overwhelmed. So i say, well i'll come back to that. And I begin trying to create the first few scenes, and I have to hunt down how to make it so the main character can name himself and try to implement it and basically hit roadblocks every step of the way.

Basically I hate using ren'py, but i love other peoples finished products when using it.

The thing I've had the most success with is tyranobuilder. I can easily customize the layouts and UI, very easily do scenes, its just drag and drop. My only issue is the save screen blows. Can't figure out how to customize that outside of replacing their icons and background with mine. Also, its super VN centric, in the sense that scenes will be a static background, with characters overlayed and speech put in etc. So the same background is meant to be used for entire lengthy scenes.

I'm approaching it more as the background is everything. I'm trying to do a POV thing with DAZ where nothing is overlayed, everything is rendered in the scene, so each click/progression is a change in the "background" and i can't figure out how to make it INSTANT, like renpy. each click in renpy quickly loads the next image, where there is a slight transition in tyranobuilder.

So basically i guess i'm venting more than anything but a couple questions

As a consumer of these games and titles, when something isn't ren'py are you quick to dismiss it?

My main plan was to make a simple straightforward game first, to get the hang of daz and renpy and then make a big more full fledged game, with city interfaces, a phone, times of day scenarios etc. But I just can't get renpy at all. Does it make more sense to make a game in full in Tyranobuilder, like my first straightforward one i mean, and then see if I can't find someone fluent in ren'py to convert it to a Ren'py game?
 

Palanto

Active Member
Game Developer
Oct 4, 2017
964
1,841
... Well if it's going to be a simple VN renpy is easy to learn, if you want custom screens it takes a bit of learning, not much though... naming your character is all over the internet, google for it and you'll find a way to implement and how to use it in mere minutes.

But if renpy isn't for you, and tyrano isn't for you either, try
it's the visual novel engine made by the rpgmaker guys....
 

redknight00

I want to break free
Staff member
Moderator
Modder
Apr 30, 2017
4,551
20,219
I wouldn't recommend VNMaker for now, the feedback is that's still full of bugs since it's new and all.

Unity has some VN asset packs you can try, but I would say Ren'py is the easiest to learn if you're a beginner and take it easy, there's no need to go crazy on your first game.
 

uhohitsuhoh

Newbie
May 21, 2017
38
22
... Well if it's going to be a simple VN renpy is easy to learn, if you want custom screens it takes a bit of learning, not much though... naming your character is all over the internet, google for it and you'll find a way to implement and how to use it in mere minutes.

But if renpy isn't for you, and tyrano isn't for you either, try
it's the visual novel engine made by the rpgmaker guys....
It's not a problem finding solutions through google, its a problem implementing them. I'm completely code illiterate. It feels too daunting to try and do anything within ren'py. Tyrano builder is much more straight forward because its just dragging and dropping into a timeline. Drag and drop a text box, put the text in it, drag and drop the next image, put a text box on it etc.

While my first project is going to be simple and straight forward, I'd still like the presentation of it to be clean and unique. Even simple things in ren'py require to much time and knowledge to properly implement how I want to.

I thought about checking out unity but I figured that is coding based as well. I'll look into VN maker, but Im not sure how different it would be from tyranobuilder and since I have the basics of that down I don't know if I should attempt a whole new program.

My main problem is the fact that if it isn't a renpy game Im less likely to try it/play it. So I know making something outside of ren'py will probably be viewed the same way.

I'm thinking maybe I just make it in tyranobuilder and see if I cant get someone who is fluent with Ren'py to convert it over? I don't know lol.

I'm venting more than anything because I'm sitting on like 400 renders and I thought that would be the hardest part, but actually turning these renders into something is 10x the work it seems.
 
  • Like
Reactions: Palanto

TearStar

Developer of Lesbian/Futa Games
Game Developer
Mar 12, 2018
514
1,089
Well, Ren'py is easy to learn. But since it's not your taste try twine with sugarcube format.

Renpy is all about LABEL JUMP IF ELSE... Easier than anything that I found before. You can also try Visual C (C#) and create your engine. But that requires more time and harder (not that harder but requires more time in C#).

You can learn the basics about renpy in an hour (for me for instance)-
 
  • Like
Reactions: Palanto

Palanto

Active Member
Game Developer
Oct 4, 2017
964
1,841
well if your renders are full scene images (no overlay actors or stuff like that) then it's a simple:

scene imageName without the .jpg Or .Png
with dissolve (or any other transition you want to use (fade i.e. is like a blinking transition), or if you don't want a transition but an instant change of the image then just leave the "with dissolve" out. Btw. a "scene" always deletes the previous image and puts the new one in the background, so it's actually the only thing you'd need to use.

and a textbox is a simple "TEXT" <---
or if you want a specific character to say something you'd create a chracter like this:
define cl = Character("Claire", color="#935094")
and make her say something like this:
cl "Claire's Text <---"

So all in all a game in renpy isn't much harder to do than in tyranobuilder, just not a drag and drop kinda thing but just writing these small things. You wouldn't even need much to begin with :D

A full small game with player naming would look like this (everything behind -> # <- is a comment for you as information, it won't be read by ren'py):

script.rpy
Code:
define mc = Character("[McName]") # 1
define cl = Character("Claire", color="#935094") # 2

label start:
    scene black with dissolve

    while not name:
        $ McName = renpy.input("What's your name? Type in your first name and press ENTER")
        $ McName = name.strip()

### 3)

# 4:

    mc "Hi I'm [McName]! I live somewhere in this gameworld..."
    cl "Hello [McName]! I'm Claire and what is this [McName] about?"
    mc "Well, [McName] <- replaces this with the name the player gave me when the game started!"
    cl "Oh!! So if the player answered the question at game start and typed: Mike  , then all the [McName] things would be replaced with Mike ?"
    mc "Right, wherever you type in [McName] it gets automatically swapped with the name the player entered."
    "And so the two went to the park and ate ants to live happy ever after...."
  
    scene parkImageName with dissolve
 
    "Well, or so we thought..."
    mc "So, what is so difficult about this ren'py stuff?
    cl "I don't know, looks pretty easy so far... the difference to tyranobuilder is that we have to write what we want instead of clicking, which can be quite intimidating at first but since it's really not that much that we really need, it should be quite easy to learn and remember...."
  
    scene black with dissolve

    "Well after all that stress and talking they got quite thirsty and went to a cafe..."

    scene cafeImageName with fade

    mc "Hmmm but one question is still lying around... why can you call me [McName] and get the correct name, but I have to say Claire instead of [clName] or something to get yours replaced so I can't make mistakes?"
    cl "Because that's a little different, nobody saved my name specifically in a new 'variable' as coders call it, but my name is in this Character() thing right?"
    mc "Yes, that's right, I saw it up there, above the 'label start:' thing... can't we use that somehow?"
    cl "Yes we can, but it's not as easy to remember as how your name works, in my case we'd have to write [cl.name] to get the correct name..."
    mc "So if there was a Character() that has the shortcut 'pa' and we'd give it the name Patty, wouldn't we then need to write [pa.name]?"
    cl "Right, that's how it works..."
    mc "Oh ok.... ez!"
 
    scene paradise with fade

    "Now they really lived happily ever after... I hope.... yeah... probably..... maybe..."

    scene black with fade

    centered "{size=+80}THE END{/size}" # 5)




return
1: keep the [McName] in mind, it's where we store the player name in after we asked the player later....
2: Girl named Claire with the name colored in <-- click to get to a page where you can choose colors and see the hex code for them ;)
3: Here we just add a black scene (you don't need to have a black image for that, renpy has it implemented as a standard) and ask the player to input their name. If they didn't enter a name they won't be able to start (There's another way to do it where you give it a "default name" :)

4: from here on out, it's just replacing images by using: "scene imageName with transition" and adding dialogue that the mc, claire or just the narrator (nothing in front of the "text") says.

5: Here I used a "centered" command, which doesn't show text below in a textbox but in the center of the screen, and while doing that I also added +80pixel to the size of the usual text to make it bigger



You would be able to put this up there in a script.rpy of a standard renpy project and it would work... even with the scene calls (well they would just show a transparent background though, since the images with the names aren't inside the "images" folder or any subfolder of the images folder, like "images/chapter1/" )


edit: So all in all you'd need the "scene" command, the characters you want to have in the game, text to fill between two " <--- and maybe how you can replace the names inside the text with what the players entered at the start of the game "[McName]" that's all for a simple game :) fiddling with the main menu and stuff like that isn't really necessary, if all you want to do is add a background image to it you can just place that one in your /game/gui folder and name it main_menu.png, same with the game_menu.png for the pause screen.
 

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,960
16,195
I'm completely code illiterate.
Like everybody said, Ren'py is easy to learn and to use. So easy in fact that half of the guys who started a game with Ren'py were (and some still are) completely code illiterate. So, give it a try. Anyway, except perhaps VNMaker (once it will be reliable), whatever the engine than you'll chose, you'll have to write code.
 

SoulFoZoid

Member
Game Developer
Aug 26, 2017
290
545
I recommend UTAGE as an alternative, you can find it on the Unity asset store, the documentation is complete but it's in Japanese for version 3.
It's the easiest way to make a fast working Visual Novel Game in my experience.
The exel fast prototyping is one of the advantages.
 

TearStar

Developer of Lesbian/Futa Games
Game Developer
Mar 12, 2018
514
1,089
I recommend UTAGE as an alternative, you can find it on the Unity asset store, the documentation is complete but it's in Japanese for version 3.
It's the easiest way to make a fast working Visual Novel Game in my experience.
The exel fast prototyping is one of the advantages.
I don't know how unity assets work but I think it's a 'fixed framework' while renpy has tools. You can not adjust a 'fixed framework' to your will. Also the cost. When I would go into unity I would create my own visual framework for this. Requires more time but more flexible. But that's me who knows coding.
 

SoulFoZoid

Member
Game Developer
Aug 26, 2017
290
545
Utage has the source code included, and can be used as a normal dialogue editor with cutscenes. Its very flexible and a number of nippon games have been made using this framework. I tried a lot of alternatives like fungus or vine and its one of the best with awards granted. Sucks that i have to defend it in such a way.
 

TearStar

Developer of Lesbian/Futa Games
Game Developer
Mar 12, 2018
514
1,089
Utage has the source code included, and can be used as a normal dialogue editor with cutscenes. Its very flexible and a number of nippon games have been made using this framework. I tried a lot of alternatives like fungus or vine and its one of the best with awards granted. Sucks that i have to defend it in such a way.
Still... What I know of C# - which was the first langauge that I learned during college - it's an easy understanding of high-level (if not the highest) code. I bet I can make my own basic Visual Novel engine in a day while using WPF. I'm not saying it's bad but it seems rather overpriced considering the langauge around it.

Just to have an example, what would be done in a WPF.
  • A canvas with an imagebox as background
  • Some constant about left-right-mid-top(?) placement if it's not fully rendered scences
  • KeyDown checks on the window (space, escape)
  • A configure file for the program [Options] (with all you need: like sound etc.)
  • A base save game system like CSV
  • A basic intrepreter langauge (this would take about 5-6 hours, major of time)
And that's it actually. There would be change methods on the image box, etc. I don't think it's that hard either in Unity. Menu system is not mandatory maybe a new game - continue - load - options - exit. But that's already written while you are in-game.

OP said he's complety code illiterate, I don't think he/she/it can implement something like that.

But that is also me, I know why people don't want to use Ren'py but still. Stable, easy to learn, has variety of tools, can achieve very lot with it.
 

uhohitsuhoh

Newbie
May 21, 2017
38
22
I appreciate all the comments in here.

I'm going to continue going ahead with tyranobuilder for now. It's just too simple and straightforward at the moment. Basically clicking a mouse, instead of typing everything. But I will definitely continue to tinker with Ren'py to try and get familiarized with it just because its my favorite engine to play games on.

Also while I'm creating something simple and straightforward for my first project, customizing the UI is kind of a must for me, I'm taking time to try and make good renders and have a clean professional look to it, and I want the UI to reflect that and not just be a generic Ren'py main menu type deal.

With TB I can basically swap everything out for custom images, i can move where the buttons are by hand, etc. I tried at first with Renpy, I made the main menu background, and I tried to do a simple side bar type thing. Like I found the images within the GUI or whatever and in photoshop I customized and created a new menu, I even lined it up with where the renpy buttons were (start/load/preferences/etc) so then I was thinking maybe I could just make the Renpy words Invisible? so that you could just click where they are and still have it work, so it looks like you are clicking the start button i made in photoshop and not the renpy start text. If any of that makes sense, but i couldn't figure that out. Then I'm looking through tutorials on Imagemaps and other things trying to figure stuff out and im finding straightforward "code" of how to do it, but then its like wtf how do i put it in though. Its just a ton of work. I get that people who use ren'py get touchy about it however because it is a great program, that compared to actual coding IS pretty simple to use.

But it's rough for a dummy like me. I definitely appreciate the feedback however and I've got this bookmarked in a folder of ren'py bookmarks now so when I'm bored I can continue tinkering and hope it begins to make sense. lol.

I'll also probably look into different means, whether it's VNmaker or unity, I'm just not ready to shell out money yet unless I know I will be using it. I got tyrano builder on sale for like 10 bucks I think and it was just a bored I'll tinker with it purchase.
 
  • Like
Reactions: Palanto

Palanto

Active Member
Game Developer
Oct 4, 2017
964
1,841
I appreciate all the comments in here.

I'm going to continue going ahead with tyranobuilder for now. It's just too simple and straightforward at the moment. Basically clicking a mouse, instead of typing everything. But I will definitely continue to tinker with Ren'py to try and get familiarized with it just because its my favorite engine to play games on.

Also while I'm creating something simple and straightforward for my first project, customizing the UI is kind of a must for me, I'm taking time to try and make good renders and have a clean professional look to it, and I want the UI to reflect that and not just be a generic Ren'py main menu type deal.

With TB I can basically swap everything out for custom images, i can move where the buttons are by hand, etc. I tried at first with Renpy, I made the main menu background, and I tried to do a simple side bar type thing. Like I found the images within the GUI or whatever and in photoshop I customized and created a new menu, I even lined it up with where the renpy buttons were (start/load/preferences/etc) so then I was thinking maybe I could just make the Renpy words Invisible? so that you could just click where they are and still have it work, so it looks like you are clicking the start button i made in photoshop and not the renpy start text. If any of that makes sense, but i couldn't figure that out. Then I'm looking through tutorials on Imagemaps and other things trying to figure stuff out and im finding straightforward "code" of how to do it, but then its like wtf how do i put it in though. Its just a ton of work. I get that people who use ren'py get touchy about it however because it is a great program, that compared to actual coding IS pretty simple to use.

But it's rough for a dummy like me. I definitely appreciate the feedback however and I've got this bookmarked in a folder of ren'py bookmarks now so when I'm bored I can continue tinkering and hope it begins to make sense. lol.

I'll also probably look into different means, whether it's VNmaker or unity, I'm just not ready to shell out money yet unless I know I will be using it. I got tyrano builder on sale for like 10 bucks I think and it was just a bored I'll tinker with it purchase.
Well the approach was a little wrong, imagemaps are obsolete and old code which isn't really supported anymore. So what you really wanted to do was replacing the "textbuttons" with "imagebuttons"

i.e.:
standard screens.rpy:
Code:
screen navigation():

    vbox:
        style_prefix "navigation"

        xpos gui.navigation_xpos
        yalign 0.5

        spacing gui.navigation_spacing

        if main_menu:

            textbutton _("Start") action Start()

        else:

            textbutton _("History") action ShowMenu("history")

            textbutton _("Save") action ShowMenu("save")

        textbutton _("Load") action ShowMenu("load")

        textbutton _("Preferences") action ShowMenu("preferences")

        if _in_replay:

            textbutton _("End Replay") action EndReplay(confirm=True)

        elif not main_menu:

            textbutton _("Main Menu") action MainMenu()

        textbutton _("Support Us") action OpenURL("www.patreon.com/aslpro3d")

        textbutton _("About") action ShowMenu("about")

        if renpy.variant("pc"):

            ## Help isn't necessary or relevant to mobile devices.
            textbutton _("Help") action ShowMenu("help")

            ## The quit button is banned on iOS and unnecessary on Android.
            textbutton _("Quit") action Quit(confirm=not main_menu)


style navigation_button is gui_button
style navigation_button_text is gui_button_text

style navigation_button:
    size_group "navigation"
    properties gui.button_properties("navigation_button")

style navigation_button_text:
    properties gui.button_text_properties("navigation_button")
how you want it screens.rpy:
Code:
screen navigation():

    vbox:
        style_prefix "navigation"

        xpos gui.navigation_xpos
        yalign 0.5

        spacing gui.navigation_spacing

        if main_menu:

            imagebutton auto "/gui/custom/menubuttons/start_%s.png" action Start()

        else:

            imagebutton auto "/gui/custom/menubuttons/history_%s.png" action ShowMenu("history")

            imagebutton auto "/gui/custom/menubuttons/save_%s.png" action ShowMenu("save")

        imagebutton auto "/gui/custom/menubuttons/load_%s.png" action ShowMenu("load")

        imagebutton auto "/gui/custom/menubuttons/preferences_%s.png" action ShowMenu("preferences")

        if _in_replay:

            imagebutton auto "/gui/custom/menubuttons/end_replay_%s.png" action EndReplay(confirm=True)

        elif not main_menu:

            imagebutton auto "/gui/custom/menubuttons/main_menu_%s.png" action MainMenu()

        imagebutton auto "/gui/custom/menubuttons/patreon_%s.png" action OpenURL("www.patreon.com/aslpro3d")

        imagebutton auto "/gui/custom/menubuttons/about_%s.png" action ShowMenu("about")

        if renpy.variant("pc"):

            ## Help isn't necessary or relevant to mobile devices.
            imagebutton auto "/gui/custom/menubuttons/help_%s.png" action ShowMenu("help")

            ## The quit button is banned on iOS and unnecessary on Android.
            imagebutton auto "/gui/custom/menubuttons/quit_%s.png" action Quit(confirm=not main_menu)


style navigation_button is gui_button
style navigation_button_text is gui_button_text

style navigation_button:
    size_group "navigation"
    properties gui.button_properties("navigation_button")

style navigation_button_text:
    properties gui.button_text_properties("navigation_button")
The changes made are textbutton -> imagebutton auto
The imagebutton auto " text here " <- is the location of the image you want to use as your button, the _%s means it's automatically looking for _idle and _hover images.

So let's take the "Start button" as an example:

Code:
imagebutton auto "/gui/custom/menubuttons/start_%s.png" action Start()
this piece of code is now looking for images called start_idle.png, start_hover.png and other things which you won't need right now, in the folder /game/gui/custom/menubuttons/ you can replace the path with wherever you want to save the images... If you have placed two buttons for start in there, (one when it gets hovered ( _hover) and one for when it is not hovered or activated or anything ( _idle) ) [IDLE MUST be there, everything else isn't needed for the button to work but makes it look better ;) ]

That's actually all you'd have to do.... replacing textbuttons with imagebuttons and you'd be done ;)

More info on imagebuttons (other _names i.e. and what they do) can be found in the documentation:
 

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,960
16,195
Code:
            textbutton _("History") action ShowMenu("history")")
how you want it screens.rpy:
Code:
            imagebutton auto ("/gui/custom/menubuttons/start_%s.png") action Start()
Am I too tired, or did you focused too much on the statement and forgot that textbutton wait for a possibly translatable text to display ; which leaded to the use of the parenthesis ? For me, the parenthesis on the 'auto' property of the imagebutton, shouldn't be here. But like I said, I'm tired, so it can be me.
 
  • Like
Reactions: Palanto

Palanto

Active Member
Game Developer
Oct 4, 2017
964
1,841
Am I too tired, or did you focused too much on the statement and forgot that textbutton wait for a possibly translatable text to display ; which leaded to the use of the parenthesis ? For me, the parenthesis on the 'auto' property of the imagebutton, shouldn't be here. But like I said, I'm tired, so it can be me.
agh no you're right ;) That was actually a trial if it would work to use different buttons for different translations before... just forgot to remove the paranthesis in all of them :D

p.S.: Removed the paranthesis around the path :D
 
  • Like
Reactions: anne O'nymous