This is a regularly-occurring status update. More generally-relevant posts can be found under Features (see Creating a Game and Engine from Scratch for context).
This is the beginning of week 3.
What I have done
- I have been working on a build system so that I can build code and assets the way that I want to. A dedicated post about it is here.
- It is possible to define different platforms and configurations (e.g. debug or optimized)
- It is possible to define three kinds of tasks (C++, copy files, or arbitrary Lua functions)
- The task dependencies are tracked, and they are only executed if necessary and in the correct order (only single-threaded, although it has been designed for multi-threaded execution)
- For C++:
- The installed Visual Studios and Windows SDKs are calculated, and the user can either request the latest by version number or request specific versions if desired
- Standard library and platform library support can be enabled or disabled (and, when enabled, the appropriate #include paths are set)
- It is possible to build console applications, windowed applications, shared libraries, or static libraries
- Exceptions can be enabled or disabled
Next steps
- It has now been two weeks that I have been working on the build system, and even though I have made good progress it feels like I really need to start working on actual game engine code. There are still obvious missing features in the build system but I think a good strategy now is to add them as they become necessary for the actual code I am working on rather than trying to add more preemptively.
- One final thing that I think that I want to add is the ability to generate a Visual Studio solution that I can use to debug
- I think it’s ok initially if I don’t create individual projects for named tasks and instead just have a single project to build the entire solution (it seems ok at least initially to manually find files and open them in the editor)
- I do, however, want to be able to debug, and having some intellisense would also be nice, and so I might spend some time trying to get that done.
- Another thing that I know I will want is to be able to set up precompiled header files
- Being able to do this in a platform-independent way would be nice so that I don’t have to go back and redo it later, but it’s not critical
- I may or may not add this before moving on to start work on code
- The initial goal for a program would be to open a window that doesn’t do anything, and that is pretty achievable
- The next goal would be to clear the color buffer to some hard-coded color
- This would be quite easy using Direct3D 11, but using Direct3D 12 requires allocating some memory which will require some memory management work with the way I want to do things (rather than just using global new).