Author Topic: Lots of modding questions  (Read 1994 times)

Offline Lanwrath

  • Newbie
  • *
  • Posts: 6
Lots of modding questions
« on: October 07, 2019, 06:21:41 pm »
As I was typing the original question a bunch more questions came to mind so the TLDR is this:
1. Can I have ships gain shields, systems, and change drone fleets as they level
2. Can I have AIP gains tied to leveling
3. Can I make my own assets and tie them to the various marks
4. Are there instructions, and poly count/texture size guidelines for importing said assets
5. Is there a system like journal entries from AIWC that can be triggered by a fleet leveling up?
6. Is it currently possible to implement things like the spire core/spire city building mechanics from AIWC?
7. Is it possible to give the player more than 3 starting fleets, or 1 starting planet?

I was playing with the XML system and was thinking about the story The Last Angel, I love the idea of a badly wounded AI controlled ship being found that is very different from the Machine.  As the humans build a relationship with the AI it trust them more and gives them access to more of its systems so they can repair them and bring them back online.

So the drone idea got me going on the concept of carrier ships.  I put together a human and spire carrier and they are not too insanely OP, but I got to thinking more about the escorts and ship leveling in general.  Which leads to my question.

Is there a way to change ship attributes or fleet composition as your mark level changes?

My idea is around a prototype carrier with locked down computers, systems, and fabricators.  As the ship gains marks the crew gains access to new subsystems, and ship designs.
so my general idea is:

MK 1: point defense weapons, fighter and bomber drones, 4 assault frigates, 2 destroyers, 1 light cruiser
MK 2: add corvette drones
MK 3: add Plasma Torpedoes
MK 4: add 1 Battle Cruiser
MK 5: Gain access to the spinal mounted Rail Gun
MK 6: unlock the secondary drone bays doubling the amount of drones
MK 7: add 2 Dreadnought to the fleet

The final ship would have 3 weapon systems, 3 drone types, 12 frigates, 9 destroyers, 6 light cruisers, 4 battle cruisers, and 2 dreadnoughts.

I was looking at the XML's and the only way that makes sense to me now is to do it all using the drone system, but I am unsure about how many different drone types I can have before causing issues within the system.

I am assuming I would have to build a custom flagship for each mark type and just replace the old one with the new one at every upgrade.  But this feels really clunky to me because you will be forced to rebuild all ships at every upgrade, and I don't plan on the larger ships to be anywhere close to cheap.  Is this possible at all and if it is will I have to dive into the codebase to make it happen?

I have also been using the existing art assets and scaling them up and down for all my creations (There is alot of really good stuff in here btw, kudos to the artist).  I am dangerous enough with blender to create new models and have been looking for a new project anyways.  My question is, do modders have ability to make and use new assets and if so is there a video or explanation on how to import them?  Also what kind of poly count and texture size limitations should I operate under while making stuff?


Offline RocketAssistedPuffin

  • Arcen Volunteer
  • Sr. Member
  • *****
  • Posts: 260
Re: Lots of modding questions
« Reply #1 on: October 07, 2019, 06:49:53 pm »
1. Can I have ships gain shields, systems, and change drone fleets as they level

Drone Fleets is no. Shields would be gained purely through Mark. Systems can be done however, using these two lines on them:

max_mark_level_to_function="1"
min_mark_level_to_function="2"

Those for instance would let you have the first system be disabled in favour of a second. I would note that the range for each system still displays, even if they are disabled.

5. Is there a system like journal entries from AIWC that can be triggered by a fleet leveling up?

There is no journal, but I know it is desired so it may appear.

7. Is it possible to give the player more than 3 starting fleets, or 1 starting planet?

Technically. It can be done in the C#, specifically a SeedStartingEntities bit, for the Fleets part anyhow I think (I'm not a programmer).

For the drones, I imagine you can just add as many as you want - I was able to have a Fleet with something like 15 different Strikecraft when I was doing the model sizing.

For replacing the ship...humm. I'll get back to you on that. I have a way of testing it.

EDIT: It loses all the Fleet Designs it had. Ah well.

I have also been using the existing art assets and scaling them up and down for all my creations (There is alot of really good stuff in here btw, kudos to the artist).  I am dangerous enough with blender to create new models and have been looking for a new project anyways.  My question is, do modders have ability to make and use new assets and if so is there a video or explanation on how to import them?  Also what kind of poly count and texture size limitations should I operate under while making stuff?

There's some stuff on here: https://www.youtube.com/user/x4ooo/videos

I'd be curious about the poly count and limitations myself...find I have the occasional desire to try 3D modelling now and then. Actually looked at Blender today and seems somewhat clear enough.
« Last Edit: October 07, 2019, 07:00:50 pm by RocketAssistedPuffin »
Autistic, so apologies for any communication difficulties!

Offline x4000

  • Chris McElligott Park, Arcen Founder and Lead Dev
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 31,651
Re: Lots of modding questions
« Reply #2 on: October 07, 2019, 07:04:20 pm »
Just quick responses, please let me know if there's any clarification needed:

Quote
1. Can I have ships gain shields, systems, and change drone fleets as they level

Yes... on some things.  There's a min and max mark level for systems, so those can turn on and off.  But adding drones or shields is not possible.

Generally speaking, a higher mark ship is a stat boost.  The overall design goal is to have variants of things where need be (such as the dire stuff, or other ships that are variants on a base).  This is an important distinction from the first game, because in that one a higher-mark ship was literally a new ship.  That's not the case here; it's just some numbers moved around.

Now, there IS still that sort of flexibility, but you have to make a descendant type of ship (like the "vicious" stuff that gets extra damage, or the "ensnarer" stuff that gets tractor beams).  Those can either be used as special capturables, for certain AIs, OR they can be limited by the mark level of planets so that the smaller ones have a max mark of 3 (for instance) and the larger ones start at mark 4.  Then the higher-mark enemy planets get more scary stuff, essentially.

BUT, with those, usually I'd prefer a name change ("Vicious Thingie" rather than just "Thingie") because otherwise it gets super confusing for people looking at the sidebar or other descriptions, etc.  When a ship changes nature fundamentally without a name change just because of mark level increases, that gets confusing.  Hence why the design is what it is.

Most of what I said above is more relevant to granting the AI new stuff as they have higher-mark planets.  But it's not going to convert lower-mark stuff of the player or the AI into a new ship line when they level up a certain amount.  I could see us adding a feature like that post-1.0, I don't think it would be too terribly hard.  But I do think it would be... strange.   I'd rather have players keep their old smaller stuff but capture cool new variants later in the game, rather than having unexpected unforseen changes to their ships as they mark up.

Quote
2. Can I have AIP gains tied to leveling

I'm not sure quite what you're asking, but I think the answer is no.  Do you mean giving the AI some AIP when the players level up ships via a tech or via EXP?   Wow, that would be MEAN. ;) 

It would make for some irreversible Bad Stuff That Happens Invisibly When You Do A Thing That's Supposed To Be Good, and that's a major design problem.  One example is that I had higher-mark ships costing more energy, but it turns out that people could put themselves into negative energy just by unlocking a tech or even just by fighting and having a fleet auto level up.   Bad bad bad, the frustration was palpable for people.  So those sorts of mechanics that punish you in any way for tech unlocks or fleet upgrades are things I'm against, since they tend to hit players out of the blue and frustrate them.

If you mean if AIs can get higher mark-stuff at higher AIP levels, that does already happen.

Quote
3. Can I make my own assets and tie them to the various marks

Not unless you make a variant ship (see #1).  You can make the size of higher marks increase, but visually that's all that can differ between those.  Generally speaking, when thinking about something like your "The Last Angel" inspired stuff, I'd see that as being a ship that transforms between styles on certain markers or something.

Fun fact, you could make a hack that does that sort of thing now, since hacks do kind of whatever.  And you can frankly make them markless if you want, or assign them the min/max marks you want.  But hacking would be the way to go for doing those sorts of upgrades, I'd say.

Quote
4. Are there instructions, and poly count/texture size guidelines for importing said assets

I need to set that sort of thing up, because my prior ones are out of date.  The shader needs to support instancing, and have that enabled.  You can have multiple submeshes, but only one mesh.  It needs to be a GameObject with VisualSolomeshShip attached to it.  You can set up multiple LODs if you wish, and link those across.

For poly counts... generally speaking it depends on how many of these things are being shown.  If it's a rare thing that's only one per game, then I'd say 10-30k polys is okay, but we can't go nuts in general with a lot of ships like that.  This would be a true singular hero unit.  For ships like that, doing some polygon reduction and having lower poly versions be more like 2.5k to 5k is a good goal.  For small and midsize ships for that's a good goal in general.

Quote
5. Is there a system like journal entries from AIWC that can be triggered by a fleet leveling up?

Not yet, but soon.  Although again I doubt leveling up would be a trigger soon; I'd honestly do this through hacking.  All the things you want to do right now would definitely be doable via hacking to "level up" each time.

Quote
6. Is it currently possible to implement things like the spire core/spire city building mechanics from AIWC?

You'll have to refresh my memory on exactly what you mean, but I'm assuming you mean basically a third-party faction that builds some structures on its own budget and does... whatever logic in order to place things, etc?

If so: yes, it's way more possible in this game than the first one.  Marauders, the Nanocaust, and the Macrophage all have different logic that is based on this sort of thing.   It's actually crazy flexible, and you can design factions that are quite complex and have their own style of economy that is all of your own making. Aka dark spire gets energy from certain things that other factions do, and they spend that on new stuff.  Macrophage and nanocaust work entirely differently.  Etc.

Quote
7. Is it possible to give the player more than 3 starting fleets, or 1 starting planet?

Um... hmm, that's a good question.  Not in a super modder-friendly way I don't think, not in a basic interface fashion. BUT if you added a new faction (that is perfectly modder friendly) that players could add, then that faction could easily grant players more... anything, frankly.   On early init, give the player an adjacent few planets, give them some new goodies in late init give them some ships on said planets, etc.

Some things are limited just because we haven't had time to implement stuff that nobody was planning on using yet, but a lot of things are possible for us to add once we get through the 1.0 polish period.  The system is baseline set up for a crazy amount of modding.  And frankly, if you find you're re really getting into it and want to have access to add extra modding tools that you then use for your mods, PM me and I can set you up with svn access.  Then all things become possible, and you can add more things for others, too.  You can also then study my ship assets directly if you so desire.  Or email me at chrispark7 at gmail, is  even better.

Cheers!
Chris
Have ideas or bug reports for one of our games?  Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline Lanwrath

  • Newbie
  • *
  • Posts: 6
Re: Lots of modding questions
« Reply #3 on: October 08, 2019, 12:35:13 am »
Thank you for the responses, forgot how awesome this community is (been around since AIWC 2.000). Chris I am sorry to hear about all the rough patches you have been through recently, hoping everything works out for you.

It's late, and I need to sleep so I apologize for any formatting issues or typos...

Quote
max_mark_level_to_function="1"
min_mark_level_to_function="2"

Those for instance would let you have the first system be disabled in favour of a second. I would note that the range for each system still displays, even if they are disabled.

Thank you, this is quite helpful.  This would allow me to do really cool stuff with Mark increases like adding attributes to weapons as custom ships level, so something like a main gun that is an EMP cannon it starts with a stingray anti shield attack, that at mk 3 gains engine damage, mk 5 gains weapon stall, and mk 7 gets AOE.

Quote
I was able to have a Fleet with something like 15 different Strikecraft when I was doing the model sizing.

Goodness, that is awesome.  Through proper fiddling you could create a pretty cool carrier type drone ship with complements of fighters and bombers as well as small amounts of many specialized ships.

Quote
find I have the occasional desire to try 3D modelling now and then. Actually looked at Blender today and seems somewhat clear enough.

Blender is fantastic, I have been using it at the hobbyist level for years.  The community is amazing and has an insane amount of resources available for free or at cost.  I have spent about 20 bucks on Udemy classes during their sales.  Youtube has alot of great video resources and the r/blender reddit community is very good.  BlenderGuru has some very good quality tutorials for getting started in the software.  There are also really good add-ons that make hard surface modeling go much faster.  While not quite as amazing as substance painter, the texture nodes are very powerful and do a good job for these types of assets.

Chris, I agree on your assessment about leveling and AIP.  The question was more around one specific fleet leveling.  More of an oh crap they are one step closer to unlocking the MacGuffin and must be stopped at all cost.  The more you talk about it the more I think hacking is the answer to it.  So another question is can a hack be level gated?  Fleet hits level 3, now it can go raid the AI research base for the special item needed to power it up.  I could set the flag on the ship so it  doesn't upgrade via tech or fleet xp... or I could let it level normally but it becomes a new ship type when the hack is done, the hack has AIP consequences... or it triggers exogalactic strike forces... or both.  >D

Quote
I need to set that sort of thing up, because my prior ones are out of date.  The shader needs to support instancing, and have that enabled.  You can have multiple submeshes, but only one mesh.  It needs to be a GameObject with VisualSolomeshShip attached to it.  You can set up multiple LODs if you wish, and link those across.

So, your saying its possible.  Does the system allow me to have animations?  Like moving turrets, missile ports opening and closing, armor rolling back to expose a spinal mounted cannon.

Quote
6. Is it currently possible to implement things like the spire core/spire city building mechanics from AIWC?

I was more referencing the plot line to scan for shards, escort them home and than be able to build cool stuff.  All while having a wild AI response.  I am envisioning a plot line where you are raiding very specific AI research facilities to steal prototype weapons and ships.  So the Centerpieces new guns and drones would be simple hacks to take the weapon systems.  But the prototypes have to be manned with a skeleton crew and brought back to the research lab/berth to be reconfigured to allow human crews.

In my head I am looking at the ships through a star wars ship class view.  So the strike craft are akin to x-wings, y-wings, system patrol craft, Millennium Falcon.  Frigates are like the Nebulon B, and the CR90 Corvette (100 to 400 meters).  Arks and Golems are like the Mon Calamari Cruisers and Star Destroyers(1000 - 2000 meters).

The class of ship that I see being used for this kind of mission series is equivalent the Executor or an Eclipse class dreadnought(5000 meters).  This would be like the spire fleet from AIWC.  Lots of power, lots of AI response.  Its escort ships at max power would be 2 Ark/Golem+ class, 4 Ark/Golem class, 20 Frigate class, and around 120 drones.  It would be a true battle group capable of terrorizing MK VII worlds and would be a credible threat to a homeworld.  I liked the concept around the Spire campaign from AIWC and am hoping that something like that comes back, but this is much more of a single battle group with no home base coming from the shadows, terrorizing AI worlds than slipping back out before the AI can muster a full strike force. 

Would it be possible to create a faction whose sole purpose is to hunt this thing down?  So it would be like an advanced warden fleet.  Most of the time it sits at a core world, when the battle group is in AI territory for more than x minutes than the strike force mobilizes and warps into a neighboring AI planet, than heads for the warp gate to destroy the battle group.  As the plot progresses the response force can become larger and warp to more neighboring planets in an attempt to surround in the battle group during one of its deep strikes.  This faction could have massive ships that rival the battle groups centerpiece.

My thought was that this is a ship that was waging an individual war against the AI and the player would get a distress call.  If they answer it and go repair the ship than it would join their faction in the war with the Machine.

Quote
7. Is it possible to give the player more than 3 starting fleets, or 1 starting planet?

I like the idea of another faction that gives the player stuff.  The background is open ended enough that there is room for any amount of time to have passed since the AI took over, so there could be other groups of human survivors on planets, etc...

I posted a question on the steam message boards

Quote
Love this game and the direction it is going, but I have some questions. I have been creating some custom game starts and my favorite is with 3 AI's, all minor factions, 2 dysons. It is quite intense.

I was playing with 4 AI but the Special forces master difficulty 7 Anticipatory wardens 7 and Intelligent hunter 8 was hitting my homeworld with hundreds of mark 5 ships about 30 minutes in at AIP 30, so I dropped him from the list. Not sure if this was a bug or intended behavior.

Anyways I was having alot of fun with the parasite fleet and wanted to play a game where I antagonize Dark Spire to get hundreds of their huge ships and wage all out war against the AI with my Dark Spire Zombie fleet. To facilitate that I have been playing on an X map so I have the minimum number of hops to get to goodies. Due to the RNG nature of things and me really wanting to maximize the parasite fleets I have been setting all the configs, starting the game, using the debug to scout the map and than looking for parasitic capturables. I haven't even seen a Thanatos in 4 starts.

So question 1: How do I save my custom starts.

Question 2: How do I modify the galaxy seeding algorithm to create certain types of galaxies. So If I want to play the parasite game I would like to have it so that only certain themed capturables are generated. I see the capturable seed weight in the GameEntity xml's but am not sure which direction the values need to move.

I am also experimenting with starting fleets and was wondering if it was possible to seed the home world with more stuff, so for instance X galaxy, center world 4 AI civil war all other minor factions active. and seed the home world (or just start in possession of) 2 or 3 citadels, Ion cannons, Mass Drivers, Golems, officer fleets, Zenith metal and power generators, etc... Or is that a thing that will be done through the tutorial/scenario system?

It seems like the answer to the third question is answered by modding in a custom faction. Is there a way to add to the quick starts or save custom start configs through xml?  Question 2 is self explanatory. 

To answer your unspoken question yes, starting with a Thanatos fleet and a Parasite Citadel with Dark Spire 10 and everything else cranked up too is everything you could hope for... right up until a metal shortage caused by level 10 marauders and an exogalactic strike cripples your economy, causing you to lose control of the Dark Spire Generator... than it gets even better while your power 700 zombie forces are slowly whittled away by the AI on one side and the Dark spire on the other.

I will certainly take you up on your offer of email, work is crazy and so is the personal life but... there's always a little time for AI War.

Offline BadgerBadger

  • Arcen Volunteer
  • Hero Member Mark III
  • *****
  • Posts: 1,229
  • BadgerBadgerBadgerBadger
Re: Lots of modding questions
« Reply #4 on: October 08, 2019, 12:45:39 am »
Fair warning, everything I say here requires a high degree of coding skill, technical savvy and willingness to get your hands very dirty.

The question about AIP change based on levelling; AIP change is done via the BaseAIFaction.ChangeAIP() function, which is static; it then calls a ChangeAIP function for a all the AI Factions individually. So you could throw some code into either of the ChangeAIP() variants that says "If <some condition>, multiply the AIP change by SomeFactor" easily enough.

You can observe this code path by looking at where ChangeAIP() is called in Scenario_BaseScenario.cs (and many other places, but BaseScenario is a good place to start), then trace it through the static ChangeAIP function in AI.cs, which then calls the non-static version in AI.cs for each of the AI factions.

If you want to give the player more starting planets you could follow something like what I did for the Ally with AI code (you'll need to hunt through the XML to look for references to that, then look in Badger_GalaxySettingImplementations.cs to see what the code does there). Once in there, instead of a DoAlliances() function you'd need to give the player more starting planets. Reading through the Mapgen code and what the Nanocaust does when beginning an invasion would be where to start. I would probably say "Don't bother unless you have a degree in CS/software dev, its equivalent in experience or a great deal of patience".

If you want a Spire-like campaign then wait for Chris or I to implement it and then repurpose the code ;-)

Offline Lanwrath

  • Newbie
  • *
  • Posts: 6
Re: Lots of modding questions
« Reply #5 on: October 08, 2019, 10:36:28 am »
Quote
Fair warning, everything I say here requires a high degree of coding skill, technical savvy and willingness to get your hands very dirty.

While I do hold a CS degree I have been in the data engineer/architect world for 5 years now so my java and C skills have been pushed back by python.  I honestly do not miss memory management :) , but it may be a nice break from wrestling unruly data sets or designing, building, and populating data lakes. 
Quote
I would probably say "Don't bother unless you have a degree in CS/software dev, its equivalent in experience or a great deal of patience".
This type of work breeds patience, digging through a database with hundreds of tables and zero documentation to build the data set needed to solve whatever the problem of the month is can be a very tedious affair.

Quote
The question about AIP change based on levelling; AIP change is done via the BaseAIFaction.ChangeAIP() function, which is static; it then calls a ChangeAIP function for a all the AI Factions individually. So you could throw some code into either of the ChangeAIP() variants that says "If <some condition>, multiply the AIP change by SomeFactor" easily enough.

So... are you saying that AIP is actually tracked separately across the various AI factions?  Does the wave and other logic for AI factions look at global AIP or individual AIP?  I ask because that could be HUGE for strategies against multiple AI's as well as for modding purposes. 

Strategically if I am playing against 3 AI's, Full Ensemble, Fortress baron with hunters on defense, and a Wormhole master than I would make very different targeting decisions based on who owns what, jacking up AIP for the Fortress baron may not be as short term dangerous as the Wormhole master, etc...

Quote
If you want a Spire-like campaign then wait for Chris or I to implement it and then repurpose the code ;-)

I have always wanted to do game design but the stars have not aligned for that to happen so I have lived vicariously through indie dev blogs and playing in Unreal and Blender in my free time.  Chris and Keith showed me it was possible to do it through the Arcen journey over the past decade.  If you guys need some help than I would be honored to help out even though I am insanely busy with 4 kids and all the joy that comes with that.  It would be a very fun change of pace from my current coding related projects and I have plenty of ideas.

Offline BadgerBadger

  • Arcen Volunteer
  • Hero Member Mark III
  • *****
  • Posts: 1,229
  • BadgerBadgerBadgerBadger
Re: Lots of modding questions
« Reply #6 on: October 08, 2019, 11:28:53 am »
My comments about programming skill was mostly just to ward off anyone who really didn't know what they were doing but had sky high aspirations.

The logic is all there to allow for different AI factions to have different AIP, and in theory it should "Just work" if you have AI factions with different AIP. In practice we keep the AIP sync'd between all the AI factions, and there's no current UI feedback if AI factions have different AIP. If you want to get AI factions with different AIP levels then you'd have to tweak the ChangeAIP function a bit. Note also that the FactionIndex and secondary faction index passed into that function don't necessarily correspond to the AI faction whose unit was killed. Allowing different AI factions to have different AIP levels is something that should be revisited for expansions.