DarkOrbit Done Right

From theGleep.com
Jump to: navigation, search

An HTML5 clone of the game DarkOrbit WikiPedia entry (here)

  • except for the PvP focus
  • all aspects of the game available from the gameplay screen

(No "second" window for buying stuff)

  • "keep-alive" as long as there's some automated system acting
    • being "killed" cancels all automated systems

The game plays as a 2D overhead, with your spaceship in the middle of the game screen. There are multiple maps, with clear boundaries beyond which the ship/player cannot move (enforced as a "radiation hazard" which will kill the ship if the user does not return to the map). "Jump Portals" provide access between maps, as well as a "Jump Drive" which can be purchased with in-game money.

Scattered throught each map are different "prizes" that can be collected:

  • Bonus boxes
  • Minerals
  • Loot (bonus boxes from destroyed ships - loot disappears after a time)
  • Booty (permanent loot which requires a key to access - the keys are very difficult to come by, but can be purchased)

There are other ships that can be fought:

  • Players
  • Aliens
  • Pirates

Quests are given as a way to gain extra in-game money or other prizes (like booty keys)

As a PvP game, there are often competitions between players, and many of the quests encourage combat between players (too much so, in my opinion, as players who would rather play the game peacefully are often destroyed by PvP enthusiasts trying to complete a PvP "quest"). The PvP mindset is encouraged from the start by requiring each player to be part of a "company". PvP quests are usually "do something to someone in another company"



Contents

Notes

Node.js as the server

Reduce use of canvas for rendering - only use canvas for "prepwork" - creating rotations for ships/weapons

  • layer divs and css backgrounds for most display elements

Use an array of orientations for each object/object type

Use a manifest to cache as much of the imagry/background scripting as possible

  • use "most recent modified date of any file" as the "needs to be reloaded" trigger

Features

Non-MMO capable

Story lines are implemented by way of "plots" - a plot is a collection of missions; rewards can be given for plot completion.

Player-provided automation

  • event driven javascript
    • Browser-side
    •  ?Server-side?
  •  ? missions ?
  • Players can "sell" their automations to other players
  • keep player automation from
    • being used to hack the game
    • Overloading the browser
    • Overloading the server

State capture to deal with lost connections

  • avoid allowing it to be used as a cheat
    • only in non-interactive situations?

Team play

  • "clans" must have at least one "carrier" class ship
  • player-to-player chat
  • ad-hoc teams


Equipment

Ships

Different classes of ship provide for different types of equipment

  • Base (unequipped) energy
  • Base (unequipped) speed
  • # of containers of each type
    • Many fuel, few ammo for a fast scout
    • Many ammo for a warship
    • etc
  • # offensive systems
  • # defensive systems
  • # navigation systems
  • # Logic/Automation systems

Containers

Ammo

  • Energy cells
  • Kinetic rounds

Fuel

  • Liquid
  • Electricity
  • Plasma

Cargo

Cargo containers can hold anything:

  • "collection overflow" from usable salvage
  • Resources (minerals)
  • Ships (if the cargo bay is big enough)

Once in Cargo, content cannot be transferred to ship until the ship is "docked"

Landing bays

    • Probes
    • Drones/Bots
    • Ships

Energy Systems

  • All systems require energy - the ship provides a base amount of energy
  • Electricity is the "common" energy
  • Liquid energy creates electricity as (Fuel + electricity) => electricity multiplier
  • Plasma energy systems powered by their fuel - simply converting plasma to electricity
  • Zero-point energy is never stored, but requires electricity to generate; basically, Zero Point Energy Devices (ZPEDs) are electricity multipliers

Offensive Systems

Beam weapons

Kinetic weapons

Motivated weapons

Defensive Systems

Shields

Cloaking

Information Gathering Systems

Radar

Scanners

  • Ship contents
  • Cloaking detection
  • Mineral location

Logic/Automation Systems

Weapons

Navigation

Routing

  • Straight-line
  • Waypoints
  • Obstacle avoidance

Targeting

Friend-or-foe

Chat

  • Global
  • Per-map
  • Per "group"
    • clan
    • outfit


PvP features

Where DarkOrbit has Companies, maybe DODR can have servers? PvP missions can take place on any PvP server other than the "home server". For this, though, players cannot have a non-PvP server as their "home" server (if you play PvP, you have to be available to be attacked).

Maybe it's not such a good idea to have servers marked PvP. Maybe it would be better to have server alliances; players suffer for attacking players in allied servers

Development steps

  • Design
  • Dictionary
  • Equipment
  • Rendering
  • layering
  • scorekeeping
  • state management
  • UI elements
  • Automation
    • "aliens"
    • "Bots"

Design

Movement

(thrust & weight) determines speed

  • ship has base weight
  • equipment adds weight
  • "fuel" adds weight
    • types of fuel
      • Solid
      • Liquid
      • stored energy (batteries)
      • zero-point energy (requires "triggering" energy)
  • thrusters convert fuel to thrust, with different levels of performance
    • Nope...thrusters draw energy to create thrust - this allows a common energy for everything
  1.  ?fuel-specific thrusters?


Economy

  • different value of minerals on different maps
    • the farther the map from the mineral, the more value for the mineral
    • create a *reason* to move into "PvP territory"
    • allow for trade-oriented gameplay
  • "Minerals" are actually collected as "Ore"
    • Ore is sold at a higher price than minerals
    • Ore becomes "minerals" (or materials?) by "Processing"
    • Some ships can trade cargo space for Ore Processing space - which costs energy to operate

Rendering

  • Background picture
    • placement
    • movement
  • Midground picture
    • placement
    • movement
  • Ships
    • animation
    • orientation
    • collision detection
  • Weapon effects
    • animation
    • orientation
    • collision detection
  • Objects
    • animation
    • orientation
    • collision detection
  • interface elements

Layering

Layers provide the mechanism for "click" resolution, as well as visual overlapping

  1. background
  2. midground
  3. objects
  4. ships
  5. weapons
    1. lasers are non-clickable
    2. mines are targetable (but hard to hit?)