diff --git a/docs/about.md b/docs/about.md index e501178..9e33eff 100644 --- a/docs/about.md +++ b/docs/about.md @@ -1,3 +1,41 @@ # About Project: Doodle -Lorem ipsum. +Project: Doodle is a "drawing-based maze game" themed around hand-drawn mazes +on paper. + +![Screenshot of the level editor](../images/about.png) + +You can draw your own custom maps, freehand or with some basic drawing tools, +and then drag and drop pre-made "[doodads](doodads.md)" into your level for +interactive things like keys, doors and buttons. + +This is an **early alpha build** of the game. Longer term it will include a couple +built-in "single player campaigns" of multiple themed levels, but for now it +just includes a couple example levels and the editor itself. + +## Inspiration + +When I was a kid in the era of Sega Genesys and Super Nintendo, I liked to +draw my own levels with pen and paper and "play" them with my imagination. My +"mouse mazes" had all sorts of features borrowed from videogames I liked. +There were buttons that the player had to push that would open a door far +across the level (and I'd draw a little dotted line showing the connection +between the button and the door). Trapdoors would have the player fall through +and then close behind them so they can't go back. Keys in different shapes +could unlock doors in similar shapes (you'd just have to remember which keys +you've got!) + +When you're drawing with a pen and paper, the level can be anything you want. +You can draw a castle or a cave, place little gizmos and traps throughout the +level (doors, keys, buttons and things) to create puzzles. Do you want the red +pixels to mean "fire" and burn the player? Or do you want to decorate the tops +of "bloody" spikes with red? Either way, the 'fire' attribute on that color will +do the job and you can draw whatever shape you want for your level hazards. + +![Palette editor](../images/palette.png) + +## Mod Friendly + +While the game ships with a [handful of built-in doodads](doodads.md) to +spice up your level, you can also create your own and program them to do +whatever you want, with JavaScript! diff --git a/docs/custom-doodads/edit-in-game.md b/docs/custom-doodads/edit-in-game.md index f26901e..d25c276 100644 --- a/docs/custom-doodads/edit-in-game.md +++ b/docs/custom-doodads/edit-in-game.md @@ -1,27 +1,35 @@ # Drawing a Doodad In-Game -Project: Doodle has some **limited** support to draw your doodad sprites -in-game. Currently you can only draw one frame (image) for the doodad -and save it to disk. +Project: Doodle has support for drawing your custom doodad sprites in-game, +although for now you may find it more comfortable to use an +[external image editor](edit-external.md) instead. -To start a new doodad, open the game and enter the level editor. +To start a new doodad, open the game and enter the level editor. Select the +"File -> New Doodad" menu at the top of the screen. You will be prompted for +the square dimensions of your doodad (i.e. `100` for a 100x100 sprite) and +you can begin editing. -Select the "New Doodad" button at the top of the screen to start drawing a -new doodad. Choose the size (square) of its sprite when prompted. +![Screenshot of the Doodad editor](../images/doodad-editor.png) -Doodads saved in-game go in your user config directory for the game. On Linux, -this is at ~/.config/doodle. +## Layers -If you want to create a doodad with multiple frames (to animate it or have -varying states that change the doodad's appearance in the level), the -`doodad` tool is recommended. See -[drawing images in an external program](edit-external.md). +A key difference between Levels and Doodads are that Doodad drawings can have +multiple **layers**. For doodads these are used to store multiple frames of +animation or different states, such as an opened vs. closed door. + +Clicking the **Lyr.** button on the left toolbar or the "Tools -> Layers" +menu will open the Layers window where you can switch your editor between +layers, add and rename them. Layers can be toggled by the doodad's +[JavaScript code](scripts.md) by index number or by name, so giving each layer +a descriptive name is useful. + +Doodads saved in-game go in your [user config directory](../profile-directory.md) +on your system. ## Future Planned Features Creating doodads in-game is intended to be a fully supported feature. The following features are planned to be supported: -* Support editing multiple frames instead of only the first frame. * Implement some features only available on the `doodad` tool using in-game UI, such as attaching JavaScripts to the doodad. diff --git a/docs/custom-doodads/scripts.md b/docs/custom-doodads/scripts.md index 7f9a2d8..e5081dd 100644 --- a/docs/custom-doodads/scripts.md +++ b/docs/custom-doodads/scripts.md @@ -5,7 +5,12 @@ and ability to interact with the player and other doodads. Doodad scripts are run during "Play Mode" when a level _containing_ the doodad is being played. You can install a JavaScript (.js) file into a doodad using -the command-line `doodad` program. +the `doodad` [command line program](../doodad-tool.md) that +shipped with your game: + +```bash +> doodad install-script index.js filename.doodad +``` An example Doodad script looks like the following: diff --git a/docs/custom-levels/index.md b/docs/custom-levels/index.md index cd9369e..001c95b 100644 --- a/docs/custom-levels/index.md +++ b/docs/custom-levels/index.md @@ -1,6 +1,6 @@ # Creating Custom Levels -One of the core gameplay features is its Level Editor which lets you draw your +One of the core gameplay features is the Level Editor which lets you draw your own custom maps to play and share with others. From the game's Main Menu, click on the "Create a Level" button to open the @@ -12,6 +12,8 @@ button instead. When creating a new level, you first choose some settings for it. These are described below: +![Screenshot of New Level dialog](../images/newlevel-1.png) + ### Page Type This setting controls the size and boundaries of your level, and control the @@ -27,6 +29,8 @@ appearance of the notebook paper background of your level. grow your level. The wallpaper on this level type only uses the "tiling" pattern, so notebook-themed levels won't show the top/left decorations. +You can change these settings later if you change your mind. + ### Wallpaper The wallpaper affects the "theme" of your level. Project: Doodle is themed around @@ -54,46 +58,194 @@ lines pattern. The page types and their effect on the wallpapers are: * **Unbounded** levels only use the repeating tiled pattern across the entire level, because there is no top-left boundary to anchor those decorations to. -## Editor Mode Interface +## Editor Interface -![Level Editor View](../images/editor-1.png) +![Level Editor View](../images/newlevel-2.png) -Quick 5-minute tour of what you're looking at: +This is the level editor. You can click and drag on the blank page and begin +drawing a level. The toolbar down the left has various drawing tools: Pencil +(freehand), Line, Rectangle, Ellipse. The toolbar down the right is your level +palette. You can mouse-over most buttons and see an immediate tooltip appear +that describes what it is. -* The top of the window has your **Menu Bar**: - * **New Level** opens the "Create a New Level" menu. - * **New Doodad** opens the Doodad Editor for drawing a new custom doodad. - You're prompted for the size of the doodad, which will be its width and - height boundary. For example, a size of "100" means a 100x100 pixel graphic - for your custom doodad. - * **Save** and **Save as...** let you save the current Level or Doodad you're - drawing to disk. "Save" will only ask for the filename once whereas "Save as" - asks every time. - * **Load** opens the "Edit a Level" menu to choose a Level or Doodad to edit. - * **Options** options the Level Options dialog so you can modify the page type - and wallpaper setting. +Quick 5-second overview of the editor interface: + +* The top of the window has your [**Menu Bar**](#menu-bar), a common sight on desktop applications. * The panel on the left side of the window is your **Tool Box**. Clicking these buttons activates a specific drawing tool or mode: - * **Pencil Tool** lets you click, drag, and draw pixels of your selected - Palette color onto your level freehand. - * **Line Tool** lets you easily draw a straight line between two points. Click + * + **Pencil Tool** lets you click, drag, and draw pixels of your selected + Palette color onto your level freehand. Shortcut key: `f` + * + **Line Tool** lets you easily draw a straight line between two points. Click in your level where you want the first point to be, and drag your mouse to the second point. Release the mouse to commit the line to your drawing. - * **Rectangle Tool** lets you easily draw rectangles on your level. - * **Ellipse Tool** lets you draw circles or elliptical shapes. - * **Doodad Tool** lets you drag doodads such as buttons and doors onto your - level. See the [Doodad Tool](#doodad-tool) below. - * **Link Tool** lets you link doodads together so that they can interact off + Shortcut key: `l` + * + **Rectangle Tool** lets you easily draw rectangles on your level. Shortcut: `r` + * + **Ellipse Tool** lets you draw circles or elliptical shapes. Shortcut: `c` + * + **Doodad Tool** lets you drag doodads such as buttons and doors onto your + level. See the [Doodad Tool](#doodad-tool) below. Shortcut: `d` + * + **Link Tool** lets you link doodads together so that they can interact off each other. For example, a Button connected to an Electric Door will cause the door to open and close when the button is pressed. See [Link Tool](#link-tool) below. - * **Eraser Tool** cleans up your mistakes. Click and drag over pixels you've - drawn to delete the pixels from your level. - * **Brush Size:** the "Size:" label shows the brush size of your current drawing - tool. This translates to the line thickness, or how big your pixels are when - drawn into the level. Click the + and - buttons to increase or decrease the - brush size, and draw thicker or thinner lines. + * + **Eraser Tool** cleans up your mistakes. Click and drag over pixels you've + drawn to delete the pixels from your level. Shortcut: `x` +* The **Size:** label on the left controls the brush size of your current drawing + tool. This translates to the line thickness, or how big your pixels are when + drawn into the level. Click the + and - buttons to increase or decrease the + brush size, and draw thicker or thinner lines. * The panel on the right side of the window is your **Palette** of colors to - draw with. + draw with. Mouse over a color to see its name and properties -- different + colors may mean different things! + * The **Edit** button will open the Palette Editor where you can change a + color, rename it, and set its properties. See [Color Attributes](#color-attributes) + +--- + +## Palette Editor + +![Screenshot of the Level Palette editor](../images/palette.png) + +Clicking the "Tools" menu and "Edit Palette", or the Edit button on the +palette toolbar on the right side of the screen, will open the palette editor. + +Levels are designed to have a limited color palette, and this is your selection +of colors for the level or doodad you're drawing. You can click on "Add Color" +to create more rows as needed. + +### Color Attributes + +The **Attributes** column toggles behaviors on or off for this color. In the default +color palette, black pixels make up your **solid** level geometry, red pixels are +**fire**, and blue pixels are **water**. + +By default the color will be purely decorative, not physically colliding with the +player or affecting them in any way. + +The attributes and their meanings are: + +* **Solid**: the player character and other mobile doodads will collide against + pixels drawn in this color. Useful for your level geometry. +* **Fire**: if the player touches pixels of this color, they die! +* **Water**: will act like water, currently it just draws the player blue. + +### Changing Colors + +Clicking on the colored square will prompt you to enter a new color in +hexadecimal notation, like `#FF00FF` for magenta +or `#0099FF` for light blue. Colors can +be entered in the following formats (the # prefix is actually optional): + +* 3-digit hexadecimal: `#F0F` or `#09F` +* 6-digital hexadecimal: `#0099FF` or `#FC390E` +* 8-digit RGBA: `#0000FF99` + +You can also set the color to be **semi-transparent** by providing an +additional two hex characters for its alpha channel: + +![Enter an RGBA color value for see-thru colors](../images/palette-rgba.png) + +> Pictured: I have set the "solid" color to #000000**33** giving it an alpha +> value -- making it semi transparent against the level wallpaper. + +## Doodad Tool + +When clicking on the **Doodad Tool** or +pressing the `d` key, the Doodads window will appear in the level editor: + +![Doodads window](../images/doodads.png) + +Doodads are objects you drag and drop into your level to add interactive elements +such as enemies and buttons. Mousing over a doodad will tell you its name, and +the pager buttons at the bottom can show more options. + +Click and drag a doodad from the Doodads window onto your level to place it. + +When the **Doodad Tool** is active on the left toolbar, when you mouse over an +existing doodad on your level, and orange box will appear around it. You may +click and drag to move this doodad somewhere else. Right-click it to remove it +from your level. + +* Left click: move a doodad somewhere else on your level. +* Right click: remove the doodad from your level. + +Doodads provide various useful features to your level: + +* **Keys and Locked Doors** let you place collectible keys around the level which, + when obtained, allow the player to permanently unlock doors of the same color + and open new paths on the level. There are four pairs of keys and doors. +* **Buttons and Switches** let you open and close **Electric Doors** and trigger + other devices to which they are linked. +* **Trapdoors** provide one-way gates; once the door has swung shut, it can not + be entered from the wrong side! + +To connect buttons to control doors, use the + **Link Tool.** + +## Link Tool + +The **Link Tool** +allows you to pair two doodads on your level together. This allows the doodads +to communicate events with each other, for example, so a button can open an +electric door when pressed. + +![Link Tool](../images/link-tool.png) + +This screenshot shows several buttons and switches that are linked to several +electric doors. With the Link Tool selected, mouse over a doodad on your level +and a magenta box appears around it. Click on it, and then click on the other +doodad to pair it to. A glowing magenta line will connect the two doodads +together from then on, showing their connection. + +> **Note:** there seems to be no way to un-link two doodads once linked, +> deleting one from your level and placing a new one will break the links. + +Linked doodads are able to send small messages to their linked partners when +events happen to _them_. For example, when the player character steps on a button +it sends a "power on" signal to the door it's connected to, and the door opens. +When the button is released, it sends a "power off" signal and the door closes. + +See the [Doodads](../doodads.md) page for a description of the game's built-in +doodads and how they interact with each other. + +## Menu Bar + +While editing a level or doodad, a Menu Bar appears at the top of the screen. +Its options include: + +* **File** + * New level (Ctrl-N) + * New doodad + * Save (Ctrl-S) + * Save as... + * Open... (Ctrl-O) + * Close level + * Quit (Escape) +* **Edit** + * Undo (Ctrl-Z) + * Redo (Ctrl-Y) +* **Level** + * Page settings (to change the level type or wallpaper) + * Playtest (P) +* **Tools** + * Debug overlay (F3) + * Command shell (Enter) + * Edit Palette + * Doodads (d) + * Pencil Tool (f) + * Line Tool (L) + * Rectangle Tool (r) + * Ellipse Tool (c) + * Eraser Tool (x) + * Link Tool +* **Help** + * User Manual (F1) + * About ![Doodad Toolbar View](../images/editor-2.png) diff --git a/docs/doodads.md b/docs/doodads.md new file mode 100644 index 0000000..384c8ac --- /dev/null +++ b/docs/doodads.md @@ -0,0 +1,129 @@ +# Doodads + +Project:Doodle comes with several built-in doodads that you can use in your +levels. You may also [create your own](custom-doodads/index.md) custom doodads +and program them to do whatever you want! + +--- + +## Flags + +The **Start Flag** sets the player spawn point in your level. There should be +only one start flag. + +The **Exit Flag** sets a goal point for the level. The player must touch this +flag to win the level. + +--- + +## Trapdoors + +Trapdoors come in four varieties: **Left**, **Right**, **Up**, or down (**Trapdoor**). + +A trapdoor is a one-way passage. If the player or other mobile doodad touches +the door from the "correct" side, the door will swing open. After the mobile +doodad has passed, the door will swing shut again. + +When the door is shut, you can not open it from the "wrong" side and it behaves +as a solid wall. If the door is open you may run in from the wrong side. + +--- + +## Locked Doors & Keys + +There are four pairs of **Colored Locked Doors and Keys** you can use on your level. + +Colored doors are locked and behave as a solid wall until the player or another +mobile doodad "picks up" the Key of the same color. The doors may then be +permanently unlocked if the player walks into them while holding the key. + +Should the player lose the keys later, previously opened doors will remain +unlocked but the player will need to find another key to open more doors. + +Each key/door pair also has a distinct shape: + +* **Red Key** (triangle) +* **Green Key** (cross) +* **Yellow Key** (star) +* **Blue Key** (diamond) + +--- + +## Electric Door + +The sci-fi electric door can only be opened when it receives a "power" signal +from a linked button or switch. See [Linked Doodads](#linked-doodads) below. + +When the door receives a "power: on" signal it will open and allow passage to +the player or other mobile doodads. When it receives a "power: off" signal it +will close. + +--- + +## Buttons + +**Buttons** will emit a "power: on" signal to all doodads that they are +[Linked](#linking-doodads) to when the button is pressed by the player or +another mobile doodad. + +When the button stops being pressed, it will emit a "power: off" signal to +all connected doodads, which will generally close electric doors. + +Buttons come in three varieties: + +* **Button:** a button with a grey arrow that pops back up when pressed. +* **Button Type B:** a variation without the grey arrow but behaves the same. +* **Sticky Button:** a button with a red arrow that stays pressed in once pressed. + +When a sticky button is pressed, it emits a "power: on" signal once and stays +pressed in forever. If the Sticky Button itself _receives_ "power: on" from another +button, it will pop back up. + +--- + +## Switches + +**Switches** will emit a `power: on` signal to [linked](#linked-doodads) doodads +when touched by the player or other mobile doodad, and then a `power: off` +signal when touched again. + +They come in various aesthetic flavors: + +* Wall switch (left, right) +* Floor switch +* On/Off "background" wall switch facing the screen + +--- + +## Crumbly Floor + +The **Crumbly Floor** behaves as a solid ceiling when hit from below, and a +solid floor when walked on from above, but watch out! The floor will shake +and collapse after a moment beneath your feet. + +The floor will respawn after a while and forbids passage from the underside +of the doodad. + +--- + +## State Blocks + +**State Blocks** are blue and orange squares that keep opposite state from one +another. In one state the block is solid, in another it is passable. + +The ON/OFF block will toggle all state blocks on the level to their opposite +setting whenever it's touched by the player or other mobile doodad. + +--- + +## Red Azulian (Test Mob) + +The red Azulian is a test mobile character. Not really an enemy, as he doesn't +care about the player. + +The Azulian's A.I. just has it run left and right until it meets resistance. +It can pick up keys, activate buttons and switches that it passes by, and can +unlock doors. + +This mob will probably go away in future releases of the game and will remain +in the code as a hidden easter egg. diff --git a/docs/experimental.md b/docs/experimental.md new file mode 100644 index 0000000..b204450 --- /dev/null +++ b/docs/experimental.md @@ -0,0 +1,15 @@ +# Experimental Features + +Some upcoming gameplay features that aren't _quite_ working well yet will +be 'hidden' behind some feature flags and not turned on by default. + +To start up the game with ALL experimental features enabled, pass the +--experimental option to the program's command line: + +```bash +# Unix-like environments +$ ./doodle --experimental + +# Windows. +> doodle.exe --experimental +``` diff --git a/docs/hacking.md b/docs/hacking.md new file mode 100644 index 0000000..200206c --- /dev/null +++ b/docs/hacking.md @@ -0,0 +1,172 @@ +# Hacking + +This page discusses some advanced features of the game. + +I've always loved it when developers kept debugging features in their released +games, and playing around with those and figuring out what makes the game tick. +I purposely left some debug features in the game that you can play around with. + +## Developer Console + +Pressing the `Enter` key at any time will open the developer console at the +bottom of the screen (all gameplay logic is paused while the console is open). + +In the console you can type anything from simple commands, to hidden cheat +codes, to JavaScript commands to operate on some of the game's internal code! + +![Screenshot of the developer console](../images/shell.png) + +Pressing `Enter` again without typing a command will close the console. + +## Commands + +At the white **>** prompt you can type a command. Typing `help` will show +a listing of available commands; typing `help` and then a command name will +show further usage of that command. For example, `help echo`. + +The answer to your command is "flashed" in blue text at the bottom of the +screen and the developer console is closed. Pressing `Enter` will re-open the +console and show the recent history, including the answer to your last command. + +``` +>help echo +Usage: echo +Flash a message back to the console +``` + +The following commands are supported: + +* `help`, `help ` + + Shows the list of commands, or further help on a specific command. + +* `echo ` + + Flashes your custom message on the bottom of the screen. + +* `alert ` + + Pop up an alert box modal with a custom message. + +* `new` + + Go to the "New Drawing" screen. + +* `save [filename]` + + Save the current drawing. If the drawing has not been saved + before, a filename is required, including the `.level` or + `.doodad` suffix. + +* `edit ` + + Open a file for editing. The filename is a path on disk relative + to the game's working directory. + +* `play ` + + Open a file for playing. The filename is a path on disk relative + to the game's working directory. A wrong filename will play a + new, blank level where Boy just falls to the bottom of the map. + +* `close` + + Close the current level being edited and return to the title screen. + +* `quit`, `exit` + + Close the developer console (an empty command would also work). + +## Cheat Codes + +Typing these messages in the console will toggle various mundane cheat +codes within the game: + +* `unleash the beast` + + Do not cap the frames per second target of 60, allowing the game + to run as fast as it's capable of. May or may not actually work. + +* `don't edit and drive` + + While playing a level, this makes the level canvas editable and + you can draw new pixels by clicking. Note that drawn pixels do not + "commit" to the level until you release the cursor. + +* `scroll scroll scroll your boat` + + While playing a level, this allows scrolling the level with arrow + keys as if you're editing it. The camera still keeps the player + character in view. + +* `import antigravity` + + While playing a level, this turns off gravity for the player + character. In this state the arrow keys can freely move the + character in any direction. [Relevant xkcd](https://xkcd.com/353/) + +* `ghost mode` + + Disable collision detection for the player character. This + will also enable antigravity, otherwise you would fall to the + bottom of the level. + +* `give all keys` + + Gives all four colored keys to the player. + +* `drop all items` + + Removes all keys and items from the player's inventory. + +## JavaScript Shell + +The developer console also features a JavaScript shell, which exposes +many of the game's internal data types and functions that can be +useful when debugging the game, or just fun to see what you can +break within the game! + +In the developer console, the `eval` or `$` command will run a single +line of JavaScript code. + +``` +>$ 2 + 2 +4 +>$ d.Flash("This is %s", d.Title()) +This is Project: Doodle v0.4.0-alpha +``` + +The following native objects are exposed to the JavaScript shell: + +* `d` is the master game object. +* `function RGBA(red, green, blue, alpha uint8)` creates a native + Color type, each value is range 0 to 255 +* `function Point(x, y int)` creates a native Point type. +* `function Rect(x, y, w, h int)` creates a native Rect type. +* `function Tree(ui.Widget)` prints a tree of UI widgets drawn on the + screen -- if you can find the widgets somewhere under `d` + +``` +>$ RGBA(255, 153, 0, 230).String() +Color<#ff9900+e6> +>$ Object.keys(d) +Debug,Engine,Scene,ConfirmExit,DrawCollisionBox,DrawDebugOverlay,... +>$ typeof(d.Debug) +boolean +>$ typeof(d.Flash) +function +>$ d.Flash("Flash a custom message, like the `echo` command") +undefined +>$ d.EditDrawing("filename.level") +``` + +It helps if you run Project: Doodle itself from a command line terminal, +so you can see its developer console output also on your terminal +window. Using `Object.keys(d)` will show all the exported functions and +variables from the internal game state. + +Understanding that my game's [rendering engine](https://git.kirsle.net/go/render) and +[user interface toolkit](https://git.kirsle.net/go/ui) are open source projects +you can have fun reconfiguring widgets to change colors or whatever. + +![Screenshot of the JavaScript REPL](../images/jsrepl.png) diff --git a/docs/hotkeys.md b/docs/hotkeys.md new file mode 100644 index 0000000..89a967e --- /dev/null +++ b/docs/hotkeys.md @@ -0,0 +1,54 @@ +# Shortcut Keys + +Here are all the hotkeys/shortcuts used within Project: Doodle. + +* [Global Shortcuts](#global-shortcuts) +* [Level Editor](#editor-only) +* [Gameplay](#gameplay-only) + +## Global Shortcuts + +| Key | Action | +|----------|------------------------------------------------------------| +| `Escape` | Exit the application (after confirmation modal). | +| `F1` | Open the Guidebook (this site). | +| `Enter` | Open the [developer console](hacking.md#developer-console) | + +--- + +## Editor Only + +Only while editing a level or doodad: + +| Key | Action | +|----------|------------------------------------------------------| +| Arrows | Scroll the view of the level you're editing. | +| `p` | Playtest the current level (press `e` to edit again) | +| `d` | Open the Doodads window to drop them in your level | +| `f` | Pencil Tool (**f**reehand) | +| `l` | **L**ine Tool | +| `r` | **R**ectangle Tool | +| `c` | Ellipse Tool (**c**ircles) | +| `x` | Eraser Tool | +| `+=` | Zoom in (with [--experimental](experimental.md)) | +| `-_` | Zoom out ([--experimental](experimental.md)) | +| `1` | Reset zoom ([--experimental](experimental.md)) | +| `0` | Scroll level back to origin (0,0) | +| `Ctrl-N` | Create a new level | +| `Ctrl-S` | Save the current drawing | +| `Ctrl-O` | Open a drawing | +| `Ctrl-Z` | Undo | +| `Ctrl-Y` | Redo | + +--- + +## Gameplay Only + +| Key | Action | +|---------|----------------------------------------------------------| +| `Left` | Move the player character towards the left. | +| `Right` | Move the player character towards the right. | +| `Up` | Jump | +| `e` | Return to the level editor (only if you game from there) | + +  diff --git a/docs/images/about.png b/docs/images/about.png new file mode 100644 index 0000000..52c7386 Binary files /dev/null and b/docs/images/about.png differ diff --git a/docs/images/doodad-editor.png b/docs/images/doodad-editor.png new file mode 100644 index 0000000..2c36798 Binary files /dev/null and b/docs/images/doodad-editor.png differ diff --git a/docs/images/doodads.png b/docs/images/doodads.png new file mode 100644 index 0000000..250ab39 Binary files /dev/null and b/docs/images/doodads.png differ diff --git a/docs/images/jsrepl.png b/docs/images/jsrepl.png new file mode 100644 index 0000000..62a3251 Binary files /dev/null and b/docs/images/jsrepl.png differ diff --git a/docs/images/link-tool.png b/docs/images/link-tool.png new file mode 100644 index 0000000..199e438 Binary files /dev/null and b/docs/images/link-tool.png differ diff --git a/docs/images/main-menu.png b/docs/images/main-menu.png index ddd7db1..faddb10 100644 Binary files a/docs/images/main-menu.png and b/docs/images/main-menu.png differ diff --git a/docs/images/newlevel-1.png b/docs/images/newlevel-1.png new file mode 100644 index 0000000..696a307 Binary files /dev/null and b/docs/images/newlevel-1.png differ diff --git a/docs/images/newlevel-2.png b/docs/images/newlevel-2.png new file mode 100644 index 0000000..b90205b Binary files /dev/null and b/docs/images/newlevel-2.png differ diff --git a/docs/images/palette-rgba.png b/docs/images/palette-rgba.png new file mode 100644 index 0000000..5ca17de Binary files /dev/null and b/docs/images/palette-rgba.png differ diff --git a/docs/images/palette.png b/docs/images/palette.png new file mode 100644 index 0000000..ef15d41 Binary files /dev/null and b/docs/images/palette.png differ diff --git a/docs/images/shell.png b/docs/images/shell.png new file mode 100644 index 0000000..2970ef5 Binary files /dev/null and b/docs/images/shell.png differ diff --git a/docs/images/sprites/actor-tool.png b/docs/images/sprites/actor-tool.png new file mode 100644 index 0000000..c7135bb Binary files /dev/null and b/docs/images/sprites/actor-tool.png differ diff --git a/docs/images/sprites/ellipse-tool.png b/docs/images/sprites/ellipse-tool.png new file mode 100644 index 0000000..044de12 Binary files /dev/null and b/docs/images/sprites/ellipse-tool.png differ diff --git a/docs/images/sprites/eraser-tool.png b/docs/images/sprites/eraser-tool.png new file mode 100644 index 0000000..1680502 Binary files /dev/null and b/docs/images/sprites/eraser-tool.png differ diff --git a/docs/images/sprites/line-tool.png b/docs/images/sprites/line-tool.png new file mode 100644 index 0000000..460aff0 Binary files /dev/null and b/docs/images/sprites/line-tool.png differ diff --git a/docs/images/sprites/link-tool.png b/docs/images/sprites/link-tool.png new file mode 100644 index 0000000..bcd27ac Binary files /dev/null and b/docs/images/sprites/link-tool.png differ diff --git a/docs/images/sprites/new-button.png b/docs/images/sprites/new-button.png new file mode 100644 index 0000000..83d8db5 Binary files /dev/null and b/docs/images/sprites/new-button.png differ diff --git a/docs/images/sprites/pencil-tool.png b/docs/images/sprites/pencil-tool.png new file mode 100644 index 0000000..8dd76f6 Binary files /dev/null and b/docs/images/sprites/pencil-tool.png differ diff --git a/docs/images/sprites/rect-tool.png b/docs/images/sprites/rect-tool.png new file mode 100644 index 0000000..00afb2c Binary files /dev/null and b/docs/images/sprites/rect-tool.png differ diff --git a/docs/profile-directory.md b/docs/profile-directory.md new file mode 100644 index 0000000..a3cc9e8 --- /dev/null +++ b/docs/profile-directory.md @@ -0,0 +1,10 @@ +# Profile Directory + +Project: Doodle stores your user-created levels and custom doodads in your +operating system's profile directory for your account. + +This will typically be found at the following locations based on your platform: + +* **Linux:** `$XDG_CONFIG_HOME` or `$HOME/.config/doodle` +* **Windows:** `%APPDATA%` or `C:\Users\%USER%\AppData\Roaming\doodle` +* **Mac OS:** `$HOME/Library/Application Support/doodle` diff --git a/mkdocs.yml b/mkdocs.yml index ddb9696..a0c6dc0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -3,7 +3,15 @@ use_directory_urls: false nav: - Home: index.md - About: about.md - - "Custom Doodads": custom-doodads/index.md + - "Creating Levels": custom-levels/index.md + - "Built-in Doodads": doodads.md + - "Creating Doodads": custom-doodads/index.md + - "Drawing Doodads": custom-doodads/edit-in-game.md + - "Doodad Scripts": custom-doodads/scripts.md + - "Shortcut Keys": hotkeys.md + - "`doodad` Tool": doodad-tool.md + - "Hacking": hacking.md +theme: readthedocs markdown_extensions: - toc: permalink: "#"