group-b-phx/DESIGN.org

2.0 KiB
Raw Permalink Blame History

Design of Group B Pace Notes

Need to figure out how to structure the game loop, it's probably at least one genserver, but the rest of it?

Components

each player is an entity each card is an entity? each stage note is an entity?

Player

Player is a component with an entity id generated by liveview or so it's the "primary" container for each play session

Player has components:

  • StageNote (non-unique, ordered list (how?) of stages to progress through, need to be able to "peek" ahead)
  • Action (non-unique, unordered list of cards with different locations)
  • Throttle (how fast the speed increases)
  • Speed (how fast the car is carried through the current stage note
  • Focus
  • Stage Time (float or so, basically the score)

Stage Note

A stage note is a single pace note entry: straight 30, 5 left don't cut, caution over bumps, etc

  • Active (tag), is this the stage note we are progressing over
  • Max speed
  • required focus
  • Type (straight, esses, curve, hairpin, special)
  • Components to express oddities of the stage, caution, don't cut,

Action

There is a deck of these which a player can spend to take actions on a stage

  • Location (is it being played, in hand, deck, or discard)
  • FocusModifier
  • ThrottleModifier
  • SpeedModifier (use sparingly, game is much more about throttle control)
  • Tags for special cards (for example: this is a cut)

Systems:

How does a player "spend" focus and speed? speed is obvious in the braking and acceleration cards

what is focus used for? the faster you're going the more focus should drain, since you're using more of it to stay on course

more focus could increase look-ahead too? you can listen to the co-driver better? hmm

SpeedSystem

speed += throttle + distance

ActionSystem

Enforces constraints on action cards, makes sure hand size is reasonable, feeds active card to StageNoteSystem

StageNoteSystem

Consumes an active Action, updates Player components accordingly

StageSystem

progresses a Player over a list of StageNotes and makes sure they are still alive, updates stage time