IOTD: Ion Wave - Elite-like Allegro5 Game
Ion Wave - Elite-like Allegro5 Game
, by Billybob
Another attempt at an Elite-like game. My last one was a bit too complex. This one is 2D, and I'm using it to learn up the new Allegro 5 API. Neato!
It binds with Python through boost::python for scripting, and uses libRocket for the GUI.
So far, nothing amazing. Just flying around, a space station, and a single planet. The background is actually a multi-layered starfield, with a script-configurable number of layers and attributes. Each layer has different parallax settings, so it looks pretty nice in motion
Weird development note: I needed some way to limit the ship's velocity. A hard threshold would seem silly; I wanted it to roll off smoothly. After some thinking, I ended up actually coding special relativity (energy-mass equivalence) As your ship gains velocity, its mass increases, reducing the effects continued acceleration have. I tweaked the equations a little bit so it has a maximum mass, though. That way the ship does reach its maximum velocity (instead of always approaching it), and deceleration doesn't take a half-century.
As for gameplay, nothing is coded, but I'm hoping to make it like Elite, but more casual and with some elements borrowed from games like Civilization and Mechwarrior (crazy combo, I know); some style/story may be drawn from things like Dune (mostly just the way they incorporated a kind of mythology into futuristic space, instead of the more "logic" future in Star Trek, or religious/political take of Star Wars).
Time will only pass during travel. That way you can sit in a space station and take your time plotting your next moves.
Game-play will typically occur in sessions, spanning a few hours or days (like Civ).
This is because there are limited resources, and the galaxy is in a volatile state.
Many planets are in disarray, pirates roam free, and chaos abounds.
During the course of a session, the player can sacrifice himself in his attempts to bring order to colonized space.
Or the player can achieve personal wealth and power through destruction and perverse promotion of anarchy.
Sessions don't end due to a hard time limit (like Civ), they just end when the resources burn out, or the galaxy collapses into pandemonium.
I want to make battles turn-based, but still "intense", so they can be casual. However I haven't worked out how to do this, without it being discontinuous from the other elements of the game.
Interactions with planets/space stations/NPCs will have more depth than simple trades. E.g. One planet is in desperate need of a certain type of addictive drug. If the player musters the resources to purchase those drugs, and deliver them (possibly for profit), the people will be happy, albeit their lust will not have been abated.
Continuing the example above, if the player didn't deliver the drugs (hoping to "cure" the people), a local group of pirates might see this as a perfect opportunity to enslave the people, given their weakness without the drug.
We'll see how much I actually get done
Weird development note: I needed some way to limit the ship's velocity. A hard threshold would seem silly;
On the first look it does. On the other hand one should take into account particle shielding of the ship. The faster it goes, the more damage will occur to its hull because of the relative velocity of the particles (and microasteroids) colliding with a ship. Suppose you have some sort of shielding that can contain particles up to certain speed. When going faster than this safe threshold the shield will become more and more ineffective and the ship will take damage. That's just another idea.
Anyway it looks really neat. Do you use your planet generation code from the previous project?
I was actually thinking along similar lines as OICW in regards to limiting velocity.
- Samuel Henderson
OICW: That's a pretty neat idea!
I think the ship will automatically limit your speed, to avoid damage, but there will be an override button you can push; which is how I imagine a "real" spaceship would handle.
Thank you for the great feedback
Do you use your planet generation code from the previous project?
Not at the moment, no. The graphics are all currently 2D. This is for simplicity's sake; so I can hopefully drive more of my efforts into gameplay.
If I do happen to complete the gameplay, I'll go back and enhance all the graphics. It'd still be a 2D playing field, but it can use on-the-fly renderings of 3D models. That means a 2D rendering will update in the background from a high-quality, procedurally generated 3D model + textures.
I finally got Markets working last night, so the player can travel between different space stations, buying low and selling high. While flying around you can zoom and pan; looking closely at your ship in-flight, or zooming out and finding new space stations to visit. It actually turned out a bit better than I hoped. Next I'll be adding warp jumps for faster intra-stellar travel; and jump-gates for even faster travel between solar systems (possibly with a Witchspace-like element from that Elite book).
This section is only available to registered Allegro.cc members.
| Add your own image!