Web-based space trade/exploration/combat game written in Python/Django


= World =

The freelance universe takes place in our galaxy. The world is simplified drastically: no concept of star, star system, etc. The only relevant objects are planets, which are characterized primarily by their coordinates in R^3. Euclidian distance is used to determine distance between planets, and used to compute transit time for space ships.

== Planets ==

Planets themselves, in addition to coordinates, have various other properties useful in other contexts. These properties are determined by a combination of so-called planetary attributes and planet size.

Planetary attributes include things like ''habitable'', ''scientific'', ''industrial'', ''gaseous'', and influence various aspects of planetary life. For example, a gaseous planet gets +1 supply of fuel and +1 demand for metal. A planet's size determines how to distribute the planet's attributes. For instance, if a planet has attributes A, B and C, and size S, the supply and demand of the planet would be determined by computing S*(A+B+C).

=== Interface ===

Planets' attributes are displayed in this screen.

= Travel =

Travel from planet to planet consumes fuel. It also involves a certain amount of real-time waiting. How much fuel and waiting is required is a function of distance travelled, ship mass and engine type. Typically, a player who decides to fly from planet A to planet B will be notified of how long and expensive (in terms of fuel) such a transit will take. Upon agreeing, the player's ship will begin it's route. After the allotted amount of time, the ship will reach its destination, and the fuel will have been spent.

== Transit ==

In between planets, certain interesting things can occur. A ship can be attacked by another ship, or there can be ordinary NPC encounters.

== Interface ==

The player is presented a list of nearby planets, and:

For more detailed planet information, the player must look in the particular planet's detail screen.

Difficulties: 2D nearest neighbours problem. Also, how to present succinctly without using graphics? Inclined to use SVG maps.

= Ships =

Every player controls a state-of-the-art interplanetary vehicle. The vehicle can be upgraded piece by piece to do its various tasks better and faster.

== Upgrades ==

= Trade =

I would like to create a trade system with no actual distinction between good and currency. This would hopefully cause a natural balance of emergence in the Freelance economy. Also, I would like to have an economic model that is as simple as possible, yet fair and challenging for players.

The mechanics of trading is simple. Ships travel from planet to planet, trying to maximize profit by buying low and selling high. Some planets are happy to load you up with goods very cheaply, or even freely. Some planets really want your goods, while others will grudgingly take it for a very steep price.

How much a planet is willing to buy and pay for a good is determined by its attributes, as discussed earlier.