So it’s time to move on. I’ve had a lot of time to think about what’s going to go into MMORPG Tycoon 2.0, and have begun working on a list of things that need to get done before I can really start work on it. These are basic VectorStorm features that need to be implemented:
Definite Things:
- Lighting. The lighting in Lord was all faked (nothing which was lit ever moved, so fake lighting was just calculated once during startup); I’ll need proper lighting support for MMORPG Tycoon, because there’ll just be too much geometry (and lights!) moving around to be recalculating it on the CPU all the time.
- Animation. The animation I’ve used in VectorStorm games has always been hardcoded. For MMORPG Tycoon, I’m going to need to be able to export some simple animation from an art package, and play it back in-game. This will be essential for subscribers and monsters.
- 3D Models. Connected to the above, in order to export animations into VectorStorm games, I expect I’ll need to be able to have VectorStorm load and use models exported by 3D packages. I’m not planning anything too fancy or extensive; probably just being able to convert some standard 3D file format into VectorStorm’s internal display list format. With that said, I’m not expecting to actually use many models this way; MMORPG Tycoon will be generating visual geometry procedurally, not using lots of pre-created models.
- Unicode and Localisation. The text systems in VectorStorm currently only work with plain ASCII text. This will need to be changed to work with some form of Unicode text (probably UTF-8), and I’ll need to build a solution whereby text strings are not hardcoded in the game or in general data files, to make translations into other languages possible. There’s a standard method of doing this under OS X, but I need to build (or find; suggestions are welcome!) something which will work cross-platform.
- Support for creating textures at runtime. Right now, textures have to be loaded from disk; I want to be able to generate them in code, to reduce download sizes. Or maybe MMORPG Tycoon won’t use (m)any textures. I’m still trying to settle on an art style for it.
Maybe Things:
- An API for reading cursor location in 3D, and picking of 3D objects; this will involve reading back from the Z-buffer to unproject a 2D point in the window to a 3D point in the world, and potentially tagging rendered objects within OpenGL, for easier selection. I kind of worked around not having this in Lord, but MMORPG Tycoon will have much larger UI requirements, and so it’d be nice to have better abilities with this.
- Do I need 3D physics? I don’t think so; MMORPG Tycoon 2.0 should be able to make due without any physics at all, I think.
- Do I need 3D collision detection? Maybe. If the levels are simple heightmaps with props on them, then probably no need for complicated collision detection. But if I was going to let human players wander around in the zones, then this would absolutely be essential.
- Maybe adjust VectorStorm’s rendering infrastructure to separate the organisational scenegraphs from the rendering layers. That made sense for simple 2D vector graphic games, but in the world of 3D, there are lots of instances where you want to have bits of a single model render at different times…
- Shadows. Oddly enough, in most computer games, shadows are separate from lighting. I need to decide whether or not I need stencil shadows or something similar..
- Threads. MMORPG Tycoon is going to have a lot of processes creating a lot of geometry during runtime; it might make sense to put this processing into threads. Having a generic cross-platform and easy-to-use thread implementation within VectorStorm could potentially be a really useful thing.
There’s probably more, but these are the likely engine requirements I’ve worked out so far. I’m going to be starting with lighting, and will then move on to terrain creation, to try to settle on an art style.