Swedish Cubes for Unity » Blog

Oswald Hurlem
2 years, 2 months ago
I've posted a new project on GitHub. It is a finished project in that I did what I wanted to do and don't plan to do any more.

It's called OH Picker and it is an experimental program for applying affine transformations to colors in L*a*b* (aka CIELAB) space using a scene graph. I made it as a personal exercise in working with both L*a*b* and the Dear ImGui library.

OH Picker takes advantage of the fact that, because L*a*b* has perceptual uniformity, it can be treated as a Euclidean space. Colors are treated as points and affine transformations ... Read More →

Oswald Hurlem
3 years ago
Recently, I decided that Swedish Cubes for Unity would need to have a robust system for serialization and data versioning. This would allow me to avoid getting a bad rap by releasing updates that break people's save data, enable the level designer hired for my own game to start making levels before the tools are fully finished, and finally, to have a leg up on competing products which have some problems in this regard.

This is one thing that has not been covered in great detail by HMH, but thankfully I had another valuable resource. For a while now, I've ... Read More →

Oswald Hurlem
2 years, 11 months ago
One of the most exciting developments in programming is the introduction of stronger metaprogramming capabilities to C-like multiparadigm languages. Very soon, users of these languages will be able to write meta-code, intertwined with and semantically similar to standard-issue source code, which executes at build time and generates symbols usable by the code which executes at runtime. Metaprogramming will be seen in a conservative form in future versions of C++. It will be seen in a more liberated form as a headliner feature of Jai. Both of these cases represent a clear upgrade in usability, versatility, and comprehensibility ... Read More →

Oswald Hurlem
3 years, 1 month ago
EDIT: Unity has announced that future versions of its engine will feature a non-verbose math library with integer-based vectors. Therefore, this repository will no longer be updated, and I encourage you not to use it.

I've updated OHUnityVector a few times and am now quite confident in its correctness and utility :)

Also please vote on the subject of my next blog post! You have 3 days. Read More →

Oswald Hurlem
3 years, 2 months ago
One of the challenges in writing a Cube-Based Game* system is meshing. In order to quickly draw a large number of cubes, it helps to have large numbers of cubes be grouped together into a single mesh, which gets cached on the GPU. In every cube-based game system I've seen, each mesh corresponds to a fairly large neighborhood called a "chunk." This makes it fast and easy to cull meshes out from getting drawn.

It's common for game engines to represent the position of mesh vertices in GPU memory by assigning, absent any other per-vertex information, 3 floating point numbers ... Read More →

Oswald Hurlem
3 years, 2 months ago
Ordnance inbound.

This is the math code I've been using to develop Swedish Cubes for a while now. It provides more vector types/functions for Unity and the C++ code it is wont to interop with. I removed a bunch of the dependencies in the code generator and put it up. Read More →

Oswald Hurlem
3 years, 3 months ago
I'm planning to put up a few interesting tech posts soon (within a week), but before that, I want to give some context for them, in the process telling you where I've been for the past few months. With YAVE, I've always entertained the possibility that I'd integrate the features I've written into a larger game engine. A voxel engine is only distinguished from a more typical game engine in a few ways, such as world streaming, rendering, lighting, AI, and physics. Well, that's more than a few ways, but, game development also involves a lot of grunt work, which ... Read More →

Oswald Hurlem
3 years, 5 months ago
Hey all, I'm hoping to get a blog post or two out sometime soon. It won't be news about YAVE, but it'll be an interesting read in their own right. There's quite a few pieces of writing I have on the backburner, including:
- Reflections on using Unity for game prototyping
- Making IMGUI wrappers around a non-IMGUI library like Windows Forms
- A color picker application I'm working on
- Restrictive textures that are not pixel art
- A feature that I would like in every metaprogramming tool

Hopefully once one of these is done, it'll give me momentum ... Read More →

Oswald Hurlem
3 years, 8 months ago
Shortly after reaching a benchmark with my light propagation system, I realized two things. The first was that the development of YAVE has been productive and enjoyable enough that I want to turn it into a finished game. The second was that people -- including fellow game devs in Seattle, other HMN members, and potential investors -- have a difficult time conceptualizing a game which uses a voxel engine but is very different than Minecraft. So I've decided to take some time off from engine development in order to prototype some gameplay in Unity.
For the next month or ... Read More →

Oswald Hurlem
3 years, 9 months ago
OR, How I Did Light Propagation Volumes With No Floating Points

I am finishing up the next pass of YAVE's light propagation system and one thing I needed to do was reduce that number of expensive computations that go into spreading light from one block into another.
Like Minecraft, the lighting in my game takes the form of a fixed, low-digit number which corresponds to a point on a non-linear curve, but there are key differences. In Minecraft, the light values range from 0 to 16 and correspond to a range from 5% to 98% screen space brightness*. In ... Read More →

Oswald Hurlem
3 years, 10 months ago
Quade Zaban has been added as a temporary member of YAVE's development team, and in order to familiarize him with my project, I've had a few recorded skype calls with him that I am now sharing with you! This is the third and last of these, an extra long screencast in which we go over the game code. Special attention is paid to the most complicated and unique challenge presented by a voxel game (so far), which is loading and unloading user-editable resources.

I'm no game programming expert, so let me know what you think of the solutions I've used. ... Read More →

Oswald Hurlem
3 years, 11 months ago
So last month, our sister in low-level-programming arms, Stephanie Hurlburt, collected a list of experienced software engineers willing to mentor less experienced ones. The very first person on the list caught my eye. It was Alex Evans of Media Molecule, a studio that has used voxel techniques for global illumination for previous games and which was currently working on "Dreams," an insanely cool creative artistic sandbox game for the PS4. If anybody knew how to take the graphical presentation of a Minecraft clone to the next level, it would be him.

So I asked him and he accepted!

Note that ... Read More →

Oswald Hurlem
3 years, 11 months ago
Quade Zaban has been added as a temporary members of YAVE's development team, and in order to familiarize him with my project, I've had a few recorded skype calls with him that I am now sharing with you! In this screencast video we go over my build system and the platform layer. I messed up on recording part of it so I recorded a solo screencast (chat #1.5) in which I tell you what I told Quade.

So what do you think? Should I switch to a command list for my rendering API? Should I be ashamed of the extra ... Read More →

Oswald Hurlem
3 years, 11 months ago
I'll begin with an announcement: Quade Zaban has been added as a temporary members of YAVE's development team. Quade has a fair deal of game development experience and shares a lot of game design philosphy with me. He's interested in contributing to this 3D game project in order to provide him with some mental breathing room as he prepares his action-puzzler for publication on Nintendo consoles.
In order to get Quade familiar with my project and my codebase, I needed to have a few Skype calls with him. And since I also needed to inform my HMN brethren on what ... Read More →

Oswald Hurlem
4 years, 1 month ago
So, one of the things I have to do with my game is change some of the types so that global positions in the game are expressed as double rather than single floating points. If I express positions only using floating points, I can maintain millimeter precision only out to 5 miles from (0,0,0). And that ain't something I'm okay with.

I didn't want to rewrite a bunch of code, I wanted to keep nice naming conventions, and I didn't want to resort to using C++ templates (I've always thought they were goofy). Casey has mentioned the advantages of metaprogramming ... Read More →

Oswald Hurlem
4 years, 3 months ago
100 Todo items later, I have my code up to a place where I'm not embarassed by it. I'm going to be holding a livestream on Wednesday from noon until 2pm PDT. I'm going to show you guys my personal development environment, and then we'll walk through one iteration of the game loop. I might not finish in time, in which case I'll either keep going (if I'm feeling good) or continue on another date. This one will go on YouTube.

Be there! Read More →