{"version":1,"pages":[{"id":"-MPeyQisscfvSrzP5RPF","title":"What is the Purpose of this DOTS Tutorial?","pathname":"/","siteSpaceId":"sitesp_6kCXM","description":"This is a sample project that demonstrates how to create a multiplayer AR experience using Unity's DOTS. We include full workflows, code, GIFs and also share links to external resources."},{"id":"-MQK4y2OLCo-XhGBufxD","title":"Important Notes For Using This Gitbook","pathname":"/important-notes-for-using-this-gitbook","siteSpaceId":"sitesp_6kCXM","description":"Some things to keep in mind as you code along."},{"id":"-MPezXtKnPfbloHy1ufP","title":"Intro to Unity ECS","pathname":"/unity-ecs/intro-to-unity-ecs","siteSpaceId":"sitesp_6kCXM","description":"This gitbook explains \"how\" to implement ECS in Unity. It does not explain \"what\" ECS is, but we make sure to provide links to external resources throughout the gitbook that explain the \"what.\"","breadcrumbs":[{"label":"Unity ECS"}]},{"id":"-MPjvee7a9RGa-bT-NB2","title":"Create a Unity ECS Project","pathname":"/unity-ecs/create-a-unity-ecs-project","siteSpaceId":"sitesp_6kCXM","description":"Full workflows and code to set up an ECS project with the latest Unity Editor and compatible package versions","breadcrumbs":[{"label":"Unity ECS"}]},{"id":"-MPp8tLAH1apB8-4wcks","title":"Spawn and Move Prefabs","pathname":"/unity-ecs/spawn-and-move-prefabs-in-unity-ecs","siteSpaceId":"sitesp_6kCXM","description":"Full workflows and code to programmatically spawn, update, and destroy prefab entities","breadcrumbs":[{"label":"Unity ECS"}]},{"id":"-MPjwL8GMqn6Tk5cKGeM","title":"Spawn and Move Players","pathname":"/unity-ecs/spawn-and-move-players-in-unity-ecs","siteSpaceId":"sitesp_6kCXM","description":"Full workflows and code to spawn and move Player from user input","breadcrumbs":[{"label":"Unity ECS"}]},{"id":"-MPjwj0dDPXfCJjxHZ64","title":"Spawn Bullets and Destroy Player","pathname":"/unity-ecs/spawn-bullets-and-destroy-player-in-unity-ecs","siteSpaceId":"sitesp_6kCXM","description":"Full workflows and code to spawn bullets and self-destruct Player","breadcrumbs":[{"label":"Unity ECS"}]},{"id":"-MQ2pBQ5AUGkr1SkWNyN","title":"Publish Builds in Unity ECS","pathname":"/unity-ecs/publish-builds-in-unity-ecs","siteSpaceId":"sitesp_6kCXM","description":"Workflow for deploying project using Unity's new Build Configurations","breadcrumbs":[{"label":"Unity ECS"}]},{"id":"-MPgOocrqWjrmKu_2he0","title":"Intro to Unity DOTS Physics","pathname":"/unity-dots-physics/intro-to-unity-dots-physics","siteSpaceId":"sitesp_6kCXM","description":"Full workflows and code on how to get started with Unity DOTS Physics","breadcrumbs":[{"label":"Unity DOTS Physics"}]},{"id":"-MPjx-DgN6lvxFBKd_Q3","title":"Use DOTS Physics for Prefabs, Players, and Bullets","pathname":"/unity-dots-physics/use-dots-physics-for-prefabs-players-and-bullets-in-unity-ecs","siteSpaceId":"sitesp_6kCXM","description":"Workflows and code to update previous ECS section to use DOTS Physics","breadcrumbs":[{"label":"Unity DOTS Physics"}]},{"id":"-MPjxJGm5WoWo6BrRrP6","title":"Use DOTS Physics for Collisions","pathname":"/unity-dots-physics/use-dots-physics-for-collisions","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows to update collisions that change material and destroy prefab entities using DOTS Physics","breadcrumbs":[{"label":"Unity DOTS Physics"}]},{"id":"-MPgPrI22gT8N4wMwmhN","title":"Intro to DOTS NetCode","pathname":"/dots-netcode/intro-to-dots-netcode","siteSpaceId":"sitesp_6kCXM","description":"Full workflows and code on how to get started with Unity's DOTS NetCode","breadcrumbs":[{"label":"Unity DOTS NetCode"}]},{"id":"-MPjyO9_39vNE6xSobiX","title":"Create a Network Connection using DOTS NetCode","pathname":"/dots-netcode/create-a-network-connection-using-dots-netcode","siteSpaceId":"sitesp_6kCXM","description":"Workflows and code to create a server/client socket connection using NetCode","breadcrumbs":[{"label":"Unity DOTS NetCode"}]},{"id":"-MPkimgfLYi3RzPpok-E","title":"Load a Game using DOTS NetCode","pathname":"/dots-netcode/load-a-game-using-dots-netcode","siteSpaceId":"sitesp_6kCXM","description":"Code and workflow to send server game data to client and have the client confirm loading the data","breadcrumbs":[{"label":"Unity DOTS NetCode"}]},{"id":"-MPkja9ypz-ZMgmlPEL6","title":"DOTS NetCode and Prefabs","pathname":"/dots-netcode/dots-netcode-and-prefabs","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows to turn asteroid entity prefabs into NetCode \"ghosts\"","breadcrumbs":[{"label":"Unity DOTS NetCode"}]},{"id":"-MPkk68boa60KWSGt7Hj","title":"DOTS NetCode and Player Prefabs","pathname":"/dots-netcode/dots-netcode-and-player-prefabs-in-unity-ecs","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows to turn the Player prefab into a NetCode ghost and spawn Thin Clients","breadcrumbs":[{"label":"Unity DOTS NetCode"}]},{"id":"-MPkkIAH4LMIposT34dv","title":"Use DOTS NetCode for Collisions and Destroying Bullet Prefabs","pathname":"/dots-netcode/use-dots-netcode-for-collisions-and-to-destroy-bullet-prefabs","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows to spawn ghosted bullets and update to server-side destruction","breadcrumbs":[{"label":"Unity DOTS NetCode"}]},{"id":"Iiomj8pFE9eWldPkF3Az","title":"Dynamically Changing Ghosts Between Interpolated and Predicted","pathname":"/dots-netcode/dynamically-changing-ghosts-between-interpolated-and-predicted","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows to update ghosts between interpolated and predicted","breadcrumbs":[{"label":"Unity DOTS NetCode"}]},{"id":"-MPgQLKOZsbGRjCjkWaG","title":"Intro to UI Toolkit","pathname":"/ui-builder-and-ui-toolkit/intro-to-ui-toolkit-in-unity-ecs","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows on how to use UI Builder and UI Toolkit from scratch","breadcrumbs":[{"label":"UI Builder and UI Toolkit"}]},{"id":"-MPoNFsMRu41zi6mh_PW","title":"Create a ScreenManager","pathname":"/ui-builder-and-ui-toolkit/create-a-screenmanager-in-unity-ui-builder","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows for navigate between different views using UI Builder and UI Toolkit","breadcrumbs":[{"label":"UI Builder and UI Toolkit"}]},{"id":"-MPoNZISE8otrssDp6YC","title":"Style a View","pathname":"/ui-builder-and-ui-toolkit/style-a-view-in-unity-ui-builder","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows to style the Project title screen with UI Builder","breadcrumbs":[{"label":"UI Builder and UI Toolkit"}]},{"id":"-MPoNbgdf9jyJv4Q1_AQ","title":"Create a ListView","pathname":"/ui-builder-and-ui-toolkit/create-a-list-view-in-unity-ui-builder","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows for creating a dynamic UI ListView in UI Builder","breadcrumbs":[{"label":"UI Builder and UI Toolkit"}]},{"id":"-MPoNe_frxAUZ91Z96oF","title":"Responsive Game UI","pathname":"/ui-builder-and-ui-toolkit/responsive-game-ui-in-unity-ecs","siteSpaceId":"sitesp_6kCXM","description":"Code and workflow to make a responsive game UI in UI Builder","breadcrumbs":[{"label":"UI Builder and UI Toolkit"}]},{"id":"-MPoNigrRiSONRYbSd3L","title":"Navigate Between Scenes Using ClientServerBootstrap","pathname":"/ui-builder-and-ui-toolkit/navigate-between-scenes-unity-ui-builder","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows to navigate between NavigationScene and MainScene using UI buttons","breadcrumbs":[{"label":"UI Builder and UI Toolkit"}]},{"id":"-MPgQfWDNpqhXU-Gsi3i","title":"Intro to Unity NetCode Multiplayer","pathname":"/multiplayer/intro-to-unity-netcode-multiplayer","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows to find/create/join/leave LAN games with authoritative scorekeeping","breadcrumbs":[{"label":"Multiplayer (NetCode+, UI Toolkit+)"}]},{"id":"-MPoPNseHpPPvzEnf-We","title":"Host or Join a Multiplayer Session on LAN","pathname":"/multiplayer/host-or-join-a-multiplayer-session-on-lan-unity-netcode","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows for hosting and/or joining a multiplayer session on LAN, and gracefully handling hosts/clients leaving","breadcrumbs":[{"label":"Multiplayer (NetCode+, UI Toolkit+)"}]},{"id":"-MPoOAnC4vioGiEOPEfM","title":"Broadcast a LAN Multiplayer Game","pathname":"/multiplayer/broadcast-a-multiplayer-game-in-netcode","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows to send and receive broadcast packets to join multiplayer sessions","breadcrumbs":[{"label":"Multiplayer (NetCode+, UI Toolkit+)"}]},{"id":"-MPoPS0A2ZkM4ITRzZ9s","title":"Keep Score and Update Game UI","pathname":"/multiplayer/keep-score-with-dots-netcode","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows to keep score between players in a multiplayer game on a LAN","breadcrumbs":[{"label":"Multiplayer (NetCode+, UI Toolkit+)"}]},{"id":"-MRi8PZRdwByKAm6sl20","title":"Send Ghosts with NetCode Using Relevancy","pathname":"/multiplayer/send-ghosts-with-dots-netcode","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows to send ghosts and clean up logs using GhostRelevancyMode","breadcrumbs":[{"label":"Multiplayer (NetCode+, UI Toolkit+)"}]},{"id":"-MPgQyRt8KXD5CnTJhOO","title":"Intro to AR Foundation","pathname":"/ar-foundation/intro-to-ar-foundation","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows to integrate AR Foundation into your desktop build","breadcrumbs":[{"label":"AR Foundation"}]},{"id":"-MS0KLIpMX-4vOfMtolc","title":"Set Up AR Foundation and ARKit","pathname":"/ar-foundation/set-up-ar-foundation-and-arkit","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows to implement AR Foundation and ARKit in your project to create an AR build","breadcrumbs":[{"label":"AR Foundation"}]},{"id":"-MS0KjAY2duALSHQCwNz","title":"Spawn a Player using AR Foundation","pathname":"/ar-foundation/spawn-a-player-using-ar-foundation","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows for using AR Foundation to spawn an AR Player","breadcrumbs":[{"label":"AR Foundation"}]},{"id":"-MSAicAyPZSS0-tt5fte","title":"Update UI using AR Foundation","pathname":"/ar-foundation/update-ui-using-ar-foundation","siteSpaceId":"sitesp_6kCXM","description":"Code and workflows to optimize and update the UI in our AR enabled project","breadcrumbs":[{"label":"AR Foundation"}]}]}