Cascadia is a survival sandbox video game written in Rust. I built this from scratch on my own with winit, wgpu, and egui. This game required a lot of low-level programming and memory management, as well as setting up a graphics pipeline and writing shader code for it.
The seeds for my dream game were planted in 2012, when my dad bought me Terraria for my birthday and Minecraft was beginning to enter the mainstream. The original design document spanned 23 pages, and has since then went through several design goal and name changes.
This current iteration marks a change in design philosophy by letting it naturally form as I continue to develop the game. That is, instead of eyeing some static end state, I want to enjoy the design journey and be surprised by what comes out at the end of it.
While it makes sense to use an existing game engine such as Unity or Unreal, the problem is that they make broad assumptions about the types of games you'll create in them. These assumptions happen to be very poor for voxel games in several aspects, such as physics, pathfinding, terrain rendering, and LOD generation. To be able to run smoothly, you would need to rewrite several of these systems.
Since I was going to write everything from scratch anyways, it made the most sense to use a low-level language such as Rust to squeeze out extra performance. I then used winit for window handling, wgpu for graphics, egui for an immediate mode GUI, and nalgebra for a linear algebra library.

Learning a new language can be challenging, and Rust's unique memory model amplifies that. On top of that I had to learn new libraries such as winit, wgpu, and egui to display graphics.
Rust by Example and Learn Wgpu served to be very helpful resources that taught me how to use Rust and wgpu, and how to organize and structure my code in a memory safe manner that would satisfy the Rust compiler.

As my first Rust project, it threw me into the memory safety meat grinder as nearly everything I knew about object-oriented programming had to be thrown out of the window. Despite the challenges, I came out of it with a greater understanding of how to structure code to ensure safe and coherent memory management.
I also learned how to set up a graphics pipeline, write shader code in WGSL, and feed it data to render blocks on screen.
Feel free to reach out if you're looking for a game
developer, have a question, or just want to connect.
Designed & Built by Chai Latier