Mar 14
Ramping Up for MMORPG Tycoon 2.0
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.

March 14th, 2009 at 5:25 pm
About localization, I would go (at least at first) for something simple that works: XML files with UTF-8 encoding. One for each language, something like this:
translations-en.xml
New Game
Exit
…
Then either implement a choose language option at the game menu (searching for all translations-xx.xml), or allow an easy manual change of the language (via another xml which tells MMORPG tycoon which XML to load, a .ini file, etcetera).
If you do something like that, it would be easy for anyone to translate your game literals to any language, assuming they know english.
I could even give a try to translate it to spanish (I haven’t played your game a lot, but I love the concept and I follow your blog :)
Best,
- Kartones
March 14th, 2009 at 8:27 pm
Mm.. I’m not convinced about using xml files, but I think that’s probably the right strategy, otherwise.
Also, it’s just occurred to me that I have to add fog support. I suppose that should be pretty trivial, but.. it’ll be important for something like this. :)
March 15th, 2009 at 6:15 am
What will you do about the space available in MMORPG tycoon. How big will the maps be for example. If using the 3D globe idea will you make it so that there are other planets which are larger servers which will contain the smaller region servers and each planet will cost so much and each region will cost so much. So when you run out of space on your globe you can make another.
March 15th, 2009 at 6:19 pm
I will not be using the 3D globe idea for MMORPG Tycoon. The most compelling reason I can give for not doing it is that no real MMORPGs put their worlds onto a 3D globe, so why was I even considering it in the first place? :)
I’m still tossing around ideas about how to handle servers for MMORPG Tycoon 2.0. In the existing release, it assumes “one zone one server”, which is nice in that it simplifies everything. An alternate approach would be to consider servers as “pooled”; that is, you just need to have enough servers to support however many people are connected, rather than assigning servers to individual parts of the world. I don’t think I want servers to be a major part of MMORPG Tycoon 2.0.. I’ve even thought about having the player hire IT staff to manage the servers for you.. so servers just become an expense, rather than something you actively manage.
Not sure yet. Needs more thought.
March 15th, 2009 at 8:29 pm
I do like the pooled idea, I always found that my servers were overloaded no matter what I did. The pool idea would take away one major part of the game (the trying to spread out your users) but I’m sure there is some way you could compensate for it.
March 17th, 2009 at 4:14 pm
RE: Threads
Not sure, but Boost’s thread support might be helpful?
http://www.boost.org/doc/libs/1_35_0/doc/html/thread.html
I imagine boost is fairly comfortable on your current platforms. I don’t know how much of boost you’d need to take on-board to use their framework, but it might at least be a starting point.
March 19th, 2009 at 3:38 pm
Just gotta say that I think MMORPG TYCOON 1.0, as simple as it is, is really brilliant. I am really excited that you are considering expanding it on such a great scale. I wish you the best of luck & you have my support!