- 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:
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)
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 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" - ``
-
- 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.
It might be cool to support multiple "styles" of level, apart from the current 2D platforming-with-gravity style.
For example a top-down perspective level would let the player freely walk in both axes and would probably have a full set of unique Doodads drawn in that perspective.
Migration path: a GameStyle enum would be added to Levels and Doodads as an integer type, default 0 is the current 2D platformer style, 1 for top-down, etc. -- so existing levels and doodads would default to 0 on upgrade and new levels/doodads would use the new value.