May 25 2008

More development diary

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

So I’ve been doing a bunch more development on my MMORPG Tycoon project, and wanted to put up some new screenshots.

These screenshots were taken about twenty seconds into a new game.  You’ll see that I’ve got about 300 subscribers (most of whom are currently connected), and have earned a little money on top of the $1,000,000 starting loan (mostly from the purchase price paid by my subscribers).

The first shot is a zoomed in view, and shows the build toolbox which lets me place towns, respawn points, and starting areas.  Or move them (top icon), or remove them (bottom icon).

The second shot is zoomed out more, and shows me placing a mid-levelled area using the new zoning interface.  I’m not 100% happy with it yet, but it’s better than it was.  You can see the level range for each zone drawn in the middle of each region, for easy reference.

Most of the work has gone into UI stuff;  making buttons work as one would expect, etc.  But there’s also been a lot of work on closing the loop.  Players are a lot smarter, and are now unsubscribing when they’re unhappy, leaving forum posts even while they’re still logged in, and new players joined based upon how much buzz the game has, and how positive/negative it is.

So my next task is to find a way to communicate to the player what problems players are encountering;  as an MMORPG grows, it becomes harder and harder to figure out what the problems are.  And worse, once you’ve identified the problems, it’s not always obvious how to fix them.  I need to make players try to avoid heavily congested regions;  that might help some of the problem.  And of course, I still need to let the player place key quests, to move players around.

But in general, I’m pleased with progress.  And tremendously scared that I only have a week left to finish the project!  :)


May 21 2008

Simulation vs. Game

Tag: Full Games, MMORPG Tycoontrevor @ 11:43 pm

So I’ve wired up my initial “Forum Buzz” calculation and discovered.. that while my plan for its calculation is probably a good mirror of what happens in the real world, I’m not convinced that it works in the context of a game.

Basically, here are the game rules as they currently stand:  Only players who are addicted to your MMORPG will generate any kind of forum buzz, on the theory that nobody else will bother to post on your forum.  The addicted player will add either positive or negative buzz, based upon their current satisfaction with the game.  (So if you’ve just nerfed their class, they probably will be generating negative buzz).  Buzz decays over time (currently at a rate of 25% per day.. I’ll probably increase this to 50% per day, but it needs more testing).  I then base the rate of new subscribers on a weighted buzz value which is equal to:  (2 * positive_buzz) + (1 * negative_buzz).

So as a rough rule of thumb, if you have two hundred people posting negative comments about your game, you’ll get half as many new members as if you have two hundred people posting postive comments about your game.  This works off the assumption that any sort of exposure will bring you more customers than no exposure, regardless of whether the exposure is good or bad (although obviously good will be more effective than bad).  This seems to make sense, and actually appears to be more or less what we see happening in real MMORPGs.  The problem is that I’m not sure whether this works well in a game format.

See, what it effectively means is “big games get more buzz, and more buzz generates more players for the big games”.  Big games get bigger, small games get smaller, almost regardless of whether the buzz is good or bad.  It really can’t be argued that that’s what’s happening;  certainly most of the new MMORPG players are going into the big MMORPGs like WoW.  But I don’t think that’s going to be fun to play;  it kind of makes having lots of subscribers become the only requirement for success at the game;  if you have lots of subscribers, your new subscriber base will grow massively, pretty much regardless of whether or not your player base actually likes what you’re doing, because either way, they’ll be generating a lot of buzz on the forums which will bring a lot of new players into the game.  This is, of course, assuming that you manage to keep your players addicted.  But so far, that’s actually not turning out to be at all difficult to do.  Maybe I need to improve the ‘addiction’ algorithms, to make that a little trickier to generate.

Need to think about this more.


May 21 2008

More MMORPG progress

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

Not much to say right now;  gotta get sleep.  But I wanted to post about the MMORPG simulation progress from the last few days.

I’ve very nearly “closed the loop” on the simulation (though not quite yet);  I’m hoping to finish it tomorrow.  Here’s the status:

  • Users connect and disconnect from the MMORPG on an approximate schedule (this schedule slightly varies from day to day, and based upon what the player is actually doing while connected.  Users won’t disconnect in the middle of combat or if they’re really close to gaining a level, for instance.
  • While online, users pick up quests, go hunting, gain levels, maintain a home town, etc.  Users also maintain a “satisfaction” value and an “addiction” value, which describe how happy they are with the game, and how much they’ll continue to play, even if they’re unsatisfied.  (And no, I’m not going to reveal how that’s calculated, yet.  ;) )
  • Each region (the outlined areas in the screenshots in previous posts) is run by a single server.  If too many users enter a single server’s area at one time, that server will crash, dropping all its players offline.  Which decreases user satisfaction a lot, as you might expect.  Keeping too many users from clustering together on one server is going to be one of the player’s big challenges in this game.
  • Each simulated day, the player pays his employees one day worth of wage, and earns one day worth of subscription fee from all subscribers.  Additionally, when a new subscriber joins, the player earns the “box cost” he’s specified for the MMORPG.  With a $15 subscription fee, it takes 2000 subscribers to match the salary of one employee.  Or fewer, if you’re getting new subscribers.  The game plays with an accelerated clock, such that one day passes every two minutes of real time.  (I’m still fiddling with this, though)

The last little bit that I need to finish in order to complete the simulation feedback loop is to make users’ satisfaction and addiction to the game create a “Forum Buzz” value, and then set the frequency of new subscribers signing up based upon the Forum Buzz (adjusted by the box price).  Once I have that, the core simulation code will all be in place and hopefully working reasonably well!

Of course, I’ll still have to write a bunch of user interface code to let the player tweak with the various variables in the simulation.  And I need to write some sort of “Information” view that will show information about the objects in the simulation.  But that’s all detail work, once the core simulation is implemented.  :)


May 16 2008

More MMORPG stuff

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

It’s been too long since my last post, so I’m just going to drop a couple more screenshots and stuff.

The first one is a zoomed-in view of one corner of a map, showing a few zoned regions. We’re close enough in that you can make out a few towns, a starting point, and a respawn point. (The towns are shaped like little houses, the respawn point is the octagon in the southernmost green region, and the starting point is the small square in the northernmost green region).

The second shot is a much more zoomed in view of a different map. This is showing the corner between four regions (three green, one yellow), and we’re close enough in that not only can we see the town and starting zone, but we can just make out the simulated users (the little white dots). These users are mostly all users who have this town set as their home; they’re currently doing quests and fighting monsters to gain levels right now.

I need to come up with a good way for the player to get information about these users. Right now each has a whole lot of data associated with them (what their AI is doing, the player and character names, player gender, health levels, satisfaction with the game, etc), but there’s currently no way to see any of that. I haven’t even written a way to let the player click on them yet.

But the most critical thing is to finish up the basic game UI first. I need to let the player switch between several different bits of functionality in the left toolbar, instead of always being at the “Zoning” tool. The player needs to be able to change the values for the many other input variables in my MMORPG simulation (subscription costs, monster densities, player class definitions, etc)

So there’s plenty of stuff still to do!


May 11 2008

MMORPG revealed

Tag: Full Games, MMORPG Tycoontrevor @ 8:41 am

MMORPG Dev screenshot 2Okay, I’ll confess that I’ve been a little intentionally misleading for the last week.  :)

The MMORPG game I’m working on isn’t an MMORPG;  it’s a single-player game about MMORPGs.  The player takes on the persona of the new owner of a software company with an unpopular MMORPG, and it’s up to the player to bring them back into profitability.

The player does this by adjusting the zoning of the map, by adjusting the player classes available, placing key quests, adjusting subscription costs, hiring and firing programmers/designers/artists, watching the forum buzz and news coverage about the game and company, etc.

At the moment, the very basic MMORPG mechanics are implemented;  the player can set up zoning, simulated players log in to the game, fight monsters, and pick up and complete minor quests.  I’m hoping that by the end of tomorrow, I’ll have simulated players accepting key quests, and then can move on to tuning how all the various parameters and systems interact with each other.


May 07 2008

Early development shot of MMORPG game

Tag: MMORPG Tycoontrevor @ 4:31 pm

Just for fun, here’s a very early screenshot of my MMORPG game project.  Apologies for the lack of anything really visible in it;  almost all the work thus far has been behind the scenes.

This is a somewhat zoomed in view of the map screen.  The toolbars and suchlike haven’t been filled in yet, but will eventually provide a number of controls.  The user can drag with their right mouse button to scroll around the map, and use the mouse wheel to zoom from a full-world map to a close-up view of the action.  Again, this is a bit like World of Warcraft’s map, but with smooth zooming control.

Each square you see in this view is a “zone”, which would be about a five minute trek from one side to the other.  Theoretically, if this was a full-on commercial MMORPG, each zone would be simulated on its own server to manage player load across the world.  In practice, I’m sure that I won’t actually have to worry about things like that.  :)

Not visible here, I’m using the “Meat” sprite from Muncher’s Labyrinth for players.  But that’s probably only temporary.  :)


May 06 2008

TIGSource competition

Tag: VectorStormtrevor @ 7:46 am

Procedural Content Compo LogoSo the latest TIGSource competition has finally been unveiled: Procedural Content Generation. The competition starts today (or yesterday, depending on which part of the world you’re in), and finishes in four weeks time; on June 2nd.

I’ve never entered one of the TIGSource competitions before, as I usually found out about them when people started announcing the winners of competitions which had just finished, but I managed to catch this one in time, and I’m entering it. So I guess this is the start of my very first Game-in-Four-Weeks. :)

I think I’m going to be implementing my as-yet-unnamed MMORPG concept, which I mentioned a week or two ago. Really, four weeks feels like an eternity.. so I’m going to keep myself productive by trying to get a basic gameplay proof of concept up and running in the first week, just as though it was a regular “Game in a Week” project, and then spend the rest of the time on improvements and tutorials and polishing and suchlike. Wish me luck!


May 03 2008

Developments in VectorStorm engine

Tag: VectorStormtrevor @ 7:18 am

A quick note on what’s going on with the VectorStorm engine.

I’m midway through converting VectorStorm into a dll/framework. Once this is completed, I’ll be switching VectorStorm over to a different, more permissive license; most likely the LGPL, as that would make our license compatible with that used by SDL and SDL_mixer. This would have the benefit that I could theoretically bundle all those libraries together into a single .dll, which would make it much easier to start up a new project, to avoid version conflicts between the various libraries, and would really cut down on the dll clutter in my games.

Additionally, there are now “VS_VectorStorm.h” and “VS_VectorStorm_Debug.h” files, which are intended to be used as prefix files;  they include every header in VectorStorm, so there’s no more micromanagement of which headers you need to include, and it no longer requires explicitly adding every VectorStorm directory to your game’s header search path.  All in all, it’s just intended to make VectorStorm a heap easier to use.

I already have this bundling working in the Mac build; now I just need to get it going under Win32.

But I am banging my head against one problem. My singleton template class uses a static variable to store the pointer to the single instance of each particular class. In the Mac build at least, this ends up meaning that the static variable is created both inside the framework and inside the game code, and which of the two variables your code ends up accessing is pretty much random. This can lead to some really difficult to debug bugs, where some code finds a class instance, and other code doesn’t.

It feels like there should be a simple fix for this, but I can’t for the life of me figure out what it is, and Google isn’t being much help.

If anybody happens know the solve for this, I’d be thrilled to hear about it! :)


May 01 2008

Safe zone annoyances

Tag: Engine, VectorStormtrevor @ 10:32 am

So last night I downloaded and spent a little time playing Lost Cities on XBox Live Arcade. Lost Cities is a card game, and I’m a big fan of board/card/etc. games, and really enjoy them when computerised, particularly when they use the computer to automate things which had been annoying without a computer. For example, scoring in Carcasonne is really painful and error-prone when you’re doing it manually, so having a video game version do it automatically is awesome.

So imagine my surprise when I realised that Lost Cities assumes the user has a high-definition screen, and that every pixel it draws is going to actually be visible on the user’s screen. For those of us still using standard definition screens (I believe that we’re still the majority?) there’s a thing called the “safe zone”, which specifies the pixels which you can always assume will be visible on everyone’s screen, no matter what sort of television they have. To find the “safe zone”, you basically just remove 10% of the width and the height of the screen; the middle bit remaining is the “safe zone”; the part that you can safely use to display important information. Outside that might be lost under the frame of the television.

So I was all looking forward to Lost Cities, only to discover that its font was needlessly small, making it very difficult to read on my screen, and then to discover that important information (for example, my score) is apparently being displayed inside the safe zone, and cannot be seen at all on my television.

Ever wonder why virtually every console game out there floats your health bar and other data on top of the game image, a short distance in from the corner of the screen, whereas PC games usually use a solid bar at the very edge of the screen to show that information? It’s the safe frame; we don’t actually know where the edges of the screen are going to be on console games, and so we have to just put the information somewhere away from the edges of the screen so we can be certain that everyone will be able to see it, whereas PC monitors don’t have that problem.

Now, the safe zone has been around for an awfully long time. Anybody who’s ever developed a game for a console older than the latest crop will already know all about it. Additionally, anyone who’s worked on television broadcasts knows about it as well. Everything from the nightly news to the latest Wii games all obey the safe zone, and do not put important text or other information at the edges of the screen. Almost all of the next-gen full-price games are built with the safe zone in mind. But a lot of new XBox Live Arcade games are being written by people who have only worked on the PC before, and many of these companies seem to assume that a television display is basically like a PC display, when it really isn’t.

So I was all annoyed at this, when it suddenly occurred to me that none of my VectorStorm games obey the safe frame. And what’s worse, the VectorStorm engine doesn’t even provide any debug tools for showing where the safe frame actually is. Now granted, VectorStorm currently only runs on normal computers which will have normal monitors which will display the whole video image. But who knows; someday I might port VectorStorm over to the XBox 360 or PS3 or something else (stop looking at me like that; it could happen! ;) ), and at that point, none of the games I’ve written for it would actually play nicely on standard def screens.

So here’s a big TODO for me: Add a debug feature to the core VectorStorm engine, to draw the borders of the safe zone to the screen.  This will be useful when developing games, so that I can easily lay things out relative to the safe zone and keep my informational displays (score, lives left, etc) safely on screen just in case I someday port the thing over to a real game console.