People have been saying things like, “Hey Shamus, what happened to those programming posts you were doing. Weren’t you in the middle of a project? Weren’t you wrapping up a project? What’s going on?”
Here’s the thing:
A friend of mine has been working on a Minecraft-style cube world where the front end is built on C++ and the backend runs on user-editable LUA scripts. Early in the project I was talking about some of the techniques I’d used to generate blockworld caves. Then I figured it was sort of lame to just describe the structures I was talking about, and it would make so much more sense to show him. And hey, why not kill two birds with one stone? I’ll make a blockworld to demo the caves, and I could turn the process into blog posts.
But then I just kept adding to it. I finally got over the initial hurdle of working with Unity and reached the point where I could write code without needing to stop after three minutes of coding to do thirty minutes of forum-diving to answer simple questions. It was fun, so I kept going.
“I’ll turn this into blog posts when I’m done,” I lied to myself.
By the end, I’d made a block world, several layers of underground caves, a primitive building “interface”, a day/night cycle, a lunar cycle, the surface world with different biomes, and a system for importing Blender models. Oh, and I’d made a few blender models.
But then I found out I’d lost all my GTA footage and needed to re-capture it. And then I started writing about Andromeda. And when that’s done I have a novel and a videogame waiting for me. And when all of that is over we’ll be near the end of 2018 and I won’t have any memory of this project.
So in an effort to make it count for something, here it is. You can download the non-game here.
F1 - Help screen F2 - Spectator / flycam F3 - Show a bunch of dev info. F5 - Reset position. ~ - Open the useless console window. I - Invert mouse. Mousewheel - Change the block in your hand. Left Mouse - Place block. Right Mouse - Destroy block. Middle Mouse - Select block / clear hands. Space - Jump. F12 - Exit. [ and ] - Forward / backward time lapse for daylight + lunar cycle.
Making this useless demo is probably not the best way I could have spent those hours, but what can you do?
I will say Unity is pretty amazing once you absorb enough of it to get work done. I don’t know if I’d actually use it for something resource-intensive like a full-blown blockworld, but for any project where you’re not pushing against challenges with memory usage and draw distance, this is my now my go-to tool.
Also, the default Unity workflow is not mod-friendly. When you’re working on the project, you’ve got all your files in a nice clear directory structure where you can modify individual bits of code, models, textures, sounds, and whatever else you’ve got. Then when you’re ready to deployFancy talk for “package up so non-developers can run it”. it stuffs all those files into obfuscated proprietary files. Like, I don’t even know where my texture data IS in this deployed version.
If I wanted to make it so users could modify game assets, I’d have to implement a lot of resource-loading stuff by hand. That’s annoying. The files are RIGHT THERE in the development version, but I can’t get Unity to NOT hide them.
Ah well. Hope it gives you two or three minutes of amusement.
 Fancy talk for “package up so non-developers can run it”.
Please Help I Can’t Stop Playing Cities: Skylines
What makes this borderline indie title so much better than the AAA juggernauts that came before?
Artless in Alderaan
People were so worried about the boring gameplay of The Old Republic they overlooked just how boring and amateur the art is.
C++ is a wonderful language for making horrible code.
Batman v. Superman Wasn't All Bad
It's not a good movie, but it was made with good intentions and if you look closely you can find a few interesting ideas.
Here is a 13 part series where I talk about programming games, programming languages, and programming problems.