-
Notifications
You must be signed in to change notification settings - Fork 493
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
Lobby service integration #480
Conversation
also adding DIScope extensions - this messaging system is particularly useful with DI and the extension provided allows to easily bind all the necessary interfaces to the DI Scope for easy retrieval of either publisher or subscriber interfaces to the message channel
…f slower update rates than the FPS
Further work is needed to integrate a nice-looking list of public lobbies
Added some more capability to the DI system so that it can handle lazy initialization. Working on the temporary placeholder class LobbyUIManager that contains setup for the di scope of the lobby system and will do other initialization and reactivity
preparation work to refactor the PopupPanel and put lobbies in front of all of our modes of connection
DI scope now reliably works with method and constructor based injection. Renamed and refactored UpdateSlow into UpdateRunner - a tool for non-monobehs to run their update logic and for monobehs that want to save on an extra Update call. Added Bootstrap.cs - a class where we set up core dependencies and that then proceeds to load the first logical scene.
also renamed LobbyUIManager to LobbyUIMediator which is a more accurate reflection of what this class does (an entrypoint to all things LobbyUI)
…trieval exceptions (parsing error)
…logies/com.unity.multiplayer.samples.coop into pdeschain/lobby-integration
Testing in the editor and I'm seeing an oddity in the creation of a lobby. On both IP and relay you have to give your lobby a name before successful creation? I think this should be an option and not a requirement, no? Also the name passed in to the lobby creation text box doesn't match the one displayed in the char select screen. And, I'm hitting a rate limit on Retrieve Lobby as host inside char select screen. |
Not an oddity, expected behavior. Name is a requirement of the lobby API. Maybe we can generate a random string for the user, or highlight that the name is required. The name passed to the lobby is not the code you get displayed in the game. The UI text was not ideal, I've adjusted it to: Room Name -> Join Code You hitting the rate limit on retrieve lobby is not a problem, however I've slightly adjusted the update rate. Should be more rare now. The Host is still needs to re-fetch the data from the lobby service. |
more formatting changes
now there should be no need to filter lobbies out locally
8e6465b
Description (*)
This PR introduces the Unity Lobby service into Boss Room in the form of the following features:
From a technical standpoint this PR builds upon the DIScope, UpdateRunner and MessageChannel PRs and uses them.
Several important changes to the project have been made:
ApplicationController
- a monobehaviour that lives throughout the application lifecycle and is resposnsible for it's lifecycle. We bind and dispose the core DIScope (it lives while the app is alive) in this class. Think of it as "Main" for the entire app....State
component corresponding to it - now theseState
classes actually contain bootstrap logic for the scene - they are the entrypoints into the scene, where we can bind the dependencies that will live while the scene is alive, and then will get disposed with when the scene unloads.LobbyUIMediator
component on it - it's the centerpoint of all the lobby-related UI actions and both create and join UI's are elements of it.The lobby integration bit consists of:
LobbyServiceFacade
- the sole facade we have to interact with for lobby api calls of various kindsLobbyAPIInterface
- a thin wrapper on top of Unity Lobby service calls that adds error handling and other neccessitiesJoinedLobbyContentHeartbeat
- keeps updated on the changes to the joined lobbyLocalLobbyUser
- data for a local player instance (it's displayed name, ID etc)LocalLobby
- a local wrapper around a lobby's remote data.Important:
"-AuthProfile YOUR_VALUE", which would make the auth system use a different profile. Useful when testing with several builds on the same machine.
Related Pull Requests
#463
#462
#461
Issue Number(s) (*)
MTT-2067
MTT-2068
MTT-2069
MTT-2070
Fixes issue(s):
Manual testing scenarios
Questions or comments
Contribution checklist