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

Jak and Daxter: Implement New Game #3291

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

Conversation

massimilianodelliubaldini

This is a draft PR for code review, beta test volunteers, etc. If I've got any style issues, or use deprecated features, or have obvious logical problems, please let me know!

My origin PR squashed some 17 commits, so if you want that kind of granular history, see here.

What is this fixing or adding?

This commit adds Jak and Daxter: The Precursor Legacy to Archipelago. This includes the world, the locations, the items, the text client, web world, documentation, and setup guide.

How was this tested?

  • Ran the generic python tests included with Archipelago.
  • Generated both single-world and multi-world seeds.
  • Read several spoiler logs to ensure the game logic was being followed.
  • Manually tested the text client and the game mod itself.
    • Farthest single-world point I reached was getting 20 power cells and making it to the Blue Sage's hut (hub world 2 of 3).
    • Recorded some footage of a multi-world game here.

If this makes graphical changes, please attach screenshots.

N/A.

…gions and rules, but still missing one-way Entrances.
* Jak 1: Initial commit: Cell Locations, Items, and Regions modeled.

* Jak 1: Wrote Regions, Rules, init. Untested.

* Jak 1: Fixed mistakes, need better understanding of Entrances.

* Jak 1: Fixed bugs, refactored Regions, added missing Special Checks. First spoiler log generated.

* Jak 1: Add Scout Fly Locations, code and style cleanup.

* Jak 1: Add Scout Flies to Regions.

* Jak 1: Add version info.

* Jak 1: Reduced code smell.

* Jak 1: Fixed UT bugs, added Free The Sages as Locations.

* Jak 1: Refactor ID scheme to better fit game's scheme. Add more subregions and rules, but still missing one-way Entrances.

* Jak 1: Add some one-ways, adjust scout fly offset.

* Jak 1: Found Scout Fly ID's for first 4 maps.

* Jak 1: Add more scout fly ID's, refactor game/AP ID translation for easier reading and code reuse.

* Jak 1: Fixed a few things. Four maps to go.

* Jak 1: Last of the scout flies mapped!

* Jak 1: simplify citadel sages logic.

* Jak 1: WebWorld setup, some documentation.

* Jak 1: Initial checkin of Client. Removed the colon from the game name.

* Jak 1: Refactored client into components, working on async communication between the client and the game.

* Jak 1: In tandem with new ArchipelaGOAL memory structure, define read_memory.

* Jak 1: There's magic in the air...

* Jak 1: Fixed bug translating scout fly ID's.

* Jak 1: Make the REPL a little more verbose, easier to debug.

* Jak 1: Did you know Snowy Mountain had such specific unlock requirements? I didn't.

* Jak 1: Update Documentation.

* Jak 1: Simplify user interaction with agents, make process more robust/less dependent on order of ops.

* Jak 1: Simplified startup process, updated docs, prayed.

* Jak 1: quick fix to settings.
@ScipioWright ScipioWright added the is: new game Pull requests for implementing new games into Archipelago. label May 13, 2024
@massimilianodelliubaldini
Copy link
Author

massimilianodelliubaldini commented Sep 12, 2024

We're almost at 5,000 lines. Come on guys, step up your code reviews! Gotta give me something to break the 5k barrier. XD

EDIT: lfg

* Reorder cell counts, require punch for Klaww.

* Friendlier friendly friendlies.

* Removed custom_worlds references from docs/setup guide, focused OpenGOAL Launcher language.

* Increased breadth of unit tests.
@ScipioWright
Copy link
Collaborator

Maybe consider adding option groups? Would make it easier to parse, especially since I'd imagine most people won't modify their cell counts and orb shop prices

@massimilianodelliubaldini
Copy link
Author

image

How's this?

@ScipioWright
Copy link
Collaborator

It only auto-expands the Game Options, so I'd recommend ditching the "Challenge Modes" group and just letting those live in Game Options. Maybe an Orbsanity group?

@Exempt-Medic
Copy link
Collaborator

Exempt-Medic commented Sep 17, 2024

You can also change Game Options to be a different group ( like what Stardew does ) and it won't auto-expand. Or you can use start_collapsed to change the behaviors

@massimilianodelliubaldini
Copy link
Author

It only auto-expands the Game Options, so I'd recommend ditching the "Challenge Modes" group and just letting those live in Game Options. Maybe an Orbsanity group?

These option groups all started open by default? start_collapsed is by default False, and I didn't override it.

@massimilianodelliubaldini
Copy link
Author

image

* Provide config path so OpenGOAL can use mod-specific saves and settings.

* Add versioning to MemoryReader. Harden the client against user errors.

* Updated comments.

* Add Deathlink as a "statement of intent" to the YAML. Small updates to client.

* Revert deathlink changes.

* Update error message.

* Added color markup to log messages printed in text client.

* Separate loggers by agent, write markup to GUI and non-markup to disk simultaneously.

* Refactor MemoryReader callbacks from main_tick to constructor.

* Make callback names more... informative.

* Give users explicit instructions in error messages.
@massimilianodelliubaldini
Copy link
Author

massimilianodelliubaldini commented Oct 7, 2024

The latest couple of commits have changed the client and its agents quite extensively, just want to put that out there, it may warrant extra review.

Things I'd like to handle before this is considered mergeable:

* Use new ap-messenger functions for text writing.

* Remove Powershell requirement, bump memory version to 3.

* Error message update w/ instructions for game crash.

* Create no console window for gk.
* Add iso-path as argument to GOAL compiler.

# Conflicts:
#	worlds/jakanddaxter/Client.py

* More resilient handling of iso_path.

* Fixed scout fly ID mismatches.

* Corrected iso_data subpath.
@massimilianodelliubaldini
Copy link
Author

massimilianodelliubaldini commented Oct 30, 2024

From this point forward, I plan on finalizing the code: only code review notes from this PR, and any egregious bugs that come out of v0.4.0 beta. This is so nobody has to make a merge decision (yay or nay) on a moving target.

* Auto detect OpenGOAL install path. Also fix Deathlink on server connection.

* Updated docs, add instructions to error messages.

* Slight tweak to error text.
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.

6 participants