ID:67450
 
Solar Conquest began as an effort to build a game around a set of AI that I had designed to play a game like this. My original goals for the game were pretty simple: make it look nice, and give it killer AI.

As anyone who's played Solar Conquest may have guessed, it all started with Crispy's Yet Another Generic Space Age Conquest Game, which is now discontinued in favor of Mayhem Intergalactic. When I first played that game, I thought to myself, "This is fun, but I bet there's a lot more that could be done with the graphics!" The original YAGSACG was completely dependent on the grid, there was a lot that could have been done to improve the visuals just by removing its grid dependence.

Sometime after YAGSACG died off, I started working on a project that emulated YAGSACG's game play elements. That project had several purposes. One, to test out some visual improvements. Two, to experiment with new game play mechanics, and three, to give it some much needed AI improvements. Most of the graphical and game play changes were fairly rudimentary, so I won't get into those much, but the new AI is where I really started getting engrossed with the project.

My AI project, as I started calling it, ended up having three levels of AI. Standard non-cheating AI, which managed to be competitive against human players as long as they didn't know how it worked. Once you knew how the AI worked, it was fairly easy to abuse it. The standard AI also came with different game play preferences: defensive AI which would keep ships at home to protect their planets, aggressive AI's which would have most of their ships on the attack, expansionist AI which would grab as much territory as possible at the beginning, industrialist AI which would upgrade their factories more than the others, and balanced AI.

Once a human player had mastered the standard AI, then it was time to move on to the slightly-cheating AI, which might gain some minor production bonuses, or be able to see fleets where they weren't supposed to see them, which gave them a significant heads-up on what human players were doing. Of course, any self-respecting player would eventually master the slightly-cheating AI, and that's where there were the cheats-a-lot AI. I had one AI called the annihilator AI, which frankly, I doubt anyone could ever beat. The point was that there was a nice gradient between competent but easy AI to ridiculously hard cheating AI, and you could generally find a nice spot somewhere in the middle where the AI was just fun to play against.

After working on my AI project on and off for some months, I started wanting to have other people play against it. So I thought I'd build my own version of a game similar to YAGSACG, but with enough notable differences that it could be considered a different game and I wouldn't end up with people upset at me for copying someone else's idea (especially Crispy).

So I started working on Solar Conquest. First huge difference: much better graphics. Solar Conquest was not attached to the grid, it wasn't restricted to a single window, and it had 3d-rendered planets, stars and space ships. The ships were rendered in 360 directions so they could face whatever planet they were aiming at, and the planet graphics came in a variety of colors so that they could adjust to match the color of the player who controlled them. And of course, Solar Conquest took advantage of BYOND's new interface controls.

Beyond that, I wanted to introduce some changes to the game play: Solar Conquest would use three ship classes instead of one, so that people with less fleet strength would have a chance to overpower a stronger enemy fleet using a countering fleet arrangement. Also planets came in different classes and sizes, so there was a variety and you had to choose which planets to colonize and upgrade instead of just going for everything. Planets also had various kinds of upgrades instead of just one - including my favorite upgrade, warp gates, which would determine how fast your fleets could travel from their current planet to another.


CREATION TOOLS

In order to create the graphics for Solar Conquest, I relied on my two primary game-graphics creation tools: Paint Shop Pro 7 and Blender 3D. Virtually all of the ship and planet graphics were rendered in 3D using Blender, exported and modified using Paint Shop Pro 7. I should also mention that Theodis provided me with a handy little program that compiles the rendered images into a single image for rotating 360-degree graphics.

I used a handy tool by Cliff Harris called the Explosion Generator to generate the explosions seen in the game.

The interface was simply created using some free textures available online, with window sizes cut out and then having the images layered and run through a few Paint Shop Pro filters.

I gathered sound effects for the game from several web sites, but I believe flashkit.com was my primary source. Generally these were converted to OGG format in order to reduce their file size, but this was done using a utility that I don't remember the name of and which I don't have anymore. However if you get desperate you can do the same thing using www.media-convert.com.

I used a couple of libraries such as mathematical stuff from Nick Cash's BasicMath library and Ronald Hayden's XML library, but my favorite implementation was of Theodis' Pathfinding library which I used to allow the AI to move their ships from planet A to planet B as efficiently as possible, using travel times and warp gates as efficiently as possible.


WHAT WENT RIGHT
  • It just so happened that most of the graphics which I needed to make the game work - ship graphics, planets, stars, backgrounds - were already available to me. I had created them all for projects that never panned out, or just for fun. I also stumbled upon some easy ways to make other graphics that I needed at just the right time.
  • The whole planetary rotation thing wasn't actually planned at all, its just something that I came up with while experimenting with solar system generation and it worked out really well, along with rotating moons around planets. Some definite extra coolness there.

WHAT WENT WRONG
  • The ship triangle idea (fighter, cruiser, dreadnought) didn't work out so well primarily because of the player having to input three different values when they wanted to move fleets. Moving fleets around became much more tedious because of that. This probably could have been done better with the new slider functions, but that wasn't available at the time.
  • I had designed an AI for this game prior to designing the game itself, and the original AI was much more competitive than its implemented counterpart ended up being. I'm not sure if that was because of poor implementation, or if the AI just couldn't handle some of the new features.
  • A lot of game play features were thrown in at the last moment without proper planning. For example, planetary upgrades currently consist of allowing the player to upgrade one of four sections every other turn. Not only is this very similar to Crispy's game, it doesn't provide a lot of options for the player. Were I to design this again, I would have allowed them to choose multiple options at once, or determine how much of each section they want worked on each turn. So if a player knew that invasion from an enemy fleet was immanent, they could cancel all forms of upgrade and focus everything on ship production in order to best counter the threat. It also would have given the players more options on what they can do each turn, and more options in this case means better game play.
  • My approach to the interface design was just plain wrong. The way its setup now, the different menus consist of several interface objects piled on top of each other, with their visibility turned on or off as needed. Had I done this with a child window instead, each section could have had more detail and better formatting, and they would have been much easier to work with and update in the long run. I could also have done this with the chat window, which consists of a single control which gets moved around as the main window changes. If this were done in a separate window, I wouldn't have been forced to restrict the window to a fixed resolution. Chalk it up to inexperience I guess.
  • In the end it was much too similar to Crispy's Yet Another Generic Space Age Conquest Game than I'd have liked. And I had several people call me out on that.
Despite how you evaluated your game, I, along with a few (very few) others, love the game.

There are a few issues I had that I think you could improve on.
1. The whole triangle thing with the ship classes needs to make more of a difference in the large fleet battles.
2. Interface severely needs a redesign. I had no problems with sending fleets, but I hated micromanaging all of the planets that I controlled. I want to be able to see, in one big window, all of the planets, their stats (upgrade levels and population and production and whatnot), and commands.
3. I want some more fleet management options. It would be nice if the scanners system was redesigned (so that a planet would be able to detect ALL fleets within scanning range), and then maybe I'd have to find holes in a scanner network that I can slip a fleet through. That would require more power and flexibility in the fleet controls than just "Move to this planet directly"
Great post. Great game.

ts
I like the links! Thanks for informing me all those hours of attempting to beat the AI on hard was wasted, as well; I almost beat it once, and now I feel better about losing all those times.
Solar Conquest never acquired any "hard" AI. Solar Conquest only had standard, slightly buggy AI.