Skip to content
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

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

Conversation

Daivuk
Copy link
Collaborator

@Daivuk Daivuk commented Mar 30, 2024

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:
image

Or it shows the proper graphic if they are your own items:
image

In the menus, the icon has a different palette. Here an example receiving progression item:
image
Followed by a dialog explaining what it is:
image

When an AP item is bought from a shop, it shows "SOLD OUT":
image

More client-only options that don't affect the randomizer, are available in the client:
image

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.

@github-actions github-actions bot added the waiting-on: peer-review Issue/PR has not been reviewed by enough people yet. label Mar 30, 2024
@ScipioWright ScipioWright added the is: new game Pull requests for implementing new games into Archipelago. label Mar 30, 2024
Copy link
Collaborator

@ScipioWright ScipioWright left a 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

worlds/faxanadu/__init__.py Outdated Show resolved Hide resolved
worlds/faxanadu/Items.py Outdated Show resolved Hide resolved
worlds/faxanadu/Locations.py Outdated Show resolved Hide resolved
worlds/faxanadu/Locations.py Show resolved Hide resolved
worlds/faxanadu/Options.py Outdated Show resolved Hide resolved
worlds/faxanadu/Regions.py Outdated Show resolved Hide resolved
@Daivuk Daivuk force-pushed the faxanadu branch 2 times, most recently from 69ab42a to 1e6513f Compare March 30, 2024 19:08
Copy link
Collaborator

@Silvris Silvris left a 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.

worlds/faxanadu/__init__.py Outdated Show resolved Hide resolved
worlds/faxanadu/__init__.py Outdated Show resolved Hide resolved
worlds/faxanadu/docs/en_Faxanadu.md Outdated Show resolved Hide resolved
worlds/faxanadu/Rules.py Outdated Show resolved Hide resolved
@Daivuk
Copy link
Collaborator Author

Daivuk commented Apr 7, 2024

Done the requested changes, and tested locally.

worlds/faxanadu/Options.py Outdated Show resolved Hide resolved
worlds/faxanadu/Options.py Outdated Show resolved Hide resolved
worlds/faxanadu/Options.py Outdated Show resolved Hide resolved
Copy link
Contributor

@qwint qwint left a 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

worlds/faxanadu/__init__.py Outdated Show resolved Hide resolved
worlds/faxanadu/Rules.py Outdated Show resolved Hide resolved
worlds/faxanadu/__init__.py Outdated Show resolved Hide resolved
worlds/faxanadu/__init__.py Outdated Show resolved Hide resolved
worlds/faxanadu/__init__.py Outdated Show resolved Hide resolved
worlds/faxanadu/docs/en_Faxanadu.md Outdated Show resolved Hide resolved
worlds/faxanadu/docs/setup_en.md Outdated Show resolved Hide resolved
worlds/faxanadu/Options.py Outdated Show resolved Hide resolved
worlds/faxanadu/docs/setup_en.md Show resolved Hide resolved
worlds/faxanadu/__init__.py Outdated Show resolved Hide resolved
@Daivuk
Copy link
Collaborator Author

Daivuk commented Apr 14, 2024

Done the requested changes, and tested locally.

Copy link
Contributor

@qwint qwint left a 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

@Daivuk
Copy link
Collaborator Author

Daivuk commented Apr 14, 2024

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.

@qwint
Copy link
Contributor

qwint commented Apr 14, 2024

one more thing i didn't notice before, you should add the return typing hints for prefill_shop_red_potions() and prefill_shop_wingboots()

@Daivuk
Copy link
Collaborator Author

Daivuk commented Apr 14, 2024

one more thing i didn't notice before, you should add the return typing hints for prefill_shop_red_potions() and prefill_shop_wingboots()

Ok done

@qwint
Copy link
Contributor

qwint commented Apr 14, 2024

you put the hint on put_wingboot_in_shop() not prefill_shop_wingboots() which is the one who returns wingboots count

@Daivuk
Copy link
Collaborator Author

Daivuk commented Apr 14, 2024

you put the hint on put_wingboot_in_shop() not prefill_shop_wingboots() which is the one who returns wingboots count

I went too fast 😄 . Fixed

Copy link
Contributor

@qwint qwint left a 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

@Daivuk
Copy link
Collaborator Author

Daivuk commented Apr 14, 2024

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

@Daivuk
Copy link
Collaborator Author

Daivuk commented Apr 14, 2024

Before anyone merge, I have to do a commit there was a logic issue I had noted that I forgot to fix.

@Daivuk
Copy link
Collaborator Author

Daivuk commented Apr 14, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
is: new game Pull requests for implementing new games into Archipelago. waiting-on: peer-review Issue/PR has not been reviewed by enough people yet.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants