VN Ren'Py 0GUI is now open source

KiaAzad

Member
Feb 27, 2019
291
214
0GUI is a simplified version of Ren'Py interface for GUI designers. it is intended for more advanced developers whom know how to modify screens and want to generate a completely customized game interface, 0GUI gives you the most stripped down version of interface to start with and from there you can build up your own design.

It does look good enough out of the box to be used as a replacement for the current GUI and with the amount of customization that can be applied to it without touching any screen, it can also be used by beginners as well.


screenshot0003.jpg

screenshot0004.jpg


You can read more about it here, and download it from the same place:


0GUIM - mobile version of 0GUI optimized for touch (coming soon):


0GUI adds - Additional screens that can be added to the game by copying the file:


0GUI dev tools - the developer tools to assist you in development process:


Right now the everything is a jumbled mess, some of the code need to be optimized and some need documentation. hopefully I can find enough time for these small touches, but don't hesitate to suggest anything that you think might help.
 

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,971
16,226
Note: I don't want to be harsh or discourage you, just to understand better.

0GUI is a simplified version of Ren'Py interface for GUI designers.

What is the effective advantage over the original ? I mean, when reading your doc I see :
  • Changing the color Theme
  • Using Frames for the theme
"Themes" are an abandoned notion since the version 6.99.11. So, is this a way of speaking, referring to the default color schemes, or are you effectively bringing themes back on Ren'py ?


All of the GUI related code and style are removed from screens, making it easy to change them directly without worrying about the errors.
[...]
The style of screen elements can be changed by modifying few lines of code.
It's already the case for those two with the actual gui. No need to edit a style, just to change few values.
By example, if I want to change the colors of the buttons in the main menu and game menu, I just need to write this somewhere :
Code:
define gui.navigation_button_text_idle_color = "#0F12FF"
define gui.navigation_button_text_selected_color = "#FF120F"
If I want to do it with the 0gui, apparently I'll have to write :
Code:
style mm_button_text:
    idle_color "#0F12FF"
    selected_color "#FF120F"

style nav_button_text:
    idle_color "#0F12FF"
    selected_color "#FF120F"

It is independent of any images, you can remove everything in GUI folder except the window icon.
Once again, it's mostly already the case with the actual gui. The difference being that with it you have to put a value at "None" (in fact keep it at "None"), while, according to your words, 0gui check the availability of the image by itself (which isn't what the code say).


Mobile variations are developed separately and fitted for touch. and you can swap two folders for different builds instead of including both interfaces in the build.
Which imply the need to tweak the screens twice if you intend to use them, and to remember that you have to swap your folders. This opposed to the actual gui, that handle everything in the same screens, which isn't an effective problem.


Now, more importantly, how is 0gui integrated with the SDK ? Do the users have to manually remove the "gui.rpy" and "screens.rpy" files, and add the 0gui ones ? Do they have to update the "[path to SDK]/gui" folder ?
And how do it works with the actual gui store ? Will a change in it be taken into account by 0gui ? By example, if I add this to my game :
Code:
define gui.show_name = True
define gui.main_menu_background = "gui/myBeautifulMenuBG.png"
Will the "main menu" of 0gui show me the name and version of the game, and use my image as background, or have I to do something else to achieve this ?

The idea is interesting, but it's look more like an attempt to add a new looks to Ren'py interface (which isn't at all a bad idea), than an effective new feature.


Now, regarding the code itself, things like this are useless :
Code:
init -100:
    define setvar = SetVariable
    define tglvar = ToggleVariable
I don't talk about the aliases to shorten the names, but the fact that the define statements are put in an init block. This statement create its own init context, and will be interpreted at this level. So, the init -100: change nothing, all the define statements behind it will be interpreted at "init 0".

Also, you put everything into the default store, while it would have been better to isolate all this in its own store, like Ren'py do for the console, audio system, and also the actual gui. Especially since, by offering shortened names for some screen actions, you increase the number of possible conflicts between 0gui and Ren'py, and between 0gui and the game.[/code]
 

KiaAzad

Member
Feb 27, 2019
291
214
What is the effective advantage over the original ?
may I suggest trying it out or at least watch the videos before judging?
But I think you'll have to be a GUI designer to see the benefits. It's the code I use that makes my work much easier for me. now I'm sharing it with the world. If you're satisfied with the default GUI, you can ignore this post.
As you pointed out, there are some old or experimental parts in the code that I need to clean up, and that's the main reason I'm going public with it, to have more eyes looking through it.
 

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,971
16,226
may I suggest trying it out or at least watch the videos before judging?
I saw the video, and it don't answer a single one of the questions I asked.


But I think you'll have to be a GUI designer to see the benefits.
You mean designing thinks like this :
You don't have permission to view the spoiler content. Log in or register now.
or that :
You don't have permission to view the spoiler content. Log in or register now.

As you pointed out, there are some old or experimental parts in the code that I need to clean up, and that's the main reason I'm going public with it, to have more eyes looking through it.
And when one of these eyes ask few questions out of curiosity, tying to understand your tool, over all the possible reactions, you choose to dismiss it as none valid, even trying to belittle the author by implying that he can't understand because he never had to designed an GUI with Ren'py...
There's a lack of constancy here.
 
Last edited:

KiaAzad

Member
Feb 27, 2019
291
214
I saw the video, and it don't answer a single one of the questions I asked.
Ok, I'll try to answer your questions.

What is the effective advantage over the original ?
  • All of the GUI related code and style are removed from screens, making it easy to change them directly without worrying about the errors.
  • All comments are removed, pros don't need those (will add back renpy licensing at some point)
  • The screens are broken into files for faster access and less scrolling.
  • The interface is animated with a single transform, making it easy to get a new look out of the interface animation with few changes.
  • A set of click SFX is added to the buttons.
  • The style of screen elements can be changed by modifying few lines of code.
  • It is independent of any images, you can remove everything in GUI folder except the window icon.
  • You can remove or change part of the interface by simply removing or swapping their files, no coding required.
  • Additional functions are added to the interface
  • It is being improved constantly
  • it looks good out of the box
  • Mobile variations are developed separately and fitted for touch. and you can swap two folders for different builds instead of including both interfaces in the build.
  • The look of interface can be changed by giving it a small image to use as frame
the fact that you don't like some of the changes doesn't mean you can dismiss all of them.

are you effectively bringing themes back on Ren'py ?
No.

It's already the case for those two with the actual gui.
No.

If I want to do it with the 0gui, apparently I'll have to write...
No, you've got it wrong.

Once again, it's mostly already the case with the actual gui. ...
No it's not.

Which imply the need to tweak the screens twice if you intend to use them, and to remember that you have to swap your folders. This opposed to the actual gui, that handle everything in the same screens, which isn't an effective problem.
touch versions require screens that are drastically different from the PC builds. there's no point leaving a whole interface design inside a mobile build where space is a premium.

Now, more importantly, how is 0gui integrated with the SDK?
It's not and probably never will be. it is apparent in the "how to" section that even has a video.

And how do it works with the actual gui store?
Pretty much ignores it.

The idea is interesting, but it's look more like an attempt to add a new looks to Ren'py interface (which isn't at all a bad idea), than an effective new feature.
Because it's not a new feature. it has lots of snippets of code improving the functionality here and there, I wouldn't be supprise if they show up in your work sometime soon, you just have to get past your prejudice agains it.

Your point about init and default is valid, I'll be looking into it. but please don't show of your own work under this topic, it's unrelated and causes lots of scrooling.
 

Winterfire

Forum Fanatic
Respected User
Game Developer
Sep 27, 2018
5,503
8,036
  • All comments are removed, pros don't need those (will add back renpy licensing at some point)
How are comments "Pro only"? Code with no comments at all is messy if other people have to look at it.
Even if they were "pros", they would still waste time to figure it out rather than reading a quick comment and understand what a method wants to do (plus, it is good to make something as much accessible as possible to everybody).

As for the rest it looks like something new worth trying out, good job with that and thanks for sharing!
 

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,971
16,226
  • All of the GUI related code and style are removed from screens, making it easy to change them directly without worrying about the errors.
But :/ The style are already mostly independent of the screens. The "navigation" screen by example, have only three styling information :
Code:
        xpos gui.navigation_xpos
        yalign 0.5

        spacing gui.navigation_spacing
Two of them are totally independent of the screen, since they refer to external variables, and the third one (the yalign) is present in your version (that also define an xalign) :
Code:
align(.5,1.0)

  • All comments are removed, pros don't need those (will add back renpy licensing at some point)
Please, don't tell this to my boss, he really think that his society is full of professional programmers.


  • The screens are broken into files for faster access and less scrolling.
Which will be useful only when you'll have duplicated all the screens. Actually the user will have to edit the "screens.rpy" file, to keep only the screens "about", "history", "help", "keyboard_help", "mouse_help", "gamepad_help", and "nvl_dialogue". He'll also have to get ride of few things, like by example the default quick_menu = True line.

Plus, nowadays almost all (if not all) the text editor oriented coding have a fast jumping feature. Find the screen you want to access, double click on it, and no need to scroll.
This for a screen that you'll edit once. Yet if really you edit it, since most of the time changing the style is enough, and it can be done from the "script.rpy" file.


  • The interface is animated with a single transform, making it easy to get a new look out of the interface animation with few changes.
This, it's an interesting feature.


  • The style of screen elements can be changed by modifying few lines of code.
Like I said previously, Ren'py already do this, and do it better than 0gui. I'll keep my previous example.
If you want to change the idle and selected color of the buttons for the main menu and game menu, with Ren'py's gui, you just need those two lines :
Code:
define gui.navigation_button_text_idle_color = "#0F12FF"
define gui.navigation_button_text_selected_color = "#FF120F"
With 0gui, you'll need to edit/update the style of the main menu and the game menu to achieve this :
Code:
style mm_button_text:
   idle_color "#0F12FF"
   selected_color "#FF120F"

style nav_button_text:
   idle_color "#0F12FF"
   selected_color "#FF120F"
This because of two limitations of 0gui :
Firstly, when you define the "text color", it apply to all the texts, for all the screens, because you only define one style, the "default" one.
Secondly, you can only choose the base color, it's 0gui that will take care of the declination of the color for the "selected", "hover" and "hover_selected" colors.


  • It is independent of any images, you can remove everything in GUI folder except the window icon.
This also I have already said it, it's exactly the same with the actual gui. You can get ride of all the images if you want. You don't want a background image for the main menu ? Just write this in the "script.rpy" file :
Code:
define gui.main_menu_background = None
But, at the opposite, if you want you own image as background for the main menu, you just need to write this, still in the "script.rpy" file (and obviously put the image in the "images" folder) :
Code:
define gui.main_menu_background = "myOwnBackGround.png"
While you'll need to edit the "main_menu" screen of 0gui to achieve the same result.


  • You can remove or change part of the interface by simply removing or swapping their files, no coding required.
Which present really few interest. Once you've designed your screens, you rarely go back at them.


  • Additional functions are added to the interface
Which isn't related to the gui.


  • It is being improved constantly
Like Ren'py.


  • Mobile variations are developed separately and fitted for touch. and you can swap two folders for different builds instead of including both interfaces in the build.
Yet something I already talked about. This imply more works for the author of the game, since he need to maintain two projects, or remember to swap the folder each time he'll build a distribution.


  • The look of interface can be changed by giving it a small image to use as frame
But it's the only thing that can be changed without the need to edit/update the style. Unlike with the actual gui, that just need the update of a variable.



the fact that you don't like some of the changes doesn't mean you can dismiss all of them.
Could it be the reason why I said that "The idea is interesting, but it's look more like an attempt to add a new looks to Ren'py interface (which isn't at all a bad idea), than an effective new feature." ?


Sorry but yes you are bringing back themes to Ren'py. 0gui is more rigid than the actual screens are.
By example, with the actual gui, if you want the main_menu to be somewhere else than at the left side, you just need to change the value of gui.navigation_xpos. If you want to achieve the same with 0gui, once again you'll have to edit the "nav" style to overwrite the fact that everything is centered by default. And the same apply for everything else. I already talked about the color above, but it also apply for the background, the padding and the spacing.
With the actual gui, you just need to change or define a value in the "script.rpy" file, while with 0gui, you'll need to update the right style.


Look above about everything I said. Actually to change the style of a screen, you just need to change the value of a gui.something variable. And when it happen that it's something not handled by the actual gui, then you just need to update the style in the "script.rpy" file, which is anyway what you'll need to to with 0gui.
So, I stay on what I said, it's already easy to change the style of a screen, and it need really few lines of code. Especially since, unlike with 0gui, the style of each screen is independent of the style of the other screens by default.


[...] I wouldn't be supprise if they show up in your work sometime soon, you just have to get past your prejudice agains it.
Er... Firstly, I don't have prejudice against 0gui, I wanted to understand it better. And I stay on what I said, as theme for the GUI, it's something interesting and easy to use, but it's nothing near to an effective gui.
Secondly, I'm more than sure that it will never show up in my works. 0gui is way too limited for what I usually do. Have you take a look at the scroll bars in the screenshot of my previous comment ? You can't do this with 0gui without redefining the whole style of the said bar. Same for the buttons. It's not visible in the screenshots, but they act as button in relief, changing the effect when you press them. This while some buttons are highlighted when selected, while other aren't, and highlighted with a contrasted color, not with a variation of the defined color like with 0gui. Anyway, the color of the buttons aren't fixed, it can be white, blue or green, depending of exterior factors.
Obviously, all of this need the definition of a style with the actual gui... but it need the exact same works with 0gui. So, there's no advantage, at least for me, in its use.

All this doesn't mean that I don't like it or anything else, just that it's not a gui, it's a theme. It would be way more interesting, and useful, if instead of trying to make a gui that isn't one, you would have added functionalities over the actual gui. The auto declination of the colors, by example, is something that can be useful. You also have good idea for the transform, and a transform bank is something that can help many people.
The addition of sound is also something interesting. But as addition to the actual gui, not as forced feature of 0gui like is the fact that everything is centered unless you explicitly define a style to say that it shouldn't.


but please don't show of your own work under this topic, it's unrelated and causes lots of scrooling.
Don't worry about this, I have my own threads for that. Just don't assume what the other do or not next time, and it will not happen again. But you're right, I should have put them into spoiler from the start.
 

KiaAzad

Member
Feb 27, 2019
291
214
I get everything you're pointing out, but like I said before, 0GUI isn't for those whom want to stick to the default gui, it is a base to build on not a whole building.
I can challenge you to get the same look out of the default gui and see how long it takes but that would be pointless and a waste of your time.

It is the job of designers to replace the gui with the design they want, 0GUI just gives them a clean start and a kick-start, I would encourage you to try it out, and this time try to not search for something that you don't like. let in the parts that make sense.

just keep in mind, it's something I put together for myself and kept it to myself for a long time, I'm only sharing it because other developers might find it, or parts of it useful.
 

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,971
16,226
I get everything you're pointing out, but like I said before, 0GUI isn't for those whom want to stick to the default gui, it is a base to build on not a whole building.
If you say so...


I can challenge you to get the same look out of the default gui and see how long it takes but that would be pointless and a waste of your time.
And voilà...
It's the exact same look that 0gui :
0gui.jpg

the same possibilities of customization than 0gui, and obviously the same rigidity.
I only did the "preferences" screen (and obviously the linked "game_menu" and "navigation" ones), because it's the one that need the more works. For the others, there's really few changes to do, and anyway they are useless to show the effective way to works with the default gui and the gui store.
Oh, once I compared my screen with yours, it happen that I also applied the transform directly to the frames. Matter of personal taste, I stuck to this since I prefer it this way than applied individually to the buttons.

It could have been 100% pure Ren'py, but I took pity of the readers and shortened the line equivalent to yours that use rotate_hue. Therefore, there's one Python function of one line.

For information, I started two hours ago, but I had to gave his medication to my cat (who dislike it) and my daughter called me over the phone. So, assume that it needed one and half an hour to be done.
[rpy file attached]
Code:
init python:

    # I cheated a little here, the lines would have been really too long
    def rHue( c, f ):
        return "{:02X}{:02X}{:02X}".format( *color( "#{:X}".format( c ) ).rotate_hue( f ) )

# Customize this as you want
define gui.custPadding = (20,20)
define gui.custMargin = ( 5, 5 )
define gui.textBaseColor = 0x000000
define gui.textAccentColor = 0xFFDD00
define gui.textAlphaInsensitive = 0.20
define gui.textAlphaIdle = 1.0
define gui.textAlphaHover = 1.0
define gui.rotationFactor = 0.33
define gui.frameBackground = 0x55DD55
define gui.frameAlphaInsensitive = 0.2
define gui.frameAlphaIdle = 0.7
define gui.frameAlphaHover = 1.0

define gui.prefBarXSize = 300
define gui.prefBarYSize = 40

transform btn:
    parallel:
        xoffset renpy.random.randint(-1000, 1000) alpha 0 xzoom .01
        pause renpy.random.random()/4

        ease .2 xoffset 0 xzoom 1 alpha 1
    parallel:
        on idle:
            easein .2 additive 0
        on hover:
            easein .2 additive .3
        on selected_idle:
            easein .2 additive .2
        on selected_hover:
            easein .2 additive .3
        on insensitive:
            easein .2 additive 0


# Do NOT thouch this
define gui.custTextInsensitiveColor = "#{:X}{:X}".format( gui.textBaseColor, int( 255 * gui.textAlphaInsensitive ) )
define gui.custTextColor = "#{:X}{:X}".format( gui.textBaseColor, int( 255 * gui.textAlphaIdle ) )
define gui.custTextHoverColor = "#{:X}{:X}".format( gui.textBaseColor + ( gui.textAccentColor - gui.textBaseColor ), int( 255 * gui.textAlphaHover ) )

define gui.custTextInsensitiveColorSelect = "#{:X}{:X}".format( int( gui.textBaseColor + ( gui.textAccentColor - gui.textBaseColor ) * 0.21 ), int( 255 * gui.textAlphaInsensitive ) )
define gui.custTextColorSelect = "#{:X}{:X}".format(int( gui.textBaseColor + ( gui.textAccentColor - gui.textBaseColor ) * .5 ), int( 255 * gui.textAlphaIdle ) )
define gui.custTextHoverColorHover = "#{:X}{:X}".format( gui.textBaseColor + ( gui.textAccentColor - gui.textBaseColor ), int( 255 * gui.textAlphaHover ) )

define gui.custFrameInsensitiveColor = "#{:X}{:X}".format( gui.frameBackground, int( 255 * gui.frameAlphaInsensitive ) )
define gui.custFrameColor = "#{:X}{:X}".format( gui.frameBackground, int( 255 * gui.frameAlphaIdle ) )
define gui.custFrameHoverColor = "#{}{:X}".format( rHue( gui.frameBackground, gui.rotationFactor), int( 255 * gui.frameAlphaHover ) )

define gui.custFrameInsensitiveColorSelect = "#{}{:X}".format( rHue( gui.frameBackground, gui.rotationFactor), int( 255 * gui.frameAlphaInsensitive ) )
define gui.custFrameColorSelect = "#{}{:X}".format( rHue( gui.frameBackground, gui.rotationFactor), int( 255 * gui.frameAlphaIdle ) )
define gui.custFrameHoverColorSelect = "#{}{:X}".format( rHue( gui.frameBackground, gui.rotationFactor), int( 255 * gui.frameAlphaHover ) )

define gui.custBarRight = "#{:X}{:X}".format( gui.frameBackground, int( 255 * gui.frameAlphaIdle ) )
define gui.custBarLeft = "#{:X}{:X}".format( gui.frameBackground, int( 255 * gui.frameAlphaHover ) )
define gui.custBarRightHover = "#{}{:X}".format( rHue( gui.frameBackground, gui.rotationFactor), int( 255 * gui.frameAlphaIdle ) )
define gui.custBarLeftHover = "#{}{:X}".format( rHue( gui.frameBackground, gui.rotationFactor), int( 255 * gui.frameAlphaHover ) )

style custBG:
    insensitive_background gui.custFrameInsensitiveColor
    background gui.custFrameColor
    hover_background gui.custFrameHoverColor
    selected_insensitive_background gui.custFrameInsensitiveColorSelect
    selected_background gui.custFrameColorSelect
    selected_hover_background gui.custFrameHoverColorSelect
    padding gui.custPadding
    margin gui.custMargin

style custHorBar is empty:
    bar_vertical False
    left_bar gui.custBarLeft
    right_bar gui.custBarRight
    hover_left_bar gui.custBarRightHover
    hover_right_bar gui.custBarLeftHover

style custText is empty:
    insensitive_color gui.custTextInsensitiveColor
    color gui.custTextColor
    hover_color gui.custTextHoverColor
    selected_insensitive_color gui.custTextInsensitiveColorSelect
    selected_color gui.custTextColorSelect
    selected_hover_color gui.custTextHoverColorHover


style cust0gui_frame is custBG:
    xalign 0.5

style cust0gui_vbox is empty:
    yalign 0.5

style cust0gui_hbox is empty:
    xalign 0.5

style cust0gui_fixed is custBG:
    fit_first True

style cust0gui_text is custText

style cust0gui_label is custBG
style cust0gui_label_text is custText

style cust0gui_button is custBG
style cust0gui_button_text is custText

style cust0gui_bar is custHorBar:
    padding gui.custPadding
    margin gui.custMargin
    xsize gui.prefBarXSize
    ysize gui.prefBarYSize

style cust0gui_barLabel is empty:
    xalign 0.5
    yalign 0.5

style cust0gui_barLabel_text is custText



screen navigation():

    style_prefix "cust0gui"

    hbox:

        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 _("About") action ShowMenu("about")



screen game_menu(title, scroll=None):

    style_prefix "cust0gui"

    if main_menu:
        add gui.main_menu_background
    else:
        add gui.game_menu_background

    hbox:
        at btn
        yalign 1.0
        textbutton _("Return") action Return() at btn
        use navigation


    label title

    if main_menu:
        key "game_menu" action ShowMenu("main_menu")





screen preferences():

    style_prefix "cust0gui"

    tag menu

    if renpy.mobile:
        $ cols = 2
    else:
        $ cols = 4

    use game_menu(_("Preferences") )

    vbox:
        xalign 0.5

        frame:
            has hbox
            at btn
            label _("Display")
            textbutton _("Window") action Preference("display", "window")
            textbutton _("Fullscreen") action Preference("display", "fullscreen")

        frame:
            has hbox
            at btn
            label _("Rollback Side")
            textbutton _("Disable") action Preference("rollback side", "disable")
            textbutton _("Left") action Preference("rollback side", "left")
            textbutton _("Right") action Preference("rollback side", "right")

        frame:
            has hbox
            at btn
            label _("Skip")
            textbutton _("Unseen Text") action Preference("skip", "toggle")
            textbutton _("After Choices") action Preference("after choices", "toggle")
            textbutton _("Transitions") action InvertSelected(Preference("transitions", "toggle"))


        hbox:
            at btn
            frame:
                has fixed
                bar value Preference("text speed") style "cust0gui_bar"
                label _("Text Speed") style "cust0gui_barLabel"

            frame:
                has fixed
                bar value Preference("auto-forward time") style "cust0gui_bar"
                label _("Auto-Forward Time") style "cust0gui_barLabel"

        hbox:
            at btn

            if config.has_music:
                frame:
                    has fixed
                    bar value Preference("music volume") style "cust0gui_bar"
                    label _("Music Volume") style "cust0gui_barLabel"

            if config.has_sound:

                frame:
                    has fixed
                    bar value Preference("sound volume") style "cust0gui_bar"
                    label _("Sound Volume") style "cust0gui_barLabel"


            if config.has_voice:
                frame:
                    has fixed
                    bar value Preference("voice volume") style "cust0gui_bar"
                    label _("Voice Volume") style "cust0gui_barLabel"


        if config.has_music or config.has_sound or config.has_voice:
            frame:
                at btn
                has hbox
                textbutton _("Mute All") action Preference("all mute", "toggle")

[...] I would encourage you to try it out, and this time try to not search for something that you don't like. let in the parts that make sense.
But how can I do this ? The only things I like aren't effectively part of the gui itself.
You are full of enthousiasm and have not bad ideas, what is a good thing. But you apparently still lack of knowledge regarding what Ren'py can natively do or not. This lead to a waste of time and energy that could be used in a better way.

Alright, I used your gui0 class as guide for the style, and the screenshot of the preference menu for the design, since the chalenge was to do the same thing. But without it, it still wouldn't have needed more than half a day to achieve a similar result. Yet, the extra time would have been to find an interesting to way to mix the color and a good design, not to effectively implement it and keep it customizable.
How many time did you needed to write the said 0gui class and rewrite the "navigation" screen ? How many interesting things could you have added to Ren'py during this time ? That's what bother me, not 0gui by itself. You can be a good addition to the community, but for this you need to concentrate your creativity on things that don't exist, not on doing something that is already easily possible.



I'm only sharing it because other developers might find it, or parts of it useful.
As I already said, I find your transform and you color declination very interesting. It's just the whole thing that add nothing, alas. Concentrate on this, you'll found way more people interested.
 

KiaAzad

Member
Feb 27, 2019
291
214
assume that it needed one and half an hour to be done.
Like I said, it was a waste of your time, hopefully you can see why stripping all gui styles and putting screens into their own files would be helpful because that's exactly what you have done for this.
0GUI is exactly that, the cheat you need to achieve the look you want, be it passing it through the default gui then feeding it into a style to give the gui a reason to be there, or giving it to the styles directly. it's your choice how you want to design your interface.
to convince you further more, imagine how many lines you have to change to see your interface with an image frame. with 0GUI it's just one line.
 

lancelotdulak

Active Member
Nov 7, 2018
556
557
AON.. wtf are you here
1. Python is about as simple and beginner level as a alanguage gets.
2. He has provided a free Open Source tool to make a tedious process slightly less tedious and more macro
And you demanded he answer a page of questions and then whined and screamed .. at someone providing a free tool


Shhhhh
 

KiaAzad

Member
Feb 27, 2019
291
214
Finally got around to fix the errors, now the added screens don't cause errors even if they are added without the 0GUI itself.
And the dev tools don't require 0GUI anymore and work on it's own.
Next is overhauling the gallery and adding it back.