Hey all, I'm a kernel/vmm/embedded developer who is making a hobby game on the side with some highly competent friends. I have been using MSYS2/mingw64 to build my homemade CMake-based C++17 “game engine” on Windows for a while, but quite frankly I don't like it. It builds static binaries just fine, and they are not performing as well as on Linux. Don't worry about that, though - it's a 2D game. The problem is the terminals I'm using are slow and unresponsive, the editor I'm using (Atom) feels worse on Windows, and I feel like the filesystem is holding me back. Why is there no ~ for the home folder? ?
I feel like Windows is a pain to use and I don't want to spend any time programming there. So, what to do?
Well,
- I could pay someone to create a best-practices windows build of my existing game engine. How would that look? What editor would I have to use to not feel like I'm working inside a VM?
- I could pay someone to rip the guts out of the game engine and replace it with another. This is going to be expensive because my game is written using OpenGL 3.2+ mainly. Game engines should abstract that away, and obviously this will be time-consuming and maybe not worth the time.
- I could implement the game on Linux, then create a Windows build semi-regularly as I always do, just to check things are still alright. This is what I do now, but I would like a Windows docker container to automatically build for me. Unfortunately, that's not a thing because.. Wintendo. Or did I miss anything?
- Use VMware workstation to build Windows binaries with. The OpenGL emulation is not the best there, but I think it's just enough to get a context going. Maybe it was only OpenGL 2.x. I've done this and then I stopped doing it, but I don't remember why. Maybe it was a poor substitution for real Windows?
Did I miss anything? I'm obviously not against working on Windows, but I have a terminal-centric build system that has no IDE support (and I have no experience with that anyway), so did I lay out my options accurately?
Some technical details:
I'm using fopen and friends, using C++ over C to be more compatible with Windows. I'm not using anything Linux-specific that I'm aware of. My dependencies are GLFW, fmod, nanovg, backward-cpp and rapidjson. backward-cpp is for universal backtraces.
-Gonzo