Unity-Technologies / multiplayer
On 16 grudnia, 2021 by adminWitamy w repozytorium Unity Real-time Multiplayer Alpha!
Możesz tu znaleźć wszystkie zasoby potrzebne do rozpoczęcia prototypowania własnych gier wieloosobowych w czasie rzeczywistym.
Podręcznik kodu sieciowego
Podręcznik transportu
Kliknij tutaj, aby odwiedzić forum
Zawarta zawartość
-
sampleproject/
– Projekt Unity zawierający wszystkie próbki gry wieloosobowej. -
sampleproject/Assets/Samples/Asteroids
– Klon Asteroids demonstrujący podstawowe koncepcje kodu sieciowego. -
sampleproject/Assets/Samples/LagCompensation
– Próbka pokazująca kompensację opóźnień w oparciu o Unity Physics. -
sampleproject/Assets/Samples/NetCube
– Próbka pokazująca podstawowe użycie netcode. -
sampleproject/Assets/Samples/Ping
– Próbka pokazująca podstawowe użycie transportu. -
sampleproject/Assets/Samples/Soaker
– Soak tester dla transportu, do testowania typowego obciążenia produkcyjnego. -
sampleproject/Assets/Samples/CustomNetworkInterface
– Próbka pokazująca jak używać specyficznej dla gry implementacji gniazda w Unity Transport.
Unity Transport Package
Nowy pakiet transportowy Unity, który zastąpi niskopoziomowe API UNet.Podgląd pakietu transportowego obsługuje nawiązywanie połączeń i wysyłanie wiadomości do hosta aremote. Zawiera także narzędzia do serializowania strumieni danych w celu przesłania ich przez sieć.Więcej informacji o pakiecie transportowym można znaleźć w dokumentacji Unity Transport
Unity NetCode Package
Pakiet netcode zapewnia funkcje multiplayer potrzebne do implementacji synchronizacji świata w grze wieloosobowej. Używa pakietu transportowego dla funkcjonalności na poziomie gniazda i jest stworzony dla Entity Component System.Niektóre rzeczy wyższego poziomu, które zapewnia to
- Serwerowy autorytatywny model synchronizacji.
- Obsługa RPC, przydatna dla przepływu sterowania lub zdarzeń sieciowych.
- Klient/serwer światowy bootrapping, dzięki czemu masz wyraźne oddzielenie logiki i możesz uruchomić serwer z wieloma klientami w jednym procesie, jak edytor podczas testowania.
- Synchronizacja encji z interpolacją i predykcją po stronie klienta działająca domyślnie.
- Narzędzia do debugowania ruchu sieciowego
- Obsługa przepływu konwersji obiektów GameObject, więc możesz użyć modelu hybrydowego, aby dodać multiplayer do projektu opartego na GameObject/MonoBehaviour.
Więcej informacji na temat pakietu netcode można znaleźć w dokumentacji Unity NetCode
Przykłady
Ping
Próbka ping jest dobrym punktem wyjścia do poznania wszystkich elementów zawartych w pakiecie transportowym. Klient ping nawiązuje połączenie z serwerem ping, wysyła wiadomość ping i otrzymuje odpowiedź pong. Jest to prosty przykład pokazujący, jak używać nowego pakietu transportowego Unity.Ping składa się z wielu scen, z których wszystkie znajdują się w sampleproject/Assets/Scenes/
.
-
PingMainThread.unity
– Implementacja ping tylko w głównym wątku. -
Ping.unity
– W pełni jobified wersja klienta i serwera ping. -
PingClient.unity
– Ten sam jobified kod klienta coPing.unity
, ale bez serwera. -
PingServer.unity
– Dedykowana serwerowa wersja jobified ping. Headless (lub Server Build w 2019.1) Linux 64 bit build tej sceny jest tym, co powinno być wdrożone do Multiplay. -
PingECS.unity
– Wersja ECS próbki jobified ping.
Soaker
Test warunków skrajnych, który utworzy ustaloną liczbę klientów i serwer w tym samym procesie. Każdy klient będzie wysyłał wiadomości z określoną szybkością o określonym rozmiarze i mierzył statystyki.
Asteroids
Mała gra wykorzystująca funkcje pakietu Unity NetCode.
LagCompensation
Próbka pokazująca sposób implementacji kompensacji lagów w oparciu o Unity Physics. W grze opartej na Unity NetCode klient będzie wyświetlał stary stan świata, kompensacja lagów pozwala serwerowi wziąć to pod uwagę podczas wykonywania raycastów, dzięki czemu gracz może celować w to, co jest aktualnie wyświetlane na kliencie.
NetCube
Mała próbka przedstawiająca funkcje pakietu Unity NetCode. Jest to kod używany w prezentacji Unite na temat NetCode
Instalacja
Aby wypróbować próbki w tym repozytorium, wystarczy otworzyćsampleprojects/
w Unity.Jeśli chcesz utworzyć nowy projekt Unity przy użyciu tych pakietów, jest to również możliwe.
- Upewnij się, że masz obsługiwaną wersję Unity (2019.3 lub nowszą)
- Utwórz nowy projekt Unity
- Jeśli chcesz użyć NetCode, dodaj
Unity NetCode
z menedżera pakietów. - Jeśli chcesz użyć transportu, ale nie NetCode, dodaj
Unity Transport
z menedżera pakietów. - Zależności pakietów zostaną automatycznie wciągnięte do projektu
.
Dodaj komentarz