Don't worry about whether or not you're bugging me with questions like these. I got my degree by choice. I enjoy talking about this. If my wife isn't forcing me to rest today, I'd be programming right now. Hell, consider this. I got my degree in the US. No college loans, no scholarships, no family help. I paid, out of my own pocket, for my degree. That should show how much I actually like the subject.
I'll pass on to you what was passed on to me before I got into programing by a CS Harvard graduate. Computers are just a tool. No different than a hammer or a pencil. As such, anything from building the Eiffel tower to making porn, all requires tools.
Correct. But keep in mind that most games were not built with the idea of moddability in mind. So it's a little unfair to say that game A is better than game B for moddability when game A is built as such and game B was built just to be a game. It'd be like comparing a car to an airplane and say "The airplane can fly and the car can't." Is it a good that a game can do both? Yes. But again, not everything can be everything for everyone. Which, in our example of cars vs airplanes, is why the flying car are such an intisive idea.
Python is actually one of the younger languages. But, in my opinion, it's one of the worse ones. But it is one of the slower ones (a language being newer doesn't mean it's faster and a language being slower doesn't mean it's older. I know it feels like it should, but it doesn't). In fact, you can see
You must be registered to see the links
here (note that this source is not the end all be all of programming speed tests. But for our purposes, it's a good enough source):
View attachment 5356582
It's cramped, but you can see that python 3.11 is actually near the bottom of the list. Slower than even Java, and that's saying a lot (I've had a professor that once had her team convert a Java program into C++ for performance reasons. They got a 20x performance boost. Not 20%, 20 times). But also, yes, python is a cumbersome language. As with most interpreted languages (i.e. programming languages that don't need to be compiled down to a binary. These languages include Perl, Ruby, Python, Javascript and PHP. The opposite of this are languages like C, C++, C#, Java, Rust and GO), due to the convenience of not needing to be compiled to rule, they will always be more cumbersome (and slower) than languages that need to be compiled. But even for compiled languages, Python is one of the slower and dumber ones (in my opinion. Which I can back up, but there are die-hard python users out there that swear python's the best language. But usually, those views come out to more zealotry than statistical proof). I can get into that more if you want, but, for now, just take my word for it.
Possibly, but not likely. As I mentioned before, RonChon did a good job in allowing people the ability to expand/extend the game from its base. But if, in the future, RonChon discovers that the base of the game isn't enough and needs to be re-written, then, yeah, it'd be no different than with RLE. But, most likely, it will not be as bad as RLE. This ties back to the "how fast is fast?" point. Both have the possibility of things being rewritten to the point where any mods for the game need to be rewritten. But there's a higher likelihood with RLE than with TNH.
I don't foresee it affecting my answer, but it all depends on implementation. To be frank, I don't think the rewrite between 0.8b and 0.8c was really needed. Is it better? Yes. To what degree? That's debatable. So, basically, with this recent rewrite, there shouldn't* (terms and conditions may apply) be a need for another rewrite. But you never know. Unless I know the full scope of the game, I can't say for sure.
Unless there's another massive rewrite of the game's core (which, there shouldn't be), I doubt anything will change.
I feel like I should also explain somethings about mods versus the game itself. Judging by your questions, I think you might have a (common) misconception as to mods for games, in particular, this game.
So when people talk about mods for video games, like say, N64 Ocarina of Time randomizer, the mod is actually a modification of the game binary itself. Mods for this game is closer to a DLC. This game, first and foremost, identifies and instantiates pieces, characters, items, events, schedulers, triggers etc., then reads different definitions and logic to form the game. One may think, "How is this different from the OoT randomizer?" The difference is, you can add your own file to append or supersede other files, definitions, events, etc. to do things like, add new characters or events or clothing. And that's the mod. Remember when I linked
this conversation? This is a good example of 2 different type of mods. I call mine a "cheat injector" because (among other things) I'm modifying the base code of the game. The TNHUXMod is the other type. That mod is a .rpy file that utilizes, adds to and supercedes existing game code to make something new. And this is exactly why the TNHUXMod crashed with my cheat injector. TNHUXMod was using a core game function for its own purposes. Which, it's allowed, and encouraged, to do as that was RonChon's intent. This cheat injector, however, had modified one of the functions that TNHUXMod was using, thus, making the code generate an error.
You know what, this might be better explained with a practical example.
TNHUXMod was using this function:
Code:
screen relationships_status(status, **properties)
to make its own GUI. It would make a call like
Code:
use relationships_status('Happy')
To show a GUI element. By the way, this function makes the "Happy" or "Horny" or "Mad" icon in the "Mood" in the menu for Rogue and other LI's.
But my injector redefined that function to this:
Code:
screen relationships_status(status, c, **properties)
So, all the sudden, TNHUXMod is trying to run this:
Code:
use relationships_status('Happy')
When my injector redefined it to be called like this:
Code:
use relationships_status('Happy', Rogue)
where the additional 'c' is for a character.
So yeah, you can see why the game crashed when the two were used together since it was defined to require the code to pass in a character as part of its call.
Now, why is knowing the difference between the 2 important? Well, a mod in the latter aspect, the one that uses the game's own code and functions, etc. to extend or change the game, depends on said functions and code. The two have to, in essence, speak the same language. As with the example above, if mod tells the game "Say apple", but the game doesn't know what the word "Say" means, and, instead, knows the command "Speak", the mod is going to have problems telling the game what to do. When RonChon rewrite the core of the game, a lot of these "verbages" changed. Like, literally, the function called "check_approval" was renamed to "approval_check". What is and isn't a base part of the game and what is the core part of the game got moved and/or renamed.
Now, why would someone need to redefine "the language", you might ask? I mean, we're speaking English and it's working just fine. Except it doesn't always. If you need to describe, say, Chinese idioms, you're in trouble. Or, there are some words in Chinese that just aren't translatable because the English language doesn't have the same idea. Like the word 養. You can translate that as adopt. Or raise. Or to nuture. Or to make healthy. Or support. Or give birth. But the truth is, none of those, by themselves is the right definition. That word's meaning is an intersection of all the words I just listed. So, if you want the word 養, in it's most accurate, purest form in English, you need an entirely new word that doesn't exist. Which means, those wanting to use that word will need to change what/how they're saying things. But this also means that any older literature might need annotations for modern readers that didn't know the old ways of expressing that and/or corrections if the old authors really meant 養 when they wrote "adopt" or "foster" but didn't have the vocabulary for it. So, in just adding one new word, a lot of things needed to be changed. This is why you never know if future features will require a rewrite of the code. If the feature does not and cannot exist with the current design of the game, and the feature NEEDS to exist, the game will have to change for to accomodate it. Which changes functions (the verbage) which will require any mods to change how it talks to the main game.
Of course, if you've designed a solution with enough foresight that said feature can be included without a problem, no change is needed. Which loops back to my original answer of it depends on the solution and design, but also, you can't predict everything.