Created
August 17, 2021 21:41
-
-
Save livvv2k/a2aca768f7e612f7ecbe495415cb7081 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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