This should get us to work with an actual executable, a modern one, instead of using command prompt.
Hey now, it is an actual executable! And it's modern, using fancy AVX-512! It's just not graphical.
I can tell having to write a NIF parser from scratch would be hell for any of us,
This part should be easy. It's not like Havok HKX files where you have this pointer remapping BS going on, NIFs are just classic scenes serialised in a classic hierarchical way. Once you have your framework setup, the rest of it is just reading stuff as the nifskope XML tells you. And you don't have to implement all NIF classes, just the ones that you need right now.
Or use niflib as Chris might be doing. It loads the NIF, but you also need to use the NIF. Unless niflib comes bundled with all the NIF rendering and animation logic too, you'll need to create a parallel implementation.
Or, you might get real hecking lucky and do what OpenMW did: Convert the NIF nodes to OpenSceneGraph nodes. I found that out recently and was surprised it's possible.
Instead of porting to a massive engine like Unity or Godot (which struggle with legacy formats), the research suggests a "Bring Your Own Engine" approach using lightweight C++ libraries.
I don't know how this AI managed to read my mind, but yes, that's my preferred idea. Just bang out some prototype with a raw graphics API. There's no need for heavy things at this stage. Just get those meshes on screen.
Not a problem at all, until you get to the stage where you want to load all mods.
Terrain Splatting: Civ4 uses alpha-mask splatting
Does it? Sounds like it could. And don't forget the terrain meshes. They need to somehow exist and be rendered.
Animation: The.kfm file is just a state machine lookup.
Huh, are they. Guess they look like it. They have a list of animations in them and transitions.
- Port the current TUI to Dear ImGui (get a visual console running).
It's one of the ideas, "just" take Cv4MiniEngine and emulate the console in a 3D graphics API. But it's a bit of a silly idea because you don't want TUIisms in your graphical implementation. You want to make it realtime like Civ4 should be. It's how the DLL should work.
And Civ4 UI code expects a retained-mode UI, so if you use an IMGUI, you'll end up making it not an IMGUI.
Anyway, get a map loaded. Just fire up that DLL in your own application. Than start handling the graphics. Draw plots, draw units. Don't even need a UI, as can be seen when Civ4 bugs out on me and has no UI. Or figure out terrain drawing first and then fire up the DLL. Either order will do.
Meanwhile they also produced this full technical report via this Google Doc that you can read here for more information
By Tiamat, that thing is massive.