The Craft of Craftcraft project continues. Here is part 8, which is followed, according to the ancient traditions, by part 9. My own coding work has been shelved. I really want to get back to it, but the time just isn’t there right now. So I’m living vicariously through Michael’s work.
I think it’s really interesting what he’s doing. He’s doing a Minecraft-like game, but the “world” is actually a series of asteroids floating in space.
Goodfellow has been doing just fine without my advice, but I thought I’d throw some out there and do a little armchair game design. This is probably more for my benefit than his, but verbal restraint is a cross-class skill for me…
If this was my game, I’d want a horizon to give a sense of orientation and break up the visual monotony of the sky. EVE online does this with ridiculous and unrealistic nebulae. It even draws the nearby sun with a huge horizontal lens flare to approximate the horizon. It looks fantastic. It can also help orient you visually. “North” is the red clouds and “south” is the cyan / purple clouds, and so on. His idea for setting it in a planetary ring / asteroid belt is a good way of accomplishing all of this, although he’s still working on making it look right.
(You could even take this one step further and have these asteroids appear to float around a planet. White clouds below. Blue sky above. It would explain the presence of gravity and atmosphere. This would make the rocks easier to make out against the sky. (Right now they are hard to spot.) The downside is that the current “space” look is very unique and there’s no real reason to abandon it.)
Michael introduces the idea of plants. (Ferns, bushes, grass, whatever.) This is something I think is really missing from Minecraft. Of course, once you add this, people will want to do landscaping. They will want to remove some plants. Move others. Cultivate ones they like and uproot ones they don’t. That adds a lot of complexity, as well as gameplay. Minecraft has, basically, two flowers and two mushrooms, and you can only find them – you can’t grow more on your own. I really like the farming aspects of the game, and I’d love a game that featured more of that.
Level of Detail
He’s talking about how to render the asteroids in the distance without needing to render EVERYTHING. I have no idea how he’ll accomplish this. Standard level-of detail-techniques will NOT work well with a block-style world. The blocks ARE the detail, and merging them will make a mess of things, I think. (Consider: Players are going to want to build bridges between these, even if you give them other modes of transport. How do you detail-reduce a single-bock walkway that stretches on hundreds of meters, without simply obliterating it? The way people build in these games will lead to worst-case-scenario structures on a regular basis.)
This is a problem that not even Mincraft author Notch has solved. Check out this screenshot from Minecraft:
Here I’m using a texture pack that makes stone block into windows, so you can see through walls. I’m staring into a dead end tunnel here, with my nose just a short distance from the featureless wall. Yet you can see the game is drawing, basically, everything. It’s drawing the lava chambers in the distance. A system of caves beyond that. And up above, it’s drawing all of the terrain topside. I have a sense that this is solvable, although I also sense that this is one of those problems that will be way harder than it seems like it should be.
And maybe it’s not worth solving. From some vantage points, the game will need to draw this many polygons. If the game can’t handle it, then the game won’t run right anyway. You could spend a lot of time optimizing the game so that the framerate will sometimes skyrocket (like in my dead-end situation above) but it wouldn’t really make the overall game that much faster. You could blow a week on a problem like this and discover that the overall benefit is minimal, situational, and only worthwhile to the bottom 10% of the machines running the game. I don’t know. I’ve never used an octree (which is odd, given the work I’ve done in the past, but there you go) so I’m working on this in my head conceptually, which is a lot less useful than experience.
And even if you found a solution that worked really well and was a great benefit in Minecraft, it might be useless on CoCC, because of the “open asteroid” design.
Interesting project. Looking forward to seeing where this will go.
In Defense of Crunch
Crunch-mode game development isn't good, but sometimes it happens for good reasons.
Quakecon 2012 Annotated
An interesting but technically dense talk about gaming technology. I translate it for the non-coders.
Trashing the Heap
What does it mean when a program crashes, and why does it happen?
The Best of 2011
My picks for what was important, awesome, or worth talking about in 2011.
C++ is a wonderful language for making horrible code.