Space game

Thoughts on features

When I started this project I wanted to make an Elite game, but I didn't realize that I pretty much was making Escape Velocity (which I haven't played).

Another game which I haven't played it Archimedes Elite, which is slightly different from the other Elite ports. ArcElite is less 'player centric', meaning, police and pirates may duke out in the background without involving the player. It isn't fully persistent in its simulation though. Most likely, when the player enters a system, certain events are set up to appear as if they have been going in in the background.

Now we have the processing power to actually persistently simulating a very large universe, and that's something which I'd like to pursue. It's easier to do in a space game, because path finding and terrain collision isn't much of an issue at all. Many objects can also lie dormant until affected.

A bit into the project, I started thinking about the trading / market engine. It can be done in several ways. Each node could have a static price list, or each node could have a consumption and production list, with traders being simulated persistently. With such a system, there's a chance that the player could (too easily) exploit the system, by scalping a product, or blockading a node to jack up the prices.

Then I though, it trading really that fun? It's mostly grind. Why do I play space games?

What's appealing about Elite, Master of Orion, Starflight, Star Control, Wing Commander? These games all have something in common which I find interesting. Is it possible to mix the good things from these games, or will it end up tasting like candy+pizza+ice cream?

For me, trading and running errands isn't up there on that list. Mining could be fun if it wasn't about scouring the surfaces of planets for dots. In Frontier you could place a mining machine on a planet and forget about, and you can also mine asteroids. I never bothered with it, but perhaps it could be made appealing.

Art assets To-Do list

Screens

GUI

Portraits

Misc playfield bodies

Playfield ships

Playfield background

Playfield effects

Playfield solar system stuff

Thoughts on the setting

By putting the game 2.2 billion years in the future I can have some more fun with the setting (less luggage). Perhaps humans travelled to another galaxy in cryo stasis, or as seeds. Something went wrong and a lot of time passed. Or there are no humans.

I want the universe to be massively wasteful. Lots of red dwarfs, hot gas planets too close to their sun, barren waterice dwarf planets, black holes, in-between galaxies generation ship derelicts, a large population of Dyson spheres (technological singularities) which suggest that most civilizations end up like that quickly. This is why there are so few contemporary aliens. Maybe these Dyson spheres make up a part of the dark matter population, absorbing all radiation, making them invisible). 2.2 billion years into the future, there could be a lot of them. for some reason, the space faring guys now have rejected the idea of Dyson-sphering themselves.

I don't subscribe to the idea that everything should be easily available to the player once it has been put into the game. This makes a poor exploration game, because it feel depleted very soon. The sense of wonder works best if it's difficult to acquire the exotic things. Noctis is designed like this, afaik. Many of us might have memories of trying to find things in games which were really rare or not there at all. Now I'm older and know how the Zelda mazes were laid out (cleverly in that 32x32 something grid), but with this project I can create a universe where it will be difficult to map the entire thing.

Buckets and Quad Trees

Since I quad trees are a bit too much for me, I prefer doing simple 2D arrays of buckets. In this case though, I have made a tree structure of sorts. I just don't reevaluate its structure/resolution based on moving populations of game entities (since mine won't move). A branching structure like this is better when the populations come in clusters (solar systems).

In the illustration I use a subdivision of 2, but one could easily do say 64 sectors per solar system, or such. Most of the space empty though, especially between galaxies. Empty space still gets a list for stray entities.

While I really only update the active (moving) entities, there are still memory and save file constraints so a hundred thousand entities might be my budget. It gives me 4 galaxies of 500 stars with 50 entities per solar system (not an even distribution - many solar systems will be almost empty and other will have dense asteroid fields). I don't think I'll be seed generating that much, because I like persistence. There might be a way to use seeds and then override certain things with changes made by the player (mining asteroids and such), but that's not something which I'd want to code now.

Oh yes, I use fixed point (64bit) with bit shifting rather than multiplication or division (to figure out which bucket a coordinate is in), because it's faster, I think.

Playfield structure

A galaxy which looks like an antenna galaxy is more interesting to traverse than a round spiral/stave galaxy, perhaps. There could be a smaller clusters outside of the galaxy (inside the galaxy bucket).

I had an idea of using a simple bitmap as base for the galaxy generation. The pixel color could correspond to a nebula color, and perhaps star color, giving certain regions a specific color feel.

Star Count

I do know that a lot of stars are M class or close-by. Also, these dim stars rarely have companions, but larger stars are more likely to be a part of binary systems. I need to do more research here.

Hyperspace

Ships could have 2 types of engines, Hyper Cores and basic spatial movement engines. This way, the player will have to balance jump range and dogfighting capability.

Time warp

I'm not sure whether I should, or can support fast forwarding time, if my universe is persistently simulated, then it might already be using a lot of CPU.

Dogfight gameplay

I think that one thing which Wing Commander did right was giving the player lots of different guns to turn on and off, so there was some variation in shooting. I remember turning everything on to do massive damage when I had a clear shot. Wing Commander also had friction in space, which is useful in several ways: emergently giving ships a top speed which differentiates them, preventing too fast scrolling, preventing tunneling (objects passing through each other in an engine without trace-ahead collision detection), and finally settling moving objects so they don't use any CPU.

Planet exploration

I'm thinking of drawing a couple of generic planets, then a bunch of special ones. The special ones also get pictures for:

Equipment quality and price

I like being able to spend a lot of money pimping up a smaller ship. It would be fun if equipment came in several variants:

Ships

I programmed a space aether friction system, where the ships have 2 cross sections, Lateral and Anteroposterior. I calculate the cross section value for the travel direction using a sinus thing. The effect is that a long ship will slow down faster when it turns, and a wide ship probably strafes to the sides better. At any rate, I like to give the ship hulls some characteristics, since they don't have that many, being mostly empty shells which can be filled with anything. I want friction in space because I think it makes dogfighting more fun. Hull stress resistance, damage absorbtion, and such could be interesting to play with as well.

ships

Shuttle's are a bit larger than cars, and could possibly also be called cars.

Bulk carriers are large trading ships. These keep their departure time and destination secret to avoid competitors manipulating market prices (as large shipments have a large effect on prices). It's also a good idea to not advertise your whereabouts to pirates of course.

A ship cemetery is featured in the Elite novella. It's an interesting concept. Junk yard could be cool too. A planet based one could work as a cheap store.

Ship graphics

The ships will basically just be line art with color and top down light. Sparky (StarGuard dev) and I discussed the idea of blending a few images with different light to produce in between light angles. I do have the shadows (light) separate in a layer when I paint, but it seems like too much work for not much, and it might not even look that good anyways. Specular points wouldn't look right for one.

Delicious planetary bodies from Elite II Frontier. Simple flat colors, a single shadow color. Very graphical.

A simple line art+color + simple flat shade might produce a feel similar to that of the Amiga Elite, which looked gorgeous. I wasn't a fan of the textured versions of the Elite. People who do remakes of the models tend to greeble up the ships too much too. I like how they are polygonal, pretty smooth, ufo shaped with cut off butt where the engine holes go. It seems efficient. Elite ships are just hulls which you fill with stuff. Most other sci-fi's have spaceships which are weirdly shaped masses of nonsense greeble, or are some kind of elaborate masturbation of spline line design.

Frontier Elite 2 paper models

These are paper models from another abandoned project of mine. The scales of the ships were quite off, so they didn't look nice next to each other. I rescaled them according to their volume, but it felt like I wasn't faithful. For this project I'll probably use model clay to estimate internal volume for my ships. It bothers me when these kind of values are off.

Some versions of Elite had a nice clean interface. I've never been a fan of buttons and frames which look like computer chips / greeble. Well, I did at one point but I was... young. Here are some screenshots from the Spectrum version apparently. I've never played it. I don't like the font much though.

ZX Spectrum Elite

Ship names

Now to the question of ship names. Elite mostly used snake names. I'd like to use a theme too, but don't know which yet. It's possible that the Milieu of aliens are aware of earth based mythology and such via the CyberDolls.

Weapons

Kinda cool, or 'cool'.

Water creatures

Feels a bit too earth centric. Earth doesn't have that much to do with the universe as it is 2.2b years into the future.

Bugs (types)

Could perhaps be used as classification names for alien species as well.

Anime characters

Breaks fourth wall in a silly/geeky way.

Gods

-

Mythology

Greek mythology and such is always a classic. Perhaps a bit over used though

Astronomy names

While my game would take place far into the future, probably in a different galaxy, perhaps these names have survived.

Nonsense or conjunctions

This is good because it makes it easier to google for the things in the game. Feels a bit silly though. But then again, I want to put skeletons into the game because they are awesome and especially so if piloting spaceships.

Technological plateau concept

If a more static universe is needed, with no new technologies emerging, the following explanation can be used: Some of the ship designs haven't changed much in centuries. Everything is fairly optimized, or the gains from optimization are to few, and the cost too high, or there's a negative force of some kind of decadence. Another contributing factor can be that of momentum. Anyone who have used a computer knows that programs and hardware needs to be backwards compatible, and it's not always the best version of competing products which sells the most.

Aliens

I found an old text file with silly descriptions of aliens. The home world of an alien race could have special needs (trading lists), and the mixed worlds have the standard industrial/agriculture/entertainment (party world) thing going.

Biot, CyberDoll, Hen-Tai, Root, Rupie, Trybbol, TinMan, Skeleton, Grey, Kopar, Wargoid

BIOTS

The Biots are organic machines. They don't say much, but seem to be friendly. One thing is sure however, they love to party with other species, and often invade in massive numbers. Because they get very exited and deliriously sprawl their long legs, it soon becomes too crowded and chaotic, and the others are forced to leave. This makes the Biots very sad since they hate to party alone.

KOPARS

The Kopars are shelled creatures who enjoy the ways of a strict militaristic society. Their 'superior' parties are very choreographed and ordered establishments (some would call them incredibly stale) where spontainious outbursts are a capital offense. The Kopars believe that throwing 'fun parties' will make them seem less stale, but the effect is often the opposite.

The Kopars wish for nothing more than complete and utter domination of the galaxy, forcing people to obide by their laws, and partying their way. Because of their small stature, slow reactions and failure to execute their plans, the Kopars are often a subject of ridicule.

HEN-TAI

The Hen-Tai are squid creatures that evolved in the ocean but were 'uplifted' by the CyberDolls by genetic manipulation. Disgusted by the decadent desires of their masters, they rose against them and fled to the planet they are now inhabiting. There they are free to enjoy philosophy, science and arts, and of course decent parties.

CYBERDOLLS

The CyberDolls love to party!

ROOTS

The Roots are a species so alien and so strange that it's hard to say anything about them, other that they like to party. At least, that's what it looks like they are doing because they are wearing party hats. When 'partying' they wave their stalks around in a manner so alien and so strange that only themselves and absolute experts on their species have a clue what's going on.

RUPIES

The Rupies are crystal beings, and an advanced and wise race, although somewhat patronizing and authorative. They look down on the ways of other species as 'childish', but when no one's looking they's secretly throwing parties themselves. 'The pond' is their favourite partygame. Each participant gets a rod with a string tied to it. The string is lowered behind a blue veil, where the hidden wise elder attaches a bag of candy to the string and yanks it.

GREYS

The Greys are a mysterious species that have been known to interfere with the natural progression of things. They even claim to have gone back in time to change the shape of the partyhat from cubic to conical, and this way they hope to be able to claim the partyhat patent (by prior art).

SKELETONS

The skeletons are creatures from another dimension. Their mad, grinning, yet empty expression, and 'garhgly hiss' can scare some party guests away. Because of their static facial expression, and stale body language, it's hard to tell whether the skellies are actually enjoying to party, or if they are there doing something else. When not scaring other guests away, the skellies are mostly left standing by themselves, as they are not particularly fun to interact with with their limited vocabulary.

Other aliens

I've also drawn a Tribble and Thargoid, uh, I mean, Trybbol and Wargoid. The Thargoids are interesting. In Frontier there were none, so you just shot down a buttload of pirates. It felt a bit strange to blast so many valuable ships and not gain much of a reputation. Also, most of the ships were needlessly destroyed with not much cargo surviving. Thargoids live in the warp or something and you don't expect them to drop loot or such in the same way as with pirates.

Weapons

2010 additon: Did I write something about weapons? Well, in case I didn't, here are my opinions on that. 'Hitscan' weapons suck because it makes the skill one-sided. The defender has no chance to dodge, other than using over cleverly and there's not a lot of that in space. Slowly moving plasma balls feels intangible and wimpy to me. I liked how the new BSG handled weapons, with the smattering point defense cannons.

I'd like to see something like, 'machine guns', grenade accelerators... tangible and physical stuff like that. I used an approach like this in my Megalonia project (see builds).

Thoughts on destroyed ships

I think it would be interesting to have a mechanic where defeated ships just don't vanish. They could be crippled easily but take more effort to fully destroy. A crippled ship could be touched (docked with), allowing the player to transfer cargo and equipment (Shield units, engines, the works). Maybe the hulls aren't all that valuable, and can broken up or compacted into a cube (like cars are on a junk heap). I already have a piece of code which deals with compacting space junk (all of my entities already know their mass, density, volume, value, gibs and other such details). Since my simulation is persistent, old debris would stay put, unless someone else picks stuff up that is.

So, there are plenty of reasons, some personal, why I wouldn't like to see enemy ships explode into tiny chunks or nothing at all.

It would be difficult to make an engine where you can target different parts of the ship, since some parts are internal and you can't really aim that well anyway... you're lucky if you hit the enemy at all. It would be easy to check if a ship was hit within a certain 'pie' angle though, e.g. the butt/engines. I don't want to write AI for that though, and I think it's a bit too Boolean and game'y.

An EMP device could be used to disable ships, perhaps, or you just put a bullet through it once the shields are down. There are many ways for a car to break down.

Ships in Elite has both Shield and Hull health. Both can be repaired in mid flight. On top of that the equipment aboard the ship can be damaged (including the engines).

Anyways, those are my personal prefs on the subject of exploding things in games.

Crates, asteroids and space debris

Each piece of space debris will know their radius, volume, density (and thus mass). There'll also be a name and a short encyclopedia description. Some stuff can be compacted or converted into other things, like how a car can be pressed into a cube. Old image here though, it was really for another project, so it needs to be adapted.

crates, asteroids and space debris

Short story

Elite has a Novella, so I decided to write something too, despite not being able to write. I'm sorry if it's embarrassing.

Yadri

A large orbital station exits the shadow of the planet Nox-3. The warm light of Nox, a G class sun, picks out the details of the hexagonal space station, and its name, "Bebeba".

The sun light filters through one of Bebeba's many view ports, but doesn't light up the cargo hold inside much, artificially lit as it already it is. Two eyes, human in appearance, takes brief notice of the sunrise.

Zadri, a female humanoid cyborg, sits on top of one of one of the many large crates littering the room, dangling her legs. She is the captain of the cargo ship the Vectrex Pride, a flat polygonal ship which stands 20 meter away on a large airlock hatch.

The exterior of the ship bears a single large scar from a 25mm pulse gun. The hit caused spalling, which destroyed the radar box of the ship. Zadri is a skilled pilot, but even her skills doesn't make up for flying blind in this region of space. Fortunately, Nox is one of the better systems around here to stop for repairs. A large population of Biots, skilled micro mechanicians, inhabit this system. Something which looks like their tongues, but probably isn't, can branch into a tree structure, allowing them to manipulate very small objects. Other than that, the Biots are pretty much just a head with legs.

Half bored, Zadri watches half a dozen Biots take no notice of the "maneuver carefully" warning stripes on the hangar floor, as they busily skitter around on their long and seemingly ungainly legs. Their absurd tripod-like construction had probably been perfect for the task which they had been made for, but no one can even guess what that task could have been. The Biots are the sole surviving remnants of the Failed Dyson Sphere.

Most of the remaining intelligent life forms are like the Biots in a way, Zadri reflects.

Remnants of something.

Without purpose.

Kind of weird.

Perhaps this is what was stopping them from "Dyson-Sphering", unlike most of the naturally evolved species which do it soon after reaching the technological plateau.

Her own mother species, the Homo Sapiens, had constructed the technological singularity (which universally leads to the construction of a Dyson Sphere) mere centuries after going nuclear. Before doing so however, they had, like many other species afraid of "keeping all of the eggs on one basket", sent out ships to colonize the stars. Still, ultimately the solution seems to be to put all the eggs in a single very safe and very large basket.

Zadri never quite knew what to say when people asked about her age. Half a century ago, the Biots had found an ancient "seed ship" at the outskirts of this galaxy. Based on its trajectory and velocity, it was estimated that it had been traveling for 2.2 billion years. The databanks onboard seemed to confirm it.

It had been an advanced ship, and its dissection had yielded many discoveries, Zadri and her kind being one of them.

They were never meant to be fully human, just some sort of durable, barely intelligent scout. The real payload of the ship, the real human seed, had been lost forever in some incident long ago. Some theorize that the humans themselves wiped the seed remotely, right before entering their technological singularity.

Zadri had never liked the label on her kind - "CyberDoll", but apparently the name had come from an entry in the seed ship database. The first CyberDolls which were grown behaved more like non-sentient robots. Turning on autonomy had been easy, once you knew where to look. It was the meddling Greys who had figured where. Other members of the Milieu, such as the Crystalline Rupies and Testudine Kopars wish that they hadn't.

The new, autonomous CyberDolls are considered... eccentric, some would say completely decadent and nonproductive. Still, the CyberDolls are now members of the Milieu, and it's not like the other members aren't eccentric either.

The Biot which had just fallen in front of her was a confirmation of this idea, as it lay there looking silly with its legs sprawling wildly in the air. It reminded her of how the Biots had crashed and ruined her 30th activation party a few years ago.

Yadri wondered if the Failed Dyson Sphere have had some kind of system which specialized in erecting fallen Biots. Actually, the Biots could get up on their own - they just weren't very good at it.

The flex-metal soles of her shoes made an audible clang as she dropped down onto the hangar bay floor.

The flailing long striped legs of the Biot irritatedly got in her face right before she helped it up. Once upright, the Biot responded by curiously blinking twice with it's 3 large eyes before scurrying away across the floor, without saying thanks. It's not like it could anyways. The Biots had their own language of... hollow mechanical clucking sounds, and this particular Biot didn't have a translator.

A group of Biots stood frozen by her ship, studying her briefly before before suddenly moving off in unison. Looks like the repairs were finished. She didn't have enough credits to repair the hull yet. As if caressing, she moves her hand across the surface of the crate she had been guarding.

The distinct 'flerp' sound from a Python gun being fired echoed throughout the hangar bay. Whomever had fired it was not only a lousy shot, but also hadn't researched his, her or its target properly. A bullet had penetrated Zadri's left shoulder plate, and would have severed the arm from her body if she had been a regular organic life form.

Python are guns are designed to be powerful enough to kill most organic beings, without risking penetration of space ship or space station hulls. A CyberDoll however, is grown around a very durable high grade flex-metal frame. When activated it is already familiar with many concepts, as as well as having full motoric control and near lightning speed reactions (quite literally, due to having optical nerves).

At any rate, a hollow point bullet from a Python gun would not be able to damage Zadri's internal frame, especially not after deforming from the shoulder plate penetration first. The flesh wound would heal up in a day or so, leaving no scarring. She'd have to get a new armor piece though, because this set was getting rather dented. This had been the third assassination attempt since she had gotten hold of the crate.

She ducked in behind a crate marked "Exotic Fruit" after catching a glimpse of her assailant.

It was a suited humanoid figure wearing a helmet. Surely a skeleton. The last two had been too. Skeletons have a well deserved reputation as being bounty hunters and pirates. Not all were though, the Galactic President wasn't. It's quite well articulated, as far as skeletons go.

Unlike CyberDolls, skeletons aren't particularly durable, so they rely on bulky external armor rather than an internal one. However, the problem with killing them is that, well, not only are they already dead, they are also difficult to hit. A shot to the chest is likely to just pass straight through, perhaps shattering a rib or two. Shooting them in the head sometimes works, but not always.

The trick is to crush them, or deal a sweeping blow with a VibroBlade. Incidentally, Zadri had bought one right after her first encounter. Cutting through a skeletons suit requires some force though, and Zadri wondered if she'd be able to provide it with one arm temporarily out of commission.

The skeleton made an absurd shrieking-cackling sound as it approached her position. She knew that she should take a few more hits, but there's still a chance she'll be disabled long enough for the skeleton to deal some more severe damage.

This particular skeleton didn't appear to be much of a shot though. She gambled it and jumped out from behind her hiding place. The skeleton was standing about 5 meters away, with the gun raised, but looking straight up. Right above it, a gravity crane had dropped a crate.

With slight disappointment, Zadri stood looking at the suited hand, still clutching the Python gun, which was sticking out from under the crate. Surely inanimate now, she thought, but no Sheriff bounty for me. She looked up and saw a group of Biots dancing about in the crane control room. Their kill.

She watched her crate being loaded onto her ship, then entered the cockpit, her left arm hanging limp and bloody at the side. The itch from the Regen catalyst was worse than the pain from the wound, but it halved the regeneration time so she injected it anyways. She needed to be in top condition for the final part of her journey.

--- Yeah, I'm not sure where this story is going, it's more of a universe description ---

Elite

And now, some Amiga Elite inspired stuff.

Amiga Elite Aliens art


By Niklas Jansson 2009-2010.