LADXR
LADXR copied to clipboard
[RoomRando]: Ideas
- How are we handling palette shifts?
- Let it break, it's a visual-only issue (no work needed, but ugly)
- Update per room (somewhat simple fix in asm i think? just make each room remember what it's supposed to be, shift every entrance, and default to old behavior for any oob roomshifts)
- Modes:
- Full (all rooms share the same pool: any room can connect to any)
- Half Separated (overworld pool, caves/inside/dungeon mixed pool)
- Full Separated (like rooms share the same pools: overworld pool, caves pool, inside pool, dungeons pool)
- Overworld (overworld pool only: do not randomize other pools)
- None
- Mode toggle:
- Match ends (connect all left sides to right sides, all up sides to down sides)
- We should have a logic file for rooms, like
logic/overworld.py- maybe use grid references (
a1,b5, etc), and comment rooms (# graveyard connector left side,# 5 chest game cave top) - we could use this in the actual logic files instead in order to combat redundancy, and make it more accurate: several entrances in logic do not account for roomrando
- logic for what they connect to/have (
D7_PILLAR SWITCH_TILES, SWITCH_HIT, None, NO_CONNECT, OR(FEATHER, SWITCH_HIT) # room properties, then requirements: left, up, right, down)- we should actually have this disconnected, that looks very ugly to read. something like:
- maybe use grid references (
room.add("a1", "d1_moldorm_spawn_room") { # referrable by either
information: "HAS_CHEST";
room_type: "DUNGEON";
cas_item: "SWORD";
#cas_up: ; # when no change, comment out or dont include
#cas_down: ;
#cas_left: ;
#cas_right: ;
item: "OR(r.attack_moldorm)"
up: "None";
down: "SWORD";
left: "BOMB";
right: "None";
hard_item: "$[self.item], BOMBS";
#hard_up: ;
#hard_down: ;
#hard_left: ;
#hard_right: ;
#glitched_item: ;
#glitched_up: ;
#glitched_down: ;
#glitched_left: ;
#glitched_right: ;
#hell_item: ;
#hell_up: ;
#hell_down: ;
#hell_left: ;
#hell_right: ;
}
i'm willing to put the actual work into refactoring and setting up rooms, but i need some help with setting up the kind of code you want here (this is YOUR repository, after all), and what decisions to make; and i do not know GBasm, so i wouldnt be of any use there.
problem: screen positions meshing with doors will require a teleport function, or some check to make sure they share an accessible tile
edit: ideas:
- keep viable positions for rooms with the new room format: make sure one of the tiles overlap before putting rooms together
- spider-web-like generation, from the start to the end, and each connected room from the origin takes the entrance properties (transition size&location) from the first connected room (if that makes sense..)