Update notes and feature ideas
This commit is contained in:
parent
e1cbff8c3f
commit
248fa10a5f
47
Ideas.md
47
Ideas.md
|
@ -12,7 +12,7 @@
|
|||
The major milestones of the game are roughly:
|
||||
|
||||
* [x] Prototype: make a simple SDL painting program that does nothing special.
|
||||
* [ ] Simple Platformer: be able to toggle between "edit mode" and "play mode"
|
||||
* [x] Simple Platformer: be able to toggle between "edit mode" and "play mode"
|
||||
and control a character who can walk around your level and bump into the
|
||||
solid geometry you've drawn (no objects yet, just the basics here).
|
||||
* [ ] Add Doodads (buttons, doors, the player character themself, enemies, ...)
|
||||
|
@ -60,6 +60,51 @@ The major milestones of the game are roughly:
|
|||
have some natural limiter where players have to spend time in Play Mode
|
||||
to be able to change the map.
|
||||
|
||||
# Edit Mode Features
|
||||
|
||||
* [ ] A menu bar along the top of the screen with normal drop-down menus.
|
||||
UI toolkit widgets needed:
|
||||
* [ ] Menu: a pop-up menu, like one summoned by a right-click action.
|
||||
* [ ] MenuButton: a Button widget that opens a Menu when clicked.
|
||||
* [ ] MenuBar: a Frame widget that automatically finds the top of your
|
||||
window and makes it easy to fill it with MenuButtons.
|
||||
* [x] A status bar that shows your cursor position and other useful details.
|
||||
* [x] A palette window that shows you your current palette as a series of
|
||||
radio buttons, and you can toggle between the palette choices.
|
||||
* Palettes are saved with the level file and the list is dynamic.
|
||||
* Colors are not tied to behaviors. Each "Swatch" on the palette has its own
|
||||
color and a set of boolean flags for `solid`, `fire` and `water` behaviors.
|
||||
* [ ] User interface to edit (add/remove) swatches from the palette.
|
||||
* [ ] A Toolbox window with radio buttons to select between various drawing tools.
|
||||
* [x] Pencil (the default) draws single pixels on the level.
|
||||
* [ ] Rectangle would draw a rectangular outline.
|
||||
* [ ] Line would draw a line from point to point.
|
||||
* [ ] A way to adjust brush properties:
|
||||
* [ ] Brush size, shape (round or square).
|
||||
* [ ] Tools to toggle "layers" of visibility into your level:
|
||||
* A drop-down menu with options like "Show all solid", "Show all fire",
|
||||
"Show all decoration", etc.
|
||||
* When layers are applied, adjust the way the pixels in the Grid are drawn on
|
||||
screen. Any pixel that doesn't fit the layers requested should draw in a
|
||||
muted color like light grey, and the layers requested should show in a
|
||||
vibrant color.
|
||||
* Use case: a full-color level can have _many_ solid pixels (grass, dirt,
|
||||
walls) rendering in all kinds of colors. But you want to see how the collision
|
||||
burden will be for the level and you can toggle on "Show all solid pixels"
|
||||
and every solid pixel becomes bright red and all the non-solid pixels turn a
|
||||
muted grey. This way I can easily see the difference between the colors and
|
||||
behaviors of the pixels in my level.
|
||||
|
||||
For creating Doodads in particular:
|
||||
|
||||
* [ ] Make a way to enter Edit Mode in either "Level Mode" or "Doodad Mode",
|
||||
i.e. by a "New Level" or "New Doodad" button.
|
||||
* [ ] Create a "frame manager" window to see and page between the frames of the
|
||||
drawing.
|
||||
* [ ] Ability to work on canvases with constrained size (including smaller than
|
||||
your window). This will use a Canvas widget in the UI toolkit as an abstraction
|
||||
layer. Small canvases will be useful for drawing doodads of a fixed size.
|
||||
|
||||
# File Formats
|
||||
|
||||
* The file formats should eventually have a **Protocol Buffers** binary
|
||||
|
|
31
README.md
31
README.md
|
@ -138,34 +138,39 @@ As a rough idea of the milestones needed for this game to work:
|
|||
* [x] Create a user interface toolkit which will be TREMENDOUSLY helpful
|
||||
for the rest of this program.
|
||||
* [x] Labels
|
||||
* [ ] Buttons (text only is OK)
|
||||
* [x] Buttons (text only is OK)
|
||||
* [x] Buttons wrap their Label and dynamically compute their size based
|
||||
on how wide the label will render, plus padding and border.
|
||||
* [x] Border colors and widths and paddings are all configurable.
|
||||
* [ ] Buttons should interact with the cursor and be hoverable and
|
||||
* [x] Buttons should interact with the cursor and be hoverable and
|
||||
clickable.
|
||||
* [ ] UI Manager that will keep track of buttons to know when the mouse
|
||||
* [x] UI Manager that will keep track of buttons to know when the mouse
|
||||
is interacting with them.
|
||||
* [ ] Frames
|
||||
* [x] Frames
|
||||
* Like Buttons, can have border (raised, sunken or solid), padding and
|
||||
background color.
|
||||
* [ ] Should be able to size themselves dynamically based on child widgets.
|
||||
* [ ] Windows (fixed, non-draggable is OK)
|
||||
* [ ] Title bar with label
|
||||
* [ ] Window body implements a Frame that contains child widgets.
|
||||
* [ ] Window can resize itself dynamically based on the Frame.
|
||||
* [ ] Create a "Main Menu" scene with buttons to enter a new Edit Mode,
|
||||
* [x] Should be able to size themselves dynamically based on child widgets.
|
||||
* [x] Windows (fixed, non-draggable is OK)
|
||||
* [x] Title bar with label
|
||||
* [x] Window body implements a Frame that contains child widgets.
|
||||
* [x] Window can resize itself dynamically based on the Frame.
|
||||
* [x] Create a "Main Menu" scene with buttons to enter a new Edit Mode,
|
||||
play an existing map from disk, etc.
|
||||
* [ ] Add user interface Frames or Windows to the Edit Mode.
|
||||
* [x] Add user interface Frames or Windows to the Edit Mode.
|
||||
* [ ] A toolbar of buttons (New, Save, Open, Play) can be drawn at the top
|
||||
before the UI toolkit gains a proper MenuBar widget.
|
||||
* [ ] Expand the Palette support in levels for solid vs. transparent, fire,
|
||||
* [x] Expand the Palette support in levels for solid vs. transparent, fire,
|
||||
etc. with UI toolbar to choose palettes.
|
||||
* [ ] Add a "Canvas" widget that will hold level drawing data and abstract it
|
||||
out such that the Canvas can have a constrained width and height, position,
|
||||
and "scrollable" viewport area that determines rendered pixels. Will be VERY
|
||||
useful for Doodads and working on levels smaller than your window size (like
|
||||
doodads).
|
||||
|
||||
Lesser important UI features that can come at any later time:
|
||||
|
||||
* [ ] MenuBar widget with drop-down menu support.
|
||||
* [ ] Checkbox and Radiobox widgets.
|
||||
* [x] Checkbox and Radiobox widgets.
|
||||
* [ ] Text Entry widgets (in the meantime use the Developer Shell to prompt for
|
||||
text input questions)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user