doodle/TODO.md
Noah Petherbridge cb02feff1d Add Switches, Fire/Water Collision and Play Menu
* New doodads: Switches.
  * They come in four varieties: wall switch (background element, with
    "ON/OFF" text) and three side-profile switches for the floor, left
    or right walls.
  * On collision with the player, they flip their state from "OFF" to
    "ON" or vice versa. If the player walks away and then collides
    again, the switch flips again.
  * Can be used to open/close Electric Doors when turned on/off. Their
    default state is "off"
  * If a switch receives a power signal from another linked switch, it
    sets its own state to match. So, two "on/off" switches that are
    connected to a door AND to each other will both flip on/off when one
    of them flips.
* Update the Level Collision logic to support Decoration, Fire and Water
  pixel collisions.
  * Previously, ALL pixels in the level were acting as though solid.
  * Non-solid pixels don't count for collision detection, but their
    attributes (fire and water) are collected and returned.
* Updated the MenuScene to support loading a map file in Play Mode
  instead of Edit Mode. Updated the title screen menu to add a button
  for playing levels instead of editing them.
* Wrote some documentation.
2019-07-06 18:30:03 -07:00

2.7 KiB

TODO

Alpha Launch Minimum Checklist

  • Open Source Licenses
  • Doodad Scripts: an "end level" function for a level goalpost.

Blocker Bugs:

  • Sometimes the red Azulians don't interact with other doodads properly, but sometimes they do. (i.e. they phase thru doors, don't interact with buttons or keys).

UI Cleanup:

  • Doodads Palette:
    • Hide some doodads like the player character.
    • Pagination or scrolling UI for long lists of doodads.

Nice to haves:

Release Launch Checklist

Features:

  • Single-player "campaign mode" of built-in levels.
    • campaign.json file format configuring the level order
  • Level Editor Improvements
    • Undo/Redo Function
    • Lines and Boxes
    • Eraser Tool
    • Brush size and/or shape
  • Doodad CLI Tool Features
    • doodad show to display information about a level or doodad.
    • doodad init or some such to generate a default JS script.
    • Options to toggle various states (hidden, hasInventory?)

Shareware Version:

  • Can't draw or edit doodads.
  • Can only create Bounded maps, not infinite ones.
  • Can play custom maps but only ones using built-in doodads.
  • Can not place custom doodads in maps.

Built-in Doodads:

  • Buttons
    • Press Button
    • Sticky Button
  • Switches (4 varieties)
  • Doors
    • Locked Doors and Keys
    • Electric Doors
    • Trapdoors (all 4 directions)

Doodad Ideas

In addition to those listed above:

  • Crumbly floor: Tomb Raider inspired cracked stone floor that crumbles under the player a moment after being touched.
  • Firepit: decorative, painful
  • Gravity Boots: flip player's gravity upside down.
  • Warp Doors that lead to other linked maps.
    • For campaign levels only. If used in a normal player level, acts as a level goal and ends the level.
    • Doodads "Warp Door A" through "Warp Door D"
    • The campaign.json would link levels together.
  • Conveyor Belt

New Ideas

  • New Doodad struct fields:
    • Hidden bool: skip showing this doodad in the palette UI.
    • HasInventory bool: for player characters and maybe thieves. This way keys only get picked up by player characters and not "any doodad that touches them"
    • ``

Path to Multiplayer

  • Add a Player abstraction between events and player characters.
    • Keyboard keys would update PlayerOne's state with actions (move left, right, jump, etc)
    • Possible to have multiple local players (i.e. bound to different keyboard keys, bound to joypads, etc.)
  • A NetworkPlayer provides a Player's inputs from over a network.
  • Client/server negotiation, protocol
    • Client can request chunks from server for local rendering.
    • Players send inputs over network sockets.