________________________________________________________________________________
Make the core content of your game a mod itself. That kind of design will ensure your API is always up to date with the game.
That's a good idea thanks.
Embedding a Lua (or similar) interpreter is a somewhat common method in the games world. This allows modders and develipers to easily add scripts which can use APIs exposed to Lua.
I'm curious to know why lua would be good compared to python for this purpose?
Lua is made to be embedded into another program and makes that easy, python is not. Python is for writing glue code, Lua is for writing code to be glued together.
Oh I see, thanks for the explanation!
here's a good post on the topic (from 5 years ago but things haven't changed too much afaik)
https://eev.ee/blog/2016/04/30/embedding-lua-vs-python/
Observe Factorio and do what they do, as far as you can. Expose everything to Lua that you can, document well, if you can cultivate a community then it can guide you.
You could consider making only the game's code open source, keeping its assets proprietary. That way you are still able to sell the game normally.
This seems like a good idea but how would you prevent reskins?
Look at what Doom and Quake did before they were open sourced. I think the keys there were releasing the data formats, open sourcing dev tools, and permitting mods to be loaded easily. Also engaging with the community helped.