The document discusses network performance testing conducted by Sony. It shows graphs of bandwidth test results from different regions, including download and upload speeds. Most territories had over 80% of users with download speeds of 2-8Mbps or higher, while Korea had over 90% of users with speeds of 8-50Mbps or higher. Upload speeds were generally lower, with most areas having over 60% of users below 2Mbps. Round-trip time tests showed significant spikes for hotel and airline WiFi compared to wired connections. The conclusion is that network performance varies greatly depending on location and connection type.
Via http://gafferongames.com/2010/03/11/gdc-2010-networked-physics-slides-demo/
This talk is about how to network a physics simulation over the internet. I will show you how to hide latency when player’s interact with physically simulated objects, and how to support late join to players can join or leave the game at any time - all without requiring a server.
SoftLayer provides global, on-demand data center and hosting services from facilities across the U.S. We leverage best-in-class connectivity and technology to innovate industry leading, fully automated solutions that empower enterprises with complete access, control, security, and scalability.
Via http://gafferongames.com/2010/03/11/gdc-2010-networked-physics-slides-demo/
This talk is about how to network a physics simulation over the internet. I will show you how to hide latency when player’s interact with physically simulated objects, and how to support late join to players can join or leave the game at any time - all without requiring a server.
SoftLayer provides global, on-demand data center and hosting services from facilities across the U.S. We leverage best-in-class connectivity and technology to innovate industry leading, fully automated solutions that empower enterprises with complete access, control, security, and scalability.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Enhancing Performance with Globus and the Science DMZGlobus
ESnet has led the way in helping national facilities—and many other institutions in the research community—configure Science DMZs and troubleshoot network issues to maximize data transfer performance. In this talk we will present a summary of approaches and tips for getting the most out of your network infrastructure using Globus Connect Server.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™UiPathCommunity
In questo evento online gratuito, organizzato dalla Community Italiana di UiPath, potrai esplorare le nuove funzionalità di Autopilot, il tool che integra l'Intelligenza Artificiale nei processi di sviluppo e utilizzo delle Automazioni.
📕 Vedremo insieme alcuni esempi dell'utilizzo di Autopilot in diversi tool della Suite UiPath:
Autopilot per Studio Web
Autopilot per Studio
Autopilot per Apps
Clipboard AI
GenAI applicata alla Document Understanding
👨🏫👨💻 Speakers:
Stefano Negro, UiPath MVPx3, RPA Tech Lead @ BSP Consultant
Flavio Martinelli, UiPath MVP 2023, Technical Account Manager @UiPath
Andrei Tasca, RPA Solutions Team Lead @NTT Data
Welcome to the first live UiPath Community Day Dubai! Join us for this unique occasion to meet our local and global UiPath Community and leaders. You will get a full view of the MEA region's automation landscape and the AI Powered automation technology capabilities of UiPath. Also, hosted by our local partners Marc Ellis, you will enjoy a half-day packed with industry insights and automation peers networking.
📕 Curious on our agenda? Wait no more!
10:00 Welcome note - UiPath Community in Dubai
Lovely Sinha, UiPath Community Chapter Leader, UiPath MVPx3, Hyper-automation Consultant, First Abu Dhabi Bank
10:20 A UiPath cross-region MEA overview
Ashraf El Zarka, VP and Managing Director MEA, UiPath
10:35: Customer Success Journey
Deepthi Deepak, Head of Intelligent Automation CoE, First Abu Dhabi Bank
11:15 The UiPath approach to GenAI with our three principles: improve accuracy, supercharge productivity, and automate more
Boris Krumrey, Global VP, Automation Innovation, UiPath
12:15 To discover how Marc Ellis leverages tech-driven solutions in recruitment and managed services.
Brendan Lingam, Director of Sales and Business Development, Marc Ellis
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
The Metaverse and AI: how can decision-makers harness the Metaverse for their...Jen Stirrup
The Metaverse is popularized in science fiction, and now it is becoming closer to being a part of our daily lives through the use of social media and shopping companies. How can businesses survive in a world where Artificial Intelligence is becoming the present as well as the future of technology, and how does the Metaverse fit into business strategy when futurist ideas are developing into reality at accelerated rates? How do we do this when our data isn't up to scratch? How can we move towards success with our data so we are set up for the Metaverse when it arrives?
How can you help your company evolve, adapt, and succeed using Artificial Intelligence and the Metaverse to stay ahead of the competition? What are the potential issues, complications, and benefits that these technologies could bring to us and our organizations? In this session, Jen Stirrup will explain how to start thinking about these technologies as an organisation.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
2024 State of Marketing Report – by HubspotMarius Sescu
https://www.hubspot.com/state-of-marketing
· Scaling relationships and proving ROI
· Social media is the place for search, sales, and service
· Authentic influencer partnerships fuel brand growth
· The strongest connections happen via call, click, chat, and camera.
· Time saved with AI leads to more creative work
· Seeking: A single source of truth
· TLDR; Get on social, try AI, and align your systems.
· More human marketing, powered by robots
ChatGPT is a revolutionary addition to the world since its introduction in 2022. A big shift in the sector of information gathering and processing happened because of this chatbot. What is the story of ChatGPT? How is the bot responding to prompts and generating contents? Swipe through these slides prepared by Expeed Software, a web development company regarding the development and technical intricacies of ChatGPT!
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Enhancing Performance with Globus and the Science DMZGlobus
ESnet has led the way in helping national facilities—and many other institutions in the research community—configure Science DMZs and troubleshoot network issues to maximize data transfer performance. In this talk we will present a summary of approaches and tips for getting the most out of your network infrastructure using Globus Connect Server.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™UiPathCommunity
In questo evento online gratuito, organizzato dalla Community Italiana di UiPath, potrai esplorare le nuove funzionalità di Autopilot, il tool che integra l'Intelligenza Artificiale nei processi di sviluppo e utilizzo delle Automazioni.
📕 Vedremo insieme alcuni esempi dell'utilizzo di Autopilot in diversi tool della Suite UiPath:
Autopilot per Studio Web
Autopilot per Studio
Autopilot per Apps
Clipboard AI
GenAI applicata alla Document Understanding
👨🏫👨💻 Speakers:
Stefano Negro, UiPath MVPx3, RPA Tech Lead @ BSP Consultant
Flavio Martinelli, UiPath MVP 2023, Technical Account Manager @UiPath
Andrei Tasca, RPA Solutions Team Lead @NTT Data
Welcome to the first live UiPath Community Day Dubai! Join us for this unique occasion to meet our local and global UiPath Community and leaders. You will get a full view of the MEA region's automation landscape and the AI Powered automation technology capabilities of UiPath. Also, hosted by our local partners Marc Ellis, you will enjoy a half-day packed with industry insights and automation peers networking.
📕 Curious on our agenda? Wait no more!
10:00 Welcome note - UiPath Community in Dubai
Lovely Sinha, UiPath Community Chapter Leader, UiPath MVPx3, Hyper-automation Consultant, First Abu Dhabi Bank
10:20 A UiPath cross-region MEA overview
Ashraf El Zarka, VP and Managing Director MEA, UiPath
10:35: Customer Success Journey
Deepthi Deepak, Head of Intelligent Automation CoE, First Abu Dhabi Bank
11:15 The UiPath approach to GenAI with our three principles: improve accuracy, supercharge productivity, and automate more
Boris Krumrey, Global VP, Automation Innovation, UiPath
12:15 To discover how Marc Ellis leverages tech-driven solutions in recruitment and managed services.
Brendan Lingam, Director of Sales and Business Development, Marc Ellis
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
The Metaverse and AI: how can decision-makers harness the Metaverse for their...Jen Stirrup
The Metaverse is popularized in science fiction, and now it is becoming closer to being a part of our daily lives through the use of social media and shopping companies. How can businesses survive in a world where Artificial Intelligence is becoming the present as well as the future of technology, and how does the Metaverse fit into business strategy when futurist ideas are developing into reality at accelerated rates? How do we do this when our data isn't up to scratch? How can we move towards success with our data so we are set up for the Metaverse when it arrives?
How can you help your company evolve, adapt, and succeed using Artificial Intelligence and the Metaverse to stay ahead of the competition? What are the potential issues, complications, and benefits that these technologies could bring to us and our organizations? In this session, Jen Stirrup will explain how to start thinking about these technologies as an organisation.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
2024 State of Marketing Report – by HubspotMarius Sescu
https://www.hubspot.com/state-of-marketing
· Scaling relationships and proving ROI
· Social media is the place for search, sales, and service
· Authentic influencer partnerships fuel brand growth
· The strongest connections happen via call, click, chat, and camera.
· Time saved with AI leads to more creative work
· Seeking: A single source of truth
· TLDR; Get on social, try AI, and align your systems.
· More human marketing, powered by robots
ChatGPT is a revolutionary addition to the world since its introduction in 2022. A big shift in the sector of information gathering and processing happened because of this chatbot. What is the story of ChatGPT? How is the bot responding to prompts and generating contents? Swipe through these slides prepared by Expeed Software, a web development company regarding the development and technical intricacies of ChatGPT!
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
The realm of product design is a constantly changing environment where technology and style intersect. Every year introduces fresh challenges and exciting trends that mold the future of this captivating art form. In this piece, we delve into the significant trends set to influence the look and functionality of product design in the year 2024.
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
Mental health has been in the news quite a bit lately. Dozens of U.S. states are currently suing Meta for contributing to the youth mental health crisis by inserting addictive features into their products, while the U.S. Surgeon General is touring the nation to bring awareness to the growing epidemic of loneliness and isolation. The country has endured periods of low national morale, such as in the 1970s when high inflation and the energy crisis worsened public sentiment following the Vietnam War. The current mood, however, feels different. Gallup recently reported that national mental health is at an all-time low, with few bright spots to lift spirits.
To better understand how Americans are feeling and their attitudes towards mental health in general, ThinkNow conducted a nationally representative quantitative survey of 1,500 respondents and found some interesting differences among ethnic, age and gender groups.
Technology
For example, 52% agree that technology and social media have a negative impact on mental health, but when broken out by race, 61% of Whites felt technology had a negative effect, and only 48% of Hispanics thought it did.
While technology has helped us keep in touch with friends and family in faraway places, it appears to have degraded our ability to connect in person. Staying connected online is a double-edged sword since the same news feed that brings us pictures of the grandkids and fluffy kittens also feeds us news about the wars in Israel and Ukraine, the dysfunction in Washington, the latest mass shooting and the climate crisis.
Hispanics may have a built-in defense against the isolation technology breeds, owing to their large, multigenerational households, strong social support systems, and tendency to use social media to stay connected with relatives abroad.
Age and Gender
When asked how individuals rate their mental health, men rate it higher than women by 11 percentage points, and Baby Boomers rank it highest at 83%, saying it’s good or excellent vs. 57% of Gen Z saying the same.
Gen Z spends the most amount of time on social media, so the notion that social media negatively affects mental health appears to be correlated. Unfortunately, Gen Z is also the generation that’s least comfortable discussing mental health concerns with healthcare professionals. Only 40% of them state they’re comfortable discussing their issues with a professional compared to 60% of Millennials and 65% of Boomers.
Race Affects Attitudes
As seen in previous research conducted by ThinkNow, Asian Americans lag other groups when it comes to awareness of mental health issues. Twenty-four percent of Asian Americans believe that having a mental health issue is a sign of weakness compared to the 16% average for all groups. Asians are also considerably less likely to be aware of mental health services in their communities (42% vs. 55%) and most likely to seek out information on social media (51% vs. 35%).
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
This article is all about what AI trends will emerge in the field of creative operations in 2024. All the marketers and brand builders should be aware of these trends for their further use and save themselves some time!
A report by thenetworkone and Kurio.
The contributing experts and agencies are (in an alphabetical order): Sylwia Rytel, Social Media Supervisor, 180heartbeats + JUNG v MATT (PL), Sharlene Jenner, Vice President - Director of Engagement Strategy, Abelson Taylor (USA), Alex Casanovas, Digital Director, Atrevia (ES), Dora Beilin, Senior Social Strategist, Barrett Hoffher (USA), Min Seo, Campaign Director, Brand New Agency (KR), Deshé M. Gully, Associate Strategist, Day One Agency (USA), Francesca Trevisan, Strategist, Different (IT), Trevor Crossman, CX and Digital Transformation Director; Olivia Hussey, Strategic Planner; Simi Srinarula, Social Media Manager, The Hallway (AUS), James Hebbert, Managing Director, Hylink (CN / UK), Mundy Álvarez, Planning Director; Pedro Rojas, Social Media Manager; Pancho González, CCO, Inbrax (CH), Oana Oprea, Head of Digital Planning, Jam Session Agency (RO), Amy Bottrill, Social Account Director, Launch (UK), Gaby Arriaga, Founder, Leonardo1452 (MX), Shantesh S Row, Creative Director, Liwa (UAE), Rajesh Mehta, Chief Strategy Officer; Dhruv Gaur, Digital Planning Lead; Leonie Mergulhao, Account Supervisor - Social Media & PR, Medulla (IN), Aurelija Plioplytė, Head of Digital & Social, Not Perfect (LI), Daiana Khaidargaliyeva, Account Manager, Osaka Labs (UK / USA), Stefanie Söhnchen, Vice President Digital, PIABO Communications (DE), Elisabeth Winiartati, Managing Consultant, Head of Global Integrated Communications; Lydia Aprina, Account Manager, Integrated Marketing and Communications; Nita Prabowo, Account Manager, Integrated Marketing and Communications; Okhi, Web Developer, PNTR Group (ID), Kei Obusan, Insights Director; Daffi Ranandi, Insights Manager, Radarr (SG), Gautam Reghunath, Co-founder & CEO, Talented (IN), Donagh Humphreys, Head of Social and Digital Innovation, THINKHOUSE (IRE), Sarah Yim, Strategy Director, Zulu Alpha Kilo (CA).
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
The search marketing landscape is evolving rapidly with new technologies, and professionals, like you, rely on innovative paid search strategies to meet changing demands.
It’s important that you’re ready to implement new strategies in 2024.
Check this out and learn the top trends in paid search advertising that are expected to gain traction, so you can drive higher ROI more efficiently in 2024.
You’ll learn:
- The latest trends in AI and automation, and what this means for an evolving paid search ecosystem.
- New developments in privacy and data regulation.
- Emerging ad formats that are expected to make an impact next year.
Watch Sreekant Lanka from iQuanti and Irina Klein from OneMain Financial as they dive into the future of paid search and explore the trends, strategies, and technologies that will shape the search marketing landscape.
If you’re looking to assess your paid search strategy and design an industry-aligned plan for 2024, then this webinar is for you.
5 Public speaking tips from TED - Visualized summarySpeakerHub
From their humble beginnings in 1984, TED has grown into the world’s most powerful amplifier for speakers and thought-leaders to share their ideas. They have over 2,400 filmed talks (not including the 30,000+ TEDx videos) freely available online, and have hosted over 17,500 events around the world.
With over one billion views in a year, it’s no wonder that so many speakers are looking to TED for ideas on how to share their message more effectively.
The article “5 Public-Speaking Tips TED Gives Its Speakers”, by Carmine Gallo for Forbes, gives speakers five practical ways to connect with their audience, and effectively share their ideas on stage.
Whether you are gearing up to get on a TED stage yourself, or just want to master the skills that so many of their speakers possess, these tips and quotes from Chris Anderson, the TED Talks Curator, will encourage you to make the most impactful impression on your audience.
See the full article and more summaries like this on SpeakerHub here: https://speakerhub.com/blog/5-presentation-tips-ted-gives-its-speakers
See the original article on Forbes here:
http://www.forbes.com/forbes/welcome/?toURL=http://www.forbes.com/sites/carminegallo/2016/05/06/5-public-speaking-tips-ted-gives-its-speakers/&refURL=&referrer=#5c07a8221d9b
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
Everyone is in agreement that ChatGPT (and other generative AI tools) will shape the future of work. Yet there is little consensus on exactly how, when, and to what extent this technology will change our world.
Businesses that extract maximum value from ChatGPT will use it as a collaborative tool for everything from brainstorming to technical maintenance.
For individuals, now is the time to pinpoint the skills the future professional will need to thrive in the AI age.
Check out this presentation to understand what ChatGPT is, how it will shape the future of work, and how you can prepare to take advantage.
A brief introduction to DataScience with explaining of the concepts, algorithms, machine learning, supervised and unsupervised learning, clustering, statistics, data preprocessing, real-world applications etc.
It's part of a Data Science Corner Campaign where I will be discussing the fundamentals of DataScience, AIML, Statistics etc.
Time Management & Productivity - Best PracticesVit Horky
Here's my presentation on by proven best practices how to manage your work time effectively and how to improve your productivity. It includes practical tips and how to use tools such as Slack, Google Apps, Hubspot, Google Calendar, Gmail and others.
The six step guide to practical project managementMindGenius
The six step guide to practical project management
If you think managing projects is too difficult, think again.
We’ve stripped back project management processes to the
basics – to make it quicker and easier, without sacrificing
the vital ingredients for success.
“If you’re looking for some real-world guidance, then The Six Step Guide to Practical Project Management will help.”
Dr Andrew Makar, Tactical Project Management
48. UDP Reflector Experiment
Coded a simple UDP Reflector
VPS in Seattle, Atlanta and Sydney
Sent 256 byte packets @ 30pps from LA
and recorded when they bounced back...
(This is roughly 64kbps)
This talk is about how to network a physics simulation over the internet. \n\nThis talk is in three parts:\n1) First I will show you how the Internet works - How much bandwidth you can use, what network conditions are like and whether to use TCP or UDP for sending packets etc...\n\n2) Next I will show you how to synchronize a physics simulation running on one computer such that it can be viewed on another.\n\n3) Finally, I’ll describe one possible networking model (out of many) in reasonable detail. This networking model is well suited to P2P cooperative games with lots of physics object interactions. I’ll show you how this network model avoids O(n) simulation cost per-player, how it hides latency when players interact with physically simulation objects, and how it supports late joins - all without requiring a dedicated server.\n\nLets begin!\n
This talk is about how to network a physics simulation over the internet. \n\nThis talk is in three parts:\n1) First I will show you how the Internet works - How much bandwidth you can use, what network conditions are like and whether to use TCP or UDP for sending packets etc...\n\n2) Next I will show you how to synchronize a physics simulation running on one computer such that it can be viewed on another.\n\n3) Finally, I’ll describe one possible networking model (out of many) in reasonable detail. This networking model is well suited to P2P cooperative games with lots of physics object interactions. I’ll show you how this network model avoids O(n) simulation cost per-player, how it hides latency when players interact with physically simulation objects, and how it supports late joins - all without requiring a dedicated server.\n\nLets begin!\n
This talk is about how to network a physics simulation over the internet. \n\nThis talk is in three parts:\n1) First I will show you how the Internet works - How much bandwidth you can use, what network conditions are like and whether to use TCP or UDP for sending packets etc...\n\n2) Next I will show you how to synchronize a physics simulation running on one computer such that it can be viewed on another.\n\n3) Finally, I’ll describe one possible networking model (out of many) in reasonable detail. This networking model is well suited to P2P cooperative games with lots of physics object interactions. I’ll show you how this network model avoids O(n) simulation cost per-player, how it hides latency when players interact with physically simulation objects, and how it supports late joins - all without requiring a dedicated server.\n\nLets begin!\n
This talk is about how to network a physics simulation over the internet. \n\nThis talk is in three parts:\n1) First I will show you how the Internet works - How much bandwidth you can use, what network conditions are like and whether to use TCP or UDP for sending packets etc...\n\n2) Next I will show you how to synchronize a physics simulation running on one computer such that it can be viewed on another.\n\n3) Finally, I’ll describe one possible networking model (out of many) in reasonable detail. This networking model is well suited to P2P cooperative games with lots of physics object interactions. I’ll show you how this network model avoids O(n) simulation cost per-player, how it hides latency when players interact with physically simulation objects, and how it supports late joins - all without requiring a dedicated server.\n\nLets begin!\n
This talk is about how to network a physics simulation over the internet. \n\nThis talk is in three parts:\n1) First I will show you how the Internet works - How much bandwidth you can use, what network conditions are like and whether to use TCP or UDP for sending packets etc...\n\n2) Next I will show you how to synchronize a physics simulation running on one computer such that it can be viewed on another.\n\n3) Finally, I’ll describe one possible networking model (out of many) in reasonable detail. This networking model is well suited to P2P cooperative games with lots of physics object interactions. I’ll show you how this network model avoids O(n) simulation cost per-player, how it hides latency when players interact with physically simulation objects, and how it supports late joins - all without requiring a dedicated server.\n\nLets begin!\n
This talk is about how to network a physics simulation over the internet. \n\nThis talk is in three parts:\n1) First I will show you how the Internet works - How much bandwidth you can use, what network conditions are like and whether to use TCP or UDP for sending packets etc...\n\n2) Next I will show you how to synchronize a physics simulation running on one computer such that it can be viewed on another.\n\n3) Finally, I’ll describe one possible networking model (out of many) in reasonable detail. This networking model is well suited to P2P cooperative games with lots of physics object interactions. I’ll show you how this network model avoids O(n) simulation cost per-player, how it hides latency when players interact with physically simulation objects, and how it supports late joins - all without requiring a dedicated server.\n\nLets begin!\n
This demo shows what we are trying to network!\n\nIt is designed very specifically to show a case where players interact at close range with physically simulated objects using the open source library ODE (Open Dynamics Engine)\n\nThe objects can roll, tumble and stack. Their motion is highly non-linear. Traditional networking techniques break down for this sort of motion.\n\nThere are one million cubes in this demo. But we can only afford to simulate and render a few at any time, so only objects within the activation circle are simulated and rendered.\n\nObjects outside the circle are deactivated. The entire world is persistent so if I move some objects over here, then move away -- when I return to that area the objects are in the same place I left them. (try doing this by holding SPACE + arrow keys in the demo to clear a line... then return along that line to inspect the cubes are as they were left)\n\nThis persistence is quite important for the rest of this talk. Please note that objects are not “created” or “destroyed” as they fade-in and out - they always exist. They simply deactivate when they are outside your circle.\n\nThere is an array of one million cubes in this demo in memory. Each cube has a unique id corresponding to its index in this array. While an object is active it is assigned an “active id” which is the index of the active cube in the pool of active objects. This active id is transient and will be different each time an object activates.\n\nIn effect this demo shows a very basic open world game engine. So consider therefore that this talk is not only going to show you how to network a physics simulation, but how to do so in an open world game such that you may synchronize one million cubes and support late join, without requiring existing players in the game to pause or to zip up and send the state for up to one million dirty cubes to the client when they join.\n\nEverything about this networking model is designed to “stream in” the minimal amount of changes as required as players move around the world.\n\nYou can download the demo and source code from www.gafferongames.com\n\nThe demo is open source with a creative commons non-commercial use clause.\n\nPlease contact me on glenn.fiedler@gmail.com if you have any questions about the demo, I’m happy to answer your questions.\n\n
PART ONE \n\nBefore we begin networking, I have some bad news for you...\n\nThe internet sucks.\n\nI will prove it to you!\n\n
PART ONE \n\nBefore we begin networking, I have some bad news for you...\n\nThe internet sucks.\n\nI will prove it to you!\n\n
First I will show you exactly how much bandwidth is available. \n\nIt is less than you think!\n\nI have some bandwidth statistics collected from four Sony titles: Pain, Warhawk, Fat Princess and GT5 Prolog\n\nUpload and bandwidth samples were collected over a period of 20 days: 01/30/2010 and 02/18/2010\n\nThere are over 2.7 million samples in total across all four Sony territories:\n\nSCEA (USA)\n1,022,240 upload samples\n 339,207 download samples\n\nSCEE (Europe)\n 671,969 upload samples\n 310,240 download samples\n\nSCEJ (Japan)\n 284,973 upload samples\n 29,076 download samples\n\nSCEK (Korea)\n 36,186 upload samples\n 18,808 download samples\n\nTOTAL SAMPLES: 2,710,699\n\n
First I will show you exactly how much bandwidth is available. \n\nIt is less than you think!\n\nI have some bandwidth statistics collected from four Sony titles: Pain, Warhawk, Fat Princess and GT5 Prolog\n\nUpload and bandwidth samples were collected over a period of 20 days: 01/30/2010 and 02/18/2010\n\nThere are over 2.7 million samples in total across all four Sony territories:\n\nSCEA (USA)\n1,022,240 upload samples\n 339,207 download samples\n\nSCEE (Europe)\n 671,969 upload samples\n 310,240 download samples\n\nSCEJ (Japan)\n 284,973 upload samples\n 29,076 download samples\n\nSCEK (Korea)\n 36,186 upload samples\n 18,808 download samples\n\nTOTAL SAMPLES: 2,710,699\n\n
First I will show you exactly how much bandwidth is available. \n\nIt is less than you think!\n\nI have some bandwidth statistics collected from four Sony titles: Pain, Warhawk, Fat Princess and GT5 Prolog\n\nUpload and bandwidth samples were collected over a period of 20 days: 01/30/2010 and 02/18/2010\n\nThere are over 2.7 million samples in total across all four Sony territories:\n\nSCEA (USA)\n1,022,240 upload samples\n 339,207 download samples\n\nSCEE (Europe)\n 671,969 upload samples\n 310,240 download samples\n\nSCEJ (Japan)\n 284,973 upload samples\n 29,076 download samples\n\nSCEK (Korea)\n 36,186 upload samples\n 18,808 download samples\n\nTOTAL SAMPLES: 2,710,699\n\n
First I will show you exactly how much bandwidth is available. \n\nIt is less than you think!\n\nI have some bandwidth statistics collected from four Sony titles: Pain, Warhawk, Fat Princess and GT5 Prolog\n\nUpload and bandwidth samples were collected over a period of 20 days: 01/30/2010 and 02/18/2010\n\nThere are over 2.7 million samples in total across all four Sony territories:\n\nSCEA (USA)\n1,022,240 upload samples\n 339,207 download samples\n\nSCEE (Europe)\n 671,969 upload samples\n 310,240 download samples\n\nSCEJ (Japan)\n 284,973 upload samples\n 29,076 download samples\n\nSCEK (Korea)\n 36,186 upload samples\n 18,808 download samples\n\nTOTAL SAMPLES: 2,710,699\n\n
Download bandwidth probe samples.\n\nWhen the title is run it connects to a nearby Sony server in the local region and performs a download bandwidth test.\n\nThe tested bandwidth represents not the “advertised” speed of the ISP connection, but the actual bandwidth as verified between the PS3 running the title and the bandwidth probe server in the same region.\n\nThe scale from left to right is:\n\n0-1 mbps\n1-2 mbps\n2-8 mbps\n8-50 mbps\n50mbps +\n\nNote: I’m being particularly loose with kbps and mbps -- you get the general idea though.\n
Here are the download bandwidth stats for the USA:\n\n8% have 0-1mbps\n\n-----------------------\n\n[SCEA Download]\n\n0 to 256 kbps: 3244\n257 to 512 kbps: 5224\n513 to 768 kbps: 9677\n769 to 1024 kbps: 9891\n1025 to 1536 kbps: 24548\n1537 to 2048 kbps: 12613\n2049 to 8192 kbps: 110960\n8193 to 49152 kbps: 110519\n49153 kbps and higher: 52531\ntotal: 339207\n\n99% have 256kbps download or greater\n95.5% have 512kbps download or greater\n92% have 1mbps download or greater\n15.5% have 50mbps download or greater\n\n
11% of have 1 - 2 mbps\n\n
80% have 2 mbps or greater\n
Europe\n\n----------------------\n\n[SCEE Download]\n\n0 to 256 kbps: 2612\n257 to 512 kbps: 4842\n513 to 768 kbps: 5488\n769 to 1024 kbps: 8937\n1025 to 1536 kbps: 12357\n1537 to 2048 kbps: 17043\n2049 to 8192 kbps: 139246\n8193 to 49152 kbps: 66903\n49153 kbps and higher: 52812\ntotal: 310240\n\n99.15% have 256kbps download or greater\n97.6% have 512kbps download or greater\n92.95% have 1mbps download or greater\n17% have 50mbps download or greater\n\n
7% have under 1 mbps\n
9.5% have 1 - 2 mbps\n
83.5% have >= 2 mbps\n
Japan\n\n------------------\n\n[SCEJ Download]\n\n0 to 256 kbps: 59\n257 to 512 kbps: 140\n513 to 768 kbps: 70\n769 to 1024 kbps: 176\n1025 to 1536 kbps: 235\n1537 to 2048 kbps: 229\n2049 to 8192 kbps: 6895\n8193 to 49152 kbps: 5318\n49153 kbps and higher: 15954\ntotal: 29076\n\n96.87% have 2mbps or greater download\n73.1% have 8mbps or greater download\n54.87% have 50mbps or greater download\n\n
Japanese broadband quality is extremely good.\n\n97% have >= 2 mbps!\n
Korea\n\n------------------\n\n[SCEK Download]\n\n0 to 256 kbps: 123\n257 to 512 kbps: 34\n513 to 768 kbps: 42\n769 to 1024 kbps: 162\n1025 to 1536 kbps: 121\n1537 to 2048 kbps: 319\n2049 to 8192 kbps: 999\n8193 to 49152 kbps: 1011\n49153 kbps and higher: 15997\ntotal: 18808\n\n85% have 50mbps or greater upload (!!)\n
Korea wins. \n\n85% have 50 mbps +\n\n!!!\n
\n
Upload bandwidth samples now...\n\nIMPORTANT: The scale is now different!\n\n0 - 256 kbps\n256 - 512 kbps\n512 - 2048 kbps\n2048 - 50mbps\n50 mbps +\n\nWhy? \n\nLess upload than download bandwidth, in general.\n
USA\n\n6% have under 256 kbps upload\n\nNOTE: 8% of US samples have up to 1mbps upload\n\n--------------------------\n\n[SCEA Upload]\n\n0 to 64 kbps: 11382\n65 to 128 kbps: 15875\n129 to 192 kbps: 13057\n193 to 256 kbps: 16471\n257 to 320 kbps: 25956\n321 to 384 kbps: 67586\n385 to 448 kbps: 68718\n449 to 512 kbps: 36776\n513 to 768 kbps: 162619\n769 to 1024 kbps: 86700\n1025 to 1536 kbps: 74117\n1537 to 2048 kbps: 46740\n2049 to 8192 kbps: 207959\n8193 to 49152 kbps: 71228\n49153 kbps and higher: 117055\ntotal: 1022240\n\n99% of samples have 64kbps upload or greater\n97.3% of samples have 128kbps upload or greater\n94.4% of samples have 256kbps upload or greater\n75% have 512kbps upload or greater\n11% have 50mbps or greater upload \n\n
20% have 256 - 512 kbps\n
74% have 512 kbps or greater\n
Europe\n\n-------------------------\n\n[SCEE Upload]\n\n0 to 64 kbps: 4331\n65 to 128 kbps: 14360\n129 to 192 kbps: 21310\n193 to 256 kbps: 24708\n257 to 320 kbps: 35718\n321 to 384 kbps: 50931\n385 to 448 kbps: 57975\n449 to 512 kbps: 41187\n513 to 768 kbps: 101331\n769 to 1024 kbps: 113460\n1025 to 1536 kbps: 26815\n1537 to 2048 kbps: 13687\n2049 to 8192 kbps: 27415\n8193 to 49152 kbps: 26738\n49153 kbps and higher: 112003\ntotal: 671969\n\n99.4% have 64kbps upload or greater\n97.2% have 128kbps upload or greater\n89% have 256kbps upload or greater\n62.72% have 512kbps upload or greater\n16.7% have 50mbps upload or greater\n\n
10% have less than 256 kbps upload\n
28% have 256 - 512 kbps upload\n
62% have 512 kbps or greater\n
Japan\n\n------------------\n\n[SCEJ Upload]\n\n0 to 64 kbps: 262\n65 to 128 kbps: 241\n129 to 192 kbps: 540\n193 to 256 kbps: 865\n257 to 320 kbps: 553\n321 to 384 kbps: 675\n385 to 448 kbps: 1741\n449 to 512 kbps: 1706\n513 to 768 kbps: 10378\n769 to 1024 kbps: 17449\n1025 to 1536 kbps: 5142\n1537 to 2048 kbps: 6006\n2049 to 8192 kbps: 14300\n8193 to 49152 kbps: 85247\n49153 kbps and higher: 139868\ntotal: 284973\n\n99.9% have 64kbps upload or greater\n97.7% have 512kbps upload or greater\n84% have 2048kbps upload or greater\n49% have 50mbps upload or greater\n\n
98% have 512 kbps or greater\n\nIncredible!\n
Korea\n\n-------------------\n\n[SCEK Upload]\n\n0 to 64 kbps: 13\n65 to 128 kbps: 58\n129 to 192 kbps: 37\n193 to 256 kbps: 308\n257 to 320 kbps: 89\n321 to 384 kbps: 144\n385 to 448 kbps: 265\n449 to 512 kbps: 119\n513 to 768 kbps: 381\n769 to 1024 kbps: 289\n1025 to 1536 kbps: 197\n1537 to 2048 kbps: 186\n2049 to 8192 kbps: 388\n8193 to 49152 kbps: 989\n49153 kbps and higher: 32723\ntotal: 36186\n\n90.4% have 50mbps or greater upload (*see note!)\n\nNOTE: in previous download samples for SCEK we found that 85% have 50mpbs or greater DL\nbut now we have 90% 50mbps upload or greater. this does not make sense!\nwe believe this to be an anomaly caused by not enough DL samples vs. UL in SCEK\nwe conclude that is most likely that in SCEK 90% have >= 50mbps up *AND* down! GO KOREA!!!\n\n
90% have 50 mbps +\n\n!!!!\n\nPRO-TIP: Move to Korea!\n
\n
99.1% can support 64kbps up and down.\n\nThis is my recommended minimum spec. Aim for this!\n\nThat’s roughly 256 byte packets @ 30 packets per-second*\n\nIMPORTANT: there are significantly more samples are USA and Europe than Japan and Korea\nTherefore this combined % is heavily biased towards the Western market. But then again, \nthe situation is so good in Japan and Korea - the Western market is the one you have to worry about! :)\n\n*Does not include packet header, which typically takes up around ~40 bytes per-packet on PSN, it’s more like 220 bytes or so\n\n-------------------\n\n[Upload Samples]\n\n0 to 64 kbps: 11382 + 4331 + 262 + 13 = 15988\n65 to 128 kbps: 15875 + 14360 + 241 + 58 = 30534\n129 to 192 kbps: 13057 + 21310 + 540 + 37 = 34944\n193 to 256 kbps: 16471 + 24708 + 865 + 308 = 42352\n\ntotal samples: 1022240 + 671969 + 284973 + 36186 = 2015368\n\n64kbps or greater: 15988\n128kbps or greater: 15988 + 30534 = 46522\n192kbps or greater: 15988 + 30534 + 34944 = 81466\n256kbps or greater: 15988 + 30534 + 34944 + 42352 = 123818\n\nTherefore:\n\n99.2% - 64 kbps or greater upload\n97.8% - 128 kbps or greater upload\n96.0% - 192 kbps or greater upload\n93.9% - 256 kbps or greater upload\n\n--------------------------------\n\n[Download Samples]\n\n0 to 256 kbps: 3244 + 2612 + 59 + 123 = 6038\n\ntotal samples: 339207 + 310240 + 29076 + 18808 = 697331\n\nTherefore:\n\n99.1% - 256 kbps or greater download\n
99.1% can support 64kbps up and down.\n\nThis is my recommended minimum spec. Aim for this!\n\nThat’s roughly 256 byte packets @ 30 packets per-second*\n\nIMPORTANT: there are significantly more samples are USA and Europe than Japan and Korea\nTherefore this combined % is heavily biased towards the Western market. But then again, \nthe situation is so good in Japan and Korea - the Western market is the one you have to worry about! :)\n\n*Does not include packet header, which typically takes up around ~40 bytes per-packet on PSN, it’s more like 220 bytes or so\n\n-------------------\n\n[Upload Samples]\n\n0 to 64 kbps: 11382 + 4331 + 262 + 13 = 15988\n65 to 128 kbps: 15875 + 14360 + 241 + 58 = 30534\n129 to 192 kbps: 13057 + 21310 + 540 + 37 = 34944\n193 to 256 kbps: 16471 + 24708 + 865 + 308 = 42352\n\ntotal samples: 1022240 + 671969 + 284973 + 36186 = 2015368\n\n64kbps or greater: 15988\n128kbps or greater: 15988 + 30534 = 46522\n192kbps or greater: 15988 + 30534 + 34944 = 81466\n256kbps or greater: 15988 + 30534 + 34944 + 42352 = 123818\n\nTherefore:\n\n99.2% - 64 kbps or greater upload\n97.8% - 128 kbps or greater upload\n96.0% - 192 kbps or greater upload\n93.9% - 256 kbps or greater upload\n\n--------------------------------\n\n[Download Samples]\n\n0 to 256 kbps: 3244 + 2612 + 59 + 123 = 6038\n\ntotal samples: 339207 + 310240 + 29076 + 18808 = 697331\n\nTherefore:\n\n99.1% - 256 kbps or greater download\n
I coded a simple UDP reflector which bounced packets back to me\n\nThen I setup VPS servers for about $10 a month in Seattle, Atlanta, and Sydney which ran my reflector code.\n\nI sent a 64kbps stream of 256 bytes @ 30pps from my computer in Los Angeles over my WiFi router + time warner cable\n\nThe packets bounced off the reflectors and back to me and I recorded the round trip times for each packet\n
Unfortunately what I discovered was not pretty!\n\nThe internet sucks, and not just because bandwidth is limited...\n
Unfortunately what I discovered was not pretty!\n\nThe internet sucks, and not just because bandwidth is limited...\n
Here is what I got from my home connection. A fast Time Warner cable 10mbit connection (!)\n\nThe graph shows the time it takes for a packet to travel to the reflector and back\n\nThis is the round trip time or “RTT”\n\nI wrote a Ruby script to analyze the samples and and export the CSV which created this graph\n\nHere are the results for this run:\n\n5 minutes @ 30pps = 9000 samples\n\nMean RTT: \n\n52ms to Seattle\n79ms to Atlanta\n173ms to Sydney\n\nPacket loss not really a problem at all:\n\nZero lost packets for Seattle and Atlanta\n\nOnly 42 out of 9000 packets lost to Sydney and back. That’s less than 0.5% packet loss!\n\nJitter is reasonably large, also note the circled RTT spikes, what the hell... ?!\n\nOne standard deviation of packet RTT is:\n\n10ms for Seattle\n8.7ms for Atlanta\n9.13ms for Sydney\n\n
Here is what I got from my home connection. A fast Time Warner cable 10mbit connection (!)\n\nThe graph shows the time it takes for a packet to travel to the reflector and back\n\nThis is the round trip time or “RTT”\n\nI wrote a Ruby script to analyze the samples and and export the CSV which created this graph\n\nHere are the results for this run:\n\n5 minutes @ 30pps = 9000 samples\n\nMean RTT: \n\n52ms to Seattle\n79ms to Atlanta\n173ms to Sydney\n\nPacket loss not really a problem at all:\n\nZero lost packets for Seattle and Atlanta\n\nOnly 42 out of 9000 packets lost to Sydney and back. That’s less than 0.5% packet loss!\n\nJitter is reasonably large, also note the circled RTT spikes, what the hell... ?!\n\nOne standard deviation of packet RTT is:\n\n10ms for Seattle\n8.7ms for Atlanta\n9.13ms for Sydney\n\n
Here is the detailed analysis output from my ruby script:\n\n-----------------------------\n\n samples/wifi/seattle.txt:\n\n sample count = 9001\n max sequence = 9000\n lost packets = 0\n\n average RTT = 52.23\n standard deviation = 10.08\n\n samples/wednesday-evening/atlanta.txt:\n\n sample count = 9001\n max sequence = 9000\n lost packets = 0\n\n average RTT = 79.45\n standard deviation = 8.71\n\n samples/wifi/sydney.txt:\n\n sample count = 8959\n max sequence = 9000\n lost packets = 42\n\n average RTT = 173.05\n standard deviation = 9.13\n\n
So I thought OK, maybe the cat walked in front of the WiFi and caused the spikes... next time I try directly plugged in to my cable modem. Surely everything would be perfect now?\n\nNot really.\n\nSeattle RTT went down from 53ms RTT to 47ms -- 6ms improvement\n\nOne standard deviation of jitter reduced from 10ms to 7ms -- 3ms improvement.\n\nOnly 23 packets lost to Australia and back, is this significant? Probably not.\n\nJitter to Sydney and back was actually worse. Definitely sources of jitter other than my WiFi.\n\nOverall slightly better, but in roughly the same ballpark! -- note there is still a large sustained RTT spike in the Australia graph (?!)\n\n----------------------------\n\n samples/wired/seattle.txt:\n\n sample count = 9001\n max sequence = 9000\n lost packets = 0\n\n average RTT = 47.4134293270746\n standard deviation = 7.7117658130723\n\n samples/wired/atlanta.txt:\n\n sample count = 9001\n max sequence = 9000\n lost packets = 0\n\n average RTT = 74.5527052237528\n standard deviation = 8.1440094131561\n\n samples/wired/sydney.txt:\n\n sample count = 8978\n max sequence = 9000\n lost packets = 23\n\n average RTT = 177.743882071619\n standard deviation = 13.2487919391835\n\n
So I thought OK, maybe the cat walked in front of the WiFi and caused the spikes... next time I try directly plugged in to my cable modem. Surely everything would be perfect now?\n\nNot really.\n\nSeattle RTT went down from 53ms RTT to 47ms -- 6ms improvement\n\nOne standard deviation of jitter reduced from 10ms to 7ms -- 3ms improvement.\n\nOnly 23 packets lost to Australia and back, is this significant? Probably not.\n\nJitter to Sydney and back was actually worse. Definitely sources of jitter other than my WiFi.\n\nOverall slightly better, but in roughly the same ballpark! -- note there is still a large sustained RTT spike in the Australia graph (?!)\n\n----------------------------\n\n samples/wired/seattle.txt:\n\n sample count = 9001\n max sequence = 9000\n lost packets = 0\n\n average RTT = 47.4134293270746\n standard deviation = 7.7117658130723\n\n samples/wired/atlanta.txt:\n\n sample count = 9001\n max sequence = 9000\n lost packets = 0\n\n average RTT = 74.5527052237528\n standard deviation = 8.1440094131561\n\n samples/wired/sydney.txt:\n\n sample count = 8978\n max sequence = 9000\n lost packets = 23\n\n average RTT = 177.743882071619\n standard deviation = 13.2487919391835\n\n
Just for kicks I sampled RTT times on the flight over here using Virgin America’s WiFi service\n\nHere are the results, note the super-high packet loss for Atlanta and Sydney -- I will explain on the next slide...\n\n------------------------\n\n samples/virgin/seattle.txt:\n\n sample count = 8990\n max sequence = 9000\n lost packets = 11\n\n average RTT = 351.638138424027\n standard deviation = 61.2823643239847\n\n samples/virgin/atlanta.txt:\n\n sample count = 722\n max sequence = 8984\n lost packets = 8263\n\n average RTT = 289.63182949446\n standard deviation = 27.1364142427556\n\n samples/virgin/sydney.txt:\n\n sample count = 704\n max sequence = 8990\n lost packets = 8287\n\n average RTT = 485.126497289772\n standard deviation = 55.3614542536085\n\n
Now with seattle hidden, look at the samples at the left. the router is shaping me like crazy -- each time i switch to a new IP it gives me a burst of a few seconds where 100% packets get through -- note the graph is really dense for the first bit on the left, then gets more sparse -- after this it only lets through one packet every second or so makes it, crazy! It’s almost 99% packet loss!\n\nIronically when I arrived in SF the Virgin Wireless sent me an email asking me “So what did you think of our WiFi service?”. \n\nHmmm! :)\n
Now with seattle hidden, look at the samples at the left. the router is shaping me like crazy -- each time i switch to a new IP it gives me a burst of a few seconds where 100% packets get through -- note the graph is really dense for the first bit on the left, then gets more sparse -- after this it only lets through one packet every second or so makes it, crazy! It’s almost 99% packet loss!\n\nIronically when I arrived in SF the Virgin Wireless sent me an email asking me “So what did you think of our WiFi service?”. \n\nHmmm! :)\n
\n
Upon arriving to SF of course I sampled my Hotel’s WiFi...\n\nTo my surprise it was actually the best RTT sample I’ve ever seen - WOW!\n\nVery very flat RTT graph with just a few lonely spikes.\n\nAlmost too good to be true?!\n\nIt was pretty late Sunday night, maybe nobody had arrived yet and I was the only person using their fat pipe?\n\n----------------\n \n samples/intercontinental/seattle.txt:\n\n sample count = 8945\n max sequence = 9000\n lost packets = 56\n\n average RTT = 26.8950195913918\n standard deviation = 2.08503691203364\n\n samples/intercontinental/atlanta.txt:\n\n sample count = 8991\n max sequence = 9000\n lost packets = 10\n\n average RTT = 66.7807113194309\n standard deviation = 2.37586512211464\n\n samples/intercontinental/sydney.txt:\n\n sample count = 8933\n max sequence = 9000\n lost packets = 68\n\n average RTT = 165.041152326766\n standard deviation = 4.08977165189762\n\n\n
Upon arriving to SF of course I sampled my Hotel’s WiFi...\n\nTo my surprise it was actually the best RTT sample I’ve ever seen - WOW!\n\nVery very flat RTT graph with just a few lonely spikes.\n\nAlmost too good to be true?!\n\nIt was pretty late Sunday night, maybe nobody had arrived yet and I was the only person using their fat pipe?\n\n----------------\n \n samples/intercontinental/seattle.txt:\n\n sample count = 8945\n max sequence = 9000\n lost packets = 56\n\n average RTT = 26.8950195913918\n standard deviation = 2.08503691203364\n\n samples/intercontinental/atlanta.txt:\n\n sample count = 8991\n max sequence = 9000\n lost packets = 10\n\n average RTT = 66.7807113194309\n standard deviation = 2.37586512211464\n\n samples/intercontinental/sydney.txt:\n\n sample count = 8933\n max sequence = 9000\n lost packets = 68\n\n average RTT = 165.041152326766\n standard deviation = 4.08977165189762\n\n\n
\n
So I tried it again the next day around the same and this is what I got -- WTF?!\n\nGDC Nerd Invasion perhaps... really poor sample, especially look how spiky the seattle RTT is in the second half ...\n\n------------\n\n samples/intercontinental-monday/seattle.txt:\n\n sample count = 8393\n max sequence = 9000\n lost packets = 608\n\n average RTT = 32.5382831620397\n standard deviation = 12.5023049232386\n\n samples/intercontinental-monday/atlanta.txt:\n\n sample count = 8477\n max sequence = 9000\n lost packets = 524\n\n average RTT = 69.2751138718886\n standard deviation = 7.29225816338481\n\n samples/intercontinental-monday/sydney.txt:\n\n sample count = 8548\n max sequence = 8999\n lost packets = 452\n\n average RTT = 166.2297241157\n standard deviation = 5.47549134232777\n\n\n\n
To finally ram the point home.\n\nHere are some a typical Round Trip Time (RTT) spike sampled over 10 seconds\n\nThis is not an average case, but perhaps an typical worst case -- what you can expect occasionally on a good connection or frequently, on a poor one :)\n\nNotice spike A -- one packet just decides that it will arrive half a second late for no reason at all\n\nB is a block of packets for half a second somewhere between 120 and 300ms -- compared with average RTT of ~60ms\n\nC and D are some other late packet spikes\n\nNote as well that in general the graph is has a small amount of baseline jitter -- most packets arrive between 60-80ms\n\nThis is the typical crap you have to deal with when developing an online game.\n
To finally ram the point home.\n\nHere are some a typical Round Trip Time (RTT) spike sampled over 10 seconds\n\nThis is not an average case, but perhaps an typical worst case -- what you can expect occasionally on a good connection or frequently, on a poor one :)\n\nNotice spike A -- one packet just decides that it will arrive half a second late for no reason at all\n\nB is a block of packets for half a second somewhere between 120 and 300ms -- compared with average RTT of ~60ms\n\nC and D are some other late packet spikes\n\nNote as well that in general the graph is has a small amount of baseline jitter -- most packets arrive between 60-80ms\n\nThis is the typical crap you have to deal with when developing an online game.\n
To finally ram the point home.\n\nHere are some a typical Round Trip Time (RTT) spike sampled over 10 seconds\n\nThis is not an average case, but perhaps an typical worst case -- what you can expect occasionally on a good connection or frequently, on a poor one :)\n\nNotice spike A -- one packet just decides that it will arrive half a second late for no reason at all\n\nB is a block of packets for half a second somewhere between 120 and 300ms -- compared with average RTT of ~60ms\n\nC and D are some other late packet spikes\n\nNote as well that in general the graph is has a small amount of baseline jitter -- most packets arrive between 60-80ms\n\nThis is the typical crap you have to deal with when developing an online game.\n
To finally ram the point home.\n\nHere are some a typical Round Trip Time (RTT) spike sampled over 10 seconds\n\nThis is not an average case, but perhaps an typical worst case -- what you can expect occasionally on a good connection or frequently, on a poor one :)\n\nNotice spike A -- one packet just decides that it will arrive half a second late for no reason at all\n\nB is a block of packets for half a second somewhere between 120 and 300ms -- compared with average RTT of ~60ms\n\nC and D are some other late packet spikes\n\nNote as well that in general the graph is has a small amount of baseline jitter -- most packets arrive between 60-80ms\n\nThis is the typical crap you have to deal with when developing an online game.\n
So it is now proven.\n\nThe internet sucks.\n\nWhy?\n\nBecause the internet is best effort only\n\nit gives you absolutely no guarantee except that it will “try” to delivery the packet\n\nmost importantly: the internet makes *no guarantee* that packets will arrive on time\n\nrecommendations:\n\n- bandwidth: be conservative = 64kbit - 256kbit/sec (64k minspec)\n- packet loss not too bad, better than you think, it’s actually quite rare\n- latency is decent in general\n- jitter and late packets are the key problem for realtime protocols (eg. voice, video, games etc...)\n\nQoS issues\nIPv6\nflow routing\nnon-realtime “nice” bit in packet header\netc...\n\noverall advice: be conservative with bandwidth usage, send rates, expectations of realtime packet delivery etc.\n\n
So it is now proven.\n\nThe internet sucks.\n\nWhy?\n\nBecause the internet is best effort only\n\nit gives you absolutely no guarantee except that it will “try” to delivery the packet\n\nmost importantly: the internet makes *no guarantee* that packets will arrive on time\n\nrecommendations:\n\n- bandwidth: be conservative = 64kbit - 256kbit/sec (64k minspec)\n- packet loss not too bad, better than you think, it’s actually quite rare\n- latency is decent in general\n- jitter and late packets are the key problem for realtime protocols (eg. voice, video, games etc...)\n\nQoS issues\nIPv6\nflow routing\nnon-realtime “nice” bit in packet header\netc...\n\noverall advice: be conservative with bandwidth usage, send rates, expectations of realtime packet delivery etc.\n\n
So it is now proven.\n\nThe internet sucks.\n\nWhy?\n\nBecause the internet is best effort only\n\nit gives you absolutely no guarantee except that it will “try” to delivery the packet\n\nmost importantly: the internet makes *no guarantee* that packets will arrive on time\n\nrecommendations:\n\n- bandwidth: be conservative = 64kbit - 256kbit/sec (64k minspec)\n- packet loss not too bad, better than you think, it’s actually quite rare\n- latency is decent in general\n- jitter and late packets are the key problem for realtime protocols (eg. voice, video, games etc...)\n\nQoS issues\nIPv6\nflow routing\nnon-realtime “nice” bit in packet header\netc...\n\noverall advice: be conservative with bandwidth usage, send rates, expectations of realtime packet delivery etc.\n\n
PART TWO\n\nWe have a simulation running on one computer -- how to view it on another?\n\nLets first look at how we will send packets between the computers...\n\nWe need to be very careful how we send our data, because it has been conclusively proven that the internet sucks\n
PART TWO\n\nWe have a simulation running on one computer -- how to view it on another?\n\nLets first look at how we will send packets between the computers...\n\nWe need to be very careful how we send our data, because it has been conclusively proven that the internet sucks\n
PART TWO\n\nWe have a simulation running on one computer -- how to view it on another?\n\nLets first look at how we will send packets between the computers...\n\nWe need to be very careful how we send our data, because it has been conclusively proven that the internet sucks\n
At the low level all packets travel over Internet Protocol (IP)\n\nTransmission Control Protocol (TCP) and User Datagram Protocol (UDP) are both built on top of IP.\n\nMeaning that both UDP and TCP packets are actually sent inside IP packets.\n\nShould we use TCP or UDP to synchronize our physics simulation?\n
To make the right decision we must first understand how IP works!\n
Here we have our little mini-internet\n\nEach node between our two represents another node in the network like a computer or a router (same thing really...)\n\nPackets are passed from node to node until they reach their destination\n
\n
\n
\n
\n
\n
Each packet may take a different route to the destination.\n\nIP makes no guarantee that a number of packets sent in a row will all take the same route, even though this may occur.\n\n\n
\n
\n
\n
\n
\n
Packets may be lost. \n\nThe sender and receiver are not notified when this happens. The packet just “disappears”.\n
\n
\n
\n
\n
Packets may also be duplicated across multiple routes. \n\nIt also possible for one packet to take a much longer route than other packets.\n\nThese two things are the root cause of out of order and duplicate packets.\n\n(What typically happens when the stable route changes in the middle of a sequence of packets you will temporarily see two streams of packets arriving from different routes, overlaid on top of each other until the route switch is complete.)\n
\n
\n
\n
\n
\n
It is important to note that IP is how the internet really works\n\nBoth TCP and UDP work on top of IP, so they must both work within this model\n
\n
If you have used TCP sockets then you know that TCP makes reading and writing data over the network just like reading and writing to a file\n\nTCP guarantees that data arrives reliably and in-order\n\nThe internet does not work this way!\n
Unfortunately some people are a bit confused and think the internet works like TCP.\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
The internet does not work like this\n\nThe internet is packet based\n\nThe internet has limited bandwidth.\n\nThe internet does not guarantee that your packets will arrive...\n\nLet alone that they will arrive at nicely spaced intervals on the other side - some packets will be very late!\n
The most important part of this talk: Never use TCP for realtime protocols! \n\nWhy?\n\nBecause TCP delivers packets reliably and in-order the receiver must wait for lost packets before receiving most recent packets.\n\nWe do not want this. We want the most recent packet as soon as it arrives!\n\nThere is no way to “fix” this behavior with TCP\n\nIt is fundamentally how TCP works.\n\nTherefore...\n\n\n
Use UDP instead\n\nUDP works exactly like the underlying IP network.\n\nPackets can be lost, received out of order.\n\nIf one packet is lost, you can process the next one without waiting for the lost packet to be resent.\n\nThink about it - if information is time critical - what good is a resent packet anyway?\n
The most important thing to remember:\n\nIf you require real-time delivery of packets with minimum latency and jitter - always use UDP!\n\nIf all of your data is most-recent state, then you can use UDP add a sequence number at the top of your packet and everything will be fine. Just ignore out of order or lost packets and carry on.\n\nIf you need to deliver some data reliably, you can develop your own reliability system inside your UDP protocol\n\nThis is not really that hard to do and is a worthwhile exercise for any network programmer\n\nSee here for more info http://www.gafferongames.com/networking-for-game-programmers/reliability-and-flow-control\n\nAlternatively, most networking middleware uses UDP and will do this for you - Raknet, OpenTNL, ENet etc...\n
The demo shows two simulations side by side with one second simulated latency (for effect)\n\nTo see this for yourself, run the demo and press ALT-2 (note: MacOSX 64bit version only)\n\nYou should see two views of the world in splitscreen, the view of the left is the master which you control\n\nthe view on the right is the slave, which has one second of simulated latency\n\nwhat you do on the left can be viewed on the right... move around with arrow keys, press space to jump, hold space to hover. hold z to do katamari effect\n\nNote that everything stays in sync!\n
The demo shows two simulations side by side with one second simulated latency (for effect)\n\nTo see this for yourself, run the demo and press ALT-2 (note: MacOSX 64bit version only)\n\nYou should see two views of the world in splitscreen, the view of the left is the master which you control\n\nthe view on the right is the slave, which has one second of simulated latency\n\nwhat you do on the left can be viewed on the right... move around with arrow keys, press space to jump, hold space to hover. hold z to do katamari effect\n\nNote that everything stays in sync!\n
how does it work?\n\nmost importantly: we are running the simulation on both sides\n\noverview of main loop: authority on left is controlling the simulation\n\nremote view just “sees” what happens on authority side -- no player controlling stuff on remote view, just one player here\n\nfirst we quantize the state using whatever compression scheme we transmit with (if lossy) to ensure the same loss occurs on both sides - this improves determinism\n\nnext, note that when receiving packets we will not receive nice packets @ 30pps as were sent (see RTT graphs previously...)\n\nsome frames we will receive no packets, other frames we will receive clumps of packets\n\nthe simplest way to handle this is to include a sequence number in each packet. this number increases with each packet sent. on the receiver side at the beginning of each frame simply receive all queued up packets, if any -- then push only the most recent sequence number to the simulation.\n\nIn effect we are saying “we only care about the most recent state”.\n\nNote that when we apply the physics state in the remote view we snap it hard. This works well for ODE but your mileage may vary depending on the physics engine you are using. Ideally, if you set the physics object in the remote view to exactly match the network state then they extrapolation should match very closely as well, at least for a second or so. In general you get a better extrapolation from a known good physics state than from attempting to apply a physics force to “push” an object towards where it should be (lame).\n\nTo cover up cases where you have discrepancies between the remote view and the latest state coming in over the network, I like to use a simple smoothing algorithm. I maintain an error offset and quaternion delta between the current state an the desired state coming in from the network. I snap the desired physical state hard, but track error offset which is used to visually smooth this error out over time. I use an exponentially smoothed moving average to reduce this error to zero over time, eg. position_error *= smoothing_tightness. This is done in local space so the smoothed view of the object does not lag at speed.\n\nSee the source code for more details.\n\n
Here is the structure of the UDP packet we send.\n
We include a sequence number at the top, the number is increased with each packed sent. \n\nWe only need 16 bits or so assuming 30pps because it is easy to handle wrap around. \n\nEg:\n\ninline bool sequence_more_recent( unsigned int s1, unsigned int s2, unsigned int max_sequence )\n{\n // returns true if sequence s1 is more recent than s2\n return ( s1 > s2 ) && ( s1 - s2 <= max_sequence/2 ) ||\n ( s2 > s1 ) && ( s2 - s1 > max_sequence/2 );\n}\n\n\n
We need the sequence number because packets may arrive out of order, or in duplicate -- sometimes packets arrive really really late. sequence number lets us ignore these packets.\n\nIn summary, the sequence number is used to:\n\na) discard out of order packets\nb) detect lost packets\nc) push the most recent state only each frame, in the case when multiple packets are received per-frame\n
\n
\n
\n
\n
\n
\n
The player&#x2019;s input is sent.\n\nIn this case left, right, up, down, space (and Z actually, for the katamari...)\n\nIf the remote view does not receive a packet in a given frame, it holds the same input as it last received\n\nI&#x2019;ve found that this generally gives the best extrapolation under packet loss, late packets for most cases in this specific demo\n\nYMMV\n
State is a count = n, followed by n rigid bodies. \n\nI cram as many rigid bodies into the packet as I can.\n
Each cube has the following rigid body state:\n\nid, \nposition\norientation\nangular velocity\nlinear velocity\nactive (true if active, false if at rest)\n\nthat&#x2019;s 12 bytes for each vector, 16 bytes for the quaternion, and another 4 bytes so we can identify the cube over the network\n\nThat&#x2019;s 57 bytes per-rigid body\n\n!!!\n\nYou can compress this:\n\nid is in range [1,1000000] or so, does not need full 32 bits, bitpack it\n\nposition xz can be compressed relative to origin point of circle, send the origin once at the beginning of the packet quantized to 1meter res (int) -- then encode a +/- 10m or so @ 1mm precision as integer values\n\nposition y encoded by constraining object in range [0,max_height] and quantizing to 1mm or so\n\nquaternion compressed to 32bits using smallest 3 method (see game gems article). very easy to compress, can get away with less than 32 bits even.\n\nlin/ang velocity compressed by limiting max velocity and compressing in range -- see source code.\n\nimportant: active means &#x201C;not at rest&#x201D;. if active = false, no need to send lin/ang vel over network, assumed zero. saves a lot of bandwidth\n\nalso note - when you do this compression, make sure you quantize all objects on the sender side at the beginning of each frame, as you would when packing them into a packet, this ensures that the simulation in the remote view extrapolates from the same initial state that the authority side starts with)\n\n
Even with compression, say 20 bytes per-rigid body instead of 70+ -- you can only fit about 10 or so objects into a 220 byte packet (assuming header etc. @ 64kbit/sec)\n\nClearly we have more than 10 active objects -- how to distribute updates across the scene, while prioritizing some objects over others?\n\nThe solution is simple: priority accumulator\n\nEach object has priority accum float value -- each frame you calculate dt * priority scale for each object.\n\nEach packet sent... grab n highest priority objects. serialize as many as will fit into the packet. Each object which goes into sent packet has priority set back to zero.\n\nNext frame, priority accumulates scaled by dt again. high priority objects bubble up quickly, while low-priority objects still get included in packets occasionally.\n\nTherefore updates are distributed fairly, while still prioritizing some objects over others.\n\nIn this demo, i prioritize objects i interact with (same color as my cube) over stationary objects -- this works pretty well. if the circle was much larger, i&#x2019;d prioritize by distance as well, and maybe view frustum and so on... you get the general idea.\n\n
one final thing before we move on...\n\ninstead of just pushing most recent state you can consider using a jitter buffer\n\nthis means that instead of pushing most recent state, you hold packets in jitter buffer for 100ms before pushing to sim\n\neffectively, this trades latency and packet loss (late packets = last packets) for smooth delivery of packets spaced evenly @ the time they were sent, eg. 30pps.\n\njitter buffers are used a lot in VoIP, it seems easy but it is actually reasonably complicated (!)\n\ngoogle for &#x201C;jitter buffer&#x201D; or &#x201C;playout delay buffer&#x201D; --- for more advanced stuff, look for papers on &#x201C;adaptive jitter buffer&#x201D;, &#x201C;adaptive playout delay&#x201D;\n\nbut here is my quick summary, include timestamp in packets, try to speed up / slow down play out to adjust to keep X ahead of average (or min) timestamp coming in from authority in remote view. trickier than it seems, given IP &#x201C;best effort&#x201D; packet delivery -- requires a lot of testing and tuning to get right, especially when the baseline RTT may fluctuate over the course of a connection.\n\n
Demo showing 4 players\n\nTo see this run the demo then press ALT-4 to start the cube demo (ALT-5 if you are in the Win32 MIGS&#x2019;09 demo)\n\n(You should see random sized red cubes raining down, plus one big red cube controlled by the player)\n\nThen press 6 to view top-down\n\nPress tab once to view the other player&#x2019;s activation circles\n\nPress enter once to see splitscreen, then enter again to view quadscreen\n\nNow you see each player has 4 separate worlds of 1 million cubes each\n\nNote that each player only activates objects inside their own activation circle\n\nThere is currently no communication between each player&#x2019;s world (verify by moving about using arrow keys, press 1,2,3,4 to select current player and arrow keys to move around)\n
Demo showing 4 players\n\nTo see this run the demo then press ALT-4 to start the cube demo (ALT-5 if you are in the Win32 MIGS&#x2019;09 demo)\n\n(You should see random sized red cubes raining down, plus one big red cube controlled by the player)\n\nThen press 6 to view top-down\n\nPress tab once to view the other player&#x2019;s activation circles\n\nPress enter once to see splitscreen, then enter again to view quadscreen\n\nNow you see each player has 4 separate worlds of 1 million cubes each\n\nNote that each player only activates objects inside their own activation circle\n\nThere is currently no communication between each player&#x2019;s world (verify by moving about using arrow keys, press 1,2,3,4 to select current player and arrow keys to move around)\n
We start with four separate worlds each containing one million cubes.\n\nNormally, each player only activates cubes inside their circle - lets assume that in this arrangement they are already CPU bound\n\nThere is no synchronization between the worlds at this point...\n\nHow can we keep all four simulations in sync? \n
One option would be to designate one of the players to be the server in a typical client/server setup.\n
The server player becomes the &#x201C;authority side&#x201D; for all objects. \n\nEach frame the clients send their input to the server, and each frame server sends out the the state of where objects are in the world.\n\nHowever, there are some problems with this...\n\nFirstly, clients feel latency because they do not see the simulation respond to their input until the state comes back from the server\n\nSecondly, the server player has 4X the CPU load that he does in singleplayer (note he has four circles)\n\nThis is a serious issue because physics simulation is generally very expensive, I&#x2019;d hate to have to reduce the game world to only 1/4 of the CPU budget just to support multiplayer.\n\nOne solution for problem this would be to host a dedicated server, this way the server could be very powerful and able to simulate 4X the objects. but it would cost a lot of money to provide one dedicated server for every four people who want to play the game...\n\nBecause of this I started to look into a peer-to-peer technique for synchronizing this game world instead.\n
What we want is for each player to only activate the objects which are around them, avoiding extra CPU, memory or streaming cost in multiplayer compared with singleplayer.\n\nBecause this is a COOP game we are willing to play a bit fast and loose and not be concerned with cheating\n\n(If you are a competitive game then I highly recommend you look into deterministic lockstep networking, or client/server techniques instead)\n
First lets try something naive...\n\nEach player just sends their input and the state of the objects inside their circle (their &#x201C;active objects&#x201D;) to all other players.\n\nIMPORTANT: please remember that the entire world state is persistent, therefore the red player is able to set the state of the cubes inside his circle on the blue player&#x2019;s machine -- even though those objects are not active on the blue player&#x2019;s machine.\n
The blue player sends his active objects to all other players.\n
Green player does the same\n
as does the yellow player\n
\n
The total data flow looks like this - it&#x2019;s complicated!\n
\n
Demo shows a few things...\n\nFirst that there is no synchronization on by default. Each player has their own set of 1 million cubes, all set to the same initial state, but they quickly diverge to different places on each player&#x2019;s machine.\n\nNext it shows that provided that the player&#x2019;s circles don&#x2019;t overlap, everything works fine -- objects stay in sync.\n\nBUT\n\nWhen the players circles overlap there is a massive jittering. This is feedback.\n\nThe problem is that there is no clearly defined direction of flow. In areas of overlap players fight over the position of objects.\n\nWhat we need to do is work out some way to ensure that state flows only one direction -- from authority to non-authority.\n\nBut we don&#x2019;t have a server which can arbitrate where an object should be... just four peers, each with their own unique view of the world\n\nHow can we ensure that all four players agree on the state of an object in the world?\n\n-----------\n\nDEMO:\n\nTo reproduce this in the demo, press ALT-3 to select authority demo (or ALT-4 in MIGS&#x2019;09 win32 build)\n\nThen press tab three times and you&#x2019;ll see other player object cubes\n\nNext press F2 to turn on sync (it&#x2019;s off by default) -- then move the red player cube into the blue player circle using the arrow keys\n\nRoll the cube around a bit inside the blue player&#x2019;s circle and you&#x2019;ll very quickly see lots of jittering in movement\n\nMove the cube outside the circle and the jitter disappears.\n\nYou can select other players via 1,2,3,4 then move them around too. Try overlapping all player circles for extra crazy!\n
Demo shows a few things...\n\nFirst that there is no synchronization on by default. Each player has their own set of 1 million cubes, all set to the same initial state, but they quickly diverge to different places on each player&#x2019;s machine.\n\nNext it shows that provided that the player&#x2019;s circles don&#x2019;t overlap, everything works fine -- objects stay in sync.\n\nBUT\n\nWhen the players circles overlap there is a massive jittering. This is feedback.\n\nThe problem is that there is no clearly defined direction of flow. In areas of overlap players fight over the position of objects.\n\nWhat we need to do is work out some way to ensure that state flows only one direction -- from authority to non-authority.\n\nBut we don&#x2019;t have a server which can arbitrate where an object should be... just four peers, each with their own unique view of the world\n\nHow can we ensure that all four players agree on the state of an object in the world?\n\n-----------\n\nDEMO:\n\nTo reproduce this in the demo, press ALT-3 to select authority demo (or ALT-4 in MIGS&#x2019;09 win32 build)\n\nThen press tab three times and you&#x2019;ll see other player object cubes\n\nNext press F2 to turn on sync (it&#x2019;s off by default) -- then move the red player cube into the blue player circle using the arrow keys\n\nRoll the cube around a bit inside the blue player&#x2019;s circle and you&#x2019;ll very quickly see lots of jittering in movement\n\nMove the cube outside the circle and the jitter disappears.\n\nYou can select other players via 1,2,3,4 then move them around too. Try overlapping all player circles for extra crazy!\n
The solution in this case is to use an authority scheme.\n\nThink of authority as like &#x201C;being the server&#x201D; for an object\n\nAuthority defines a direction of flow... state for an object flows from authority to non-authority. The non-authority side is the &#x201C;remote view&#x201D; of an object as described in the earlier slides synchronizing a simulation from left -> right.\n\nIn other words, if a player has authority over an object, they get to tell other players what the state of the object is.\n\nThis fixes the feedback effect when player circles overlap.\n
three rules solve all problems\n\nplayer authority: players always have authority over the object they are controlling (e.g their cube)\n\ntie-break authority: in areas of overlap, for grey cubes with default authority -- lowest player id wins. eg. in regions where red circle and blue circle overlap, the red player has authority and tells blue where grey cubes are.\n\ninteraction authority: players take authority over objects they interact with -- effectively becoming the server for that object, until it returns to rest and becomes grey again. this last technique hide latency for the higher player ids in areas of overlap.\n\nIMPORTANT: these techniques also make the game extremely vulnerable to cheating, please use this technique for coop games only!\n
Demo shows player authority -> default authority -> interaction authority\n\n---------------\n\nDEMO:\n\nTo reproduce this in the demo, press ALT-3 to select authority demo (or ALT-F4 in MIGS&#x2019;09 win32 build)\n\nThen press tab three times and you&#x2019;ll see other player object cubes\n\nNext press F2 to turn on sync (it&#x2019;s off by default) -- then move the red player cube into the blue player circle using the arrow keys\n\nRoll the cube around a bit inside the blue player&#x2019;s circle and you&#x2019;ll very quickly see lots of jittering in movement\n\nPress F3 to turn on player authority (jitter on player cubes goes away)\n\nPress F4 to turn on default authority (jitter on grey cubes goes away)\n\nPress F5 to turn on interaction authority (no jitter, and player feels no latency when interacting with other objects)\n
Players grab interaction authority locally without waiting for confirmation\n\nIt is possible that both players think they have authority over an object if there is a lot of lag (eg. 1 second) because they do not see the other players interaction with that object until after their own\n\nHow to resolve this conflict?\n\nIn this case the lowest player id wins\n\nLowest player keeps authority, higher player loses it and the object pops to correct state from higher player id (this pop is smoothed out visually...)\n\nSee the source code for implementation details.\n
Somebody joins in the middle of the game\n\nWe have 1 million cubes, i don&#x2019;t want to stop the entire game and zip up state for 1 million cubes when somebody joins...\n\nI want it to be seamless -- Ideally, i want to stream in just the fixes to world state as players need them\n\nThat&#x2019;s what this section is all about!\n
Somebody joins in the middle of the game\n\nWe have 1 million cubes, i don&#x2019;t want to stop the entire game and zip up state for 1 million cubes when somebody joins...\n\nI want it to be seamless -- Ideally, i want to stream in just the fixes to world state as players need them\n\nThat&#x2019;s what this section is all about!\n
Red player changes the state of the world, then the blue player joins -- the blue player does not know about these changes\n
In the demo the red player clears a swath, then the blue player joins -- blue player does not see it ... but instead sees regular grid of cubes, eg. initial state -- why?\n\n-------------------------\n\nDEMO:\n\nTo reproduce this in the demo, press ALT-4 to select corrections demo (or ALT-5 in MIGS&#x2019;09 win32 build)\n\nThen press tab once to see other player circles\n\nHold space then move the red player with arrow keys to clear a horizontal line, including right through the blue player&#x2019;s circle\n\nReturn the red player back to his initial position (press 6 for overhead view, line him up in top-left)\n\nPress enter twice to go to quadscreen.\n\nThere is no sync on right now, note that the blue player does not see the line cleared by red\n\nNow turn on sync by pressing F2 (it&#x2019;s off by default). This turns on everything up to and including interaction authority from previous section.\n\nNote that the blue player still does not see the line cleared by the red player before he joined.\n\nRoll the blue player across the red player&#x2019;s circle\n\nLook at the red player&#x2019;s state... the blue player has trashed the state of red player&#x2019;s world, undoing the line he cleared.\n\nWhy?\n
In the demo the red player clears a swath, then the blue player joins -- blue player does not see it ... but instead sees regular grid of cubes, eg. initial state -- why?\n\n-------------------------\n\nDEMO:\n\nTo reproduce this in the demo, press ALT-4 to select corrections demo (or ALT-5 in MIGS&#x2019;09 win32 build)\n\nThen press tab once to see other player circles\n\nHold space then move the red player with arrow keys to clear a horizontal line, including right through the blue player&#x2019;s circle\n\nReturn the red player back to his initial position (press 6 for overhead view, line him up in top-left)\n\nPress enter twice to go to quadscreen.\n\nThere is no sync on right now, note that the blue player does not see the line cleared by red\n\nNow turn on sync by pressing F2 (it&#x2019;s off by default). This turns on everything up to and including interaction authority from previous section.\n\nNote that the blue player still does not see the line cleared by the red player before he joined.\n\nRoll the blue player across the red player&#x2019;s circle\n\nLook at the red player&#x2019;s state... the blue player has trashed the state of red player&#x2019;s world, undoing the line he cleared.\n\nWhy?\n
Active objects in red players machine are sent to blue\n
Blue player sends his active objects to red...\n
\n
But no mechanism exists to send corrections from red player to blue in blue circle!\n\neg. the red player cannot correct the blue player when he is wrong\n\nalso the red player is always accepting updates from the blue player -- which causes the state to be trashed\n\nhow can we fix this?\n
The solution is to add the concept of corrections.\n\nA correction is the red player telling the blue player when he is incorrect about the state of objects in the world.\n\nThis way the red player informs the blue player, on a need-to-know basis -- about objects which had their state changed before the blue player joined the game.\n
There are three cases, depending on what the red player has done and where the blue player circle is in the world\n\n1. red player moves cube but it&#x2019;s still inside blue player&#x2019;s circle\n\n2. red player moved cube outside blue player&#x2019;s circle\n\n3. red player moved a cube that was outside the circle, inside the blue player&#x2019;s circle\n\n
The first two cases are pretty easy\n\nThe third case is tricky...\n\nLets look at two easy cases first because they have the same solution\n
Note that so far the red player is continually sending his active objects to the blue player\n\nAnd the blue player is sending his active objects to the red player (this is what trashed state)\n\nBut there is no mechanism for telling the blue player when the state he is sending to the red player is incorrect\n\nHere is what we do:\n\nEach time the red player receives state for a cube from the blue player, he looks at it and queues up a correction if that state is incorrect\n\n
In fact it&#x2019;s more complicated than this, the blue player may be sending the red player state for objects which the red player has never activated, or perhaps some objects that the red player agrees are in the correct place\n\nso we don&#x2019;t always say &#x201C;nonono, it should be over here&#x201D;\n\nFor each blue object state coming in from the player the red player inspects it and replies: &#x201C;agree, disagree or don&#x2019;t care&#x201D;\n\nagree means, ok i confirm that the object is actually where you think it is (within some tolerance)\n\ndisagree means - nonono, you have it all wrong it&#x2019;s over HERE instead (position and orientation are included to snap to)\n\ndon&#x2019;t care means -- i have never activated this object before and therefore I have no opinion where it should be!\n
It is even more complicated however, because not only does the red player need to correct the blue player when state is wrong -- the red player also needs to know when it is safe to accept state from the blue player\n\nFor players above red player objects are initially unconfirmed (red is confirmed by default, he started the game nobody can join before him!)\n\nIn the packet blue sends to red, for each object he includes &#x201C;confirmed&#x201D; true/false\n\nIf the state is unconfirmed the red player queues up a correction for the blue player to be included in a future packet\n\nOnce the blue player receives &#x201C;agree&#x201D;, &#x201C;disagree&#x201D; or &#x201C;dontcare&#x201D; for the object -- he sets the confirmed bit to true\n\nThe blue player only needs confirmation from the red player before he sets bit to true for object.\n\nGreen player needs confirmation from red and blue.\n\nYellow needs confirmation from red, blue and green.\n\nThis seems simple but it is actually quite complicated in practice especially when generalized to four players\n\nPlease look at the source code for implementation details.\n\n
demo showing working corrections, red clears swath -- blue sees corrections applied as he moves along the swath, does not trash red player&#x2019;s state\n\n-----\n\nTo reproduce this in the demo, press ALT-4 to select corrections demo (or ALT-5 in MIGS&#x2019;09 win32 build)\n\nThen press tab once to see other player circles\n\nHold space then move the red player with arrow keys to clear a horizontal line, including right through the blue player&#x2019;s circle\n\nReturn the red player back to his initial position (press 6 for overhead view, line him up in top-left)\n\nPress enter twice to go to quadscreen.\n\nThere is no sync on right now, note that the blue player does not see the line cleared by red\n\nNow turn on sync + corrections by pressing F3 (it&#x2019;s off by default). This turns on everything up to and including interaction authority from previous section and the corrections we just talked about.\n\nNote that as the blue player moves around the world the corrections stream in and the red player&#x2019;s swath is cleared in the world.\n\nAlso note that the blue player does not trash the red player&#x2019;s world state.\n
demo showing working corrections, red clears swath -- blue sees corrections applied as he moves along the swath, does not trash red player&#x2019;s state\n\n-----\n\nTo reproduce this in the demo, press ALT-4 to select corrections demo (or ALT-5 in MIGS&#x2019;09 win32 build)\n\nThen press tab once to see other player circles\n\nHold space then move the red player with arrow keys to clear a horizontal line, including right through the blue player&#x2019;s circle\n\nReturn the red player back to his initial position (press 6 for overhead view, line him up in top-left)\n\nPress enter twice to go to quadscreen.\n\nThere is no sync on right now, note that the blue player does not see the line cleared by red\n\nNow turn on sync + corrections by pressing F3 (it&#x2019;s off by default). This turns on everything up to and including interaction authority from previous section and the corrections we just talked about.\n\nNote that as the blue player moves around the world the corrections stream in and the red player&#x2019;s swath is cleared in the world.\n\nAlso note that the blue player does not trash the red player&#x2019;s world state.\n
The third case is very tricky!\n\nThe first two cases can be handled simply by looking for incorrect object state coming in the stream of objects sent from blue -> red\n\nBut the third case cannot... This is the case where the red player moved an object into the blue player&#x2019;s circle before blue joined\n\nOf course, blue does not know the object is inside his circle, so he is not sending state for it to the red player... normal corrections do not work\n
demo shows red player rolling up a large katamari of cubes then dumping them in the blue players circle -- blue player joins and the blue simulation does not see all cubes dumped in his circle, only a few... \n\nWhy?\n\n-------\n\nTo reproduce this in the demo, press ALT-4 to select authority demo (or ALT-5 in MIGS&#x2019;09 win32 build)\n\nThen press tab once to see other player circles\n\nNow as red player hold z and roll up a big katamari of cubes then roll over next to the blue player and dump the cubes in there (let go of z)\n\nRoll the red player back to his starting point top-left\n\nPress enter twice to go to quadscreen.\n\nThere is no sync on right now, note that the blue player does not see any changes made by red\n\nNow turn on sync + corrections by pressing F3 (it&#x2019;s off by default). This turns on everything up to and including interaction authority from previous section and the corrections we just talked about.\n\nThe blue player does not see the big pile of cubes the red player dumped in his circle\n\nWhy?\n
demo shows red player rolling up a large katamari of cubes then dumping them in the blue players circle -- blue player joins and the blue simulation does not see all cubes dumped in his circle, only a few... \n\nWhy?\n\n-------\n\nTo reproduce this in the demo, press ALT-4 to select authority demo (or ALT-5 in MIGS&#x2019;09 win32 build)\n\nThen press tab once to see other player circles\n\nNow as red player hold z and roll up a big katamari of cubes then roll over next to the blue player and dump the cubes in there (let go of z)\n\nRoll the red player back to his starting point top-left\n\nPress enter twice to go to quadscreen.\n\nThere is no sync on right now, note that the blue player does not see any changes made by red\n\nNow turn on sync + corrections by pressing F3 (it&#x2019;s off by default). This turns on everything up to and including interaction authority from previous section and the corrections we just talked about.\n\nThe blue player does not see the big pile of cubes the red player dumped in his circle\n\nWhy?\n
What we need is a new concept of &#x201C;reverse corrections&#x201D;\n\nRed player maintains set of objects he &#x201C;expects&#x201D; the blue player should be sending to him, eg. the objects he thinks are in the blue player&#x2019;s circle. He does not simulate these objects, he just tracks that the should be active for the blue player\n\nThen red watches the stream of incoming objects from the blue player\n\nIf he does not receive any update for an object which he thinks is inside the circle, red queues up a &#x201C;reverse correction&#x201D; to be sent back to blue player\n\nThis functions just the same way as a normal correction except it is the inverse -- we are sending corrections for objects which we do not receive instead of sending a correction for object state we did receive\n
\n
This technique is good for networking a cooperative game where players interact with physically simulated objects\n\nAnd where these objects typically return to being at rest after being interacted with, and where in general -- the world is large enough for players to be interacting with different islands of objects\n\nIn this common case latency is completely hidden via authority scheme\n\nLate join can be supported (in a very complicated fashion) using corrections\n\nIt is suitable only for cooperative games, because it is very prone to cheating (each player tells other players the state of the world...)\n\nBut for a large subset of games on closed platforms like PSN you can get a very cool game where players work together to solve physics puzzles in an open world --- who will make this game first?\n\nWill it be you?\n
This technique is good for networking a cooperative game where players interact with physically simulated objects\n\nAnd where these objects typically return to being at rest after being interacted with, and where in general -- the world is large enough for players to be interacting with different islands of objects\n\nIn this common case latency is completely hidden via authority scheme\n\nLate join can be supported (in a very complicated fashion) using corrections\n\nIt is suitable only for cooperative games, because it is very prone to cheating (each player tells other players the state of the world...)\n\nBut for a large subset of games on closed platforms like PSN you can get a very cool game where players work together to solve physics puzzles in an open world --- who will make this game first?\n\nWill it be you?\n
This technique is good for networking a cooperative game where players interact with physically simulated objects\n\nAnd where these objects typically return to being at rest after being interacted with, and where in general -- the world is large enough for players to be interacting with different islands of objects\n\nIn this common case latency is completely hidden via authority scheme\n\nLate join can be supported (in a very complicated fashion) using corrections\n\nIt is suitable only for cooperative games, because it is very prone to cheating (each player tells other players the state of the world...)\n\nBut for a large subset of games on closed platforms like PSN you can get a very cool game where players work together to solve physics puzzles in an open world --- who will make this game first?\n\nWill it be you?\n
There are many other ways to skin this cat\n\nThere is a variant for authority scheme which uses a dedicated server, see the insomniac &#x201C;Sync Host&#x201D; paper on their R&D website\n\nIn this client/server technique the authority scheme may still be used but the problem of late join is much easier to solve\n\nYou may also look into deterministic lockstep synchronization if you have low player counts and too much state to send. You just need to make sure your physics engine is deterministic.\n\nSee this page for more info http://gafferongames.com/networking-for-game-programmers/floating-point-determinism/\n\nIf you use this technique in a shipping game or have any questions about it -- please contact me I&#x2019;d love to hear from you\n
There are many other ways to skin this cat\n\nThere is a variant for authority scheme which uses a dedicated server, see the insomniac &#x201C;Sync Host&#x201D; paper on their R&D website\n\nIn this client/server technique the authority scheme may still be used but the problem of late join is much easier to solve\n\nYou may also look into deterministic lockstep synchronization if you have low player counts and too much state to send. You just need to make sure your physics engine is deterministic.\n\nSee this page for more info http://gafferongames.com/networking-for-game-programmers/floating-point-determinism/\n\nIf you use this technique in a shipping game or have any questions about it -- please contact me I&#x2019;d love to hear from you\n
Thanks for reading!\n
Please visit www.gafferongames.com for more information about game physics and networking\n\nHere you can also find a link to download an executable and source code for the demo used in this talk\n\nAnd make sure you follow me on twitter: @gafferongames\n\nHave fun with the demo source!\n