
- background intentional - not a traditional roguelike (though that would be fun too) - created as part of a game jam at GVSU
background intentional - not a traditional roguelike (though that would be fun too)
procedural content generation 2d tilemaps entities with tree/list behaviors state machines
- which bullet pattern, how fast, etc.
In philosophy, supervenience refers to a relation between sets of properties or sets of facts. X is said to supervene on Y if and only if some difference in Y is necessary for any difference in X to be possible. (https://en.wikipedia.org/wiki/Supervenience)
$layout_score = ratio of obstacles [0.1, 0.25]% ratio of pain obstacles [0.03, 0.15] ratio of open cells [0.5, 1.0] ratio of obstacles in center [0, 3] diversity of enemy program$ ## shape of room maximize connectivity score chokepoints score clustering score symmetry difficulty_penalty = difficulty_score - target_difficulty difficulty_score = estimate_difficulty() <pre>func estimate_difficulty() -> float: var d = 0.0 d += score_difficulty_space() * 0.25 d += score_difficulty_hazards() * 0.15 d += score_difficulty_chokepoints() * 0.20 d += score_difficulty_aggression() * 0.25 d += score_difficulty_complexity() * 0.10 d += score_difficulty_center_pressure() * 0.05 return clampf(d, 0.0, 1.0)</pre>
  

- potentially even a win condition - 500x500 grid - things are slow
Examples!
BoI: room templates with PCG placement
LttP: hand-crafted Sunless Skies: hand-crafted with procedural elements
Typically, returns a value in [-1.0, 1.0] (p5js uses [0.0, 1.0])
- `n = (0.6, 0.9] -- (x, y) -> grass` - `n = (0.9, 1.0] -- (x, y) -> rock`