-
Notifications
You must be signed in to change notification settings - Fork 638
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Faxanadu: implement new game #3059
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just some brief comments, looks pretty good as always.
Obviously there's those test failures too that need to be solved
69ab42a
to
1e6513f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make sure to add Faxanadu to README.md as well.
Done the requested changes, and tested locally. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
reviewed all of the code and the relevant pages in local webhost and added relevant inline comments. All docs comments are typos or suggestions for more natural English sentences.
benchmarks ran ok, but there were some outliers in location access rules that could be optimized but weren't larger than .21 seconds, and load_worlds was great
no issues in running tests locally in 3.8 or 3.11
did not generate any games nor use the client
Done the requested changes, and tested locally. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
barring my new small comment on returning red_potion_in_shop_count #3059 (comment)
and my discussion on RequireDragonSlayer's docstring everything looks good from my review
I'd still like those addressed but I would be happy as-is so approving
Oversights, fixed. |
one more thing i didn't notice before, you should add the return typing hints for |
Ok done |
you put the hint on |
I went too fast 😄 . Fixed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
reapproving after the last couple comments were addressed as well
also, fyi the force-pushes make it harder to review just the new changes from review, but at least this world is small enough that it's not that bad
Ok I do this to keep the PR clean, as it's the first commit for this game. It's what we do at work to, force of habit. Squash/amend |
Before anyone merge, I have to do a commit there was a logic issue I had noted that I forgot to fix. |
Ok the logic fix is in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mostly a lot of minor suggestions/things. Looked through all the files and did 1000 fully random generations (100 single-player, nine 100-player) and there were no errors of any kind, though it did take quite a while at the end of progression fill for the 100-player seeds (everywhere from 1.5m to 19.9m). That said, numerous test generation with only 50 players all took less than 10 seconds (edit: I just had one take 3.5 minutes, so maybe there's just some restrictive cases these can run into), so something might be up with the scaling here. Looked through a local WebHost and all the links and documents seem good.
The big things that I would want clarification on are:
- Whether defeating Evil One is meant to require all of all three progressive items, because logically it only expects one of each
- Your events are done in a bit of a strange way, and could likely be separated out from the regular items to save a lot of time iterating over the lists to try and find them again and again. They should also be removed from the
name_to_id
lookups - Similarly, shop locations could have their own table so you don't have to iterate and find them over and over
- I'm unsure why the shop/wingboot counter is so complex
Also, make sure you updated https://github.com/ArchipelagoMW/Archipelago/blob/main/docs/CODEOWNERS |
e21916b
to
ee81c24
Compare
All requested changes are in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some final/additional comments
7909e04
to
40b441e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My comments were all addressed. I think there's some strange things going on with the shops and events here, but it's mostly fine, just a little over-engineered to me. I looked over all the code and did 1000 random solo generations, 100 10-player generations, 50 25-player generations. and 50 50-player generations. The time for a seed to finish generating was very consistent with single-player and 10-player generations but with the 25-player gens it was either relatively short (0.5 seconds) or quite long in comparison (about 20 seconds). For 50 players there was a similar but much more extreme case of generation either taking about four seconds or, well, still not being done one hour later (five of those are running now)
Edit: oops, missed that two of them finished. One took 107 seconds, the other 159. One of the remaining three has now finished and took 74 minutes. Another has finished after 86 minutes.
What is this fixing or adding?
New game, Faxanadu.
Faxanadu is an NES game. It does not require the server to have the ROM to generate. The patching is done at runtime in the client. The client is a custom-made NES emulator for AP Faxanadu. (Called Daxanadu, because my name is Daivuk...)
The client can be found here: https://github.com/Daivuk/Daxanadu
How was this tested?
It has been played for months. apworld was available since a while.
If this makes graphical changes, please attach screenshots.
The palette on the NES is restricted, especially in this game. Only 3 colors could have been used for the AP icon. Here how it looks in-game:
Or it shows the proper graphic if they are your own items:
In the menus, the icon has a different palette. Here an example receiving progression item:
Followed by a dialog explaining what it is:
When an AP item is bought from a shop, it shows "SOLD OUT":
More client-only options that don't affect the randomizer, are available in the client:
There is also an option in the client to disable cigarette imagery. This is done by patching the sprites with a "diff" sprite. The diff sprites just include the pixels that need to be covered by something new. They don't look like much by themselves.