Chime is my project to learn how to implement a VR game from the ground-up.
WIP video:
I chose C# as the development language because the focus of Chime is on learning, and C# is much more conducive to rapid prototyping and development than, say, C++. For example, I absolutely do not trust std::string
to generally behave well, while System.String
just works. Also, C# has greatly improved its performance in real-time scenarios in the past few years, including adding a robust SIMD math library in System.Numerics
and introducing the Span<T>
paradigm for effective array management.
However, choosing C# did mean that I had to lean on third-party bindings for native libraries I needed to use. Thankfully, the .NET ecosystem is quite expansive and most projects have some form of bindings out there.
I have initially built Chime on the OpenVR API. However, OpenVR is being retired in favor of OpenXR, and is showing its age in certain pain points. Somewhere down the road I should modernize the VR support by porting Chime to OpenXR.
I have laid out procedural audio synthesis as a design goal for Chime. This will be great to learn because I haven’t really done any audio synthesis development before.