Database for IDs to avoid mod conflicts

I proposed something like this a while ago too, via the mod discord. I was told that the modding community tried already, but only a small % of the mod authors bothered to include their mod IDā€™s. Everybody else either didnā€™t hear about it, ignored the effort, or there was a language barrier and people didnā€™t understand.

So in practice this could be helpful, in reality it would be a great deal of effort that may or may not result in anything constructive.

1 Like

oh ok, iā€™ll scratch me chin a bit more to try and see if theres an easy, multi-lingual way to address it somehowā€¦ (but first i need to cook some eggs and dry some shredded roast meat before it spoils lol) :slight_smile:

Even if not everybody takes part, at least you know thereā€˜s no ID conflict for those who do.

Why is this even a thing? I mean, I understand how it happens but the fact that it happens is what perplexes me.

I get that mod devs create things and those things have an ID generated, presumably, by the DevKit? In theory then, wouldnā€™t the DevKit have a running tally so to speak? Beyond that, why do they use actual numeric IDs? Why doesnā€™t each DevKit instance create a unique ID or GUID?

If the mods are creating ID conflicts to me that means lazzy Devs on Funcom or Epicā€™s part.

No, the devkit doesnā€™t auto generate data table IDā€™s (that Iā€™m aware of) and it definitely doesnā€™t store other peopleā€™s item IDā€™s in it from other mods. There are various data tables within UE4 that are essentially .csv files. In those are things like item tables and feat tables. You create new data tables, and use a mod controller to merge your stuff into the vanilla data table (for max compatibility).

When adding items into the data tables, you have to manually create item row IDā€™s for them by assigning a number to them. Its easy enough to avoid Funcomā€™s IDā€™s since, they are visible, but player IDā€™s could be any number of combinations and nearly impossible to know what is out there now and what is being used. The ID range can extend into the 10,000,000ā€™s of millions I believe too.

Data tables are a UE4 thing. I am unsure if there are ā€œbetterā€ ways to do this in UE4 as Iā€™m not fluent with UE4, and what little I know about UE4 is from modding for Conan Exiles.

Anyhoo, this is why efforts like this have been discussed to try and make everybodyā€™s work as compatible as we can.

So, as I saidā€¦ The fact that it uses numerical IDs instead of GUIDs is the isssue. This is lazy programming and/or bad project management on Funcom or Epicā€™s part.

If they knew it was going to support mods, and as far as I know they did, then they had to know this was going to be an issue. Iā€™m not a Mod dev but I maintained databases with hundreds of thousands of entries that constantly had data going in and out. One of the first things they teach you as a young DB admin is to not use these sorts of IDs for this sort of reason.

Iā€™m probably not the person to discuss this kind of stuff, Iā€™m a rusty 3D artist who just fumbles around in the dark with the UE4 dev kit. There are WAY more advanced modders out there that can give you more solid info as to what is and isnā€™t possible and why. It makes sense as to what you are saying, but Iā€™m going to assume there was a valid reason it was done this certain way when developing mods via the dev kit.

Iā€™m pretty sure it was laziness at some point. As modding isnā€™t an official thing Funcom and Epic probably just gave it the barest of support.

ā€œYes, you can make mods, yes people can use them with other mods but we donā€™t support thatā€ is the basic gist.

Assuming all items are in the game.db file (i havenā€™t done a lot of spelunking in the files yet) and given that the game.db file is a SQLLite database itā€™s very possible to have a function that looks at the IDs and spits out conflicts in a log. Itā€™s actually a pretty standard thing to do, though thatā€™s really only useful to the end user and not the Mod Dev.

Could it also spit out all the IDā€™s being used? It would be a HUGE project, but if it was possible to do that, then in theory someone could go through mod after mod and get IDā€™s for them all and put up a spreadsheet on the wiki or something.

Yeahā€¦ I mean I havenā€™t opened he db itself yet but that sort of thing is a reason for Databasesā€¦

And hereā€™s a wrinkleā€¦

Itā€™s possible to update conflicting IDs in the db and with some clever coding in a mod match the new ID to and old ID, likely via a separate db or text file as I imagine adding a table to the actual game.db will send it into a tizzy. Unfortunately the Mods code calls the stuff by ID so youā€™d have to recompile each mod with your new IDs which is problematic on several levels.

But yeahā€¦ Someone could say Iā€™m making a database of IDs. Submit your Mod IDs and whatever else and youā€™ll get a fancy seal of db integrity, or some such.

i just found this if it helps:
https://conanexiles.gamepedia.com/Modding_DataTables_and_Components

2 Likes

Thatā€™s interestingā€¦ hmmm

Iā€™m going to end up having to get the DevKitā€¦

Robtheswede (thatā€™s his discord name, heā€™s one of Conan Exiles devs) has been adding and editing a dropbox guide for us modders for a while now. He keeps it pinned in the tips tricks and tutorials tab of the mod discord, but here is the link if you want some more additional info on stuffs.

1 Like

Ooohhhā€¦ Very interesting.

Whatā€™s the Discord channel?

Linky to mod discord

I should add that this discord is used only for modding and the dev kit.

Thanks

cool, if you end up making mods (or anyone else wants to dabble), i made a small request here :slight_smile:

Hmmmā€¦ Java language requires all classes and packages to be named. So Itā€™s a good practice for Java coders to register their own domain names (which are unique thanks to worldwide DNS system which takes care of that) and use them as names for their packages (and prefixes for all of their classes). So EVERY Java class on earth has unique name. We here in Steam have unique ID for every account, donā€™t we? Steam takes care of that. Why not to use it as prefix for object IDs? Letā€™s make it ā€œa good practiceā€ for CE modding if itā€™s possible technically (I mean number of digits in such IDs).

A quick overview is on the wiki now:
https://conanexiles.gamepedia.com/DLC_Item-Ranges

If you have any questions, suggestions or feedback let us know here or on the discord - or modding discord in this case (tips and tricks channel)

Hey again @Scopique ,

As for Enum IDs, the ones modders use, thereā€™s now a channel on the modding discord to provide them and retrieve them.

(just fyi I assume youā€™re not Ephraim, who set the channel up :sweat_smile:)