Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Tacticool: Realtime multiplayer with physics

511 vues

Publié le

Dmitry Koblyk, CTO, Panzerdog
Talk about main aspects of client-server multiplayer engine development solutions based on Unity3D for “Tacticool” mobile action game. #MadeWithUnity

Publié dans : Logiciels
  • Identifiez-vous pour voir les commentaires

Tacticool: Realtime multiplayer with physics

  1. 1. REALTIME MULTIPLAYER WITH PHYSICS AND LOTS OF TANGO FOXTROT
  2. 2. CONTROLS
  3. 3. INCEPTION А давайте сделаем игру про машинки?
  4. 4. INCEPTION А давайте с мультиплеером? А давайте в realtime? А давайте с физикой? А машинки же с людьми как в GTA? А давайте чтобы на айфончике?
  5. 5. CHALLENGE ACCEPTED gafferongames.com Наверное, лучший сайт, чтобы понять, как работает сетевой код в реалтайм игре.
  6. 6. SNAPSHOTS AND INTERPOLATION Сервер шлет клиенту состояние игрового мира Клиент шлет серверу пользовательский ввод
  7. 7. SNAPSHOTS AND INTERPOLATION youtube: Battle(non)sense
  8. 8. SNAPSHOTS gafferongames.com
  9. 9. PAST PRESENT FUTURE ClientTime = ServerTime – 100ms;
  10. 10. position = Vector3.Lerp(prevPosition, nextPosition, t); INTERPOLATION gafferongames.com
  11. 11. FORGIVE FORGET TCP не подходит для REALTIME игр.
  12. 12. FORGIVE FORGET Если данные потерялись - это не страшно. Придут новые.
  13. 13. UNET
  14. 14. UNET
  15. 15. BINARY PROTOCOL JSON, XML, BSON, protobuf etc. Nope.
  16. 16. BINARY PROTOCOL Vector3: 32 * 3 = 96 бит
  17. 17. BINARY PROTOCOL Применим знание о размере мира: от (-100f, -100f, -100f) до (100f, 100f, 100f) Vector3: (8 + 6) * 3 = 42 бита Экономия ~56%
  18. 18. LA LA LAG PING = 100ms 160ms <= LATENCY <= 220ms PING = 150ms 210ms <= LATENCY <= 270ms
  19. 19. PREDICTION
  20. 20. HIDING LAG
  21. 21. HIDING LAG
  22. 22. INDIRECT CONTROLS Непрямое управление = хорошо Прямое управление без мгновенного отклика = плохо
  23. 23. UNITY AS SERVER Игровой сервер -- “обычный” билд игры
  24. 24. NETWORK IDENTITY Каждый объект, который синхронизирует какие-либо данные имеет уникальный идентификатор.
  25. 25. AbstractSyncComponent На стороне сервера на каждом тике определяет нужно ли слать данные о себе на клиент. На стороне клиента на каждом кадре интерполирует между полученными данными.
  26. 26. SyncTransformComponent Расходует 80% трафика
  27. 27. SyncAnimatorComponent Мы синхронизируем все значимые параметра у аниматора
  28. 28. TRIGGERS Используются в аниматоре, при стрельбе из оружия и при взрывах
  29. 29. TRIGGERS
  30. 30. TRIGGERS System.Random(currentTime + networkIdentity.objectId)
  31. 31. REPLICATION Спавн объектов происходит только при старте игры
  32. 32. BAD DESICIONS Нужно синхронизировать весь мир целиком, а не объекты по отдельности
  33. 33. QUESTIONS? bit.ly/DevGAMMTacticool
  34. 34. USEFUL LINKS http://gafferongames.com/ https://youtu.be/vTH2ZPgYujQ https://www.youtube.com/watch?v=mQ2KTRn4BMI&t=2911s https://youtu.be/j4YAY36xjwE https://developer.valvesoftware.com/wiki/Source_Multiplayer_Netwo rking https://youtu.be/ayF8e8q_aA8
  35. 35. USEFUL LINKS https://youtu.be/p72GaGq-B_0 http://www.gdcvault.com/play/1014345/I-Shot-You-First-Networking http://www.gdcvault.com/play/1022195/Physics-for-Game- Programmers-Networking https://www.youtube.com/channel/UCP7QY6L5pvmm0-stL-pNFrw http://mrelusive.com/publications/papers/The-DOOM-III-Network- Architecture.pdf http://ithare.com/

×