Making Sense of Multiplayer

Hunter Loftis
Hunter LoftisEngineering Manager and JavaScript Junkie at Heroku
@hunterloftis
Making Sense of Multiplayer
Hunter Loftis
Engineering Manager, Heroku
@ Connect.Tech 2018
Making Sense of Multiplayer
1962
1987
1996
1998
2004
Pre-2011
"Netcode" experts
C++, TCP, UDP, ICMP, routing
@hunterloftis
2011 Renaissance
WebSocket protocol (+Node.js)
@hunterloftis
Shared Spaces
Shared Spaces
Shared Spaces
Shared Spaces
Shared Spaces
@hunterloftis
But...
@hunterloftis
Most people fail the first time.
@hunterloftis
Most people fail the first time.
I did!
@hunterloftis
Most people fail the first time.
I did!
... and the second, third, and fourth times too.
@hunterloftis
Common issues
@hunterloftis
Common issues
• Choppy updates
@hunterloftis
Common issues
• Choppy updates
• Laggy controls
@hunterloftis
Common issues
• Choppy updates
• Laggy controls
• Changes being applied and then un-applied
@hunterloftis
Common issues
• Choppy updates
• Laggy controls
• Changes being applied and then un-applied
• Inconsistent client behavior
@hunterloftis
Common issues
• Choppy updates
• Laggy controls
• Changes being applied and then un-applied
• Inconsistent client behavior
• Rule breaking
@hunterloftis
We're ignoring decades of
experience!
@hunterloftis
Netcode 101
@hunterloftis
What is real-time multiplayer?
@hunterloftis
What is real-time multiplayer?
A Lie.
"It turns out it’s all an illusion. A
massive sleight-of-hand."
- Glenn Fiedler,
Networking for Game Programmers
@hunterloftis
@hunterloftis
100% Scientific
bandwidth / $
compute / $
speed of light / $
Time
@hunterloftis
bandwidth / $
compute / $
speed of light / $
Time
@hunterloftis
Sharing an environment over
thousands of miles is impossible.
@hunterloftis
Instead, create an illusion:
@hunterloftis
Instead, create an illusion:
1. Input gives feedback immediately.
@hunterloftis
Instead, create an illusion:
1. Input gives feedback immediately.
2. Players believe they are sharing an environment.
@hunterloftis
Instead, create an illusion:
1. Input gives feedback immediately.
2. Players believe they are sharing an environment.
3. Everyone eventually ends up in the same state.
@hunterloftis
How? Entities + Stacked State
@hunterloftis
How? Entities + Stacked State
View
@hunterloftis
How? Entities + Stacked State
View
Predicted
@hunterloftis
How? Entities + Stacked State
View
Predicted
Interpolated
@hunterloftis
How? Entities + Stacked State
View
Predicted
Interpolated
Authoritative
@hunterloftis
How? Entities + Stacked State
View
Predicted
Interpolated
Authoritative
@hunterloftis
Entities
@hunterloftis
Entities
@hunterloftis
Entities
• Have a unique ID.
@hunterloftis
Entities
• Have a unique ID.
• Belong to an owner.
@hunterloftis
Entities
• Have a unique ID.
• Belong to an owner.
• Belong to a timeline.
Entities provide a way to partition state
{
id: 4,
x: 50,
y: 22,
angle: 0,
health: 0.7,
firing: false
}
@hunterloftis
Entities from different timelines can coexist.
time = 1.5s
time = 1.75s
@hunterloftis
Divergence sacrifices accuracy for smoothness.
@hunterloftis
Authoritative State
sendToServer({ hit: true })
@hunterloftis
Input In - State Out
Server
{ leftKey: true }
[{ id: 1, x: -10, y: 0 }
{ id: 2, x: 10, y: 0 }]
{ rightKey: true }
@hunterloftis
Authoritative Server
@hunterloftis
Authoritative Server
• Prevents cheating
@hunterloftis
Authoritative Server
• Prevents cheating
• Ensures eventual consistency
@hunterloftis
Authoritative Server
• Prevents cheating
• Ensures eventual consistency
• Allows secrets
Making Sense of Multiplayer
@hunterloftis
"Update Rate"
How frequently the server sends updates to clients.
(eg, 10 Hz)
@hunterloftis
Interpolated State
@hunterloftis
Interpolation
@hunterloftis
Interpolation
• Stores the last two authoritative states in history.
@hunterloftis
Interpolation
• Stores the last two authoritative states in history.
• Animates from history[0] to history[1].
@hunterloftis
Interpolation
• Stores the last two authoritative states in history.
• Animates from history[0] to history[1].
• Extrapolates if new data doesn't arrive on time.
Making Sense of Multiplayer
history[0] history[1] extrapolated
@hunterloftis
Predicted State
@hunterloftis
Client-Side Prediction
@hunterloftis
Client-Side Prediction
• Records a buffer of local input.
@hunterloftis
Client-Side Prediction
• Records a buffer of local input.
• Applies the buffer over the most recent
authoritative state.
@hunterloftis
Client-Side Prediction
• Records a buffer of local input.
• Applies the buffer over the most recent
authoritative state.
• Only simulates a subset of the rules.
@hunterloftis
Local input stacks on top of authoritative history to
push local entities further in time.
history[0] history[1]
input inputinput
Making Sense of Multiplayer
@hunterloftis
View State
@hunterloftis
View State
@hunterloftis
View State
• Isn't propagated across the network.
@hunterloftis
View State
• Isn't propagated across the network.
• May be different per-client.
@hunterloftis
View State
• Isn't propagated across the network.
• May be different per-client.
• Adds details to authoritative state.
Making Sense of Multiplayer
@hunterloftis
Putting it all together
@hunterloftis
A moment in time
Server
input 45input 46input 47
state (43)state (42)
state (41)
input 44
state (40)
@hunterloftis
Player B
Sees himself start moving up
immediately, then sees Player A
start moving up.
Player A
Sees herself start moving up
immediately, then sees Player B
start moving up.
Both players press UP at the same time.
@hunterloftis
Player B
Sees himself stop moving
immediately, then sees Player A
stop moving at the same height.
Player A
Sees herself stop moving
immediately, then sees Player B
stop moving at the same height.
Both players release UP at the same time.
@hunterloftis
The illusion has limits
Latency
Fighters/Sports
Twitchy shooters
Today's demo
Real-time strategy
Chess
@hunterloftis
Questions so far?
@hunterloftis
Questions so far?
View
@hunterloftis
Questions so far?
View
Predicted
@hunterloftis
Questions so far?
View
Predicted
Interpolated
@hunterloftis
Questions so far?
View
Predicted
Interpolated
Authoritative
@hunterloftis
Questions so far?
View
Predicted
Interpolated
Authoritative
@hunterloftis
ctdf.herokuapp.com
@hunterloftis
Questions?
https://github.com/hunterloftis/dogfight
http://www.pages.drexel.edu/~ecb44/print.html
https://www.pcgamer.com/netcode-explained/
http://www.gabrielgambetta.com/client-server-game-architecture.html
https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
http://www.gamasutra.com/view/news/128323/Seven_Years_Of_World_Of_Warcraft.php
https://gafferongames.com/post/what_every_programmer_needs_to_know_about_game_networking
https://stackoverflow.com/questions/11436311/realtime-multiplayer-game-principles-for-tcp-and-node-js
"250 Handdrawn Textures" art by Daniel Cook
Plane sprites by Sujit Yadav
Particle sprites by Kenney
1 of 92

Recommended

(GAM402) Deploying a Low-Latency Multiplayer Game Globally: Loadout | AWS re:... by
(GAM402) Deploying a Low-Latency Multiplayer Game Globally: Loadout | AWS re:...(GAM402) Deploying a Low-Latency Multiplayer Game Globally: Loadout | AWS re:...
(GAM402) Deploying a Low-Latency Multiplayer Game Globally: Loadout | AWS re:...Amazon Web Services
10.8K views49 slides
Apache Kafka in Gaming Industry (Games, Mobile, Betting, Gambling, Bookmaker,... by
Apache Kafka in Gaming Industry (Games, Mobile, Betting, Gambling, Bookmaker,...Apache Kafka in Gaming Industry (Games, Mobile, Betting, Gambling, Bookmaker,...
Apache Kafka in Gaming Industry (Games, Mobile, Betting, Gambling, Bookmaker,...Kai Wähner
10.8K views59 slides
[Workshop] Getting Started with Cryptos, NFTs & Web 3.0 for Absolute Beginners by
[Workshop] Getting Started with Cryptos, NFTs & Web 3.0 for Absolute Beginners[Workshop] Getting Started with Cryptos, NFTs & Web 3.0 for Absolute Beginners
[Workshop] Getting Started with Cryptos, NFTs & Web 3.0 for Absolute BeginnersHessan Adnani
295 views62 slides
MMO Design Architecture by Andrew by
MMO Design Architecture by AndrewMMO Design Architecture by Andrew
MMO Design Architecture by AndrewAgate Studio
4.5K views39 slides
Developing Multiplayer Games in Unity3D by
Developing Multiplayer Games in Unity3DDeveloping Multiplayer Games in Unity3D
Developing Multiplayer Games in Unity3DAdrian Popovici
2.2K views47 slides
Quic을 이용한 네트워크 성능 개선 by
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선NAVER D2
19.2K views52 slides

More Related Content

What's hot

Janus & docker: friends or foe by
Janus & docker: friends or foe Janus & docker: friends or foe
Janus & docker: friends or foe Alessandro Amirante
1.8K views33 slides
[NDC 2016] 유니티, iOS에서 LINQ 사용하기 by
[NDC 2016] 유니티, iOS에서 LINQ 사용하기[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기Daehee Kim
9.5K views46 slides
Intro to Web3 by
Intro to Web3Intro to Web3
Intro to Web3asasdasd5
195 views57 slides
실시간 게임 서버 최적화 전략 by
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
3.8K views95 slides
NDC 11 자이언트 서버의 비밀 by
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
4.4K views71 slides
Janus SFU cascading @ IIT-RTC 2022 by
Janus SFU cascading @ IIT-RTC 2022Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022Lorenzo Miniero
344 views36 slides

What's hot(20)

[NDC 2016] 유니티, iOS에서 LINQ 사용하기 by Daehee Kim
[NDC 2016] 유니티, iOS에서 LINQ 사용하기[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
Daehee Kim9.5K views
Intro to Web3 by asasdasd5
Intro to Web3Intro to Web3
Intro to Web3
asasdasd5195 views
실시간 게임 서버 최적화 전략 by YEONG-CHEON YOU
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
YEONG-CHEON YOU3.8K views
NDC 11 자이언트 서버의 비밀 by 승명 양
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
승명 양4.4K views
Janus SFU cascading @ IIT-RTC 2022 by Lorenzo Miniero
Janus SFU cascading @ IIT-RTC 2022Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022
Lorenzo Miniero344 views
Server side game_development by Yekmer Simsek
Server side game_developmentServer side game_development
Server side game_development
Yekmer Simsek3.8K views
Python과 Git으로 만드는 모바일 게임 패치 시스템 by Youngtaek Oh
Python과 Git으로 만드는 모바일 게임 패치 시스템Python과 Git으로 만드는 모바일 게임 패치 시스템
Python과 Git으로 만드는 모바일 게임 패치 시스템
Youngtaek Oh15.8K views
Developing Java Streaming Applications with Apache Storm by Lester Martin
Developing Java Streaming Applications with Apache StormDeveloping Java Streaming Applications with Apache Storm
Developing Java Streaming Applications with Apache Storm
Lester Martin1.2K views
Thomas Lamirault_Mohamed Amine Abdessemed -A brief history of time with Apac... by Flink Forward
Thomas Lamirault_Mohamed Amine Abdessemed  -A brief history of time with Apac...Thomas Lamirault_Mohamed Amine Abdessemed  -A brief history of time with Apac...
Thomas Lamirault_Mohamed Amine Abdessemed -A brief history of time with Apac...
Flink Forward4.4K views
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference by Xionglong Jin
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
Xionglong Jin18.7K views
Local Apache NiFi Processor Debug by Deon Huang
Local Apache NiFi Processor DebugLocal Apache NiFi Processor Debug
Local Apache NiFi Processor Debug
Deon Huang706 views
게임 디자이너와 게임 서버 by ByungChun2
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버
ByungChun21.8K views
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델 by Seungmo Koo
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
Seungmo Koo5.9K views
Building an Observability platform with ClickHouse by Altinity Ltd
Building an Observability platform with ClickHouseBuilding an Observability platform with ClickHouse
Building an Observability platform with ClickHouse
Altinity Ltd591 views
c13n - Lightning Network - Greek Bitcoin Meetup.pdf by dimitrist
c13n - Lightning Network - Greek Bitcoin Meetup.pdfc13n - Lightning Network - Greek Bitcoin Meetup.pdf
c13n - Lightning Network - Greek Bitcoin Meetup.pdf
dimitrist54 views
The top 3 challenges running multi-tenant Flink at scale by Flink Forward
The top 3 challenges running multi-tenant Flink at scaleThe top 3 challenges running multi-tenant Flink at scale
The top 3 challenges running multi-tenant Flink at scale
Flink Forward327 views

Similar to Making Sense of Multiplayer

Scylla Summit 2017: Managing 10,000 Node Storage Clusters at Twitter by
Scylla Summit 2017: Managing 10,000 Node Storage Clusters at TwitterScylla Summit 2017: Managing 10,000 Node Storage Clusters at Twitter
Scylla Summit 2017: Managing 10,000 Node Storage Clusters at TwitterScyllaDB
1.3K views68 slides
InfectNet Technical by
InfectNet TechnicalInfectNet Technical
InfectNet TechnicalAttila Bagossy
83 views48 slides
Cloud-Native Observability by
Cloud-Native ObservabilityCloud-Native Observability
Cloud-Native ObservabilityTyler Treat
885 views95 slides
Managing 10,000 Node Storage Clusters at Twitter by
Managing 10,000 Node Storage Clusters at TwitterManaging 10,000 Node Storage Clusters at Twitter
Managing 10,000 Node Storage Clusters at TwitterJ On The Beach
63 views68 slides
[OPD 2019] Attacking JWT tokens by
[OPD 2019] Attacking JWT tokens[OPD 2019] Attacking JWT tokens
[OPD 2019] Attacking JWT tokensOWASP
2.4K views34 slides
Test driven infrastructure development (2 - puppetconf 2013 edition) by
Test driven infrastructure development (2 - puppetconf 2013 edition)Test driven infrastructure development (2 - puppetconf 2013 edition)
Test driven infrastructure development (2 - puppetconf 2013 edition)Tomas Doran
1.6K views61 slides

Similar to Making Sense of Multiplayer(20)

Scylla Summit 2017: Managing 10,000 Node Storage Clusters at Twitter by ScyllaDB
Scylla Summit 2017: Managing 10,000 Node Storage Clusters at TwitterScylla Summit 2017: Managing 10,000 Node Storage Clusters at Twitter
Scylla Summit 2017: Managing 10,000 Node Storage Clusters at Twitter
ScyllaDB1.3K views
Cloud-Native Observability by Tyler Treat
Cloud-Native ObservabilityCloud-Native Observability
Cloud-Native Observability
Tyler Treat885 views
Managing 10,000 Node Storage Clusters at Twitter by J On The Beach
Managing 10,000 Node Storage Clusters at TwitterManaging 10,000 Node Storage Clusters at Twitter
Managing 10,000 Node Storage Clusters at Twitter
J On The Beach63 views
[OPD 2019] Attacking JWT tokens by OWASP
[OPD 2019] Attacking JWT tokens[OPD 2019] Attacking JWT tokens
[OPD 2019] Attacking JWT tokens
OWASP2.4K views
Test driven infrastructure development (2 - puppetconf 2013 edition) by Tomas Doran
Test driven infrastructure development (2 - puppetconf 2013 edition)Test driven infrastructure development (2 - puppetconf 2013 edition)
Test driven infrastructure development (2 - puppetconf 2013 edition)
Tomas Doran1.6K views
Meetup on Apache Zookeeper by Anshul Patel
Meetup on Apache ZookeeperMeetup on Apache Zookeeper
Meetup on Apache Zookeeper
Anshul Patel678 views
AdhearsionConf 2013 Keynote by Mojo Lingo
AdhearsionConf 2013 KeynoteAdhearsionConf 2013 Keynote
AdhearsionConf 2013 Keynote
Mojo Lingo785 views
Thinking in Properties by Susan Potter
Thinking in PropertiesThinking in Properties
Thinking in Properties
Susan Potter152 views
Killzone Shadow Fall: Threading the Entity Update on PS4 by jrouwe
Killzone Shadow Fall: Threading the Entity Update on PS4Killzone Shadow Fall: Threading the Entity Update on PS4
Killzone Shadow Fall: Threading the Entity Update on PS4
jrouwe11.8K views
Code reviews vs Pull requests by Tim Pettersen
Code reviews vs Pull requestsCode reviews vs Pull requests
Code reviews vs Pull requests
Tim Pettersen3.9K views
Fire kit ios (r-baldwin) by DevDays
Fire kit ios (r-baldwin)Fire kit ios (r-baldwin)
Fire kit ios (r-baldwin)
DevDays355 views
Test Automation in the Microservices Oriented Enterprise by Shawn Wallace by QA or the Highway
Test Automation in the Microservices Oriented Enterprise by Shawn WallaceTest Automation in the Microservices Oriented Enterprise by Shawn Wallace
Test Automation in the Microservices Oriented Enterprise by Shawn Wallace
QA or the Highway692 views
Inside the IT Territory game server / Mark Lokshin (IT Territory) by DevGAMM Conference
Inside the IT Territory game server / Mark Lokshin (IT Territory)Inside the IT Territory game server / Mark Lokshin (IT Territory)
Inside the IT Territory game server / Mark Lokshin (IT Territory)
Modern API Security with JSON Web Tokens by Jonathan LeBlanc
Modern API Security with JSON Web TokensModern API Security with JSON Web Tokens
Modern API Security with JSON Web Tokens
Jonathan LeBlanc3.7K views
Best Practices for Design Hardware APIs by Matt Haines
Best Practices for Design Hardware APIsBest Practices for Design Hardware APIs
Best Practices for Design Hardware APIs
Matt Haines486 views

More from Hunter Loftis

Painting with Light: 3D Rendering in Golang by
Painting with Light: 3D Rendering in GolangPainting with Light: 3D Rendering in Golang
Painting with Light: 3D Rendering in GolangHunter Loftis
341 views127 slides
Painting with Light (Scenic City Summit) by
Painting with Light (Scenic City Summit)Painting with Light (Scenic City Summit)
Painting with Light (Scenic City Summit)Hunter Loftis
114 views108 slides
Stop js-1999 by
Stop js-1999Stop js-1999
Stop js-1999Hunter Loftis
747 views50 slides
Production-Ready Node.js by
Production-Ready Node.jsProduction-Ready Node.js
Production-Ready Node.jsHunter Loftis
597 views36 slides
Playing with Photons in JavaScript by
Playing with Photons in JavaScriptPlaying with Photons in JavaScript
Playing with Photons in JavaScriptHunter Loftis
207 views41 slides
Nobody Wants Junior Engineers by
Nobody Wants Junior EngineersNobody Wants Junior Engineers
Nobody Wants Junior EngineersHunter Loftis
230 views44 slides

More from Hunter Loftis(10)

Painting with Light: 3D Rendering in Golang by Hunter Loftis
Painting with Light: 3D Rendering in GolangPainting with Light: 3D Rendering in Golang
Painting with Light: 3D Rendering in Golang
Hunter Loftis341 views
Painting with Light (Scenic City Summit) by Hunter Loftis
Painting with Light (Scenic City Summit)Painting with Light (Scenic City Summit)
Painting with Light (Scenic City Summit)
Hunter Loftis114 views
Production-Ready Node.js by Hunter Loftis
Production-Ready Node.jsProduction-Ready Node.js
Production-Ready Node.js
Hunter Loftis597 views
Playing with Photons in JavaScript by Hunter Loftis
Playing with Photons in JavaScriptPlaying with Photons in JavaScript
Playing with Photons in JavaScript
Hunter Loftis207 views
Nobody Wants Junior Engineers by Hunter Loftis
Nobody Wants Junior EngineersNobody Wants Junior Engineers
Nobody Wants Junior Engineers
Hunter Loftis230 views
Stop JavaScripting like it's 1999 by Hunter Loftis
Stop JavaScripting like it's 1999Stop JavaScripting like it's 1999
Stop JavaScripting like it's 1999
Hunter Loftis901 views
We Will All Be Game Developers by Hunter Loftis
We Will All Be Game DevelopersWe Will All Be Game Developers
We Will All Be Game Developers
Hunter Loftis602 views
ConvergeSE: We Will All Be Game Developers by Hunter Loftis
ConvergeSE: We Will All Be Game DevelopersConvergeSE: We Will All Be Game Developers
ConvergeSE: We Will All Be Game Developers
Hunter Loftis575 views
ForwardJS: We Will All Be Game Developers by Hunter Loftis
ForwardJS: We Will All Be Game DevelopersForwardJS: We Will All Be Game Developers
ForwardJS: We Will All Be Game Developers
Hunter Loftis1.5K views

Recently uploaded

SAP Automation Using Bar Code and FIORI.pdf by
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdfVirendra Rai, PMP
23 views38 slides
STKI Israeli Market Study 2023 corrected forecast 2023_24 v3.pdf by
STKI Israeli Market Study 2023   corrected forecast 2023_24 v3.pdfSTKI Israeli Market Study 2023   corrected forecast 2023_24 v3.pdf
STKI Israeli Market Study 2023 corrected forecast 2023_24 v3.pdfDr. Jimmy Schwarzkopf
19 views29 slides
Evolving the Network Automation Journey from Python to Platforms by
Evolving the Network Automation Journey from Python to PlatformsEvolving the Network Automation Journey from Python to Platforms
Evolving the Network Automation Journey from Python to PlatformsNetwork Automation Forum
13 views21 slides
The Research Portal of Catalonia: Growing more (information) & more (services) by
The Research Portal of Catalonia: Growing more (information) & more (services)The Research Portal of Catalonia: Growing more (information) & more (services)
The Research Portal of Catalonia: Growing more (information) & more (services)CSUC - Consorci de Serveis Universitaris de Catalunya
80 views25 slides
Democratising digital commerce in India-Report by
Democratising digital commerce in India-ReportDemocratising digital commerce in India-Report
Democratising digital commerce in India-ReportKapil Khandelwal (KK)
15 views161 slides
Attacking IoT Devices from a Web Perspective - Linux Day by
Attacking IoT Devices from a Web Perspective - Linux Day Attacking IoT Devices from a Web Perspective - Linux Day
Attacking IoT Devices from a Web Perspective - Linux Day Simone Onofri
16 views68 slides

Recently uploaded(20)

SAP Automation Using Bar Code and FIORI.pdf by Virendra Rai, PMP
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdf
STKI Israeli Market Study 2023 corrected forecast 2023_24 v3.pdf by Dr. Jimmy Schwarzkopf
STKI Israeli Market Study 2023   corrected forecast 2023_24 v3.pdfSTKI Israeli Market Study 2023   corrected forecast 2023_24 v3.pdf
STKI Israeli Market Study 2023 corrected forecast 2023_24 v3.pdf
Attacking IoT Devices from a Web Perspective - Linux Day by Simone Onofri
Attacking IoT Devices from a Web Perspective - Linux Day Attacking IoT Devices from a Web Perspective - Linux Day
Attacking IoT Devices from a Web Perspective - Linux Day
Simone Onofri16 views
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive by Network Automation Forum
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLiveAutomating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Serverless computing with Google Cloud (2023-24) by wesley chun
Serverless computing with Google Cloud (2023-24)Serverless computing with Google Cloud (2023-24)
Serverless computing with Google Cloud (2023-24)
wesley chun11 views
Unit 1_Lecture 2_Physical Design of IoT.pdf by StephenTec
Unit 1_Lecture 2_Physical Design of IoT.pdfUnit 1_Lecture 2_Physical Design of IoT.pdf
Unit 1_Lecture 2_Physical Design of IoT.pdf
StephenTec12 views
Empathic Computing: Delivering the Potential of the Metaverse by Mark Billinghurst
Empathic Computing: Delivering  the Potential of the MetaverseEmpathic Computing: Delivering  the Potential of the Metaverse
Empathic Computing: Delivering the Potential of the Metaverse
Mark Billinghurst478 views
Igniting Next Level Productivity with AI-Infused Data Integration Workflows by Safe Software
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Safe Software263 views
HTTP headers that make your website go faster - devs.gent November 2023 by Thijs Feryn
HTTP headers that make your website go faster - devs.gent November 2023HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023
Thijs Feryn22 views
Five Things You SHOULD Know About Postman by Postman
Five Things You SHOULD Know About PostmanFive Things You SHOULD Know About Postman
Five Things You SHOULD Know About Postman
Postman33 views

Making Sense of Multiplayer