Skip to content

Latest commit

 

History

History
260 lines (219 loc) · 8.68 KB

wishlist.org

File metadata and controls

260 lines (219 loc) · 8.68 KB

Release

Trim the fat: cut non-needed, advanced features in order to have a

finished package.

  • Cut multi-games per server
  • Cut ‘eco’ mode

Add tests and squash the bugs

  • Extract and test vector/collision tools

Make the game more intense, more fun

  • Scoring has little meaning: mostly negative scores since deaths > kills. Towerfall scoring might make more sense? Also more intense?
  • Needs more choices, more actions Towerfall has:
    • adjustable jump
    • dodge (mid-air or floor)
    • super jump
    • wall jump
    • wall hug
    • crouch
    • fall / super fall
    • fire arrow (360º)
    • open chest
    • interact with map-specific items

    Sparkets has:

    • power-adjustable bullets (in the direction the ship is facing)
    • turn left/right
    • thrust engine
    • grab bonus
    • use bonus
    • crash on planet/satellite
  • Instant death is tiring if you have to few choices (dodge, shield, run away …)
  • The shield is too long?
  • The mines are too easy to avoid (map too large?)
  • Too easy to hide in a corner and let things play out (radar? smaller map?)
  • Map scaling issues with number of players: too large (no encounters) or too small (chaos)
  • More ways to interact with environment (Towerfall has: wall jump, wall hug, torches, map-specific behaviors; Sparkets has: bullet gravity from planets, crash on planet)
  • When two ships are heading for one another, there is no way to avoid the crash. No mini-boost or side jet to feint the enemy, do a barrel roll and fill its tail with bullets.
  • Tune the risk vs. reward. Going near a ship is riskier, but you should have more chances to take it down, thus score a kill. From a distance, you are safer, but it’s also harder to hit others.
  • Find a mechanism to avoid stand stills. Street Fighter timeout? Bomberman “fill the screen with blocks”? Should make sense in a space setting.

Variety

  • Modes: death matches, teams, rule variants
  • Maps obstacles and scenery. We have planets, but no suns. Or black holes, comets, asteroid belts. A sun could cast shadows on planets and hide ships. A sun could throw up erupting matter when hit by a bullet …

Eye candy

  • Try a camera that does not center on the ship but follows it when it leaves the center (with small inertia)
  • Screen shake on death?
  • Sound! Pew pew pew
  • Needs more things on the screen, especially in the background or on planets.
  • Planets lack volume.

Gameplay

New weapons & items

Machine gun

Rapid-fire weapon but takes longer to kill ships. Go against the one shot/one kill principle of the current gameplay. Could be used for other bonuses like slowdown shots. The player launch burst of tiny projectiles and the more the enemy get shot, the slower he gets.

Portable black hole

Gravity affects bullets and ships. Neat graphical effect required!

Big head mode

Easier to shoot at, harder to slip between planets but kills on contact.

Paintball mode

Spray other ships with your colors! Rating 2 and up.

Mirror image

Copy of the ship that mirror the player, but turn in opposite directions. Fires phony bullets, disappear when colliding something (different explosion visual).

Poisoned mushroom

Shrink or enlarge the ship’s size.

Bonuses tweaks

Visual clue for number of mines in bonus

Charging shield push power

  • Reuse firing key to charge a shield and send push gravity force

Upgrade tracker

Faster. Better. Stronger.

Explode when hit by a bullet or hitting a ship, with such an impact that it projects ships and bonuses around.

Gameplay tweaks

Constrain maximum ship / bullet velocity

The gravity field of shields sometimes sends ships flying to the other side of the map. But, we need this field to be strong enough to repel nearby ships.

Use down arrow

  • Slow down the ship with additional little engines
  • Or quick half-turn

More feedback for kills

We should feel stronger by getting kills. As it stands now, hiding in a hole is a viable game strategy. Let the others kill themselves, and you might just win.

We should reward kills, and not just penalize death. It should be much more satisfying to kill a ship than letting it crash into a planet. “I wanted that kill damnit!”.

Aside from tuning explosion effects (again), we could add a damage bonus whenever a kill is made, or something.

Also, I’d like to see a tally of kills made, by type, at the end of the match. If I killed 3 ships with bullets and 2 with mines, I will see 3 ship icons and two mines. Maybe even use color to signal who I killed.

Environment

Asteroids

Blob-like asteroids slowly drifting across the map. Breaks into smaller asteroids when hit.

Base

Usable as a spawn area when playing with teams. Could take the form of a big planet riddled with tunnels or a more mechanical mothership.

Could be protected with sentries targetting invasive enemy players (this game lacks laser!). At the start of the round, bases are unprotected and players must earn sentries. We could use bonuses as a ressource : players bring them to a dedicated drop zone inside the base to progressively improve the base defense.

Other game modes

Team deathmatch

King of the hill

Highlight one area on the map, every second alive in the area gives one point. Change area after some time.

Courrier / Team courrier

Pick item at A, bring at B, score. Capture the flag but without bases or carefully designed levels.

The man with the golden ship

First player to grab the golden bonus is granted unique powers, others have to shoot him down to grab the bonus and rack up the kills.

Triple team

Three teams, each one having a prey team and a hunter team. The team which kills the most preys wins. A ship can only be killed by a member of its hunter team.

Death race

All ships spawn at the start line, first to finish wins. The map is tailored for the race, with planets on either side (or asteroids fields), and some obstacles on it. Bullets are disabled, as are ship collisions (maybe bump into obstacles and ships). Boosts are mandatory.

Statistics

Session statistics

  • Kills
  • Deaths
  • Score = K - D, compel to avoid kamikazing.

Persistent statistics (with account)

  • Total playtime.
  • Favorite bonuses.
  • Score progression tracking.

Achievements (everybody loves achievements!)

  • National day : Explode X times.
  • Rube Goldberg from outer space : Create a chain explosion of X mines.
  • Anticipating the uprising : Kill X bots.
  • Seasoned space explorer : Play for X hours.
  • An apple a day : Kill every type of bot.
  • Heavy drinker : Be drunk for X minutes.
  • So Roswell : Crash on planets X times.
  • Hope nobody saw that : Shot yourself.
  • Rogue leader : Be at the top of the scoreboard X times.

Interface

Web interface for game creation.

Sanitize input

  • Unique game id.
  • Out of range values.

More info in game list.

  • Max players allowed.
  • Ping.
    • Password-protected or not.
  • Game mode.

More options in game creation.

  • Password.
    • Number of players allowed.
    • Game mode.

Game interface

Scoring

Account for assist kills

  • Shield push
  • Ships under EMP effect

Graphics

Leave some ephemeral traces of fight on planets.

Ships and bullets splatters their colors. À la paintball.

Core

Use an event model where needed.

Ships could emit ‘fire’, ‘death’, ‘explosion’ events, bonus can register them and act safely upon it instead of relying on polling the ship state.

Bonus too could benefit by emitting the ‘effect wears off’ event catched by ships instead of managing the bonusTimeouts explicitly.

While this is a nice pattern, we need to make sure calling listeners is synchronous. If that must be done, use our own synchronous EventEmitter.

Separate state transitions from updates

Get rid of oldState = @state mumbo jumbo. Each transition should have one associated function. When going from ‘alive’ to ‘dead’, stuff that should be done only once will go into this transition function. Stuff that needs to be done at each game update when in the ‘alive’ or ‘dead’ state will stay into the the update function.

Expire deserted games

Prevent objects from spawning onto each other

Rework client drawing.

Find out why Core2 with puny graphic chipset can handle the client fullscreen when beefier hardware can’t.

Send full game update to reconnecting / out of sync clients.

Client should clean everything and start anew from this update.

Use composition instead of inheritance where it makes sense

Filter updates sent to clients

Don’t send update position for an invisible ship.