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:
|
The major milestones of the game are roughly:
|
||||||
|
|
||||||
* [x] Prototype: make a simple SDL painting program that does nothing special.
|
* [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
|
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).
|
solid geometry you've drawn (no objects yet, just the basics here).
|
||||||
* [ ] Add Doodads (buttons, doors, the player character themself, enemies, ...)
|
* [ ] 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
|
have some natural limiter where players have to spend time in Play Mode
|
||||||
to be able to change the map.
|
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
|
# File Formats
|
||||||
|
|
||||||
* The file formats should eventually have a **Protocol Buffers** binary
|
* 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
|
* [x] Create a user interface toolkit which will be TREMENDOUSLY helpful
|
||||||
for the rest of this program.
|
for the rest of this program.
|
||||||
* [x] Labels
|
* [x] Labels
|
||||||
* [ ] Buttons (text only is OK)
|
* [x] Buttons (text only is OK)
|
||||||
* [x] Buttons wrap their Label and dynamically compute their size based
|
* [x] Buttons wrap their Label and dynamically compute their size based
|
||||||
on how wide the label will render, plus padding and border.
|
on how wide the label will render, plus padding and border.
|
||||||
* [x] Border colors and widths and paddings are all configurable.
|
* [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.
|
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.
|
is interacting with them.
|
||||||
* [ ] Frames
|
* [x] Frames
|
||||||
* Like Buttons, can have border (raised, sunken or solid), padding and
|
* Like Buttons, can have border (raised, sunken or solid), padding and
|
||||||
background color.
|
background color.
|
||||||
* [ ] Should be able to size themselves dynamically based on child widgets.
|
* [x] Should be able to size themselves dynamically based on child widgets.
|
||||||
* [ ] Windows (fixed, non-draggable is OK)
|
* [x] Windows (fixed, non-draggable is OK)
|
||||||
* [ ] Title bar with label
|
* [x] Title bar with label
|
||||||
* [ ] Window body implements a Frame that contains child widgets.
|
* [x] Window body implements a Frame that contains child widgets.
|
||||||
* [ ] Window can resize itself dynamically based on the Frame.
|
* [x] Window can resize itself dynamically based on the Frame.
|
||||||
* [ ] Create a "Main Menu" scene with buttons to enter a new Edit Mode,
|
* [x] Create a "Main Menu" scene with buttons to enter a new Edit Mode,
|
||||||
play an existing map from disk, etc.
|
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
|
* [ ] A toolbar of buttons (New, Save, Open, Play) can be drawn at the top
|
||||||
before the UI toolkit gains a proper MenuBar widget.
|
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.
|
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:
|
Lesser important UI features that can come at any later time:
|
||||||
|
|
||||||
* [ ] MenuBar widget with drop-down menu support.
|
* [ ] 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 Entry widgets (in the meantime use the Developer Shell to prompt for
|
||||||
text input questions)
|
text input questions)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user