Category: Game Design

Starflight Stuff

Starflight has long been one of my favorite games, although its interface is very annoying…sometimes I wonder how I put up with stuff like that when I was younger (answer: I didn’t have another space opera RPG to compare it to, of course).

I’ve been playing Starflight 1 and 2 again as reference for Star Revolution. I was playing Starflight 2 when I noticed something odd…look at this screenshot. Doesn’t it look weird in some way?

Hmmm...

And doesn’t this screenshot of Starflight 1 look kind of…chunky? Even for a 320×200 game?

Boldly go.

In fact…

Bll o.

This is a screenshot for the original Starflight reduced to 160×200. Notice that all of the text is still readable and all the graphics look the same, just narrower. It’s almost as if the game were written to run in 160×200…which is exactly what it was. Starflight was written to run in a 160x200x16 color mode available on some CGA/composite monitor combinations (most notably Tandy and Compaq computers). When the EGA and VGA versions were created, the image was simply doubled horizontally.

Which brings us back to the Starflight 2 screenshot.

Hmmm...

Notice how much more detailed the picture of the Tandelou Eshvey looks than the rest of the interface! The developers of Starflight 2 did not bother to try to make the interface look any better, even though Starflight 2 was written specifically for VGA! The only thing they did was use the additional horizontal resolution to make the font a bit clearer. How disappointing!


Multiplicative Skill

As I’ve mentioned before, I like watching Warcraft III replays. I also like observing games on Battle.Net. But I don’t play on BNet. Why?

Well, because I suck, and I get tired of being called a n00b. It’s hard to become a good Warcraft III player.

Why?

From what I can tell, there are four main skills you need to be a good Warcraft III player. They are:

* Build order
* Base layout
* Hero and unit selection
* Micromanagement of units

But you can’t just be really good at one thing and expect to win.

If you don’t have a good build order, you lose because the other player will gain resources and get their units out faster than you.

If you don’t have a good base layout, you lose because the other player can easily destroy your vital buildings.

If you don’t choose your heroes and units well, you lose because the other player will have abilities you can’t defend against.

And if you do everything else well but can’t perform the most basic hero-killing tricks like the surround, you’ll lose to opponents who can, all other things being equal.

Thus, if we could somehow rate players in these four areas on a scale of one to ten, a player’s final “skill score” wouldn’t just be his four ratings added together. They would be multiplied against each other, so that a single low score can properly drag the whole rating down into the gutter. And if one score is zero, the whole rating becomes zero.

Games need not be real-time to have multiplicative skills. Galactic Civilizations II is the same way. You need to be very good at researching in the right order, designing ships, setting up your planets properly and engaging in combat to have any hope of defeating the AI. Or you could just turn the AI down to “Fool”, at which point you’ll have to listen to stuff like this.

I used to love games that had multiplicative skills, but I don’t tend to play very many of them any more, simply because they take too long to get good at. You can’t play them casually.

I need to keep this in mind for Star Revolution.


Spore

Spore is back in the news, now that an edited version of Wil Wright’s presentation is available on YouTube and Google Video.

We’re all gushing superlatives (myself included), but it’s actually quite difficult to overemphasize how important this game is. Games used to use generated (instead of pre-created) content all the time – read this excellent Guardian article on the creators of Elite for an instructive example. (Try to ignore the completely irrelevant Reagan and Thatcher-bashing.) They did this simply because they didn’t have enough room on their media to store all the data for their worlds.

Then CDs came along, and suddenly that room existed, so we (as game developers) ditched generated content for the much prettier custom-created content. Now we’ve got games on DVD, and we’ve got the opposite problem – so much room, and such high player expectations, that the content takes forever to produce, driving the cost of the game up and driving the actual game playing time down (witness all the games that can be beaten in ten hours or less).

If this game comes out and is successful, it will prove that triple-A titles can be made with generated content. Generated content will become easier and easier, and finally it’ll become another standard tool in the game development toolbox, like first-person controls and streaming levels. This is something that has been needed for a long time.


To Mine The Heavens (Star Revolution, Design Pass 3)

How does the player make money?

In both Starflight and Star Control II, the player makes the majority of their money by mining planets. There is no trading, and you don’t gain much in the way of money from fighting enemies. Mining and finding special planets (colonizable planets in Starflight and rainbow planets in Star Control II) is your main source of income.

And mining is pretty boring. It’s very boring in Starflight, and while it’s dressed up in more of an arcadey format in Star Control II, it’s still not very fun. To the point that when I start a new game of Star Control II, I use the landing craft trick to give myself a ton of money so I can jump right into the plot and skip the boring early part. More of Tycho’s masochism.

How can I avoid this?

I can avoid it by giving the player multiple ways to make money, and making sure all of them are nominally fun. I want the player to be able to make money with trade routes, by killing pirates for bounties, and by mining. Gambling and a stock market might also be interesting things to include.

I’m not sure how I can make mining fun when you’re basically just running around and picking stuff up…perhaps instead of just telling the player where every ore spot is on the map, the player must discern them using a hot/cold meter?

Killing pirates for bounties will be fun if the combat system is fun.

Trade routes…well, I’ve never found trade routes fun, but I know other people do. I need to avoid “spicing up” trade routes by putting lots of pirates on the routes, because that could just get frustrating for people who just want to fly around finding profitable routes. Perhaps I could help players out in this regard by putting icons next to planets representing what resources have the highest and lowest price…

But the real thing I need to do is start dishing out plot points early on and not require the player to get uber before he can find the plot.

Update: And I just realized why Starflight and Star Control II had no trading. Fuel in both games is incredibly expensive, and running out of fuel in deep space basically means “game over”. Games like Elite and Privateer that did have trading typically did not have a “run out of fuel in deep space” mechanic. I must think about this.


Star Revolution, Design Pass 2

This will be interesting, because Inaria really didn’t require much in the way of design. I pretty much just picked out the graphics I wanted and associated very standard abilities to them and that was it.

Star Revolution is going to require more design. The games I am taking as my inspiration, Starflight and Star Control II, were both excellent games and were both originally made for the PC, but neither game had mouse support. Adding mouse support would have greatly changed the design of both games, making them easier and better to play in all aspects except one – combat.

So one thing I need to decide double-quick is: what is ship-to-ship combat really like in Star Revolution? I’ve got a couple of options.

1. Arcade-style real-time. This is the style deliberately used by Star Control II and sort of unwittingly taken by Starflight. It’s worth noting the differences in the control schemes.

In Starflight, pressing a directional key on the keyboard caused your ship to move one “step” in that direction. Your ship would instantly turn to face that direction (if it wasn’t already). There were two weapon types: lasers and missiles. Lasers were pretty short-range and pretty weak, but were auto-locking – just press the enter key and you’ll get a hit. Missiles packed a much heavier punch, but moved slow and did not track – basically the missile shot straight in whatever direction you were currently facing. Getting a missile hit at anything longer than point-blank range was difficult but very satisfying. Thus, Starflight space combat was functional but not pretty, and the “insta-turn” feature of ships made it kind of unrealistic-looking. It was still fun, though.

In Star Control II, you fly your ship Asteroids-style with the arrow keys – the right and left keys pitch your ship clockwise and counterclockwise, the up key thrusts and the down key reverses thrust. Each ship type has at least two abilities, some of which are offensive and some of which are defensive. You use one ability by pressing the shift key and the other ability by pressing the enter key. It was deliberately designed to be a light, fun, arcadey experience. To the point that it was broken off and turned into its own game, called Super Melee.

2. Turn-based or semi-turn-based. The best example of something like this would be the Starfleet Command series of games. These games were based off the completely turn-based Star Fleet Battles boardgame, which actually was an excellent boardgame until it got too complicated to play. Unfortunately, the Starfleet Command games were based off the later, more complex version of SFB and thus are very difficult and tedious to play.

And once again I find myself wishing for a happy medium.

I’m going slightly off-topic for a second.

For years I’ve said that the first person to make a Civilization-style game that can be played single-player or multiplayer and finished in one and a half to two hours is going to become rich beyond the dreams of avarice. I used to enjoy games like Civ and Master of Orion and Age of Wonders, but they take so long to play, and saving and coming back isn’t really an option because you forget where you were and what you were doing and why that stack of units was out there in the boondocks by themselves. So I’ve been longing for games of this type that can be played in a shorter time – one evening, instead of a whole day.

And what do I get? Oasis and Strange Adventures in Infinite Space, games that feel like Civ and MOO (respectively) but can be finished in five minutes! Uh…five minutes? Can I get some kind of happy medium here?

It’s almost as if the only two markets that exist in computer games are “young and twitchy with lots of free time” and “old and bored with lots of free time”.

And now I’m going to get even farther off topic for a second. Tycho said something in a recent Penny Arcade update that really stuck with me. He’s talking about Grandia III:

With this much fun so close to the surface, the flagellation I endure finding the chewy center of other games stops looking like due diligence and becomes something like masochism.

And…well, that’s the way it is. Grandia III apparently starts dishing out its fun allotment right away, while a game like Galactic Civilizations II would take a couple playthroughs just to get used to the interface and how a game will progress, at which point you might begin to have a shot at beating the AI on Beginner difficulty. If you don’t feel like you fully understand and control the gameplay mechanism, then you can’t feel like you have a chance of winning, and if you don’t feel like you have a chance of winning then you can’t really feel like you’re having fun (in my opinion).

Now, someone will probably rejoin with, “Ah, so you hate losing so much that you’re not willing to play a game you might lose?” Please note that I didn’t say that at all.

One of my favorite ways to take a break from whatever I’m doing is to fire up Unreal Tournament 2004 and play an Onslaught game with 32 on each side. I use bots because I honestly can’t be bothered to go online and find a real game.

Now, about half the time I win, and about half the time I lose. And when I win, I dominate and when I lose it’s pretty much over as soon as the fight starts. That’s the nature of both the game type and using bots. But I still play knowing that I might lose and when it’s apparent that I’m going to lose I don’t just give up. The difference is that I know how to play UT2K4 and Onslaught and I feel that I’m in control of what is going to happen…mostly.

You do not feel that way initially when playing something like Starfleet Command, Civ, MOO or GalCiv. There’s this period you go through where stuff is happening and you’re not sure why and you’re not sure how to respond and then it’s over and all you can do is start another game and try to do better. The same thing can happen early on with RPGs as well. This is that masochism that Tycho mentions, and if it goes on too long then it can just not be worth it. Tutorials can really, really take that edge off and I have to hand it to the designers of Civ IV – it has an excellent tutorial, even if it is delivered by the disembodied head of Sid Meier.

I want ship-to-ship combat to be fun from the start in Star Revolution, but I want it to be a bit more complex than Star Control II combat. I want to get some of the more traditional Star Trek-style subsytems into the game – individual facing shields, beam weapons, missile weapons, and possibly even fighters – but I don’t want to get anywhere near Star Fleet Battles’ level of complexity. I want all of the controls and readouts on one easy-to-use screen. I want tutorials and a combat simulator so that players can get good at combat before they actually encounter a live enemy in the game.


Star Revolution, Design Pass

Please forgive me, this post is probably going to have a “thinking out loud” feel. I’m just trying to get a handle on what Star Revolution is going to be about and what resources it needs.

The most basic thing Star Revolution needs is a starmap. This will probably be a 256×256 map of cells, each one containing either empty space or a star system of some kind. The color of the star system will be displayed on the starmap. Different star systems will produce different planets – for instance, yellow stars are the most likely to have habitable planets, but hotter stars could have planets with more abundant minerals (for instance).

Upon piloting your ship into a square with a star system on it, a map link will activate and a new smaller (probably 64×64) map will load representing that individual star system. You may then pilot your ship onto individual planets, which will be map links linking to a 64×64 map representing the planet’s surface.

All of this is easily done with tech I’ve already written. The mining of planets with your landing craft (a la Starflight) could be easily done with my “get” code.

Now, if I just created a ship upgrade system, threw in some occasional enemy ships (SPAAAAAACE PIRATES!) and cooked up an interesting combat system, I’d have a viable game…basically a 2D version of Elite. It would be completely plotless, but could still be quite diverting.

So:

  • A 2D starmap (with 3D rendered stars, but traversed in a 2D manner)
  • 2D system maps (again, with 3D rendered planets)
  • 2D maps of planet surfaces
  • The ability to get things from the surface of planets (minerals, artifacts, etc)
  • The ability to upgrade your ship
  • Ship-to-ship combat
  • Random enemies to fight

The resources we’d need to create this:

  • The starmap
  • System maps for every star on the starmap (could be a lot, they’ll probably have to be randomly generated)
  • Planet surface maps for every planet on the starmap that can be landed on, which won’t be all of them, but will be a lot. Again, random generation is the way to go here.
  • 3D models for the stars (we’ll probably use one model and scale it up or down and put different skins on it for the different stars
  • 3D models for the planets (Starflight used an irregular sphere with the points raised or lowered based on the heights on the actual planet surface map, I’d like to do something similar)
  • A 3D model of the player’s ship.
  • A 3D model for the space pirate’s ship (they’ll all look the same)

We’ll call this Stage 1 of the game. If I published this, I would be somewhat satisfied. It’s a game, and it would probably be a more diverting game than Inaria.

But I doubt if I would be satisfied with that. What I want are for parts of the galaxy to already be inhabited by sentient spacefaring alien races that the player comes into contact with. Some will be naturally friendly, some will be naturally hostile, and some will be neutral and will react to you based on how you treat them. This means a conversation system. While Inaria didn’t really have a conversation system, I’ve written one before for Hit & Myth and therefore I’m not too concerned with writing another one. But I do want Star Revolution’s system to be more robust, with “topics” – things you can ask about that do not necessarily show up until you know to ask about them. This will allow me to make the game much more plotted than Inaria was.

So:

  • 2D or 3D portraits for several alien races (I’d want to have at least six)
  • Conversation system that remembers previous topics, has hidden topics and allows the user to reread previous conversations
  • 3D models and textures for the ship for each alien race (I’ll probably keep it simple and have each race be represented in space by one type of ship)
  • The ability to tag parts of the starmap as “belonging” to different alien races. I don’t want these to be hardcoded, because it could help the plot a lot of boundaries change through the course of the game. If the player is in a tagged area, they will run into ships belonging to that race frequently.
  • Some representation (probably a 3D model) of cities of a particular alien race on planets they control.
  • Variables that track how friendly a race is to you, and therefore what they say to you.

This would give me a framework capable of creating a game at least as big and full-featured as Starflight and Starflight II. The changing boundaries could even give me the ability to replicate Star Control II’s “evil species wipes out all others” plot development.

So that would be Stage 2 – far more ambitious. Doable? I have no idea, I’d have to see how long it takes me to implement Stage 1 first.

As for Stage 3? The only other ideas I can think of are having a fleet of ships instead of one ship, like Star Control II, and perhaps borrowing a few tricks from Master of Orion. Perhaps when the game begins, only the most basic spaceflight and offensive and defensive technologies have been developed, and new ones will come along at a regular pace. But if the player finds habitable planets and recommends them for colonization, the player will not only get a bounty, but will get a small percentage of the wealth the colony generates every game month. The colony will also contribute to research, making more advanced technologies available for purchase sooner. Finding suitable planets for colonization would then be an investment that would really pay off as the game progressed. Ooh, I like that idea. But we’ll implement that only if we do both stages 1 and 2 and have a lot of time left.


Inaria Postmortem

Around the end of October 2005, I decided to try to write a complete computer role-playing game in forty hours. I was inspired by this article by Jay Barnson on GameDev.net, Jeff Vogel‘s excellent work, and by my own love of RPGs. I am a professional game developer, but I’d never written an RPG engine and considered that a “hole” in my experience.

I picked a time limit because I’ve also been fascinated by people being forced to do the best they can with their skills under such limits; this was one reason why I wrote my Iron Gamedev article (the other reason was that I was feeling really goofy that day). And of course competions like the Ludum Dare also inspired me.

The project is now complete. You can download the game here, and the source files for both the game and the editor here. Here’s a screenshot:

Mmmm...pixels.

Now, the point of this project was to learn, not necessarily to make a complete and fun game. That said, I did want to make the game as good as it could be in the time I had. Here’s an excerpt from my original design doc with my goals:

We need four things to be able to call the project a success.

We need to create the map structure and populate it with an initial terrain layout.
We need to allow the player to walk around the map and be blocked by passability data.
We need to create monsters and have them move toward the player and attack him when they get in range.
We need to allow the player to attack back, and to have the player somehow gain in abilities when he succeeds in killing monsters.

That’s it. If we get that, we can publish it without fear of too much ridicule.

But that’s not enough. What I want is:

A map structure where every map cell is a list of critters placed on that cell. When the cell is drawn, all objects in that cell are drawn, from bottom to top. Since the terrain object will be pushed on the map on load, it will always be drawn first, on the bottom.

A map structure that contains data for map links.

An inventory and a current equipment screen.

If we get all this implemented, I will consider the experiment a resounding success.

Finally, what I’d really like is:

An overworld, three towns, two castles, and eight dungeon maps.

An overall plot, no matter how thin.

Quests and quest objects.

If we get all this implemented, I’ll be damn suprised.

Well, I didn’t get quite everything on my list done, but I’m still very surprised at how much I accomplished. I got the map structure I wanted, an inventory, buying and selling, NPCs with different AI behaviors, levelling up, one town, two castles and eight dungeons. And a very, very thin plot, but not quests or quest items.

I kept rigorous track of my time, but since I have a full-time job and a family, I wasn’t able to spend my hours over the course of a weekend or even a week or two. It took me about three months to finish the project, and I actually feel I did well completing it in that time. I am actually alloting myself four months to complete my next forty-hour project.

I would break down my time spent as follows: about five hours was spent fiddling with graphics, about thirty hours was spent writing code, and about five hours was spent creating the NPC data files and game levels.

What Went Right

Kicking it Old-School

Emulating an old Ultima-style RPG was the right tack to take. If I’d tried to write a 3D RPG, I simply would have gotten overwhelmed and probably quit. The feature set I wanted fell into the “tough but doable” range and made for a perfect forty-hour challenge.

Using the SDL

I wouldn’t have completed what I did if I had not used the SDL and instead just used DirectDraw. End of story. I cannot imagine why someone would not want to use it for a project like this, it was so easy to use and saved me so much time.

Grabbing Graphics off the Web

All the items, monsters and NPCs in the game came from this page of free RPG tiles. This was a lifesaver – if I’d had to create the graphics myself, not only would they have looked like crap, I would have burned so much time on them that I would not have had any chance of completing my goal. As it was, I could not find any decent terrain tiles that I liked, so I ended up grabbing a lot of the ones I used out of Ultima VI. This cost me at least two hours, unfortunately.

Making an Editor

I spent about five hours making an editor for the engine – you can see a screenshot of it here and it’s included with the source package linked above. I think this may have been my smartest move. I ended up spending far too much time on the code and far too little on the maps (see What Went Wrong, below), but if I hadn’t had the editor I probably wouldn’t have gotten more than one or two maps into the game.

Using my PDA to Sync Projects

I have an Asus A620 PocketPC-based PDA. I love it, and one of the things I use it for is to keep projects synched between work and home. This way I was able to work on my project at work, sync my PDA, take it home, sync it at home, and pick right up where I left off. Now that I’ve got some webspace, though, I’ll probably set up a Subversion server to make it even easier, and give me real source control features like versioning.

Blogging the Process

This was vital. The fact that I knew people were watching kept me going when I got really tired of the project 🙂 I’d like to thank my friends Ryan Clark and Tom Mauer from work who tracked the progress of the project with interest, as well as Andrew Wooldridge and Gianfranco Berardi who linked to me, and to Sol who piped up with helpful suggestions when I mentioned I was using his tutorials.

What Went Wrong

Hoo boy, where to start?

Well, first, here’s a screenshot of the most visually interesting bug I encountered during development:

I'm walking on mouths.

Multiple Mistakes with the Editor

I made two huge mistakes with the editor. First off, I made it too early in the project. I made the editor when I felt I needed map data to work on, but once I had the map I then added lots of features to the map structure…which the editor then didn’t support. I had to add the map level number, map name and map links all by hand. The editor still saved me time, but it could have been even better if I’d just made a temp map by hand to work on, finalized my map data structure, and then made the editor.

My second mistake was a doozy. I split the editor off into its own project, instead of simply creating a new editor source file in the base project. By splitting the editor off, I ensured that all maps would have to be moved from the editor folder to the actual game folder before they could be tested – and then moved back if additional work was needed. Maps quickly got out of date and filenames got confused. I finally fixed this by putting a hardcoded path into the editor source so that it saved and loaded from the game folder, a terribly hacky solution.

Secondly, I ensured that all the changes to the source files I made while writing the editor had to be merged back over to the game project, and then changes made there had to be merged back into the editor…it was just bad. Still much better than no editor at all, but these mistakes caused me to eat up time that could have been spent making the maps better. Which leads me to…

Too Much Time on Infrastructure, Not Enough on Content

Now…this is a thing that went wrong, but in the end, this was a learning exercise, not an attempt to make a publishable game. I wanted the game to be as good as it could be, but in the end the quality of the game is not that important.

That said, the game could have been twice as good with just one or two more hours spent on the content – and I’d have had those hours if I’d both planned better and not made those boneheaded mistakes with the editor. There are features in the engine that the player will never see…because I didn’t have time to write content that uses them. Yay!

Schizophrenic Source Code

I almost didn’t want to post the source…in just about every case, I started doing things the “right” OOP-ish way, and then reverted to procedural programming when time got tight.

For instance, there is an NPC class. Great! Do I subclass from that for all my NPC types so that I can program in individual unique NPC actions? Nope, I simply use that one class and have the Update() function determine the NPC’s type and perform actions based on a classically bad switch/case statement. The input code is atrocious; I’m doing tons of stuff there that have nothing to do with input. I felt like crying when I put the code to draw the hit marker and projectile marker inside the input function with their own frame pumps…but it was either do that or cut them completely. I guess I can console myself with at least knowing that it was bad.

Conclusion

Despite all of that, I do consider the project a success. I learned a lot and created a fair amount of code that can and will be reused for other projects. And I’m planning on doing three more of these forty-hour learning exercises over the course of the next year.


We Now Return to Our Previously Scheduled Program

Hi! I’m back. Christmas was good, thanks for asking. No, I didn’t get anything done on the RPG. I did gain about five levels in World of Warcraft, though (and these were levels 53-58, not insubstantial).

I honestly don’t know what to do about World of Warcraft. I’ve been playing for over a year, and I am the definition of the casual player. I am approaching level 60 with my first character (a human paladin named Surago) and now I’ve got some problems.

The first is that the paladin class is one of the worst in WoW. Blizzard just doesn’t know what to do with the class. We can’t fight; our damage per second is the absolute worst in the game. We can heal but our heals take a long time to cast and therefore half the time our target dies before the heal gets off. We can remove some debuffs but not all of them. In the end, everything we do can be done better by other classes, and the weaknesses of the class become more and more apparent the closer characters get to 60. So why did I pick this class? Because I didn’t know all this a year ago when I started playing, and because the paladin represented exactly what I wanted to play – a fighter who can also help others out with heals.

The second problem concerns the radical shift in gameplay that occurs in WoW once you reach 60. During the level progression, you can track how far along your character is and how much effort you need to expend to improve him. Getting better gear is nice, but levelling up will improve your character more.

Once you get to 60, the only way to make your character significantly better is with better gear. Unfortunately, all the really good gear in the game comes from random drops from raid bosses, and these drops have really low percentages. They also bind to your character on pickup, so they cannot be sold on the auction house to other players. So you run instances over and over and over and over hoping your item drops. A friend of mine in my guild just got the final piece of his Tier 0 set – which is the most basic class-specific armor set in the game – and it took him one hundred and seventy-six runs through the Scholomance dungeon before his damn hat finally dropped.

One hundred and seventy-six times through a 2.5 hour dungeon. To get one piece of an armor set that isn’t even that good.

What this means is that you can no longer track your character progression. The odds that anything you need will drop on a certain raid are about 2%. I’d never play a gambling game with odds that bad (and neither would anyone else!) but here I am paying $15 a month to do just that – spend my time gambling over and over, praying that what I want drops. To barely improve a character of the worst class in the game.

I think I’ll probably just start an alt instead.

Okay, new topic. Saw Ghost in the Shell 2: Innocence. In the end, I felt about it the same way I felt about the original Ghost in the Shell. Gorgeous movie, interesting ideas, tried too hard to mean something, but still very enjoyable. There wasn’t quite as much action in this one, though.

Let’s see…anything else? After I wake up a bit more, I’ll probably make the obligatory New Year’s Resolution post.


40-Hour RPG Update 9: 22 Hours

I am on a roll today.

Smashy smashy!

Again, much done in a short time. You’ll notice I changed the layout of the screen. The text area was just too small; all of this game’s personality is going to come through the text, so I need to be able to get as much of it on the screen as possible. I got unstupid about my button arrangement – I don’t know why I thought I needed three lines for that; two not only gives me more space but I think the buttons look much better in their logical groups. I also finally took the white flash off the rest of the icons, also making them look better.

But then I had a problem – I need enough space for my inventory. I need a 128×128 block to represent the sixteen items the player can have in his backpack. (Yeah, it’s like World of Warcraft…it’s also like Ultima VI!) Moving the GUI buttons up infringed on that space, so I found a way to compress the character data at the top of the screen using icons I found on the web. One side effect of this is that my tile sheet is now bigger than 256×256. I’m willing to give up that limitation; I need those icons, and I’m going to need more icons in the future.

What else? Oh, yeah, combat! You can now take swipes at NPCs, and NPCs can take swipes at you (if they are hostile to you). An NPC’s attitude toward you is separate from their movement AI, so I can have NPCs that just wander around, hitting you if they happen to get near you, or NPCs that seek you out to put the beat down on you. I can even have NPCs that just stand there and can only hit you if you come into range (the Carnivorous Mushroom is one of these).

Next I need inventory, picking up items, buying and selling. Which means I need to figure out exactly what the merchants in town are going to sell.


40-Hour RPG Update 8: 20 Hours

I am now halfway through the project. Combat is still not in, which is a concern, but I’m not anticipating any real problem with it. The subsystem I’m anticipating having all the problems with is the inventory.

Anyway, looking and talking both work, and NPCs now either stand still (if they are merchants or the king), wander around (if they are townspeople) or wander around until you get close, then hunt you down mercilessly (if they are monsters). See?

That baby dragon just will not get off my ass.

Let’s do a quick assessment. Here’s what I’ve gotten done in twenty hours:

  • Gathered and created the necessary tile graphics; created the background
  • Game framework (mostly created before I started, but put to the test for the first time on this project)
  • Basic map structure with passability data
  • Basic player structure
  • Basic NPC structure
  • Basic item structure
  • In-game lists for NPCs and items which “float” over the map
  • A simple but functional map editor
  • Simple bitmap font system
  • Designed the basic character advancement and combat systems
  • Created the NPCs and monsters for the game
  • Created a simple GUI system and the specific GUI for my game
  • Player movement, looking and talking
  • NPC movement updates based on data-driven AI flags

My remaining tasks, in order of increasing difficulty:

  • Saving and loading (very important)
  • Map links
  • Creating the remaining town maps
  • Creating the overworld map
  • Creating the dungeon maps
  • Creating the end boss’s castle map
  • Combat
  • Spells
  • Inventory
  • Equipping of items
  • Buying and Selling

Can I do it all? Keep tuning in to find out! If I do, the game is going to end up being a very simplistic game based on a fairly complete RPG engine. I don’t think I could have asked for more in forty hours.