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 Implementation: Civilization VI #3736

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

Conversation

hesto2
Copy link

@hesto2 hesto2 commented Aug 6, 2024

What is this fixing or adding?

Support for Civilization VI as a new world.

How was this tested?

The world has several test suites as well as running it through alpha & beta with the community since May

@github-actions github-actions bot added the waiting-on: peer-review Issue/PR has not been reviewed by enough people yet. label Aug 6, 2024
@BadMagic100 BadMagic100 added the is: new game Pull requests for implementing new games into Archipelago. label Aug 6, 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.

These are mainly suggestions, feel free to agree, disagree, or discuss any of them with me as desired.

worlds/civ_6/Items.py Outdated Show resolved Hide resolved
worlds/civ_6/__init__.py Outdated Show resolved Hide resolved
worlds/civ_6/__init__.py Outdated Show resolved Hide resolved
worlds/civ_6/__init__.py Outdated Show resolved Hide resolved
worlds/civ_6/__init__.py Outdated Show resolved Hide resolved
worlds/civ_6/Rules.py Outdated Show resolved Hide resolved
worlds/civ_6/Options.py Outdated Show resolved Hide resolved
worlds/civ_6/Options.py Outdated Show resolved Hide resolved
worlds/civ_6/docs/setup_en.md Outdated Show resolved Hide resolved
worlds/civ_6/docs/setup_en.md Outdated Show resolved Hide resolved
@hesto2
Copy link
Author

hesto2 commented Aug 6, 2024

@ScipioWright thank you for the review 🙏

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 a few other things while I have a moment

worlds/civ_6/__init__.py Outdated Show resolved Hide resolved
worlds/civ_6/__init__.py Outdated Show resolved Hide resolved
worlds/civ_6/Rules.py Outdated Show resolved Hide resolved
worlds/civ_6/Civ6Client.py Outdated Show resolved Hide resolved
worlds/civ_6/Items.py Show resolved Hide resolved
worlds/civ_6/Locations.py Outdated Show resolved Hide resolved
worlds/civ_6/Options.py Outdated Show resolved Hide resolved
worlds/civ_6/__init__.py Outdated Show resolved Hide resolved
worlds/civ_6/__init__.py Outdated Show resolved Hide resolved
@ScipioWright ScipioWright removed the affects: core Issues/PRs that touch core and may need additional validation. label Sep 9, 2024
@ScipioWright
Copy link
Collaborator

I did some test gens with a yaml (renamed to weights.yaml so the host.yaml players can affect it) with most options set to random.

I found that if shuffle_goody_hut_rewards is on and the other options are set to random, it'll fail almost every time with a 50-player game.

I found that with it off, a 20-player game generation slows way way way down during item placement. Usually this means swap is having a hard time but hasn't outright failed, usually due to a small amount of sphere 1 locations.
It's hard to say for sure without debugging.

@hesto2
Copy link
Author

hesto2 commented Sep 9, 2024 via email

@ScipioWright
Copy link
Collaborator

All Civ games

@hesto2
Copy link
Author

hesto2 commented Sep 11, 2024

I did some test gens with a yaml (renamed to weights.yaml so the host.yaml players can affect it) with most options set to random.

I found that if shuffle_goody_hut_rewards is on and the other options are set to random, it'll fail almost every time with a 50-player game.

I found that with it off, a 20-player game generation slows way way way down during item placement. Usually this means swap is having a hard time but hasn't outright failed, usually due to a small amount of sphere 1 locations. It's hard to say for sure without debugging.

Ok I think I'm going to take a pass at how the rules are setup for some of the earlier stages and refactor that a bit. It looks like it is just a little too restrictive for it to successfully gen with larger numbers of player and I think there's probably some optimizations I can add in that will make it go faster

worlds/civ_6/Rules.py Outdated Show resolved Hide resolved
worlds/civ_6/ProgressiveDistricts.py Outdated Show resolved Hide resolved
@hesto2
Copy link
Author

hesto2 commented Sep 13, 2024

I did some test gens with a yaml (renamed to weights.yaml so the host.yaml players can affect it) with most options set to random.

I found that if shuffle_goody_hut_rewards is on and the other options are set to random, it'll fail almost every time with a 50-player game.

I found that with it off, a 20-player game generation slows way way way down during item placement. Usually this means swap is having a hard time but hasn't outright failed, usually due to a small amount of sphere 1 locations. It's hard to say for sure without debugging.

Ok I got this working MUCH better, I was able to generate with a large amount of players 20, 50, 50+ and the generation times were all 30-60 seconds (previously 600+ seconds, and closer to 1000 for some of those ones that stalled out).

I had to give the randomizer some help with figuring out how to fill the first few locations (I denied late game items for the first era and forced all the items required to pass the first era to be early_items). Solid catch with this, I'll definitely keep this in my pocket as a test case for this and my Metroid apworld

@hesto2
Copy link
Author

hesto2 commented Oct 7, 2024

@ScipioWright (sorry for the ping) Anything else I can look at, or any other sets of eyes you'd recommend I get on this?

@ScipioWright ScipioWright self-requested a review October 10, 2024 13:21
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.

4 participants