Skip to content

Commit

Permalink
Various fixes & docs updates
Browse files Browse the repository at this point in the history
  • Loading branch information
mbrlabs committed Aug 18, 2024
1 parent 7adeecb commit 53ad554
Show file tree
Hide file tree
Showing 12 changed files with 111 additions and 146 deletions.
4 changes: 1 addition & 3 deletions docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@

## General
This guide is loosly based on [Godot's contributing guidelines](https://github.com/godotengine/godot/blob/master/CONTRIBUTING.md):
- Use the latest stable release: Godot 3.5.x
- We use Godot 4.3-stable
- If you want to implement a big feature, open an issue or a [Github discussion](https://github.com/mbrlabs/Lorien/discussions) so we can talk about it first
- Format your commit messages with readability in mind


## Codestyle

- Adapt to the project's coding style
- Use C-style logical operators: `&&`, `||`, `!` instead of `and`, `or`, `not`
- Use function separators (see any `.gd` file in this repository for examples)
Expand Down
72 changes: 72 additions & 0 deletions docs/manuals/manual_v0.7.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Lorien Manual v0.7.0-dev

Drawing tablets are supported and recommended, but you can also just use Keyboard+Mouse.

## Basic Usage
- Draw with the left mouse button (<kbd>LMB</kbd>) or with your drawing tablet's pen
- Pan/drag across the canvas with the middle mouse button (i recommend to map a button on your pen to the middle mouse button for easy navigation)
- Zoom with the mouse wheel. You can also zoom while holding <kbd>CTRL</kbd> and the middle mouse button <kbd>MMB</kbd> while moving the mose up/down. This is especially useful when using a drawing tablet with a pen.
- You can open files by dragging them into the window or by opening it via the menu (Shortcut <kbd>CTRL</kbd> + <kbd>O</kbd>)

## Tools
Lorien provides you with different tools which you can find in the toolbar. If you want to enable a tool all you have to do is click on it or use the keyboard shortcut. If you hover over the icons you can also see a short description including the keyboard shortcut.

### Brush Tool
- The brush tool is selected by default. It allows you to freely draw on the canvas with your mouse or drawing tablet.
- You can change the brush size with the adjuster in the toolbar
- The brush color can be changed by clicking on the colored button in the toolbar next to the brush size adjuster
- It is pressure sensitve

### Rectangle Tool
- You can use the rectangle tool to create perfect (unfilled) rectagles
- Not pressure sensitive

### Line Tool
- Allows you to draw perfect lines
- You can hold down <kbd>Shift</kbd> while using the line tool to snap the line in 15° increments
- Not pressure sensitve

### Circle Tool
- Allows you to draw perfect ellipses and circles
- You can hold down <kbd>Shift</kbd> while using the circle tool to draw perfect circles. Otherwise it defaults to ellipses
- Not pressure sensitve

### Eraser Tool
- Allows you to erease brush strokes by drawing over it. Once the eraser intersects with a brush stroke, the whole brush stroke will be removed
- The brush size affects the area of effect
- When using a stylus/pen that supports erasing with the other side, Lorien automatically switches into the eraser mode

### Selection Tool
- With the Selection tool you can select a number of brush strokes by dragging across the screen with your <kbd>LMB</kbd> pressed. Brush strokes which are considered inside the selection recatangle will be added to the current selection. You can add more strokes to your current selection by holding down <kbd>Shift</kbd> while dragging.
- You can deselect your current selection by pressing <kbd>RMB</kbd> or <kbd>Esc</kbd>.
- To move the selected strokes simply drag them while holding down <kbd>LMB</kbd>. If you did not move your mouse while pressing <kbd>LMB</kbd>, everything will be deselected automatically.
- Press <kbd>Delete</kbd> to delete the current selection
- Press <kbd>CTRL</kbd> + <kbd>C</kbd> to copy the current selection
- Press <kbd>CTRL</kbd> + <kbd>V</kbd> to paste the copied brush strokes
- Press <kbd>CTRL</kbd> + <kbd>D</kbd> to duplicate the current selection

## Color Palettes
- Color palettes allow you to easily switch between different pre-defined colors. To open the pallete you have to click on the colored button in the toolbar next to the brush size adjsuter.
- You can add/edit/delete custom color palettes
- The default color palette can't be edited or deleted. If you want to customize it you can can make a copy of it and edit that instead.

## Keyboard shortcuts
- <kbd>Ctrl</kbd> + <kbd>S</kbd>: Saves the current file
- <kbd>Ctrl</kbd> + <kbd>N</kbd>: Open a new file
- <kbd>Ctrl</kbd> + <kbd>O</kbd>: Open a new empty tab
- <kbd>Ctrl</kbd> + <kbd>E</kbd>: Opens the SVG export dialog
- <kbd>Ctrl</kbd> + <kbd>Z</kbd>: Undo a brush stroke
- <kbd>Ctrl</kbd> + <kbd>Y</kbd>: Redo a brush stroke
- <kbd>Ctrl</kbd> + <kbd>C</kbd>: Copy selected brush strokes
- <kbd>Ctrl</kbd> + <kbd>V</kbd>: Paste copied brush strokes
- <kbd>Ctrl</kbd> + <kbd>D</kbd>: Duplicate selected brush strokes
- <kbd>B</kbd>: Brush tool
- <kbd>R</kbd>: Rectangle tool
- <kbd>E</kbd>: Eraser tool
- <kbd>L</kbd>: Line tool
- <kbd>C</kbd>: Circle tool
- <kbd>S</kbd>: Selection tool
- <kbd>Esc</kbd> or <kbd>RMB</kbd>: Deselect everything
- <kbd>Delete</kbd>: Deletes selected brush strokes
- <kbd>Tab</kbd>: enter/exit distraction free mode (no UI)
- <kbd>F12</kbd>: Spwans a playable character at the mouse position who can walk on the drawn lines (easteregg)
62 changes: 1 addition & 61 deletions docs/roadmap.md
Original file line number Diff line number Diff line change
@@ -1,63 +1,3 @@
# Roadmap

This file provides an overview of the direction this project is heading. There is no timeline attached to milestones, because i don't know much i'm going to work on this in the future and how much people are willing to help.

## Milestone 1 - Basic functionality and stability
There are still a lot of placeholders in the program. While i did my best to implement as much features as possible before i made the project public, there is still a lot to do. This is a list of features which i would expect from a program like this (and which are not implemented yet):

- Basic shape tools (rectangle, line, maybe a circle/oval)
- Color picker tool (picks colors from brush strokes on the canvas)
- Persist last opened projects, so you don't have to reopen files between program restarts
- Different themes (at least 1 dark and 1 light theme)
- Cleanup UI
- More settings (max zoom level, zoom speed, min/max brush size etc.)
- Improvements to project tabs (currently custom ui; maybe replace with Godot's `Tabs` to take advantage of scrolling and reordering)
- Improve the brush stroke filter and optimizer
- Improve zooming
- `Save as` functionality
- Stability across all platforms + bugfixing
- Stabilize savefile format (can still change later (before 1.0) but hopefully not as much)
- Improve the logo. I'm actually pretty proud of myself for the current logo, but i'm sure it can be improved. It's supposed to be a leaf by the way ;)
- Maybe setup unit tests? I have never done that in Godot, but it's worth checking out early on in the project
- i18n
- etc.

## Milestone 2 - Improve rendering & performance

### The problem
For the first iteration of the project i used Godot's built-in Line2D to render the brush stokes. Because of this built-in functionality i had a working prototype ready in less then a day. Line2D basically has everything i need:

- Renders lines of (almost) arbitrary length
- Variable width through the use of a Curve (useful for pressure sensitivity)
- Different colors
- Can do anti-aliasing (not ideal though; more on this later)
- Can leverage Godot's 2D batch rendering system for performance

But there are also some issues:
- Out of the 2 anti-aliasing methods provided none work perfectly:
1. Line2D's `antialiased` property uses an OpenGL hint to draw smooth edges. OpenGL drivers are not required to implement hints, and in fact most don't, so it may work on my machine but not on yours. If it works, it looks really nice, but it's also pretty slow compared to the other method.

2. Line2D has the ability to fill the rendered line with a texture. If you make a texture in a way that the edges have very low opacity, you can fake anti-aliasing. This is pretty fast and works on every system, but it looks kind of bad when you zoom in really far. This can maybe worked around with by switching between different textures based on the camera zoom level, but it's not ideal either.

- Using Line2D's `width_curve` for drawing pressure sensitive lines is kind of wonky (the line literally wobbles when it's very long (only while still drawing; i.e. adding points))

### Solution 1: GDNative plugin or custom module
Implement a custom system for:
- Line meshing (can reuse a modified version of Godot's LineBuilder which is used internally by Line2D). This should fix the `width_curve` wonkiness.
- Line rendering with custom static batching; also use the VisualServer directly (should improve performance by a lot)
- Anti aliasing. Have to research different AA algorithms and see how feasable it is to implement them in Godot
- Streaming brush strokes in/out based on view frustrum insead of keeping Line2D nodes in scene tree?

### Solution 2: ?
Something simpler than going native would be nice.


## Milestone 3 - More features (all optional)
- Implement a selection tool to select and move multiples strokes.
- Implement a brush stabilizer (can optionally be enabled for the brush tool)
- Color palettes / list of previously used colors
- Export functionality (png, jpg, svg)
- A grid
- Layers (pretty sure i'm NOT going to implement this, because you don't even have opacity (by design) and you can just create a new `.lorien` file instead)
- A ruler
- etc.
The old roadmap is for the most part implemented or obsolete. So this needs to be updated at some point :)
27 changes: 26 additions & 1 deletion lorien/Assets/I18n/de.txt
Original file line number Diff line number Diff line change
Expand Up @@ -123,4 +123,29 @@ ALERT_DELETING_BUILTIN_PALETTE Built-in Farbpaletten können nicht gelösch
SAVE Speichern
DISCARD Verwerfen
CANCEL Abbrechen
DELETE Löschen
DELETE Löschen

# -----------------------------------------------------------------------------
# Action names
# -----------------------------------------------------------------------------

ACTION_shortcut_save_project Datei speichern
ACTION_shortcut_new_project Neue Datei
ACTION_shortcut_open_project Datei öffnen
ACTION_shortcut_undo Undo
ACTION_shortcut_redo Redo
ACTION_shortcut_brush_tool Pinsel Werkzeug
ACTION_shortcut_line_tool Linien Werkzeug
ACTION_shortcut_eraser_tool Radiergummi
ACTION_shortcut_select_tool Auswahl Werkzeug
ACTION_shortcut_rectangle_tool Rechteck Werkzeug
ACTION_shortcut_circle_tool Kreis Werkzeug
ACTION_shortcut_export_project Datei exportieren
ACTION_deselect_all_strokes Aktuelle Auswahl entfernen
ACTION_delete_selected_strokes Aktuelle Auswahl löschen
ACTION_copy_strokes Kopieren
ACTION_paste_strokes Einfügen
ACTION_duplicate_strokes Auswahl duplizieren
ACTION_toggle_distraction_free_mode Zen modus aktivieren
ACTION_toggle_player Easteregg
ACTION_toggle_fullscreen Vollbildmodus
44 changes: 5 additions & 39 deletions lorien/Assets/I18n/en.txt
Original file line number Diff line number Diff line change
@@ -1,31 +1,5 @@
LANGUAGE_NAME English

# -----------------------------------------------------------------------------
# Action names
# -----------------------------------------------------------------------------

ACTION_shortcut_save_project Save project
ACTION_shortcut_new_project New Project
ACTION_shortcut_open_project Open Project
ACTION_shortcut_undo Undo
ACTION_shortcut_redo Redo
ACTION_shortcut_brush_tool Brush tool
ACTION_shortcut_line_tool Line tool
ACTION_shortcut_eraser_tool Eraser tool
ACTION_shortcut_select_tool Selection tool
ACTION_shortcut_move_tool Move tool
ACTION_shortcut_rectangle_tool Rectangle tool
ACTION_shortcut_circle_tool Circle tool
ACTION_shortcut_export_project Export project
ACTION_deselect_all_strokes Deselect all strokes
ACTION_delete_selected_strokes Delete selected strokes
ACTION_copy_strokes Copy
ACTION_paste_strokes Paste
ACTION_duplicate_strokes Duplicate strokes
ACTION_toggle_distraction_free_mode Toggle distraction free mode
ACTION_toggle_player EFF TWELVE
ACTION_toggle_fullscreen Toggle fullscreen

# -----------------------------------------------------------------------------
# Menu strings
# -----------------------------------------------------------------------------
Expand Down Expand Up @@ -89,7 +63,7 @@ SETTINGS_KEYBINDINGS Keybindings
SETTINGS_PRESSURE_SENSITIVITY Pressure Sensitivity
SETTINGS_CONSTANT_PRESSURE Constant Pressure?
SETTINGS_BRUSH_SIZE Default Brush Size
SETTINGS_PROJECT_FOLDER Default Project Folder
SETTINGS_PROJECT_FOLDER Default save/load folder
SETTINGS_GRID_SIZE Grid Size
SETTINGS_LANGUAGE Language
SETTINGS_THEME Theme
Expand Down Expand Up @@ -164,34 +138,26 @@ DELETE Delete
# Action names
# -----------------------------------------------------------------------------

ACTION_shortcut_save_project Save project
ACTION_shortcut_new_project New Project
ACTION_shortcut_open_project Open Project
ACTION_shortcut_save_project Save file
ACTION_shortcut_new_project New file
ACTION_shortcut_open_project Open file
ACTION_shortcut_undo Undo
ACTION_shortcut_redo Redo
ACTION_shortcut_brush_tool Brush tool
ACTION_shortcut_line_tool Line tool
ACTION_shortcut_eraser_tool Eraser tool
ACTION_shortcut_select_tool Selection tool
ACTION_shortcut_move_tool Move tool
ACTION_shortcut_rectangle_tool Rectangle tool
ACTION_shortcut_circle_tool Circle tool
ACTION_shortcut_export_project Export project
ACTION_shortcut_export_project Export file
ACTION_deselect_all_strokes Deselect all strokes
ACTION_center_canvas_to_mouse Space
ACTION_delete_selected_strokes Delete selected strokes
ACTION_copy_strokes Copy
ACTION_paste_strokes Paste
ACTION_duplicate_strokes Duplicate strokes
ACTION_toggle_distraction_free_mode Toggle distraction free mode
ACTION_toggle_player EFF TWELVE
ACTION_toggle_fullscreen Toggle fullscreen
ACTION_canvas_zoom_in Zoom in
ACTION_canvas_zoom_out Zoom out
ACTION_canvas_pan_up Pan up
ACTION_canvas_pan_down Pan down
ACTION_canvas_pan_right Pan right
ACTION_canvas_pan_left Pan left

# -----------------------------------------------------------------------------
# Kebindings dialog messages
Expand Down
9 changes: 0 additions & 9 deletions lorien/Assets/I18n/it.txt
Original file line number Diff line number Diff line change
Expand Up @@ -135,26 +135,17 @@ ACTION_shortcut_brush_tool Strumento Pennello
ACTION_shortcut_line_tool Strumento Linea
ACTION_shortcut_eraser_tool Strumento Gomma
ACTION_shortcut_select_tool Seleziona Strumento
ACTION_shortcut_move_tool Muovi elemnti
ACTION_shortcut_rectangle_tool Strumento Rettangolo
ACTION_shortcut_circle_tool Strumento Cerchio
ACTION_shortcut_export_project Esporta progetto
ACTION_deselect_all_strokes Deseleziona tutti i tratti
ACTION_center_canvas_to_mouse Centra lo spazio di lavoro in base al cursore
ACTION_delete_selected_strokes Elimina i tratti selezionati
ACTION_copy_strokes Copia i tratti
ACTION_paste_strokes Incolla i tratti
ACTION_duplicate_strokes Duplica i tratti
ACTION_toggle_distraction_free_mode Abilita la modalità senza distrazioni
ACTION_toggle_player EFF TWELVE
ACTION_toggle_fullscreen Schermo intero
ACTION_canvas_zoom_in Aumenta lo zoom
ACTION_canvas_zoom_out Diminuisci lo zoom
ACTION_canvas_pan_up Aumenta la panoramica
ACTION_canvas_pan_down Diminuisci la panoramica
ACTION_canvas_pan_right Mostra la panoramica destra
ACTION_canvas_pan_left Mostra la panoramica sinistra


#---------------------------------------------------------------------------
# Keybindings dialog messages
Expand Down
8 changes: 0 additions & 8 deletions lorien/Assets/I18n/pt-BR.txt
Original file line number Diff line number Diff line change
Expand Up @@ -142,25 +142,17 @@ ACTION_shortcut_brush_tool Pincel
ACTION_shortcut_line_tool Ferramenta Linha
ACTION_shortcut_eraser_tool Borracha
ACTION_shortcut_select_tool Ferramenta de Seleção
ACTION_shortcut_move_tool Ferramenta de Movimento
ACTION_shortcut_rectangle_tool Ferramenta Retângulo
ACTION_shortcut_circle_tool Ferramenta Círculo
ACTION_shortcut_export_project Exportar Projeto
ACTION_deselect_all_strokes Desmarcar todos os traços
ACTION_center_canvas_to_mouse Centralizar no mouse
ACTION_delete_selected_strokes Deletar traços selecionados
ACTION_copy_strokes Copiar traços
ACTION_paste_strokes Colar traços
ACTION_duplicate_strokes Duplicar traços
ACTION_toggle_distraction_free_mode (Des)ativar modo livre de distrações
ACTION_toggle_player (Des)ativar jogador
ACTION_toggle_fullscreen (Des)ativar Tela Cheia
ACTION_canvas_zoom_in Ampliar Imagem#Zoom in
ACTION_canvas_zoom_out Retrair Imagem#Zoom out
ACTION_canvas_pan_up Mover para cima
ACTION_canvas_pan_down Mover para baixo
ACTION_canvas_pan_right Mover para a direita
ACTION_canvas_pan_left Mover para a esquerda

# -----------------------------------------------------------------------------
# Kebindings dialog messages
Expand Down
9 changes: 1 addition & 8 deletions lorien/Assets/I18n/tr.txt
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ DELETE Sil
# -----------------------------------------------------------------------------
# Action names
# -----------------------------------------------------------------------------

ACTION_shortcut_save_project Projeyi Kaydet
ACTION_shortcut_new_project Yeni Proje
ACTION_shortcut_open_project Projeyi Aç
Expand All @@ -141,25 +142,17 @@ ACTION_shortcut_brush_tool Fırça aracı
ACTION_shortcut_line_tool Çizgi aracı
ACTION_shortcut_eraser_tool Silgi aracı
ACTION_shortcut_select_tool Seçim aracı
ACTION_shortcut_move_tool Taşıma aracı
ACTION_shortcut_rectangle_tool Dikdörtgen aracı
ACTION_shortcut_circle_tool Çember aracı
ACTION_shortcut_export_project Projeyi dışa aktar
ACTION_deselect_all_strokes Tüm vuruşların seçimini kaldır
ACTION_center_canvas_to_mouse Boşluk
ACTION_delete_selected_strokes Seçili vuruşları sil
ACTION_copy_strokes Kopyala
ACTION_paste_strokes Yapıştır
ACTION_duplicate_strokes Vuruşlarıkopyala
ACTION_toggle_distraction_free_mode Dikkat dağıtmama modu
ACTION_toggle_player EFF TWELVE
ACTION_toggle_fullscreen Tam Ekran
ACTION_canvas_zoom_in Yaklaştır
ACTION_canvas_zoom_out Uzaklaştır
ACTION_canvas_pan_up Yukarı kaydır
ACTION_canvas_pan_down Aşağı kaydır
ACTION_canvas_pan_right Sağa kaydır
ACTION_canvas_pan_left Sola kaydır

# -----------------------------------------------------------------------------
# Kebindings dialog messages
Expand Down
Loading

0 comments on commit 53ad554

Please sign in to comment.