100 Days of Code: Building a Voxel Engine

Clay Garrett
2 min readNov 9, 2018

--

Over the years, I’ve watched my friends (most recently @geometricdaydream) and various people I follow take on various 30/100/365 day challenges. I’ve always sat in the stands rooting for them and at the same time, wishing I was in the game. Welp, here’s me saying, “Put me in coach!”

Beautiful examples of voxel art. H/T to @deaddiskdrive, @rocinanteOo, and @IndustriesGame

I’m taking on the #100daysofcode challenge and I’m doing it for a few reasons:

  • Starting is Easy. Finishing is Hard (without some accountability of course). Accountability is always present at work, but rarely for things I do in my spare time. So this is a good way to get some built-in accountability.
  • I want some structure to do something related to my work, but just enough outside that it’ll feel fresh, I’ll learn something, and in-turn, help myself personally and professionally.
  • I want to engage more on Twitter rather than just use it as a one-way source of information. I’m hoping to connect with other people who are also doing this challenge and also people who know more (or less!) about this subject matter than I do.

Why Voxels?

I follow a lot of graphics and graphics programmer accounts and nothing gets my split-brain going more than some gorgeous #voxelart. Something about the underlying simplicities and complexities of a grid being transformed into a graphically beautiful thing speaks a lot about the nature of computation and representation.

“The Inlaw’s Fireplace” — My first foray into voxel art in December, 2017. Created/Rendered in MagicaVoxel

From what I can tell from the outside looking in, there are a lot of interesting optimization problems in this space that I’m looking forward to tackling. My hope is that it will give me quite a confined space to dig deeper into the types of things I deal with on more of a surface level every day, including:

  • Efficient representation and transfer of data
  • Algorithms specific to graphics programming
  • The mathematics behind lighting and materials
  • GPU optimization techniques

End Goal

Here’s what I want to do in 100 days: build a basic voxel engine that allows me to create some interesting art in an interactive and performant way.

Is 100 days enough? We’ll find out. It’s purposefully a pretty broad goal and I’m sure I’ll adapt it to the bumps I hit along the way. Looking forward to joining the #100daysofcode challenge and meeting all of you along the way!

--

--