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

New Game: Zillion #1081

Merged
merged 83 commits into from
Oct 20, 2022
Merged

New Game: Zillion #1081

merged 83 commits into from
Oct 20, 2022

Conversation

beauxq
Copy link
Collaborator

@beauxq beauxq commented Oct 7, 2022

What is this fixing or adding?

add Zillion to supported games

How was this tested?

unit tests
A bunch of self-async multiworlds with Super Metroid.
1 4-player sync with {Zillion (Linux), Zillion (Windows), Super Metroid, Risk of Rain 2}

not tested:
innosetup, Windows install (I only have Linux)

beauxq and others added 30 commits May 20, 2022 17:24
and some debug statements for asserts,
documentation on running scripts for manual testing
type correction in CommonContext
fix item locations getting out of sync in progression balancing
Copy link
Contributor

@SoldierofOrder SoldierofOrder left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only examined the two docs files @black-sliver pointed me to; I have lots of little suggestions. Looks very thorough and clear!

worlds/zillion/docs/en_Zillion.md Outdated Show resolved Hide resolved
worlds/zillion/docs/en_Zillion.md Outdated Show resolved Hide resolved
worlds/zillion/docs/en_Zillion.md Outdated Show resolved Hide resolved
worlds/zillion/docs/en_Zillion.md Outdated Show resolved Hide resolved
worlds/zillion/docs/setup_en.md Outdated Show resolved Hide resolved
worlds/zillion/docs/setup_en.md Outdated Show resolved Hide resolved
worlds/zillion/docs/setup_en.md Outdated Show resolved Hide resolved
worlds/zillion/docs/setup_en.md Outdated Show resolved Hide resolved
worlds/zillion/docs/setup_en.md Outdated Show resolved Hide resolved
worlds/zillion/docs/setup_en.md Outdated Show resolved Hide resolved
beauxq and others added 7 commits October 16, 2022 19:23
There is a bug in Python in Windows
python/cpython#91227
that makes it so if I look for RetroArch before it's ready, it breaks the asyncio udp transport system.

As a workaround, we don't look for RetroArch until the user asks for it with /sms
instead of all the multiworld locations
Copy link
Member

@black-sliver black-sliver left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I read everything besides the wheel and the client. I have to say that i don't fully understand how the logic resolution works, so i would be happy if you could leave a comment about that in the code :)
Besides the stuff below, i really think the comments should get cleaned up a little (# print(...) should not be in the final iteration of the code).

Care to do the client @Berserker66 ?

worlds/zillion/__init__.py Outdated Show resolved Hide resolved
worlds/zillion/__init__.py Show resolved Hide resolved
worlds/zillion/__init__.py Outdated Show resolved Hide resolved
Comment on lines 109 to 110
rom_dir_name = os.path.dirname(get_base_rom_path())
self.zz_system.make_patcher(rom_dir_name)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If possible, everything output-related should be run in generate_output since that runs multi-threaded. If you want to throw early exceptions, that's what assert_generate is for.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This "patcher" has some other stuff besides patching. Probably less-than-optimal organization in my package.
This is just initializing the instance to be available for those other things.

worlds/zillion/__init__.py Show resolved Hide resolved
worlds/zillion/__init__.py Outdated Show resolved Hide resolved
worlds/zillion/__init__.py Outdated Show resolved Hide resolved
worlds/zillion/__init__.py Show resolved Hide resolved
def modify_multidata(self, multidata: Dict[str, Any]) -> None:
"""For deeper modification of server multidata."""
# not modifying multidata, just want to call this at the end of the generation process
clear_cache()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this breaks the simulated playthrough

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does it? Wouldn't it just repopulate the cache?

Is there someplace I can put this to run it after all logic stuff is done?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

attached logic cache to multiworld

worlds/zillion/__init__.py Outdated Show resolved Hide resolved
@black-sliver black-sliver merged commit 265ee70 into ArchipelagoMW:main Oct 20, 2022
LiquidCat64 pushed a commit to LiquidCat64/LiquidCatipelago that referenced this pull request Oct 22, 2022
* Option RangeWithSpecialMax

* amendment to typing in web options

* compare string with number

* lots of work on zillion

* fix zillion fill logic

* fix a few more issues in zillion fill logic

* can make zillion patch and use it

* put multi items in zillion rom

* work on ZillionClient

* logging and auth in client

* work on sending and receiving items

* implement item_handling flag

* fix locations ids to NuktiServer package

* use rewrite of zri

* cache logic rule data for performance

* use new id maps

* fix some problems with the big recent merge

* ZillionClient: use new context manager for Memory class

* fix ItemClassification for Zillion items
and some debug statements for asserts,
documentation on running scripts for manual testing
type correction in CommonContext

* fix some issues in client, start on docs, put rescue and item ram addresses in slot data

* use new location name system
fix item locations getting out of sync in progression balancing

* zillion client can read slot name from game

* zillion: new item names

* remove extra unneeded import

* newer options (room gen and starting cards)

* update comment in zillion patch

* zillion non static regions

* change some logging, update some comments

* allow ZillionClient to exit in certain situations

* todo note to fix options doc strings

* don't force auto forfeit

* rework validation of floppy requirement and item counts
and fix race condition in generate_output

* reorganize Zillion component structure
with System class

* documentation updates for Zillion

* attempt inno_setup.iss

* remove todo comment for something done

* update comment

* rework item count zillion options
and some small cleanups

* fix location check count

* data package version 1

* Zillion can pass unit tests without rom

* fix freeze if closing ZillionClient while it's waiting for server login

* specify commit hash for zilliandomizer package

* some changes to options validation

* Zillion doors saved on multiworld server

* add missing function in inno_setup
and name of vanilla continues in options

* rework zillion sync task and context

* Apply documentation suggestions from SoldierofOrder

Co-authored-by: SoldierofOrder <[email protected]>

* update zillion package

* workaround for asyncio udp bug

There is a bug in Python in Windows
python/cpython#91227
that makes it so if I look for RetroArch before it's ready, it breaks the asyncio udp transport system.

As a workaround, we don't look for RetroArch until the user asks for it with /sms

* a few of the smaller suggestions from review

* logic only looks at my locations
instead of all the multiworld locations

* some adjustments from pull request discussion
and some unit tests

* patch webhost changes from pull request discussion

* zillion logic tests

* better vblr test

* test interaction of character rescue items with logic

* move unit tests to new worlds folder

* comment improvements

* fix minor logic issue
and add memory read timeout

* capitalization in option display names
Opa-Opa is a proper noun

* redirect zz stdout to debug

* fix option validation bug making unbeatable seeds

* remove line that does nothing

* attach logic cache to world

Co-authored-by: SoldierofOrder <[email protected]>
Co-authored-by: Doug Hoskisson <[email protected]>
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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants