From 280992942f883d7d4bd209a3f5a5b69282451f59 Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Fri, 23 Sep 2022 11:44:23 -0400 Subject: [PATCH 01/28] first pass, still needs to add links and more details --- README.md | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 73 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index efa7cb09a..74fb612a0 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,33 @@ ![Banner](Documentation/Images/Banner.png) -# Boss Room - Co-op multiplayer RPG and utilities built with Unity Netcode for GameObjects +## Co-op multiplayer RPG and utilities built with Unity Netcode for GameObjects -| Solutions architects are available on [Discord](https://discord.gg/mNgM2XRDpb) and [forums](https://forum.unity.com/forums/multiplayer.26/) to help you work through issues you may encounter when using Boss Room. | +| Support is available on [Discord](https://discord.gg/mNgM2XRDpb) and [forums](https://forum.unity.com/forums/multiplayer.26/) to help you work through issues you may encounter when using Boss Room. | | -- | +## Table of content + + + +- [Boss Room](#boss-room) +- [Index of ressources in this project](#index-of-ressources-in-this-project) + - [Gameplay](#gameplay) + - [Connectivity](#connectivity) + - [Services (Lobby, Relay, etc)](#services-lobby-relay-etc) + - [Boss Room specific utils](#boss-room-specific-utils) + - [Reusable utils](#reusable-utils) +- [Getting the project](#getting-the-project) + - [Direct download](#direct-download) + - [Installing Git LFS to clone locally](#installing-git-lfs-to-clone-locally) +- [Registering the project with Unity Gaming Services (UGS)](#registering-the-project-with-unity-gaming-services-ugs) +- [Opening the project for the first time](#opening-the-project-for-the-first-time) +- [Testing multiplayer](#testing-multiplayer) +- [Exploring the project](#exploring-the-project) +- [Other samples](#other-samples) + - [Bite-size Samples](#bite-size-samples) +- [Contributing](#contributing) + +## Boss Room + Boss Room is a fully functional co-op multiplayer RPG made with Unity Netcode. It is built to serve as an educational sample that showcases certain typical gameplay [patterns](https://docs-multiplayer.unity3d.com/netcode/current/learn/bossroom-examples/bossroom-actions) that are frequently featured in similar networked games. You can use everything in this project as a starting point or as bits and pieces in your own Unity games. The project is licensed under the Unity Companion License. See [LICENSE.md](LICENSE.md) for more legal information. @@ -25,14 +49,58 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o ![](Documentation/Images/Players.png) +## Index of ressources in this project + +### Gameplay +* All Actions + * Action anticipation + * Object spawning for long actions (archer arrow) + * Quick actions with RPCs (mage bolt) + * Teleport + * Client side input tracking before an action (archer AOE) + * Time based action (charged shot) + * object parenting + * physics object throwing +* Characters and objects + * Imp spawning + * In scene placed imps + * State tracking with breakables, switch, doors + * Player/avatar structure + * Character logic +* Interpolation +* Game flow + * Application Controller + * Scene state machine +* Gameplay messaging between classes +* In game lobby (character selection) +### Connectivity +* connection state machine +* session manager +### Services (Lobby, Relay, etc) +* Lobby calls - LobbyServiceFacade +* Relay setup +* Auth +### Boss Room specific utils +* Pooling +* NetworkGuid +### Reusable utils +* Tools + * RNSM +* Netcode hooks +* Spawner +* Session manager +* Relay utils +* Client authority +* Scene utils ## Getting the project +### Direct download - The pre-release version can be downloaded from the [Releases](https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/releases) page. - Alternatively: click the green `Code` button and then choose to download the zip archive. Remember, that you would download the branch that you are currently viewing in Github. - For Windows users: Using Windows' built-in extracting tool may generate a "Error 0x80010135: Path too long" error window which can invalidate the extraction process. A workaround for this is to shorten the zip file to a single character (eg. "c.zip") and move it to the shortest path on your computer (most often right at C:\\) and retry. If that solution fails, another workaround is to extract the downloaded zip file using 7zip. -## Installing Git LFS to clone locally +### Installing Git LFS to clone locally This project uses Git Large Files Support (LFS), which ensures all large assets required locally are handled for the project. See [Git LFS installation options](https://github.com/git-lfs/git-lfs/wiki/Installation) for Windows and Mac instructions. @@ -98,7 +166,8 @@ For an overview of the project's architecture please check out our [ARCHITECTURE For a deep dive in Unity Netcode and Boss Room, visit our [docs site](https://docs-multiplayer.unity3d.com/). -## Bite-size Samples +## Other samples +### Bite-size Samples This repository contains a collection of bitesize sample projects and games that showcase different sub-features of NGO. You can review these samples with documentation to understand APIs and features better. - [Our various bitesize samples](https://github.com/Unity-Technologies/com.unity.multiplayer.samples.bitesize) From eecde0ae8a2681584a5ee12d20c84e646763181e Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Fri, 23 Sep 2022 14:04:07 -0400 Subject: [PATCH 02/28] Adding basis for links --- README.md | 64 +++++++++++++++++++++++++++---------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 74fb612a0..5423b81ba 100644 --- a/README.md +++ b/README.md @@ -53,45 +53,45 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o ### Gameplay * All Actions - * Action anticipation - * Object spawning for long actions (archer arrow) - * Quick actions with RPCs (mage bolt) - * Teleport - * Client side input tracking before an action (archer AOE) - * Time based action (charged shot) - * object parenting - * physics object throwing + * [Action anticipation]() + * [Object spawning for long actions (archer arrow)]() + * [Quick actions with RPCs (mage bolt)]() + * [Teleport]() + * [Client side input tracking before an action (archer AOE)]() + * [Time based action (charged shot)]() + * [object parenting]() + * [physics object throwing]() * Characters and objects - * Imp spawning - * In scene placed imps - * State tracking with breakables, switch, doors - * Player/avatar structure - * Character logic -* Interpolation + * [Imp spawning]() + * [In scene placed imps]() + * [State tracking with breakables, switch, doors]() + * [Player/avatar structure]() + * [Character logic]() +* [Interpolation]() * Game flow - * Application Controller - * Scene state machine -* Gameplay messaging between classes -* In game lobby (character selection) + * [Application Controller]() + * [Scene state machine]() +* [Gameplay messaging between classes]() +* [In game lobby (character selection)]() ### Connectivity -* connection state machine -* session manager +* [connection state machine]() +* [session manager]() ### Services (Lobby, Relay, etc) -* Lobby calls - LobbyServiceFacade -* Relay setup -* Auth +* [Lobby calls - LobbyServiceFacade]() +* [Relay setup]() +* [Auth]() ### Boss Room specific utils -* Pooling -* NetworkGuid +* [Pooling]() +* [NetworkGuid]() ### Reusable utils * Tools - * RNSM -* Netcode hooks -* Spawner -* Session manager -* Relay utils -* Client authority -* Scene utils + * [RNSM]() +* [Netcode hooks]() +* [Spawner]() +* [Session manager]() +* [Relay utils]() +* [Client authority]() +* [Scene utils]() ## Getting the project ### Direct download From 8845bf6ef229510472958b64c1580ed36d56cf7c Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Mon, 26 Sep 2022 11:27:37 -0400 Subject: [PATCH 03/28] iterating on format --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5423b81ba..49ba7f5f5 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,10 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o ### Gameplay * All Actions - * [Action anticipation]() + + | Action anticipation |[Assets/Scripts/Gameplay/Action/Action.cs](Assets/Scripts/Gameplay/Action/Action.cs) - AnticipateActionClient() | + | -- | -- | + * [Object spawning for long actions (archer arrow)]() * [Quick actions with RPCs (mage bolt)]() * [Teleport]() From 7f2836708c751742018f720cddfc510b303c7023 Mon Sep 17 00:00:00 2001 From: Samuel Bellomo Date: Mon, 26 Sep 2022 11:42:56 -0400 Subject: [PATCH 04/28] first pass at mass formatting --- README.md | 78 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 49ba7f5f5..47f632f0e 100644 --- a/README.md +++ b/README.md @@ -54,47 +54,57 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o ### Gameplay * All Actions - | Action anticipation |[Assets/Scripts/Gameplay/Action/Action.cs](Assets/Scripts/Gameplay/Action/Action.cs) - AnticipateActionClient() | - | -- | -- | - - * [Object spawning for long actions (archer arrow)]() - * [Quick actions with RPCs (mage bolt)]() - * [Teleport]() - * [Client side input tracking before an action (archer AOE)]() - * [Time based action (charged shot)]() - * [object parenting]() - * [physics object throwing]() +| Action anticipation | [Assets/Scripts/Gameplay/Action/Action.cs](Assets/Scripts/Gameplay/Action/Action.cs) - AnticipateActionClient() | +| Object spawning for long actions (archer arrow) | [ TODO ]() | +| Quick actions with RPCs (mage bolt) | [ TODO ]() | +| Teleport | [ TODO ]() | +| Client side input tracking before an action (archer AOE) | [ TODO ]() | +| Time based action (charged shot) | [ TODO ]() | +| Object parenting | [ TODO ]() | +| Physics object throwing | [ TODO ]() | +| -- | -- | + * Characters and objects - * [Imp spawning]() - * [In scene placed imps]() - * [State tracking with breakables, switch, doors]() - * [Player/avatar structure]() - * [Character logic]() -* [Interpolation]() +| Imp spawning | [ TODO ]() | +| In scene placed imps | [ TODO ]() | +| State tracking with breakables, switch, doors | [ TODO ]() | +| Player/avatar structure | [ TODO ]() | +| Character logic | [ TODO ]() | +| -- | -- | + +| Interpolation | [ TODO ]() | +| -- | -- | * Game flow - * [Application Controller]() - * [Scene state machine]() -* [Gameplay messaging between classes]() -* [In game lobby (character selection)]() +| Application Controller | [ TODO ]() | +| Scene state machine | [ TODO ]() | +| -- | -- | +| Gameplay messaging between classes | [ TODO ]() | +| In game lobby (character selection) | [ TODO ]() | +| -- | -- | ### Connectivity -* [connection state machine]() -* [session manager]() +| connection state machine | [ TODO ]() | +| session manager | [ TODO ]() | +| -- | -- | ### Services (Lobby, Relay, etc) -* [Lobby calls - LobbyServiceFacade]() -* [Relay setup]() -* [Auth]() +| Lobby calls - LobbyServiceFacade | [ TODO ]() | +| Relay setup | [ TODO ]() | +| Auth | [ TODO ]() | +| -- | -- | ### Boss Room specific utils -* [Pooling]() -* [NetworkGuid]() +| Pooling | [ TODO ]() | +| NetworkGuid | [ TODO ]() | +| -- | -- | ### Reusable utils * Tools - * [RNSM]() -* [Netcode hooks]() -* [Spawner]() -* [Session manager]() -* [Relay utils]() -* [Client authority]() -* [Scene utils]() +| RNSM | [ TODO ]() | +| -- | -- | +| Netcode hooks | [ TODO ]() | +| Spawner | [ TODO ]() | +| Session manager | [ TODO ]() | +| Relay utils | [ TODO ]() | +| Client authority | [ TODO ]() | +| Scene utils | [ TODO ]() | +| -- | -- | ## Getting the project ### Direct download From f3cc443f6e3950bada4a74b57be66a374d4c2486 Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Mon, 26 Sep 2022 11:52:58 -0400 Subject: [PATCH 05/28] global format is fine now --- README.md | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 47f632f0e..91dd464c5 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,7 @@ - [Gameplay](#gameplay) - [Connectivity](#connectivity) - [Services (Lobby, Relay, etc)](#services-lobby-relay-etc) - - [Boss Room specific utils](#boss-room-specific-utils) - - [Reusable utils](#reusable-utils) + - [Utils](#utils) - [Getting the project](#getting-the-project) - [Direct download](#direct-download) - [Installing Git LFS to clone locally](#installing-git-lfs-to-clone-locally) @@ -52,8 +51,9 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o ## Index of ressources in this project ### Gameplay -* All Actions +| All Actions | | +| :-- | --: | | Action anticipation | [Assets/Scripts/Gameplay/Action/Action.cs](Assets/Scripts/Gameplay/Action/Action.cs) - AnticipateActionClient() | | Object spawning for long actions (archer arrow) | [ TODO ]() | | Quick actions with RPCs (mage bolt) | [ TODO ]() | @@ -62,49 +62,59 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o | Time based action (charged shot) | [ TODO ]() | | Object parenting | [ TODO ]() | | Physics object throwing | [ TODO ]() | -| -- | -- | -* Characters and objects +| Characters and objects | | +| :-- | --: | | Imp spawning | [ TODO ]() | | In scene placed imps | [ TODO ]() | | State tracking with breakables, switch, doors | [ TODO ]() | | Player/avatar structure | [ TODO ]() | | Character logic | [ TODO ]() | -| -- | -- | | Interpolation | [ TODO ]() | -| -- | -- | -* Game flow +| :-- | --: | + +| Game flow || +| :-- | --: | | Application Controller | [ TODO ]() | | Scene state machine | [ TODO ]() | -| -- | -- | + + | Gameplay messaging between classes | [ TODO ]() | +| :-- | --: | + | In game lobby (character selection) | [ TODO ]() | -| -- | -- | +| :-- | --: | + ### Connectivity +| Connectivity || +| :-- | --: | | connection state machine | [ TODO ]() | | session manager | [ TODO ]() | -| -- | -- | + + ### Services (Lobby, Relay, etc) +|Services|| +| :-- | --: | | Lobby calls - LobbyServiceFacade | [ TODO ]() | | Relay setup | [ TODO ]() | | Auth | [ TODO ]() | -| -- | -- | -### Boss Room specific utils + +### Utils +| Boss Room specific utils || +| :-- | --: | | Pooling | [ TODO ]() | | NetworkGuid | [ TODO ]() | -| -- | -- | -### Reusable utils -* Tools + +| Reusable utils || +| :-- | --: | | RNSM | [ TODO ]() | -| -- | -- | | Netcode hooks | [ TODO ]() | | Spawner | [ TODO ]() | | Session manager | [ TODO ]() | | Relay utils | [ TODO ]() | | Client authority | [ TODO ]() | | Scene utils | [ TODO ]() | -| -- | -- | ## Getting the project ### Direct download From 4bc30074a6732ac6786e40133ade51a5efa9d27b Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Mon, 26 Sep 2022 11:59:56 -0400 Subject: [PATCH 06/28] First iteration --- README.md | 62 +++++++++++++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 91dd464c5..95b1adecd 100644 --- a/README.md +++ b/README.md @@ -55,66 +55,66 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o | All Actions | | | :-- | --: | | Action anticipation | [Assets/Scripts/Gameplay/Action/Action.cs](Assets/Scripts/Gameplay/Action/Action.cs) - AnticipateActionClient() | -| Object spawning for long actions (archer arrow) | [ TODO ]() | -| Quick actions with RPCs (mage bolt) | [ TODO ]() | -| Teleport | [ TODO ]() | -| Client side input tracking before an action (archer AOE) | [ TODO ]() | -| Time based action (charged shot) | [ TODO ]() | -| Object parenting | [ TODO ]() | -| Physics object throwing | [ TODO ]() | +| Object spawning for long actions (archer arrow) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/LaunchProjectileAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/LaunchProjectileAction.cs) - LaunchProjectile() | +| Quick actions with RPCs (ex: mage bolt) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs) | +| Teleport | [ Assets/Scripts/Gameplay/Action/ConcreteActions/DashAttackAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/DashAttackAction.cs) | +| Client side input tracking before an action (archer AOE) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs) - OnStartClient() | +| Time based action (charged shot) | [ TODO ](TODO) | +| Object parenting | [ TODO ](TODO) | +| Physics object throwing | [ TODO ](TODO) | | Characters and objects | | | :-- | --: | -| Imp spawning | [ TODO ]() | -| In scene placed imps | [ TODO ]() | -| State tracking with breakables, switch, doors | [ TODO ]() | -| Player/avatar structure | [ TODO ]() | -| Character logic | [ TODO ]() | +| Imp spawning | [ TODO ](TODO) | +| In scene placed imps | [ TODO ](TODO) | +| State tracking with breakables, switch, doors | [ TODO ](TODO) | +| Player/avatar structure | [ TODO ](TODO) | +| Character logic | [ TODO ](TODO) | -| Interpolation | [ TODO ]() | +| Interpolation | [ TODO ](TODO) | | :-- | --: | | Game flow || | :-- | --: | -| Application Controller | [ TODO ]() | -| Scene state machine | [ TODO ]() | +| Application Controller | [ TODO ](TODO) | +| Scene state machine | [ TODO ](TODO) | -| Gameplay messaging between classes | [ TODO ]() | +| Gameplay messaging between classes | [ TODO ](TODO) | | :-- | --: | -| In game lobby (character selection) | [ TODO ]() | +| In game lobby (character selection) | [ TODO ](TODO) | | :-- | --: | ### Connectivity | Connectivity || | :-- | --: | -| connection state machine | [ TODO ]() | -| session manager | [ TODO ]() | +| connection state machine | [ TODO ](TODO) | +| session manager | [ TODO ](TODO) | ### Services (Lobby, Relay, etc) |Services|| | :-- | --: | -| Lobby calls - LobbyServiceFacade | [ TODO ]() | -| Relay setup | [ TODO ]() | -| Auth | [ TODO ]() | +| Lobby calls - LobbyServiceFacade | [ TODO ](TODO) | +| Relay setup | [ TODO ](TODO) | +| Auth | [ TODO ](TODO) | ### Utils | Boss Room specific utils || | :-- | --: | -| Pooling | [ TODO ]() | -| NetworkGuid | [ TODO ]() | +| Pooling | [ TODO ](TODO) | +| NetworkGuid | [ TODO ](TODO) | | Reusable utils || | :-- | --: | -| RNSM | [ TODO ]() | -| Netcode hooks | [ TODO ]() | -| Spawner | [ TODO ]() | -| Session manager | [ TODO ]() | -| Relay utils | [ TODO ]() | -| Client authority | [ TODO ]() | -| Scene utils | [ TODO ]() | +| RNSM | [ TODO ](TODO) | +| Netcode hooks | [ TODO ](TODO) | +| Spawner | [ TODO ](TODO) | +| Session manager | [ TODO ](TODO) | +| Relay utils | [ TODO ](TODO) | +| Client authority | [ TODO ](TODO) | +| Scene utils | [ TODO ](TODO) | ## Getting the project ### Direct download From 56556fd1a11f8d971d798b36af588070e263566e Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Mon, 26 Sep 2022 14:01:10 -0400 Subject: [PATCH 07/28] save in progress --- README.md | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 95b1adecd..13390b990 100644 --- a/README.md +++ b/README.md @@ -59,17 +59,22 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o | Quick actions with RPCs (ex: mage bolt) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs) | | Teleport | [ Assets/Scripts/Gameplay/Action/ConcreteActions/DashAttackAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/DashAttackAction.cs) | | Client side input tracking before an action (archer AOE) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs) - OnStartClient() | -| Time based action (charged shot) | [ TODO ](TODO) | -| Object parenting | [ TODO ](TODO) | -| Physics object throwing | [ TODO ](TODO) | +| Time based action (charged shot) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedLaunchProjectileAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedLaunchProjectileAction.cs) | +| Object parenting to animation | [ Assets/Scripts/Gameplay/Action/ConcreteActions/PickUpAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/PickUpAction.cs) | +| Physics object throwing | [ Assets/Scripts/Gameplay/Action/ConcreteActions/TossAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/TossAction.cs) | | Characters and objects | | | :-- | --: | -| Imp spawning | [ TODO ](TODO) | -| In scene placed imps | [ TODO ](TODO) | -| State tracking with breakables, switch, doors | [ TODO ](TODO) | -| Player/avatar structure | [ TODO ](TODO) | -| Character logic | [ TODO ](TODO) | +| Dynamic imp spawning | [ Assets/Scripts/Gameplay/GameplayObjects/ServerWaveSpawner.cs ](Assets/Scripts/Gameplay/GameplayObjects/ServerWaveSpawner.cs) | +| In scene placed imps | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs) | +| State tracking with breakables, switch, doors | [ Assets/Scripts/Gameplay/GameplayObjects/Breakable.cs ](Assets/Scripts/Gameplay/GameplayObjects/Breakable.cs)
[Assets/Scripts/Gameplay/GameplayObjects/FloorSwitch.cs](Assets/Scripts/Gameplay/GameplayObjects/FloorSwitch.cs)
[Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs](Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs) | +| Persistent player (over multiple scenes) | [ Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs ](Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs) | +| Character logic (including player's avatar) | [ Assets/Scripts/Gameplay/GameplayObjects/Character/ ](Assets/Scripts/Gameplay/GameplayObjects/Character/)
[ Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs ](Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs) | + +| Custom serialization and custom messaging || +| :-- | --: | +| Connection approval return
value with custom messaging | [ TODO ](TODO) | +| Character select synced state
custom serialization | [ TODO ](TODO)| | Interpolation | [ TODO ](TODO) | | :-- | --: | @@ -78,7 +83,7 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o | :-- | --: | | Application Controller | [ TODO ](TODO) | | Scene state machine | [ TODO ](TODO) | - +| Synced UI with character select | [ TODO ](TODO) | | Gameplay messaging between classes | [ TODO ](TODO) | | :-- | --: | @@ -89,7 +94,7 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o ### Connectivity | Connectivity || | :-- | --: | -| connection state machine | [ TODO ](TODO) | +| Connection state machine | [ Assets/Scripts/ConnectionManagement/ConnectionManager.cs ](Assets/Scripts/ConnectionManagement/ConnectionManager.cs)
[Assets/Scripts/ConnectionManagement/ConnectionState/](Assets/Scripts/ConnectionManagement/ConnectionState/) | | session manager | [ TODO ](TODO) | From 5a9025c0aa7916caa8731813094e8d6b2e46eb69 Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Mon, 26 Sep 2022 14:19:07 -0400 Subject: [PATCH 08/28] save progress --- README.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 13390b990..3840b8bfc 100644 --- a/README.md +++ b/README.md @@ -65,9 +65,14 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o | Characters and objects | | | :-- | --: | -| Dynamic imp spawning | [ Assets/Scripts/Gameplay/GameplayObjects/ServerWaveSpawner.cs ](Assets/Scripts/Gameplay/GameplayObjects/ServerWaveSpawner.cs) | -| In scene placed imps | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs) | +| Dynamic imp spawning with portals | [ Assets/Scripts/Gameplay/GameplayObjects/ServerWaveSpawner.cs ](Assets/Scripts/Gameplay/GameplayObjects/ServerWaveSpawner.cs) | +| In scene placed dynamic objects (imps) | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs) | +| Static objects (non-destroyables like doors, switches, etc) | [Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs](Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs) | | State tracking with breakables, switch, doors | [ Assets/Scripts/Gameplay/GameplayObjects/Breakable.cs ](Assets/Scripts/Gameplay/GameplayObjects/Breakable.cs)
[Assets/Scripts/Gameplay/GameplayObjects/FloorSwitch.cs](Assets/Scripts/Gameplay/GameplayObjects/FloorSwitch.cs)
[Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs](Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs) | +| NetworkVariable with Enum | [Assets/Scripts/Gameplay/GameState/NetworkPostGame.cs](Assets/Scripts/Gameplay/GameState/NetworkPostGame.cs) | +| NetworkVariable with custom serialization (GUID) | [Assets/Scripts/Infrastructure/NetworkGuid.cs](Assets/Scripts/Infrastructure/NetworkGuid.cs) | +| NetworkVariable with fixed string |[Assets/Scripts/Utils/NetworkNameState.cs](Assets/Scripts/Utils/NetworkNameState.cs)| +| NetworkList with custom serialization (LobbyPlayerState) |[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)| | Persistent player (over multiple scenes) | [ Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs ](Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs) | | Character logic (including player's avatar) | [ Assets/Scripts/Gameplay/GameplayObjects/Character/ ](Assets/Scripts/Gameplay/GameplayObjects/Character/)
[ Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs ](Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs) | @@ -83,6 +88,7 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o | :-- | --: | | Application Controller | [ TODO ](TODO) | | Scene state machine | [ TODO ](TODO) | +| Scene loading and progress sharing | [Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/](Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/)| | Synced UI with character select | [ TODO ](TODO) | | Gameplay messaging between classes | [ TODO ](TODO) | @@ -97,7 +103,6 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o | Connection state machine | [ Assets/Scripts/ConnectionManagement/ConnectionManager.cs ](Assets/Scripts/ConnectionManagement/ConnectionManager.cs)
[Assets/Scripts/ConnectionManagement/ConnectionState/](Assets/Scripts/ConnectionManagement/ConnectionState/) | | session manager | [ TODO ](TODO) | - ### Services (Lobby, Relay, etc) |Services|| | :-- | --: | @@ -108,12 +113,11 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o ### Utils | Boss Room specific utils || | :-- | --: | -| Pooling | [ TODO ](TODO) | +| Network Object Pooling | [ TODO ](TODO) | | NetworkGuid | [ TODO ](TODO) | | Reusable utils || | :-- | --: | -| RNSM | [ TODO ](TODO) | | Netcode hooks | [ TODO ](TODO) | | Spawner | [ TODO ](TODO) | | Session manager | [ TODO ](TODO) | @@ -121,6 +125,12 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o | Client authority | [ TODO ](TODO) | | Scene utils | [ TODO ](TODO) | +| Dev tools || +| :-- | --: | +| RNSM | [ TODO ](TODO) | +| ParrelSync |[ TODO ](TODO) | +| Artificial network conditions |[ TODO ](TODO) | + ## Getting the project ### Direct download - The pre-release version can be downloaded from the [Releases](https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/releases) page. From 42c296a8550c6851872c314e3ef215cc9ba1aa74 Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Mon, 26 Sep 2022 14:37:07 -0400 Subject: [PATCH 09/28] save progress --- README.md | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 3840b8bfc..e57c672a8 100644 --- a/README.md +++ b/README.md @@ -76,32 +76,29 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o | Persistent player (over multiple scenes) | [ Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs ](Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs) | | Character logic (including player's avatar) | [ Assets/Scripts/Gameplay/GameplayObjects/Character/ ](Assets/Scripts/Gameplay/GameplayObjects/Character/)
[ Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs ](Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs) | -| Custom serialization and custom messaging || +| Custom messaging || | :-- | --: | -| Connection approval return
value with custom messaging | [ TODO ](TODO) | -| Character select synced state
custom serialization | [ TODO ](TODO)| +| Connection approval return
value with custom messaging | [ Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs) - WaitToDenyApproval() | +| Networked message channel (inter-class and networked messaging) | [Assets/Scripts/Infrastructure/PubSub/NetworkedMessageChannel.cs](Assets/Scripts/Infrastructure/PubSub/NetworkedMessageChannel.cs) | -| Interpolation | [ TODO ](TODO) | +| Simple interpolation | [ Assets/Scripts/Utils/PositionLerper.cs ](Assets/Scripts/Utils/PositionLerper.cs) | | :-- | --: | | Game flow || | :-- | --: | -| Application Controller | [ TODO ](TODO) | -| Scene state machine | [ TODO ](TODO) | +| Application Controller | [ Assets/Scripts/ApplicationLifecycle/ApplicationController.cs ](Assets/Scripts/ApplicationLifecycle/ApplicationController.cs) | +| Scene state machine | [ Assets/Scripts/Gameplay/GameState/GameStateBehaviour.cs ](Assets/Scripts/Gameplay/GameState/GameStateBehaviour.cs) - And all child classes | | Scene loading and progress sharing | [Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/](Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/)| -| Synced UI with character select | [ TODO ](TODO) | +| Synced UI with character select | [ Assets/Scripts/Gameplay/GameState/ClientCharSelectState.cs ](Assets/Scripts/Gameplay/GameState/ClientCharSelectState.cs) | -| Gameplay messaging between classes | [ TODO ](TODO) | -| :-- | --: | - -| In game lobby (character selection) | [ TODO ](TODO) | +| In game lobby (character selection) | [ Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs ](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/ServerCharSelectState.cs](Assets/Scripts/Gameplay/GameState/ServerCharSelectState.cs) | | :-- | --: | ### Connectivity | Connectivity || | :-- | --: | | Connection state machine | [ Assets/Scripts/ConnectionManagement/ConnectionManager.cs ](Assets/Scripts/ConnectionManagement/ConnectionManager.cs)
[Assets/Scripts/ConnectionManagement/ConnectionState/](Assets/Scripts/ConnectionManagement/ConnectionState/) | -| session manager | [ TODO ](TODO) | +| Session manager | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs) | ### Services (Lobby, Relay, etc) |Services|| From 5fb693e17969e5a3f7d523594859a01103cea92b Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Tue, 27 Sep 2022 16:39:49 -0400 Subject: [PATCH 10/28] save progress --- README.md | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index e57c672a8..d6bfc646e 100644 --- a/README.md +++ b/README.md @@ -103,30 +103,32 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o ### Services (Lobby, Relay, etc) |Services|| | :-- | --: | -| Lobby calls - LobbyServiceFacade | [ TODO ](TODO) | -| Relay setup | [ TODO ](TODO) | -| Auth | [ TODO ](TODO) | +| Lobby and relay - host creation | [ Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs ](Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs) - CreateLobbyRequest() | +| Lobby and relay - client join | [ Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs ](Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs) - JoinLobbyRequest() | + +| Relay Join | [ Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs) - StartClientLobby() | +| Relay Create | [ Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs) - StartHostLobby() | +| Auth | [ Assets/Scripts/UnityServices/Auth/AuthenticationServiceFacade.cs ](Assets/Scripts/UnityServices/Auth/AuthenticationServiceFacade.cs) - EnsurePlayerIsAuthorized() | ### Utils | Boss Room specific utils || | :-- | --: | -| Network Object Pooling | [ TODO ](TODO) | -| NetworkGuid | [ TODO ](TODO) | +| Network Object Pooling | [ Assets/Scripts/Infrastructure/NetworkObjectPool.cs ](Assets/Scripts/Infrastructure/NetworkObjectPool.cs) | +| NetworkGuid | [ Assets/Scripts/Infrastructure/NetworkGuid.cs ](Assets/Scripts/Infrastructure/NetworkGuid.cs) | | Reusable utils || | :-- | --: | -| Netcode hooks | [ TODO ](TODO) | -| Spawner | [ TODO ](TODO) | -| Session manager | [ TODO ](TODO) | -| Relay utils | [ TODO ](TODO) | -| Client authority | [ TODO ](TODO) | -| Scene utils | [ TODO ](TODO) | +| Netcode hooks | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetcodeHooks.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetcodeHooks.cs) | +| Spawner for in-scene objects | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs) | +| Session manager for reconnection | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs) | +| Relay utils | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/UnityRelayUtilities.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/UnityRelayUtilities.cs) | +| Client authority | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/ClientAuthority/ClientNetworkTransform.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/ClientAuthority/ClientNetworkTransform.cs) | +| Scene utils with synced loading screens | [ Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/ ](Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/) | | Dev tools || | :-- | --: | -| RNSM | [ TODO ](TODO) | -| ParrelSync |[ TODO ](TODO) | -| Artificial network conditions |[ TODO ](TODO) | +| RNSM custom config | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/RNSM/CustomNetStatsMonitorConfiguration.asset ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/RNSM/CustomNetStatsMonitorConfiguration.asset) | +| ParrelSync |[ Packages/manifest.json ](Packages/manifest.json) | ## Getting the project ### Direct download From a643c09afcf34ad03fd629dfacfcd543990bb937 Mon Sep 17 00:00:00 2001 From: Samuel Bellomo Date: Tue, 27 Sep 2022 16:41:10 -0400 Subject: [PATCH 11/28] adding template entry so we don't forget adding new items to the index --- .github/PULL_REQUEST_TEMPLATE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index f7734c8d4..eb1ede353 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -18,4 +18,5 @@ - [ ] All commits are accompanied by meaningful commit messages - [ ] JIRA ticket ID is in the PR title or at least one commit message - [ ] Include the ticket ID number within the body message of the PR to create a hyperlink + - [ ] An Index entry has been added in readme.md if applicable From 7bf183a0f3a13a1ca47a066c8be4240ef5dc9bf6 Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Tue, 27 Sep 2022 17:00:18 -0400 Subject: [PATCH 12/28] save progress --- README.md | 57 ++++++++++++++++++++----------------------------------- 1 file changed, 21 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index d6bfc646e..14f4e3805 100644 --- a/README.md +++ b/README.md @@ -52,81 +52,66 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o ### Gameplay -| All Actions | | -| :-- | --: | +| Gameplay | | +| :-- | :-- | | Action anticipation | [Assets/Scripts/Gameplay/Action/Action.cs](Assets/Scripts/Gameplay/Action/Action.cs) - AnticipateActionClient() | -| Object spawning for long actions (archer arrow) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/LaunchProjectileAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/LaunchProjectileAction.cs) - LaunchProjectile() | -| Quick actions with RPCs (ex: mage bolt) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs) | +| Object spawning for
long actions (archer arrow) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/LaunchProjectileAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/LaunchProjectileAction.cs) - LaunchProjectile() | +| Quick actions with
RPCs (ex: mage bolt) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs) | | Teleport | [ Assets/Scripts/Gameplay/Action/ConcreteActions/DashAttackAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/DashAttackAction.cs) | -| Client side input tracking before an action (archer AOE) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs) - OnStartClient() | +| Client side input tracking
before an action (archer AOE) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs) - OnStartClient() | | Time based action (charged shot) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedLaunchProjectileAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedLaunchProjectileAction.cs) | | Object parenting to animation | [ Assets/Scripts/Gameplay/Action/ConcreteActions/PickUpAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/PickUpAction.cs) | | Physics object throwing | [ Assets/Scripts/Gameplay/Action/ConcreteActions/TossAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/TossAction.cs) | - -| Characters and objects | | -| :-- | --: | | Dynamic imp spawning with portals | [ Assets/Scripts/Gameplay/GameplayObjects/ServerWaveSpawner.cs ](Assets/Scripts/Gameplay/GameplayObjects/ServerWaveSpawner.cs) | | In scene placed dynamic objects (imps) | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs) | -| Static objects (non-destroyables like doors, switches, etc) | [Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs](Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs) | -| State tracking with breakables, switch, doors | [ Assets/Scripts/Gameplay/GameplayObjects/Breakable.cs ](Assets/Scripts/Gameplay/GameplayObjects/Breakable.cs)
[Assets/Scripts/Gameplay/GameplayObjects/FloorSwitch.cs](Assets/Scripts/Gameplay/GameplayObjects/FloorSwitch.cs)
[Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs](Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs) | +| Static objects (non-destroyables
like doors, switches, etc) | [Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs](Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs) | +| State tracking with breakables,
switch, doors | [ Assets/Scripts/Gameplay/GameplayObjects/Breakable.cs ](Assets/Scripts/Gameplay/GameplayObjects/Breakable.cs)
[Assets/Scripts/Gameplay/GameplayObjects/FloorSwitch.cs](Assets/Scripts/Gameplay/GameplayObjects/FloorSwitch.cs)
[Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs](Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs) | | NetworkVariable with Enum | [Assets/Scripts/Gameplay/GameState/NetworkPostGame.cs](Assets/Scripts/Gameplay/GameState/NetworkPostGame.cs) | -| NetworkVariable with custom serialization (GUID) | [Assets/Scripts/Infrastructure/NetworkGuid.cs](Assets/Scripts/Infrastructure/NetworkGuid.cs) | +| NetworkVariable with custom
serialization (GUID) | [Assets/Scripts/Infrastructure/NetworkGuid.cs](Assets/Scripts/Infrastructure/NetworkGuid.cs) | | NetworkVariable with fixed string |[Assets/Scripts/Utils/NetworkNameState.cs](Assets/Scripts/Utils/NetworkNameState.cs)| -| NetworkList with custom serialization (LobbyPlayerState) |[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)| -| Persistent player (over multiple scenes) | [ Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs ](Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs) | -| Character logic (including player's avatar) | [ Assets/Scripts/Gameplay/GameplayObjects/Character/ ](Assets/Scripts/Gameplay/GameplayObjects/Character/)
[ Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs ](Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs) | +| NetworkList with custom
serialization (LobbyPlayerState) |[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)| +| Persistent player (over
multiple scenes) | [ Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs ](Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs) | +| Character logic (including
player's avatar) | [ Assets/Scripts/Gameplay/GameplayObjects/Character/ ](Assets/Scripts/Gameplay/GameplayObjects/Character/)
[ Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs ](Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs) | -| Custom messaging || -| :-- | --: | -| Connection approval return
value with custom messaging | [ Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs) - WaitToDenyApproval() | -| Networked message channel (inter-class and networked messaging) | [Assets/Scripts/Infrastructure/PubSub/NetworkedMessageChannel.cs](Assets/Scripts/Infrastructure/PubSub/NetworkedMessageChannel.cs) | - -| Simple interpolation | [ Assets/Scripts/Utils/PositionLerper.cs ](Assets/Scripts/Utils/PositionLerper.cs) | -| :-- | --: | - -| Game flow || +### Game Flow +| Game Flow || | :-- | --: | | Application Controller | [ Assets/Scripts/ApplicationLifecycle/ApplicationController.cs ](Assets/Scripts/ApplicationLifecycle/ApplicationController.cs) | -| Scene state machine | [ Assets/Scripts/Gameplay/GameState/GameStateBehaviour.cs ](Assets/Scripts/Gameplay/GameState/GameStateBehaviour.cs) - And all child classes | +| Game flow state machine | [ Assets/Scripts/Gameplay/GameState/GameStateBehaviour.cs ](Assets/Scripts/Gameplay/GameState/GameStateBehaviour.cs) - And all child classes | | Scene loading and progress sharing | [Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/](Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/)| | Synced UI with character select | [ Assets/Scripts/Gameplay/GameState/ClientCharSelectState.cs ](Assets/Scripts/Gameplay/GameState/ClientCharSelectState.cs) | - | In game lobby (character selection) | [ Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs ](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/ServerCharSelectState.cs](Assets/Scripts/Gameplay/GameState/ServerCharSelectState.cs) | -| :-- | --: | +| Win state | [Assets/Scripts/Gameplay/GameState/PersistentGameState.cs](Assets/Scripts/Gameplay/GameState/PersistentGameState.cs) | ### Connectivity | Connectivity || | :-- | --: | +| Connection approval return
value with custom messaging | [ Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs) - WaitToDenyApproval() | | Connection state machine | [ Assets/Scripts/ConnectionManagement/ConnectionManager.cs ](Assets/Scripts/ConnectionManagement/ConnectionManager.cs)
[Assets/Scripts/ConnectionManagement/ConnectionState/](Assets/Scripts/ConnectionManagement/ConnectionState/) | | Session manager | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs) | ### Services (Lobby, Relay, etc) |Services|| -| :-- | --: | +| :-- | :-- | | Lobby and relay - host creation | [ Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs ](Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs) - CreateLobbyRequest() | | Lobby and relay - client join | [ Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs ](Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs) - JoinLobbyRequest() | - | Relay Join | [ Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs) - StartClientLobby() | | Relay Create | [ Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs) - StartHostLobby() | | Auth | [ Assets/Scripts/UnityServices/Auth/AuthenticationServiceFacade.cs ](Assets/Scripts/UnityServices/Auth/AuthenticationServiceFacade.cs) - EnsurePlayerIsAuthorized() | -### Utils -| Boss Room specific utils || +### Tools and Utilities +| Tools and Utilities || | :-- | --: | +| Networked message channel (inter-class and networked messaging) | [Assets/Scripts/Infrastructure/PubSub/NetworkedMessageChannel.cs](Assets/Scripts/Infrastructure/PubSub/NetworkedMessageChannel.cs) | +| Simple interpolation | [ Assets/Scripts/Utils/PositionLerper.cs ](Assets/Scripts/Utils/PositionLerper.cs) | | Network Object Pooling | [ Assets/Scripts/Infrastructure/NetworkObjectPool.cs ](Assets/Scripts/Infrastructure/NetworkObjectPool.cs) | | NetworkGuid | [ Assets/Scripts/Infrastructure/NetworkGuid.cs ](Assets/Scripts/Infrastructure/NetworkGuid.cs) | - -| Reusable utils || -| :-- | --: | | Netcode hooks | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetcodeHooks.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetcodeHooks.cs) | | Spawner for in-scene objects | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs) | | Session manager for reconnection | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs) | | Relay utils | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/UnityRelayUtilities.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/UnityRelayUtilities.cs) | | Client authority | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/ClientAuthority/ClientNetworkTransform.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/ClientAuthority/ClientNetworkTransform.cs) | | Scene utils with synced loading screens | [ Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/ ](Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/) | - -| Dev tools || -| :-- | --: | | RNSM custom config | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/RNSM/CustomNetStatsMonitorConfiguration.asset ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/RNSM/CustomNetStatsMonitorConfiguration.asset) | | ParrelSync |[ Packages/manifest.json ](Packages/manifest.json) | From 2ba6c16ae1ad14f90e7090bf760ffbf96a5d8fdc Mon Sep 17 00:00:00 2001 From: Samuel Bellomo Date: Tue, 27 Sep 2022 18:07:23 -0400 Subject: [PATCH 13/28] better format --- README.md | 113 +++++++++++++++++++++++++----------------------------- 1 file changed, 53 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index 14f4e3805..12b25615c 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,10 @@ - [Boss Room](#boss-room) - [Index of ressources in this project](#index-of-ressources-in-this-project) - [Gameplay](#gameplay) + - [Game Flow](#game-flow) - [Connectivity](#connectivity) - [Services (Lobby, Relay, etc)](#services-lobby-relay-etc) - - [Utils](#utils) + - [Tools and Utilities](#tools-and-utilities) - [Getting the project](#getting-the-project) - [Direct download](#direct-download) - [Installing Git LFS to clone locally](#installing-git-lfs-to-clone-locally) @@ -51,69 +52,61 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o ## Index of ressources in this project ### Gameplay - -| Gameplay | | -| :-- | :-- | -| Action anticipation | [Assets/Scripts/Gameplay/Action/Action.cs](Assets/Scripts/Gameplay/Action/Action.cs) - AnticipateActionClient() | -| Object spawning for
long actions (archer arrow) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/LaunchProjectileAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/LaunchProjectileAction.cs) - LaunchProjectile() | -| Quick actions with
RPCs (ex: mage bolt) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs) | -| Teleport | [ Assets/Scripts/Gameplay/Action/ConcreteActions/DashAttackAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/DashAttackAction.cs) | -| Client side input tracking
before an action (archer AOE) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs) - OnStartClient() | -| Time based action (charged shot) | [ Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedLaunchProjectileAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedLaunchProjectileAction.cs) | -| Object parenting to animation | [ Assets/Scripts/Gameplay/Action/ConcreteActions/PickUpAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/PickUpAction.cs) | -| Physics object throwing | [ Assets/Scripts/Gameplay/Action/ConcreteActions/TossAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/TossAction.cs) | -| Dynamic imp spawning with portals | [ Assets/Scripts/Gameplay/GameplayObjects/ServerWaveSpawner.cs ](Assets/Scripts/Gameplay/GameplayObjects/ServerWaveSpawner.cs) | -| In scene placed dynamic objects (imps) | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs) | -| Static objects (non-destroyables
like doors, switches, etc) | [Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs](Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs) | -| State tracking with breakables,
switch, doors | [ Assets/Scripts/Gameplay/GameplayObjects/Breakable.cs ](Assets/Scripts/Gameplay/GameplayObjects/Breakable.cs)
[Assets/Scripts/Gameplay/GameplayObjects/FloorSwitch.cs](Assets/Scripts/Gameplay/GameplayObjects/FloorSwitch.cs)
[Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs](Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs) | -| NetworkVariable with Enum | [Assets/Scripts/Gameplay/GameState/NetworkPostGame.cs](Assets/Scripts/Gameplay/GameState/NetworkPostGame.cs) | -| NetworkVariable with custom
serialization (GUID) | [Assets/Scripts/Infrastructure/NetworkGuid.cs](Assets/Scripts/Infrastructure/NetworkGuid.cs) | -| NetworkVariable with fixed string |[Assets/Scripts/Utils/NetworkNameState.cs](Assets/Scripts/Utils/NetworkNameState.cs)| -| NetworkList with custom
serialization (LobbyPlayerState) |[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)| -| Persistent player (over
multiple scenes) | [ Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs ](Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs) | -| Character logic (including
player's avatar) | [ Assets/Scripts/Gameplay/GameplayObjects/Character/ ](Assets/Scripts/Gameplay/GameplayObjects/Character/)
[ Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs ](Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs) | +* Action anticipation - AnticipateActionClient() in [Assets/Scripts/Gameplay/Action/Action.cs](Assets/Scripts/Gameplay/Action/Action.cs) +* Object spawning for long actions (archer arrow) - LaunchProjectile() in [Assets/Scripts/Gameplay/Action/ConcreteActions/LaunchProjectileAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/LaunchProjectileAction.cs) +* Quick actions with RPCs (ex: mage bolt) - [Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/FXProjectileTargetedAction.cs) +* Teleport - [Assets/Scripts/Gameplay/Action/ConcreteActions/DashAttackAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/DashAttackAction.cs) +* Client side input tracking before an action (archer AOE) - OnStartClient() in [Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/AOEAction.cs) +* Time based action (charged shot) - [Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedLaunchProjectileAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/ChargedLaunchProjectileAction.cs) +* Object parenting to animation - [Assets/Scripts/Gameplay/Action/ConcreteActions/PickUpAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/PickUpAction.cs) +* Physics object throwing - [Assets/Scripts/Gameplay/Action/ConcreteActions/TossAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/TossAction.cs) +* Dynamic imp spawning with portals - [Assets/Scripts/Gameplay/GameplayObjects/ServerWaveSpawner.cs ](Assets/Scripts/Gameplay/GameplayObjects/ServerWaveSpawner.cs) +* In scene placed dynamic objects (imps) - [Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs) +* Static objects (non-destroyableslike doors, switches, etc) - [Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs](Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs) +* State tracking with breakables, switch, doors + * [Assets/Scripts/Gameplay/GameplayObjects/Breakable.cs ](Assets/Scripts/Gameplay/GameplayObjects/Breakable.cs) + * [Assets/Scripts/Gameplay/GameplayObjects/FloorSwitch.cs](Assets/Scripts/Gameplay/GameplayObjects/FloorSwitch.cs) + * [Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs](Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs) +* NetworkVariable with Enum - [Assets/Scripts/Gameplay/GameState/NetworkPostGame.cs](Assets/Scripts/Gameplay/GameState/NetworkPostGame.cs) +* NetworkVariable with custom serialization (GUID) - [Assets/Scripts/Infrastructure/NetworkGuid.cs](Assets/Scripts/Infrastructure/NetworkGuid.cs) +* NetworkVariable with fixed string |[Assets/Scripts/Utils/NetworkNameState.cs](Assets/Scripts/Utils/NetworkNameState.cs) +* NetworkList with custom serialization (LobbyPlayerState) |[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs) +* Persistent player (over multiple scenes) - [Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs ](Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs) +* Character logic (including player's avatar) - [Assets/Scripts/Gameplay/GameplayObjects/Character/ ](Assets/Scripts/Gameplay/GameplayObjects/Character/)
[ Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs ](Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs) ### Game Flow -| Game Flow || -| :-- | --: | -| Application Controller | [ Assets/Scripts/ApplicationLifecycle/ApplicationController.cs ](Assets/Scripts/ApplicationLifecycle/ApplicationController.cs) | -| Game flow state machine | [ Assets/Scripts/Gameplay/GameState/GameStateBehaviour.cs ](Assets/Scripts/Gameplay/GameState/GameStateBehaviour.cs) - And all child classes | -| Scene loading and progress sharing | [Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/](Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/)| -| Synced UI with character select | [ Assets/Scripts/Gameplay/GameState/ClientCharSelectState.cs ](Assets/Scripts/Gameplay/GameState/ClientCharSelectState.cs) | -| In game lobby (character selection) | [ Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs ](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/ServerCharSelectState.cs](Assets/Scripts/Gameplay/GameState/ServerCharSelectState.cs) | -| Win state | [Assets/Scripts/Gameplay/GameState/PersistentGameState.cs](Assets/Scripts/Gameplay/GameState/PersistentGameState.cs) | +* Application Controller - [Assets/Scripts/ApplicationLifecycle/ApplicationController.cs ](Assets/Scripts/ApplicationLifecycle/ApplicationController.cs) +* Game flow state machine - All child classes in [Assets/Scripts/Gameplay/GameState/GameStateBehaviour.cs ](Assets/Scripts/Gameplay/GameState/GameStateBehaviour.cs) +* Scene loading and progress sharing - [ackages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/](Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/) +* Synced UI with character select - [Assets/Scripts/Gameplay/GameState/ClientCharSelectState.cs ](Assets/Scripts/Gameplay/GameState/ClientCharSelectState.cs) +* In game lobby (character selection) - [Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs ](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/ServerCharSelectState.cs](Assets/Scripts/Gameplay/GameState/ServerCharSelectState.cs) +* Win state - [Assets/Scripts/Gameplay/GameState/PersistentGameState.cs](Assets/Scripts/Gameplay/GameState/PersistentGameState.cs) ### Connectivity -| Connectivity || -| :-- | --: | -| Connection approval return
value with custom messaging | [ Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs) - WaitToDenyApproval() | -| Connection state machine | [ Assets/Scripts/ConnectionManagement/ConnectionManager.cs ](Assets/Scripts/ConnectionManagement/ConnectionManager.cs)
[Assets/Scripts/ConnectionManagement/ConnectionState/](Assets/Scripts/ConnectionManagement/ConnectionState/) | -| Session manager | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs) | +* Connection approval return value with custom messaging - WaitToDenyApproval() in [Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs) +* Connection state machine - [Assets/Scripts/ConnectionManagement/ConnectionManager.cs ](Assets/Scripts/ConnectionManagement/ConnectionManager.cs)
[Assets/Scripts/ConnectionManagement/ConnectionState/](Assets/Scripts/ConnectionManagement/ConnectionState/) +* Session manager - [Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs) ### Services (Lobby, Relay, etc) -|Services|| -| :-- | :-- | -| Lobby and relay - host creation | [ Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs ](Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs) - CreateLobbyRequest() | -| Lobby and relay - client join | [ Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs ](Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs) - JoinLobbyRequest() | -| Relay Join | [ Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs) - StartClientLobby() | -| Relay Create | [ Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs) - StartHostLobby() | -| Auth | [ Assets/Scripts/UnityServices/Auth/AuthenticationServiceFacade.cs ](Assets/Scripts/UnityServices/Auth/AuthenticationServiceFacade.cs) - EnsurePlayerIsAuthorized() | +* Lobby and relay - host creation - CreateLobbyRequest() in [Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs ](Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs) +* Lobby and relay - client join - JoinLobbyRequest() in [Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs ](Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs) +* Relay Join - StartClientLobby() in [Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs) +* Relay Create - StartHostLobby() in [Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs) +* Auth - EnsurePlayerIsAuthorized() in [Assets/Scripts/UnityServices/Auth/AuthenticationServiceFacade.cs ](Assets/Scripts/UnityServices/Auth/AuthenticationServiceFacade.cs) ### Tools and Utilities -| Tools and Utilities || -| :-- | --: | -| Networked message channel (inter-class and networked messaging) | [Assets/Scripts/Infrastructure/PubSub/NetworkedMessageChannel.cs](Assets/Scripts/Infrastructure/PubSub/NetworkedMessageChannel.cs) | -| Simple interpolation | [ Assets/Scripts/Utils/PositionLerper.cs ](Assets/Scripts/Utils/PositionLerper.cs) | -| Network Object Pooling | [ Assets/Scripts/Infrastructure/NetworkObjectPool.cs ](Assets/Scripts/Infrastructure/NetworkObjectPool.cs) | -| NetworkGuid | [ Assets/Scripts/Infrastructure/NetworkGuid.cs ](Assets/Scripts/Infrastructure/NetworkGuid.cs) | -| Netcode hooks | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetcodeHooks.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetcodeHooks.cs) | -| Spawner for in-scene objects | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs) | -| Session manager for reconnection | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs) | -| Relay utils | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/UnityRelayUtilities.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/UnityRelayUtilities.cs) | -| Client authority | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/ClientAuthority/ClientNetworkTransform.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/ClientAuthority/ClientNetworkTransform.cs) | -| Scene utils with synced loading screens | [ Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/ ](Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/) | -| RNSM custom config | [ Packages/com.unity.multiplayer.samples.coop/Utilities/Net/RNSM/CustomNetStatsMonitorConfiguration.asset ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/RNSM/CustomNetStatsMonitorConfiguration.asset) | -| ParrelSync |[ Packages/manifest.json ](Packages/manifest.json) | +* Networked message channel (inter-class and networked messaging) - [Assets/Scripts/Infrastructure/PubSub/NetworkedMessageChannel.cs](Assets/Scripts/Infrastructure/PubSub/NetworkedMessageChannel.cs) +* Simple interpolation - [Assets/Scripts/Utils/PositionLerper.cs ](Assets/Scripts/Utils/PositionLerper.cs) +* Network Object Pooling - [Assets/Scripts/Infrastructure/NetworkObjectPool.cs ](Assets/Scripts/Infrastructure/NetworkObjectPool.cs) +* NetworkGuid - [Assets/Scripts/Infrastructure/NetworkGuid.cs ](Assets/Scripts/Infrastructure/NetworkGuid.cs) +* Netcode hooks - [Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetcodeHooks.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetcodeHooks.cs) +* Spawner for in-scene objects - [Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs) +* Session manager for reconnection - [Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs) +* Relay utils - [Packages/com.unity.multiplayer.samples.coop/Utilities/Net/UnityRelayUtilities.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/UnityRelayUtilities.cs) +* Client authority - [Packages/com.unity.multiplayer.samples.coop/Utilities/Net/ClientAuthority/ClientNetworkTransform.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/ClientAuthority/ClientNetworkTransform.cs) +* Scene utils with synced loading screens - [Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/ ](Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/) +* RNSM custom config - [Packages/com.unity.multiplayer.samples.coop/Utilities/Net/RNSM/CustomNetStatsMonitorConfiguration.asset ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/RNSM/CustomNetStatsMonitorConfiguration.asset) +* ParrelSync - [ Packages/manifest.json ](Packages/manifest.json) ## Getting the project ### Direct download @@ -124,7 +117,7 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o ### Installing Git LFS to clone locally -This project uses Git Large Files Support (LFS), which ensures all large assets required locally are handled for the project. See [Git LFS installation options](https://github.com/git-lfs/git-lfs/wiki/Installation) for Windows and Mac instructions. +This project uses Git Large Files Support (LFS), which ensures all large assets required locally are handled for the project. See [Git LFS installation options](https://github.com/git-lfs/git-lfs/wiki/Installation) for Windows and Mac instructions. ## Registering the project with Unity Gaming Services (UGS) @@ -174,11 +167,11 @@ Alternatively you can use Port Forwarding. The https://portforward.com/ site has ------------------------------------------ ## Exploring the project -BossRoom is an eight-player co-op RPG game experience, where players collaborate to take down some minions, and then a boss. Players can select between classes that each have skills with didactically interesting networking characteristics. Control model is click-to-move, with skills triggered by mouse button or hotkey. +BossRoom is an eight-player co-op RPG game experience, where players collaborate to take down some minions, and then a boss. Players can select between classes that each have skills with didactically interesting networking characteristics. Control model is click-to-move, with skills triggered by mouse button or hotkey. One of the eight clients acts as the host/server. That client will use a compositional approach so that its entities have both server and client components. -The game is server-authoritative, with latency-masking animations. Position updates are done through NetworkedVars that sync position, rotation and movement speed. NetworkedVars and Remote Procedure Calls (RPC) endpoints are isolated in a class that is shared between the server and client specialized logic components. All game logic runs in FixedUpdate at 30 Hz, matching our network update rate. +The game is server-authoritative, with latency-masking animations. Position updates are done through NetworkedVars that sync position, rotation and movement speed. NetworkedVars and Remote Procedure Calls (RPC) endpoints are isolated in a class that is shared between the server and client specialized logic components. All game logic runs in FixedUpdate at 30 Hz, matching our network update rate. Code is organized into three separate assemblies: **Client**, **Shared** and **Server** which reference each other when appropriate. @@ -204,7 +197,7 @@ To get the project on your machine you need to clone the repository from GitHub git clone https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop.git ``` -> __IMPORTANT__: +> __IMPORTANT__: > You should have [Git LFS](https://git-lfs.github.com/) installed on your local machine. Please check out [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on submitting issues and PRs to BossRoom! From 9d8e89fce974abb5e908f821e3a09ab563cef99d Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Wed, 28 Sep 2022 11:19:36 -0400 Subject: [PATCH 14/28] Update README.md Co-authored-by: Fernando Cortez --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 12b25615c..0dab306d8 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ - [Boss Room](#boss-room) -- [Index of ressources in this project](#index-of-ressources-in-this-project) +- [Index of resources in this project](#index-of-ressources-in-this-project) - [Gameplay](#gameplay) - [Game Flow](#game-flow) - [Connectivity](#connectivity) From f2265881917c22a0396a41b022ca068fa28af50b Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Wed, 28 Sep 2022 11:19:45 -0400 Subject: [PATCH 15/28] Update README.md Co-authored-by: Fernando Cortez --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0dab306d8..53a767deb 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o * Physics object throwing - [Assets/Scripts/Gameplay/Action/ConcreteActions/TossAction.cs ](Assets/Scripts/Gameplay/Action/ConcreteActions/TossAction.cs) * Dynamic imp spawning with portals - [Assets/Scripts/Gameplay/GameplayObjects/ServerWaveSpawner.cs ](Assets/Scripts/Gameplay/GameplayObjects/ServerWaveSpawner.cs) * In scene placed dynamic objects (imps) - [Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/NetworkObjectSpawner.cs) -* Static objects (non-destroyableslike doors, switches, etc) - [Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs](Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs) +* Static objects (non-destroyables like doors, switches, etc) - [Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs](Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs) * State tracking with breakables, switch, doors * [Assets/Scripts/Gameplay/GameplayObjects/Breakable.cs ](Assets/Scripts/Gameplay/GameplayObjects/Breakable.cs) * [Assets/Scripts/Gameplay/GameplayObjects/FloorSwitch.cs](Assets/Scripts/Gameplay/GameplayObjects/FloorSwitch.cs) From 96fd63b2be0ad6f8dcdc9b59f43caaa22ba729ab Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Wed, 28 Sep 2022 11:20:01 -0400 Subject: [PATCH 16/28] Update README.md Co-authored-by: Fernando Cortez --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 53a767deb..0fd7f9b9e 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o * [Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs](Assets/Scripts/Gameplay/GameplayObjects/SwitchedDoor.cs) * NetworkVariable with Enum - [Assets/Scripts/Gameplay/GameState/NetworkPostGame.cs](Assets/Scripts/Gameplay/GameState/NetworkPostGame.cs) * NetworkVariable with custom serialization (GUID) - [Assets/Scripts/Infrastructure/NetworkGuid.cs](Assets/Scripts/Infrastructure/NetworkGuid.cs) -* NetworkVariable with fixed string |[Assets/Scripts/Utils/NetworkNameState.cs](Assets/Scripts/Utils/NetworkNameState.cs) +* NetworkVariable with fixed string - [Assets/Scripts/Utils/NetworkNameState.cs](Assets/Scripts/Utils/NetworkNameState.cs) * NetworkList with custom serialization (LobbyPlayerState) |[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs) * Persistent player (over multiple scenes) - [Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs ](Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs) * Character logic (including player's avatar) - [Assets/Scripts/Gameplay/GameplayObjects/Character/ ](Assets/Scripts/Gameplay/GameplayObjects/Character/)
[ Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs ](Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs) From 4d3cdf9626c70ee579619b0b401e3973b432a88b Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Wed, 28 Sep 2022 11:29:12 -0400 Subject: [PATCH 17/28] Apply suggestions from code review Co-authored-by: Fernando Cortez --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0fd7f9b9e..afd75b565 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o * NetworkVariable with Enum - [Assets/Scripts/Gameplay/GameState/NetworkPostGame.cs](Assets/Scripts/Gameplay/GameState/NetworkPostGame.cs) * NetworkVariable with custom serialization (GUID) - [Assets/Scripts/Infrastructure/NetworkGuid.cs](Assets/Scripts/Infrastructure/NetworkGuid.cs) * NetworkVariable with fixed string - [Assets/Scripts/Utils/NetworkNameState.cs](Assets/Scripts/Utils/NetworkNameState.cs) -* NetworkList with custom serialization (LobbyPlayerState) |[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs) +* NetworkList with custom serialization (LobbyPlayerState) - [Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs) * Persistent player (over multiple scenes) - [Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs ](Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs) * Character logic (including player's avatar) - [Assets/Scripts/Gameplay/GameplayObjects/Character/ ](Assets/Scripts/Gameplay/GameplayObjects/Character/)
[ Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs ](Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs) @@ -79,7 +79,7 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o * Game flow state machine - All child classes in [Assets/Scripts/Gameplay/GameState/GameStateBehaviour.cs ](Assets/Scripts/Gameplay/GameState/GameStateBehaviour.cs) * Scene loading and progress sharing - [ackages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/](Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/) * Synced UI with character select - [Assets/Scripts/Gameplay/GameState/ClientCharSelectState.cs ](Assets/Scripts/Gameplay/GameState/ClientCharSelectState.cs) -* In game lobby (character selection) - [Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs ](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/ServerCharSelectState.cs](Assets/Scripts/Gameplay/GameState/ServerCharSelectState.cs) +* In-game lobby (character selection) - [Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs ](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/ServerCharSelectState.cs](Assets/Scripts/Gameplay/GameState/ServerCharSelectState.cs) * Win state - [Assets/Scripts/Gameplay/GameState/PersistentGameState.cs](Assets/Scripts/Gameplay/GameState/PersistentGameState.cs) ### Connectivity @@ -92,7 +92,7 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o * Lobby and relay - client join - JoinLobbyRequest() in [Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs ](Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs) * Relay Join - StartClientLobby() in [Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs) * Relay Create - StartHostLobby() in [Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/OfflineState.cs) -* Auth - EnsurePlayerIsAuthorized() in [Assets/Scripts/UnityServices/Auth/AuthenticationServiceFacade.cs ](Assets/Scripts/UnityServices/Auth/AuthenticationServiceFacade.cs) +* Authentication - EnsurePlayerIsAuthorized() in [Assets/Scripts/UnityServices/Auth/AuthenticationServiceFacade.cs ](Assets/Scripts/UnityServices/Auth/AuthenticationServiceFacade.cs) ### Tools and Utilities * Networked message channel (inter-class and networked messaging) - [Assets/Scripts/Infrastructure/PubSub/NetworkedMessageChannel.cs](Assets/Scripts/Infrastructure/PubSub/NetworkedMessageChannel.cs) @@ -167,13 +167,13 @@ Alternatively you can use Port Forwarding. The https://portforward.com/ site has ------------------------------------------ ## Exploring the project -BossRoom is an eight-player co-op RPG game experience, where players collaborate to take down some minions, and then a boss. Players can select between classes that each have skills with didactically interesting networking characteristics. Control model is click-to-move, with skills triggered by mouse button or hotkey. +BossRoom is an eight-player co-op RPG game experience, where players collaborate to take down some imps, and then a boss. Players can select between classes that each have skills with didactically interesting networking characteristics. Control model is click-to-move, with skills triggered by mouse button or hotkey. One of the eight clients acts as the host/server. That client will use a compositional approach so that its entities have both server and client components. The game is server-authoritative, with latency-masking animations. Position updates are done through NetworkedVars that sync position, rotation and movement speed. NetworkedVars and Remote Procedure Calls (RPC) endpoints are isolated in a class that is shared between the server and client specialized logic components. All game logic runs in FixedUpdate at 30 Hz, matching our network update rate. -Code is organized into three separate assemblies: **Client**, **Shared** and **Server** which reference each other when appropriate. +Code is organized in domain based assemblies. See our [Architecture.md](Architecture.md) file for more details. For an overview of the project's architecture please check out our [ARCHITECTURE.md](ARCHITECTURE.md). From bd53d67aba4532bba87bd3bcf3f4b1e66a8ff3a7 Mon Sep 17 00:00:00 2001 From: Samuel Bellomo Date: Wed, 28 Sep 2022 11:30:51 -0400 Subject: [PATCH 18/28] removing useless step --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 12b25615c..7c9ba3847 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,6 @@ Once you have downloaded the project, the steps below should get you up and runn - Make sure to include standalone support for Windows/Mac in your installation. - Add the project in _Unity Hub_ by clicking on **Add** button and pointing it to the root folder of the downloaded project. - The first time you open the project Unity will import all assets, which will take longer than usual - it is normal. - - Once the editor is ready, navigate to the _Project_ window and open the _Project/Startup_ scene. ![](Documentation/Images/StartupScene.png) - From there you can click the **Play** button. You can host a new game or join an existing game using the in-game UI. From 975fbb83b3599a02abfee99c724f0389ccb778a6 Mon Sep 17 00:00:00 2001 From: Samuel Bellomo Date: Wed, 28 Sep 2022 11:35:20 -0400 Subject: [PATCH 19/28] fix name --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 67082bb02..d66665c5e 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ - [Boss Room](#boss-room) -- [Index of resources in this project](#index-of-ressources-in-this-project) +- [Index of resources in this project](#index-of-resources-in-this-project) - [Gameplay](#gameplay) - [Game Flow](#game-flow) - [Connectivity](#connectivity) @@ -49,7 +49,7 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o ![](Documentation/Images/Players.png) -## Index of ressources in this project +## Index of resources in this project ### Gameplay * Action anticipation - AnticipateActionClient() in [Assets/Scripts/Gameplay/Action/Action.cs](Assets/Scripts/Gameplay/Action/Action.cs) From 5baa5e1bf8b1f5d41891a1feb20f9853a949b9b1 Mon Sep 17 00:00:00 2001 From: Samuel Bellomo Date: Wed, 28 Sep 2022 16:17:10 -0400 Subject: [PATCH 20/28] removing untrue sentence --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d66665c5e..cd9b4f78f 100644 --- a/README.md +++ b/README.md @@ -170,7 +170,7 @@ BossRoom is an eight-player co-op RPG game experience, where players collaborate One of the eight clients acts as the host/server. That client will use a compositional approach so that its entities have both server and client components. -The game is server-authoritative, with latency-masking animations. Position updates are done through NetworkedVars that sync position, rotation and movement speed. NetworkedVars and Remote Procedure Calls (RPC) endpoints are isolated in a class that is shared between the server and client specialized logic components. All game logic runs in FixedUpdate at 30 Hz, matching our network update rate. +The game is server-authoritative, with latency-masking animations. Position updates are done through NetworkedVars that sync position, rotation and movement speed. NetworkedVars and Remote Procedure Calls (RPC) endpoints are isolated in a class that is shared between the server and client specialized logic components. Code is organized in domain based assemblies. See our [Architecture.md](Architecture.md) file for more details. From c95eb36ca63bf4f97e63b2c30b9f8f29baf7712e Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Wed, 28 Sep 2022 16:27:42 -0400 Subject: [PATCH 21/28] test, should be reverted --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index cd9b4f78f..10d989c9b 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ +[Test with broken link](test with broken link) + - [Boss Room](#boss-room) - [Index of resources in this project](#index-of-resources-in-this-project) - [Gameplay](#gameplay) From 43a2989b944e25417428ce05ced896529d8ad1b5 Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Wed, 28 Sep 2022 16:30:05 -0400 Subject: [PATCH 22/28] test2 --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 10d989c9b..b23d910c6 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,13 @@ | Support is available on [Discord](https://discord.gg/mNgM2XRDpb) and [forums](https://forum.unity.com/forums/multiplayer.26/) to help you work through issues you may encounter when using Boss Room. | | -- | +[Test with broken link](test-with-broken-link) + ## Table of content -[Test with broken link](test with broken link) + - [Boss Room](#boss-room) - [Index of resources in this project](#index-of-resources-in-this-project) From 7c39c6397feba5c49de76100f043a8479051c166 Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Wed, 28 Sep 2022 16:40:07 -0400 Subject: [PATCH 23/28] removing test and fixing a link --- README.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/README.md b/README.md index b23d910c6..0f006ffc5 100644 --- a/README.md +++ b/README.md @@ -4,14 +4,11 @@ | Support is available on [Discord](https://discord.gg/mNgM2XRDpb) and [forums](https://forum.unity.com/forums/multiplayer.26/) to help you work through issues you may encounter when using Boss Room. | | -- | -[Test with broken link](test-with-broken-link) - ## Table of content - - [Boss Room](#boss-room) - [Index of resources in this project](#index-of-resources-in-this-project) - [Gameplay](#gameplay) @@ -176,9 +173,7 @@ One of the eight clients acts as the host/server. That client will use a composi The game is server-authoritative, with latency-masking animations. Position updates are done through NetworkedVars that sync position, rotation and movement speed. NetworkedVars and Remote Procedure Calls (RPC) endpoints are isolated in a class that is shared between the server and client specialized logic components. -Code is organized in domain based assemblies. See our [Architecture.md](Architecture.md) file for more details. - -For an overview of the project's architecture please check out our [ARCHITECTURE.md](ARCHITECTURE.md). +Code is organized in domain based assemblies. See our [ARCHITECTURE.md](ARCHITECTURE.md) file for more details. --------------- From 463cb613886e1de8614e01c5794cea136cf86cd0 Mon Sep 17 00:00:00 2001 From: Samuel Bellomo Date: Wed, 28 Sep 2022 16:54:00 -0400 Subject: [PATCH 24/28] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fef3942c9..e1038fb0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ Additional documentation and release notes are available at [Multiplayer Documen * Introduced a mechanism for identifying actions by their runtime-generated ActionID, instead of relying on a fragile ActionType enumeration (#705) * NetworkObjectSpawner handles dynamically spawning in-scene placed NetworkObjects (#717) - You can't place a NetworkObject in scene directly and destroy it at runtime. This PR showcases proper handling of NetworkObjects that you'd wish to place inside of scenes, but would still want to destroy at game-time. Examples of these are: Imps, VandalImps, ImpBoss. NetworkObjects such as doors, crystals, door switch, etc. remain the same, statically-placed in scene. * Quality levels settings set up for Desktop [MTT-4450] (#713) +* Added TOC and Index of educational concepts to readme (#736) ### Changed * Updated tools, authentication and relay packages (#690) From bb12324417f5347c590626a7273039a5da6f6a9c Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Thu, 29 Sep 2022 11:14:00 -0400 Subject: [PATCH 25/28] Adding more player related entries --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 0f006ffc5..4a6142c1f 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,8 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o * NetworkList with custom serialization (LobbyPlayerState) - [Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs)
[Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs](Assets/Scripts/Gameplay/GameState/NetworkCharSelection.cs) * Persistent player (over multiple scenes) - [Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs ](Assets/Scripts/Gameplay/GameplayObjects/PersistentPlayer.cs) * Character logic (including player's avatar) - [Assets/Scripts/Gameplay/GameplayObjects/Character/ ](Assets/Scripts/Gameplay/GameplayObjects/Character/)
[ Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs ](Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacter.cs) +* Character movements - [Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacterMovement.cs](Assets/Scripts/Gameplay/GameplayObjects/Character/ServerCharacterMovement.cs) +* Player spawn - SpawnPlayer() in [Assets/Scripts/Gameplay/GameState/ServerBossRoomState.cs](Assets/Scripts/Gameplay/GameState/ServerBossRoomState.cs) ### Game Flow * Application Controller - [Assets/Scripts/ApplicationLifecycle/ApplicationController.cs ](Assets/Scripts/ApplicationLifecycle/ApplicationController.cs) From f04666baf609cb4c41c631658f286a9394cf1c5e Mon Sep 17 00:00:00 2001 From: Samuel Bellomo Date: Thu, 29 Sep 2022 11:15:33 -0400 Subject: [PATCH 26/28] adding clarifying comments --- .../Scripts/ConnectionManagement/ConnectionState/HostingState.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs b/Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs index 77a641b67..689f0302a 100644 --- a/Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs +++ b/Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs @@ -84,6 +84,7 @@ public override void OnUserRequestedShutdown() /// Multiple things can be done here, some asynchronously. For example, it could authenticate your user against an auth service like UGS' auth service. It can /// also send custom messages to connecting users before they receive their connection result (this is useful to set status messages client side /// when connection is refused, for example). + /// Implementation for those are left to the reader. /// /// The initial request contains, among other things, binary data passed into StartClient. In our case, this is the client's GUID, /// which is a unique identifier for their install of the game that persists across app restarts. From 54700a764a82b16034f7e7284fe46103ee13a083 Mon Sep 17 00:00:00 2001 From: Samuel Bellomo Date: Thu, 29 Sep 2022 11:19:43 -0400 Subject: [PATCH 27/28] better note on auth --- .../ConnectionManagement/ConnectionState/HostingState.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs b/Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs index 689f0302a..3886de6ae 100644 --- a/Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs +++ b/Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs @@ -84,7 +84,8 @@ public override void OnUserRequestedShutdown() /// Multiple things can be done here, some asynchronously. For example, it could authenticate your user against an auth service like UGS' auth service. It can /// also send custom messages to connecting users before they receive their connection result (this is useful to set status messages client side /// when connection is refused, for example). - /// Implementation for those are left to the reader. + /// Note on authentication: It's usually harder to justify having authentication in a client hosted game's connection approval. Since the host can't be trusted, + /// clients shouldn't send it private authentication tokens you'd usually send to a dedicated server. /// /// The initial request contains, among other things, binary data passed into StartClient. In our case, this is the client's GUID, /// which is a unique identifier for their install of the game that persists across app restarts. From d114c27e73ae168fe743a40715da0ea4a982dfd0 Mon Sep 17 00:00:00 2001 From: Sam Bellomo <71790295+SamuelBellomo@users.noreply.github.com> Date: Thu, 29 Sep 2022 13:52:04 -0400 Subject: [PATCH 28/28] adding RTT entry --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4a6142c1f..03edf3ae2 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,7 @@ See [ART_NOTES.md](Documentation/ART_NOTES.md) for more information on the art o * Connection approval return value with custom messaging - WaitToDenyApproval() in [Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs ](Assets/Scripts/ConnectionManagement/ConnectionState/HostingState.cs) * Connection state machine - [Assets/Scripts/ConnectionManagement/ConnectionManager.cs ](Assets/Scripts/ConnectionManagement/ConnectionManager.cs)
[Assets/Scripts/ConnectionManagement/ConnectionState/](Assets/Scripts/ConnectionManagement/ConnectionState/) * Session manager - [Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs ](Packages/com.unity.multiplayer.samples.coop/Utilities/Net/SessionManager.cs) +* RTT stats - [Assets/Scripts/Utils/NetworkOverlay/NetworkStats.cs](Assets/Scripts/Utils/NetworkOverlay/NetworkStats.cs) ### Services (Lobby, Relay, etc) * Lobby and relay - host creation - CreateLobbyRequest() in [Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs ](Assets/Scripts/Gameplay/UI/Lobby/LobbyUIMediator.cs)