Category: Star Revolution

Good So Far

Aspyr seems like a great place to work. Unfortunately, because we are a port house, I have to be very careful about what I talk about – lots of NDAs and the like. So I probably won’t be talking about work much…at least until I ship something.

Work is progressing on my framework. I’m hoping to get it polished off this week so I can get back to the ‘splosions. I was tempted to try to implement a “perfect”, McShaffry-style framework that rigidly separates everything, using standard messages to communicate between subsystems. The advantage of such a system is that it makes things like multiplayer easy – a subsystem doesn’t care where its messages are coming from, so you just package them up and send them over the network.

The disadvantage is that writing such a system takes a long, long time. It probably would have taken me a month to implement such a system…and it feels like overkill for Star Revolution. I was toying with having a multiplayer component in the game, where two people can link up over a LAN and fight with their custom-created ships, but that will be the last thing that gets implemented…if it gets implemented at all.

Now, that’s not to say that the system I’m using is bad…oh, no. My framework is now much better than it was when I used it for Inaria. Putting in states cleared up a whole lot of issues about where certain code should go. I’m expanding the GUI system based on the concept of an immediate mode GUI. GUIs can now also be loaded from disk. I’m also enhancing the font system to do things like automatic word-wrapping (and one cool thing about using OpenGL for my blits is that I get colored fonts for free).

I’ll probably bite the bullet and implement a completely event-driven framework for my third project…whatever that turns out to be. And once it’s done, it’ll be done.

One thing I have got to do, though, is nail down exactly what Star Revolution’s gameplay is going to be like. Because I can’t start designing the interface for the game until I do.


Star Revolution Update 2

See?

I guess this is planet 'Uglo'.

A 3D sphere for a planet, and 2D blits for the UI. The most basic tech that I needed to add has been completed, but I still can’t start working on stuff specific to Star Revolution yet. Inaria suffered because I didn’t have a state machine system in my framework, so I’m going to add one. Plus, the entire code could use a rework and cleanup. So while I’m going to be working diligently on Star Revolution, I probably won’t have anything new to show for a while. Hopefully I’ll be able to burn through this busywork and get to the fun stuff, where stuff blows up soon.


Star Revolution Update 1

And here’s the first screenshot of Star Revolution!

Look!  Stars!  Ready when you are, Raoul!

What’s that, you say? It looks just like Inaria? Ah, but there is an important difference – all the graphics you see here are actually textures being drawn on billboards using OpenGL, instead of the SDL’s sprite system. Thus, I can combine 2D and 3D elements in the same scene, which will be a necessary technology for Star Revolution.


Employed

I am now employed. The lucky company is Aspyr Media. It’s going to be an interesting job, and one I look forward to doing. I’ll certainly learn a lot.

Now, I don’t actually start work for another two weeks. A smart person would use that time to work on Star Revolution…we’ll see how smart I actually am.


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.


The Ground Rules

Here are the rules for my Space RPG Project (I am going with the title Star Revolution, based on Sol’s suggestion):

1. I am free to use any code I’ve already written in this project. This includes my framework and any other code from Inaria or my previous projects.

2. The game must be completed by April 30th, since I intend to do three of these projects this year.

3. This game will have sound and will feature procedurally-created planets, since I need to learn how to do that. I’ll be using FMOD for sound, it’s teh awesome and I’ve used it before.

4. This game will not use the SDL. Instead, I will be using OpenGL. This is both to learn the API better and because…

5. This game will feature 3D entities in the game world – the planets and ships will be 3D. But because 3D content creation takes so long and because I can’t simply grab pictures of aliens off the web…

6. Only programming and design will count against my forty hours – creating 3D entities and other artwork will not. Otherwise, there’d be no way for me to get the project done in the required time.

Yes, I could probably use 2D-only graphics and grab alien art out of Starflight, but I was going over the technical requirements of the game and honestly…it’s not that different from Inaria. The procedurally-generated planets were the only real difference; otherwise this game is just “Inaria in Space”. I wouldn’t learn enough from making Space Inaria, so I added the new requirements. I don’t think I’m cheating that much; if this were a “real” project, all of that art would simply be handed to me by an artist instead.

So that’s the nature of the current game. Wish me luck!


The Envelope, Please…

First, I’d like to thank everyone who voted!

The results:

1 vote for a Platformer
1 vote for a Shoot-Em-Up
1 vote for a 3D Shooting Gallery
2 votes for a Civilization clone
2 votes for “Inverse Pac-Man, where you control the ghosts”
5 votes for an RTS
6 votes for a Starflight/Star Control 2 clone

And since that was my personal favorite of the suggestions, I will allow the vote to stand. My next game will be an outer-space RPG and combat game. I’m currently going with the title Star Sea, but that might change if I can think of something cooler. The title must have “Star” or “Stars” in it.

Before I can start on the game, though, my framework needs a lot of work. It may be a week or two before my first real update.