LADXR icon indicating copy to clipboard operation
LADXR copied to clipboard

[RoomRando]: Ideas

Open foxsouns opened this issue 2 years ago • 2 comments

  • 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:
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: ;
}

foxsouns avatar Dec 29 '22 01:12 foxsouns

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.

foxsouns avatar Dec 29 '22 02:12 foxsouns

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..)

foxsouns avatar Dec 29 '22 04:12 foxsouns