Dr Krieger

Member
Jun 28, 2017
162
1,034
tbh this game isn't that far from completion, I mean, probly it's done in 70% at least so it'd be a shame to abandon it now,
I think they will update book 1 after finishing book 4

Also I don't understand the uproar about this 4 month break. This game delivered amazing updates with reasonable delays for a very very long time. They are nothing compared to ICSTOR or god save my soul Dual Family.
 

Balrog

Active Member
Jan 10, 2018
665
1,085
I think they will update book 1 after finishing book 4

Also I don't understand the uproar about this 4 month break. This game delivered amazing updates with reasonable delays for a very very long time. They are nothing compared to ICSTOR or god save my soul Dual Family.
The problem with a sudden unplanned 4 month break is that if you don't take care of the issue that caused it, it will become the rule rather than the exception.
 
  • Thinking Face
Reactions: CursedFlame91
D

Deleted member 436513

Guest
Guest
The problem with a sudden unplanned 4 month break is that if you don't take care of the issue that caused it, it will become the rule rather than the exception.
Thankfully, we're only a year or so away from the project's completion. Give me that Pema/Jinora scene so I can die happy, and the whole thing can burn for all I care.
 

Qianke

Active Member
Apr 27, 2019
738
1,262
Thankfully, we're only a year or so away from the project's completion. Give me that Pema/Jinora scene so I can die happy, and the whole thing can burn for all I care.
being here and waiting for that, I think you are already an addict though, you sure you won't ask for more once it happens? C:
 
Dec 9, 2019
73
122
Just gonna say it.

I love this VN trainer game. Love Route for the true, wholesomeness feeling which gives you a good feeling in your heart (and your pants)
The Slave route to be such a scumbag, and get away with it scottfree~

I eagerly look forward to Book 4's Love Route. I need my love wholesomeness with Korra and Asami… And possibly Impregnate them both. :D Yes, my favourite is the Pregnancy - The fact that I can influence and somewhat (redeem) Azula in Book 2 is incredible enough as it is.

I hope that once this Avatar Trainer is fully completed, we can see more work from the creator.

Star Wars will be nice~
 

Cybuster

Member
Sep 28, 2017
137
126
Wasn't sure what term to use, it's probably just control flow. Most of what you have in Ren'Py are labels (which are analogous to game "levels" or Unity scenes) that are on the same conceptual level of depth, nested if/else chains and menus which require you to keep track of how "deep" you currently are, and screens which are mostly used for UI overlays and minigames. Labels are pretty straightforward and naturally lend themselves to a linear A -> B graph/tree/whatever structure you can keep track of, similarly to how you'd have chapters one after the other in a book and a table of contents which you can use as an overview.

The "control flow" aspects of Ren'Py only become a problem if you start mixing the logic and the dialogue, leading you to doing stupid shit like copying and pasting the same ~1700 line long scene into three different locations which you have to maintain separately, or putting them inline (in-block?) with nested layers of logic, i.e.:

Python:
label falley_night2:
    if earth_deal:
        if tax_collector:
            if not tax_done:
                menu:
                    "kill him":
                        menu:
                            "donate the money":
                            "keep the money":
                    "knock him out":
                        menu:
                            "donate the money":
                                if variable >= 20:
                                    if flag == True:
                                        if condition:
                                        else:
                                            menu:
                                                "do it anyways":
                                                    if variable = 1:
                                                        "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
                                                        "Suspendisse porttitor arcu aliquet tortor vehicula, ut ultricies magna feugiat."
                                                        "Sed nec nunc non leo varius consequat eget sit amet orci."
                                                        "Curabitur malesuada nunc vitae tortor auctor facilisis."
                                                        $ variable += 2
                                                        "Praesent ut ligula sed augue scelerisque lobortis non dictum dui."
                                                        "Pellentesque nec tellus blandit, vestibulum lacus tincidunt, consectetur nibh."
                                                        "Donec sagittis nisl eu tellus aliquam, et accumsan ante maximus."
                                                        "Etiam aliquet turpis non ipsum consectetur, sit amet lacinia libero hendrerit."
                                                        "Pellentesque id diam at nulla ornare posuere."
                                                        "Sed accumsan tortor non eros pulvinar, sed varius magna eleifend."
                                                        "Donec non leo in elit rhoncus pellentesque."
                                                        "Phasellus in lacus posuere, dictum arcu vel, volutpat ipsum."
                                                        jump bk2_map
Or the fucking clown tier spaghetti code examples FET is known and loved for.

View attachment 483044

Edit: Forgot to add that Ren'Py labels retain the current "state" when you swap them out (everything you've sent to the screen stays on the screen), so you COULD tehnically end up with something analogous to a call stack by doing the following:

Python:
label one:
    scene outside
    jump two

label two:
    show character with dissolve
    jump three

label three:
    play music "maintheme.ogg"
    jump four

label four:
    show othercharacter at left
    jump five

label five:
    c "Dialogue text"
    jump six
Which you wouldn't, because you're not what is known in the industry as "one hundred percent buttfuck insane". FET does suffer a bit from this (incidentally it's why it doesn't have a gallery/scene replay system either), but once again it's a problem you're creating for yourself and something that is still relatively easily fixable compared to debugging thousands of lines of actual logic.
Wait... so there are switch case functions in Ren'py the coder is not using?


Anyway, no coder who is willing to work years for a game like this should ever use Ren'py as their platform. Unless this job is just a hobby. Seriously, use anything else. Build your own abstractions, use SFML or go straight for OpenGL GLUT. The whole idea of OOP is to make tedious work like a game loop more manageable and module, use it!
 

Cybuster

Member
Sep 28, 2017
137
126
The last three thread provides insight and all, but how many of us here are actual paying supporters? I mean, how many patrons have the same sentiment as what was discussed in the last three threads?
 
  • Like
Reactions: F1forhalp

Nikushimi

Newbie
Jun 10, 2018
90
32
So, idk if this is a bug or not, but I recently decided to try Book 4, but I'm kind of stuck?

Meelo is missing, but it's night time and I can't go to the city cause the docks are closed. He's nowhere to be found, did I fuck up somewhere?

EDIT: Nvm...that's what happens if you use cheats to get money and paying Lin before you go back to the Island. RIP
 

Ratnedalu

Active Member
Jan 11, 2018
689
663
There's already a harry potter game. Look up sliver game studios and the witch trainer silver mod. Its a highly rated game with a dedicated staff working on it.
... Which is a mod. Of a really popular Akabur game. Which, for the record, Shady and the MC here are a nod to with the grey robe. There's also Innocent Witches, Wands and Witches (which isn't faithful to the series from an art perspective at all, its art kinda reminds me of Harry Potter meets Bratz.), and one other that got abandoned recently, which is kind of a bummer because i liked it despite the anime style.
 
  • Like
Reactions: rekon2 and Genji
D

Deleted member 436513

Guest
Guest
Wait... so there are switch case functions in Ren'py the coder is not using?


Anyway, no coder who is willing to work years for a game like this should ever use Ren'py as their platform. Unless this job is just a hobby. Seriously, use anything else. Build your own abstractions, use SFML or go straight for OpenGL GLUT. The whole idea of OOP is to make tedious work like a game loop more manageable and module, use it!
AFAIK there aren't - Python doesn't support them due to their "philosophy", Ren'Py doesn't add anything similar, and menus are more like... well, menus. They require explicit interaction, I don't believe there's a way to make them trigger automatically and use them as a sort of ghetto switch-case system. Either way, if there are 52 identical if/else statements in your code you have way bigger problems than whether or not you're using a switch for them.

Don't disagree with you on Ren'Py, it's painful. Even a ready-made VN system for Unity is preferable in many cases.
 
  • Like
Reactions: Cybuster

Josh Spicer

Well-Known Member
Sep 19, 2018
1,217
1,673
  • Like
Reactions: Cybuster and Balrog

MrFuckNuts

Member
Jul 27, 2018
497
636
Since this warrants a longer response, I'll be breaking it up into segments and responding to each. Note that my goal with these posts genuinely isn't to shit on MITY, they are far from the worst dev when it comes to goodwill, transparency or trying their hardest (especially the artist). I'm trying to be as neutral and fair as possible.

My main contention with "the coder" being the primary writer/programmer is that he's supposed to be THE ONLY writer/programmer. The artist coming in and writing or coding as much as 30-40% of the game speaks against him when compared with the artist. When you have Guy A who's drawing all the art, and doing potentially as much as half of the coder's programming and writing work, Guy B claiming to be burnt out raises a few eyebrows. Of course it's entirely possible that he's a different type of person who gets burnt out more quickly, but if I was in his situation, personally, I wouldn't feel like I "deserve" to complain or take time off when the other guy is essentially doing half of my work already in addition to his own.

I don't disagree with the notion of a writer's block, but... come on. I mean we're not exactly talking about Tolstoy here.


Given that the art portion of the game was finished on August 24th at the latest and 0.8.3c came out Aug 14th, that leaves us with a timespan of roughly 4 months (119 days) to account for. Consult the timeline of events posted earlier for a more detailed breakdown, but suffice to say that the physical injury accounts for a two week period around the middle of November through December 5th (during which he also worked), caring for his sick mother is something that was mentioned in the past and is likely no longer applicable (he doesn't live with his parents, and staying with them seemed to be an unusual one time event), he has no reason to worry about his finances unless he owes money to a fucking Saudi oil magnate, and the artist told him to drop the CCG minigame and avoid getting burnt out way back in August before this entire thing began. Make of that what you will.


Hence why I included the filesizes in the screenshot (to give a rough estimate of how much code is involved - we're not talking about 3MB 78,000 LOC files. In this case it's 30k lines for Book 4, of which ~15k is boilerplate, ~15k is dialogue and ~2k is actual logic), selected the only two files with minigame code (i.e., programming), trimmed out the VN segments from even those, and brought up the example of the map screen and the day/night system as the most complex elements implemented in Ren'Py script as opposed to pure Python.

The intent was basically "if he hasn't even bothered to split it beyond two files, how much code do you think that is", and to show the ratio of what people understand as "programming" to everything else. But for the sake of transparency, this is what the entirety of Book 4 looks like (or it would, if it was organized):

View attachment 482926

_boilerplate is code that's self-explanatory (b4_eq1 is an equalist, their color is black, their side image is /equalist/sidebox/equalist_1.png, etc), _images are the sprite assignments ("bfau" is the Korra blowjob scene, it has 10 stages, stage 1 is /boobjob/body_1.png, stage 2 is /boobjob/ani_3.png, stage 3 is a 6 frame looping image with a 0.2 second delay between the frames etc), neither of them are terribly relevant, it's basically metadata that you wouldn't even use for future content.

Then we're left with code (which is the code for the minigames), and dialogue (which is the actual script and flow of the story).

You don't need to concern yourself with the minigame code, because you're not working on the minigames. The match-3 coin game is a fucking black box, you don't care what it does, and you don't care how it does it. Same with the blackjack minigame from Book 2. Yeah, it uses 18 files, all of them are identical, yeah 16 of those aren't even reached by the code, and yeah, all of them have a 52 element long if/else chain with variable names like "P6s" or "krix0". None of that is relevant. It does what it's supposed to, and it increments your money once it's finished. That's ALL YOU NEED TO KNOW. You don't need to touch it, you don't need to debug it, you let it sit there alone in the corner like the unloved abomination it is, and forget about its existence like its creator has.

Which then brings us to the only thing that involves logic you need to understand, the dialogue trees. Which make up ~16,000 lines of text, of which maybe 1000-2000 involve any kind of logic at all. Everything else is literally a book.



The reason I ignored those and why I'm overly dismissive of the VN side of things, is that I don't CONSIDER Ren'Py code to be fundamentally the same as programming. Note that I'm not saying "it takes no effort" either - writing DOES take effort. It just doesn't take the same kind of effort as programming in the conventional sense does. There are no classes you have to instantiate, you don't have to write unit tests, you don't need to know how A* search works, you don't have to be cautious when implementing cryptography, you don't have to write your own parser, you don't need to understand how binary formats work, you don't need to access a database, you don't have to work with matrices, you don't need to deal with the obscure bugs and API of the system you're running on, you don't have to worry about GC pauses, you don't need to worry about memory allocation, and I could keep going on and on. Ren'Py is control flow. That is ALL IT IS.

This...
Python:
    if spinner_level >=10:
        $ korra_foot_quest = 2
        jump air_train3
    else:
        tn "(i need to level up to {b}10{/b} on the spinners before i can train more with korra.)"
        jump bk4_training_menu
...is ALL you have to learn. That is the extent of the logic Ren'Py uses. Control flow.

It's a fundamentally different task that's much closer to writing and directing, and thus needs a different skillset. Same with the boilerplate code I mentioned like filename and image assignments, which make up almost as much of "the code" character-wise as the dialogue, follow a distinct formula, and could be easily offloaded to someone else with zero knowledge of the code or the script. Find the right filename, make sure it's on the right coordinates, make sure you put enough of a delay between frames that it looks the right speed, etc. They're glorified metadata files. It's busywork that you only even have to do in the first place because Ren'Py doesn't have a proper IDE or editor built around it which would handle it for you. It's the equivalent of manually renaming a hunded files in a directory. It doesn't take creativity or skill, it's not difficult, it just takes time. Christ, you could probably spend a few weeks putting together a basic graphical editor/preview tool for scenes or a PSD converter and save yourself months of effort down the line.



Yeah, and that's contention number #2. Even without the minigames and the Python side of things, EVEN amongst other VNs, Four Elements Trainer is very simple. The game doesn't HAVE an inventory system (ironically, because it might actually make things simpler). There are no complex series of interwoven choices which determine one of 17 possible outcomes with each character. The minigames don't affect your game state besides incrementing your money value or setting a flag to True. What you have are inline if/else choices with the dialogue listed right below, and scenes where the game outright fucking ASKS YOU which ending you'd like. Even as far as VN logic goes, FET's is firmly on the lower end of complexity.

Anyways, the reason I look down on VN code is because control flow isn't something you SHOULD have an issue with in the first place. It's something that's very easily visualized, and something that comes naturally to writing the story in the first place. If it becomes a problem because you didn't name your shit properly or you're deep within a nested loop of 19 elements, it's entirely a problem of your own creation. To illustrate what I mean, let's take a look at the two main components of Ren'Py code (ignoring boilerplate) - variables and control flow.

Suppose that you want to implement the Ember Island segment from Book 2 into the game.

You don't just start writing code from the get go, you do a million other things first. You decide on the idea, you talk it over with your partner, you think about what could be included, what the overall storyline would be, where it takes place in the game, and so on. You determine the scope of this update (an island in the love route, you interact with various girls, there's a crab minigame, the story involves azula warming up to you, we'll have these 13 scenes, the locations will be the beach, the house and the party you go to, the length is planned to be around five in-game days, etc).

In our mental map of the game's code, it's going to go right...

View attachment 482923

...there. So logically, it's only able to draw from or have an impact on variables here:

View attachment 482924

The only things that will be relevant to our Ember Island update are what has happened in the love route of book 2 so far, and what will happen in the love route of book 2 afterwards (which we're most likely not concerning ourselves with anyways, since we haven't even decided how the book is going to end yet). And if you were to finish the Ember Island update on your own as hired help for the project, the coder managing things would have to add a grand total of one (1) line of code to integrate it into the game: jump ember_island_start right at the end of that red section. You don't need to understand anything, and neither does the existing coder. Everything is modular and self-contained.

But why don't we make things more interesting? You start writing the story, and you reach a point as a writer where you decide that it would be a good idea to make a callback to a previous event. Let's say you're in a conversation with Azula and Mai, and there was a scene earlier in the Book 2 love route where you could choose to side with Azula or Mai respectively (which you know, because you've played the game already and/or wrote that scene yourself). You open the file that has a list of all of your variables for Book 2 (which you have, because you're not an idiot), you do a search for "azula" if you can't remember what it was called, find chosen_mai_over_azula, note that the comment above it says

Python:
#This variable is set to False if you told Azula about Mai in the shop during the second day of the love route, and True otherwise
and put that in your code. Then, for some reason you decide that one of the scenes in the Ember Island update will be influential on the story later, so you store the new variable island_azula_score, put it in your list, then add a comment above it which explains that

Python:
#This variable should be between 0-10 if you didn't get along with Azula, 10-20 if she was lukewarm towards you, and a perfect score of 23 is required for the special ending
followed by a breakdown of when it's possible to get points.

What you DON'T DO, is start fucking reading through the previous 293,400 lines of dialogue in the game and try to figure out where that variable was defined or when it gets modified, or HOPE that you can recall it every single time you need it. Because you're not fucking insane.



TL;DR - The problem is variables. The way you solve that problem is by having one of these:

View attachment 482944

Let's take a look at problem number two. How do you comprehend this unwieldy chain of labels and quadruple-nested menu items and jumps and OH GOD

View attachment 482995

Well first off, are you working on the Azula throneroom menu? No? Is the Azula throneroom menu going to be relevant in future content? What's that, "never again"? What the FUCK ARE YOU DOING here trying to read the code of the Azula throneroom menu, then? See the minigame rule above, close the file, forget about it, and go do something useful. Assuming the Azula throneroom menu actually IS relevant though, how would you go about comprehending this mess?

You don't. You separate the logic from the scenes, and read this instead:

View attachment 482971

How do you memorize the complex relationship between jumps and how different labels link into each other?

You don't. You use one of these:

View attachment 482973

Which you have, because you're not an idiot.




This became a rambly fucking mess and I'm too lazy to edit it down, sorry. The point is that if you were to be hired on right now to work on future content for the game, then
  • you ignore minigames and everything before the current book
  • you don't parse fifty million lines of code, you look at a tree of intro -> book4_map -> korra_room -> korra_training_menu -> korra_blowjob, and a list of variables
  • when writing a scene, you just write that standalone scene as its own thing with zero logic, code or labels, when coding minigames, you code that minigame separately as its own standalone project - i.e., you could be hired on as a writer or a programmer with ZERO knowledge of the game and have the existing guy implement your work
  • the order of how things should progress and what scenes should lead to what is ALREADY DECIDED beforehand, during the planning phase of the project, by someone doing the work of a director, which a writer then works off of and a programmer ties together with logic
  • understanding a call stack is the most basic component of programming, and is not even comparable to working on actual code
This is amazing
 
  • Like
Reactions: Muffin5598
4.50 star(s) 280 Votes