Week 3

Byte-Sized Updates

  • Architecture Update: We’ve made changes to our design as expected, systems were added and removed based on the criteria of the test game.
  • Input Module: Implemented the input module with polling and callback registration interface.
  • Engine Loop: Moved from a while loop in main to an engine loop with fixed update time step, variable rendering.
  • Timer: Created a clock class to support multiple clocks in-engine.
  • Memory Management: Implemented double buffered allocator and object handle, and currently halfway through defragmentation.
  • Filesystem: System to create/read/write files synchronously and asynchronously using Microsoft’s API.
  • Networking: Created the networking module and wrapper, made some rudimentary message objects, and connected our team from across the void (i.e. the space between our computers)

For full write-up see here. The code can be found on the GitHub repo tagged with week-3.

Week 2

This past week we interviewed with Casey Muratori of Handmade Hero, the video is available here.

Byte-Sized Updates

  • Memory: Implemented memory allocation utilities, stack allocator, and pool allocator
  • Graphics: Wrapped Horde3D as RenderModule and GLFW as WindowModule and improved inter-module communication model
  • Engine Config: Wrote a config file parser, storing values in console variables to be accessed by other systems and eventually an in-game console.
  • Networking: Determined to move forward with yojimbo and will be expanding our control of the network in the coming week.

For full write-up see here. The code can be found on the GitHub repo tagged with week-2.

Week 1

It’s hard to believe we technically started less than two weeks ago! During the summer, we pored over planning what the project would include, approximating how much we could accomplish in 3 months and preparing ourselves by reading relative materials. This week we started making decisions on our engine (we have a separate blog on this!) and actual development.

Byte-Sized Summary

  • General setup: Talk about our development using GitHub, linter, API design, and unit testing — hint: we are relying on standards established by others.
  • Roadmap: Roadmap of the engine’s development for the next 3 months, broken into thirds, each with systems we will building during it.
  • Version Control: Set up Github repo and decided on workflow.
  • Rendering: Chose Horde3D over Ogre and made a demo of it
  • Module Manager: Made all initialization and deinitialization private and made the module manager a friend class of all modules
  • Audio: Chose FMOD over OpenAL Soft, integrated it into our engine, and made a wrapper on it
  • Networking: Built the GameNetworkingSockets library and successfully ran a sample test
  • Profiler: Selected Brofiler as the profiler and forked the repo in preparation of needed changes.
  • Debug Logging: Programmed a logger to output to VS output window and log files as well as masking messages for channel and verbosity.
  • Error-Handling: Using Microsoft afx headers for assertions temporarily and using standard exceptions.

For full write-up see here. The code can be found on the GitHub repo tagged with week-1.

Week 0

In typical programmer fashion the blogs will start 0-indexed, because because being a pitch project it starts way before the semester. There was a lot of lessons learned while ramping up for the project, mainly aimed at scoping the engine according to a 3 month schedule. We spoke with several professionals in preparation to learn what we don’t know, we didn’t know which proved to be invaluable. Pairing a novice perspective with an expert view of the subject will help guide the project. (see more)