forked from blkerby/MapRandomizer
-
Notifications
You must be signed in to change notification settings - Fork 1
/
todo.txt
340 lines (334 loc) · 21.4 KB
/
todo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
v104:
- DONE?: handle framesRemaining: "auto".
- add more "carry shinecharge" strats.
- handle `unlocksDoors`?
- heated shinespark tiles, update preset shinespark tiles
- main street shinespark frames need some looking into: "frames": 35 doesn't make sense?
- spoiler map: fix escape route
- make sure cross-room notable strats actually check the setting for the notable
- make "f_DefeatedBombTorizo" free
- fix OOB when leaving Kraid Room from right during fight
- set up functional testing to check seed generation succeeds in reasonable time across random settings.
priority:
- add leaveRunningBlue exit condition (matching with comeInShinecharging)
- refine GT logic: not in logic with 7E+4R and 5 Supers, Grapple.
- clean up how door locks are modeled (including gray doors)
- clean up how cross-room strats are implemented
- proposal: eliminate implicit strats that cross through a door: exit/entrance conditions become only way to cross rooms.
- consider options to start with Wrecked Ship powered on, and/or Zebes awake (maybe in Max QoL)
- make start locations and hub locations only use door nodes
- that way much less risk of getting broken (or made unsound) by logic changes
- map pools with movable toilet
- look into possible quicksave/load patch (like save states but not emulator-dependent)
- could work better with music: continue playing same song or start from beginning if different
- could retain game timer shown in credits
- could retain map progress
- could get overwritten when using a save station, to prevent accidental quickloads from losing lots of progress
- add door flags to refine logic
- logic:
- mama turtle right item is basic with no items. is this ok?
- post croc farm room with ice to get to top left is basic. should be "canTrickyUseFrozenEnemies" or "canCameraManip"?
- look at area-themed palettes again:
- seaweed in main street with norfair palette
- platforms in climb with brinstar palette
- add more hazard doors when walljump is turned off (or collectible)?:
- left door to ridley
- left door to West Ocean (gravity suit door)
- assume filler items are collected, when determining hard locations for key items?
- for key items, skip options that are filler (including already-placed semi-filler)?
- link to twin room in logic room pages.
- indicate g-mode regain mobility in logic pages.
- wait until after g-mode migration has made substantial progress.
- adjust heat damage multipliers?
- add physics/heated override to runway geometry
- fix toilet to restore x position on exit?
- leniency for shinecharge frames
- add robots.txt for dev service
- clear SRAM more fully when saved seed does not match:
- save slot position is apparently being retained (e.g. starting with cursor on slot 3)
- proper saving/loading of custom presets
- revamp strat page:
- embed the video directly near the top?
- collapse the room diagram
- make tech and notable strat names in the Generate page link to the corresponding logic page.
- need special handling for reusable notables though
- List notable strats in the main logic page.
- add a logic page for each difficulty tier (similar to the sections within the Generate page)
- clarify gate glitch leniency: that it doesn't apply to Pink Hopper Room gate
- consider prioritizing item placement at closer item locations relative to previous key item(s)
- split off toilet from aqueduct
- speed booster hall: heat frames could be slightly less?
- set up a more robust way for users to save & select presets
- overhaul two-phase randomization/customization process
- create ROM in customization only
- move input ROM off Generate page (and into separate dialogue that only shows on first use).
- convert tech/strat AVIs to WebM & WebP (using ffmpeg CLI)
- WebM/VP9 for full playback using HTML5 <video>
- WebP for thumbnails
- use image-rendering: pixelated
- logic: add some 3-room shinecharge strats to logic (ones that can work with existing schema)
- add notable for underwater canGateGlitch (Very Hard)?
- remove old-format farms and refills from sm-json-data?
- make hub requirements consistent with new farm approach?
- actually probably don't need to define hub rooms anymore:
- just check for ability to refill each resource type from the start location and get back
- logic pages (tech/room/strat): add way to fill out items/flags/resources/obstacles to simulate logic
- take another look at boss fights
- create table to show in help button, to make boss logic more transparent (in addition to showing formulas)
- 5 Super phantoon fight probably needs more requirements than it currently has.
- add objectives:
- Larvas: 4 special items (replacing missiles)
- Random?
- Improve save station balancing
- Define "distance" in a way that accounts for ease of access (e.g. possible item/tech dependencies)?
- Improve area clustering
- investigate resource_multiplier bug that happened in Osse's seed with resource_multiplier=8:
- https://maprando.com/seed/isnUf9YjIhvW-BJFrvFuyw/data/visualizer/index.html
- (was from enemykill not using multiplier)
- Fix bug with cross-room jump?:
- spoiler shows no logical path out of draygon until later than expected:
https://maprando.com/seed/O4j4-NDrcwckyTtJMVqxdw/data/visualizer/index.html
- Slow progression item placement bug?:
- supers placed on same step as Screw, although Missiles still available as filler:
- https://maprando.com/seed/HwuYziIJUh-sCUM0YCAPRA/data/visualizer/index.html
- possibly related: issue where filler items are re-randomized when trying new key item.
- maybe re-randomizing is ok, but on success it should try replacing key item with Missile (instead of having Missile be first key item tried)
- fix quick reloading from bottom/top of elevator (to not skip back a save)
- handle canShinesparkWithReserve in randomizer (and remove it from being ignored)
- incrementally build graph traversal with increasing difficulty tiers, acquiring flags in the process.
- will allow better accounting of the difficulty of boss fights in forced mode
- should be faster too
- improved spoiler log route
- show objective progress in pause menu (also zebes awake, phantoon defeated)?
- or maybe make objective X's fade after collection?
- help buttons for rest of settings (e.g. explain boss proficiency calculations)
- logic simulator
later:
- handle sba attacks in "enemyKill"
- "fast cutscenes" QoL option?:
- fast big boy cutscene
- fast MB
- fast saves, refills, maps?
- item collection
- "item fanfare" option?
- QoL preset "Minimal" above "Off"?
- consider "Other option" for shinespark not to drain energy
- bug reported by somerando: on vanilla MB, escape sequence starts immediately on reload, instead of waiting for you to move.
- also, death by waiting the escape timer out will load to previous save
- "flashing" customization option?
- "friendly" map pool option that tries to put easier rooms closer to ship, harder rooms further away
- Vanilla items option?
- Vanilla doors option?
- lots of logic stuff to sort through
- combining with non-vanilla map would be particularly challenging:
- would need to change how boss gray doors are implemented
- would need to mark the color of the opposite side of doors somehow, to warn against softlocks
- not sure it would be worth the trouble
- logic: for strats that require coming in with Screw Attack (e.g. Mickey Mouse Room bottom, Blue Hopper Room) we need to
come in with normal physics from the other room
- model the bridge doors in West Ocean properly (can be used for bypassing locks on bottom-left/right doors)
- remove dead code for drawing lava/acid on map tiles.
- strats to add to logic:
- tricky dash jump to get out of alcatraz with Morph + HiJump + SpeedBooster only (no wall jump or bombs)
- ice clip through crumble in Green Brin Main Shaft? (in case internal door is not blue)
- add notable (Medium) for reverse shaktool
- spore spawn plasma SBA
- enemy stuck moonfalls in Pink Brin Power Bomb and West Ocean
- R-mode forced stand-up clips (needs testing):
- GT Room
- double chamber: right side (CF grapple clip too), if no walljumps
- Acid Statue Room (no need for HiJump)
- Mickey Mouse Room (alternative to CF grapple clip?)
- West Ocean (alternative to ice clip?)
- Wrecked Ship East Super Room: alternative to CF clip (farm the Coverns)
- PCJR: up through crumble? (not sure if this can work, since enemy hit kills momentum and crumble respawns. If it works, where you can jump back up before crumble respawns, then CF clip would probably also work)
- moondance in Bowling Alley top
- mosaic visual cues etc.:
- InnerCrateria:
- Metal Pirates
- top left of East Cac Alley, brick edge is wrong
- Wasteland fake bricks (replace with pipes?)
- Big Pink too many fake tiles in transition between fungal and brick
- make item music tracks consistent, to eliminate music restarts that can happen between two item rooms
- fix palette fade issue when entering MB room from left (Mother Brain starts from white?)
- possibly bad idea: should getting map station add arrows to other maps (ones leading into current map)?
- see if we can do something about silent snails with Zebes asleep music
- for forced mode, also use tier below Basic?
- enhancements to momentum conservation patch
- remove need to be holding dash or to be in spin
- reset speed boost counter whenever momentum conservation comes into play, to avoid making it too easy to get blue
- retain speed when turning around with spin?
- on ground, retain horizontal speed when unmorphing
- by pressing up (or jump, if spring ball not equipped) while holding forward
- in air, retain horizontal speed when soft unmorphing while holding forward
- add animated GIFs on room/tech/strat pages for notable strats.
- maybe overhaul how randomization/customization phases work: run customization on client (with Rust WebAssembly?)
- make it so that customization can use matching version from when the seed was generated
- include more options for customization
- ROM won't need to be provided for generation, only customization
- handle runways with conditional physics (Volcano Room, Amphitheatre, East Pants Room)
- check why Tourian Escape Room 1 runway isn't allowing Speedball strat into Wrecked Ship Main Shaft (on Expert)
- remove invisible solid tile in Tourian Escape Room 1, above transition
- maybe move enhanced Samus controls into separate option (instead of Max QoL)?
- enforce tech dependencies:
- e.g. enabling "canPreciseWalljump" should enable dependency "canWalljump"
- disabling "canWalljump" should disable dependent "canPreciseWalljump"
- gravity seems to provide 50% heat reduction on elevator ride? (Remove this.)
- https://clips.twitch.tv/RepleteShyManateeTBTacoLeft-Ip5vQynrc0SQYQUj
- maybe during acid chozo drain too?
- change how cross-room logic works?:
- unify cross-room strats to go under links, with annotations on the cross-room state (in new strat properties)
- replaces "initiateRemotely", allows obstacles and one-way cross-room paths to be handled properly
- minimal items mode:
- could go in pending "Wild" item progression preset (along with option to allow items to be potentially required to be used in their return path)
- taking into account objectives & MB requirements, replace unneeded items with nothings (e.g. empty Missile container)
- keep item dots as they would have been (mixture of different possible types)
- there's no longer a guarantee that every room can be eventually reachable
- maybe allow customizabilty of which items can be removed:
- some people might still want to get certain items (e.g. beams)
- consider "friendly reserve tank behavior" QoL option in max:
- manually refilling to full doesn't empty the remaining reserves (requested by zero318)
- i-frames don't expire during reserve? (though this would break double-damage boost strats)
- no heat damage during reserve refill
- maybe?:
- energy recharge stations also refill reserve energy
- collecting etank also refills reserves?
- (not part of QoL:) fix crash when pausing on frame when auto reserve triggers
- See existing patch for some of these: https://metroidconstruction.com/resource.php?id=418
- consider bot-friendly API
- "wild" item progression mode, where new item may be required to be used for the return path.
- consider idea from selicre: "what if there was a mode in which walljumps could be unlocked by visiting etecoons (and shinesparking by visiting dachora)?"
- custom demos
- include a check that the client and server are matching versions and give a more meaningful error when they aren't
- look into botwoon requirements:
https://maprando.com/seed/-yvSvwjFlrfJN1NRxDi-Jw/data/visualizer/index.html
- QoL option for save station fast travel (in Max)?
- investigate problem when using quick reload (L+R+Select+Start) while unpausing with 0 energy.
- investigate: ridley gray door closed when reserve triggered (in sapphron seed)
- fix escape timer tech mapping to use reverse Amphitheatre notable for can_acid_dive
- model improvement:
- try using localized output: use token that room is placed in, instead of applying attention across all tokens
- try nvidia transformer engine
- increase model size, probably decrease pass factor and buffer size
- try again using action values, to reduce the amount of computation needed
- when tile above Samus gets explored (in speedways) make it get revealed too
- fix missing Samus tile in Bomb message box (issue with map tile expansion patch)
- add logic override for strat to run under tourian blue hoppers from left (except with ultra-low QoL)
- fix: arrow map tile down to toilet doesn't get revealed (when it crosses areas)?
- logic: killing 3 musketeers with ice should require patience?
- fix toilet tile in botwoon's hallway with "vanilla map" option.
- handle 3-room shinesparks
- at least basic case where using two-room combined runway to get a charge then jump into a 3rd room
- should be representable with canLeaveCharged having a canComeInCharged requirement (180 frames)
- in trickier cases, the frames in canLeaveCharged could depend on frames remaining in canComeInCharged
- we could add a field in canComeInCharged "relativeFrameRemaining" for this
- make kraid camera act normal when entering from left
- same thing with spore spawn entering from bottom
- handle (steep) slopes in runway length calculations
- 10 super botwoon should be possible in Expert (and 30 missile in Insane?)
- possibly adjust some of the transition marker letters:
- make the right part of the N thicker (possibly make it 7 pixels wide?)
- make M and W be 7 pixels wide.
- Mirror them to put the gap in the correct place?
- but if it has tiles on both the left & right, what do we do?
- keep it 6 pixels?
- maybe make Mother Brain Room reveal all its tiles (and maybe explore them too? but probably not), to be more consistent with the other boss rooms
- on the other hand, what about minibosses and other objectives? maybe just leave all this alone?
- fix save animation colors (area-themed color looks a little bad?)
- logic: metroid tank damage may need to be higher without some tech (multiplier doesn't apply)
- fix how spoiler map sometimes won't show escape route
- see if it is possible to prevent song changes from messing up enemy behavior
- fix problem with disappearing typewriter text when pausing as escape sequence starts
- add a tip that you can share a seed using the URL.
- logic (maybe): moondance (bowling alley), tas dance (green brin shaft)
- make graph traversals faster by using previous step for initial local states (probably not worth it?):
- we'd have to do a full graph traversal to get spoiler route as a separate step, to avoid getting weird long paths
- in sm-json-data: use Ship refill in G-mode strats:
- for strats that enter G-mode into Landing Site, use it, and then go back out still in G-mode
- replace Botwoon Hallway portion of Toilet level data with something more neutral
- also remove the enemies from the Botwoon Hallway part
- fix gray door after mother brain when entering baby kraid (& metal pirates, boss rooms, etc.?)
- add patch for handling crashes? (to display the stack & registers)
- if possible, debug crash in Mt. Everest from Scottycro42 (https://clips.twitch.tv/DarlingSavageDogeMcaT-zgV9PF33MiawTpL2)
- oats seed Apr 1:
- main street shinespark energy
- kronic boost heatframes
- metal pirates hitbox doesn't need plasma
- take double-hits into account correctly with reserve energy.
- check if pants room internal door connects correctly in logic
- add option (enabled on Challenge) to not treat tanks as filler items anymore after giving Varia (including the step where giving Varia)
- maybe more general option to postpone unneeded filler items aside from missiles
- spoiler visualizer improvements (see GitHub issue)
- find some way to have forced mode take into account difficulty of defeating bosses (and other flags)
- for each flag, identify its tier using just the flag edge (not redoing a full graph traversal)
- then for the item placement, have the graph traversal treat that flag not as free but as whatever difficulty it was.
- fix graphics in door transitions?
- fix (sometimes?) glitched right door in GT. X-Ray showed a plasma beam inside it
- adjust elevator heatFrames when fast elevators enabled
- make quick reload work while in pause menu?
- refine cross room shinesparks:
- slopes
- consider overhauling how cross-room logic is encoded:
- canComeInCharged should be in a special part of the "node" (symmetric to "canLeaveCharged"), not in "links"
- same thing for adjacentRunway
- since "can" sounds like a tech, maybe we should rename these "enterCharged", "enterWithRunway", etc. (later we can have
"enterWithSpeedball" and other things), and symmetrically, "exitCharged", "exitWithSpeedball", etc.
- This is cleaner, reduces need for preprocessing, and would cut out the possibility of expressing invalid things
like requiring multiple adjacentRunway from different nodes in the same strat.
- improve slow-progression logic: allow item progression by unlocking way back
- don't immediately place filler items at one-way reachable locations
- instead check that when a key item is placed at a previously one-way-reachable location, the item would not have provided
a way back at an earlier step?
- fix spoiler log for reverse paths using shinesparks, G-mode, etc.
- fix bug where suit color does not change when changing suits while taking damage (e.g. lava dive)?
- fix bug where music is wrong after quick reload (even after going to next room).
- clean up the web service, to reduce the amount of boilerplate plumbing settings around.
- figure out why some rooms are dark (some FX other than palette FX?)
- fixes/improvements to area palettes:
- add back palette FX glows using correct palettes.
- fix palette in Crocomire cutscene when wall collapses
- fix cutscene between MB1 and MB2
- fix background during Ridley fight
- During escape, block backward path using room setup ASM instead of door ASM (so it can still work after leaving room another way)
- when going into room with no doorcap (e.g. escape room 1, glass tunnel) fix how gray door appears:
- shift to the right a tile.
- maybe use wall PLM instead of gray door
- or, possibly better idea: don't spawn a gray door or wall, just have it take you into post-MB-fight state of MB room
(like escape auto-save does).
- make separate option for patching out major glitches?
- include GT code, Spacetime beam (currently patched out)
- make OOB cause instant death?
- others
- Add way to export settings from seed page (and export/import on main page).
- Better validation/error-handling of web service
- push more validation into client
- Add note to strat in Post-Crocomire farming room to get to top-left with HiJump
(run on platform enemy and jump)
- Use separate worker pool to run randomization (to avoid blocking web requests)
- Rust cleanup:
- Use `serde_json` instead of `json` crate for loading sm-json-data.
- Clean up error handling: get rid of a bunch of remaining unwrap()'s, etc.
- Make Gravity-only Samus palette different from Gravity+Varia.
- Figure out how this can work with custom sprites.
- Consider rejecting cases where the set of bireachable item locations grows too slow or too fast.
- move GFX colors:
- Morph Ball room (blue brinstar), tileset 7:
- [0x31, 0x32, 0x33] -> [0x38, 0x39, 0x3A]
- fix tiny bug: when bottom-left door of landing site is an area transition, the arrow shows up from the beginning
of the game (due to running the door ASM while loading the game)
- fix internal checksum in output ROM
- fix suit graphics not showing after getting suit (consequence of skipping animation)?
- have forced mode take into account return path?
- probably bad idea, because returning may not be required (before getting another item that makes it easier).
- Do something about Crocomire funny map behavior (especially when entering from left door)?
- "Random" objective?
maybe someday?:
- minimizer mode? (select rooms to include randomly, hand-picked, and/or user-selected)
- make map rando for other hacks (e.g. project base, subversion?)
- would be a lot of work. we could invite others to help implement the logic
rejected ideas (probably):
- set boss flag immediately when boss dies.
- balance boss distribution (one boss per area, corresponding to vanilla?)
- consider moving the MB barriers to the right one tile (or two?), to make them interfere less with ice zeb skip.
- Option for anti-softlock patches (e.g. in Moat, Early Supers, etc.)?
- disable acid trigger in Leodox room?