1.0.1 • Published 2 years ago

geoside v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

GEOSide

:wrench: Tooling for the GEOSide generative art project by Bejolithic.

About GEOSide

GEOSide is a generative art project where the core rendering code is immutably secured & hosted on the Ethereum mainnet blockchain. The program accepts a unique hash as a seed, and outputs the corresponding artwork using a determinstic generative algorithm.

Hacking & Experimentation

I'm releasing some of the code & tools here to encourage printing, hacking, and experimentation with the GEOSide program, for non-commercial explorations within the community and collectors. The code here allows users to programmatically run the software to generate high resolution outputs, as well as render new iterations beyond the 650 minted editions.

For example: since the GEOSide code is renderer-agnostic (it can run in browser or Node.js), it could be adapted to different display mediums, galleries, and engines (web frontends, e-ink screens, WebGL, mechanical pen plotters, 3D printing, etc).

CLI Tool

The CLI tool for geoside allows users to render a specific iteration of Susbcapes from a hash or mint number. These can be output as PNG, JPG, or SVG format with a specific width and height size.

Installation with Node.js and npm:

npm install geoside --global

On first run, the tool will fetch the code from Ethereum. Subsequent runs are cached for convenience.

Examples:

# render GEOSide #32 (minted) as 512x512
geoside -i 32 -w 512
# render an output from a specific hash
geoside -i 0xd6a58b3f39ac40bc4160bb7153eb1d27f32d0588c29004e19d0a69cfa0d491d8
# render #300 as SVG with a specific filename
geoside -i 300 --format svg --name 300.svg
# render a purely random GEOSide, beyond the 650 minted set
geoside

Details:

Usage:
geoside [options]
Options:
  --id, -i          input hash as 0xXXXX, or mint id number 0..649 (optional)
  --dir, -d         output directory (defaults to cwd)
  --name, -n        file name (defaults to hash)
  --format, -f      file format: png, svg, jpg (default png)
  --resolution, -r  sets the raycast resolution (default 42)
  --width, -w       output width in pixels (default 2048)
  --height, -h      output height in pixels (default 2048)
  --no-log          disables logging
  --no-cache        forces a new fetch from blockchain and disables cache

If only one dimension (width or height) is set, the other dimension will use the same, to produce a square ratio.

Resolution

The algorithm raycasts against the topology to remove lines that are behind peaks/mountain ranges, but to improve this user experience for the online (Live) artwork, I have kept the number of subdivisions low (42). You can increase the resolution (-r flag) to 60-100 during rendering to get higher quality outputs, but the rendering time will also increase exponentially.

geoside -i 335 -r 80

See #335 before and after, for example:

Programmatic API (Node.js/JavaScript)

Work in progress.

Web/Frontend Tools

Work in progress.

Archival Limited-Edition Signed Prints

I am still considering how best to approach bespoke, archival, and signed prints of GEOSide. This may be suitable for collectors who plan to archive and display/exhibit the minted works long-term, and wish to own an artist-certified physical artefact. Keep an eye on my Twitter for details.

Source Code & License

The code in this repository is Open Source MIT, see LICENSE for details.

The resulting PNG/JPG/SVG files produced from the GEOSide algorithm (such as the images that can be downloaded from ArtBlocks) are licensed under CC BY-NC 4.0.

Neither of these licenses covers the code for the GEOSide generative algorithm (which is hosted on the blockchain and not present in this repository). I've chosen not to release this yet code yet, to help maintain my artistic IP over the project and ensure that no third-parties can claim distribution rights over newly tokenized iterations. However, I may decide to publish all of the GEOSide code at a later point, granting a non-commercial license for educational use.