Commit bfdc9b3c authored by Adam Štěpánek's avatar Adam Štěpánek
Browse files

Add custom-theme

parent 8fd6c125
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -14,6 +14,8 @@
!*.csv
!*.csv
!*.ad
!*.ad
!*.svg
!*.svg
!*.yml
!*.sh


# reignore binaries
# reignore binaries
bin/
bin/

custom-theme.yml

0 → 100644
+5 −0
Original line number Original line Diff line number Diff line
extends: default
page:
  size: A4
heading:
  h1-font-size: 24

mkpdf.sh

0 → 100755
+3 −0
Original line number Original line Diff line number Diff line
#! /bin/bash

asciidoctor-pdf -a pdf-theme=./custom-theme.yml readme.ad
+26 −19
Original line number Original line Diff line number Diff line
= Modelování a simulace: Secret Hitler
= Modelování a simulace: Secret Hitler


Autoři: Adam Ivora, Adam Štěpánek
[.lead.text-center]
Adam Ivora, Adam Štěpánek


[.text-center]
*IV109, jaro 2020*

== Úvod

[.unlead]
Secret Hitler je sociálně dedukční stolní hra pro 5 - 10 hráčů. Hráčům jsou náhodně přiděleny role liberálů, fašistů a
Secret Hitler je sociálně dedukční stolní hra pro 5 - 10 hráčů. Hráčům jsou náhodně přiděleny role liberálů, fašistů a
Hitlera. Fašisté znají role všech hráčů ve hře, liberálové a Hitler znají jen svou roli. Hraje se na kola -- volební
Hitlera. Fašisté znají role všech hráčů ve hře, liberálové a Hitler znají jen svou roli. Hraje se na kola -- volební
období -- během kterých je zvolena vláda a prosazen fašistický nebo liberální zákon. Cílem fašistů je prosadit 6
období -- během kterých je zvolena vláda a prosazen fašistický nebo liberální zákon. Cílem fašistů je prosadit 6
@@ -15,7 +22,7 @@ Z pohledu teorie her se dá Secret Hitler považovat za dynamickou hru s nekompl
(liberál, fašista, Hitler) a jejich cíl hry, ale neznají typy, a tím pádem cíle, ostatních hráčů, jen jejich
(liberál, fašista, Hitler) a jejich cíl hry, ale neznají typy, a tím pádem cíle, ostatních hráčů, jen jejich
pravděpodobnostní distribuci.
pravděpodobnostní distribuci.


== Problém
=== Problém


Naším cílem bylo podívat se na hru jak z pohledu hráčů, tak z pohledu vývojářů: prozkoumat herní rovnováhu, zanalyzovat
Naším cílem bylo podívat se na hru jak z pohledu hráčů, tak z pohledu vývojářů: prozkoumat herní rovnováhu, zanalyzovat
strategie, které známe z vlastní zkušenosti, a zjistit, jak změna některých parametrů hry ovlivní její výsledek.
strategie, které známe z vlastní zkušenosti, a zjistit, jak změna některých parametrů hry ovlivní její výsledek.
@@ -28,26 +35,26 @@ výstupem za účely lazení. Její zdrojový kód je přístupný z https://git


Pro jednoduchost uvažuje náš model pouze variantu pro 7 - 8 hráčů a limituje sociální interakce na komentáře ohledně
Pro jednoduchost uvažuje náš model pouze variantu pro 7 - 8 hráčů a limituje sociální interakce na komentáře ohledně
zákonů, které prezident a kancléř viděli během svého kola, a komentář ohledně stranické příslušnost v případě speciální
zákonů, které prezident a kancléř viděli během svého kola, a komentář ohledně stranické příslušnost v případě speciální
prezidentské pravomoci Investigate Loyalty.
prezidentské pravomoci _Investigate Loyalty_.


Rozhraní hry a strategií (interface IStrategy) prošla během vývoje několika iteracemi. Jejich finální podoba se chová
Rozhraní hry a strategií (interface `IStrategy`) prošla během vývoje několika iteracemi. Jejich finální podoba se chová
takto:
takto:


* Na začátku hry je zavolána na každé strategii metoda SetUp, jež strategii sdělí, kterou roli zastává, a v případě, že
* Na začátku hry je zavolána na každé strategii metoda `SetUp`, jež strategii sdělí, kterou roli zastává, a v případě,
  je fašistická, kdo jsou její kumpáni.
  že je fašistická, kdo jsou její kumpáni.


* V průběhu jednoho kola jsou na strategiích volány relevantní metody dle potřeby: Vote během volební fáze,
* V průběhu jednoho kola jsou na strategiích volány relevantní metody dle potřeby: `Vote` během volební fáze,
  DiscardAsPresident a DiscardAsChancellor během legislativní fáze, a metoda pro každou z prezidentských pravomocí.
  `DiscardAsPresident` a `DiscardAsChancellor` během legislativní fáze, a metoda pro každou z prezidentských pravomocí.


* Teprve jakmile skončí volební období, jsou všechny strategie informovány o jeho průběhu metodou OnRound: kdo hlasoval
* Teprve jakmile skončí volební období, jsou všechny strategie informovány o jeho průběhu metodou `OnRound`: kdo
  pro a proti, jaký zákon byl zvolen, jak to vláda komentovala, případně kdo byl zabit či jinak postižen speciální
  hlasoval pro a proti, jaký zákon byl zvolen, jak to vláda komentovala, případně kdo byl zabit či jinak postižen
  pravomocí prezidenta.
  speciální pravomocí prezidenta.


Kromě volby strategií umožňuje náš model odehrát hru způsobem, kdy volební období neprobíhají atomicky, ale po
Kromě volby strategií umožňuje náš model odehrát hru způsobem, kdy volební období neprobíhají atomicky, ale po
jednotlivých fázích (pro využití viz CFR níže). Lze změnit taky některá pravidla hry, konkrétně distribuci zákonů ve hře
jednotlivých fázích (pro využití viz CFR níže). Lze změnit taky některá pravidla hry, konkrétně distribuci zákonů ve hře
a délku Election Trackeru.
a délku _Election Trackeru_.


== Strategie
=== Strategie


Random::
Random::
Hraje dle pravidel, ale rozhoduje se náhodně a nekomentuje své chování.
Hraje dle pravidel, ale rozhoduje se náhodně a nekomentuje své chování.
@@ -58,18 +65,18 @@ Jako liberál se snaží prosazovat liberální zákony a hlasovat pro spoluhrá
interních vah. Jako Hitler se chová podobně jako liberál, ale kladně hodnotí hráče, jenž volí fašistické zákony.
interních vah. Jako Hitler se chová podobně jako liberál, ale kladně hodnotí hráče, jenž volí fašistické zákony.


CounterSimple::
CounterSimple::
Strategie jež stojí proti Simple liberálovi -- implementována pouze pro roli fašisty a Hitlera.
Strategie jež stojí proti _Simple_ liberálovi -- implementována pouze pro roli fašisty a Hitlera.
V první polovině hry se snaží chovat liberálně, aby si získala důvěru. Jakmile lze vyhrát dosazením Hitlera za
V první polovině hry se snaží chovat liberálně, aby si získala důvěru. Jakmile lze vyhrát dosazením Hitlera za
kancléře, snaží se využít nabyté důvěry k tomu, aby byl zvolen.
kancléře, snaží se využít nabyté důvěry k tomu, aby byl zvolen.


Paranoid::
Paranoid::
Má, podobně jako Simple strategie, interní váhy, podle kterým ostatním hráčům důvěřuje, ale navíc penalizuje absenci a
Má, podobně jako _Simple_ strategie, interní váhy, podle kterým ostatním hráčům důvěřuje, ale navíc penalizuje absenci a
neshody v komentářích. Výše ztracené důvěry závisí na aktuální důvěře ve hráče a stádium hry. Takto je do hry vnesena
neshody v komentářích. Výše ztracené důvěry závisí na aktuální důvěře ve hráče a stádium hry. Takto je do hry vnesena
pozitivní zpětná vazba. Fašisté se chovají podobně jako strategie CounterSimple.
pozitivní zpětná vazba. Fašisté se chovají podobně jako strategie _CounterSimple_.


CFR::
CFR::
Učí se hraním proti sobě samé (Monte Carlo Counterfactual Regret Minimization). Prvotní verze potřebovala pro každý pár
Učí se hraním proti sobě samé (_Monte Carlo Counterfactual Regret Minimization_). Prvotní verze potřebovala pro každý
(stav, akce) ukládat nasčítaný regret, stavový prostor hry byl však příliš velký (jedno kolo může mít okolo 100000
pár (stav, akce) ukládat nasčítaný regret, stavový prostor hry byl však příliš velký (jedno kolo může mít okolo 100000
různých stavů, takových kol je ve hře 10-20). Snížili jsme proto objem informací, které si strategie o kole uchovává.
různých stavů, takových kol je ve hře 10-20). Snížili jsme proto objem informací, které si strategie o kole uchovává.
Dívá se jen na současné kolo a nebere v ohled důvěru v ostatní hráče. Bohužel, toto rozhodnutí výrazně snížilo úspěšnost
Dívá se jen na současné kolo a nebere v ohled důvěru v ostatní hráče. Bohužel, toto rozhodnutí výrazně snížilo úspěšnost
strategie.
strategie.
@@ -93,7 +100,7 @@ Navzájem proti sobě hrály všechny strategie - jeden tým (fašisti, liberál
samé strategie. Dohromady jsme prozkoumali 180 různých profilů strategií (5 x 6 x 6). Každý profil proti sobě hrál
samé strategie. Dohromady jsme prozkoumali 180 různých profilů strategií (5 x 6 x 6). Každý profil proti sobě hrál
1000000 her s 10 opakováními (10 procesorových vláken, cca 40 minut času). Vypočítali jsme průměr počtu výher a proher
1000000 her s 10 opakováními (10 procesorových vláken, cca 40 minut času). Vypočítali jsme průměr počtu výher a proher
a směrodatnou odchylku . Pokud předpokládáme normální rozdělení, můžeme vzít 2jako 95 % interval spolehlivosti podle
a směrodatnou odchylku . Pokud předpokládáme normální rozdělení, můžeme vzít 2jako 95 % interval spolehlivosti podle
pravidla 68-95-99.7.
pravidla link:https://en.wikipedia.org/wiki/68%E2%80%9395%E2%80%9399.7_rule[68-95-99.7].


Maximální směrodatná odchylka procenta výher je 0.001959. 95 % interval spolehlivosti je tedy méně než půl procenta,
Maximální směrodatná odchylka procenta výher je 0.001959. 95 % interval spolehlivosti je tedy méně než půl procenta,
a proto se v následujících grafech neobjevují vymezení chyby (jsou moc malé na to, aby šla vidět).
a proto se v následujících grafech neobjevují vymezení chyby (jsou moc malé na to, aby šla vidět).