Today’s post shows a screen shot of the process of building up a swamp on Dinosaur Island. The dark blue area is salt water. The alternating brown and yellow bands are sandy and swampy areas. This process was automated by using a “flood fill” algorithm that is now built into the Dinosaur Island program.
This is the first peek behind the scenes where you can see how we are building Dinosaur Island. This will be either really cool, or really boring, so hang on. If you’re a nerd at heart and want to learn how these types of programs are written then today’s post is for you. If this is the kind of thing that bores you to tears you should probably go check out the Dinosaurs in the News section; lots of cool stuff there.
We have been writing M&S (Modeling & Simulation) programs since the mid 1980s. M&S programs are used to model very complex environments and behaviors. For many years we have been working on high-end wargames and emergency disaster simulations for the U.S. Department of Defense, DARPA and other government organizations. While Dinosaur Island doesn’t seem like an M&S program, it really is. In fact, we are modeling Dinosaur Island in greater detail than any of the programs that we’ve done in the past.
For every square meter of Dinosaur Island we need to know:
- The elevation (in meters).
- The type of terrain (swamp, forest, fresh water, etc.).
- The vegetation (every plant and where it is in its life cycle).
- Any dinosaurs (or considering their size, any parts of dinosaurs in this particular square meter).
This, obviously, is a lot of data. So, one of the first tasks in creating a very large M&S project like Dinosaur Island is to first create the tools that facilitate entering all this data. In the picture at the top of today’s post is a screen shot of the Dinosaur Island editing software. This allows us to read in bitmap files (BMPs) that are 2,000 x 2,000 pixels, convert them to height maps and use the data to display the resulting landscape. Next, we can start adding different terrain types (in the above picture, we’ve just added the salt water and fresh water areas on the island).
We traditionally make these editors available to the users (that’s you) to create their own models and environments. How would you like to make your own Dinosaur Island?
As we discussed in a previous post, Dinosaur Island will be 2 kilometers by 2 kilometers. We have also decided to let the users (that’s you!) create their own islands! Ed Isenberg, who has worked with me since 1986 on numerous computer games, has created the first ‘maps’ for Dinosaur Island and then has rendered them in 3D. We are using a standard 256 grayscale bitmap, PNG or GIF file as the ‘map’.
And this is the 256 levels of grayscale ‘map’ that Ed created from which the 3D image (above) was rendered.
Below is Ed’s idea for a volcanic Dinosaur Island.
And the 256 gray scale map that Ed created from which the 3D image, above, was rendered.
If you know an expert in this field, please tell him about Dinosaur Island. Even if you can just recommend a good book on the subject we would be very grateful.
I’m anxious to begin work on Dinosaur Island.
Maybe too anxious, but that’s never stopped me before. I should be working on design documents first, but I feel like writing code and seeing something happening on the screen.
To begin with – and this is actually a design issue – we need to decide exactly how big is Dinosaur Island?
How big is Dinosaur Island?
In my previous AI work I created something I call a ‘Terrain Map’. A Terrain Map is a digital representation of the different kinds of terrain (swamp, grassland, water, etc.) stored in a two-dimensional matrix. This will allow the computer program to ‘see’ the terrain on the island.
The Terrain Map is stored in memory and the bigger the area (and the finer the detail of the information that we’re storing) the bigger the amount of memory (RAM) that is required to store the it.
On top of terrain, I also plan on storing the vegetation for each location and the height of the ground (in meters). Without getting into boring, technical details, the more stuff you store, the more memory it takes.
And then lastly, is the question: “To what resolution should we store the data in the Terrain Map?” I’m thinking that 1 meter of resolution should work out pretty well. So, for every meter of Dinosaur Island we will be able to see exactly what kind of vegetation (if any) is there, the type of terrain and the elevation.
So, then how big will Dinosaur Island be? I’m thinking that 2 kilometers by 2 kilometers should work out very well. This will mean a matrix of 2,000 x 2,000 cells and all the data will be stored in 12,000,000 bytes (about 12 megabytes).
When I first started writing computer games (way back in the 1980s) 12 megabytes was a LOT of memory! In fact, the first computers that I wrote games for had less than one-half a megabyte of memory. But 12 megabytes of memory isn’t a big deal any more.
What are your thoughts? Do you think a 2 kilometer by 2 kilometer island will be big enough? Obviously, we can adjust the size later. But, it’s been my experience, that when developing a game that things that are ‘sized’ in the beginning have a tendency to become, ‘written in stone’.