I read a long time ago somewhere (probably on our wiki) that the original plan for using Lua was for just quick prototyping that should be moved to C++.
I found the old discussion:
So, indeed, it’s been planned for a long time to reduce the script usage amount to improve performance etc. The situation is a bit better now with AngelScript as it doesn’t let you dynamically dump properties on anything any time you like, so maybe we can in the long term tolerate some part of the game being permanently in script form. Also there’s things like AngelScript JIT we can add here to help things along, it’s also much less of a performance issue to call C++ code from AngelScript as it was designed to integrate very closely with it. But I think it will be better in the long term if we move “finished” systems / parts of the game into C++ to get every bit of performance we can get.
The problems with this approach, as correctly identified in that older thread are that modding will be a lot more involved and if we want to support it well we need to spend a lot of time exposing hooks for mods to use. Of course this will make it possible to have multiple mods on at once, which isn’t very possible with the current approach of “just edit the script files and copy them over the old ones”, so I think we’ll need to do this anyway. And I haven’t seen very many involved mods, yet. I think part of the issue here is that if someone has the skills to make an excellent mod they should join the dev team.
The other is that tweaking the code is more time consuming as compiling takes some time. But this isn’t a big concern with any of the mostly finished systems and when we want something to be tweakable it should load its values from json to allow that easy testing.
All in all I think we should finally aim for having the core microbe systems moved to C++ for maybe 0.4.3 or 0.5.0. Any opinions on this before I make a Github issue?