Only downside is start a new game with each update, which can be avoided easily in engine like Ren'py.It's easy to forget that Summertime Saga is Ren'py due to the excellent animated town map, custom UI, and matching artistic backgrounds and characters.
That is true. I think the reason for that issue (which they are updating to not have to start over, if I understood them correctly) is that they started out with an older version of Ren'Py, that didn't offer the same amount of abilities (or they were greenhorns when they started), and they made their own functionality for quite a bit of what Ren'Py does built-in. Which does make it less likely to end up in the "development heaven" - the code for SS *is* messy. I tried looking it over, to see how they did specific stuff - I gave up, simply because the whole thing was so convoluted, with so many files.Only downside is start a new game with each update, which can be avoided easily in engine like Ren'py.
I think the problem, is the SS programmers are declare all the variables in the beginning of the game, not when they need like other programmers follow to match the incremental development of the game.That is true. I think the reason for that issue (which they are updating to not have to start over, if I understood them correctly) is that they started out with an older version of Ren'Py, that didn't offer the same amount of abilities (or they were greenhorns when they started), and they made their own functionality for quite a bit of what Ren'Py does built-in. Which does make it less likely to end up in the "development heaven" - the code for SS *is* messy. I tried looking it over, to see how they did specific stuff - I gave up, simply because the whole thing was so convoluted, with so many files.
I don't like the Super-Powered mechanism or may be the team didn't explain it well. The Game is huge but they need to improve the User Experience (UX)I don't know a lot of complex game in renpy, I still respect View of family who uses a system of time per hour, which is not easy to manage compared to a time per period. That being said I did not shell the code to see how he did it so ... I don't know if it's done well or not, but it works.
Obviously Superpowered is complex in view of all its mechanisms but I do not like this game, to the point that it is difficult for me to imagine it as a reference ^^
There is no problem declaring all the variables at the beginning of the game. The real problem is how to declare them. And as most of the information that can be found on the web about this is no longer up to date, we end up with bad habits that are repeated over and over again. Many learn to code by looking at the work of others. And so uses old methods that caused a lot of problems.I think the problem, is the SS programmers are declare all the variables in the beginning of the game, not when they need like other programmers follow to match the incremental development of the game.
But really i like that game, and i think they hire a new programmer to solve this issue.
I think the problem, is the SS programmers are declare all the variables in the beginning of the game.
The real issue is that if you're going to keep your saves compatible, you have to keep your variables identical (or, at least, "upgradable") from release to release. SS had several internal rewrites where they changed the mechanisms they used to track progress through various steps in the game, which meant that the removed some variables and replaced them with others, and redefined how some of them were used. It's very hard to maintain backward compatibility in a situation like that.There is no problem declaring all the variables at the beginning of the game. The real problem is how to declare them.
Yeah, that's the main problem. "This game do what I want to do, I'll look at its code". And after few time if become, "all these games do what I want to do, and they all do it in the same way, it must be the right one".And as most of the information that can be found on the web about this is no longer up to date, we end up with bad habits that are repeated over and over again. Many learn to code by looking at the work of others.
It seem that he updated it for the version 6.99.13, but I don't guaranty it. There's also his tutorials. But he don't have a generic index for them, so you must search in his tweet or on his Patreon page to find the links.And indeed the tutorial of renpy gives information that is out of date so ...
It's a good example of what I said. To correctly add new variables you can :In "vanilla" Ren'py, where all you do is add some additional variables with a new release, there's no problem, and you can either do it "as you go along" or "all in one place," as long as you provide default values for the variables so that variables that aren't in the save get a known value. Or you can even do an "undefined" check on a variable before using it. Several different mechanisms, as @anne O'nymous pointed out.
I think that it's way more simple than that. The code was a real mess. As example, they used list of objects for counting (if the list have 6 objects, then the value is 6), having a different object (from a different class) depending of the list. Then don't needed a different object and, obviously, can have used a simple integer for this ; which is what they now do.But, in this case, I think the SS folks just said, "we're going to do what's easiest for our programmers. it's a beta, deal with it."
I haven't took a look at summertime saga since some months, but for me Super Powered is the example to follow in term of branching. Basically speaking, all the labels are already handled, even the ones which will not be added before years. He just need to add the missing labels and everything will works, no need to touch the main part of the game.They do, however, use a few "interesting" update mechanism that make the code a bit harder to follow than the traditional "branching" Ren'py game.
They did it once, for the 0.11 or 0.12 version if my memory don't betray me. But you're right, they took care of their users and concentrated all the breaking changes in one update. If they changed something else since, they did it in a soft way (take the current value by using the old method, and replacing it by the same value using the new method).But the "what's easiest for the programmers" comment falls back to the fact that SS has never (to my knowledge) allowed reuse of saves from one version to the next. I know they did a massive rewrite at one point, but they didn't do a one-time "ok, compatibility break" - it's been true of every update.
There's only one thing which will always break a saves game, it's the way Ren'py track the position in the code. Whatever you do, never ever change the last label of the previous update. If you do, the risk is that Ren'py will not find a correct "entry point" for the save file and crash. It don't happen every time, but better be safe than sorry. Let one update pass, and you'll be able to edit the label without problems ; the majority of the players will be further now.Making sure that old saves can work in a newer game in Ren'py takes a little bit of care and discipline on the part of the programmers. (That's part of what we're discussing here, of course.) Globally saying "Nah, I won't allow it" allows the programmers not to have to take that care. Of course, it also means that they're free to completely rewrite any section they want at any time (both from a coding point of view and also a "game play" point of view.)
He credits few other persons, but they just provided a patch for this or that, so 99,99% of the code come for the same person, yes. And I fully understand that he have no time for the doc. Anyway he's a coder, and we suck at writing doc for our how code. Like I understand that he isn't the best Ren'py coder ; I said it, after thinking about a feature for weeks, when not months, it's hard to see it otherwise than what you had in mind at first.But given that Ren'py is the baby of just one guy (or so I understand), the fact that he focuses on maintaining the code and not on writing tutorials is probably understandable.
Especially since he still wrote some doc, two tutorials, answer himself to a lot of questions on the official forum, and continue to update his code really regularly (3 officials update since november, and around 10 none officials).Heck, you have big, for-profit, commercial companies like Daz that basically say "ah, the heck with documentation - we'll let the community handle it." You can hardly heap too much criticism on a little, not-for-profit team that does the same.