I think I've mentioned before that I'm a huge fan or Riven and Myst III. It's just so awesome to explore those beautiful strange worlds! That's what I want to create. That's something I would enjoy making.
So here's my half baked idea for a game. Let's call it Microcosm:
You are in a strange land. It is beautiful. You never imagined that such a place could exist. It's slightly odd because certain laws of nature don't seem to apply here. You feel compelled to explore. There are, of course, minor obstacles to your exploration. Hidden passages. Steep cliffs. Strange symbols. But these obstacles are minor and only add to the joy of exploration.Hmm. That's sounding very similar to the Myst series. Oh well. At least it will appeal to Myst fans like myself. I have a couple of tweaks to the genre which would hopefully set it apart:
You are also searching for something. The microcosm. Perhaps it's a gemstone. Or maybe it's behind a brick in the wall. Maybe it's that puddle of water. There have been clues along the way, and there will be no doubt when you find it. The microcosm glows with an eerie light. As you look more closely you see great detail and hear faint sounds. The moment you touch it you begin to shrink. The image in the microcosm gets larger and clearer and the land you were in quickly fades away. You are now in a new place. How strange and beautiful it is. You must explore!
- Community created: The game has no end. The community would create more worlds to explore. Perhaps there would be some sort of hub-world that was littered with microcosms.
- Procedural: The worlds will primarily be procedurally generated. No intricate buildings or contraptions. This is where I'm supposed to save all sorts of time.
Why procedurally generated worlds?
P.S. perhaps a GPU based voxel engine would give the level of detail I want? Needs research.
- Hand modeling environments is a huge time sink. Modeling is fun, yes but only single people without children have time for that.
- Higher levels of detail and larger worlds.
- More interesting. By using various algorithms, (perlin, fractal, organic, recursive, etc), we will be creating strange environments that even we the creators are eager to explore.
Note to self: NVIDIA has a really interesting article demonstrating procedurally generated landscapes using the "marching cubes" algorithm.
Yet we still need a way to place objects within the world. Ladders, puzzles, etc. There will need to be some sort of world-creator tool that allows you to interactively fly through the world and add stuff.
Yet we still need a way to place objects within the world. Ladders, puzzles, etc. There will need to be some sort of world-creator tool that allows you to interactively fly through the world and add stuff.
The World Editor
I envision an OpenGL program which allows you to craft your procedural generation script and see the results of your changes in realtime. When you tweak the script a new mesh is generated at the current viewpoint. As you wait longer the surrounding mesh patches are generated outward (with lesser polygon counts). You can then fly around and place viewpoints and props.
The Game Engine
Such an expansive game that focuses on exploring really deserves a real-time 3D renderer. At the same time it needs to be rendered in great detail because beauty is one of the primary motivations of a game like this (for me at least). Sadly, I don't think current graphics cards are ready for this level of detail. Also, I want the game to be enjoyable by everyone, not only those with "gaming rigs" which heat an entire house. They Myst series had very modest system requirements which surely contributed greatly to it's popularity.
Perhaps a compromise can be made between real-time and pre-rendered graphics. What if you render each viewpoint on demand? This has the advantage of giving the player freedom to explore and interact with the world in unanticipated ways. The question is, can we render viewpoints fast enough? How fast is fast enough? 250ms? Certainly we'd need to leverage the graphics card to some degree.
Let's call this post-rendering. (Perhaps there's an official term for it.) Here's what a high quality post-renderer would need to be capable of (in order of priority):
If it works I'll be liberated from a lot of the pains of pre-rendered graphics such as:
I'm eager to start experimenting with procedural landscape creation and post-rendered graphics, however, my first order of business is to make an attempt at the standard-GUI concept I outlined previously.Let's call this post-rendering. (Perhaps there's an official term for it.) Here's what a high quality post-renderer would need to be capable of (in order of priority):
- Very high polygon counts - many millions on screen at a time.
- Ambient occlusion - it adds a huge level of realism
- Bump mapping - Also very important for realism
- Shadows
- Reflections
If it works I'll be liberated from a lot of the pains of pre-rendered graphics such as:
- If you decide to tweak your models you must re-render every viewpoint it was visible in.
- When the player moves an object in the world you need a second rendered image for every viewpoint in which the object is visible. Did you ever wonder why all the doors in Myst games close automatically behind you? It's because they didn't want to render two images everywhere the door was visible.
- Interactivity with the world must be kept to a minimum because of the above problem. Consider a control panel with a switch and a lever. That's 4 combinations of positions. If the control panel is visible from 3 different viewpoints we need to per-render 12 images! Yuck.
- Deciding which viewpoints to render is a time consuming. Care must be taken so that moveable objects are occluded from view.
- Video overlays are difficult when using panoramic viewpoints.
P.S. perhaps a GPU based voxel engine would give the level of detail I want? Needs research.