Our Demolition Derby game is modular. Each module is a low polygon mesh, and a player assembles these modules to create a wheel-based vehicle. These vehicles are then used to combat other players’ vehicles in a simulated physics environment. Victory is determined by breaking apart the modules of the opponent’s vehicle before they yours.
That’s our game in a nutshell. It sounds simple enough, but to anyone familiar with determining appropriate scope for a game will notice some serious obstacles: It’s in 3D, it’s multiplayer online — in realtime — and it uses physics. And with all the blocks falling off your car, there are dynamic collision meshes based on what’s still attached. Did I mention that it’s in a browser? Yeah, that’s all in a browser.
Thankfully, the gameplay itself is simple, even if the implementation is not. Basically, it’ll be you and some friends smashing your blocks together, ala kindergarten, except with a server refereeing who hit whom.
Now, what is it that I do? One of my jobs is to make the game look nice. For a modular game such as this, I must provide the players with building blocks. I must also assume that players will use those blocks in every way possible. For the sake of simplicity, the basic unit block is a cube, which has no explicit forward direction. The more complex modules that do have explicit orientation will each need special rules governing their placement on a vehicle. This is especially true for those that exceed the unit cube size with their mesh or by way of a particle emitter. Without the more complex pieces, however, vehicle silhouettes would be all right angles, and we want the players to feel like they can be unique if they want to be. It still all comes back to the the cube, as that’s where the aesthetic of the game is determined. This is what’ll I’ll concentrate on for the rest of this post.
I started with a standard cube: eight vertices, six faces.
Building something out of cubes, in the context of the overarching videogame dialogue, reminds people of Minecraft. But, nothing is truly new under the sun. Our game can be compared to Captain Forever and even Banjo Kazooie 3, but it can also be as easily compared to LEGO bricks or even building blocks.
It’s the look and feel of the game that will ultimately determine what we’ll be held up against when we’re inevitably compared to other games. Hopefully, we’ll end up with a favorable comparison. Without further ado, here are two sets of cubes, one with no texture and one with outlined faces:
I’m of the opinion that the outlines are an improvement. It gives me a visual indication of what my opponent is made of, and how much is left. We’re also pulling away from using strictly cubes though the addition of wheels. Environments may also not necessarily be cube-based.
You’ll also notice here that there is a difference in the relative size of cube-to-wheel. On the left, the wheel is three cubes in diameter, whereas on the right, the wheel is five cubes in diameter. We call this the granularity of the workspace. More, smaller modules gives us a higher granularity, making vehicle creation more complex and time consuming, but allowing for greater variation. How do we determine how much space is the right amount of space? We need to allow enough space to continuously spur creativity, but not so much space that a novice will turn away from the complexity of getting started. This is all has to be taken into account in the creation of our unit object.
While a textured cube can become just about anything, perhaps another way to provide complexity is to expand our definition of “unit object.”
Instead of just a retexturable cube, why not have an array of pieces?
All of the sudden, and despite lowering the granularity (bigger pieces, less space), we now have an enormous jump in creative possibilities:
I’d like to bring attention to how these last pictures have no textures on the meshes. These vehicles are working off of their shape alone. In fact, at the distance and speed of play, it’s doubtful that any appreciable texture will be visible anyway. I only arrived at that conclusion after trying it out, though:
Yes, I was able to visually separate the blocks, but any detail is lost in-game. This leaves me with bright colors and high contrast as my tools of choice. Rather than remaking all the textures again, I compiled a library of colors and sketched out some scenes:
As a player, I would like to be able to clearly see my opponent. Since we’re not making a stealth game, my opponents cannot look like or blend into the environment. That led to lower saturation backgrounds and brighter players to contrast against it.
While it’s clear that I’m borrowing from the natural world in these sketches, the game itself was envisioned in a more abstract form. The low saturation natural environments do help prove the point, though. Unfortunately, the earlier visual separation of the blocks would be lost again. But if texture is no longer the method of visual differentiation, then it’s back to the shape.
The simplest ways to recreate that division while keeping the cube’s color solid would be to either drop a normal map on each face, or to have an alpha layered black outline again. But why not try something new? So at the cost of 200% more vertices, I pursued the beveled cube:
Basically, I’m trying to do away with texture altogether, contributing to a cleaner look. The extra faces will provide more surfaces for light to reflect off of, or at least for the shaders to do their magic with. The fact that the silhouette provides differentiation between blocks means that there’s no longer a need for artificial outlines. Frankly, the bevel makes the blocks feel more physical and natural than any texture ever did on the standard cube. And this is despite having the goal be an abstract physics-based playspace.
(the floor is a repeating normal map made using the beveled cube)
With the beveled cube as the new standard, I’ve given all the standard pieces a reboot. I can’t say for certain that the final design won’t change, but I do very much like where this iteration has led so far.
Though this is probably what should have happened first, my next step is to determine, in a more complete fashion, what the game, as a whole, should look like.