- Highly interactive
- Climbing the ladder of abstraction
- (Simple) L-systems
- (Simple) Turtle interpretation
- Static GUI to display parameters
- Dynamic GUIs to interact with the parameters
- Basic and necessary user interactions (mouse dragging, adding, removing, copy-pasting)
- Saving and loading LSystems to and from files
- Complete system of colors
- Polish before the first release
- Remove all the windowing/GUI bugs
- Polish the imgui interface
- Remove frictions and limitations of the save/load GUI
- Add low-hanging fruits optimization
- Reinforce the save files parsingx
- Remove a maximum of code smells
- Add automation:
- Loading file from command-line
- Generating image(s) from command-line
- Adding a second/alternative layer to generate save files without hacking the polymorphism
- Make the generated vertices pretty (growth, visual effects) (example in dev.time and dev.width)
- Growth as the turtle order, recursion order, …
- Rectangle of different widths for recursion
- Shaders
- Extend the turtle interpretation
- Angle jitter
- Color Palette
- Invisible lines
- Add genetic algorithm or constraint-based algorithm for new LSystem generation
- Extend the L-System
- Parametric L-System
- Context-sensitive L-System
- Stochastic L-System
- Parameters for each interpretation order (step for go_forward, delta_angle for turn_*)
- The GUI sometimes become irresponsive
- Correct zoom level and drag behaviour when resizing window (in Gnome)
- Sometimes clicking outside of the windows makes the view jump
Make sure you have SFML installed, a C++17 compiler (with std::filesystem support), and make.
Simply type make optimized
:).
Other make recipees are documented in the Makefile.
- Environment: debian sid chroot with these development packages:
g++ make git libsfml-dev googletest gdb valgrind
- Dependencies:
- SFML / 2.5.1 / Website / installed from packages /
- googletest / 1.8.1-3 / Github Repository / installed from packages
- dear imgui, / 2018-11-23 / Github Repository / cloned from the repository / included in the repo
- imgui-sfml / 2018-11-23 / Github Repository / installed via the instructions from the README.org of the repository / included in the repo
- GSL (Guidelines Support Library) / 2018-05-21 / Github Repository / cloned from the repository / included in the repo
- cereal / 1.2.2 / Website / downloaded from the website / included in the repo
- Coding rule: ISO C++ Core Guidelines with GSL
- Difference: Allman indentation Style
- Difference: When using ImGui ; ImGui style of coding
- Compilation:
make
and C++17 needed - Testing suite: googletest
The dev branch is where the main line of work is conducted, a commit in this branch may not compile, the application may not behave properly, the tests may not pass, and the code may not be tested, or documented. The master branch is assured to compile, the application works as intended (except for known bugs), all the test passes, and the code is documented. However, the features may not be complete.
- The save format is not yet stable, the save files may not be compatible between two commits. It is however possible to manually edit them to support the new features. the ‘saves’ directory will always be populated with valid examples.
- The API is not stable (and will probably never be, as this is a software and not a library)
- Static analysis (Coverity?)
- Formal documentation (Doxygen?)
- Automatic cross-compiling?
- Automatic on-screen serialization?
Procedural content generation: L-Systems (by Rabidgremlin)