A New New Game Idea

Yes, it happened again. I’ve postponed that voxel engine game I was working on because I want to try something else. I always liked an idea of making a game where the world is a real spherical planet, a little one, 1 km radius or so. Last two weeks I’ve spent working on a small prototype (I used some code from the past, but rewrote most of it anyway), inspired by Magic Carpet, one of my favorite games. The prototype now has a real spherical heightmap-based terrain, which can be modified in real time (there are three different “spells”). I’ve even recorded a video to show it off. :)

Posted in Gamedev | Tagged , | Leave a comment

Voxel Engine, First Results

It’s been a month since I started implementing a basic voxel engine in Unity 3D for my game(s). What I have now:

  • Chunked terrain, editable on-the-fly (adding/removing blocks in the game)
  • Mesh generation
  • Optimized collision meshes which are generated separately from the main meshes and have much smaller number of polygons
  • Colored lighting backed into voxel data
  • Simple shader which supports texturing (I’m using only one texture at the moment) and both backed and normal lights
  • Shooting (also destroys blocks)
  • Objects that represent light sources (those light panels in the screenshot)
  • Modified chunks are rebuilt fast enough so that there isn’t any noticeable lag
  • One screenshot :)

Isn’t that much, but at least something. Now, after I have a basic engine, I can focus more on other stuff: generation of more interesting levels and adding some interactivity, such as doors, light switches and so on.

Posted in Gamedev | Tagged , , | 2 Comments

Why Voxels?

So, this is my second serious attempt to create my own game. The first one seemed promising at the beginning, but eventually I became somewhat disappointed with it, for different reasons, mainly because of too big scope for a first game. (Some day I might revisit it though.)

Now, I have a high-level understanding about what this new game is going to be, but I haven’t yet decided what subset of ideas that I have I want to include in that game. Will write about it later.

What I definitely know, is that I want to use a voxel engine for this game; the simplest, blocky variety of it, not Marching Cubes or something. (Don’t even mention Minecraft, you! I’m not going to implement neither mining nor crafting!)

Why voxels? Well, for a couple of reasons.

First, I like them as a programmer: it’s a good choice for randomly generated areas, which I need for my game. Heightmaps are dull and their use is very limited when creating indoor areas, caves etc. Marching Cubes are nice, I played with them a bit and managed to get a working implementation (see this great paper if you’re interested in such kind of stuff), but it’s way too much work compared with cubes, I’m not ready for that. Cubic voxels, however, are relatively easy to program, and there is a lot of useful information out there about various implementation details. For example, this thread at Unity forums has been very inspirational.

Second, I just like them. They can even be beautiful when done properly: take a look at Cube World for example, It’s amazing!

Another reason is art assets. I’m going to design areas and create all models myself, but I’m not an artist, and while I can learn how to use traditional 3D modelling tools such as Blender, it will take too much time with questionable results. On the other hand, I spent some time creating models in voxel editors (I especially liked Qubicle Constructor, I think I’m going to buy its Unity Edition) and I liked both the process of “drawing” in 3D and the results I’ve got. I could use voxel models with any kind of engine, of course, but voxel terrain is the most natural environment for them, obviously.

Posted in Gamedev | Tagged | Leave a comment