My wife and I took a vacation to the magnificent Rocky Mountains (which is why I didn’t update last week). This was extremely relaxing, and left me raring to code once more! Unfortunately, my trusty laptop of 6 years decided that it was time to die (who can blame it? It’s seen everywhere from London to the Pacific now!). Piggie banks were raided, and I’m now working on a lovely HP Omen gaming laptop. Other than the ominous red glow, it’s awesome – really fast, nice dedicated video card, and a generally great experience. At work, we’ve been trying to move towards a more unified setup (plug a laptop in at your desk, and use the same PC when you travel) – so it’s doubling as a work devbox right now. For the first time in years, I’m using Windows as a primary environment – and it isn’t bad (Bash for Windows helps a LOT, and VMWare has me a Hackintosh available…)

So I spent a large amount of time installing everything. It amazes me how long this takes. Anyway, I think I’ve got the important things running now.

So, with what was left of the week, I accomplished:

  • Managed to get VS2017’s CMake integration working, and it can now load/build the Nox Futura project. I’ve gone ahead and integrated vcpkg, the C++ Package Manager from Microsoft. This really helped. There’s a TON of warnings, but it now compiles/runs in 32-bit and 64-bit mode Windows.
  • Visual Studio’s Debug mode includes range-checking on vectors by default, which helped me find a couple of “off by 1” bugs that were causing issues during world-gen.
  • I couldn’t get Boost Filesystem to link properly, so I used C++17’s std::filesystem instead. It works great.
  • Resolved an interesting issue that my sprite shader code worked great on OS X/Linux, and gave a black box on Windows. I’m still not entirely sure what was wrong, but setting the alpha level directly in the output fixed it.
  • Put the skeleton of the new Systems manager together. There’s a handy template for ensuring everything gets profiled, and the new profiler stores the last 100 timings for each system (which display in an ImGui graph). There’s structure in place to handle multi-threading at this level, but I’m not using it yet.
  • Spent far too long fighting ImGui fonts, only to discover that everything was fine other than a one-liner to tell it to actually use the fonts it loaded. :-p
  • Re-integrated the Calendar system, and used it to place the sun in the right part of the sky.
  • Put keyboard controls back in (needs some work to slow down key-repeat!), and the camera is now fully controllable once more. Space for pause and period for single step are working.
  • Improved the voxel model loader to use the greedy voxel algorithm in all three dimensions. A single cube (made of 32x32x32 tiny cubes) correctly compresses to one cube now.
  • Fixed up colors on voxel model rendering, created models for Cordex, Small Replicator, Cabinet, Cryo-bed (all the furniture in the starting area).
  • Fixed up textures on trees.
  • Started on the voxel-model composition system for characters. Characters ethnicity correctly re-colors their model now (using a clever system with instancing, it instances the same model and sends tint information in a second VBO). It’s nice and zoomy.
  • Fixed some CMake issues with finding GLFW.

So it’s been a productive week, even if I had to change platform mid-week. I’m really close to having screenshots and similar, but I just didn’t have time this week. I also didn’t want to show off shots of naked settlers standing around, since clothing is the next item on my to-do list for graphics mode!