1 of 62

Matematika v Minecraftu pro pokročilé

2 of 62

Kdo jsem

3 of 62

Odkazy a Zdroje

Zdroje

Prezentace

4 of 62

Co nás čeká

  • Úvod
  • Procedurálně generované světy
  • Rozbité světy a kdy to nefunguje
  • Komunitní projekt – pack.png
  • Seed finding (hledání seedů)
  • Reverse engineering seedů
  • Žádný redstone
  • Pouze java verze

5 of 62

TRIGGER WARNING

  • Budou se objevovat matematické vzorce.
  • Občas zazní složitě znějící slovo.
  • Nebojte se zeptat.
  • Nebojte se zeptat.

6 of 62

Co je matematika?

  • z řeckého μαθηματικός (mathematikós) = milující poznání
    • μάθημα (máthema) = věda, vědění, poznání
  • vědní obor
    • zabývá se z formálního hlediska kvantitou, strukturou, prostorem a změnou
    • zabývá vytvářením abstraktních entit a vyhledáváním zákonitých vztahů mezi nimi

7 of 62

Co je to Minecraft?

  • Úspěšná původně PC hra
  • Nyní na 18 platformách
  • Sandbox, single i multiplayer RPG
  • Vydána 18.11.2011 (alpha od 17.5.2009)
  • Nejvíce prodávaná PC hra na světě (>200 milionů prodaných kopií)
  • Cíl je zabít draka
  • Stavíte věci z kostek

8 of 62

9 of 62

Proč zrovna Minecraft

  • Dostupné všechny verze od 13.5.2009
    • Umožňuje prozkoumávat staré verze a vracet se v čase, replikovatelnost experimentů
  • Jar (Java) lze snadno dekompilovat
    • Lze se relativně snadno dostat ke zdrojovým kódům
    • Usnadňuje reverse engineering a komunitní tvorbu obsahu
  • Jednoduchý generátor náhodných čísel
    • Lze hledat nebo manipulovat seed
  • Velká komunita sdílející znalosti
  • Seed: 1 číslo generuje celý svět

10 of 62

Co se zkoumá na videohře?

  • Generování vlastností světa z jednoho čísla
    • Inverze vysoce nelineárních funkcí
    • Celočíselná aritmetika, ILP
    • High performance computing – distribuované výpočty, GPU
    • Computer vision, hledání parametrů kamery a neuronové sítě
    • Tvorba heuristik pro hledání ve vysoké dimenzi
    • Podobná infrastruktura a techniky jako u computer science výzkumu

11 of 62

Procedurálně generované světy

  •  

12 of 62

Náhoda? Nemyslím si!

  • Náhoda v PC a IT neexistuje. Vše v počítači je deterministické.
  • Náhoda se dodává externím zdrojem (proudění vzduchu atd.)
  • Uvnitř PC pseudonáhoda – deterministické, ale „náhodně“ vypadající programy
  • Náhoda možná neexistuje vůbec (záleží na interpretaci kvantové fyziky)

13 of 62

Procedurální generování v

  • Výška mapy -> Perlinův šum
    • Původně na textury u CGI modelů
    • 1983, použito ve filmu Tron (před formalizací)
  • Seed k tvorbě deterministického světa
  • Hierarchický = oktávový šum – více perlinových šumů s různým zvětšením, v MC 16 vrstev

14 of 62

Tvorba mapy �vrstvu po vrstvě

  • Tvorba biomů po vrstvách.
  • 50 vrstev
  • Směrem od hrubých k jemným
    • Jak velikostí, tak variabilitou biomů
  • Generováno ve verzi 1.16

15 of 62

Biomy

Zde pár vrstev vynecháno

16 of 62

Tvorba mapy�vrstvu po vrstvě

17 of 62

Na kraji světa

  •  

18 of 62

Proč se světy na okrajích rozbíjí

  •  

19 of 62

Příznaky

  • Infdev-1.7.3 beta
    • Far Lands
      • Přetečení intu pro Perlin Noise
      • Na souřadnicích ±12 550 821-5 (12.5k km)
    • Fake chunks
      • Za souřadnicemi ± 32 000 000 jsou chunky nehmotné, vyplněné pouze travou, kameny nebo vodou, reálný terén se negeneruje
      • Později limit 30M

20 of 62

Far lands

21 of 62

Far Lands

  • Na všech 4 stranách, ve vzdálenosti 12 550 821
  • Cca 12 550 km
  • Ze středu jako cesta z Prahy do Hirošimy

22 of 62

Far lands beta 1.7.3

23 of 62

Far lands pohyb-12M

24 of 62

Fake chunks – 30M

25 of 62

Fake chunks-1004M

26 of 62

Far lands - příčina

  •  

27 of 62

Co je to seedfinding

  • Hledání seedu, většinou
  • Hledání konkrétního seedu ze světa
    • Taky známo jako seed cracking
    • Seed mapy PewDiePie
    • Seed z obrázku, videa, serveru apod.
  • Hledání seedu jehož svět splňuje nějaké podmínky
    • Ideální seed na spedrunning
    • Mansion a vesnice blízko spawnu
    • 4 swamp hut blízko sebe

28 of 62

Pack.png

  •  

29 of 62

Pack.png

  • Kde začít
    • Verze minecraftu podle doby vytvoření souboru
    • Z souřadnice podle pozice mraků
    • Znovuvytvoření v mapě – základ pro další pátrání
  • Co bylo dál
    • Nalezení X souřadnice - umláceno statistikou z perlin noise, jinak tráva
    • Hledání patternu písku a hlíny – MC@home, 3500 lidí GPU ~brutefoce
    • 700k world seedů pro které zkontrolovali na cpu výšky bloků v kopci
  • Výsledek
    • Alpha 1.2.2
    • Seed: 3257840388504953787
    • Souřadnice kopce: X=116, Z=-31

30 of 62

Další seedfinding projekty

  • Původní main menu screen - done
  • Obraz s lebkou - done
  • Ostatní main screen pozadí do 1.16 - done
  • Herobrine - done
  • Pewdiepie hardcore mapa - done
  • Markiplier letsplaye - done
  • Supersmash bros trailer mapa - WIP

31 of 62

Seed

  • 64bitové celé číslo
  • Budovy apod. – dolních 48 bitů
  • Horních 16 bitů pouze biomy
  • Dolních 16 bitů = pillar seed
  • Shadow seed
    • seed se stejnými biomy, ale vším ostatním jiným
    • Každý seed má 1 svůj shadow, -7379792620528906219 - <seed>
    • Viètovy vzorce pro n=2
    • Funguje jenom pro overworld
  • Nether i End používají jen dolních 48 bitů

32 of 62

Shadow seed

  • Stejné biomy, jiné struktury
  • nextInt v biomech
  • L*=L*A+B; return L+L2
  • Return (L*A+B)*L+L2
  • Return AL^2+BL+L2

33 of 62

Shadow seed

34 of 62

Hledání seedů po domácku

  • Hledání seedu konkrétního světa
  • Hledání seedu (světa) s nějakými vlastnostmi
  • Pozor na verze minecraftu

35 of 62

Hledání seedu pro daný svět bez modů

  • Seed ze spawnerské místnosti
  • SeedCandy, ostatní SW ve zdrojích

36 of 62

Spawn

  • Najděte místnost se spawnem
  • Jsou v následujících velikostech, pokud jsou menší, rozbijte zdi: 7x7,7x9,9x7,9x9

37 of 62

SeedCandy

  • Jednoduché, snáze se ovládá, GUI
  • nejde pauznout, pokud pustíte seed finding s málo daty
  • Čtěte readme
  • Spawn->structure seed
  • Structure seed+biomy na souřadnicích->world seed

38 of 62

SeedCandy

  • Stůjte facing north
  • Překlikejte mech
  • Souřadnice targeted block

39 of 62

SeedCandy

  • Z mechu získány structure seeds
  • Vyplníme souřadnice biomů
  • 2 jsou málo->hodně výpočtů a seedů
  • Mělo by stačit 5-6->heureka. Máme world seed

40 of 62

SeedCandy

  • Když už máte world seed
  • Nalezení quadhuts, výpočet shadowseed, sisterseeds…

41 of 62

Hledání seedů po domácku

  • Hledání světa splňujícího nějaké podmínky
  • Nejjednodušší způsob: zkoušet seedy popořadě nebo náhodně a zahodit je když nesplňují požadavky
  • Snadno paralelizovatelné (16 cores go brrrr)
  • Jednoduché na použití, univerzální
  • Stále poměrně pomalé při složitějších podmínkách

42 of 62

GUI aplikace

  • https://github.com/Zodsmar/SeedSearcherStandaloneTool
  • StandAlone Seed Searcher Application (Sassa)
  • Java aplikce, exe, stahnete z githubu
  • Naklikáte požadavky a vzdálenost hledání
  • Spustíte a čekáte, postupně vypisuje seedy

43 of 62

Seedy na domácí hraní

44 of 62

Seed finding - bruteforce

  •  

45 of 62

Seed cracking - chytřejší

  • Java RNG není kryptograficky bezpečné
  • Úmožňuje cracking, mnohem rychlejší než brute-forcing

46 of 62

Seed cracking

  •  

47 of 62

Seed cracking

  •  

48 of 62

Vykreslení možných řešení

  • Osa x = iterace, pořadí seedu
  • Osa y = hodnota seedu
  • Výsledky generátoru náhodných čísel jsou mají pravidelnost!
  • Proto snadno prolomitelné

49 of 62

Seed cracking

  • Vše ve světě je skrze RNG, vše updatuje seed
  • Když známe výsledky callů, odvodíme z nich seed
  • Musíme vědět kolik RNG callů přibližně bylo

50 of 62

Seed cracking

  • Hledání portálu s 12 spawnutými ender eyes
    • 12 callů nextFloat musí být >0.9

51 of 62

Formulování ILP

  • Trik nahrazení (mod m) za konstanty

52 of 62

Formulování ILP

  • Hledání portálu se všemi 12 částmi otevřenými

53 of 62

Formulování ILP

  • Trik nahrazení (mod m) za konstanty

54 of 62

Vykreslení možných řešení�jednoduchý příklad

  • Parametry LCG

  • Další parametry

  • Maticový zápis

  • Rozložení na vektory

55 of 62

Lattice reduction

  • ILP je hledání bodů, které náleží do rovnoběžnostěnu
  • Výpočetně poměrně náročné

56 of 62

Lattice reduction

  •  

57 of 62

Lattice reduction

  •  

58 of 62

Závěrem

  • V minecraftu se dá dělat spousta zajímavých věcí
  • Aktivní komunity okolo skoro všeho co vás napadne
  • Spousta zdrojů a materiálů

59 of 62

Poděkování

  • Minecraft komunitě za množství materiálů
  • Monkey serveru, Minecraft@home discordu a jeho členům kteří vedou minecraft výzkum

60 of 62

Mé další přednášky

  • Psychologické triky v gača hrách GameLine, Středa 3.7. 12:00
  • Kam kráčíš, umělá inteligence? FutureCon, Čtvrtek 4.7. 10:00
  • IT aspekty organizace conů, FutureCon, Sobota 6.7. 9:00
  • Dočkáme se AI waifu? OrientCon, Sobota 6.7. 18:00

61 of 62

Odkazy a Zdroje

Zdroje

Prezentace

62 of 62

Časoprostor pro dotazy