by Agrajag » Sun Jun 19, 2016 4:24 pm
Was going to try to wait until I wasn't the last post, and then I wasn't, and then it was three weeks later, and now I've forgotten what I was going to talk about (maybe boss music? that's pretty redundant, too), so...
Levels of Plausibility
What do you mean "wild Rappies may not accept you as a companion"?
Let's not mince words here: PSU is a PS2 game from 2006. It's buggy, slow, and ugly.
Despite how I may pretend, nothing I can do will fix that. At the end of the day, it'll still be a PS2 game from 2006. What I [i]can do is "fix" (note: not pretending this isn't subjective) a fair number of the gameplay elements.
So, in that regards, a fairly simple scale for how plausible things are, as applied to monsters:
1. Already done (thing is already complete, or well on its way): Enemy stats are changed.
2. Almost certainly will be done (plan is complete, implementation is not): Boss stats are changed (note: thanks JamRules for pointing out a way to get into some of the PSP2i files).
3. Probably will be done (don't know exactly what's required, but have a good idea where to find it): Allow more unique enemies per block.
4. May be done... eventually (requires a bunch of extra work that's also not complete): Add new enemies.
5. Maybe if I rewrote the game from scratch... (not plausible in the game engine): Add new bosses.
Or, to be more specific:
1. Enemy stats require editing one of two files. One global one (which I've been able to edit for years--remember the april fool's "everyone dies in 1 hit" thing from a few years back), one per monster (which has been mostly understood for years--this is how those Infinity stat tables were calculated back in the day).
2. Bosses share the global file with normal enemies, but each boss also has its own stat file(s) in combination... where each boss uses a (sometimes totally) different format. Would be extremely difficult to sort out, but with Infinity included, every boss has at least two sets of stats that can be compared to figure out what changed.
3. When enemies are loaded, their assets get put into a rather small list. If you go over the list's limit, new enemies will either not load (if you have Vanda, Vahra, Delsaban, Gohmon, and Pannon, the Pannons will not spawn at all) or load but be invisible (if you have Polty, normal Vahra, fire Vahra, ice Vahra, and lightning Vahra, the lightning Vahra will be present but invisible because they didn't load the "lightning Vahra" textures). Theoretically, if I could isolate any all the situations where that list is read or written, I could expand it and allow you to have 30 different monsters in every block or whatever, but while I've isolated part of the enemy loading routine, it would still need a fair amount of research.
4. An enemy is a collection of files (at minimum, a model, a parameter file, an ActData file containing mystery data, an AtkData file containing attack metadata, a collection of animations, and a few other things), where all the files for a given enemy are defined in the .exe. Adding new enemies would mean fully understanding the model format, figuring out how the actdata file works, expanding the list in the .exe (where I don't actually know how that list works yet), and a few other things--and each of those is a significant amount of work. This is still a lot simpler than the following one, though, seeing how enemies are generally self-contained--if you replace everything about a Vahra with the respective data from a Vanda, it will be a Vanda in everything but name (...as far as I know).
5. Bosses are directly controlled by the .exe. They have a bunch of control files, but in the end, even if I understood all of them, adding even Bil De Golus ("it's like De Ragan, but ground element...?") would require a substantial amount of asm work... as would the next boss that got added, and the next one, and the next one.
Somewhat of note, some of these things will bounce between levels depending on if it's D&H trying to do it or Clementine trying to do it. For instance, trying to add full type customization (like in PSP2/i) would probably be a 4 for me (would require adding hooks in a lot of places--load the type from a custom place, check if various bonuses are applied in the 5 different damage calculations, etc), but would probably be a 2-3 for Clementine (you have full control of the server, and the server's the one that does damage calculations, tells the client what weapons are available in each type (which doesn't have to be consistent globally!), etc).
I'll try to include a plausibility when I'm talking about things in the future. I try not to let my crazier wanderings into the public ("what if hitting enemies with Zonde would cause extra Zonde bolts to fire off at any nearby enemies?"), but there's still a lot of room in between "can be released individually", "will probably be in the initial release", and "will be released... someday".