Code Monkey home page Code Monkey logo

procgen's Introduction

Procedural Generation Experiments

Philosophy

Implemented

  • (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

Main Roadmap

  1. 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
  2. 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
  3. 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
  4. Extend the turtle interpretation
    • Angle jitter
    • Color Palette
    • Invisible lines
  5. Add genetic algorithm or constraint-based algorithm for new LSystem generation
  6. 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_*)

Known Bugs

  • 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

Compiling

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.

Development framework

  • 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
  • Compilation: make and C++17 needed
  • Testing suite: googletest

Releases

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.

Warnings

  • 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)

Completing the framework?

  • Static analysis (Coverity?)
  • Formal documentation (Doxygen?)
  • Automatic cross-compiling?
  • Automatic on-screen serialization?

(Res)sources

Procedural content generation: L-Systems (by Rabidgremlin)

The Algorithmic Beauty of Plants

/r/lsystem

Job Talle – Lindermayer systems

procgen's People

Contributors

epholys avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.