forked from blkerby/MapRandomizer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtodo.txt
More file actions
241 lines (235 loc) · 16.4 KB
/
todo.txt
File metadata and controls
241 lines (235 loc) · 16.4 KB
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
v121 or soon-ish?:
- Fix references to the "Ship" on seed page, with non-Ship start location.
- Filter item lists on seed page, to exclude inapplicable walljump and booster items.
- handle blue suit interaction with farms.
- fix flash suit carry in return route (add logic scenario test).
- handle spark booster logic for low-speed shinecharges.
- handle "grounded" property of leaveWithSpark
- DONE: new escape timings
- DONE: Fix door lock skips showing in the wrong difficulty on logic pages.
- DONE: Also G-mode regain mobility
- Fix MSU handling of statues hallway music?
- Update music in unthemed single-door rooms (in case neighboring room has Statues Hallway music)
- See if it is possible to play Statues Hallway music even when music is otherwise disabled.
- Consider patching the Speed Booster Hall lava trap behavior to depend on Speed Booster equipped.
- in which case, patch the helper "h_SpeedBoosterHallNoRisingLava".
- DONE: Fix room names in start locations JSON.
- DONE: New area assignment modes:
- Add "Vertical" area assignment
- Add option to put Mother Brain in Tourian.
- fix issue with G-mode regain mobility strats showing in Basic.
- validate presets other than top-level
- DONE: fix issue with toilet in Pants Room: https://discord.com/channels/1053421401354285129/1053434532973510748/1456503543451095061
- DONE: fix issue with door-specific FX in room to right of Pants Room.
- DONE: investigate/fix issue with farm logic: https://discord.com/channels/1053421401354285129/1053434532973510748/1456854298087395408
- blue suit logic
- handle leaveWithRunway heat frames carefully
- for runway not at door node, be sure to require canDash or more heat frames, if applicable
- probably just require `from_exit_node=true` for more entrance conditions (e.g. comeInWithBombBoost)
- options for friendlier save/map locations?
- Handle Phantoon flag better (e.g. for small maps, or non-bosses objectives)?
- Option: if Phantoon is not an objective, start with WS power on
- Or if Phantoon does not exist, remove risk-loss-of-access in power-off strats.
- Handle the new wallJumpAvoid property on strats and notables:
- This identifies strats/notables that are only useful when playing with the "Collectible" wall jump option.
- So by default we could hide these (on the Generate page as well as in logic pages), to reduce clutter.
- Controls would need to be available, with 3 settings: to hide the wallJumpAvoid strats, to show them exclusively, or to show everything.
- Logic work (sm-json-data):
- Finish adding cross-room temp blue strats and remote runway setups/applications in Norfair
- Add missing remote runway strats in pink brinstar hopper room left side
- Populate wallJumpAvoid throughout the logic (strats and notables)
- Gauntlet Entrance: remote runway strats on right side
- Allow more options to be overridden on the customization step:
- example: Door locks size on map
- these are all cosmetic changes to how the map is drawn, without affecting the information revealed.
- options with more substantial effects could maybe be included, but we'd need to define rules for "Race mode" of which changes are allowed
- maybe have second spoiler JSON file without the debugging data?
- show more updates in spoiler history?
- Currently it's only showing up to one update per traversal?
- Mosaic:
- restore morph tunnel continuation behind morph tunnel transition?
- spoiler map: add something in side panel for route to hub?
- wave gate room: missing 3 -> 1 logic?
- fix Metroid Room 1 "Ammo Kill" strats
- restrict flash suit from satisfying comeInShinecharged if strat also has leaveShinecharged
- Finish writing test scenarios to cover all logical requirements and entrance/exit conditions.
- move blue suit save QoL into High.
- on spoiler map: hide forced mode difficulty placements behind toggle?
- Logic difficulty changes:
- ease botwoon proficiency expectation
- add more strats from Incomplete videos
Other future work: --------------------------------------------------------------------
ROM-patching fixes/improvements:
- investigate audio-related lag after quick reload
- draw door frame in front of hazard markers, for doors that don't have a door shell.
- investigate momentum conservation:
- eddie says first-frame jump loses momentum: https://www.twitch.tv/videos/2317357753?t=2h17m11s
- prevent empty tiles (grid lines only) from showing as explored on mini-map?
- e.g. in Green Brin Firefleas Room, or when x-ray climbing rooms like Dachora, Crateria Supers
- fix g4 start location problem: https://discord.com/channels/1053421401354285129/1053434532973510748/1230346387628101643
- fix OOB when leaving Kraid Room from right during fight
- clear SRAM more fully when saved seed does not match:
- save slot position is being retained, so cursor might start on slots 2 or 3 initially
- 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 expire when using a save station
- prevent accidental quickloads from losing lots of progress
- make kraid camera act normal when entering from left?
- same thing with spore spawn entering from bottom?
Logic (sm-json-data):
- PCJR: "Left-Side Shinespark" (and related strats): rename and add "canShinechargeMovementComplex" req
- X-Ray climb from "strange positions" using G-mode:
- example in Big Pink by bobbob: https://vimeo.com/623738489
- add iframe spike jump remote runways: e.g. East Cac Alley, Bowling Alley, Crateria Supers
- add `easyHeatFrames` logical requirement, for rooms like Speed Booster Hall
- add missing Red Tower grapple jump strats:
- missed entering from the right
- grapple jumping up only to the ledge (probably needs a new node)
- shinespark strats could get up that node too, with fewer shinecharge frames
- new strats to add:
- crumble jump of LN escape PB room, leavewithplatform
- west cac alley CF clip
- R-mode forced stand-up clips (needs testing):
- 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?)
- 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)
- refine botwoon requirements:
- A distinction should probably be made between using supers vs. missiles:
- e.g. 10 supers should be fine in Extreme (maybe Expert?)
- 30 Missiles should be fine in Insane
- 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
- many other things:
- see Issues on the GitHub: https://github.com/vg-json-data/sm-json-data/issues
- see Incomplete status videos on https://videos.maprando.com/
Major new features (not clear yet which of these will ever happen):
- Fast travel via map stations
- Have a "hub" room connected to each map station, with a door behind the map station that opens after activating that map.
- Hyperlinks and tooltips in the logic page JSON, to make the logic easier to browse and understand
- Logic simulator: a way to fill out items/flags/resources/obstacles to simulate logic and check if there is a logical path through a room:
- Useful especially for calculating energy required for hellruns.
- The boss calculator set up a lot of the infrastructure needed to support this.
- Cross-room strats will be tricky, as you would have to be able to specify what the neighboring rooms are.
- "Larvas" objective: ~4 items to be collected (hidden among majors? or shown with an X? or have a setting to choose?)
- Music customization (SPC):
- An advantage of SPC-based music customization is that it can be integrated into the site, similar to other customization options.
- We already have MSU-1 support, which works fine, but SPC would avoid the need for special setup or hardware/platform restrictions.
- Of course, MSU-1 will always be more flexible in allowing any kind of music.
- A lot of work would be needed to curate/edit custom SPC, to ensure they can work properly with the sound effects.
- Sound effects using non-existent "instruments" can crash the game, so we have to make sure that won't happen.
- Also we want to make sure the glitched sound effects don't sound too bad.
- Improved save station balancing
- Reshuffle single-tile rooms during item placement, to try to maintain good save coverage, accounting for logical 2-way reachability.
- Define "distance" in a way that accounts for ease of access; e.g. coverage should probably only consider tricks roughly 1 tier lower than the skill assumptions selected?
- Custom demos (when idling on the title screen)
- Overhaul the G-mode logic schema, to be able to model using locked doors to overload PLMs, and opening PB doors with artificial morph.
- Make Gravity-only Samus palette different from Gravity+Varia?
- Include support for custom sprites to define the new palette.
- Support for horizontally mirrored rooms (requires heavy logic work, along with a new map gen model)
- Support for randomizing room environments: heat and water (massive logic work)
- 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
Other:
- settings upgrade: fill out "filler_items" that may be missing items.
- maybe blank out missing areas in credits area times
- maybe run customization on client (with Rust WebAssembly)
- then the ROM wouldn't need to be passed to the server.
- but Mosaic (tile theming) data will need to be downloaded
- new entrance/exit conditions:
- add comeInWithRunway/leaveWithRunwayExtension for Crateria Tube
- add leaveBlueRunning exit condition (matching with comeInShinecharging/comeInGettingBlueSpeed)
- but how to implement propagation of runway-length/speed info for this?
- similarly, we'd like to support comeInGettingBlueSpeed in combination with leaveSpinning, leaveWithMockball, leaveWithSpringBallBounce, and leaveSpaceJumping.
- also comeIn(Blue)Spinning could combine with leaveWithMockball, leaveWithSpringBallBounce
- again, we need a way to propagate the runway-length/speed info
- figure out how to express the heat-frame requirement to go back through a door
- expand tech & strat notes on X-ray climbs: indicate when it is safer to only release X-ray while turning around in one direction
(when there are air tiles not visible in the initial screen).
- add sm-json-data tests:
- check that if some implicit strats are overridden, then all applicable ones are.
- if strat includes doorUnlockedAtNode at destination node, then skip redundant unlock requirement.
- simplify SeedData. It's not clear if we really even need this anymore.
- embed some logic data in video site? (e.g. show strat note when uploading/editing)
- handle steep starting down tile better: only should affect short-charging, not other uses of runways
- model energy usage in the escape.
- can be necessary to ensure beatability of seeds with reduced items and disabled escape refill.
- add option to reroll seeds with not enough difficult required tricks?
- instructions on gmode and artificial morph
- fix weapon PowerBomb logic (can't remember if this is all already done?):
- take into account that double hit is not possible with PowerBombPeriphery
- take into account multiplier
- Remove unneeded items from last step in Desolate.
- in logic pages From/To node selections, improve contrast for grayed-out nodes.
- fix vanilla map music when "Random" start puts you in room with no music change (plays title screen music).
- handle door locks and flags more precisely; account for them when considering which key item to place
- this can help forced mode take into account difficulty of defeating bosses (and acquiring other flags)
- spoiler map: show pop-up when hovering over step, to show additional collectible items (with their quantities) and instructions
to click/double-click for details.
- rework QoL presets?:
- keep same map options between Low and Default?
- consider making shaktool room one-way in map generation (so Reverse Shaktool strat could be moved up to Medium)
- main street shinespark frames need some looking into: "frames": 35 doesn't make sense?
- refine GT logic: not in logic with 7E+4R and 5 Supers, Grapple.
- make start locations and hub locations only use door nodes
- that way much less risk of getting broken (or made unsound) by logic changes
- link to twin room in logic room pages.
- add physics/heated override to runway geometry
- more generally, come up with some way to better account for the added difficulty when a strat cannot be retried or where a limited amount of retries are possible.
- revamp strat page:
- embed the video directly near the top?
- collapse the room diagram
- 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)
- 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
- help buttons for rest of settings (e.g. explain boss proficiency calculations)
- handle sba attacks in "enemyKill" (already done?)
- more fine-grained "fast cutscenes" QoL options?:
- fast big boy cutscene
- fast MB
- fast saves, refills, maps?
- make item music tracks consistent, to eliminate music restarts that can happen between two item rooms
- see if we can do something about silent snails with Zebes asleep music
- possible enhancements to momentum conservation patch
- remove need to be holding dash or to be in spin (probably bad)
- retain speed when turning around with spin? (probably bad)
- on ground, retain horizontal speed when unmorphing
- by pressing up (or jump, if spring ball not equipped) while holding forward and dash
- in air, retain horizontal speed when soft unmorphing while holding forward and dash
- handle runways with conditional physics (Volcano Room, Amphitheatre, East Pants Room)
- enforce tech dependencies:
- e.g. enabling "canPreciseWalljump" should enable dependency "canWalljump"
- disabling "canWalljump" should disable dependent "canPreciseWalljump"
- harder item progression mode, where new item may be required to be used for the return path.
- include a check that the client and server are matching versions and give a more meaningful error when they aren't
- fix missing Samus tile in Bomb message box (issue with map tile expansion patch)
- fix problem with disappearing typewriter text when pausing as escape sequence starts
- add a tip that you can share a seed using the URL.
- refine cross room shinesparks:
- take into account how the accumulated speed affects energy required in next room.
- this can make a big difference in some situations, e.g. sparking from Waterway into Mt. Everest
- fix bug where suit color does not change when changing suits while taking damage (e.g. lava dive)?
- clean up the web service, to reduce the amount of boilerplate plumbing settings around.
- make separate option for patching out major glitches?
- include GT code, Spacetime beam (currently patched out)
- make OOB cause instant death?
- others
- Better validation/error-handling of web service
- 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.
- Look into using sm-rs-data.
- fix tiny bug: when loading door of the starting room (e.g. bottom-left of landing site) is an area transition, the area transition marker shows up on the map from the beginning of the game (due to running the door ASM while loading the game)
- fix internal checksum in output ROM?
- making the map generation code more reusable, so that others could more easily apply it to other games.