My little AI-driven MMO subscribers are now capable of fighting monsters, using the new, more-accurate combat model. Watching them go and intelligently select attacks based upon custom game rules is pretty awesome. :)
They will prioritise attacks so that they’ll use their best attacks whenever they can, to try to maximise their DPS. If your game has two or more different types of “health” value, they’ll carefully pick their attacks to target whichever type of health they can hurt the fastest. Watching the subscribers out there massacring monsters is awesome.
Stuff that still needs work:
- AI subscribers are still using a hardcoded “desired distance from monsters”, instead of using the ranges set on the combat abilities that they want to use.
- AI subscribers are currently working entirely based upon a strategy of “kill the enemy as fast as possible”. They aren’t doing any advanced tactics, such as trying to minimise their opponent’s ability to do damage, or buffing their own defences, or figuring out complicated multi-stage attack sequences where the best attack needs to be primed by using other abilities first (such as, for example, using an ability to charge up a “Rage” bar, which can then be used to power really strong attacks). Coping with these multi-stage attack sequences will be handled in a separate system, to be tied in with subscriber level. (Which is completely different that their character’s level — details later)
- AI subscribers currently don’t ever choose to use healing powers on themselves.
- AI subscribers currently don’t understand damage-over-time effects. Currently, they assume that a damage-over-time effect will deal its total damage all at once, immediately. So if they have an enemy with 5 health, they will prefer to use a 1-damage-per-second-for-ten-seconds attack, over a 7-damage-all-at-once attack, even though the DoT attack will take five seconds to defeat the enemy, while the other will kill the monster immediately. This needs a bit more thinking, to really sort out the right heuristic for the subscriber AI to use to pick which attack to use.
- Monsters aren’t attacking at all. Need to figure out the best way to do monster AI. Probably they should just pick attacks randomly, or use each attack in sequence, or something like that.
Of these, #3 and #5 are going to be really easy to add/fix. #1 and #4 will be a little bit tricky, but hopefully not too bad. And #2 is an issue for later.
In general, very pleased with how this is all going! Tomorrow, I’ll get monsters attacking and subscribers using their healing powers (if any).
As a lead programmer at Krome Studios, one of my Key Performance Indicators (which, sadly, was never enforced or even encouraged in practice) was to give a minimum of one master class per year, to pass on acquired knowledge from the old-timers to the newer employees. I think it’s a real shame that nobody ever followed through on that, as it was a really good idea. It was always something that I wanted to do, but under the realities of (often extreme) deadline pressure, it was difficult to find time to prepare and arrange during work hours.
It’s something that I’ve always wanted to do, and have been thinking about more and more since leaving Krome. As somebody who’s been a gameplay programmer for more than twelve years, I think I’ve accumulated some insights over that time, which might be of use to other game makers out there. So far, when I’ve posted things like this, they have been in the form of essays posted to this blog, but they’ve always felt really dry to me. A podcast might work better, but in this field many concepts need to be accompanied by animated visual aids. So a vodcast might work, perhaps. I don’t think that my internet connection is up to attempting a live ustream show (although if it was, that would probably be the ideal forum, so the thing could be a little more interactive).
If I do this, it wouldn’t be a “how to create a game” tutorial; instead, it would be targeted at people who can already make games (or are learning via some other avenue), and would be about the more nuanced craft involved, regardless of what platform, language, or toolkit you’re working in. It would cover the principles of camera behaviour (in 2D and 3D), the design of control schemes, user interface issues, general fit and finish, and so forth. And of course, it’d be available for free to anyone who was interested, whatever form it eventually took.
What do you guys reckon? Is this something you think people would be interested to see?
Latest new thing to go into MT2: Support for status effects.
In MT2, “status effects” are implemented as little blobs of code that can be attached to individual characters. They get run periodically, and can affect just about anything on a character.
For example, right now I’m using them to implement Damage over Time (“DoT”) and Heal over Time (“HoT”) effects. In the future, I’m planning to use them for movement speed adjusters (for roots/stuns, mounts, travel powers, etc.) Eventually, you’ll be able to set whether or not they should be allowed to “stack” (although that’s not yet been implemented).
Continue reading “DoT, and Reach”
As a professional programmer, I spend an awful lot of time using a keyboard. When I went to apply for my first game industry job at Maxis, I had to apply through a temp agency, and one of the things that the temp agency made me do was their typing test. I scored about 90 words per minute on that test, and had a very difficult time then convincing them that no, I didn’t want a secretarial job; I wanted to go work for Maxis. I still tend to score between 90 and 95 words per minute; at that sort of speed, having a nice keyboard is quite important, both for health and comfort.
Over the years, I’ve tried lots of keyboards. Shortly after starting at Maxis, I settled on the original Microsoft Natural keyboard as my favourite. When my second Natural keyboard died a few years back, I went in search of a new one, but was underwhelmed by the more recent revisions of that keyboard. So I went on another round of testing keyboards, and eventually switched over to the modern slimline Apple “chiclet” laptop-style keyboards as the best-feeling keyboards for typing on. I’ve been using them for the past three or four years, even going so far as to buy an extra one to use at work, instead of using the cheap membrane keyboards that work was providing. Compared to those membrane keyboards (and even to most other laptop-style keyboards) the Apple ones just felt precise and responsive, with a really nice tactile feel. As I type this post, I have three of those Apple keyboards within arm’s reach. But I’ve always been vaguely curious about mechanical keyboards; keyboards with each key mounted on a separate mechanical switch.
Continue reading “Keyboards”
Something I don’t understand:
I’m no longer driving into work every day. This saves me approximately an hour every day. I’m doing some work at home, let’s call it eight hours a day (In practice, it’s probably a little bit less than that, but for the sake of argument, let’s call it eight hours per day), whereas I used to pretty regularly do 9-10 hours a day, at my old job.
So how is it that I have so little time for development? I should have more time now than I did two weeks ago, I’d have thought. But time seems to be behaving rather oddly; I don’t seem to have nearly as much time in the day as the maths suggest that I should.
Tonight, I got a few little things done in MMORPG Tycoon 2. First, I fixed the fill on the new, more sharply stylised mouse cursor. The sharper angles on the arrow are a very subtle improvement, but I can’t tell you how thrilled I am to have them; the shape of the mouse cursor has been bothering me ever since v1.1.
I also spent time getting my head back into the new combat system, and discovered that I’ve run into the same issue that heaps of real MMORPGs do; how best to award experience points for defeating monsters.
Continue reading “Divvying the spoils”