Skip to content

Instantly share code, notes, and snippets.

@livvv2k
Created August 17, 2021 21:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save livvv2k/a2aca768f7e612f7ecbe495415cb7081 to your computer and use it in GitHub Desktop.
Save livvv2k/a2aca768f7e612f7ecbe495415cb7081 to your computer and use it in GitHub Desktop.
New RMS Library
* 2D grid flattened to 1D space
* Tiles indexed from 1 to N + 1 where N is mapsize
* Coordinates represented by natural numbers
* Rationale being ease of set operations
* Composed of layers
* layers are sets essentially
* Texturing is ignored while building the terrain
* Placement searching is a non problem as viable locations can always be located via simple set operations, unions, exclusions or intersections
* Texturing is done according to a set of rules applied to the whole map once
* Placing objects in layers doesn't require knowledge of the map, just the relevant layer
* Need full set implementation to efficiently chain multiple operations, `forest union grass exclude puddle`
* Efficiently copyable sets of natural numbers created with buffers of 8 values or tiles
* Each 8 values represented bya group of 8 uint8 numbers. The same buffer is casted to a 64 bit uint to get the set key. Key used to determine equality for structural data sharing copies.
* One large buffer is used with abstractions
* Immutable layers with structural sharing for copies
Features
* Nicer mountains
* Markov chain generated decorations
* Texture priorties
* Pattern learning and reconstruction
* More natural base shapes
* Testable
* No global shared state
* Independent layers when superimposed create the final terrain
* External tools to debug
* Make API non programmer friendly
* Allow to be executed and debugged external to the pyrogenesis engine
* Allow disabling layers in gamesetup, no mountains, no water, no decorations
* Create tools for visual scripting
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment