an interactive environment for designing 2d sound arcologies with norns and grid
If you are an artist, musician, or arcologist here to use this tool, everything you need to know is in the docs. Join the discussion on lines.
This README is for developers looking to contribute in building arcologies.
The changelog is located here.
- The developer manual video is the fastest way to learn arcologies. It includes a walkthrough of the architecture and deep dives into the most complex parts of the software.
- To learn the codebase, read arcologies.lua and lib/includes.lua.
- Next, skim through keeper.lua, Cell.lua, Signal.lua, and counters.lua.
Cell
andSignal
are the only classes. Signals are primitive. Cells are complex.- config.lua is where signal, cellular, and global behavior is composed.
- Cell traits/mixins are inside lib/mixins. Even though there are many different types of cell structures, they're all just instances of the same Cell class. Changing their structure toggles behaviors and traits on and off (e.g.
cell:change("TOPIARY")
will update the structure of the selected cell, hide the attributes that no longer apply, and activate the topiary attributes). - Saving and loading (
fn.collect_data_for_save()
&fn.load()
) is rudimentary and perhaps fragile. As the project evolves I'd like to take care and keep things as backwards-compatible as possible. May athens.arcology always load!
Contributions are welcome, however I have some pretty firm boundaries about what arcologies is and is not. I recommend watching all the videos in this playlist to get inside my head a bit more. If you have an idea for a significant undertaking that you'd like to contribute, please consider talking with me first. I'd hate to see you pour a bunch of energy into a feature that doesn't align with the vision. That said, I'll consider all feature requests! Thank you.
Software design by Tyler Etters.