I haven't posted anything in a while but I've been working on a hell of a lot. Some would even call it a refactor. Here's a short rundown of the stuff I can remember:
Dynamic Terrain
I wasn't happy with the terrain feature in Unreal Engine, and after some stupid crashes I had enough and coded my own one from scratch. It reads terrain data from an image file (PGM ASCII which can be exported from GIMP), and spawns the geometry in tiles which then get LOD'd out at a distance from the camera. The advantage to this is that terrain can be manipulated at runtime, something the Unreal engine system doesn't allow, although I don't think I want to bother making this part of the game.
Multithreading / Multi-Core Processing
No thanks to the Unreal Engine documentation (which recently got deleted), I managed to get multi-core processing to work (which is what I'm using to process the landscape). The above landscape is 1024x1024 and processed without any stuttering in under a second. Load times shouldn't be longer than it takes to load the textures and sounds.
ECS
The bulk of the game is coded in an extreme form of ECS, which in laymans terms means that all the data is kept in arrays so that it can be read from RAM as fast as possible. It also makes it very easy for me to code, and extremely easy for others to mod.
Instead of there being different classes and components for things like buildings and citizens, there are just massive arrays containing all the data in parallel, with each object being represented by a single number. Components like 3D models or sounds are then spawned only if they're needed. This means that even with 10,000 people and hundreds of buildings on a given island, there will only be about 10MB of data. This should drastically improve how fast I can calculate things like collision and AI. It should also mean that I can have things happening in other levels (i.e, other islands) without having to load anything, and without impacting the main thread.
Grid Collision
I wasn't happy with the Unreal engine collision system either, so I coded my own which was partially inspired by the systems that were used in Asscreed: Unity. Instead of "existing" in the world and using the inefficient in-house system, every object is just a number attached to a square in a grid covering the whole map. To check collision is just measuring the distance between each object in a square, which is a lot faster than checking if two objects are actually colliding. This will also allow for collision detection without actually having to spawn any models or even collision meshes.
Modding
As part of the recoding, I needed some way to read data for item stats and the like, so I programmed a system which allows .CSV files (an excel format) to be used for storing data. I also have a system for appending separate files to the main one, allowing for multiple compatible mods.