diff --git a/README.md b/README.md index d979894..a8eb9fd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,35 @@ # Doodle +Doodle is a drawing-based maze game written in Go. + +# Features + +(Eventually), the high-level, user-facing features for the game are: + +* **Draw your own levels** freehand and then play them like a 2D platformer + game. +* In **Adventure Mode** you can play through a series of official example + levels that ship with the game. +* In **Edit Mode** you can draw a map freehand-style and lay down physical + geometry, and mark which lines are solid or which ones behave like fire. +* Drag and drop **Doodads** like buttons, doors and keys into your level and + link them together so that buttons open doors and levers activate devices. +* In **Play Mode** you can play your level as a 2D platformer game where you + collect keys, watch out for enemies, and solve puzzles to get to the exit. +* Easily **Share** your custom maps with friends. + +## Mod-friendly + +* Users can create **Custom Doodads** to extend the game with a scripting + language like JavaScript. The sprites and animations are edited in-game + in Edit Mode, but the scripting is done in your text editor. +* In **Edit Mode** you can drag custom doodads into your maps. +* To **Share** your maps, you can choose to **bundle** the custom + doodads inside your map file itself, so that other players can play + the map without needing to install the doodads separately. +* If you receive a map with custom doodads, you can **install** the doodads + into your copy of the game and use them in your own maps. + # Milestones As a rough idea of the milestones needed for this game to work: @@ -17,15 +47,23 @@ As a rough idea of the milestones needed for this game to work: * The PNG I draw looks slightly different to what you see on the SDL canvas; maybe difference between `Renderer.DrawLine()` and my own algorithm or the anti-aliasing. -* [ ] Create a custom map file format (protobufs maybe) and "screenshot" the +* [x] Create a custom map file format (protobufs maybe) and "screenshot" the canvas into this custom file format. -* [ ] Make the program able to read this file format and reproduce the same +* [x] Make the program able to read this file format and reproduce the same pixels on the canvas. ## Platformer -* [ ] Start implementing a platformer that uses the custom map format for its - rendering and collision detection. +* [ ] Inflate the pixel history from the map file into a full lookup grid + of `(X,Y)` coordinates. This will be useful for collision detection. +* [ ] Create a dummy player character sprite, probably just a + `render.Circle()`. In **Play Mode** run collision checks and gravity on + the player sprite. +* [ ] Get basic movement and collision working. With a cleanup this can + make a workable **ALPHA RELEASE** +* [ ] Wrap a Qt GUI around the SDL window to make the Edit Mode easier to + work with, with toolbars to select brushes and doodads and junk. +* [ ] Work on support for solid vs. transparent, fire, etc. geometry. * [ ] ??? # Building