View Issue Details

IDProjectCategoryLast Update
0025629AI War 2Note To TestJun 4, 2022 2:10 pm
ReporterRocketAssistedPuffin Assigned ToChris_McElligottPark  
Severityminor 
Status resolvedResolutionfixed 
Product VersionBeta 3.708 Bugfixes And Death Spawn 
Summary0025629: Reminder for Chris on total conversion ability
Description"At some point I could see theoretically making the Core stuff more of a stub that is split out.
See, there's certain parts that just absolutely CANNOT be moved out... but they don't have to do anything, if that makes sense?
Having those redirect to a different location would be kind of helpful in various ways, I suppose.

I'm not sure how many touch points there actually are between what is in Core and what could be moved into... CoreOuter or whatever.
I have a lot to do today, but remind me -- mantis, maybe? -- in a bit. The ability to do total conversions would be nice in general, and I would like for more of the game to be open source anyhow.

I am currently in the process of breaking all savegames over and over again anyhow, so there's never going to be another time to do it.
And this is a generalized framework that I'd like to be able to extend in the future.
For other games.
And I'd like for modders to not really be limited after I am mostly stepping away from this one.
It's a reasonable request, and there's no better time than next week, since I'm breaking all the saves anyway."

"So, back up one moment.
Basically, we support many mods at one time, right?

So the idea is that there's a total conversions mod folder.
This is different from other mods.
The game could read from there to allow you to turn one on and off through the interface, no problem.
However, when you turn one on, then it switches to THAT, and you absolutely will have to restart the game.
When you load the game up after that, you're now are loading from the total conversion folder.
It has no knowledge of other normal mods, any of the base game xml -- I mean absolutely zero -- and it's also missing the main Core dll.
So it has to reimplement... everything.
Thankfully a lot of that is just a copy-paste, if that makes sense.
Or fork the code and just maintain that.
The one thing it will be able to share is the asset bundles with music and sounds and images and models and such.
But you could of course have it look to custom ones (regular mods can do that, also)
This total conversion mod folder would have is OWN sub folder for mods.
So for instance if CF was a thing, then there could be a version of Kaizer's maraduers that works for it, in there.
But it would have to work in whatever the framework of CF is, because these are not compatible codebases.
The downside of this sort of approach is that you are absolutely on your own as a total conversion modder when it comes to any improvements or bugfixes made to the base game.
Basically, if we make 40 bugfixes to the base game that you want, you'd have to copy that into your codebase and recompile.
If you don't care, then that's also cool.
A lot of changes would not be relevant, given a large enough total conversion.
There's really no middle ground when it comes to a total conversion mod.
You either have all of the power, or you don't.
So this would be giving all of the power, but I wouldn't suggest anyone actually try to make a total conversion mod until AI War 2 Complete is out and stable for a bit.
That way there's not an endless litany of merges you're having to think about."

"But it would be possible to have any number of total conversion mods, in this style.
Only one could be active at a time, but they could live next to each other in harmony.
Each one could have its own sub-mods, and is like a game within a game.
The list of mods for CF would only appear when CF was active.
And the mods for the base game (total conversion aside) would be invisible while CF is active."

Puffin: "SirLimbo seems to be thinking more of implementing the CF features as a "useful for Vanilla" style."

"I think in that situation... it gets complicated.
In those situations, it could be better to... implement features, carefully, into Core itself.

And then use the very broad features there to do something new in external.
Being able to just strip out all the xml but keep the central code would be a lot easier honestly.

And that would not require lots of code merging.
So, let's think about this another way.
There's "all the power in the world" by having code stubs, etc.
But how much of a PITA is that?
Possibly a big one.
(For the modders)
But I share source access with modders I know past a certain point.
So if they were to add features into core that none of the base game units actually use at all... that's fine.
As long as they do that efficiently.
At that point, then, if we've forked the xml into another folder, we still have ourselves a total conversion situation with a sub-mods folder for sure.
But now it's all xml, not worrying about code.
This could be a lot more flexible, to be honest.
Well, that's the wrong word.
It's less flexible for sure, but it's... more easy to do big things without having to maintain your own separate game.
It actually is more of a middle ground, for the simple fact that modders can alter the central Core source.
Without that, it wouldn't work.
Well, that is pretty interesting indeed. And also less work for me.
And less work for the modders.
Slightly less power on the part of the modders, but if they're following how I do refactors to allow for multiple paths on things, then they can use the same sort of design patterns themselves.
I think... another bit of a refactor may be a good idea on my part.
Moving some things into external, because I know that's going to be a thing."
TagsNo tags attached.

Activities

tom.prince

Jun 4, 2022 2:10 pm

developer   ~0066931

This has been implemented for some time now.

Issue History

Date Modified Username Field Change
Oct 14, 2021 9:35 am RocketAssistedPuffin New Issue
Oct 14, 2021 9:38 am RocketAssistedPuffin Description Updated
Jun 4, 2022 2:10 pm tom.prince Assigned To => Chris_McElligottPark
Jun 4, 2022 2:10 pm tom.prince Status new => resolved
Jun 4, 2022 2:10 pm tom.prince Resolution open => fixed
Jun 4, 2022 2:10 pm tom.prince Note Added: 0066931