Aug 29 2009

Subscribers

Tag: Full Games, MMORPG Tycoontrevor @ 9:40 pm

Still ill, but am finally on the mend;  coughing up all sorts of improbable things.  But as they say, it’s “better out than in”, right?

SubscribersAnyhow, I’ve been doing a bunch of work the past two days, and finally have something visible to show for it.  What you’re looking at here is the guts of the MMORPG Tycoon 1.1 development branch’s player AI model ported into MMORPG Tycoon 2.  Each blue cube is a logged-in character.  The tall white monolith is representing a MMORPG Tycoon 1.1 “Town”.  (The required respawn point and starting point aren’t visible here;  they’re actually a lot further over to the right).

Right now, all of these characters are wandering around trying to grind levels, because there are no quests for them to do (as I haven’t converted the “quest” system over yet).  Unfortunately, there aren’t any monsters for the players to fight (as I haven’t yet set up developers to place monsters into the world), and so they’re just wandering around at random hoping to find something to do, their subscribers slowly becoming more and more frustrated, until they finally give up and unsubscribe.  Every once in a while a few of them will seek some social interaction and return to the town, and feel a little better after sharing their misery with another subscriber.  And then they wander off to explore or grind some more.

So right now I have the subscriber system and the “toon” system working, and pathfinding also works, although it’s not yet paying attention to the third dimension (that is, it doesn’t know about walls or cliffs or anything).  And as I mentioned before, the system is now set up to allow subscribers to have more than one character — it’s even possible to simulate multiboxing, where a single player controls more than one character at a time, via playing on multiple computers at once.

One big task left to do on this is to add the ability for players to pathfind between regions;  right now, each region is entirely self-contained;  a character cannot yet move from one region into another.


Aug 27 2009

Progress, but slow

Tag: Full Games, MMORPG Tycoontrevor @ 12:42 am

So I’m currently working to untangle the terrible knot which is the subscriber/player systems from MMORPG Tycoon 1, to try to make the system work a bit more nicely in the new version.  Here are a few changes which have been made/are being made:

  • Subscribers could now theoretically have more than one character in the game.  (Previously, a subscriber was only allowed to have a single character).  In practice, this means that each subscriber will have a “main”, and zero or more “alts”.  The subscriber creates the “main” when he first subscribes, and creates an “alt” if he brings a friend to play, and his main isn’t of an appropriate level.  I’m not certain whether all this actually will improve the game or the simulation at all, or will even be noticeable to the end-user, but separating the logic between the subscriber and the in-game character certainly does make the code nicer.
  • When it reaches the correct time for a subscriber to log in (according to their usual schedule), they choose which of their characters to connect to the MMORPG;  if any of their friends are connected, they’ll connect using their character which is closest in level to their friends’ characters.  If not, they’ll connect using their main.
  • Since subscribers are now separate from their characters within the MMORPG game, those characters are now called “toons”.  Toons are organised inside MMORPG regions far more strongly than they were in MMORPG Tycoon 1;  in the new version, logged-in toons belong to the region that they’re currently inside.  When a toon moves from one region to another, its ownership and all its movement data is converted over to the new region.  This turns out to allow some pretty big savings in CPU time.

I’ve also been spending time getting a new Windows development environment up and running under Boot Camp, so I’m not forced to dig out an ancient laptop whenever I want to compile up a PC build.  That’s not quite entirely set up yet, but it’s pretty close now;  Windows installed and patched up, devices working, source control tools installed, etc.  Probably another two to three hours of work to get it fully up and running.

Finally, I spent a little time looking at the Champions Online open beta today, which pleased me immensely by not containing anything weird that wouldn’t fit into the MMORPG Tycoon 2 simulated world as it’s already designed.  (For those who care, Champtions Online is pretty much taking the theme of City of Heroes and plugging it into the game mechanics of World of Warcraft.  It feels very fast-paced and arcadey, which City of Heroes most certainly did not.  It has the quick-to-complete — and often overlapping — missions of World of Warcraft, but with far less travel time between the quest-giver and the quest location.  And speaking of travel times, travel powers seem slowed down a lot from what they were in City of Heroes, but most zones are much smaller than the zones in CoH, so it kind of evens out.  Also, there are a bunch of new travel powers to choose from, in addition to most of those from City of Heroes.  Though to be honest, all but one of the new travel powers are just minor re-skins of “fly”)

Also, still sick.  Saw the doctor today, and he’s put me on a new pill.  I’m hopeful that this’ll finally let me kick off this nasty cold.


Aug 22 2009

My head hurts

Tag: Full Games, MMORPG Tycoontrevor @ 10:48 pm

I’ve been quite sick for most of the week, but am finally starting to feel well enough to write a little bit of code again.  Today, I’ve added a few improvements to the dynamic geometry generation code.

First, I’ve fixed up some problems regarding the generation of normals on the geometry (which makes the lighting work better on the generated geometry), and I’ve fixed things so that on towers, I can have horizontal hard edges, instead of only vertical hard edges.  (And vice versa, on walls which are extruded along the ground).

Here’s a pair of images showing what I mean (old is on the left, new is on the right):

OldNew

Sorry that the lighting isn’t the same in the two images;  I was a little careless while taking screenshots.  If you can ignore that difference, you should still see how the new behaviour correctly makes the “cap” on the top look properly flat, instead of smearing the lighting from the sides across the top of the object, and the tops of the gear pieces are now far more “crisp” than they were originally, because they have hard creases at the edges, which weren’t possible using my old system of generating this geometry.

For anybody with a technical bent, It’s worth mentioning that I made these improvements to the “vsMeshMaker” class inside the public VectorStorm engine;  with these changes, a “vsMeshMaker” can now calculate normals for your models automatically inside the VectorStorm engine code, instead of requiring your game code to manually provide normals, and it automatically finds places where you should have creases in the geometry, and handles duplicating and merging vertices as required in order to set up those normals for you.  Once I migrate those changes back into the VectorStorm trunk, the code which resulted in the difference between these two screenshots will be visible to anybody who’s interested to see how it’s done.

If I’m still feeling halfway decent tomorrow, I might actually make a start on getting simulated subscribers into the codebase.  But it’s a big task, and I’m really going to need my wits about me when I start on it!  :)


Aug 16 2009

Still Here

Tag: VectorStormtrevor @ 9:13 pm

It’s been a fair while since my last post (at least, it has by my standards);  I just wanted to assure people that yes, I’m still here, and yes, I’m still working on MMORPG Tycoon 2.  I’ve had a little break from coding over the past week, and have instead been playing some Tales of Vesperia and Battlefield 1943 (which has twice now had me start playing in the early evening, and then suddenly realise that it was 2am when my hands started to cramp up).

I’ve now returned to poking with MMORPG Tycoon 2 again, but have been working on bits that aren’t very friendly to screen captures.  Right now, I’m converting the old 2D MMORPG Tycoon subscriber AI code over into the new 3D MMORPG Tycoon 2 world and codebase.  It’s actually not being too difficult, but enough things have moved around and had their names changed that it does require some extensive modification to make it fit in its new home.  Plus, of course, the whole “extending a 2D game into 3D” thing, which is always a bit of a bear to do.  My goal is to have the whole MMORPG Tycoon 1 game functioning inside MMORPG Tycoon 2 by the end of Wednesday.  We’ll see whether I make it!  :)

A couple little notes about changes in game design between MMORPG Tycoon 1 and 2.  In both versions, “graveyards” function as doorways between the computer world and the MMORPG world.  That is, buildings and other things are manufactured by your employees in the computer world, and then are imported into and exported out from the MMORPG world through the nearest graveyard.  This also allows graveyards to function as a teleportation network for you and for your game designers.  In MMORPG Tycoon 1, you were required to place at least one graveyard in your world, so that you could then import other buildings into the world.  In 2, you’re now required to place one graveyard in each region you want to have active;  all further buildings inside the region will come from that in-region graveyard, rather than being imported from graveyards in neighboring regions.  This will make things an awful lot simpler and faster, in the vastly larger worlds of MMORPG Tycoon 2!

Anyone who built a really big and complicated MMORPG in MMORPG Tycoon 1 knows how badly it scaled once the world started to become really complicated;  these design changes are intended to simplify the work that the computer has to do to simulate the MMORPG, without trading off too much in terms of the ways that people might wish to set up their worlds.

Finally, one more little note.  I recently hooked up the old “random region name generation” code from MMORPG Tycoon 1 into MMORPG Tycoon 2, so in my current testbed, I now have areas labelled “The Bleak Cliffs”, “The Ravine of Despair”, and “Grove of the Ancients”.  Of course, all of them by default look like exactly the same blue-sky green-grass terrain I’ve already shown;  I’m going to have to hook in a little bit of smarts to link the terrain generation and the naming scheme, I suspect!


Aug 05 2009

Procedural geometry

Tag: Full Games, MMORPG Tycoontrevor @ 10:22 pm

SweepThis isn’t nearly as pretty as the swept hook thing that I posted about a while back, but I’m far more proud of this one, because it was much harder to get right, and has far more potential for the future.  The swept shape that I’ve shown before was a single 2D shape swept through space.  The model pictured here is far more complex;  at its bottom it’s a square prism.  This blends into a smaller square, then into a gear shape in the middle, which then blends into a small circle, which blends into a larger circle, as it rises up into the sky.

This isn’t actually a model that I’d ever use for anything real, of course, but it’s a nice testbed to make sure that I can take different types of shapes and fit them all together into a single, seamless object.

There are still a few little bugs to sort out (not pictured here) (edit:  now fixed!), but I’m generally pleased with how this runtime-generated-geometry is coming together!