smaller update + bibliography

This commit is contained in:
Martin Slachta
2026-08-04 07:51:36 +02:00
parent 21112a6911
commit 88c07068f9
11 changed files with 301 additions and 241 deletions
+47
View File
@@ -48,3 +48,50 @@ isbn = {978-0128182000}
urldate = {2026-08-03},
hyphenation = {english}
}
@ONLINE{evolveheirachy,
author = {West, Mick},
title = {Evolve Your Hierarchy},
year = {2007},
url = {https://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/},
urldate = {2026-08-03},
hyphenation = {english}
}
@ONLINE{peekingvalorant,
author = {{dewet, Matt and Straily, David}},
title = {Peeking into VALORANT's Netcode},
year = {2020},
url = {https://www.riotgames.com/en/news/peeking-valorants-netcode},
urldate = {2026-08-03},
hyphenation = {english}
}
@ONLINE{gambettaclientserver,
author = {Gambetta, Gabriel},
title = {Fast-Paced Multiplayer (Part I): Client-Server Game Architecture},
year = {2026},
url = {https://www.gabrielgambetta.com/client-server-game-architecture.html},
urldate = {2026-08-03},
hyphenation = {english}
}
% https://www.comp.nus.edu.sg/~bleong/hydra/related/assiotis06mmorpg.pdf
@ONLINE{bleong,
author = {Marios Assiotis and Velin Tzanov},
title = {A Distributed Architecture for MMORPG},
year = {2006},
url = {https://www.comp.nus.edu.sg/~bleong/hydra/related/assiotis06mmorpg.pdf},
urldate = {2026-08-03},
hyphenation = {english}
}
@ONLINE{prdeving,
author = {PRDeving},
title = {MMO Architecture},
year = {2023},
url = {https://prdeving.wordpress.com/2023/09/29/mmo-architecture-source-of-truth-dataflows-i-o-bottlenecks-and-how-to-solve-them/},
urldate = {2026-08-03},
hyphenation = {english}
}
+110 -111
View File
@@ -74,153 +74,152 @@
\BKM@entry{id=23,open,dest={73756273656374696F6E2E342E31},srcline={591}}{5C3337365C3337375C303030345C3030302E5C303030315C3030305C3034305C303030455C3030306E5C303030675C303030695C3030306E5C30303065}
\@writefile{toc}{\contentsline {section}{\numberline {4}Hra}{21}{section.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Engine}{21}{subsection.4.1}\protected@file@percent }
\BKM@entry{id=24,open,dest={73756273756273656374696F6E2E342E312E31},srcline={623}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030465C303030795C3030307A5C303030695C303030635C3030306B5C3030305C3337355C3030305C3034305C303030655C3030306E5C303030675C303030695C3030306E5C30303065}
\BKM@entry{id=25,open,dest={73756273756273656374696F6E2E342E312E32},srcline={631}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030565C303030795C3030306B5C303030725C303030655C303030735C3030306C5C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535}
\BKM@entry{id=24,open,dest={73756273756273656374696F6E2E342E312E31},srcline={625}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030465C303030795C3030307A5C303030695C303030635C3030306B5C3030305C3337355C3030305C3034305C303030655C3030306E5C303030675C303030695C3030306E5C30303065}
\BKM@entry{id=25,open,dest={73756273756273656374696F6E2E342E312E32},srcline={633}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030565C303030795C3030306B5C303030725C303030655C303030735C3030306C5C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535}
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Architektura hry pro jednoho hráče}}{22}{figure.5}\protected@file@percent }
\newlabel{fig:single_player_game}{{5}{22}{Architektura hry pro jednoho hráče}{figure.5}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1}Fyzický engine}{22}{subsubsection.4.1.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}Vykreslování}{22}{subsubsection.4.1.2}\protected@file@percent }
\BKM@entry{id=26,open,dest={73756273756273656374696F6E2E342E312E33},srcline={639}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030455C3030306E5C303030745C303030695C303030745C303030795C3030302D5C303030435C3030306F5C3030306D5C303030705C3030306F5C3030306E5C303030655C3030306E5C303030745C3030302D5C303030535C303030795C303030735C303030745C303030655C3030306D}
\BKM@entry{id=26,open,dest={73756273756273656374696F6E2E342E312E33},srcline={641}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030455C3030306E5C303030745C303030695C303030745C303030795C3030302D5C303030435C3030306F5C3030306D5C303030705C3030306F5C3030306E5C303030655C3030306E5C303030745C3030302D5C303030535C303030795C303030735C303030745C303030655C3030306D}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.3}Entity-Component-System}{23}{subsubsection.4.1.3}\protected@file@percent }
\newlabel{code:entt}{{1}{23}{Příklad použití knihovny Entt}{lstlisting.1}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}Příklad použití knihovny Entt}{23}{lstlisting.1}\protected@file@percent }
\BKM@entry{id=27,open,dest={73756273756273656374696F6E2E342E312E34},srcline={681}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030345C3030305C3034305C303030495C3030306D5C303030475C303030755C30303069}
\BKM@entry{id=27,open,dest={73756273756273656374696F6E2E342E312E34},srcline={682}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030345C3030305C3034305C303030495C3030306D5C303030475C303030755C30303069}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.4}ImGui}{24}{subsubsection.4.1.4}\protected@file@percent }
\BKM@entry{id=28,open,dest={73656374696F6E2E35},srcline={700}}{5C3337365C3337375C303030355C3030305C3034305C303030485C303030725C303030615C3030305C3034305C303030765C3030305C3335355C303030635C303030655C3030305C3034305C303030685C303030725C3030305C3334315C3030315C3031355C3030315C313537}
\BKM@entry{id=29,open,dest={73756273656374696F6E2E352E31},srcline={721}}{5C3337365C3337375C303030355C3030302E5C303030315C3030305C3034305C303030535C303030655C303030725C303030765C303030655C30303072}
\BKM@entry{id=28,open,dest={73656374696F6E2E35},srcline={701}}{5C3337365C3337375C303030355C3030305C3034305C303030485C303030725C303030615C3030305C3034305C303030765C3030305C3335355C303030635C303030655C3030305C3034305C303030685C303030725C3030305C3334315C3030315C3031355C3030315C313537}
\BKM@entry{id=29,open,dest={73756273656374696F6E2E352E31},srcline={722}}{5C3337365C3337375C303030355C3030302E5C303030315C3030305C3034305C303030535C303030655C303030725C303030765C303030655C30303072}
\@writefile{toc}{\contentsline {section}{\numberline {5}Hra více hráčů}{25}{section.5}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Server}{25}{subsection.5.1}\protected@file@percent }
\BKM@entry{id=30,open,dest={73756273756273656374696F6E2E352E312E31},srcline={731}}{5C3337365C3337375C303030355C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030525C303030655C303030675C303030695C303030735C303030745C303030725C3030305C3034305C3030306B5C3030306C5C303030695C303030655C3030306E5C303030745C3030315C313537}
\BKM@entry{id=31,open,dest={73756273756273656374696F6E2E352E312E32},srcline={737}}{5C3337365C3337375C303030355C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030535C303030655C303030725C303030765C303030655C303030725C3030305C3034305C303030525C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075}
\BKM@entry{id=30,open,dest={73756273756273656374696F6E2E352E312E31},srcline={732}}{5C3337365C3337375C303030355C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030525C303030655C303030675C303030695C303030735C303030745C303030725C3030305C3034305C3030306B5C3030306C5C303030695C303030655C3030306E5C303030745C3030315C313537}
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Architektura hry pro více hráčů}}{26}{figure.6}\protected@file@percent }
\newlabel{fig:multi_player_game}{{6}{26}{Architektura hry pro více hráčů}{figure.6}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Server}{26}{subsection.5.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.1}Registr klientů}{26}{subsubsection.5.1.1}\protected@file@percent }
\BKM@entry{id=32,open,dest={73756273756273656374696F6E2E352E312E33},srcline={741}}{5C3337365C3337375C303030355C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030535C303030705C303030725C3030305C3334315C303030765C303030615C3030305C3034305C3030307A5C3030305C3334315C3030306A5C3030306D5C3030315C313537}
\BKM@entry{id=33,open,dest={73756273656374696F6E2E352E32},srcline={751}}{5C3337365C3337375C303030355C3030302E5C303030325C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C30303074}
\BKM@entry{id=34,open,dest={73756273756273656374696F6E2E352E322E31},srcline={755}}{5C3337365C3337375C303030355C3030302E5C303030325C3030302E5C303030315C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C303030745C3030305C3034305C303030525C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075}
\BKM@entry{id=35,open,dest={73756273756273656374696F6E2E352E322E32},srcline={759}}{5C3337365C3337375C303030355C3030302E5C303030325C3030302E5C303030325C3030305C3034305C303030495C3030306E5C303030745C303030655C303030725C303030705C3030306F5C3030306C5C303030615C303030635C30303065}
\abx@aux@cite{0}{interpolation}
\abx@aux@segm{0}{0}{interpolation}
\BKM@entry{id=31,open,dest={73756273756273656374696F6E2E352E312E32},srcline={738}}{5C3337365C3337375C303030355C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030535C303030655C303030725C303030765C303030655C303030725C3030305C3034305C303030525C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075}
\BKM@entry{id=32,open,dest={73756273756273656374696F6E2E352E312E33},srcline={742}}{5C3337365C3337375C303030355C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030535C303030705C303030725C3030305C3334315C303030765C303030615C3030305C3034305C3030307A5C3030305C3334315C3030306A5C3030306D5C3030315C313537}
\BKM@entry{id=33,open,dest={73756273656374696F6E2E352E32},srcline={752}}{5C3337365C3337375C303030355C3030302E5C303030325C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C30303074}
\BKM@entry{id=34,open,dest={73756273756273656374696F6E2E352E322E31},srcline={756}}{5C3337365C3337375C303030355C3030302E5C303030325C3030302E5C303030315C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C303030745C3030305C3034305C303030525C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075}
\BKM@entry{id=35,open,dest={73756273756273656374696F6E2E352E322E32},srcline={760}}{5C3337365C3337375C303030355C3030302E5C303030325C3030302E5C303030325C3030305C3034305C303030495C3030306E5C303030745C303030655C303030725C303030705C3030306F5C3030306C5C303030615C303030635C30303065}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.2}Server Replikátoru}{27}{subsubsection.5.1.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.3}Správa zájmů}{27}{subsubsection.5.1.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Klient}{27}{subsection.5.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.1}Klient Replikátoru}{27}{subsubsection.5.2.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.2}Interpolace}{27}{subsubsection.5.2.2}\protected@file@percent }
\BKM@entry{id=36,open,dest={73756273756273656374696F6E2E352E322E33},srcline={763}}{5C3337365C3337375C303030355C3030302E5C303030325C3030302E5C303030335C3030305C3034305C303030525C3030306F5C3030306C5C3030306C5C303030625C303030615C303030635C3030306B}
\BKM@entry{id=37,open,dest={73756273656374696F6E2E352E33},srcline={773}}{5C3337365C3337375C303030355C3030302E5C303030335C3030305C3034305C303030505C3030306F5C303030735C3030305C3335355C3030306C5C3030305C3334315C3030306E5C3030305C3335355C3030305C3034305C3030307A5C303030705C303030725C3030305C3334315C30303076}
\BKM@entry{id=38,open,dest={73756273756273656374696F6E2E352E332E31},srcline={784}}{5C3337365C3337375C303030355C3030302E5C303030335C3030302E5C303030315C3030305C3034305C3030304B5C3030305C3336335C303030645C3030306F5C303030765C3030305C3334315C3030306E5C3030305C3335355C3030305C3034305C3030307A5C303030705C303030725C3030305C3334315C30303076}
\BKM@entry{id=36,open,dest={73756273756273656374696F6E2E352E322E33},srcline={768}}{5C3337365C3337375C303030355C3030302E5C303030325C3030302E5C303030335C3030305C3034305C303030525C3030306F5C3030306C5C3030306C5C303030625C303030615C303030635C3030306B}
\BKM@entry{id=37,open,dest={73756273656374696F6E2E352E33},srcline={778}}{5C3337365C3337375C303030355C3030302E5C303030335C3030305C3034305C303030505C3030306F5C303030735C3030305C3335355C3030306C5C3030305C3334315C3030306E5C3030305C3335355C3030305C3034305C3030307A5C303030705C303030725C3030305C3334315C30303076}
\BKM@entry{id=38,open,dest={73756273756273656374696F6E2E352E332E31},srcline={789}}{5C3337365C3337375C303030355C3030302E5C303030335C3030302E5C303030315C3030305C3034305C3030304B5C3030305C3336335C303030645C3030306F5C303030765C3030305C3334315C3030306E5C3030305C3335355C3030305C3034305C3030307A5C303030705C303030725C3030305C3334315C30303076}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.3}Rollback}{28}{subsubsection.5.2.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Posílání zpráv}{28}{subsection.5.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.1}Kódování zpráv}{28}{subsubsection.5.3.1}\protected@file@percent }
\BKM@entry{id=39,open,dest={73756273756273656374696F6E2E352E332E32},srcline={792}}{5C3337365C3337375C303030355C3030302E5C303030335C3030302E5C303030325C3030305C3034305C303030495C3030306D5C303030705C3030306C5C303030655C3030306D5C303030655C3030306E5C303030745C303030615C303030635C30303065}
\BKM@entry{id=40,open,dest={73756273756273656374696F6E2E352E332E33},srcline={796}}{5C3337365C3337375C303030355C3030302E5C303030335C3030302E5C303030335C3030305C3034305C303030445C303030655C303030745C303030655C3030306B5C303030635C303030655C3030305C3034305C303030615C3030305C3034305C3030306E5C3030305C3334315C303030705C303030725C303030615C303030765C303030615C3030305C3034305C303030635C303030685C303030795C30303062}
\BKM@entry{id=41,open,dest={73756273656374696F6E2E352E34},srcline={803}}{5C3337365C3337375C303030355C3030302E5C303030345C3030305C3034305C303030535C303030655C303030725C303030695C303030615C3030306C5C303030695C3030307A5C303030615C303030635C30303065}
\BKM@entry{id=39,open,dest={73756273756273656374696F6E2E352E332E32},srcline={797}}{5C3337365C3337375C303030355C3030302E5C303030335C3030302E5C303030325C3030305C3034305C303030495C3030306D5C303030705C3030306C5C303030655C3030306D5C303030655C3030306E5C303030745C303030615C303030635C30303065}
\BKM@entry{id=40,open,dest={73756273756273656374696F6E2E352E332E33},srcline={801}}{5C3337365C3337375C303030355C3030302E5C303030335C3030302E5C303030335C3030305C3034305C303030445C303030655C303030745C303030655C3030306B5C303030635C303030655C3030305C3034305C303030615C3030305C3034305C3030306E5C3030305C3334315C303030705C303030725C303030615C303030765C303030615C3030305C3034305C303030635C303030685C303030795C30303062}
\BKM@entry{id=41,open,dest={73756273656374696F6E2E352E34},srcline={808}}{5C3337365C3337375C303030355C3030302E5C303030345C3030305C3034305C303030535C303030655C303030725C303030695C303030615C3030306C5C303030695C3030307A5C303030615C303030635C30303065}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.1}Kódování zpráv}{29}{subsubsection.5.3.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2}Implementace}{29}{subsubsection.5.3.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.3}Detekce a náprava chyb}{29}{subsubsection.5.3.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Serializace}{29}{subsection.5.4}\protected@file@percent }
\BKM@entry{id=42,open,dest={73756273656374696F6E2E352E35},srcline={837}}{5C3337365C3337375C303030355C3030302E5C303030355C3030305C3034305C303030505C303030725C3030306F5C303030745C3030306F5C3030306B5C3030306F5C3030306C5C3030305C3034305C303030515C303030555C303030495C303030435C30303072}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}cpp}{30}{lstlisting.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.5}Protokol QUICr}{30}{subsection.5.5}\protected@file@percent }
\BKM@entry{id=43,open,dest={73756273756273656374696F6E2E352E352E31},srcline={850}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030315C3030305C3034305C303030525C3030305C3334315C3030306D5C303030635C30303065}
\BKM@entry{id=44,open,dest={73756273756273656374696F6E2E352E352E32},srcline={863}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030325C3030305C3034305C303030485C303030615C3030306E5C303030645C303030735C303030685C303030615C3030306B5C30303065}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.1}Rámce}{31}{subsubsection.5.5.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2}Handshake}{31}{subsubsection.5.5.2}\protected@file@percent }
\newlabel{sec:quicr_handshake}{{5.5.2}{31}{Handshake}{subsubsection.5.5.2}{}}
\BKM@entry{id=45,open,dest={73756273756273656374696F6E2E352E352E33},srcline={897}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030335C3030305C3034305C303030535C303030705C3030306F5C3030306C5C303030655C303030685C3030306C5C303030695C303030765C3030306F5C303030735C30303074}
\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Stavový stroj QUICr handshake}}{32}{figure.7}\protected@file@percent }
\newlabel{fig:quicr_handshake}{{7}{32}{Stavový stroj QUICr handshake}{figure.7}{}}
\BKM@entry{id=46,open,dest={73756273756273656374696F6E2E352E352E34},srcline={919}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030345C3030305C3034305C303030455C3030306E5C3030306B5C3030306F5C303030645C3030305C3335315C30303072}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.3}Spolehlivost}{33}{subsubsection.5.5.3}\protected@file@percent }
\newlabel{sec:quicr_reliability}{{5.5.3}{33}{Spolehlivost}{subsubsection.5.5.3}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.4}Enkodér}{33}{subsubsection.5.5.4}\protected@file@percent }
\BKM@entry{id=47,open,dest={73756273756273656374696F6E2E352E352E35},srcline={927}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030355C3030305C3034305C303030545C303030655C303030735C303030745C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535}
\BKM@entry{id=48,open,dest={73756273656374696F6E2E352E36},srcline={968}}{5C3337365C3337375C303030355C3030302E5C303030365C3030305C3034305C303030485C3030306F5C303030725C303030695C3030307A5C3030306F5C3030306E5C303030745C3030305C3334315C3030306C5C3030306E5C3030305C3335355C3030305C3034305C3030315C3134315C3030306B5C3030305C3334315C3030306C5C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.5}Testování}{34}{subsubsection.5.5.5}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.6}Horizontální škálování}{34}{subsection.5.6}\protected@file@percent }
\BKM@entry{id=49,open,dest={73756273656374696F6E2E352E37},srcline={988}}{5C3337365C3337375C303030355C3030302E5C303030375C3030305C3034305C303030565C3030305C3337355C303030735C3030306C5C303030655C303030645C3030306E5C3030305C3334315C3030305C3034305C303030685C303030725C30303061}
\newlabel{fig:zone_cluster_architecture}{{5.6}{35}{Horizontální škálování}{subsection.5.6}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Architektura systému s zone clusterem}}{35}{figure.8}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.7}Výsledná hra}{35}{subsection.5.7}\protected@file@percent }
\newlabel{fig:lobby_ui}{{5.7}{36}{Výsledná hra}{subsection.5.7}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces Uživatelské rozhraní v lobby}}{36}{figure.9}\protected@file@percent }
\newlabel{fig:ui_showcase}{{5.7}{36}{Výsledná hra}{figure.9}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Uživatelské rozhraní v klientovi}}{36}{figure.10}\protected@file@percent }
\BKM@entry{id=50,open,dest={73656374696F6E2E36},srcline={1012}}{5C3337365C3337375C303030365C3030305C3034305C3030304D5C3030315C3033335C3030315C3133315C3030315C3033335C3030306E5C3030305C333535}
\BKM@entry{id=51,open,dest={73756273656374696F6E2E362E31},srcline={1016}}{5C3337365C3337375C303030365C3030302E5C303030315C3030305C3034305C3030304D5C303030655C303030745C303030725C303030695C3030306B5C30303079}
\BKM@entry{id=52,open,dest={73756273756273656374696F6E2E362E312E31},srcline={1024}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030505C3030306F5C303030735C303030745C303030675C303030725C303030655C303030535C303030515C3030304C}
\BKM@entry{id=53,open,dest={73756273756273656374696F6E2E362E312E32},srcline={1028}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030545C303030695C3030306D5C303030655C303030735C303030635C303030615C3030306C5C303030655C303030445C30303042}
\BKM@entry{id=54,open,dest={73756273756273656374696F6E2E362E312E33},srcline={1032}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030475C303030725C303030615C303030665C303030615C3030306E5C30303061}
\@writefile{toc}{\contentsline {section}{\numberline {6}Měřění}{37}{section.6}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Metriky}{37}{subsection.6.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.1}PostgreSQL}{37}{subsubsection.6.1.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.2}TimescaleDB}{37}{subsubsection.6.1.2}\protected@file@percent }
\BKM@entry{id=55,open,dest={73756273756273656374696F6E2E362E312E34},srcline={1044}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030345C3030305C3034305C303030545C303030725C303030615C303030635C30303079}
\BKM@entry{id=56,open,dest={73756273756273656374696F6E2E362E312E35},srcline={1074}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030355C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C303030745C303030735C3030306B5C3030305C3334315C3030305C3034305C303030615C303030705C3030306C5C303030695C3030306B5C303030615C303030635C30303065}
\BKM@entry{id=57,open,dest={73756273656374696F6E2E362E32},srcline={1078}}{5C3337365C3337375C303030365C3030302E5C303030325C3030305C3034305C303030515C303030555C303030495C303030435C30303072}
\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Příklad Grafana dashboardu}}{38}{figure.11}\protected@file@percent }
\newlabel{fig:grafana}{{11}{38}{Příklad Grafana dashboardu}{figure.11}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.3}Grafana}{38}{subsubsection.6.1.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.4}Tracy}{38}{subsubsection.6.1.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.5}Klientská aplikace}{38}{subsubsection.6.1.5}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces Jeden snímek v Tracy}}{39}{figure.12}\protected@file@percent }
\newlabel{fig:frame_in_tracy}{{12}{39}{Jeden snímek v Tracy}{figure.12}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}QUICr}{39}{subsection.6.2}\protected@file@percent }
\newlabel{kod:tc}{{3}{39}{Příklad volání TC}{lstlisting.3}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}Příklad volání TC}{39}{lstlisting.3}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces Porovnání odezvy TCP a QUICr}}{40}{figure.13}\protected@file@percent }
\newlabel{fig:latencycomparison}{{13}{40}{Porovnání odezvy TCP a QUICr}{figure.13}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces Porovnání integrace TCP a QUICr}}{40}{figure.14}\protected@file@percent }
\newlabel{fig:integrationcomparison}{{14}{40}{Porovnání integrace TCP a QUICr}{figure.14}{}}
\BKM@entry{id=58,open,dest={73756273656374696F6E2E362E33},srcline={1125}}{5C3337365C3337375C303030365C3030302E5C303030335C3030305C3034305C3030304F5C303030705C303030745C303030695C3030306D5C303030615C3030306C5C303030695C3030307A5C303030615C303030635C303030655C3030305C3034305C303030725C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075}
\@writefile{lof}{\contentsline {figure}{\numberline {15}{\ignorespaces 301 připojených hráčů}}{41}{figure.15}\protected@file@percent }
\newlabel{fig:playerbenchmark}{{15}{41}{301 připojených hráčů}{figure.15}{}}
\newlabel{fig:tracyreplicator}{{6.3}{41}{Optimalizace replikátoru}{subsection.6.3}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {16}{\ignorespaces Analýza replikátoru}}{41}{figure.16}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}Optimalizace replikátoru}{41}{subsection.6.3}\protected@file@percent }
\newlabel{fig:ecs_optimization_tracy_01}{{6.3}{42}{Optimalizace replikátoru}{figure.16}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {17}{\ignorespaces Analýza optimalizace replikátoru pro ECS}}{42}{figure.17}\protected@file@percent }
\newlabel{fig:ecs_optimization_tracy_02}{{6.3}{42}{Optimalizace replikátoru}{figure.17}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {18}{\ignorespaces Analýza optimalizace replikátoru pro ECS}}{42}{figure.18}\protected@file@percent }
\BKM@entry{id=59,open,dest={73756273656374696F6E2E362E34},srcline={1180}}{5C3337365C3337375C303030365C3030302E5C303030345C3030305C3034305C3030304F5C303030705C303030745C303030695C3030306D5C303030615C3030306C5C303030695C3030307A5C303030615C303030635C303030655C3030305C3034305C3030306D5C303030615C3030306E5C303030615C3030315C3137365C303030655C303030725C303030615C3030305C3034305C3030307A5C3030305C3334315C3030306A5C3030306D5C3030315C313537}
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Porovnání serializátorů}}{43}{table.1}\protected@file@percent }
\newlabel{t:serialization_comparison}{{1}{43}{Porovnání serializátorů}{table.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.4}Optimalizace manažera zájmů}{43}{subsection.6.4}\protected@file@percent }
\BKM@entry{id=60,open,dest={73756273656374696F6E2E362E35},srcline={1208}}{5C3337365C3337375C303030365C3030302E5C303030355C3030305C3034305C303030505C303030655C303030655C303030725C3030302D5C303030745C3030306F5C3030302D5C303030705C303030655C303030655C30303072}
\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces Porovnání algoritmů}}{44}{table.2}\protected@file@percent }
\newlabel{table:range_query_comparison}{{2}{44}{Porovnání algoritmů}{table.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.5}Peer-to-peer}{44}{subsection.6.5}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {19}{\ignorespaces Porovnání TCP a QUICr v peer-to-peer}}{45}{figure.19}\protected@file@percent }
\newlabel{fig:peer_to_peer}{{19}{45}{Porovnání TCP a QUICr v peer-to-peer}{figure.19}{}}
\BKM@entry{id=61,open,dest={73656374696F6E2A2E33},srcline={1247}}{5C3337365C3337375C3030305A5C3030305C3334315C303030765C3030315C3033335C30303072}
\BKM@entry{id=42,open,dest={73756273656374696F6E2E352E35},srcline={842}}{5C3337365C3337375C303030355C3030302E5C303030355C3030305C3034305C303030505C303030725C3030306F5C303030745C3030306F5C3030306B5C3030306F5C3030306C5C3030305C3034305C303030515C303030555C303030495C303030435C30303072}
\BKM@entry{id=43,open,dest={73756273756273656374696F6E2E352E352E31},srcline={855}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030315C3030305C3034305C303030525C3030305C3334315C3030306D5C303030635C30303065}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.5}Protokol QUICr}{31}{subsection.5.5}\protected@file@percent }
\BKM@entry{id=44,open,dest={73756273756273656374696F6E2E352E352E32},srcline={868}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030325C3030305C3034305C303030485C303030615C3030306E5C303030645C303030735C303030685C303030615C3030306B5C30303065}
\BKM@entry{id=45,open,dest={73756273756273656374696F6E2E352E352E33},srcline={902}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030335C3030305C3034305C303030535C303030705C3030306F5C3030306C5C303030655C303030685C3030306C5C303030695C303030765C3030306F5C303030735C30303074}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.1}Rámce}{32}{subsubsection.5.5.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2}Handshake}{32}{subsubsection.5.5.2}\protected@file@percent }
\newlabel{sec:quicr_handshake}{{5.5.2}{32}{Handshake}{subsubsection.5.5.2}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.3}Spolehlivost}{32}{subsubsection.5.5.3}\protected@file@percent }
\newlabel{sec:quicr_reliability}{{5.5.3}{32}{Spolehlivost}{subsubsection.5.5.3}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Stavový stroj QUICr handshake}}{33}{figure.7}\protected@file@percent }
\newlabel{fig:quicr_handshake}{{7}{33}{Stavový stroj QUICr handshake}{figure.7}{}}
\BKM@entry{id=46,open,dest={73756273756273656374696F6E2E352E352E34},srcline={924}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030345C3030305C3034305C303030455C3030306E5C3030306B5C3030306F5C303030645C3030305C3335315C30303072}
\BKM@entry{id=47,open,dest={73756273756273656374696F6E2E352E352E35},srcline={932}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030355C3030305C3034305C303030545C303030655C303030735C303030745C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.4}Enkodér}{34}{subsubsection.5.5.4}\protected@file@percent }
\BKM@entry{id=48,open,dest={73756273656374696F6E2E352E36},srcline={973}}{5C3337365C3337375C303030355C3030302E5C303030365C3030305C3034305C303030485C3030306F5C303030725C303030695C3030307A5C3030306F5C3030306E5C303030745C3030305C3334315C3030306C5C3030306E5C3030305C3335355C3030305C3034305C3030315C3134315C3030306B5C3030305C3334315C3030306C5C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535}
\BKM@entry{id=49,open,dest={73756273656374696F6E2E352E37},srcline={993}}{5C3337365C3337375C303030355C3030302E5C303030375C3030305C3034305C303030565C3030305C3337355C303030735C3030306C5C303030655C303030645C3030306E5C3030305C3334315C3030305C3034305C303030685C303030725C30303061}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.5}Testování}{35}{subsubsection.5.5.5}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.6}Horizontální škálování}{35}{subsection.5.6}\protected@file@percent }
\newlabel{fig:zone_cluster_architecture}{{5.6}{36}{Horizontální škálování}{subsection.5.6}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Architektura systému s zone clusterem}}{36}{figure.8}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.7}Výsledná hra}{36}{subsection.5.7}\protected@file@percent }
\newlabel{fig:lobby_ui}{{5.7}{37}{Výsledná hra}{subsection.5.7}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces Uživatelské rozhraní v lobby}}{37}{figure.9}\protected@file@percent }
\newlabel{fig:ui_showcase}{{5.7}{37}{Výsledná hra}{figure.9}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Uživatelské rozhraní v klientovi}}{37}{figure.10}\protected@file@percent }
\BKM@entry{id=50,open,dest={73656374696F6E2E36},srcline={1017}}{5C3337365C3337375C303030365C3030305C3034305C3030304D5C3030315C3033335C3030315C3133315C3030315C3033335C3030306E5C3030305C333535}
\BKM@entry{id=51,open,dest={73756273656374696F6E2E362E31},srcline={1021}}{5C3337365C3337375C303030365C3030302E5C303030315C3030305C3034305C3030304D5C303030655C303030745C303030725C303030695C3030306B5C30303079}
\BKM@entry{id=52,open,dest={73756273756273656374696F6E2E362E312E31},srcline={1029}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030505C3030306F5C303030735C303030745C303030675C303030725C303030655C303030535C303030515C3030304C}
\BKM@entry{id=53,open,dest={73756273756273656374696F6E2E362E312E32},srcline={1033}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030545C303030695C3030306D5C303030655C303030735C303030635C303030615C3030306C5C303030655C303030445C30303042}
\BKM@entry{id=54,open,dest={73756273756273656374696F6E2E362E312E33},srcline={1037}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030475C303030725C303030615C303030665C303030615C3030306E5C30303061}
\@writefile{toc}{\contentsline {section}{\numberline {6}Měřění}{38}{section.6}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Metriky}{38}{subsection.6.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.1}PostgreSQL}{38}{subsubsection.6.1.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.2}TimescaleDB}{38}{subsubsection.6.1.2}\protected@file@percent }
\BKM@entry{id=55,open,dest={73756273756273656374696F6E2E362E312E34},srcline={1049}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030345C3030305C3034305C303030545C303030725C303030615C303030635C30303079}
\BKM@entry{id=56,open,dest={73756273756273656374696F6E2E362E312E35},srcline={1079}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030355C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C303030745C303030735C3030306B5C3030305C3334315C3030305C3034305C303030615C303030705C3030306C5C303030695C3030306B5C303030615C303030635C30303065}
\BKM@entry{id=57,open,dest={73756273656374696F6E2E362E32},srcline={1083}}{5C3337365C3337375C303030365C3030302E5C303030325C3030305C3034305C303030515C303030555C303030495C303030435C30303072}
\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Příklad Grafana dashboardu}}{39}{figure.11}\protected@file@percent }
\newlabel{fig:grafana}{{11}{39}{Příklad Grafana dashboardu}{figure.11}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.3}Grafana}{39}{subsubsection.6.1.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.4}Tracy}{39}{subsubsection.6.1.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.5}Klientská aplikace}{39}{subsubsection.6.1.5}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces Jeden snímek v Tracy}}{40}{figure.12}\protected@file@percent }
\newlabel{fig:frame_in_tracy}{{12}{40}{Jeden snímek v Tracy}{figure.12}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}QUICr}{40}{subsection.6.2}\protected@file@percent }
\newlabel{kod:tc}{{3}{40}{Příklad volání TC}{lstlisting.3}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}Příklad volání TC}{40}{lstlisting.3}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces Porovnání odezvy TCP a QUICr}}{41}{figure.13}\protected@file@percent }
\newlabel{fig:latencycomparison}{{13}{41}{Porovnání odezvy TCP a QUICr}{figure.13}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces Porovnání integrace TCP a QUICr}}{41}{figure.14}\protected@file@percent }
\newlabel{fig:integrationcomparison}{{14}{41}{Porovnání integrace TCP a QUICr}{figure.14}{}}
\BKM@entry{id=58,open,dest={73756273656374696F6E2E362E33},srcline={1130}}{5C3337365C3337375C303030365C3030302E5C303030335C3030305C3034305C3030304F5C303030705C303030745C303030695C3030306D5C303030615C3030306C5C303030695C3030307A5C303030615C303030635C303030655C3030305C3034305C303030725C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075}
\@writefile{lof}{\contentsline {figure}{\numberline {15}{\ignorespaces 301 připojených hráčů}}{42}{figure.15}\protected@file@percent }
\newlabel{fig:playerbenchmark}{{15}{42}{301 připojených hráčů}{figure.15}{}}
\newlabel{fig:tracyreplicator}{{6.3}{42}{Optimalizace replikátoru}{subsection.6.3}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {16}{\ignorespaces Analýza replikátoru}}{42}{figure.16}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}Optimalizace replikátoru}{42}{subsection.6.3}\protected@file@percent }
\newlabel{fig:ecs_optimization_tracy_01}{{6.3}{43}{Optimalizace replikátoru}{figure.16}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {17}{\ignorespaces Analýza optimalizace replikátoru pro ECS}}{43}{figure.17}\protected@file@percent }
\newlabel{fig:ecs_optimization_tracy_02}{{6.3}{43}{Optimalizace replikátoru}{figure.17}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {18}{\ignorespaces Analýza optimalizace replikátoru pro ECS}}{43}{figure.18}\protected@file@percent }
\BKM@entry{id=59,open,dest={73756273656374696F6E2E362E34},srcline={1185}}{5C3337365C3337375C303030365C3030302E5C303030345C3030305C3034305C3030304F5C303030705C303030745C303030695C3030306D5C303030615C3030306C5C303030695C3030307A5C303030615C303030635C303030655C3030305C3034305C3030306D5C303030615C3030306E5C303030615C3030315C3137365C303030655C303030725C303030615C3030305C3034305C3030307A5C3030305C3334315C3030306A5C3030306D5C3030315C313537}
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Porovnání serializátorů}}{44}{table.1}\protected@file@percent }
\newlabel{t:serialization_comparison}{{1}{44}{Porovnání serializátorů}{table.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.4}Optimalizace manažera zájmů}{44}{subsection.6.4}\protected@file@percent }
\BKM@entry{id=60,open,dest={73756273656374696F6E2E362E35},srcline={1213}}{5C3337365C3337375C303030365C3030302E5C303030355C3030305C3034305C303030505C303030655C303030655C303030725C3030302D5C303030745C3030306F5C3030302D5C303030705C303030655C303030655C30303072}
\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces Porovnání algoritmů}}{45}{table.2}\protected@file@percent }
\newlabel{table:range_query_comparison}{{2}{45}{Porovnání algoritmů}{table.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.5}Peer-to-peer}{45}{subsection.6.5}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {19}{\ignorespaces Porovnání TCP a QUICr v peer-to-peer}}{46}{figure.19}\protected@file@percent }
\newlabel{fig:peer_to_peer}{{19}{46}{Porovnání TCP a QUICr v peer-to-peer}{figure.19}{}}
\BKM@entry{id=61,open,dest={73656374696F6E2A2E33},srcline={1252}}{5C3337365C3337375C3030305A5C3030305C3334315C303030765C3030315C3033335C30303072}
\abx@aux@cite{0}{quic}
\abx@aux@segm{0}{0}{quic}
\@writefile{toc}{\contentsline {section}{Z\'av\v er}{46}{section*.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{Z\'av\v er}{47}{section*.3}\protected@file@percent }
\babel@aux{czech}{}
\babel@aux{czech}{}
\BKM@entry{id=62,open,dest={73656374696F6E2A2E35},srcline={1256}}{5C3337365C3337375C303030435C3030306F5C3030306E5C303030635C3030306C5C303030755C303030735C303030695C3030306F5C3030306E5C30303073}
\@writefile{toc}{\contentsline {section}{Conclusions}{47}{section*.5}\protected@file@percent }
\BKM@entry{id=62,open,dest={73656374696F6E2A2E35},srcline={1261}}{5C3337365C3337375C303030435C3030306F5C3030306E5C303030635C3030306C5C303030755C303030735C303030695C3030306F5C3030306E5C30303073}
\@writefile{toc}{\contentsline {section}{Conclusions}{48}{section*.5}\protected@file@percent }
\babel@aux{english}{}
\babel@aux{czech}{}
\BKM@entry{id=63,open,dest={617070656E6469782E41},srcline={1263}}{5C3337365C3337375C303030415C3030305C3034305C303030505C303030725C303030765C3030306E5C3030305C3335355C3030305C3034305C303030705C3030315C3133315C3030305C3335355C3030306C5C3030306F5C303030685C30303061}
\BKM@entry{id=64,open,dest={617070656E6469782E42},srcline={1266}}{5C3337365C3337375C303030425C3030305C3034305C303030445C303030725C303030755C303030685C3030305C3334315C3030305C3034305C303030705C3030315C3133315C3030305C3335355C3030306C5C3030306F5C303030685C30303061}
\BKM@entry{id=65,open,dest={617070656E6469782E43},srcline={1271}}{5C3337365C3337375C303030435C3030305C3034305C3030304F5C303030625C303030735C303030615C303030685C3030305C3034305C303030655C3030306C5C303030655C3030306B5C303030745C303030725C3030306F5C3030306E5C303030695C303030635C3030306B5C3030305C3337355C303030635C303030685C3030305C3034305C303030645C303030615C30303074}
\@writefile{toc}{\contentsline {section}{\numberline {A}První příloha}{48}{appendix.A}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {B}Druhá příloha}{48}{appendix.B}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {C}Obsah elektronických dat}{48}{appendix.C}\protected@file@percent }
\newlabel{sec:ObsahData}{{C}{48}{Obsah elektronických dat}{appendix.C}{}}
\BKM@entry{id=63,open,dest={617070656E6469782E41},srcline={1268}}{5C3337365C3337375C303030415C3030305C3034305C303030505C303030725C303030765C3030306E5C3030305C3335355C3030305C3034305C303030705C3030315C3133315C3030305C3335355C3030306C5C3030306F5C303030685C30303061}
\BKM@entry{id=64,open,dest={617070656E6469782E42},srcline={1271}}{5C3337365C3337375C303030425C3030305C3034305C303030445C303030725C303030755C303030685C3030305C3334315C3030305C3034305C303030705C3030315C3133315C3030305C3335355C3030306C5C3030306F5C303030685C30303061}
\BKM@entry{id=65,open,dest={617070656E6469782E43},srcline={1276}}{5C3337365C3337375C303030435C3030305C3034305C3030304F5C303030625C303030735C303030615C303030685C3030305C3034305C303030655C3030306C5C303030655C3030306B5C303030745C303030725C3030306F5C3030306E5C303030695C303030635C3030306B5C3030305C3337355C303030635C303030685C3030305C3034305C303030645C303030615C30303074}
\@writefile{toc}{\contentsline {section}{\numberline {A}První příloha}{49}{appendix.A}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {B}Druhá příloha}{49}{appendix.B}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {C}Obsah elektronických dat}{49}{appendix.C}\protected@file@percent }
\newlabel{sec:ObsahData}{{C}{49}{Obsah elektronických dat}{appendix.C}{}}
\abx@aux@nociteall
\BKM@entry{id=66,open,dest={73656374696F6E2A2E37},srcline={1348}}{5C3337365C3337375C3030304C5C303030695C303030745C303030655C303030725C303030615C303030745C303030755C303030725C30303061}
\@writefile{toc}{\contentsline {section}{Literatura}{50}{section*.7}\protected@file@percent }
\BKM@entry{id=66,open,dest={73656374696F6E2A2E37},srcline={1353}}{5C3337365C3337375C3030304C5C303030695C303030745C303030655C303030725C303030615C303030745C303030755C303030725C30303061}
\@writefile{toc}{\contentsline {section}{Literatura}{51}{section*.7}\protected@file@percent }
\babel@aux{english}{}
\babel@aux{czech}{}
\abx@aux@read@bbl@mdfivesum{C3CBA72138B16E01160647867A8D8F99}
\abx@aux@read@bblrerun
\abx@aux@defaultrefcontext{0}{computer_networks}{none/global//global/global/global}
\abx@aux@defaultrefcontext{0}{quic}{none/global//global/global/global}
\abx@aux@defaultrefcontext{0}{interpolation}{none/global//global/global/global}
\abx@aux@defaultrefcontext{0}{distributed_systems}{none/global//global/global/global}
\abx@aux@defaultrefcontext{0}{velky_pruvodce}{none/global//global/global/global}
\newlabel{LastPage}{{C}{50}{Obsah elektronických dat}{page.50}{}}
\gdef\lastpage@lastpage{50}
\gdef\lastpage@lastpageHy{50}
\newlabel{LastPage}{{C}{51}{Obsah elektronických dat}{page.51}{}}
\gdef\lastpage@lastpage{51}
\gdef\lastpage@lastpageHy{51}
\gdef\svg@ink@ver@settings{{\m@ne }{inkscape}{\m@ne }}
\gdef \@abspage@last{50}
\gdef \@abspage@last{51}
+2 -3
View File
@@ -2159,9 +2159,8 @@
<bcf:section number="0">
<bcf:citekey order="1" intorder="1">computer_networks</bcf:citekey>
<bcf:citekey order="2" intorder="1">quic</bcf:citekey>
<bcf:citekey order="3" intorder="1">interpolation</bcf:citekey>
<bcf:citekey order="4" intorder="1">quic</bcf:citekey>
<bcf:citekey order="5" intorder="1" nocite="1">*</bcf:citekey>
<bcf:citekey order="3" intorder="1">quic</bcf:citekey>
<bcf:citekey order="4" intorder="1" nocite="1">*</bcf:citekey>
</bcf:section>
<!-- SORTING TEMPLATES -->
<bcf:sortingtemplate name="none">
+11 -11
View File
@@ -1,18 +1,18 @@
# Fdb version 4
["biber kidiplom"] 1777641420.71466 "kidiplom.bcf" "kidiplom.bbl" "kidiplom" 1785780087.05246 2
"kidiplom.bcf" 1785780086.93023 100765 87a5c7151983289e70e8972430e980a9 "pdflatex"
["biber kidiplom"] 1777641420.71466 "kidiplom.bcf" "kidiplom.bbl" "kidiplom" 1785793932.94091 2
"kidiplom.bcf" 1785793932.79358 100697 0d278831f58b22e288d3858fcb2c1fe5 "pdflatex"
(generated)
"kidiplom.bbl"
"kidiplom.blg"
(rewritten before read)
["makeindex kidiplom.idx"] 1777641420.69393 "kidiplom.idx" "kidiplom.ind" "kidiplom" 1785780087.04939 0
"kidiplom.idx" 1785780084.91917 0 d41d8cd98f00b204e9800998ecf8427e "pdflatex"
["makeindex kidiplom.idx"] 1777641420.69393 "kidiplom.idx" "kidiplom.ind" "kidiplom" 1785793932.93505 0
"kidiplom.idx" 1785793930.62853 0 d41d8cd98f00b204e9800998ecf8427e "pdflatex"
(generated)
"kidiplom.ilg"
"kidiplom.ind"
(rewritten before read)
["pdflatex"] 1785780084.44175 "/home/martin/projects/kidiplom/kidiplom.tex" "kidiplom.pdf" "kidiplom" 1785780087.04956 2
"/home/martin/projects/kidiplom/kidiplom.tex" 1785780084.35115 128305 94d0778ae489c0bdd0146e4ca2171d07 ""
["pdflatex"] 1785793930.12058 "/home/martin/projects/kidiplom/kidiplom.tex" "kidiplom.pdf" "kidiplom" 1785793932.93535 2
"/home/martin/projects/kidiplom/kidiplom.tex" 1785793930.03852 129666 3ee6e0b72139f852cab4441648d108a3 ""
"/usr/share/texmf-dist/fonts/enc/dvips/base/8r.enc" 1775415801 4850 80dc9bab7f31fb78a000ccfed0e27cab ""
"/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-ec.enc" 1775415801 2375 baa924870cfb487815765f9094cf3728 ""
"/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-mathit.enc" 1775415801 2405 5dcf2c1b967ee25cc46c58cd52244aed ""
@@ -271,15 +271,15 @@
"iso-numeric.cbx" 1681557593 73 45828f8df9dead5135d2c8a727f5b601 ""
"iso.bbx" 1681557593 13233 9f9e9c852fe772bfe1efaacc6b415eb7 ""
"kibase.sty" 1681557593 23853 021ae8236751950ac5e18f6a5bcf1da7 ""
"kidiplom.aux" 1785780086.91123 33889 c8246fce2385e26830b6300cee7f8583 "pdflatex"
"kidiplom.aux" 1785793932.77358 33845 f5fc6754c85f9a7160bc196940e9a547 "pdflatex"
"kidiplom.bbl" 1785780010.56994 7686 c3cba72138b16e01160647867a8d8f99 "biber kidiplom"
"kidiplom.cls" 1681557593 18598 7684b2d13ac67d7b017c4eea1e12fa0c ""
"kidiplom.glsdefs" 1777655247.6059 525 791a05cd0a9f8650067804d8f5ff3f41 ""
"kidiplom.ind" 1785767496.11494 0 d41d8cd98f00b204e9800998ecf8427e "makeindex kidiplom.idx"
"kidiplom.lot" 1785780086.93134 387 0572de490d2cc25e51f3c932771931b1 "pdflatex"
"kidiplom.run.xml" 1785780086.93134 2535 2737d3f684fc863fcc16a4e0d9d0a735 "pdflatex"
"kidiplom.tex" 1785780084.35115 128305 94d0778ae489c0bdd0146e4ca2171d07 ""
"kidiplom.toc" 1785780086.93134 5374 cac9f0c2ddb1cc43e5b745549caf1f89 "pdflatex"
"kidiplom.lot" 1785793932.79621 387 1ac32e7367846a270a0209a5b69d3838 "pdflatex"
"kidiplom.run.xml" 1785793932.79621 2535 4e001a965ee2f4de88dc6271855a61ea "pdflatex"
"kidiplom.tex" 1785793930.03852 129666 3ee6e0b72139f852cab4441648d108a3 ""
"kidiplom.toc" 1785793932.79621 5374 8623b4d73b23c78b6a1b36c883daab52 "pdflatex"
(generated)
"kidiplom.acn"
"kidiplom.aux"
+81 -71
View File
@@ -1,4 +1,4 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=pdflatex 2026.6.8) 3 AUG 2026 20:01
This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=pdflatex 2026.6.8) 3 AUG 2026 23:52
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
@@ -1470,10 +1470,15 @@ LaTeX Font Info: External font `lmex10' loaded for size
(Font) <10.95> on input line 148.
[2] [3
] [4
]
(./kidiplom.toc [5
Overfull \hbox (1.38725pt too wide) in paragraph at lines 148--148
\T1/lmr/m/n/12 D¥kuji ve-dou-címu této práce Mgr. To-má²i Ur-ban-covi, Ph.D. za
spo-lu-práci, ochotu
[]
[4
] (./kidiplom.toc [5
])
\tf@toc=\write10
@@ -1534,19 +1539,19 @@ Package pdftex.def Info: graphics/quic_handshake.pdf used on input line 466.
(pdftex.def) Requested size: 204.7506pt x 274.7626pt.
[20 <./graphics/quic_handshake.pdf>] [21]
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <10> on input line 613.
(Font) <10> on input line 615.
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <7> on input line 613.
(Font) <7> on input line 615.
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <5> on input line 613.
(Font) <5> on input line 615.
Underfull \hbox (badness 10000) in paragraph at lines 613--613
Underfull \hbox (badness 10000) in paragraph at lines 615--615
[][][]\T1/lmr/m/n/10 ƒlánek od Riot Ga-mes uka-zuje, jak d·-le-ºitá je ode-zva
u kom-pe-te-tiv-
[]
Underfull \hbox (badness 10000) in paragraph at lines 613--613
Underfull \hbox (badness 10000) in paragraph at lines 615--615
\T1/lmr/m/n/10 ních her. U pro-fe-si-o-nál-ních hr᣷ je po-znat i roz-díl mezi
120Hz a 240Hz.
[]
@@ -1555,27 +1560,27 @@ Underfull \hbox (badness 10000) in paragraph at lines 613--613
File: graphics/single_player_game.pdf Graphic file (type pdf)
<use graphics/single_player_game.pdf>
Package pdftex.def Info: graphics/single_player_game.pdf used on input line 61
7.
9.
(pdftex.def) Requested size: 204.7506pt x 105.1807pt.
Overfull \hbox (9.23495pt too wide) in paragraph at lines 627--628
Overfull \hbox (9.23495pt too wide) in paragraph at lines 629--630
\T1/lmr/m/n/12 en-gine po-sune stav en-tit (zrych-lení a po-zice). V²e jsme oba
-lili do []
[]
[22 <./graphics/single_player_game.pdf>]
Package hyperref Info: bookmark level for unknown lstlisting defaults to 0 on i
nput line 649.
nput line 650.
[23] [24]
<graphics/multi_player_game.pdf, id=368, 385.44pt x 457.71pt>
File: graphics/multi_player_game.pdf Graphic file (type pdf)
<use graphics/multi_player_game.pdf>
Package pdftex.def Info: graphics/multi_player_game.pdf used on input line 714
Package pdftex.def Info: graphics/multi_player_game.pdf used on input line 715
.
(pdftex.def) Requested size: 204.7506pt x 243.13689pt.
[25] [26 <./graphics/multi_player_game.pdf>]
! Undefined control sequence.
l.753 ...World}, která reprezentuje stav a \inlcp
l.754 ...World}, která reprezentuje stav a \inlcp
{ClientWorldController}, k...
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
@@ -1584,12 +1589,12 @@ spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
[27] [28]
Overfull \hbox (8.12425pt too wide) in paragraph at lines 794--795
Overfull \hbox (8.12425pt too wide) in paragraph at lines 799--800
\T1/lmr/m/n/12 Vytvo°ili jsme t°ídu [][][][], která má na roz-hraní me-tody []
[]
Overfull \hbox (20.39532pt too wide) in paragraph at lines 794--795
Overfull \hbox (20.39532pt too wide) in paragraph at lines 799--800
[][][][][][][][][]\T1/lmr/m/n/12 , [][][][] a [][][][]. První me-toda na-staví
pro kon-cový bod []
[]
@@ -1597,130 +1602,130 @@ pro kon-cov
[29]
LaTeX Warning: Reference `code:entity_spawn_message' on page 30 undefined on in
put line 811.
put line 816.
[30] [31]
<graphics/quicr_handshake.pdf, id=427, 337.26pt x 246.9225pt>
<graphics/quicr_handshake.pdf, id=424, 337.26pt x 246.9225pt>
File: graphics/quicr_handshake.pdf Graphic file (type pdf)
<use graphics/quicr_handshake.pdf>
Package pdftex.def Info: graphics/quicr_handshake.pdf used on input line 891.
Package pdftex.def Info: graphics/quicr_handshake.pdf used on input line 896.
(pdftex.def) Requested size: 409.50119pt x 299.82079pt.
[32 <./graphics/quicr_handshake.pdf>]
Overfull \hbox (3.49525pt too wide) in paragraph at lines 901--902
[32] [33 <./graphics/quicr_handshake.pdf>]
Overfull \hbox (3.49525pt too wide) in paragraph at lines 906--907
[]\T1/lmr/m/n/12 Spolehlivost °e²í kom-po-nenta [][][][], která si udr-ºuje fro
ntu rámc·,
[]
[33]
Overfull \hbox (6.44025pt too wide) in paragraph at lines 972--973
[34]
Overfull \hbox (6.44025pt too wide) in paragraph at lines 977--978
[][][][][][][][][][][][][] \T1/lmr/m/n/12 a [][][][][][][][][][][][][][][][]. K
aºdý
[]
[34]
<graphics/zone_server_architecture.pdf, id=451, 453.61469pt x 298.23419pt>
<graphics/zone_server_architecture.pdf, id=449, 453.61469pt x 298.23419pt>
File: graphics/zone_server_architecture.pdf Graphic file (type pdf)
<use graphics/zone_server_architecture.pdf>
Package pdftex.def Info: graphics/zone_server_architecture.pdf used on input l
ine 980.
ine 985.
(pdftex.def) Requested size: 409.50119pt x 269.24106pt.
<graphics/lobby_ui.png, id=452, 1929.2075pt x 1209.51875pt>
[35]
<graphics/lobby_ui.png, id=454, 1929.2075pt x 1209.51875pt>
File: graphics/lobby_ui.png Graphic file (type png)
<use graphics/lobby_ui.png>
Package pdftex.def Info: graphics/lobby_ui.png used on input line 998.
Package pdftex.def Info: graphics/lobby_ui.png used on input line 1003.
(pdftex.def) Requested size: 409.50119pt x 256.73788pt.
<graphics/ui_showcase.png, id=453, 2566.58875pt x 1412.27625pt>
<graphics/ui_showcase.png, id=455, 2566.58875pt x 1412.27625pt>
File: graphics/ui_showcase.png Graphic file (type png)
<use graphics/ui_showcase.png>
Package pdftex.def Info: graphics/ui_showcase.png used on input line 1005.
Package pdftex.def Info: graphics/ui_showcase.png used on input line 1010.
(pdftex.def) Requested size: 409.50119pt x 225.32233pt.
[35 <./graphics/zone_server_architecture.pdf>] [36 <./graphics/lobby_ui.png> <
./graphics/ui_showcase.png>] [37]
<graphics/grafana.png, id=488, 2813.51125pt x 913.4125pt>
[36 <./graphics/zone_server_architecture.pdf>] [37 <./graphics/lobby_ui.png> <
./graphics/ui_showcase.png>] [38]
<graphics/grafana.png, id=490, 2813.51125pt x 913.4125pt>
File: graphics/grafana.png Graphic file (type png)
<use graphics/grafana.png>
Package pdftex.def Info: graphics/grafana.png used on input line 1038.
Package pdftex.def Info: graphics/grafana.png used on input line 1043.
(pdftex.def) Requested size: 409.50119pt x 132.9362pt.
<graphics/300playerstrace.png, id=490, 1348.03625pt x 397.485pt>
<graphics/300playerstrace.png, id=492, 1348.03625pt x 397.485pt>
File: graphics/300playerstrace.png Graphic file (type png)
<use graphics/300playerstrace.png>
Package pdftex.def Info: graphics/300playerstrace.png used on input line 1052.
Package pdftex.def Info: graphics/300playerstrace.png used on input line 1057.
(pdftex.def) Requested size: 409.50119pt x 120.74449pt.
[38 <./graphics/grafana.png>]
<graphics/latencycomparison.pdf, id=499, 462.52798pt x 346.89601pt>
[39 <./graphics/grafana.png>]
<graphics/latencycomparison.pdf, id=501, 462.52798pt x 346.89601pt>
File: graphics/latencycomparison.pdf Graphic file (type pdf)
<use graphics/latencycomparison.pdf>
Package pdftex.def Info: graphics/latencycomparison.pdf used on input line 109
6.
Package pdftex.def Info: graphics/latencycomparison.pdf used on input line 110
1.
(pdftex.def) Requested size: 327.60219pt x 245.71564pt.
<graphics/integrationcomparison.pdf, id=501, 462.52798pt x 346.89601pt>
<graphics/integrationcomparison.pdf, id=503, 462.52798pt x 346.89601pt>
File: graphics/integrationcomparison.pdf Graphic file (type pdf)
<use graphics/integrationcomparison.pdf>
Package pdftex.def Info: graphics/integrationcomparison.pdf used on input line
1106.
1111.
(pdftex.def) Requested size: 327.60219pt x 245.71564pt.
[39 <./graphics/300playerstrace.png>] [40 <./graphics/latencycomparison.pdf> <
[40 <./graphics/300playerstrace.png>] [41 <./graphics/latencycomparison.pdf> <
./graphics/integrationcomparison.pdf>]
<graphics/playerbenchmark.png, id=607, 1926.19624pt x 1221.56375pt>
<graphics/playerbenchmark.png, id=609, 1926.19624pt x 1221.56375pt>
File: graphics/playerbenchmark.png Graphic file (type png)
<use graphics/playerbenchmark.png>
Package pdftex.def Info: graphics/playerbenchmark.png used on input line 1118.
Package pdftex.def Info: graphics/playerbenchmark.png used on input line 1123.
(pdftex.def) Requested size: 204.7506pt x 129.84302pt.
File: graphics/300playerstrace.png Graphic file (type png)
<use graphics/300playerstrace.png>
Package pdftex.def Info: graphics/300playerstrace.png used on input line 1129.
Package pdftex.def Info: graphics/300playerstrace.png used on input line 1134.
(pdftex.def) Requested size: 409.50119pt x 120.74449pt.
[41 <./graphics/playerbenchmark.png>]
<graphics/ecs_optimization_tracy_01.png, id=618, 1707.37875pt x 472.76625pt>
[42 <./graphics/playerbenchmark.png>]
<graphics/ecs_optimization_tracy_01.png, id=620, 1707.37875pt x 472.76625pt>
File: graphics/ecs_optimization_tracy_01.png Graphic file (type png)
<use graphics/ecs_optimization_tracy_01.png>
Package pdftex.def Info: graphics/ecs_optimization_tracy_01.png used on input
line 1144.
line 1149.
(pdftex.def) Requested size: 409.50119pt x 113.38686pt.
<graphics/ecs_optimization_tracy_02.png, id=619, 1196.47pt x 583.17876pt>
<graphics/ecs_optimization_tracy_02.png, id=621, 1196.47pt x 583.17876pt>
File: graphics/ecs_optimization_tracy_02.png Graphic file (type png)
<use graphics/ecs_optimization_tracy_02.png>
Package pdftex.def Info: graphics/ecs_optimization_tracy_02.png used on input
line 1151.
line 1156.
(pdftex.def) Requested size: 409.50119pt x 199.59514pt.
[42 <./graphics/ecs_optimization_tracy_01.png> <./graphics/ecs_optimization_tr
[43 <./graphics/ecs_optimization_tracy_01.png> <./graphics/ecs_optimization_tr
acy_02.png>]
Underfull \hbox (badness 10000) in paragraph at lines 1190--1190
Underfull \hbox (badness 10000) in paragraph at lines 1195--1195
[]|\T1/lmr/m/n/12 Název
[]
Underfull \hbox (badness 10000) in paragraph at lines 1194--1194
Underfull \hbox (badness 10000) in paragraph at lines 1199--1199
[]|\T1/lmr/m/n/12 Fixní
[]
Underfull \hbox (badness 10000) in paragraph at lines 1196--1196
Underfull \hbox (badness 10000) in paragraph at lines 1201--1201
[]|\T1/lmr/m/n/12 Hashovací
[]
[43] [44]
<graphics/peer_to_peer.pdf, id=641, 433.62pt x 361.35pt>
[44] [45]
<graphics/peer_to_peer.pdf, id=643, 433.62pt x 361.35pt>
File: graphics/peer_to_peer.pdf Graphic file (type pdf)
<use graphics/peer_to_peer.pdf>
Package pdftex.def Info: graphics/peer_to_peer.pdf used on input line 1224.
Package pdftex.def Info: graphics/peer_to_peer.pdf used on input line 1229.
(pdftex.def) Requested size: 204.7506pt x 170.6285pt.
[45 <./graphics/peer_to_peer.pdf>] [46
[46 <./graphics/peer_to_peer.pdf>] [47
] [47
] [48
]
LaTeX Font Info: Trying to load font information for TS1+lmr on input line 1
312.
317.
(/usr/share/texmf-dist/tex/latex/lm/ts1lmr.fd
File: ts1lmr.fd 2015/05/01 v1.6.1 Font defs for Latin Modern
) [48
) [49
{/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-ts1.enc}] [49]
{/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-ts1.enc}] [50]
Package biblatex Warning: Name format 'last-first' deprecated.
(biblatex) Please use 'family-given' instead.
@@ -1751,7 +1756,7 @@ Package glossaries Warning: No \printglossary or \printglossaries found.
(Remove \makeglossaries if you don't want any glossaries.)
This document will not have a glossary.
[50
[51
]
enddocument/afterlastpage (AED): lastpage setting LastPage.
@@ -1764,14 +1769,19 @@ L3 programming layer <2026-01-19>
LaTeX Warning: There were undefined references.
Package biblatex Warning: Please (re)run Biber on the file:
(biblatex) kidiplom
(biblatex) and rerun LaTeX afterwards.
Package logreq Info: Writing requests to 'kidiplom.run.xml'.
\openout1 = `kidiplom.run.xml'.
)
Here is how much of TeX's memory you used:
33962 strings out of 469481
640459 string characters out of 5469631
1773171 words of memory out of 5000000
33963 strings out of 469481
640466 string characters out of 5469631
1773250 words of memory out of 5000000
61866 multiletter control sequences out of 15000+600000
707308 words of font info for 103 fonts, out of 8000000 for 9000
24 hyphenation exceptions out of 8191
@@ -1786,10 +1796,10 @@ pe1/public/lm/lmri12.pfb></usr/share/texmf-dist/fonts/type1/public/lm/lmri8.pfb
></usr/share/texmf-dist/fonts/type1/public/lm/lmsy10.pfb></usr/share/texmf-dist
/fonts/type1/urw/courier/ucrb8a.pfb></usr/share/texmf-dist/fonts/type1/urw/cour
ier/ucrr8a.pfb>
Output written on kidiplom.pdf (50 pages, 1166638 bytes).
Output written on kidiplom.pdf (51 pages, 1167703 bytes).
PDF statistics:
1025 PDF objects out of 1200 (max. 8388607)
774 compressed objects within 8 object streams
176 named destinations out of 1000 (max. 500000)
1028 PDF objects out of 1200 (max. 8388607)
776 compressed objects within 8 object streams
177 named destinations out of 1000 (max. 500000)
646 words of extra memory for PDF output out of 10000 (max. 10000000)
+2 -2
View File
@@ -1,6 +1,6 @@
\babel@toc {czech}{}\relax
\contentsline {table}{\numberline {1}{\ignorespaces Porovnání serializátorů}}{43}{table.1}%
\contentsline {table}{\numberline {2}{\ignorespaces Porovnání algoritmů}}{44}{table.2}%
\contentsline {table}{\numberline {1}{\ignorespaces Porovnání serializátorů}}{44}{table.1}%
\contentsline {table}{\numberline {2}{\ignorespaces Porovnání algoritmů}}{45}{table.2}%
\babel@toc {czech}{}\relax
\babel@toc {czech}{}\relax
\babel@toc {english}{}\relax
BIN
View File
Binary file not shown.
+2 -2
View File
@@ -41,7 +41,7 @@
>
]>
<requests version="1.0">
<internal package="biblatex" priority="9" active="0">
<internal package="biblatex" priority="9" active="1">
<generic>latex</generic>
<provides type="dynamic">
<file>kidiplom.bcf</file>
@@ -66,7 +66,7 @@
<file>czech-iso.lbx</file>
</requires>
</internal>
<external package="biblatex" priority="5" active="0">
<external package="biblatex" priority="5" active="1">
<generic>biber</generic>
<cmdline>
<binary>biber</binary>
Binary file not shown.
+19 -14
View File
@@ -104,7 +104,7 @@
%% Anotace práce, včetně anglické (obvykle překlad z jazyka
%% práce). Jeden odstavec!
\annotation{V diplomová práci se budeme zabývat optimalizacemi datového přenosu v distribuovaných systémech. Konkrétně se zaměřuje na systémy pro hry více hráčů. Analyzovali jsme jejich problematiku a specifika, které popíšeme. Následně představíme optimalizace, které jsme implementovali. Mezi hlavní části patří náš vlastní protokol transportní vrstvy. Mimo jiné v práci popisujeme vývoj našeho vlastního herního enginu, do kterého právě různé techniky a optimalizace implementujeme.}
\annotation{V diplomové práci se zabýváme optimalizacemi datového přenosu v distribuovaných systémech. Konkrétně se zaměřujeme na systémy pro hry více hráčů. Analyzujeme a popisujeme jejich problematiku a specifika. Následně představujeme optimalizace, které jsme implementovali. Mezi hlavní části patří náš vlastní protokol transportní vrstvy a vývoj našeho vlastního herního enginu pro implementaci hry pro více hráčů.}
\annotation[english]{Sample text of thesis at the \kitextdepten,
\kitextfacultyen, \kitextuniven{} and, at the same time,
@@ -126,7 +126,7 @@
%% Volitelné poděkování. Stručné! Výchozí je prázdné. Makro nemá
%% nepovinný parametr pro uvedení jazyka.
\thanks{Děkuji, děkuji, děkuji.}
\thanks{Děkuji vedoucímu této práce Mgr. Tomáši Urbancovi, Ph.D. za spolupráci, ochotu a čas, který mi věnoval při konzultacích. Dále bych rád poděkoval rodině a přátelům za podporu a motivaci.}
%% Cesta k souboru s bibliografií pro její sazbu pomocí BibLaTeXu
%% (zvolenou nepovinným parametrem biblatex makra
@@ -164,9 +164,9 @@ Dalším typem jsou masivní multiplayerové online hry, tzv. MMO, které zvlád
V práci se zaměřujeme právě na metody optimalizace datového přenosu v síťových systémech pro hry více hráčů. Charakteristiky jsme analyzovali a implementovali různá řešení. Na konci představíme naše testovací scénáře pro měření optimality těchto technik. Zároveň popíšeme, jaké nástroje jsme k měření použili a jak.
Nejprve v další kapitole popíšeme distribuované systémy obecně: jak probíhá komunikace mezi dvěma procesy na dvou různých počítačích. Tyto procesy budeme skládat do distribuovaného systému. Uvedeme různé modely a atributy, které může komunikace nebo distribovaný systém mít.
Nejprve v další kapitole popíšeme distribuované systémy obecně: jak probíhá komunikace mezi dvěma procesy na dvou různých počítačích. Tyto procesy budeme skládat do distribuovaného systému. Uvedeme různé modely a atributy, které může komunikace nebo distribuovaný systém mít.
V následujících kapitolách popisujeme samotnou hru. Představíme náš vlastní herní engine, který vytvořili. Engine je navrhžen jako modulární monolit. Zároveň s ním budeme popisovat architekturu samotné hry. Začneme hrou pro jednoho hráče a návrh rozšíříme o hru více hráčů tak, aby byl přehledný a snadno se s kódem pracovalo.
V následujících kapitolách popisujeme samotnou hru. Představíme náš vlastní herní engine, který jsme vytvořili. Engine je navržen jako modulární monolit. Zároveň s ním budeme popisovat architekturu samotné hry. Začneme hrou pro jednoho hráče a návrh rozšíříme o hru více hráčů tak, aby byl přehledný a snadno se s kódem pracovalo.
Pro demonstraci různých technik jsme vytvořili hru. Jedná se o jednoduchou hru ve 3D prostoru, kde každý hráč má svou postavu, se kterou může pohybovat. Tu stavíme na vlastním herním enginu tak, abychom různé algoritmy měli pod kontrolou. Například jsme vytvořili vlastní protokol pro obousměrné posílání spolehlivých i nespolehlivých zpráv zvaný QUICr. Celý engine jsme navrhovali jako modulární monolit a snažíme se organizovat jednotlivé řešení problémů do modulů. Díky tomu je návrh intuitivní a snadno rozšiřitelný.
@@ -212,7 +212,7 @@ V poslední kapitole představíme měření, které jsme provedli a jejich výs
\section{Distribuované systémy}
V této kapitole představíme distribuované systémy. Nejprve si zadefinujeme, co distribuovaný systém je. Podíváme se, čím jsou specifické a jaké vlastnosti mohou mít. Následně se podíváme hlouběji jak takové systémy fungují. Distribuované systémy jsou často složité, proto představíme různé architektonické vzory, které i později při implementaci vlastního distribuovaného systému využijeme.
V této kapitole představíme distribuované systémy. Nejprve si zadefinujeme, co distribuovaný systém je. Podíváme se, čím jsou specifické a jaké vlastnosti mohou mít. Následně se podíváme hlouběji jak takové systémy fungují. Distribuované systémy jsou často složité, proto představíme různé architektonické vzory, které i později při implementaci vlastního distribuovaného systému využijeme. Ty pomáhají s udržitelností systému.
Začneme pojmem, co je vlastně počítačový systém. Ten se skládá ze služeb, každá implementovaná jako kolekce procesů, které dohromady plní společný úkol. Moderní systémy jsou ale čím dál větší a úkoly, které musí plnit, jsou složitější. To vedlo ke vzniku síťových systémů, ve kterých jsou procesy rozmístěné přes více počítačů a komunikují spolu posíláním zpráv. Výhod je hned několik. Část systému může být umístěna na počítači blíž uživateli pro snížení odezvy. Když jeden proces selže, může být jiný, který plní stejnou službu a může systém udržet v provozu. Konkrétní skupinou jsou distribuované systémy, které mají mnoho procesů rozmístěných přes více počítačů, které aktivně spolupracují a jeví se jako jeden celek.
@@ -232,7 +232,7 @@ Dva počítače, přímo propojené fyzickým médiem, komunikují posíláním
% az tady říkáme, že síťový systém nemá sdílenou pamět???
V této části popíšeme, jak samotná komunikace posíláním zpráv funguje. Představíme, jaké nástroje a vzory používáme. Konkrétně nás bude zajímat, jak můžeme komunikaci co nejvíce skrýt. Dále zmíníme vlastnosti, které může komunikace mít.
Ke skrytí komunikace v distribuovaných systémech používáme komponenty, kterým se říká \uv{middleware}. Ty leží mezi aplikací a operačním systémem a poskytuje komunikační služby. Není závislá na žádné konkrétní aplikaci. Příkladem je distribuovaná služba DNS, která podle doménového jména vyhledá síťovou adresu, jako například adrese \texttt{www.seznam.cz} přiřadí síťovou IP adresu \texttt{77.75.77.222}.
Ke skrytí komunikace v distribuovaných systémech používáme komponenty, kterým se říká \uv{middleware}. Ty leží mezi aplikací a operačním systémem a poskytuje komunikační služby. Není závislá na žádné konkrétní aplikaci. Příkladem je distribuovaná služba DNS, která podle doménového jména vyhledá síťovou adresu, jako například adrese \texttt{www.seznam.cz} přiřadila dne 3. sprna 2026 síťovou IP adresu \texttt{77.75.77.222}.
Komunikace může mít různé vlasnosti. Například email je typický příklad \uv{persistentní} komunikace. Po odeslání si persistentní middleware zprávu uloží do té doby, dokud ji příjemce nepřijme. To znamená, že proces příjemce nemusí běžět v době, kdy odesílatel odesílá. Na druhou stranu máme \uv{transientní} komunikaci, kdy zpráva je uložena jen po dobu, kdy běží proces odesílatele a příjemce. To znamená, že pokud příjemce není dostupný, zprávu nikdy nepřijme.
@@ -407,15 +407,15 @@ Zajímavou novinkou je HTTP/3, která je založena na protokolu QUIC, který je
\subsection{Protokoly v transportní vrstvě}
Protokoly transportní vrstvy poskytují end-to-end komunikační služby pro aplikace. Příkladem takových služeb může být komunikace s navázáním spojení, spolehlivost doručení, zamezení zahlcení sítě nebo multiplexing.
Protokoly transportní vrstvy poskytují end-to-end komunikační služby pro aplikace. Služba může mít různé vlastnosti, jako komunikace s navázáním spojení, spolehlivost doručení, zamezení zahlcení sítě nebo multiplexing.
Nejčastějším protokolem je TCP, který naváže spojení a zaručuje spolehlivé doručení dat jako proud bytů. Alternativou je UDP, které nezaručuje doručení, ale je vhodnější pro streamovací služby. Poslední příklad, který zmíníme, je protokol QUIC od Google, který poskytuje spolehlivou komunikaci přes navázané spojení a s podporou multiplexování. Byl důležitou inspirací pro náš vlastní protokol z praktické části.
Nejčastějším protokolem je TCP, který naváže spojení a zaručuje spolehlivé doručení dat jako proud bytů. Alternativou je UDP, které nezaručuje doručení, ale je vhodnější pro streamovací služby, které to neomezuje. Poslední příklad, který zmíníme, je protokol QUIC od Google, který poskytuje spolehlivou komunikaci přes navázané spojení a s podporou multiplexování. Byl důležitou inspirací pro náš vlastní protokol z praktické části.
\subsubsection{TCP}
Nejběžnější protokol je TCP. Při použití mezi sebou dva koncové body vytvoří spojení s obousměrným proudem bytů. Protokol garantuje spolehlivé doručení dat v pořadí, ve kterém byly odeslány. Zároveň řeší zahlcení sítě udržováním okna paketů, které jsou v oběhu a redukuje jeho velikost v případě, že je síť přehlcená. To pozná tak, že si pakety čísluje a příjemce musí za každý odeslat potvrzení přijetí. Pokud odesílatel toto potvrzení nedostane, odešle paket znovu. Pokud nedostává potvrzení pro až moc velkou část okna, může toto okno zmenšit.
Nejběžnější protokol je TCP. Při použití mezi sebou dva koncové body vytvoří spojení s obousměrným proudem bytů. Protokol garantuje spolehlivé doručení dat v pořadí, ve kterém byly odeslány. Zároveň řeší zahlcení sítě udržováním okna paketů, které jsou v oběhu a redukuje jeho velikost v případě, že je síť přehlcená. To pozná tak, že si pakety čísluje a příjemce musí za každý odeslat potvrzení, že paket přijal. Pokud odesílatel toto potvrzení do časového limitu od odeslání nedostane, odešle paket znovu. Pokud nedostává potvrzení pro až moc velkou část okna, může toto okno zmenšit. Tím sníží i zatížení sítě.
Pro navázání spojení a následnou komunikaci musejí oba procesy vytvořit koncový bod, kterému se říká \uv{soket}. Jedná se o objekt, který se chová jako soubor. Odesílatel do něj zapisuje data, která chce odeslat a příjemce je z něj může přečíst. Na jednom počítači může být otevřeno více soketů a jsou identifikované \uv{portem}. Ten slouží pro směrování paketů správnému soketu, ze kterého příjemce čte. Pro navázání musí jedna strana spojení iniciovat a druhá ho musí přijmout.
Pro navázání spojení a následnou komunikaci musejí oba procesy vytvořit koncový bod. Velmi často používané rozhraní je přes \uv{soket}. Jedná se o objekt, který se chová jako soubor. Odesílatel do něj zapisuje data, která chce odeslat a příjemce je z něj může přečíst. Na jednom počítači může být otevřeno více soketů a jsou identifikované \uv{portem}. Ten slouží pro směrování paketů správnému soketu, ze kterého příjemce čte. Pro navázání musí jedna strana spojení iniciovat a druhá ho musí přijmout.
Popíšeme si, jak TCP zajišťuje spolehlivost pomocí odesílání potvrzení o přijetí. Pokaždé, co příjemce dostane paket, odešle druhému koncovému bodu zprávu označenou jako \uv{ACK} s číslem paketu. V případě, že odesílatel potvrzení o přijetí nedostane, odešle paket znova. Příjemce si u sebe postupně skládá seřazený proud bytů. Jakmile je na socketu seřazená posloupnost bytů, umožní ji ze soketu přečíst.
@@ -602,6 +602,8 @@ Pro hru jsme vyvinuli vlastní herní engine tak, abychom mohli celý systém do
Mezi hlavní komponenty patří \uv{stav} hry a \uv{řídící logika}. Stav obsahuje množinu entit, které jsou ve hře a jejich vlasnosti a atributy. Entity jsou objekty v herním světě, jako postava hráče, nepřátele nebo interaktivní prvky jako truhla s pokladem. Entita má přiřazené vlastnosti, které ji dávají stav. Entita nepřítele může mít vlastnost "množství životů" a truhla vlastnost "poklad", která definuje, co je v truhle obsaženo. Stavu hry se někdy říká pouze \uv{svět}.
% Detaily k implementaci, ale stále dost abstrahované.
% Zmínit svět, ve kterém držíme stav hry. Zmínit derivaci (proces sbírání vstupů, prozatím jen od hráče). Zmínit integraci jako aplikaci derivace na stav.
@@ -642,7 +644,6 @@ V programu využíváme architekturu entity-component-system, zkráceně ECS, kt
Motivací této architektury je jednoduché skládání různých entit, které jsou pro rozmanité herní světy typické. Pomocí stromu dědičnosti bychom tyto různé scénáře hůře skládali. Další výhoda je zlepšení výkonu. Protože si engine může poskládat entity a jejich komponenty do paměti jak chce, může umístění optimalizovat pro definované systémy tak, aby iterování bylo co nejrychlejší. Tomuto se říká problém lokality.
https://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/
@@ -705,7 +706,7 @@ Jako první jsme implementovali model klient-server. Diagram systému vidíme na
Druhá varianta je model peer-to-peer. Ta je složitější z hlediska konzistence. Účastníci si mezi sebou posílají akce a každý si udržuje svůj stav, který ale nikomu nereplikuje. Každý se tak chová jako server v modelu klient-server. Je potřeba, aby každý účastník měl kompletní historii akcí všech ostatních v systému ve správném pořadí. Tomuto se říká \uv{event-sourcing}. V případě, že se historie liší, dochází k nekonzistenci.
Druhá komplikace peer-to-peer je, že výsledek každé aplikace akce být všude stejný. Problém nastává u generování pseudo-náhodných čísel nebo u integrace. Například fyzický engine postupně integruje pozice entit podle derivace, která je reprezentována vektorem zrychlení. Každá integrace musí definovat, o jak velký časový krok se jedná (tzv. delta-time) a všichni účastníci se na něm musejí shodnout. Různé délky by rychle způsobily desynchronizaci. Zároveň všechny pseudonáhodné generátory musejí mít stejný počáteční seed. Je třeba si dát pozor na aritmetriku s plovoucí desetinou čárkou, která na různých platformách může dopadnout trochu jinak. I malé rozdíly se mohou rychle projevit.
Druhá komplikace peer-to-peer je, že aplikace stejné akce na stejný stav musí mít vždy stejný výsledek. Pokud by dva procesy ve stejném stavu po aplikaci stejné akce na stav dospěli do jiného stavu, dochází k desynchronizaci. Problémové oblasti jsou generování pseudo-náhodných čísel a integrace. Výsledek integrace je často závislý na frekvenci. Například fyzický engine postupně integruje pozice entit podle derivace, která je reprezentována vektorem zrychlení. Každá integrace musí definovat, o jak velký časový krok se jedná (tzv. delta-time) a všichni účastníci se na něm musejí shodnout. Různé délky by rychle způsobily desynchronizaci. Zároveň všechny pseudonáhodné generátory musejí mít stejný počáteční seed. Je třeba si dát pozor na aritmetriku s plovoucí desetinou čárkou, která na různých platformách může dopadnout trochu jinak. I malé rozdíly se mohou rychle projevit.
Rozšířenou architekturu vidíme na obrázku \ref{fig:multi_player_game}. Hned si všimneme, že se svět rozdvojil na instanci na serveru a instanci na klientovi. Jsou to právě tyto dvě instance, které se snažíme posíláním zpráv synchronizovat. Řídící logiku jsme rozdělili na Server World Controller a Client World Controller. Všimněme si, že ovladač na klientovi ne nutně obsahuje systémy, které by měnili stav hry, ale pouze kopíruje to, co mu server poslal ve zprávě pro snapshot. Na druhou stranu posílá akce, které přečetl od hráče. Oba ovladače ale zapisují do své instance světa.
@@ -740,7 +741,7 @@ Komponenta, která se snaží synchronizovat stav klientů s lokálním stavem n
\subsubsection{Správa zájmů}
Komponenta, která řeší důležitost entit pro jednotlivé hráče, je \uv{manažer zájmu}. Důležitost definujeme pro každou dvojici klienta a entity. Manažer zájmu podle definované logiky, například na základě vzdálenosti, určí důležitost entity pro klienta. V základní verzi jsme měli pouze dvě hodnoty: důležitá, takže je nutné ji synchronizovat, a nedůležitá, která není. Replikátor se dotazuje manažera zájmu v moment, kdy klientovi chce stav synchronizovat.
Komponenta, která řeší důležitost entit pro jednotlivé hráče, je \uv{manažer zájmu}. Důležitost definujeme pro každou dvojici klienta a entity. Manažer zájmu podle definované logiky, například na základě vzdálenosti, určí důležitost entity pro klienta. V základní verzi jsme měli pouze dvě hodnoty: důležitá a nedůležitá. Synchronizovali jsme pouze důležité. Replikátor se dotazuje manažera zájmu v moment, kdy klientovi chce stav synchronizovat.
Dotazu na všechny body, které jsou dostatečně blízko od konkrétního bodu, se říká `range-query`. Datové struktury které tuto operaci akcelerují jsou například fixní mřížka, dynamická mřížka nebo quad-tree.
@@ -758,7 +759,11 @@ Abychom oddělili to, jak replikátor funguje, vytvořili jsme pro něj na stran
\subsubsection{Interpolace}
Když jsme začali systém měřit, zjistili jsme, že vysoká frekvence replikace až příliš zatěžuje síť. Graf s průměry pro počet hráčů vidíme na grafu. Snížili jsme proto frekvenci na 20Hz. To snížilo zátěž na třetinu. Problém ale najednou byl neplynulost hry. Klient sice vykresloval s frekvencí 60Hz, ale méně časté aktualizace způsobili neplynulý pohyb. Řešení je na klientovi interpolovat spojité proměnné, jako pozice nebo rotace. Do klienta replikátoru jsme přidali komponentu \uv{interpolátor}. Ta si ukládá historii konkrétních hodnot a jejich časovou známkou do bufferu. Hodnota, kterou nastaví, je pak interpolovaná z bufferu fixní čas zpět\cite{interpolation}.
Když jsme začali systém měřit, zjistili jsme, že vysoká frekvence replikace až příliš zatěžuje síť. Graf s průměry pro počet hráčů vidíme na grafu. Snížili jsme proto frekvenci na 20Hz. To snížilo zátěž na třetinu. Hra potom nebyla plynulá. Klient vykresloval s frekvencí 60Hz, ale aktualizace pozice s frekvencí 20Hz způsobily neplynulý pohyb. Řešení je na klientovi interpolovat spojité proměnné, jako pozice nebo rotace.
Vytvořili jsme novou komponentu \uv{interpolátor}. Ta umožňuje zapsat pozici entity v konkrétní čas. Komponenta si udržuje časovou osu stavu pozice. Zároveň umožňuje číst pozici entity pro konkrétní čas. Pokud je vybraný čas na ose mezi dvěma body, tak vrátí mezi nimi interpolovanou pozici. Pokud je vybraný čas až po posledním známém bodě na ose, tak vrací poslední známou hodnotu.
Změnili jsme objekt, do kterého klient replikátoru zapisuje pozice entit na právě objekt interpolátoru. Do něj zapisuje původní sníženou frekvencí 20Hz. Řídící logika ale může z interpolátoru číst s vyšší frekvencí, například 60Hz. Aby čtecí funkce interpolátoru měla mezi čím interpolovat, není vhodné číst hned nejnovější hodnoty. Lepší je počkat, a interpolovat pozici určitý čas zpět. To má za následek zvýšení odezvy mezi vstupem od hráče a fyzickým posunem postavy hráče. Klient nejprve čeká na odpověď serveru a poté čeká ještě o jednu odpověď navíc. To není problém, pokud takto interpolujeme postavu, kterou neovládá přímo hráč. Rozdíl odezvy pár set milisekund bude zanedbatelný.
\subsubsection{Rollback}
+27 -27
View File
@@ -23,7 +23,7 @@
\contentsline {subsubsection}{\numberline {4.1.3}Entity-Component-System}{23}{subsubsection.4.1.3}%
\contentsline {subsubsection}{\numberline {4.1.4}ImGui}{24}{subsubsection.4.1.4}%
\contentsline {section}{\numberline {5}Hra více hráčů}{25}{section.5}%
\contentsline {subsection}{\numberline {5.1}Server}{25}{subsection.5.1}%
\contentsline {subsection}{\numberline {5.1}Server}{26}{subsection.5.1}%
\contentsline {subsubsection}{\numberline {5.1.1}Registr klientů}{26}{subsubsection.5.1.1}%
\contentsline {subsubsection}{\numberline {5.1.2}Server Replikátoru}{27}{subsubsection.5.1.2}%
\contentsline {subsubsection}{\numberline {5.1.3}Správa zájmů}{27}{subsubsection.5.1.3}%
@@ -32,38 +32,38 @@
\contentsline {subsubsection}{\numberline {5.2.2}Interpolace}{27}{subsubsection.5.2.2}%
\contentsline {subsubsection}{\numberline {5.2.3}Rollback}{28}{subsubsection.5.2.3}%
\contentsline {subsection}{\numberline {5.3}Posílání zpráv}{28}{subsection.5.3}%
\contentsline {subsubsection}{\numberline {5.3.1}Kódování zpráv}{28}{subsubsection.5.3.1}%
\contentsline {subsubsection}{\numberline {5.3.1}Kódování zpráv}{29}{subsubsection.5.3.1}%
\contentsline {subsubsection}{\numberline {5.3.2}Implementace}{29}{subsubsection.5.3.2}%
\contentsline {subsubsection}{\numberline {5.3.3}Detekce a náprava chyb}{29}{subsubsection.5.3.3}%
\contentsline {subsection}{\numberline {5.4}Serializace}{29}{subsection.5.4}%
\contentsline {subsection}{\numberline {5.5}Protokol QUICr}{30}{subsection.5.5}%
\contentsline {subsubsection}{\numberline {5.5.1}Rámce}{31}{subsubsection.5.5.1}%
\contentsline {subsubsection}{\numberline {5.5.2}Handshake}{31}{subsubsection.5.5.2}%
\contentsline {subsubsection}{\numberline {5.5.3}Spolehlivost}{33}{subsubsection.5.5.3}%
\contentsline {subsubsection}{\numberline {5.5.4}Enkodér}{33}{subsubsection.5.5.4}%
\contentsline {subsubsection}{\numberline {5.5.5}Testování}{34}{subsubsection.5.5.5}%
\contentsline {subsection}{\numberline {5.6}Horizontální škálování}{34}{subsection.5.6}%
\contentsline {subsection}{\numberline {5.7}Výsledná hra}{35}{subsection.5.7}%
\contentsline {section}{\numberline {6}Měřění}{37}{section.6}%
\contentsline {subsection}{\numberline {6.1}Metriky}{37}{subsection.6.1}%
\contentsline {subsubsection}{\numberline {6.1.1}PostgreSQL}{37}{subsubsection.6.1.1}%
\contentsline {subsubsection}{\numberline {6.1.2}TimescaleDB}{37}{subsubsection.6.1.2}%
\contentsline {subsubsection}{\numberline {6.1.3}Grafana}{38}{subsubsection.6.1.3}%
\contentsline {subsubsection}{\numberline {6.1.4}Tracy}{38}{subsubsection.6.1.4}%
\contentsline {subsubsection}{\numberline {6.1.5}Klientská aplikace}{38}{subsubsection.6.1.5}%
\contentsline {subsection}{\numberline {6.2}QUICr}{39}{subsection.6.2}%
\contentsline {subsection}{\numberline {6.3}Optimalizace replikátoru}{41}{subsection.6.3}%
\contentsline {subsection}{\numberline {6.4}Optimalizace manažera zájmů}{43}{subsection.6.4}%
\contentsline {subsection}{\numberline {6.5}Peer-to-peer}{44}{subsection.6.5}%
\contentsline {section}{Z\'av\v er}{46}{section*.3}%
\contentsline {subsection}{\numberline {5.5}Protokol QUICr}{31}{subsection.5.5}%
\contentsline {subsubsection}{\numberline {5.5.1}Rámce}{32}{subsubsection.5.5.1}%
\contentsline {subsubsection}{\numberline {5.5.2}Handshake}{32}{subsubsection.5.5.2}%
\contentsline {subsubsection}{\numberline {5.5.3}Spolehlivost}{32}{subsubsection.5.5.3}%
\contentsline {subsubsection}{\numberline {5.5.4}Enkodér}{34}{subsubsection.5.5.4}%
\contentsline {subsubsection}{\numberline {5.5.5}Testování}{35}{subsubsection.5.5.5}%
\contentsline {subsection}{\numberline {5.6}Horizontální škálování}{35}{subsection.5.6}%
\contentsline {subsection}{\numberline {5.7}Výsledná hra}{36}{subsection.5.7}%
\contentsline {section}{\numberline {6}Měřění}{38}{section.6}%
\contentsline {subsection}{\numberline {6.1}Metriky}{38}{subsection.6.1}%
\contentsline {subsubsection}{\numberline {6.1.1}PostgreSQL}{38}{subsubsection.6.1.1}%
\contentsline {subsubsection}{\numberline {6.1.2}TimescaleDB}{38}{subsubsection.6.1.2}%
\contentsline {subsubsection}{\numberline {6.1.3}Grafana}{39}{subsubsection.6.1.3}%
\contentsline {subsubsection}{\numberline {6.1.4}Tracy}{39}{subsubsection.6.1.4}%
\contentsline {subsubsection}{\numberline {6.1.5}Klientská aplikace}{39}{subsubsection.6.1.5}%
\contentsline {subsection}{\numberline {6.2}QUICr}{40}{subsection.6.2}%
\contentsline {subsection}{\numberline {6.3}Optimalizace replikátoru}{42}{subsection.6.3}%
\contentsline {subsection}{\numberline {6.4}Optimalizace manažera zájmů}{44}{subsection.6.4}%
\contentsline {subsection}{\numberline {6.5}Peer-to-peer}{45}{subsection.6.5}%
\contentsline {section}{Z\'av\v er}{47}{section*.3}%
\babel@toc {czech}{}\relax
\babel@toc {czech}{}\relax
\contentsline {section}{Conclusions}{47}{section*.5}%
\contentsline {section}{Conclusions}{48}{section*.5}%
\babel@toc {english}{}\relax
\babel@toc {czech}{}\relax
\contentsline {section}{\numberline {A}První příloha}{48}{appendix.A}%
\contentsline {section}{\numberline {B}Druhá příloha}{48}{appendix.B}%
\contentsline {section}{\numberline {C}Obsah elektronických dat}{48}{appendix.C}%
\contentsline {section}{Literatura}{50}{section*.7}%
\contentsline {section}{\numberline {A}První příloha}{49}{appendix.A}%
\contentsline {section}{\numberline {B}Druhá příloha}{49}{appendix.B}%
\contentsline {section}{\numberline {C}Obsah elektronických dat}{49}{appendix.C}%
\contentsline {section}{Literatura}{51}{section*.7}%
\babel@toc {english}{}\relax
\babel@toc {czech}{}\relax