-
Notifications
You must be signed in to change notification settings - Fork 20
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
feat: Matchmaker Rework #431
Merged
MaxCWhitehead
merged 69 commits into
fishfolk:main
from
RockasMockas:adding-lobbies-to-matchmaker
Oct 2, 2024
Merged
feat: Matchmaker Rework #431
MaxCWhitehead
merged 69 commits into
fishfolk:main
from
RockasMockas:adding-lobbies-to-matchmaker
Oct 2, 2024
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This looks great, thank you! |
…_data added, start of lobby
Exposed option methods directly on Maybe for less verbosity when using a lot of Maybes.
Disable MSAA when in pixel art mode. It seems to add artifacts with texture sampling. Example: fishfolk/jumpy#1014
Added methods to SVec, SMap, and AnimationBankSprite for better ux.
…:bones_framework (fishfolk#434) The change allows using the bones_ecs crate SystemParam macro (under feature flag "derive") without bones_framework dependency, which I believe is unintendedly required at the moment.
0.21 has some bugs that completely breaks compiling on some set of systems. Bumping to 0.22 to address this. Seems to compile/2 players connected on a quick test.
Adds a few more methods to SVec and also supports .into() SVec <-> Vec now both ways.
Fixes a mistake regarding the behavior of `copy_from_nonoverlapping()`. When copying from a typed pointer, we provide the number items to copy, not the number of bytes.
Added support for gamepad rumble into bones. Changed the interface compared to bevy's implementation with: - Imo more straightforward naming/hiding abstractions like "requests" - implementing an enable/disable layer which makes it easier for games to fully turn off rumble for a given gamepad without having to include `if` statements across their entire code (ie. during startup game can read from settings that gamepad X has rumble disabled, just call .disable(), and write code that always tries to use rumble without extra boilerplate).
There were existing of `#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]` lines already (f.e. on Entity struct), but serde feature flag itself was missing from bones_ecs. Also added `cfg_attr(feature = "serde") ...` line to Entities and BitSetVec so Entities struct can be serialized.
…t debug window behind feature flag `net-debug` (BREAKING) (fishfolk#443) Locked some debug window that uses egui behind ui flag, fixed missing audio/ui cfg blocks in a few places. The network debug system is now behind `net-debug`. This way it is not compiled if undesired, as it depends on 'ui' and is only useful if displayed in egui. Also probably something we will want to disable in release builds in the future. Fixes fishfolk#442
Tried turning it off to reduce some artifacts but I think this it is worse without it, maybe some other AA would work better, but not going to worry about this for now.
Moved AudioCenter out of jumpy -> bones. Reworked to remove the dependency on using a game's settings struct directly + streamlining the interfaces such as having both play_sound and play_music be super easy to use, with extra _advanced and _custom methods for different levels of advanced features/usability on music. Tested both music/sounds work.
Now supports both adding and setting rumble to provide both options natively based on what is needed.
Extra helper methods added: iter(), all_cloned(), kill_all().
…ger work (fishfolk#450) This PR covers the following: 1. Exposing player networking info from ggrs -> into an accessible resource for anyone to use. 2. Provide a bunch of helper methods for easily fetching averages/highest/lowest from networking info. 3. Convert `NetworkingInfo` struct to `SyncingInfo` (as discussed previously on discord) which supports both Online/Offline variants and put all fields behind getters. This will allow us to have a standardized interface for implementing EventManager in the future that watches current/last confirmed frame. (Of note this hasn't inserted the offline variant anywhere, as that can wait for the EventManager work itself).
This PR includes: - Implementing a "single success system" flow, which allows a user to write a system that keeps trying to run every frame until it succeeds. This is handy for a bunch of use cases that were less friendly to write as always-on systems. Implemented with output `Option<()>` type to allow for users to take advantage of `?` when calling various getter methods. - Adds easier access to components from `World` - Adds methods for removing all systems, providing more flexibility of managing a session from within it
Implemented stop music/sound methods after I realized I couldn't stop the music in my game. Also added options to fade out with two separate custom fade out durations (one for music, and one for sounds).
…ntyped component store. (fishfolk#448)
… `ResizableAlloc`. (fishfolk#458)
…ng connection/create on first request
RockasMockas
changed the title
feat: Add lobbies to matchmaker + separate matches by game id
feat: Matchmaker Rework
Sep 12, 2024
MaxCWhitehead
approved these changes
Sep 28, 2024
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.
Finally actually reviewed this - looks good, thank you!
forgot to merge - I have not yet setup PR for jumpy to switch over but will do that soon after the fact, I've blocked this PR long enough heh. Thanks! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR covers a large rework of the matchmaker and its entire flow to bones & the dev interface. In short the major changes include:
Matchmaker:
Matchmaking Changes:
Lobbies Changes:
Of note, this PR is already quite large and covers the majority of breaking changes to the matchmaker needed in the short term, while getting the flow of matchmaking to feel quite robust with the edge cases addressed. Lobbies still need further work to be robust, and the randomness seed/match_data pushing into the ggrs session runner hasn't been done here yet, however I feel this PR is encompassing enough as-is and would prefer to move forward with smaller/lighter PRs for the extra functionality.