Update
This commit is contained in:
+105
-113
@@ -79,151 +79,143 @@
|
||||
\BKM@entry{id=27,open,dest={73756273756273656374696F6E2E322E382E34},srcline={499}}{5C3337365C3337375C303030325C3030302E5C303030385C3030302E5C303030345C3030305C3034305C303030425C3030306F5C3030306F5C303030735C303030745C3030305C3034305C303030415C303030735C303030695C3030306F}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.8.4}Boost Asio}{22}{subsubsection.2.8.4}\protected@file@percent }
|
||||
\BKM@entry{id=28,open,dest={73656374696F6E2E33},srcline={567}}{5C3337365C3337375C303030335C3030305C3034305C303030485C303030725C30303061}
|
||||
\BKM@entry{id=29,open,dest={73756273656374696F6E2E332E31},srcline={583}}{5C3337365C3337375C303030335C3030302E5C303030315C3030305C3034305C303030535C3030306F5C303030665C303030745C303030775C303030615C303030725C3030306F5C303030765C3030305C3334315C3030305C3034305C303030415C303030725C303030635C303030685C303030695C303030745C303030655C3030306B5C303030745C303030755C303030725C30303061}
|
||||
\BKM@entry{id=30,open,dest={73756273756273656374696F6E2E332E312E31},srcline={601}}{5C3337365C3337375C303030335C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030455C3030306E5C303030745C303030695C303030745C303030795C3030302D5C303030435C3030306F5C3030306D5C303030705C3030306F5C3030306E5C303030655C3030306E5C303030745C3030302D5C303030535C303030795C303030735C303030745C303030655C3030306D}
|
||||
\BKM@entry{id=29,open,dest={73756273656374696F6E2E332E31},srcline={582}}{5C3337365C3337375C303030335C3030302E5C303030315C3030305C3034305C303030455C3030306E5C303030675C303030695C3030306E5C30303065}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {3}Hra}{23}{section.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Softwarová Architektura}{23}{subsection.3.1}\protected@file@percent }
|
||||
\BKM@entry{id=31,open,dest={73756273656374696F6E2E332E32},srcline={615}}{5C3337365C3337375C303030335C3030302E5C303030325C3030305C3034305C303030455C3030306E5C303030675C303030695C3030306E5C30303065}
|
||||
\BKM@entry{id=32,open,dest={73756273756273656374696F6E2E332E322E31},srcline={619}}{5C3337365C3337375C303030335C3030302E5C303030325C3030302E5C303030315C3030305C3034305C303030465C303030795C3030307A5C303030695C303030635C3030306B5C3030305C3337355C3030305C3034305C303030655C3030306E5C303030675C303030695C3030306E5C30303065}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.1}Entity-Component-System}{24}{subsubsection.3.1.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Engine}{24}{subsection.3.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.1}Fyzický engine}{24}{subsubsection.3.2.1}\protected@file@percent }
|
||||
\BKM@entry{id=33,open,dest={73756273756273656374696F6E2E332E322E32},srcline={627}}{5C3337365C3337375C303030335C3030302E5C303030325C3030302E5C303030325C3030305C3034305C303030565C303030795C3030306B5C303030725C303030655C303030735C3030306C5C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535}
|
||||
\BKM@entry{id=34,open,dest={73756273756273656374696F6E2E332E322E33},srcline={635}}{5C3337365C3337375C303030335C3030302E5C303030325C3030302E5C303030335C3030305C3034305C303030455C3030306E5C303030745C30303074}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.2}Vykreslování}{25}{subsubsection.3.2.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.3}Entt}{25}{subsubsection.3.2.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Engine}{23}{subsection.3.1}\protected@file@percent }
|
||||
\BKM@entry{id=30,open,dest={73756273756273656374696F6E2E332E312E31},srcline={607}}{5C3337365C3337375C303030335C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030465C303030795C3030307A5C303030695C303030635C3030306B5C3030305C3337355C3030305C3034305C303030655C3030306E5C303030675C303030695C3030306E5C30303065}
|
||||
\BKM@entry{id=31,open,dest={73756273756273656374696F6E2E332E312E32},srcline={615}}{5C3337365C3337375C303030335C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030565C303030795C3030306B5C303030725C303030655C303030735C3030306C5C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535}
|
||||
\BKM@entry{id=32,open,dest={73756273756273656374696F6E2E332E312E33},srcline={623}}{5C3337365C3337375C303030335C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030455C3030306E5C303030745C303030695C303030745C303030795C3030302D5C303030435C3030306F5C3030306D5C303030705C3030306F5C3030306E5C303030655C3030306E5C303030745C3030302D5C303030535C303030795C303030735C303030745C303030655C3030306D}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.1}Fyzický engine}{24}{subsubsection.3.1.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.2}Vykreslování}{24}{subsubsection.3.1.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.3}Entity-Component-System}{24}{subsubsection.3.1.3}\protected@file@percent }
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}Příklad použití knihovny Entt}{25}{lstlisting.1}\protected@file@percent }
|
||||
\BKM@entry{id=35,open,dest={73756273756273656374696F6E2E332E322E34},srcline={678}}{5C3337365C3337375C303030335C3030302E5C303030325C3030302E5C303030345C3030305C3034305C303030535C303030745C303030615C303030765C3030305C3034305C303030685C303030725C30303079}
|
||||
\BKM@entry{id=36,open,dest={73756273656374696F6E2E332E33},srcline={687}}{5C3337365C3337375C303030335C3030302E5C303030335C3030305C3034305C303030485C303030725C303030615C3030305C3034305C303030765C3030305C3335355C303030635C303030655C3030305C3034305C303030685C303030725C3030305C3334315C3030315C3031355C3030315C313537}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.4}Stav hry}{26}{subsubsection.3.2.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Hra více hráčů}{26}{subsection.3.3}\protected@file@percent }
|
||||
\BKM@entry{id=37,open,dest={73756273656374696F6E2E332E34},srcline={695}}{5C3337365C3337375C303030335C3030302E5C303030345C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C303030745C3030302D5C303030535C303030655C303030725C303030765C303030655C303030725C3030305C3034305C303030615C303030725C303030635C303030685C303030695C303030745C303030655C3030306B5C303030745C303030755C303030725C30303061}
|
||||
\BKM@entry{id=38,open,dest={73756273656374696F6E2E332E35},srcline={709}}{5C3337365C3337375C303030335C3030302E5C303030355C3030305C3034305C303030535C303030655C303030725C303030765C303030655C30303072}
|
||||
\BKM@entry{id=39,open,dest={73756273756273656374696F6E2E332E352E31},srcline={719}}{5C3337365C3337375C303030335C3030302E5C303030355C3030302E5C303030315C3030305C3034305C303030525C303030655C303030675C303030695C303030735C303030745C303030725C3030305C3034305C3030306B5C3030306C5C303030695C303030655C3030306E5C303030745C3030315C313537}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}Klient-Server architektura}{27}{subsection.3.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.5}Server}{27}{subsection.3.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.5.1}Registr klientů}{27}{subsubsection.3.5.1}\protected@file@percent }
|
||||
\BKM@entry{id=40,open,dest={73756273756273656374696F6E2E332E352E32},srcline={725}}{5C3337365C3337375C303030335C3030302E5C303030355C3030302E5C303030325C3030305C3034305C303030535C303030655C303030725C303030765C303030655C303030725C3030305C3034305C303030525C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075}
|
||||
\BKM@entry{id=41,open,dest={73756273756273656374696F6E2E332E352E33},srcline={729}}{5C3337365C3337375C303030335C3030302E5C303030355C3030302E5C303030335C3030305C3034305C303030535C303030705C303030725C3030305C3334315C303030765C303030615C3030305C3034305C3030307A5C3030305C3334315C3030306A5C3030306D5C3030315C313537}
|
||||
\BKM@entry{id=33,open,dest={73656374696F6E2E34},srcline={678}}{5C3337365C3337375C303030345C3030305C3034305C303030485C303030725C303030615C3030305C3034305C303030765C3030305C3335355C303030635C303030655C3030305C3034305C303030685C303030725C3030305C3334315C3030315C3031355C3030315C313537}
|
||||
\BKM@entry{id=34,open,dest={73756273656374696F6E2E342E31},srcline={700}}{5C3337365C3337375C303030345C3030302E5C303030315C3030305C3034305C303030535C303030655C303030725C303030765C303030655C30303072}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4}Hra více hráčů}{27}{section.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Server}{27}{subsection.4.1}\protected@file@percent }
|
||||
\BKM@entry{id=35,open,dest={73756273756273656374696F6E2E342E312E31},srcline={710}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030525C303030655C303030675C303030695C303030735C303030745C303030725C3030305C3034305C3030306B5C3030306C5C303030695C303030655C3030306E5C303030745C3030315C313537}
|
||||
\BKM@entry{id=36,open,dest={73756273756273656374696F6E2E342E312E32},srcline={716}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030535C303030655C303030725C303030765C303030655C303030725C3030305C3034305C303030525C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Softwarová architektura hry}}{28}{figure.5}\protected@file@percent }
|
||||
\newlabel{fig:client_server_architecture}{{5}{28}{Softwarová architektura hry}{figure.5}{}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.5.2}Server Replikátoru}{28}{subsubsection.3.5.2}\protected@file@percent }
|
||||
\BKM@entry{id=42,open,dest={73756273656374696F6E2E332E36},srcline={739}}{5C3337365C3337375C303030335C3030302E5C303030365C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C30303074}
|
||||
\BKM@entry{id=43,open,dest={73756273756273656374696F6E2E332E362E31},srcline={743}}{5C3337365C3337375C303030335C3030302E5C303030365C3030302E5C303030315C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C303030745C3030305C3034305C303030525C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075}
|
||||
\BKM@entry{id=44,open,dest={73756273756273656374696F6E2E332E362E32},srcline={747}}{5C3337365C3337375C303030335C3030302E5C303030365C3030302E5C303030325C3030305C3034305C303030495C3030306E5C303030745C303030655C303030725C303030705C3030306F5C3030306C5C303030615C303030635C30303065}
|
||||
\BKM@entry{id=45,open,dest={73756273756273656374696F6E2E332E362E33},srcline={751}}{5C3337365C3337375C303030335C3030302E5C303030365C3030302E5C303030335C3030305C3034305C303030525C3030306F5C3030306C5C3030306C5C303030625C303030615C303030635C3030306B}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.5.3}Správa zájmů}{29}{subsubsection.3.5.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.6}Klient}{29}{subsection.3.6}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.6.1}Klient Replikátoru}{29}{subsubsection.3.6.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.6.2}Interpolace}{29}{subsubsection.3.6.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.6.3}Rollback}{29}{subsubsection.3.6.3}\protected@file@percent }
|
||||
\BKM@entry{id=46,open,dest={73756273656374696F6E2E332E37},srcline={760}}{5C3337365C3337375C303030335C3030302E5C303030375C3030305C3034305C303030505C3030306F5C303030735C3030305C3335355C3030306C5C3030305C3334315C3030306E5C3030305C3335355C3030305C3034305C3030307A5C303030705C303030725C3030305C3334315C30303076}
|
||||
\BKM@entry{id=47,open,dest={73756273756273656374696F6E2E332E372E31},srcline={769}}{5C3337365C3337375C303030335C3030302E5C303030375C3030302E5C303030315C3030305C3034305C3030304B5C3030305C3336335C303030645C3030306F5C303030765C3030305C3334315C3030306E5C3030305C3335355C3030305C3034305C3030307A5C303030705C303030725C3030305C3334315C30303076}
|
||||
\BKM@entry{id=48,open,dest={73756273756273656374696F6E2E332E372E32},srcline={777}}{5C3337365C3337375C303030335C3030302E5C303030375C3030302E5C303030325C3030305C3034305C303030495C3030306D5C303030705C3030306C5C303030655C3030306D5C303030655C3030306E5C303030745C303030615C303030635C30303065}
|
||||
\BKM@entry{id=49,open,dest={73756273756273656374696F6E2E332E372E33},srcline={781}}{5C3337365C3337375C303030335C3030302E5C303030375C3030302E5C303030335C3030305C3034305C303030445C303030655C303030745C303030655C3030306B5C303030635C303030655C3030305C3034305C303030615C3030305C3034305C3030306E5C3030305C3334315C303030705C303030725C303030615C303030765C303030615C3030305C3034305C303030635C303030685C303030795C30303062}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.7}Posílání zpráv}{30}{subsection.3.7}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.7.1}Kódování zpráv}{30}{subsubsection.3.7.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.7.2}Implementace}{30}{subsubsection.3.7.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.7.3}Detekce a náprava chyb}{30}{subsubsection.3.7.3}\protected@file@percent }
|
||||
\BKM@entry{id=50,open,dest={73756273656374696F6E2E332E38},srcline={788}}{5C3337365C3337375C303030335C3030302E5C303030385C3030305C3034305C303030535C303030655C303030725C303030695C303030615C3030306C5C303030695C3030307A5C303030615C303030635C30303065}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.8}Serializace}{31}{subsection.3.8}\protected@file@percent }
|
||||
\BKM@entry{id=51,open,dest={73756273656374696F6E2E332E39},srcline={816}}{5C3337365C3337375C303030335C3030302E5C303030395C3030305C3034305C3030304D5C303030655C303030745C303030725C303030695C3030306B5C30303079}
|
||||
\BKM@entry{id=52,open,dest={73756273756273656374696F6E2E332E392E31},srcline={820}}{5C3337365C3337375C303030335C3030302E5C303030395C3030302E5C303030315C3030305C3034305C303030505C3030306F5C303030735C303030745C303030675C303030725C303030655C303030535C303030515C3030304C}
|
||||
\BKM@entry{id=53,open,dest={73756273756273656374696F6E2E332E392E32},srcline={824}}{5C3337365C3337375C303030335C3030302E5C303030395C3030302E5C303030325C3030305C3034305C303030545C303030695C3030306D5C303030655C303030735C303030635C303030615C3030306C5C303030655C303030445C30303042}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1}Registr klientů}{28}{subsubsection.4.1.1}\protected@file@percent }
|
||||
\BKM@entry{id=37,open,dest={73756273756273656374696F6E2E342E312E33},srcline={720}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030535C303030705C303030725C3030305C3334315C303030765C303030615C3030305C3034305C3030307A5C3030305C3334315C3030306A5C3030306D5C3030315C313537}
|
||||
\BKM@entry{id=38,open,dest={73756273656374696F6E2E342E32},srcline={730}}{5C3337365C3337375C303030345C3030302E5C303030325C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C30303074}
|
||||
\BKM@entry{id=39,open,dest={73756273756273656374696F6E2E342E322E31},srcline={734}}{5C3337365C3337375C303030345C3030302E5C303030325C3030302E5C303030315C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C303030745C3030305C3034305C303030525C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075}
|
||||
\BKM@entry{id=40,open,dest={73756273756273656374696F6E2E342E322E32},srcline={738}}{5C3337365C3337375C303030345C3030302E5C303030325C3030302E5C303030325C3030305C3034305C303030495C3030306E5C303030745C303030655C303030725C303030705C3030306F5C3030306C5C303030615C303030635C30303065}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}Server Replikátoru}{29}{subsubsection.4.1.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.3}Správa zájmů}{29}{subsubsection.4.1.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Klient}{29}{subsection.4.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}Klient Replikátoru}{29}{subsubsection.4.2.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}Interpolace}{29}{subsubsection.4.2.2}\protected@file@percent }
|
||||
\BKM@entry{id=41,open,dest={73756273756273656374696F6E2E342E322E33},srcline={742}}{5C3337365C3337375C303030345C3030302E5C303030325C3030302E5C303030335C3030305C3034305C303030525C3030306F5C3030306C5C3030306C5C303030625C303030615C303030635C3030306B}
|
||||
\BKM@entry{id=42,open,dest={73756273656374696F6E2E342E33},srcline={751}}{5C3337365C3337375C303030345C3030302E5C303030335C3030305C3034305C303030505C3030306F5C303030735C3030305C3335355C3030306C5C3030305C3334315C3030306E5C3030305C3335355C3030305C3034305C3030307A5C303030705C303030725C3030305C3334315C30303076}
|
||||
\BKM@entry{id=43,open,dest={73756273756273656374696F6E2E342E332E31},srcline={760}}{5C3337365C3337375C303030345C3030302E5C303030335C3030302E5C303030315C3030305C3034305C3030304B5C3030305C3336335C303030645C3030306F5C303030765C3030305C3334315C3030306E5C3030305C3335355C3030305C3034305C3030307A5C303030705C303030725C3030305C3334315C30303076}
|
||||
\BKM@entry{id=44,open,dest={73756273756273656374696F6E2E342E332E32},srcline={768}}{5C3337365C3337375C303030345C3030302E5C303030335C3030302E5C303030325C3030305C3034305C303030495C3030306D5C303030705C3030306C5C303030655C3030306D5C303030655C3030306E5C303030745C303030615C303030635C30303065}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.3}Rollback}{30}{subsubsection.4.2.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Posílání zpráv}{30}{subsection.4.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.1}Kódování zpráv}{30}{subsubsection.4.3.1}\protected@file@percent }
|
||||
\BKM@entry{id=45,open,dest={73756273756273656374696F6E2E342E332E33},srcline={772}}{5C3337365C3337375C303030345C3030302E5C303030335C3030302E5C303030335C3030305C3034305C303030445C303030655C303030745C303030655C3030306B5C303030635C303030655C3030305C3034305C303030615C3030305C3034305C3030306E5C3030305C3334315C303030705C303030725C303030615C303030765C303030615C3030305C3034305C303030635C303030685C303030795C30303062}
|
||||
\BKM@entry{id=46,open,dest={73756273656374696F6E2E342E34},srcline={779}}{5C3337365C3337375C303030345C3030302E5C303030345C3030305C3034305C303030535C303030655C303030725C303030695C303030615C3030306C5C303030695C3030307A5C303030615C303030635C30303065}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.2}Implementace}{31}{subsubsection.4.3.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.3}Detekce a náprava chyb}{31}{subsubsection.4.3.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Serializace}{31}{subsection.4.4}\protected@file@percent }
|
||||
\BKM@entry{id=47,open,dest={73756273656374696F6E2E342E35},srcline={807}}{5C3337365C3337375C303030345C3030302E5C303030355C3030305C3034305C3030304D5C303030655C303030745C303030725C303030695C3030306B5C30303079}
|
||||
\BKM@entry{id=48,open,dest={73756273756273656374696F6E2E342E352E31},srcline={811}}{5C3337365C3337375C303030345C3030302E5C303030355C3030302E5C303030315C3030305C3034305C303030505C3030306F5C303030735C303030745C303030675C303030725C303030655C303030535C303030515C3030304C}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}cpp}{32}{lstlisting.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.9}Metriky}{32}{subsection.3.9}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.9.1}PostgreSQL}{32}{subsubsection.3.9.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.9.2}TimescaleDB}{32}{subsubsection.3.9.2}\protected@file@percent }
|
||||
\BKM@entry{id=54,open,dest={73756273756273656374696F6E2E332E392E33},srcline={828}}{5C3337365C3337375C303030335C3030302E5C303030395C3030302E5C303030335C3030305C3034305C303030475C303030725C303030615C303030665C303030615C3030306E5C30303061}
|
||||
\BKM@entry{id=55,open,dest={73756273756273656374696F6E2E332E392E34},srcline={840}}{5C3337365C3337375C303030335C3030302E5C303030395C3030302E5C303030345C3030305C3034305C3030304F5C303030725C303030635C303030685C303030655C303030735C303030745C303030725C303030615C303030635C30303065}
|
||||
\BKM@entry{id=56,open,dest={73756273756273656374696F6E2E332E392E35},srcline={846}}{5C3337365C3337375C303030335C3030302E5C303030395C3030302E5C303030355C3030305C3034305C303030495C3030306D5C303030475C303030755C30303069}
|
||||
\BKM@entry{id=57,open,dest={73756273756273656374696F6E2E332E392E36},srcline={852}}{5C3337365C3337375C303030335C3030302E5C303030395C3030302E5C303030365C3030305C3034305C303030545C303030725C303030615C303030635C30303079}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5}Metriky}{32}{subsection.4.5}\protected@file@percent }
|
||||
\BKM@entry{id=49,open,dest={73756273756273656374696F6E2E342E352E32},srcline={815}}{5C3337365C3337375C303030345C3030302E5C303030355C3030302E5C303030325C3030305C3034305C303030545C303030695C3030306D5C303030655C303030735C303030635C303030615C3030306C5C303030655C303030445C30303042}
|
||||
\BKM@entry{id=50,open,dest={73756273756273656374696F6E2E342E352E33},srcline={819}}{5C3337365C3337375C303030345C3030302E5C303030355C3030302E5C303030335C3030305C3034305C303030475C303030725C303030615C303030665C303030615C3030306E5C30303061}
|
||||
\BKM@entry{id=51,open,dest={73756273756273656374696F6E2E342E352E34},srcline={831}}{5C3337365C3337375C303030345C3030302E5C303030355C3030302E5C303030345C3030305C3034305C3030304F5C303030725C303030635C303030685C303030655C303030735C303030745C303030725C303030615C303030635C30303065}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Příklad Grafana dashboardu}}{33}{figure.6}\protected@file@percent }
|
||||
\newlabel{fig:grafana}{{6}{33}{Příklad Grafana dashboardu}{figure.6}{}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.9.3}Grafana}{33}{subsubsection.3.9.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.9.4}Orchestrace}{33}{subsubsection.3.9.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.9.5}ImGui}{33}{subsubsection.3.9.5}\protected@file@percent }
|
||||
\BKM@entry{id=58,open,dest={73756273756273656374696F6E2E332E392E37},srcline={866}}{5C3337365C3337375C303030335C3030302E5C303030395C3030302E5C303030375C3030305C3034305C3030304B5C3030306F5C3030306E5C3030306B5C303030725C3030305C3335315C303030745C3030306E5C3030305C3335355C3030305C3034305C3030306D5C303030655C303030745C303030725C303030695C3030306B5C30303079}
|
||||
\BKM@entry{id=59,open,dest={73756273756273656374696F6E2E332E392E38},srcline={882}}{5C3337365C3337375C303030335C3030302E5C303030395C3030302E5C303030385C3030305C3034305C303030535C303030625C3030305C3335355C303030725C3030305C3334315C3030306E5C3030305C3335355C3030305C3034305C303030765C3030305C3034305C303030725C303030655C3030305C3334315C3030306C5C3030306E5C3030305C3335315C3030306D5C3030305C3034305C3030315C3031355C303030615C303030735C30303065}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.5.1}PostgreSQL}{33}{subsubsection.4.5.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.5.2}TimescaleDB}{33}{subsubsection.4.5.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.5.3}Grafana}{33}{subsubsection.4.5.3}\protected@file@percent }
|
||||
\BKM@entry{id=52,open,dest={73756273756273656374696F6E2E342E352E35},srcline={837}}{5C3337365C3337375C303030345C3030302E5C303030355C3030302E5C303030355C3030305C3034305C303030495C3030306D5C303030475C303030755C30303069}
|
||||
\BKM@entry{id=53,open,dest={73756273756273656374696F6E2E342E352E36},srcline={843}}{5C3337365C3337375C303030345C3030302E5C303030355C3030302E5C303030365C3030305C3034305C303030545C303030725C303030615C303030635C30303079}
|
||||
\BKM@entry{id=54,open,dest={73756273756273656374696F6E2E342E352E37},srcline={857}}{5C3337365C3337375C303030345C3030302E5C303030355C3030302E5C303030375C3030305C3034305C3030304B5C3030306F5C3030306E5C3030306B5C303030725C3030305C3335315C303030745C3030306E5C3030305C3335355C3030305C3034305C3030306D5C303030655C303030745C303030725C303030695C3030306B5C30303079}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Jeden snímek v Tracy}}{34}{figure.7}\protected@file@percent }
|
||||
\newlabel{fig:frame_in_tracy}{{7}{34}{Jeden snímek v Tracy}{figure.7}{}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.9.6}Tracy}{34}{subsubsection.3.9.6}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.9.7}Konkrétní metriky}{34}{subsubsection.3.9.7}\protected@file@percent }
|
||||
\BKM@entry{id=60,open,dest={73756273656374696F6E2E332E3130},srcline={892}}{5C3337365C3337375C303030335C3030302E5C303030315C303030305C3030305C3034305C303030505C303030725C3030306F5C303030745C3030306F5C3030306B5C3030306F5C3030306C5C3030305C3034305C303030515C303030555C303030495C303030435C30303072}
|
||||
\BKM@entry{id=61,open,dest={73756273756273656374696F6E2E332E31302E31},srcline={902}}{5C3337365C3337375C303030335C3030302E5C303030315C303030305C3030302E5C303030315C3030305C3034305C303030525C3030305C3334315C3030306D5C303030655C30303063}
|
||||
\BKM@entry{id=62,open,dest={73756273756273656374696F6E2E332E31302E32},srcline={913}}{5C3337365C3337375C303030335C3030302E5C303030315C303030305C3030302E5C303030325C3030305C3034305C303030485C303030615C3030306E5C303030645C303030735C303030685C303030615C3030306B5C30303065}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.9.8}Sbírání v reálném čase}{35}{subsubsection.3.9.8}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.10}Protokol QUICr}{35}{subsection.3.10}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.10.1}Rámec}{35}{subsubsection.3.10.1}\protected@file@percent }
|
||||
\BKM@entry{id=63,open,dest={73756273756273656374696F6E2E332E31302E33},srcline={947}}{5C3337365C3337375C303030335C3030302E5C303030315C303030305C3030302E5C303030335C3030305C3034305C303030535C303030705C3030306F5C3030306C5C303030655C303030685C3030306C5C303030695C303030765C3030306F5C303030735C30303074}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.10.2}Handshake}{36}{subsubsection.3.10.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.10.3}Spolehlivost}{36}{subsubsection.3.10.3}\protected@file@percent }
|
||||
\newlabel{sec:quicr_reliability}{{3.10.3}{36}{Spolehlivost}{subsubsection.3.10.3}{}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.5.4}Orchestrace}{34}{subsubsection.4.5.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.5.5}ImGui}{34}{subsubsection.4.5.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.5.6}Tracy}{34}{subsubsection.4.5.6}\protected@file@percent }
|
||||
\BKM@entry{id=55,open,dest={73756273756273656374696F6E2E342E352E38},srcline={873}}{5C3337365C3337375C303030345C3030302E5C303030355C3030302E5C303030385C3030305C3034305C303030535C303030625C3030305C3335355C303030725C3030305C3334315C3030306E5C3030305C3335355C3030305C3034305C303030765C3030305C3034305C303030725C303030655C3030305C3334315C3030306C5C3030306E5C3030305C3335315C3030306D5C3030305C3034305C3030315C3031355C303030615C303030735C30303065}
|
||||
\BKM@entry{id=56,open,dest={73756273656374696F6E2E342E36},srcline={883}}{5C3337365C3337375C303030345C3030302E5C303030365C3030305C3034305C303030505C303030725C3030306F5C303030745C3030306F5C3030306B5C3030306F5C3030306C5C3030305C3034305C303030515C303030555C303030495C303030435C30303072}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.5.7}Konkrétní metriky}{35}{subsubsection.4.5.7}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.5.8}Sbírání v reálném čase}{35}{subsubsection.4.5.8}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6}Protokol QUICr}{35}{subsection.4.6}\protected@file@percent }
|
||||
\BKM@entry{id=57,open,dest={73756273756273656374696F6E2E342E362E31},srcline={893}}{5C3337365C3337375C303030345C3030302E5C303030365C3030302E5C303030315C3030305C3034305C303030525C3030305C3334315C3030306D5C303030655C30303063}
|
||||
\BKM@entry{id=58,open,dest={73756273756273656374696F6E2E342E362E32},srcline={904}}{5C3337365C3337375C303030345C3030302E5C303030365C3030302E5C303030325C3030305C3034305C303030485C303030615C3030306E5C303030645C303030735C303030685C303030615C3030306B5C30303065}
|
||||
\BKM@entry{id=59,open,dest={73756273756273656374696F6E2E342E362E33},srcline={938}}{5C3337365C3337375C303030345C3030302E5C303030365C3030302E5C303030335C3030305C3034305C303030535C303030705C3030306F5C3030306C5C303030655C303030685C3030306C5C303030695C303030765C3030306F5C303030735C30303074}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.1}Rámec}{36}{subsubsection.4.6.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.2}Handshake}{36}{subsubsection.4.6.2}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Stavový stroj QUICr handshake}}{37}{figure.8}\protected@file@percent }
|
||||
\newlabel{fig:quicr_handshake}{{8}{37}{Stavový stroj QUICr handshake}{figure.8}{}}
|
||||
\BKM@entry{id=64,open,dest={73756273756273656374696F6E2E332E31302E34},srcline={969}}{5C3337365C3337375C303030335C3030302E5C303030315C303030305C3030302E5C303030345C3030305C3034305C303030455C3030306E5C3030306B5C3030306F5C303030645C3030305C3335315C30303072}
|
||||
\BKM@entry{id=65,open,dest={73756273756273656374696F6E2E332E31302E35},srcline={976}}{5C3337365C3337375C303030335C3030302E5C303030315C303030305C3030302E5C303030355C3030305C3034305C303030545C303030655C303030735C303030745C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.10.4}Enkodér}{38}{subsubsection.3.10.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.10.5}Testování}{38}{subsubsection.3.10.5}\protected@file@percent }
|
||||
\BKM@entry{id=66,open,dest={73756273756273656374696F6E2E332E31302E36},srcline={983}}{5C3337365C3337375C303030335C3030302E5C303030315C303030305C3030302E5C303030365C3030305C3034305C3030304D5C3030315C3033335C3030315C3133315C303030655C3030306E5C3030305C333535}
|
||||
\BKM@entry{id=67,open,dest={73756273656374696F6E2E332E3131},srcline={1034}}{5C3337365C3337375C303030335C3030302E5C303030315C303030315C3030305C3034305C3030304F5C303030705C303030745C303030695C3030306D5C303030615C3030306C5C303030695C3030307A5C303030615C303030635C303030655C3030305C3034305C303030725C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.10.6}Měření}{39}{subsubsection.3.10.6}\protected@file@percent }
|
||||
\BKM@entry{id=60,open,dest={73756273756273656374696F6E2E342E362E34},srcline={960}}{5C3337365C3337375C303030345C3030302E5C303030365C3030302E5C303030345C3030305C3034305C303030455C3030306E5C3030306B5C3030306F5C303030645C3030305C3335315C30303072}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.3}Spolehlivost}{38}{subsubsection.4.6.3}\protected@file@percent }
|
||||
\newlabel{sec:quicr_reliability}{{4.6.3}{38}{Spolehlivost}{subsubsection.4.6.3}{}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.4}Enkodér}{38}{subsubsection.4.6.4}\protected@file@percent }
|
||||
\BKM@entry{id=61,open,dest={73756273756273656374696F6E2E342E362E35},srcline={967}}{5C3337365C3337375C303030345C3030302E5C303030365C3030302E5C303030355C3030305C3034305C303030545C303030655C303030735C303030745C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535}
|
||||
\BKM@entry{id=62,open,dest={73756273756273656374696F6E2E342E362E36},srcline={974}}{5C3337365C3337375C303030345C3030302E5C303030365C3030302E5C303030365C3030305C3034305C3030304D5C3030315C3033335C3030315C3133315C303030655C3030306E5C3030305C333535}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.5}Testování}{39}{subsubsection.4.6.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.6}Měření}{39}{subsubsection.4.6.6}\protected@file@percent }
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}Příklad volání TC}{39}{lstlisting.3}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces Porovnání odezvy TCP a QUICr}}{40}{figure.9}\protected@file@percent }
|
||||
\newlabel{fig:latencycomparison}{{9}{40}{Porovnání odezvy TCP a QUICr}{figure.9}{}}
|
||||
\newlabel{fig:integrationcomparison}{{3.10.6}{40}{Měření}{figure.9}{}}
|
||||
\newlabel{fig:integrationcomparison}{{4.6.6}{40}{Měření}{figure.9}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Porovnání integrace TCP a QUICr}}{40}{figure.10}\protected@file@percent }
|
||||
\newlabel{fig:playerbenchmark}{{3.10.6}{41}{Měření}{figure.10}{}}
|
||||
\BKM@entry{id=63,open,dest={73756273656374696F6E2E342E37},srcline={1025}}{5C3337365C3337375C303030345C3030302E5C303030375C3030305C3034305C3030304F5C303030705C303030745C303030695C3030306D5C303030615C3030306C5C303030695C3030307A5C303030615C303030635C303030655C3030305C3034305C303030725C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075}
|
||||
\newlabel{fig:playerbenchmark}{{4.6.6}{41}{Měření}{figure.10}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces 301 připojených hráčů}}{41}{figure.11}\protected@file@percent }
|
||||
\newlabel{fig:tracyreplicator}{{3.11}{41}{Optimalizace replikátoru}{subsection.3.11}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces Analýza replikátoru}}{41}{figure.12}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.11}Optimalizace replikátoru}{41}{subsection.3.11}\protected@file@percent }
|
||||
\newlabel{fig:ecs_optimization_tracy_01}{{3.11}{42}{Optimalizace replikátoru}{figure.12}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.7}Optimalizace replikátoru}{41}{subsection.4.7}\protected@file@percent }
|
||||
\newlabel{fig:tracyreplicator}{{4.7}{42}{Optimalizace replikátoru}{subsection.4.7}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces Analýza replikátoru}}{42}{figure.12}\protected@file@percent }
|
||||
\newlabel{fig:ecs_optimization_tracy_01}{{4.7}{42}{Optimalizace replikátoru}{figure.12}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces Analýza optimalizace replikátoru pro ECS}}{42}{figure.13}\protected@file@percent }
|
||||
\newlabel{fig:ecs_optimization_tracy_02}{{3.11}{42}{Optimalizace replikátoru}{figure.13}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces Analýza optimalizace replikátoru pro ECS}}{42}{figure.14}\protected@file@percent }
|
||||
\BKM@entry{id=68,open,dest={73756273656374696F6E2E332E3132},srcline={1087}}{5C3337365C3337375C303030335C3030302E5C303030315C303030325C3030305C3034305C3030304F5C303030705C303030745C303030695C3030306D5C303030615C3030306C5C303030695C3030307A5C303030615C303030635C303030655C3030305C3034305C3030306D5C303030615C3030306E5C303030615C3030315C3137365C303030655C303030725C303030615C3030305C3034305C3030307A5C3030305C3334315C3030306A5C3030306D5C3030315C313537}
|
||||
\BKM@entry{id=69,open,dest={73756273756273656374696F6E2E332E31322E31},srcline={1130}}{5C3337365C3337375C303030335C3030302E5C303030315C303030325C3030302E5C303030315C3030305C3034305C303030435C3030306F5C3030306E5C303030675C303030655C303030735C303030745C303030695C3030306F5C3030306E5C3030305C3034305C303030635C3030306F5C3030306E5C303030745C303030725C3030306F5C3030306C}
|
||||
\BKM@entry{id=70,open,dest={73756273756273656374696F6E2E332E31322E32},srcline={1132}}{5C3337365C3337375C303030335C3030302E5C303030315C303030325C3030302E5C303030325C3030305C3034305C303030425C303030615C3030306E5C303030645C303030775C303030695C303030645C303030745C303030685C3030305C3034305C303030635C3030306F5C3030306E5C303030745C303030725C3030306F5C3030306C}
|
||||
\newlabel{table:serialization_comparison}{{3.11}{43}{Optimalizace replikátoru}{figure.14}{}}
|
||||
\BKM@entry{id=64,open,dest={73756273656374696F6E2E342E38},srcline={1078}}{5C3337365C3337375C303030345C3030302E5C303030385C3030305C3034305C3030304F5C303030705C303030745C303030695C3030306D5C303030615C3030306C5C303030695C3030307A5C303030615C303030635C303030655C3030305C3034305C3030306D5C303030615C3030306E5C303030615C3030315C3137365C303030655C303030725C303030615C3030305C3034305C3030307A5C3030305C3334315C3030306A5C3030306D5C3030315C313537}
|
||||
\newlabel{fig:ecs_optimization_tracy_02}{{4.7}{43}{Optimalizace replikátoru}{figure.13}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces Analýza optimalizace replikátoru pro ECS}}{43}{figure.14}\protected@file@percent }
|
||||
\newlabel{table:serialization_comparison}{{4.7}{43}{Optimalizace replikátoru}{figure.14}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {15}{\ignorespaces Porovnání serializátorů}}{43}{figure.15}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.12}Optimalizace manažera zájmů}{43}{subsection.3.12}\protected@file@percent }
|
||||
\BKM@entry{id=71,open,dest={73756273656374696F6E2E332E3133},srcline={1136}}{5C3337365C3337375C303030335C3030302E5C303030315C303030335C3030305C3034305C303030535C303030685C303030615C303030725C303030645C303030695C3030306E5C30303067}
|
||||
\BKM@entry{id=72,open,dest={73756273656374696F6E2E332E3134},srcline={1140}}{5C3337365C3337375C303030335C3030302E5C303030315C303030345C3030305C3034305C303030485C3030306F5C303030725C303030695C3030307A5C3030306F5C3030306E5C303030745C3030305C3334315C3030306C5C3030306E5C3030305C3335355C3030305C3034305C3030315C3134315C3030306B5C3030305C3334315C3030306C5C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535}
|
||||
\newlabel{table:range_query_comparison}{{3.12}{44}{Optimalizace manažera zájmů}{subsection.3.12}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.8}Optimalizace manažera zájmů}{43}{subsection.4.8}\protected@file@percent }
|
||||
\BKM@entry{id=65,open,dest={73756273756273656374696F6E2E342E382E31},srcline={1121}}{5C3337365C3337375C303030345C3030302E5C303030385C3030302E5C303030315C3030305C3034305C303030435C3030306F5C3030306E5C303030675C303030655C303030735C303030745C303030695C3030306F5C3030306E5C3030305C3034305C303030635C3030306F5C3030306E5C303030745C303030725C3030306F5C3030306C}
|
||||
\BKM@entry{id=66,open,dest={73756273756273656374696F6E2E342E382E32},srcline={1123}}{5C3337365C3337375C303030345C3030302E5C303030385C3030302E5C303030325C3030305C3034305C303030425C303030615C3030306E5C303030645C303030775C303030695C303030645C303030745C303030685C3030305C3034305C303030635C3030306F5C3030306E5C303030745C303030725C3030306F5C3030306C}
|
||||
\BKM@entry{id=67,open,dest={73756273656374696F6E2E342E39},srcline={1127}}{5C3337365C3337375C303030345C3030302E5C303030395C3030305C3034305C303030535C303030685C303030615C303030725C303030645C303030695C3030306E5C30303067}
|
||||
\BKM@entry{id=68,open,dest={73756273656374696F6E2E342E3130},srcline={1131}}{5C3337365C3337375C303030345C3030302E5C303030315C303030305C3030305C3034305C303030485C3030306F5C303030725C303030695C3030307A5C3030306F5C3030306E5C303030745C3030305C3334315C3030306C5C3030306E5C3030305C3335355C3030305C3034305C3030315C3134315C3030306B5C3030305C3334315C3030306C5C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535}
|
||||
\newlabel{table:range_query_comparison}{{4.8}{44}{Optimalizace manažera zájmů}{subsection.4.8}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {16}{\ignorespaces Porovnání algoritmů}}{44}{figure.16}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.12.1}Congestion control}{44}{subsubsection.3.12.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.12.2}Bandwidth control}{44}{subsubsection.3.12.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.13}Sharding}{44}{subsection.3.13}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.14}Horizontální škálování}{44}{subsection.3.14}\protected@file@percent }
|
||||
\BKM@entry{id=73,open,dest={73756273656374696F6E2E332E3135},srcline={1158}}{5C3337365C3337375C303030335C3030302E5C303030315C303030355C3030305C3034305C3030304B5C3030306F5C3030306D5C303030705C303030725C303030655C303030735C30303065}
|
||||
\newlabel{fig:zone_cluster_architecture}{{3.14}{45}{Horizontální škálování}{subsection.3.14}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {17}{\ignorespaces Architektura systému s zone clusterem}}{45}{figure.17}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.15}Komprese}{45}{subsection.3.15}\protected@file@percent }
|
||||
\BKM@entry{id=74,open,dest={73756273756273656374696F6E2E332E31352E31},srcline={1162}}{5C3337365C3337375C303030335C3030302E5C303030315C303030355C3030302E5C303030315C3030305C3034305C303030425C303030695C303030745C3030305C3034305C303030425C303030755C303030665C303030665C303030655C30303072}
|
||||
\BKM@entry{id=75,open,dest={73756273656374696F6E2E332E3136},srcline={1168}}{5C3337365C3337375C303030335C3030302E5C303030315C303030365C3030305C3034305C3030305A5C3030305C3334315C303030765C3030315C3033335C303030725C30303079}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.15.1}Bit Buffer}{46}{subsubsection.3.15.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.16}Závěry}{46}{subsection.3.16}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.8.1}Congestion control}{44}{subsubsection.4.8.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.8.2}Bandwidth control}{44}{subsubsection.4.8.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.9}Sharding}{44}{subsection.4.9}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.10}Horizontální škálování}{44}{subsection.4.10}\protected@file@percent }
|
||||
\BKM@entry{id=69,open,dest={73656374696F6E2E35},srcline={1151}}{5C3337365C3337375C303030355C3030305C3034305C303030565C3030305C3337355C303030735C3030306C5C303030655C303030645C3030306E5C3030305C3334315C3030305C3034305C303030685C303030725C30303061}
|
||||
\BKM@entry{id=70,open,dest={73656374696F6E2E36},srcline={1157}}{5C3337365C3337375C303030365C3030305C3034305C3030304D5C3030315C3033335C3030315C3133315C3030315C3033335C3030306E5C3030305C333535}
|
||||
\BKM@entry{id=71,open,dest={73756273656374696F6E2E362E31},srcline={1163}}{5C3337365C3337375C303030365C3030302E5C303030315C3030305C3034305C3030305A5C3030305C3334315C303030765C3030315C3033335C303030725C30303079}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {5}Výsledná hra}{45}{section.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {6}Měřění}{45}{section.6}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Závěry}{45}{subsection.6.1}\protected@file@percent }
|
||||
\newlabel{fig:zone_cluster_architecture}{{4.10}{46}{Horizontální škálování}{subsection.4.10}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {17}{\ignorespaces Architektura systému s zone clusterem}}{46}{figure.17}\protected@file@percent }
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {4}Sazba závěrů}{46}{lstlisting.4}\protected@file@percent }
|
||||
\BKM@entry{id=76,open,dest={73656374696F6E2A2E33},srcline={1189}}{5C3337365C3337375C3030305A5C3030305C3334315C303030765C3030315C3033335C30303072}
|
||||
\BKM@entry{id=72,open,dest={73656374696F6E2A2E33},srcline={1184}}{5C3337365C3337375C3030305A5C3030305C3334315C303030765C3030315C3033335C30303072}
|
||||
\@writefile{toc}{\contentsline {section}{Z\'av\v er}{47}{section*.3}\protected@file@percent }
|
||||
\babel@aux{czech}{}
|
||||
\babel@aux{czech}{}
|
||||
\BKM@entry{id=77,open,dest={73656374696F6E2A2E35},srcline={1192}}{5C3337365C3337375C303030435C3030306F5C3030306E5C303030635C3030306C5C303030755C303030735C303030695C3030306F5C3030306E5C30303073}
|
||||
\BKM@entry{id=73,open,dest={73656374696F6E2A2E35},srcline={1187}}{5C3337365C3337375C303030435C3030306F5C3030306E5C303030635C3030306C5C303030755C303030735C303030695C3030306F5C3030306E5C30303073}
|
||||
\@writefile{toc}{\contentsline {section}{Conclusions}{48}{section*.5}\protected@file@percent }
|
||||
\babel@aux{english}{}
|
||||
\babel@aux{czech}{}
|
||||
\BKM@entry{id=78,open,dest={617070656E6469782E41},srcline={1199}}{5C3337365C3337375C303030415C3030305C3034305C303030505C303030725C303030765C3030306E5C3030305C3335355C3030305C3034305C303030705C3030315C3133315C3030305C3335355C3030306C5C3030306F5C303030685C30303061}
|
||||
\BKM@entry{id=79,open,dest={617070656E6469782E42},srcline={1202}}{5C3337365C3337375C303030425C3030305C3034305C303030445C303030725C303030755C303030685C3030305C3334315C3030305C3034305C303030705C3030315C3133315C3030305C3335355C3030306C5C3030306F5C303030685C30303061}
|
||||
\BKM@entry{id=80,open,dest={617070656E6469782E43},srcline={1207}}{5C3337365C3337375C303030435C3030305C3034305C3030304F5C303030625C303030735C303030615C303030685C3030305C3034305C303030655C3030306C5C303030655C3030306B5C303030745C303030725C3030306F5C3030306E5C303030695C303030635C3030306B5C3030305C3337355C303030635C303030685C3030305C3034305C303030645C303030615C30303074}
|
||||
\BKM@entry{id=74,open,dest={617070656E6469782E41},srcline={1194}}{5C3337365C3337375C303030415C3030305C3034305C303030505C303030725C303030765C3030306E5C3030305C3335355C3030305C3034305C303030705C3030315C3133315C3030305C3335355C3030306C5C3030306F5C303030685C30303061}
|
||||
\BKM@entry{id=75,open,dest={617070656E6469782E42},srcline={1197}}{5C3337365C3337375C303030425C3030305C3034305C303030445C303030725C303030755C303030685C3030305C3334315C3030305C3034305C303030705C3030315C3133315C3030305C3335355C3030306C5C3030306F5C303030685C30303061}
|
||||
\BKM@entry{id=76,open,dest={617070656E6469782E43},srcline={1202}}{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}{}}
|
||||
\BKM@entry{id=81,open,dest={73656374696F6E2A2E37},srcline={1274}}{5C3337365C3337375C303030535C303030655C3030307A5C3030306E5C303030615C3030306D5C3030305C3034305C3030307A5C3030306B5C303030725C303030615C303030745C303030655C3030306B}
|
||||
\BKM@entry{id=77,open,dest={73656374696F6E2A2E37},srcline={1269}}{5C3337365C3337375C303030535C303030655C3030307A5C3030306E5C303030615C3030306D5C3030305C3034305C3030307A5C3030306B5C303030725C303030615C303030745C303030655C3030306B}
|
||||
\abx@aux@nociteall
|
||||
\@writefile{toc}{\contentsline {section}{Seznam zkratek}{51}{section*.7}\protected@file@percent }
|
||||
\BKM@entry{id=82,open,dest={73656374696F6E2A2E38},srcline={1284}}{5C3337365C3337375C3030304C5C303030695C303030745C303030655C303030725C303030615C303030745C303030755C303030725C30303061}
|
||||
\BKM@entry{id=78,open,dest={73656374696F6E2A2E38},srcline={1279}}{5C3337365C3337375C3030304C5C303030695C303030745C303030655C303030725C303030615C303030745C303030755C303030725C30303061}
|
||||
\abx@aux@read@bbl@mdfivesum{nobblfile}
|
||||
\abx@aux@read@bblrerun
|
||||
\newlabel{LastPage}{{C}{51}{Obsah elektronických dat}{page.51}{}}
|
||||
|
||||
+11
-11
@@ -1,18 +1,18 @@
|
||||
# Fdb version 4
|
||||
["biber kidiplom"] 1777641420.71466 "kidiplom.bcf" "kidiplom.bbl" "kidiplom" 1784485267.16205 2
|
||||
"kidiplom.bcf" 1784485267.03736 100507 e04409a00ea07820a76aae942e927593 "pdflatex"
|
||||
["biber kidiplom"] 1777641420.71466 "kidiplom.bcf" "kidiplom.bbl" "kidiplom" 1785134120.2661 2
|
||||
"kidiplom.bcf" 1785134120.14143 100507 e04409a00ea07820a76aae942e927593 "pdflatex"
|
||||
(generated)
|
||||
"kidiplom.bbl"
|
||||
"kidiplom.blg"
|
||||
(rewritten before read)
|
||||
["makeindex kidiplom.idx"] 1777641420.69393 "kidiplom.idx" "kidiplom.ind" "kidiplom" 1784485267.15871 0
|
||||
"kidiplom.idx" 1784485265.44133 0 d41d8cd98f00b204e9800998ecf8427e "pdflatex"
|
||||
["makeindex kidiplom.idx"] 1777641420.69393 "kidiplom.idx" "kidiplom.ind" "kidiplom" 1785134120.26338 0
|
||||
"kidiplom.idx" 1785134118.55941 0 d41d8cd98f00b204e9800998ecf8427e "pdflatex"
|
||||
(generated)
|
||||
"kidiplom.ilg"
|
||||
"kidiplom.ind"
|
||||
(rewritten before read)
|
||||
["pdflatex"] 1784485264.83133 "/home/martin/projects/kidiplom/kidiplom.tex" "kidiplom.pdf" "kidiplom" 1784485267.15887 2
|
||||
"/home/martin/projects/kidiplom/kidiplom.tex" 1784485264.71132 119092 182002268412b0b42392d53087902db8 ""
|
||||
["pdflatex"] 1785134118.05189 "/home/martin/projects/kidiplom/kidiplom.tex" "kidiplom.pdf" "kidiplom" 1785134120.2635 2
|
||||
"/home/martin/projects/kidiplom/kidiplom.tex" 1785134117.8614 119164 b5173d7f51966dc96bc4fdcbf6ab2587 ""
|
||||
"/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 ""
|
||||
@@ -259,15 +259,15 @@
|
||||
"iso.bbx" 1681557593 13233 9f9e9c852fe772bfe1efaacc6b415eb7 ""
|
||||
"kibase.sty" 1681557593 23853 021ae8236751950ac5e18f6a5bcf1da7 ""
|
||||
"kidiplom.acr" 0 -1 0 ""
|
||||
"kidiplom.aux" 1784485267.01936 39430 fdff14e0bc2410ed919f8e8110557921 "pdflatex"
|
||||
"kidiplom.aux" 1785134120.12543 37335 009208f1c904a01b1a0b56e9772f5e33 "pdflatex"
|
||||
"kidiplom.bbl" 0 -1 0 "biber kidiplom"
|
||||
"kidiplom.cls" 1681557593 18598 7684b2d13ac67d7b017c4eea1e12fa0c ""
|
||||
"kidiplom.glsdefs" 1777655247.6059 525 791a05cd0a9f8650067804d8f5ff3f41 ""
|
||||
"kidiplom.ind" 1777641420.71105 0 d41d8cd98f00b204e9800998ecf8427e "makeindex kidiplom.idx"
|
||||
"kidiplom.lot" 1784485267.03863 142 0f926846b4ca0023532a29a360cf54d1 "pdflatex"
|
||||
"kidiplom.run.xml" 1784485267.03863 2535 4e001a965ee2f4de88dc6271855a61ea "pdflatex"
|
||||
"kidiplom.tex" 1784485264.71132 119092 182002268412b0b42392d53087902db8 ""
|
||||
"kidiplom.toc" 1784485267.03863 6728 b6e8cccb71c2a170c813dee8da64c213 "pdflatex"
|
||||
"kidiplom.lot" 1785134120.14317 142 0f926846b4ca0023532a29a360cf54d1 "pdflatex"
|
||||
"kidiplom.run.xml" 1785134120.14317 2535 4e001a965ee2f4de88dc6271855a61ea "pdflatex"
|
||||
"kidiplom.tex" 1785134117.8614 119164 b5173d7f51966dc96bc4fdcbf6ab2587 ""
|
||||
"kidiplom.toc" 1785134120.14317 6314 b9986ce6cc860b0edabadcbdb37b012e "pdflatex"
|
||||
(generated)
|
||||
"kidiplom.acn"
|
||||
"kidiplom.aux"
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
% makeindex style file created by the glossaries package
|
||||
% for document 'kidiplom' on 2026-7-19
|
||||
% for document 'kidiplom' on 2026-7-27
|
||||
actual '?'
|
||||
encap '|'
|
||||
level '!'
|
||||
|
||||
+72
-142
@@ -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) 19 JUL 2026 20:21
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=pdflatex 2026.6.8) 27 JUL 2026 08:35
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
@@ -1502,32 +1502,32 @@ Overfull \hbox (0.28238pt too wide) in paragraph at lines 274--275
|
||||
[]
|
||||
|
||||
[12]
|
||||
<graphics/layer_architecture.png, id=240, 663.47874pt x 321.2pt>
|
||||
<graphics/layer_architecture.png, id=232, 663.47874pt x 321.2pt>
|
||||
File: graphics/layer_architecture.png Graphic file (type png)
|
||||
<use graphics/layer_architecture.png>
|
||||
Package pdftex.def Info: graphics/layer_architecture.png used on input line 30
|
||||
8.
|
||||
(pdftex.def) Requested size: 409.50119pt x 198.24504pt.
|
||||
[13] [14 <./graphics/layer_architecture.png>]
|
||||
<graphics/TcpIp.png, id=256, 805.0075pt x 512.91624pt>
|
||||
<graphics/TcpIp.png, id=248, 805.0075pt x 512.91624pt>
|
||||
File: graphics/TcpIp.png Graphic file (type png)
|
||||
<use graphics/TcpIp.png>
|
||||
Package pdftex.def Info: graphics/TcpIp.png used on input line 342.
|
||||
(pdftex.def) Requested size: 409.50119pt x 260.91075pt.
|
||||
[15 <./graphics/TcpIp.png>]
|
||||
<graphics/http2.pdf, id=263, 275.10779pt x 225.7233pt>
|
||||
<graphics/http2.pdf, id=255, 275.10779pt x 225.7233pt>
|
||||
File: graphics/http2.pdf Graphic file (type pdf)
|
||||
<use graphics/http2.pdf>
|
||||
Package pdftex.def Info: graphics/http2.pdf used on input line 381.
|
||||
(pdftex.def) Requested size: 196.5588pt x 161.2807pt.
|
||||
<graphics/http3.pdf, id=264, 349.305pt x 262.0992pt>
|
||||
<graphics/http3.pdf, id=256, 349.305pt x 262.0992pt>
|
||||
File: graphics/http3.pdf Graphic file (type pdf)
|
||||
<use graphics/http3.pdf>
|
||||
Package pdftex.def Info: graphics/http3.pdf used on input line 387.
|
||||
(pdftex.def) Requested size: 196.5588pt x 147.48642pt.
|
||||
|
||||
[16] [17 <./graphics/http2.pdf> <./graphics/http3.pdf>] [18] [19]
|
||||
<graphics/quic_handshake.pdf, id=321, 243.79079pt x 327.14218pt>
|
||||
<graphics/quic_handshake.pdf, id=313, 243.79079pt x 327.14218pt>
|
||||
File: graphics/quic_handshake.pdf Graphic file (type pdf)
|
||||
<use graphics/quic_handshake.pdf>
|
||||
Package pdftex.def Info: graphics/quic_handshake.pdf used on input line 453.
|
||||
@@ -1647,7 +1647,7 @@ and I'll forget about whatever was undefined.
|
||||
|
||||
[22] [23]
|
||||
! Undefined control sequence.
|
||||
l.623 ... a pozice). Vše jsme obalili do \inlcpp
|
||||
l.611 ... a pozice). Vše jsme obalili do \inlcpp
|
||||
{JoltPhysicsWorld}.
|
||||
The control sequence at the end of the top line
|
||||
of your error message was never \def'ed. If you have
|
||||
@@ -1657,44 +1657,35 @@ and I'll forget about whatever was undefined.
|
||||
|
||||
[24]
|
||||
Package hyperref Info: bookmark level for unknown lstlisting defaults to 0 on i
|
||||
nput line 639.
|
||||
[25]
|
||||
Overfull \hbox (0.87991pt too wide) in paragraph at lines 683--684
|
||||
\T1/lmr/m/n/12 Stav hry re-pre-zen-tu-jeme kom-pletn¥ ve t°íd¥ [][][][]. Ta ob-
|
||||
sa-huje re-gistr z knihovny
|
||||
[]
|
||||
|
||||
[26]
|
||||
<graphics/client-server-architecture.pdf, id=376, 609.23605pt x 404.47108pt>
|
||||
nput line 633.
|
||||
[25] [26]
|
||||
<graphics/client-server-architecture.pdf, id=369, 609.23605pt x 404.47108pt>
|
||||
File: graphics/client-server-architecture.pdf Graphic file (type pdf)
|
||||
<use graphics/client-server-architecture.pdf>
|
||||
Package pdftex.def Info: graphics/client-server-architecture.pdf used on input
|
||||
line 703.
|
||||
line 694.
|
||||
(pdftex.def) Requested size: 409.50119pt x 271.8706pt.
|
||||
[27] [28 <./graphics/client-server-architecture.pdf>]
|
||||
Overfull \hbox (80.87257pt too wide) in paragraph at lines 741--742
|
||||
\T1/lmr/m/n/12 Program kli-enta se skládá z t°ídy \T1/pcr/m/n/12 World\T1/lmr/m
|
||||
/n/12 , která re-pre-zen-tuje stav a \T1/pcr/m/n/12 ClientWorldController\T1/lm
|
||||
r/m/n/12 ,
|
||||
[]
|
||||
|
||||
|
||||
Overfull \hbox (4.53065pt too wide) in paragraph at lines 741--742
|
||||
\T1/lmr/m/n/12 která ob-sa-huje jed-no-du²²í °í-dící lo-giku. �í-dící lo-gika p
|
||||
o-sbírá kaº-dou ite-raci vstupy,
|
||||
[]
|
||||
! Undefined control sequence.
|
||||
l.732 ...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
|
||||
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||
and I'll forget about whatever was undefined.
|
||||
|
||||
[29]
|
||||
|
||||
LaTeX Warning: Reference `sec:quicr' on page 30 undefined on input line 767.
|
||||
LaTeX Warning: Reference `sec:quicr' on page 30 undefined on input line 758.
|
||||
|
||||
|
||||
Overfull \hbox (8.12425pt too wide) in paragraph at lines 779--780
|
||||
Overfull \hbox (8.12425pt too wide) in paragraph at lines 770--771
|
||||
\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 779--780
|
||||
Overfull \hbox (20.39532pt too wide) in paragraph at lines 770--771
|
||||
[][][][][][][][][]\T1/lmr/m/n/12 , [][][][] a [][][][]. První me-toda na-staví
|
||||
pro kon-cový bod []
|
||||
[]
|
||||
@@ -1702,107 +1693,106 @@ pro kon-cov
|
||||
[30]
|
||||
|
||||
LaTeX Warning: Reference `code:entity_spawn_message' on page 31 undefined on in
|
||||
put line 794.
|
||||
put line 785.
|
||||
|
||||
[31] [32]
|
||||
<graphics/grafana.png, id=428, 2813.51125pt x 913.4125pt>
|
||||
<graphics/grafana.png, id=417, 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 834.
|
||||
Package pdftex.def Info: graphics/grafana.png used on input line 825.
|
||||
(pdftex.def) Requested size: 409.50119pt x 132.9362pt.
|
||||
[33 <./graphics/grafana.png>]
|
||||
<graphics/300playerstrace.png, id=436, 1348.03625pt x 397.485pt>
|
||||
<graphics/300playerstrace.png, id=425, 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 860.
|
||||
Package pdftex.def Info: graphics/300playerstrace.png used on input line 851.
|
||||
(pdftex.def) Requested size: 409.50119pt x 120.74449pt.
|
||||
[34 <./graphics/300playerstrace.png>]
|
||||
[35]
|
||||
<graphics/quicr_handshake.pdf, id=452, 337.26pt x 246.9225pt>
|
||||
<graphics/quicr_handshake.pdf, id=439, 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 941.
|
||||
Package pdftex.def Info: graphics/quicr_handshake.pdf used on input line 932.
|
||||
(pdftex.def) Requested size: 409.50119pt x 299.82079pt.
|
||||
|
||||
Overfull \hbox (3.49525pt too wide) in paragraph at lines 951--952
|
||||
[36] [37 <./graphics/quicr_handshake.pdf>]
|
||||
Overfull \hbox (3.49525pt too wide) in paragraph at lines 942--943
|
||||
[]\T1/lmr/m/n/12 Spolehlivost °e²í kom-po-nenta [][][][], která si udr-ºuje fro
|
||||
ntu rámc·,
|
||||
[]
|
||||
|
||||
[36] [37 <./graphics/quicr_handshake.pdf>] [38]
|
||||
<graphics/latencycomparison.pdf, id=481, 462.52798pt x 346.89601pt>
|
||||
[38]
|
||||
<graphics/latencycomparison.pdf, id=464, 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 100
|
||||
2.
|
||||
Package pdftex.def Info: graphics/latencycomparison.pdf used on input line 993
|
||||
.
|
||||
(pdftex.def) Requested size: 327.60219pt x 245.71564pt.
|
||||
<graphics/integrationcomparison.pdf, id=482, 462.52798pt x 346.89601pt>
|
||||
<graphics/integrationcomparison.pdf, id=465, 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
|
||||
1010.
|
||||
1001.
|
||||
(pdftex.def) Requested size: 327.60219pt x 245.71564pt.
|
||||
<graphics/playerbenchmark.png, id=485, 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 1022.
|
||||
|
||||
(pdftex.def) Requested size: 204.7506pt x 129.84302pt.
|
||||
[39] [40 <./graphics/latencycomparison.pdf> <./graphics/integrationcomparison.
|
||||
pdf>]
|
||||
<graphics/playerbenchmark.png, id=558, 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 1013.
|
||||
|
||||
(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 1040.
|
||||
Package pdftex.def Info: graphics/300playerstrace.png used on input line 1031.
|
||||
|
||||
(pdftex.def) Requested size: 409.50119pt x 120.74449pt.
|
||||
[41 <./graphics/playerbenchmark.png>]
|
||||
<graphics/ecs_optimization_tracy_01.png, id=586, 1707.37875pt x 472.76625pt>
|
||||
<graphics/ecs_optimization_tracy_01.png, id=567, 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 1051.
|
||||
line 1042.
|
||||
(pdftex.def) Requested size: 409.50119pt x 113.38686pt.
|
||||
<graphics/ecs_optimization_tracy_02.png, id=587, 1196.47pt x 583.17876pt>
|
||||
<graphics/ecs_optimization_tracy_02.png, id=568, 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 1058.
|
||||
line 1049.
|
||||
(pdftex.def) Requested size: 409.50119pt x 199.59514pt.
|
||||
[42 <./graphics/ecs_optimization_tracy_01.png> <./graphics/ecs_optimization_tr
|
||||
acy_02.png>]
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 1099--1099
|
||||
[42 <./graphics/ecs_optimization_tracy_01.png>] [43 <./graphics/ecs_optimizati
|
||||
on_tracy_02.png>]
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 1090--1090
|
||||
[]|\T1/lmr/m/n/12 Název
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 1103--1103
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 1094--1094
|
||||
[]|\T1/lmr/m/n/12 Fixní
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 1105--1105
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 1096--1096
|
||||
[]|\T1/lmr/m/n/12 Hashovací
|
||||
[]
|
||||
|
||||
[43]
|
||||
Overfull \hbox (6.44025pt too wide) in paragraph at lines 1144--1145
|
||||
[44]
|
||||
Overfull \hbox (6.44025pt too wide) in paragraph at lines 1135--1136
|
||||
[][][][][][][][][][][][][] \T1/lmr/m/n/12 a [][][][][][][][][][][][][][][][]. K
|
||||
aºdý
|
||||
[]
|
||||
|
||||
[44]
|
||||
Overfull \hbox (5.32686pt too wide) in paragraph at lines 1148--1149
|
||||
[]\T1/lmr/m/n/12 Systémovou ar-chi-tek-turu vi-díme na ob-rázku [][]3.13[][]. V
|
||||
|
||||
Overfull \hbox (5.32686pt too wide) in paragraph at lines 1139--1140
|
||||
[]\T1/lmr/m/n/12 Systémovou ar-chi-tek-turu vi-díme na ob-rázku [][]4.10[][]. V
|
||||
i-díme, ºe []
|
||||
[]
|
||||
|
||||
<graphics/zone_server_architecture.pdf, id=614, 453.61469pt x 298.23419pt>
|
||||
<graphics/zone_server_architecture.pdf, id=593, 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 1152.
|
||||
ine 1143.
|
||||
(pdftex.def) Requested size: 409.50119pt x 269.24106pt.
|
||||
[45 <./graphics/zone_server_architecture.pdf>]
|
||||
(/usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
File: lstlang1.sty 2025/11/14 1.11b listings language file
|
||||
)
|
||||
@@ -1823,13 +1813,13 @@ File: lstlang3.sty 2025/11/14 1.11b listings language file
|
||||
)
|
||||
(/usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
File: lstmisc.sty 2025/11/14 1.11b (Carsten Heinz)
|
||||
) [46] [47
|
||||
) [45] [46 <./graphics/zone_server_architecture.pdf>] [47
|
||||
|
||||
] [48
|
||||
|
||||
]
|
||||
LaTeX Font Info: Trying to load font information for TS1+lmr on input line 1
|
||||
248.
|
||||
243.
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/lm/ts1lmr.fd
|
||||
File: ts1lmr.fd 2015/05/01 v1.6.1 Font defs for Latin Modern
|
||||
@@ -1841,7 +1831,7 @@ No file kidiplom.acr.
|
||||
|
||||
]
|
||||
|
||||
LaTeX Warning: Empty bibliography on input line 1284.
|
||||
LaTeX Warning: Empty bibliography on input line 1279.
|
||||
|
||||
(./kidiplom.ind)
|
||||
enddocument/afterlastpage (AED): lastpage setting LastPage.
|
||||
@@ -1867,10 +1857,10 @@ Package logreq Info: Writing requests to 'kidiplom.run.xml'.
|
||||
|
||||
)
|
||||
Here is how much of TeX's memory you used:
|
||||
33766 strings out of 469481
|
||||
635886 string characters out of 5469631
|
||||
1771293 words of memory out of 5000000
|
||||
61633 multiletter control sequences out of 15000+600000
|
||||
33743 strings out of 469481
|
||||
635473 string characters out of 5469631
|
||||
1772286 words of memory out of 5000000
|
||||
61629 multiletter control sequences out of 15000+600000
|
||||
692285 words of font info for 87 fonts, out of 8000000 for 9000
|
||||
24 hyphenation exceptions out of 8191
|
||||
110i,11n,125p,2637b,2312s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
@@ -1878,66 +1868,6 @@ Here is how much of TeX's memory you used:
|
||||
pdfTeX warning (dest): name{section*.8} has been referenced but does not exist,
|
||||
replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.14.1} has been referenced but does
|
||||
not exist, replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.11.2} has been referenced but does
|
||||
not exist, replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.11.1} has been referenced but does
|
||||
not exist, replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.8.8} has been referenced but does n
|
||||
ot exist, replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.8.7} has been referenced but does n
|
||||
ot exist, replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.8.6} has been referenced but does n
|
||||
ot exist, replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.8.5} has been referenced but does n
|
||||
ot exist, replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.8.4} has been referenced but does n
|
||||
ot exist, replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.8.3} has been referenced but does n
|
||||
ot exist, replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.8.2} has been referenced but does n
|
||||
ot exist, replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.8.1} has been referenced but does n
|
||||
ot exist, replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.4.4} has been referenced but does n
|
||||
ot exist, replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.4.3} has been referenced but does n
|
||||
ot exist, replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.4.2} has been referenced but does n
|
||||
ot exist, replaced by a fixed one
|
||||
|
||||
|
||||
pdfTeX warning (dest): name{subsubsection.3.4.1} has been referenced but does n
|
||||
ot exist, replaced by a fixed one
|
||||
|
||||
</usr/share/texmf-dist/fonts/type1/public/lm/lmbx10.pfb></usr/share/texmf-dist/
|
||||
fonts/type1/public/lm/lmbx12.pfb></usr/share/texmf-dist/fonts/type1/public/lm/l
|
||||
mmi12.pfb></usr/share/texmf-dist/fonts/type1/public/lm/lmmi8.pfb></usr/share/te
|
||||
@@ -1948,10 +1878,10 @@ e1/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/couri
|
||||
er/ucrr8a.pfb>
|
||||
Output written on kidiplom.pdf (51 pages, 1032333 bytes).
|
||||
Output written on kidiplom.pdf (51 pages, 1030690 bytes).
|
||||
PDF statistics:
|
||||
1037 PDF objects out of 1200 (max. 8388607)
|
||||
827 compressed objects within 9 object streams
|
||||
207 named destinations out of 1000 (max. 500000)
|
||||
754 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
999 PDF objects out of 1000 (max. 8388607)
|
||||
790 compressed objects within 8 object streams
|
||||
188 named destinations out of 1000 (max. 500000)
|
||||
722 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
+41
-46
@@ -566,21 +566,22 @@ Důvod, proč nevytvořit thread pro každou odeslanou zprávu je, že vyžaduje
|
||||
|
||||
\section{Hra}
|
||||
|
||||
Pro zkoušku různých technik jsme vytvořili hru pro více hráčů. V ní budou hráči používat program klienta, kterým se připojí na společný server. Po připojení hráči uvidí herní svět, ve kterém se mohou pohybovat. Systém hry automaticky synchronizuje stavy hráčů mezi klienty. Server bude celou hru řídit a bude mít autoritu. Program klienta tento stav vykreslí svému uživateli.
|
||||
V této kapitole představíme hru, kterou jsem vyvinuli pro implementaci různých technik a jejich následného měření. Ve hře má každý hráč svou postavu, se kterou může volně pohybovat ve 3D prostoru. Hra simuluje na postavách hráčů realistickou fyziku. Pokud se do hry připojí více hráčů, tak se navzájem vidí. Každý hráč spustí program klienta, který zobrazuje stav hry a postavy hráčů v 3D prostoru. V další kapitole porovnáme plynulost pohybu a rychlost odezvy, které jsou pro hratelnost důležité.
|
||||
|
||||
Nejprve představíme, jak vypadá softwarová architektura hry jednoho hráče. Popíšeme jak vypadá herní engine a z jakých komponent se program hry skládá.
|
||||
V první části popíšeme architekturu hry a našeho enginu. Následně rozšíříme a jinak upravíme tento model pro hru více hráčů. Vytvoříme tak distribuovaný systém.
|
||||
|
||||
V další části navážeme a rozšíříme hru pro více hráčů. Představíme architekturu. První implementace využívá klient-server. Vytvořili jsme dva programy: server a klient. Podrobně popíšeme komponenty, ze kterých se skládá server a klient. Ve hře se jednotlivý hráči uvidí, budou se moct pohybovat. Budeme porovnávat plynulost pohybu a rychlost odezvy, které jsou pro hratelnost důležité.
|
||||
Naše první implementace využívá model klient-server, kde máme dva různé programy: server a klient. Podrobně popíšeme, které komponenty jsme přidali, které pouze přesunuli do programu serveru a které naopak ponechali v programu klienta.
|
||||
|
||||
Mezi hlavní prvky patří náš vlastní komunikační protokol transportní vrstvy: \uv{QUICr}. Je to obousměrný protokol pro posílání zpráv, který upravuje QUIC pro využití ve hrách. Náš protokol lépe zachycuje závislosti mezi zprávami a umožňuje posílat zprávy nespolehlivě. Díky tomu se úplně zbavuje ahead-of-line blokování.
|
||||
Mezi hlavní prvky patří náš vlastní komunikační protokol transportní vrstvy: \uv{QUICr}. Je to obousměrný protokol pro posílání zpráv jako n-tic bytů, který se inspiruje protokolem QUIC, ale upravuje ho pro lepší využití pro hry. Náš protokol lépe zachycuje závislosti mezi zprávami a umožňuje i posílat zprávy nespolehlivě. Díky tomu se úplně zbavuje ahead-of-line blokování.
|
||||
|
||||
Zjistili jsme, že důležitým vylepšením je vlastní serializace primitivních zpráv. Pokud například obsahuje pouze seznam pozic, může být vlastní serializace rozdíl mezi hratelnou a nehratelnou odezvou. Popíšeme, jak jsme rychlost měřili a jaké metody jsme pro vlastní serializaci použili.
|
||||
|
||||
Nakonec představíme i architekturu peer-to-peer, kdy umožníme, aby v systému bylo více spolupracujících serverů, které si mezi sebou budou rozdělovat práci. Zároveň porovnáme i případ, kdy není žádný autoritativní server a hráči se mezi sebou synchronizují samovolně.
|
||||
|
||||
|
||||
\subsection{Engine}
|
||||
|
||||
\subsection{Softwarová Architektura}
|
||||
Pro hru jsme vyvinuli vlastní herní engine tak, abychom mohli celý systém do hloubky upravovat. V této části popíšeme jeho základní komponenty. Implementace je v jazyce C++, protože je v tomto jazyce napsáno spousty nástrojů a knihoven právě pro vývoj her. Díky tomu se vývoj značně akceleroval. Zároveň je to vhodný jazyk pro práci na nižší úrovni, a to je důležité pro některé metody optimalizace. Engine je implementovaný jako modulární monolit. Jednotlivé moduly představíme.
|
||||
|
||||
% Vstupy od hráče -> derivace
|
||||
% Derivace + Stav -> integrace
|
||||
@@ -592,37 +593,24 @@ Nakonec představíme i architekturu peer-to-peer, kdy umožníme, aby v systém
|
||||
|
||||
Program hry jsme rozdělili na \uv{stav} a \uv{řídící logiku}. 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, truhly s poklady nebo nepřátele. 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.
|
||||
|
||||
% Stav hry reprezentujeme kompletně ve třídě \inlcpp{World}. Ta obsahuje registr z knihovny Entt. Řídící logika je ve třídě \inlcpp{WorldController}. Obsahuje smyčku, která v každé iteraci posbírá vstupy od hráče, převede je na akce a aplikuje je společně s další definovanout logikou. Například v naší hře má vstup: stisknutí klávesy W, definovaný příkaz: \uv{posuň dopředu}, která změní vektor zrychlení hráče. Dalšími prvky, které mění změnu stavu je například fyzický engine, který upravuje zrychlení podle nárazů a nebo vlivů sil, například gravitace.
|
||||
|
||||
Druhá část je řídící logika, která po iteracích mění stav hry. Tato změna může být pouze na základě stavu světa, například posune objekt, který má nenulový vektor zrychlení. Mimo to může řídící logika reagovat na údalosti. Například stisk tlačítka W je událost, který vyvolá změnu vektoru zrychlení hráče, který tlačítko stiskl. V důsledku toho se postava hráče pohne.
|
||||
|
||||
Každá iterace řídící logiky trvá přibližně stejně dlouho, většinou 1/60 sekundy nebo 1/24 sekundy. Vyšší frekvence znamená nižší odezvu a lepší plynulost. Nižší frekvence znamená menší výpočetní náročnost. Pro pomalejší hry bez rychlých akčních pasáží se využívá frekvence 24Hz a u kompetentních her i 120Hz.
|
||||
|
||||
https://www.riotgames.com/en/news/peeking-valorants-netcode
|
||||
|
||||
\subsubsection{Entity-Component-System}
|
||||
|
||||
V programu využíváme architekturu entity-component-system, která je pro hry běžná. Entity už jsme popsali výše. Ke konkrétním entitám vážeme instance komponent, které entitě dají stav. Většinou je komponenta přiřazena právě jedné entitě. Řídící logika hry se skládá ze \uv{systémů}, je řídící logika, která prochází komponenty a aktualizuje je. Systémů máme více a každý se stará o nějakou část.
|
||||
|
||||
Herní stav se skládá z \uv{entit}, které jsou v herním světě a jejich \uv{vlastností}. Každou iteraci řídící logika všechny entity aktualizuje. Některá logika může být pro dvě entity společná, nebo velmi malá. Obecně ale předpokládáme, že každá entita přidá na výpočetní náročnosti a moderní hry mohou mít miliony entit. Zároveň každá entita může být jiná.
|
||||
|
||||
Architektura her je tomu přizpůsobená. Entity tvoříme skládáním různých komponent a řídící logika mění jejich stav pomocí \uv{systému}. Systém se skládá z iterátoru přes n-tici typů komponent a aplikační funkce na prvky této n-tice. Výhody jsou téměř žádná virtualizovaná volání, která by se ve velkém počtu negativně projevila na výkonu a lepší \uv{datová lokalita}. To znamená, že procesor je schopný lépe předpovědět, kterou část paměti si má připravit dopředu, protože na ni bude provádět výpočet. Horší lokalita znamená, že bude často načítat zbytečné části, které nepotřebuje a výpočet bude delší.
|
||||
|
||||
https://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/
|
||||
|
||||
Této architektuře se říká entity-component-system, zkráceně ECS. Existují různé knihovny, které poskytují registry a nástroje pro tvorbu systémů, jako například Entt, kterou využíváme my.
|
||||
|
||||
|
||||
|
||||
\subsection{Engine}
|
||||
|
||||
Pro hru jsme vyvinuly vlastní herní engine tak, abychom mohli celý systém do hloubky upravovat. Implementace je v jazyce C++, protože je v tomto jazyce napsáno spousty nástrojů a knihoven právě pro vývoj her. Díky tomu se vývoj značně akceleroval. Zároveň je to vhodný jazyk pro práci na nižší úrovni, a to je důležité některé metody optimalizace. Engine je implementovaný jako modulární monolit. Jednotlivé moduly představíme.
|
||||
|
||||
\subsubsection{Fyzický engine}
|
||||
|
||||
Hra je 3D a chtěli jsme simulovat otevřený svět, ve kterém platí zákony fyziky. Pro simulaci jsme využili existující fyzický engine \uv{Jolt} a zabalili ho do modulu. Jolt je populární projekt, který je využíván například v Horizon: Forbidden West nebo Death Stranding 2.
|
||||
|
||||
Pro použití jsme vytvořili instanci fyzického světa, do kterého naskládáme objekty a jejich vlastnosti, jako hmotnost a tvar. Zavoláním metody pro aktualizaci engine posune stav entit (zrychlení a pozice). Vše jsme obalili do \inlcpp{JoltPhysicsWorld}.
|
||||
|
||||
Jolt umí využít více vláken procesoru a podporuje \uv{rollback}, který umožňuje vracet stav v historii simulace dozadu. Je to důležitá věc pro hry více hráčů v případě, že se stav dvou vrcholů v systému neshoduje i když by měl.
|
||||
Jolt umí využít více vláken procesoru a podporuje \uv{rollback}, který umožňuje vracet stav v historii simulace dozadu. Je to důležitá věc pro hry více hráčů a obecně distribuovaných systémů, pro řešení desynchronizace.
|
||||
|
||||
\subsubsection{Vykreslování}
|
||||
|
||||
@@ -632,9 +620,15 @@ Mezi operacemi v grafu definujeme závislosti. Díky tomu můžeme definovat ope
|
||||
|
||||
V našem případě máme právě operaci pro vykreslení statických objektů, jako povrchu, po kterém se hráči pohybují apod. Druhá operace vykreslí samotné hráče a jiné dynamické objekty. Poslední operaci vykreslí uživatelské rozhraní obsahující různé nástroje pro různé ladění programu.
|
||||
|
||||
\subsubsection{Entt}
|
||||
\subsubsection{Entity-Component-System}
|
||||
|
||||
Pro ECS využíváme knihovnu \uv{Entt}, která umožňuje vytvářet registry entit a jejich komponent a aplikovat na ně funkce. Entita je v tomto případě pouze unikátně identifikační číslo a komponenta je libovolný typ. V registru pak můžeme vytvářet \uv{pohledy} na n-tici typů komponent, které jsou seznam právě všech entit v registru, které všechny tyto komponenty mají. Ten můžeme procházet a libovolně měnit atributy komponent.
|
||||
V programu využíváme architekturu entity-component-system, zkráceně ECS, která je pro hry běžná. Entity už jsme popsali výše. Ke konkrétním entitám vážeme instance komponent, které entitě dají stav. Většinou je komponenta přiřazena právě jedné entitě. Poslední částí jsou systémy, které reprezentují řídící logiku. Systém je definován funkcí, která prochází entity, které splňují definovanou podmínku a mění stav její komponent. Tato podmínka většinou pouze omezuje na entity, které mají přiřazené komponenty pro určité typy. Systém může například simulovat fyziku, a to přičítáním zrychlení k pozici. K tomu definuje podmínku, která procházenou množinu omezí na entity, které mají potřebné komponenty. Těmi jsou komponenta transformace a komponenta zrychlení.
|
||||
|
||||
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/
|
||||
|
||||
Pro ECS využíváme knihovnu \uv{Entt}, která usnadňuje definici entit, přiřazování komponent a definici systémů. Entita je v této knihovně pouze unikátně identifikační číslo a komponenta je libovolný typ. V registru pak můžeme vytvářet \uv{pohledy} na n-tici typů komponent, které jsou seznam právě všech entit v registru, které všechny tyto komponenty mají. Ten můžeme procházet a libovolně měnit atributy komponent. Příklad použití vidíme na TODO, kde nejprve vytvoříme registr do kterého přidáme novou entity a přiřadíme ji komponentu typu Transform. Nakonec definujeme pohled na všechny entity, které mají komponentu obou typů: Transform i CharacterBody. Před tento pohled iterujeme a v každé iteraci kopírujeme.
|
||||
|
||||
\begin{kicode}{cpp}{}{Příklad použití knihovny Entt}
|
||||
entt::registry registry;
|
||||
@@ -675,28 +669,25 @@ Představíme komponenty, které jsme pro hru definovali a proč:
|
||||
|
||||
|
||||
|
||||
\subsubsection{Stav hry}
|
||||
|
||||
% 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.
|
||||
|
||||
Stav hry reprezentujeme kompletně ve třídě \inlcpp{World}. Ta obsahuje registr z knihovny Entt. Řídící logika je ve třídě \inlcpp{WorldController}. Obsahuje smyčku, která v každé iteraci posbírá vstupy od hráče, převede je na akce a aplikuje je společně s další definovanout logikou. Například v naší hře má vstup: stisknutí klávesy W, definovaný příkaz: \uv{posuň dopředu}, která změní vektor zrychlení hráče. Dalšími prvky, které mění změnu stavu je například fyzický engine, který upravuje zrychlení podle nárazů a nebo vlivů sil, například gravitace.
|
||||
|
||||
% Budou existovat dvě verze: pro hru jednoho hráče a pro hru více hráčů. Verze pro jednoho hráče bude vstupy číst přímo z periferií od hráče. Druhá verze bude tyto vstupy transformovat na příkazy, a posílat je na server. Aktualizovat stav světa bude až v moment, co od serveru dostane snapshot nebo událost.
|
||||
|
||||
\subsection{Hra více hráčů}
|
||||
\newpage
|
||||
|
||||
Nejprve her více hráčů je často klient-server model, protože poskytuje nižší celkovou odezvu. Stav hry řídí autoritativní server, který ho replikuje klientům a ti ho zobrazí hráči. Autorita serveru zjednodušuje konzistenci a detekci podvádění. Klienti na server neposílají jak vypadá jejich stav, ale pouze akce, které chtějí provést. Příkladem může být akce pohybu dopředu, kterou vyvolal hráč. Server rozesílá klientům snapshoty pro průběžně měnící se stav (např. pozice entit) a události pro jednorázové akce (např. událost o konci hry).
|
||||
\section{Hra více hráčů}
|
||||
|
||||
Druhá varianta je model peer-to-peer. Model je složitější z hlediska synchronizace. Účastníci si mezi sebou posílají akce a každý si udržuje svůj stav, který nikomu nereplikuje. Je potřeba, aby každý měl kompletní historii akcí všech účastníků systému ve správném pořadí. Tomuto se říká \uv{event-sourcing}. Nevýhoda je, že každý hráč
|
||||
V předchozí části jsme představili základní implementaci hry pro jednoho hráče. V této části ukážeme, jak jsme hru rozšířili na síťový systém a umožnili hru více hráčů. To znamená, že více hráčů se může připojit do stejné instance hry a navzájem spolu interagovat.
|
||||
|
||||
Navíc musí výsledek každé aplikace akce být všude stejný. Komplikací může být fyzický engine, který 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ý seed a musíme si dát pozor, protože na různých platformách může aritmetrika s plovoucí desetinou čárkou dopadnout trochu jinak. I malé rozdíly by se mohli rychle projevit.
|
||||
Jako první jsme implementovali model klient-server. Diagram systému vidíme na obrázku \ref{fig:client_server_architecture}. Stav hry řídí autoritativní server, který ho replikuje klientům posíláním snapshotů. Klient zobrazuje stav hry hráči, stejně jako v případě hry jednoho hráče. Autorita serveru zjednodušuje konzistenci a detekci podvádění. Klienti na server neposílají svůj stav, ale pouze akce, které chtějí provést. Příkladem může být akce pohybu dopředu, kterou vyvolal hráč. Server má možnost akce odmítnout a libovolně interpretovat, protože konečné slovo má právě server. Server rozesílá klientům zprávy zvané snapshoty, které obsahují aktuální stav hry (např. pozice entit) a události pro jednorázové akce (např. událost o konci hry).
|
||||
|
||||
\subsection{Klient-Server architektura}
|
||||
Druhá varianta je model peer-to-peer. Ten 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}. Nevýhoda je, že všichni hráči musejí mít historii stejnou, jinak dochází k desynchronizaci.
|
||||
|
||||
Pro systém jsem zvolili model klient-server, který je pro hry vhodnější, protože usnadňuje synchronizaci. V té jsou dva programy: server a klienta. Řídící logika probíhá na serveru, a ten svůj stav synchronizuje na klienty. Každý hráč, který chce hrát, musí mít svůj proces pro klienta a připojit se na server. Aplikace klienta na server posílá akce od hráče a zobrazuje aktuální stav hráči, který ze serveru přišel.
|
||||
Druhá komplikace 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.
|
||||
|
||||
Každá akce, která přijde na server, musí být autorizována. Například ověřit, že se hráč nestaží interagovat s objektem, od kterého je moc daleko. Pokud vše proběhne v pořádku, bude přidána do fronty pro aktuální iteraci, kterou pak celou aplikuje na stav podle definované logiky. V případě, že autorizace selže, může server, s určitou tolerancí, klienta odpojit. Svůj stav průběžně replikuje klientům. Frekvence závisí na typu hry a pohybuje se od 20Hz pro pomalejší nekompetentní hry, až po 120Hz pro e-sport hry, jako například hra Valorant TODO ODKAZ.
|
||||
Řídící logiku jsme rozdělili na Server World Controller a Client World Controller. Toto rozdělení nás motivovalo dále oddělit integraci světa do vlastní třídy tak, aby logika mohla být sdílená mezi ovladačem pro jednoho hráče a pro více hráčů.
|
||||
|
||||
% Každá akce, která přijde na server, musí být autorizována. Například ověřit, že se hráč nestaží interagovat s objektem, od kterého je moc daleko. Pokud vše proběhne v pořádku, bude přidána do fronty pro aktuální iteraci, kterou pak celou aplikuje na stav podle definované logiky. V případě, že autorizace selže, může server, s určitou tolerancí, klienta odpojit. Svůj stav průběžně replikuje klientům. Frekvence závisí na typu hry a pohybuje se od 20Hz pro pomalejší nekompetentní hry, až po 120Hz pro e-sport hry, jako například hra Valorant TODO ODKAZ.
|
||||
|
||||
\begin{figure}
|
||||
\begin{center}
|
||||
@@ -718,13 +709,13 @@ Obě tyto komponenty, společně se stavem a řídící logikou, jsou ve tříd
|
||||
|
||||
\subsubsection{Registr klientů}
|
||||
|
||||
Komponenta, která spravuje spojení s hráči, se nazývá \uv{registr spojení}. Slouží jako sifon pro všechny zprávy, které klienti odesílají. Zároveň z ní lze zjistit kdo se právě připojil a kdo odpojil. K tomu slouží metody: \inlcpp{\\popDisconnectedPlayers} a \inlcpp{\\popConnectedPlayers}. Udržuje seznam nových připojení od posledního zavolání \inlcpp{\\popConnectedPlayers}.
|
||||
Komponenta, která spravuje a udržuje spojení s klienty hráčů, se nazývá \uv{registr klientů}. Slouží jako sifon pro všechny zprávy, které klienti odesílají. Zároveň z ní lze zjistit kdo se právě připojil a kdo odpojil. K tomu slouží metody: \inlcpp{popDisconnectedPlayers} a \inlcpp{popConnectedPlayers}. Udržuje seznam nových připojení od posledního zavolání \inlcpp{popConnectedPlayers}.
|
||||
|
||||
Třída si u každého klienta hlídá počet po sobě jdoucích selhání. Jakmile počet překročí určitou hranici, např. 5 chyb, relaci s klientem ukončí. Díky tomu, že zbytek aplikace přímo nepoužívá n-tici klientů, nemusí odpojení řešit. Pro získání seznamu existuje metoda \inlcpp{\\getClients}.
|
||||
Třída si u každého klienta hlídá počet po sobě jdoucích selhání. Jakmile počet překročí určitou hranici, např. 5 chyb, relaci s klientem ukončí. Tato komponenty skrývá samotné připojení s klientem a zbytek systému tak odpojení a připojení nemusí řešit. Pro získání seznamu existuje metoda \inlcpp{getClients}.
|
||||
|
||||
\subsubsection{Server Replikátoru}
|
||||
|
||||
Komponenta, která se snaží synchronizovat stav klientů s lokálním stavem na serveru, se nazývá \uv{replikátor}. Pro každého klienta si drží seznam entit, které musí danému klientovi synchronizovat, aby svůj úkol splnil. V případě klient-server architektury odesílá server svůj stav klientům. Základní implementace by posílala každý snímek kompletní stav entity se všemi komponentami. Lepší varianta je posílat pouze změny. Pokud se například pozice nezmění, není třeba posílat stejnou pozici jako minule. Na druhé straně u klienta máme klienta replikátoru. Ten se stará o dekódování zpráv a správné aktualizaci stavu.
|
||||
Komponenta, která se snaží synchronizovat stav klientů s lokálním stavem na serveru, se nazývá \uv{replikátor}. Pro každého klienta si drží seznam entit, které musí danému klientovi synchronizovat, aby svůj úkol splnil. Tento seznam entit lze z venku nastavovat, většinou komponentou pro správu zájmů, kterou představíme v další podkapitole. Základní implementace by posílala každý snímek kompletní stav entity se všemi komponentami. Lepší varianta je posílat pouze změněnou část stavu. Pokud se například pozice entity $X$ nezmění, není třeba posílat stejnou pozici pro entitu $X$ jako minule. Na druhé straně u klienta máme klienta replikátoru. Ten se stará o dekódování zpráv a správné aktualizaci stavu.
|
||||
|
||||
\subsubsection{Správa zájmů}
|
||||
|
||||
@@ -738,7 +729,7 @@ Dotazu na všechny body, které jsou dostatečně blízko od konkrétního bodu,
|
||||
|
||||
\subsection{Klient}
|
||||
|
||||
Program klienta se skládá z třídy \texttt{World}, která reprezentuje stav a \texttt{ClientWorldController}, která obsahuje jednodušší řídící logiku. Řídící logika posbírá každou iteraci vstupy, převede je na akce a ty odešle na server.
|
||||
Program klienta se skládá z třídy \inlcpp{World}, která reprezentuje stav a \inlcp{ClientWorldController}, která obsahuje jednodušší řídící logiku. Řídící logika posbírá každou iteraci vstupy, převede je na akce a ty odešle na server.
|
||||
|
||||
\subsubsection{Klient Replikátoru}
|
||||
|
||||
@@ -1155,13 +1146,17 @@ Systémovou architekturu vidíme na obrázku \ref{fig:zone_cluster_architecture}
|
||||
\end{figure}
|
||||
|
||||
|
||||
\subsection{Komprese}
|
||||
|
||||
Poslední optimalizací, kterou jsem pro přenos informací použili, byla komprese. Nejprve jsme nahradili byte buffer, který pracuje pouze s byty, bit bufferem, který nám umožnil pracovat s jednotlivými bity.
|
||||
|
||||
\subsubsection{Bit Buffer}
|
||||
\section{Výsledná hra}
|
||||
|
||||
V této kapitole představíme hru.
|
||||
|
||||
|
||||
|
||||
\section{Měřění}
|
||||
|
||||
|
||||
Snadným zmenšením paketů je zaměřit se na bity namísto bytů. Původně jsem nově příchozí datagramy obalil pomocí ByteBuffer, který umožnil dekódovat postupně příchozí byty. Často ale potřebujeme mít možnost zakódovat informaci pomocí jednotlivých bitů.
|
||||
|
||||
|
||||
|
||||
|
||||
+43
-47
@@ -23,53 +23,49 @@
|
||||
\contentsline {subsubsection}{\numberline {2.8.3}Async/Await}{21}{subsubsection.2.8.3}%
|
||||
\contentsline {subsubsection}{\numberline {2.8.4}Boost Asio}{22}{subsubsection.2.8.4}%
|
||||
\contentsline {section}{\numberline {3}Hra}{23}{section.3}%
|
||||
\contentsline {subsection}{\numberline {3.1}Softwarová Architektura}{23}{subsection.3.1}%
|
||||
\contentsline {subsubsection}{\numberline {3.1.1}Entity-Component-System}{24}{subsubsection.3.1.1}%
|
||||
\contentsline {subsection}{\numberline {3.2}Engine}{24}{subsection.3.2}%
|
||||
\contentsline {subsubsection}{\numberline {3.2.1}Fyzický engine}{24}{subsubsection.3.2.1}%
|
||||
\contentsline {subsubsection}{\numberline {3.2.2}Vykreslování}{25}{subsubsection.3.2.2}%
|
||||
\contentsline {subsubsection}{\numberline {3.2.3}Entt}{25}{subsubsection.3.2.3}%
|
||||
\contentsline {subsubsection}{\numberline {3.2.4}Stav hry}{26}{subsubsection.3.2.4}%
|
||||
\contentsline {subsection}{\numberline {3.3}Hra více hráčů}{26}{subsection.3.3}%
|
||||
\contentsline {subsection}{\numberline {3.4}Klient-Server architektura}{27}{subsection.3.4}%
|
||||
\contentsline {subsection}{\numberline {3.5}Server}{27}{subsection.3.5}%
|
||||
\contentsline {subsubsection}{\numberline {3.5.1}Registr klientů}{27}{subsubsection.3.5.1}%
|
||||
\contentsline {subsubsection}{\numberline {3.5.2}Server Replikátoru}{28}{subsubsection.3.5.2}%
|
||||
\contentsline {subsubsection}{\numberline {3.5.3}Správa zájmů}{29}{subsubsection.3.5.3}%
|
||||
\contentsline {subsection}{\numberline {3.6}Klient}{29}{subsection.3.6}%
|
||||
\contentsline {subsubsection}{\numberline {3.6.1}Klient Replikátoru}{29}{subsubsection.3.6.1}%
|
||||
\contentsline {subsubsection}{\numberline {3.6.2}Interpolace}{29}{subsubsection.3.6.2}%
|
||||
\contentsline {subsubsection}{\numberline {3.6.3}Rollback}{29}{subsubsection.3.6.3}%
|
||||
\contentsline {subsection}{\numberline {3.7}Posílání zpráv}{30}{subsection.3.7}%
|
||||
\contentsline {subsubsection}{\numberline {3.7.1}Kódování zpráv}{30}{subsubsection.3.7.1}%
|
||||
\contentsline {subsubsection}{\numberline {3.7.2}Implementace}{30}{subsubsection.3.7.2}%
|
||||
\contentsline {subsubsection}{\numberline {3.7.3}Detekce a náprava chyb}{30}{subsubsection.3.7.3}%
|
||||
\contentsline {subsection}{\numberline {3.8}Serializace}{31}{subsection.3.8}%
|
||||
\contentsline {subsection}{\numberline {3.9}Metriky}{32}{subsection.3.9}%
|
||||
\contentsline {subsubsection}{\numberline {3.9.1}PostgreSQL}{32}{subsubsection.3.9.1}%
|
||||
\contentsline {subsubsection}{\numberline {3.9.2}TimescaleDB}{32}{subsubsection.3.9.2}%
|
||||
\contentsline {subsubsection}{\numberline {3.9.3}Grafana}{33}{subsubsection.3.9.3}%
|
||||
\contentsline {subsubsection}{\numberline {3.9.4}Orchestrace}{33}{subsubsection.3.9.4}%
|
||||
\contentsline {subsubsection}{\numberline {3.9.5}ImGui}{33}{subsubsection.3.9.5}%
|
||||
\contentsline {subsubsection}{\numberline {3.9.6}Tracy}{34}{subsubsection.3.9.6}%
|
||||
\contentsline {subsubsection}{\numberline {3.9.7}Konkrétní metriky}{34}{subsubsection.3.9.7}%
|
||||
\contentsline {subsubsection}{\numberline {3.9.8}Sbírání v reálném čase}{35}{subsubsection.3.9.8}%
|
||||
\contentsline {subsection}{\numberline {3.10}Protokol QUICr}{35}{subsection.3.10}%
|
||||
\contentsline {subsubsection}{\numberline {3.10.1}Rámec}{35}{subsubsection.3.10.1}%
|
||||
\contentsline {subsubsection}{\numberline {3.10.2}Handshake}{36}{subsubsection.3.10.2}%
|
||||
\contentsline {subsubsection}{\numberline {3.10.3}Spolehlivost}{36}{subsubsection.3.10.3}%
|
||||
\contentsline {subsubsection}{\numberline {3.10.4}Enkodér}{38}{subsubsection.3.10.4}%
|
||||
\contentsline {subsubsection}{\numberline {3.10.5}Testování}{38}{subsubsection.3.10.5}%
|
||||
\contentsline {subsubsection}{\numberline {3.10.6}Měření}{39}{subsubsection.3.10.6}%
|
||||
\contentsline {subsection}{\numberline {3.11}Optimalizace replikátoru}{41}{subsection.3.11}%
|
||||
\contentsline {subsection}{\numberline {3.12}Optimalizace manažera zájmů}{43}{subsection.3.12}%
|
||||
\contentsline {subsubsection}{\numberline {3.12.1}Congestion control}{44}{subsubsection.3.12.1}%
|
||||
\contentsline {subsubsection}{\numberline {3.12.2}Bandwidth control}{44}{subsubsection.3.12.2}%
|
||||
\contentsline {subsection}{\numberline {3.13}Sharding}{44}{subsection.3.13}%
|
||||
\contentsline {subsection}{\numberline {3.14}Horizontální škálování}{44}{subsection.3.14}%
|
||||
\contentsline {subsection}{\numberline {3.15}Komprese}{45}{subsection.3.15}%
|
||||
\contentsline {subsubsection}{\numberline {3.15.1}Bit Buffer}{46}{subsubsection.3.15.1}%
|
||||
\contentsline {subsection}{\numberline {3.16}Závěry}{46}{subsection.3.16}%
|
||||
\contentsline {subsection}{\numberline {3.1}Engine}{23}{subsection.3.1}%
|
||||
\contentsline {subsubsection}{\numberline {3.1.1}Fyzický engine}{24}{subsubsection.3.1.1}%
|
||||
\contentsline {subsubsection}{\numberline {3.1.2}Vykreslování}{24}{subsubsection.3.1.2}%
|
||||
\contentsline {subsubsection}{\numberline {3.1.3}Entity-Component-System}{24}{subsubsection.3.1.3}%
|
||||
\contentsline {section}{\numberline {4}Hra více hráčů}{27}{section.4}%
|
||||
\contentsline {subsection}{\numberline {4.1}Server}{27}{subsection.4.1}%
|
||||
\contentsline {subsubsection}{\numberline {4.1.1}Registr klientů}{28}{subsubsection.4.1.1}%
|
||||
\contentsline {subsubsection}{\numberline {4.1.2}Server Replikátoru}{29}{subsubsection.4.1.2}%
|
||||
\contentsline {subsubsection}{\numberline {4.1.3}Správa zájmů}{29}{subsubsection.4.1.3}%
|
||||
\contentsline {subsection}{\numberline {4.2}Klient}{29}{subsection.4.2}%
|
||||
\contentsline {subsubsection}{\numberline {4.2.1}Klient Replikátoru}{29}{subsubsection.4.2.1}%
|
||||
\contentsline {subsubsection}{\numberline {4.2.2}Interpolace}{29}{subsubsection.4.2.2}%
|
||||
\contentsline {subsubsection}{\numberline {4.2.3}Rollback}{30}{subsubsection.4.2.3}%
|
||||
\contentsline {subsection}{\numberline {4.3}Posílání zpráv}{30}{subsection.4.3}%
|
||||
\contentsline {subsubsection}{\numberline {4.3.1}Kódování zpráv}{30}{subsubsection.4.3.1}%
|
||||
\contentsline {subsubsection}{\numberline {4.3.2}Implementace}{31}{subsubsection.4.3.2}%
|
||||
\contentsline {subsubsection}{\numberline {4.3.3}Detekce a náprava chyb}{31}{subsubsection.4.3.3}%
|
||||
\contentsline {subsection}{\numberline {4.4}Serializace}{31}{subsection.4.4}%
|
||||
\contentsline {subsection}{\numberline {4.5}Metriky}{32}{subsection.4.5}%
|
||||
\contentsline {subsubsection}{\numberline {4.5.1}PostgreSQL}{33}{subsubsection.4.5.1}%
|
||||
\contentsline {subsubsection}{\numberline {4.5.2}TimescaleDB}{33}{subsubsection.4.5.2}%
|
||||
\contentsline {subsubsection}{\numberline {4.5.3}Grafana}{33}{subsubsection.4.5.3}%
|
||||
\contentsline {subsubsection}{\numberline {4.5.4}Orchestrace}{34}{subsubsection.4.5.4}%
|
||||
\contentsline {subsubsection}{\numberline {4.5.5}ImGui}{34}{subsubsection.4.5.5}%
|
||||
\contentsline {subsubsection}{\numberline {4.5.6}Tracy}{34}{subsubsection.4.5.6}%
|
||||
\contentsline {subsubsection}{\numberline {4.5.7}Konkrétní metriky}{35}{subsubsection.4.5.7}%
|
||||
\contentsline {subsubsection}{\numberline {4.5.8}Sbírání v reálném čase}{35}{subsubsection.4.5.8}%
|
||||
\contentsline {subsection}{\numberline {4.6}Protokol QUICr}{35}{subsection.4.6}%
|
||||
\contentsline {subsubsection}{\numberline {4.6.1}Rámec}{36}{subsubsection.4.6.1}%
|
||||
\contentsline {subsubsection}{\numberline {4.6.2}Handshake}{36}{subsubsection.4.6.2}%
|
||||
\contentsline {subsubsection}{\numberline {4.6.3}Spolehlivost}{38}{subsubsection.4.6.3}%
|
||||
\contentsline {subsubsection}{\numberline {4.6.4}Enkodér}{38}{subsubsection.4.6.4}%
|
||||
\contentsline {subsubsection}{\numberline {4.6.5}Testování}{39}{subsubsection.4.6.5}%
|
||||
\contentsline {subsubsection}{\numberline {4.6.6}Měření}{39}{subsubsection.4.6.6}%
|
||||
\contentsline {subsection}{\numberline {4.7}Optimalizace replikátoru}{41}{subsection.4.7}%
|
||||
\contentsline {subsection}{\numberline {4.8}Optimalizace manažera zájmů}{43}{subsection.4.8}%
|
||||
\contentsline {subsubsection}{\numberline {4.8.1}Congestion control}{44}{subsubsection.4.8.1}%
|
||||
\contentsline {subsubsection}{\numberline {4.8.2}Bandwidth control}{44}{subsubsection.4.8.2}%
|
||||
\contentsline {subsection}{\numberline {4.9}Sharding}{44}{subsection.4.9}%
|
||||
\contentsline {subsection}{\numberline {4.10}Horizontální škálování}{44}{subsection.4.10}%
|
||||
\contentsline {section}{\numberline {5}Výsledná hra}{45}{section.5}%
|
||||
\contentsline {section}{\numberline {6}Měřění}{45}{section.6}%
|
||||
\contentsline {subsection}{\numberline {6.1}Závěry}{45}{subsection.6.1}%
|
||||
\contentsline {section}{Z\'av\v er}{47}{section*.3}%
|
||||
\babel@toc {czech}{}\relax
|
||||
\babel@toc {czech}{}\relax
|
||||
|
||||
Reference in New Issue
Block a user