Upgrade to Pro — share decks privately, control downloads, hide ads and more …

対戦ゲームに学ぶ、フレームワークの設計技法とAIのアルゴリズム入門 / game model

Avatar for qsona qsona
August 30, 2019
8k

対戦ゲームに学ぶ、フレームワークの設計技法とAIのアルゴリズム入門 / game model

builderscon tokyo 2019 / 補足はこちら https://note.mu/qsona/n/n137733801fd0

Avatar for qsona

qsona

August 30, 2019
Tweet

More Decks by qsona

Transcript

  1. ࠓ೔ͷ୊ࡐ͸ओʹ͜ΕΒͰ͢ • ࢦͷήʔϜ / কع / ຑ੃ / ΀Α΀Α /

    ਓ࿛
 ͦΕͧΕҧ͏ੑ࣭Λ࣋ͭήʔϜ • ରઓήʔϜΛϞσϦϯά͢Δ͜ͱͰɺ
 ήʔϜͷੑ࣭Λଊ͑ͯΈΔ • ϞσϦϯάΛੜ͔͠ɺήʔϜͷϓϩάϥϛϯά΍
 AIΞϧΰϦζϜΛߟ͑Δ
  2. 1. ରઓήʔϜͷϞσϦϯά • 3ͭͷ؍఺ͰϞσϦϯά͢Δ • ήʔϜͷϧʔϧ • ήʔϜͷछྨͷ෼ྨ • ήʔϜͷঢ়ଶͷਐߦ

    (ήʔϜ໦) • ͦΕͧΕͷ؍఺ͰͷϞσϧͱɺ
 ࣮ੈքʹ͓͚Δਓؒͷଊ͑ํͱͷؔ࿈Λߟ͑Δ
  3. • 1. ରہ • 2. ରہऀ • 3. ۨΛॳܕʹ഑ஔ •

    4. ۨͷଘࡏͱͦͷۭؒ • 5. ֤ۭؒͷۨͷଘࡏ਺ • 6. ۨͷಈ͖ͱੑ࣭ • 7. ࢦ͠ख • 8. ࢦ͠खͷछྨ • 9. औΔ • 10. ੒Δ • 11. ۨͷؼଐ • 12. ࢦ͠खͷ׬ྃ • 13. ہ໘ͷఆٛ • 14. ൫্ͷۨͱ࣋ͪۨͷؔ܎ • 15. Ԧखͱ٧Έ • 16. ಛʹܾΊΒΕͨېࢭࣄ߲ • 17. ऴہ
  4. • 1. ରہ • 2. ରہऀ • 3. ۨΛॳܕʹ഑ஔ •

    4. ۨͷଘࡏͱͦͷۭؒ • 5. ֤ۭؒͷۨͷଘࡏ਺ • 6. ۨͷಈ͖ͱੑ࣭ • 7. ࢦ͠ख • 8. ࢦ͠खͷछྨ • 9. औΔ • 10. ੒Δ • 11. ۨͷؼଐ • 12. ࢦ͠खͷ׬ྃ • 13. ہ໘ͷఆٛ • 14. ൫্ͷۨͱ࣋ͪۨͷؔ܎ • 15. Ԧखͱ٧Έ • 16. ಛʹܾΊΒΕͨېࢭࣄ߲ • 17. ऴہ (1) ήʔϜͷঢ়ଶ(ہ໘)ͷ
 ू߹, ॳظঢ়ଶ
  5. ہ໘ (≒ήʔϜͷঢ়ଶͷू߹) • ൫໘ (൫্+ۨ), ࣋ۨ (ۨ୆+ۨ), ख൪ Λ߹Θͤ ͯʮہ໘ʯͱఆٛ͞Ε͍ͯΔ

    • ہ໘͸ɺকعʹ͓͚ΔήʔϜͷঢ়ଶ • ਖ਼֬ʹ͸ɺہ໘୯ମ͚ͩͰ͸ήʔϜͷঢ়ଶΛ දͤͳ͍ (ઍ೔ख: ϧʔϓΛ൑ఆͰ͖ͳ͍)
  6. • 1. ରہ • 2. ରہऀ • 3. ۨΛॳܕʹ഑ஔ •

    4. ۨͷଘࡏͱͦͷۭؒ • 5. ֤ۭؒͷۨͷଘࡏ਺ • 6. ۨͷಈ͖ͱੑ࣭ • 7. ࢦ͠ख • 8. ࢦ͠खͷछྨ • 9. औΔ • 10. ੒Δ • 11. ۨͷؼଐ • 12. ࢦ͠खͷ׬ྃ • 13. ہ໘ͷఆٛ • 14. ൫্ͷۨͱ࣋ͪۨͷؔ܎ • 15. Ԧखͱ٧Έ • 16. ಛʹܾΊΒΕͨېࢭࣄ߲ • 17. ऴہ (2) Move (ࢦ͠ख)
  7. ߹๏खͱې͡ख • কعͷࢦ͠खʹ͸ɺ߹๏ख (Valid Move)ͱ
 ې͡ख (Invalid Move) ͕͋Δ •

    ې͡ख͸ࢦ͠खͷू߹ʹؚ·ΕΔ͕ɺ
 ͦΕΛࢦ͢ͱʮ൓ଇʯͷऴྃ৚݅ʹΑΓ
 ήʔϜ͕ऴྃ͢Δ
  8. • 1. ରہ • 2. ରہऀ • 3. ۨΛॳܕʹ഑ஔ •

    4. ۨͷଘࡏͱͦͷۭؒ • 5. ֤ۭؒͷۨͷଘࡏ਺ • 6. ۨͷಈ͖ͱੑ࣭ • 7. ࢦ͠ख • 8. ࢦ͠खͷछྨ • 9. औΔ • 10. ੒Δ • 11. ۨͷؼଐ • 12. ࢦ͠खͷ׬ྃ • 13. ہ໘ͷఆٛ • 14. ൫্ͷۨͱ࣋ͪۨͷؔ܎ • 15. Ԧखͱ٧Έ • 16. ಛʹܾΊΒΕͨېࢭࣄ߲ • 17. ऴہ (3) ऴྃ৚݅ͱ݁Ռ
  9. ऴہ (ऴྃ৚݅ͱ݁Ռ) • ԦΛ٧·͢ (٧·ͤͨํ͕উͪ) • ౤ྃ (౤ྃΛએݴͨ͠ํ͕ෛ͚) • ૬ೖۄ

    (఺਺Ͱউഊ͕ܾ·Δ) • ઍ೔ख (Ҿ͖෼͚) • ൓ଇ (ېࢭࣄ߲ɻ൓ଇΛͨ͠΄͏͕ෛ͚)
  10. "ଧͪา٧Ί" ͸ϝλతϧʔϧ • "٧Έ" = Ԧख͕͔͔͓ͬͯΓɺ͔ͭ૬खʹ
 Valid Move ͕ଘࡏ͠ͳ͍ঢ়ଶ •

    าΛଧͬͯԦख͢Δ ͱ͍͏ Move ͸ɺ
 ͦͷޙ૬खʹ Valid Move ͕ଘࡏ͠ͳ͍ͱ͖
 Invalid Move Ͱ͋Δ
  11. าͷԦखͰ٧Μͩ • ͱ͍͏͜ͱ͸͜ͷہ໘͸ʮଧͪา٧Ίʯ • (࠶ܝ) าΛଧͬͯԦख͢Δ ͱ͍͏ Move ͸ɺ
 ͦͷޙ૬खʹ

    Valid Move ͕ଘࡏ͠ͳ͍ͱ͖
 Invalid Move Ͱ͋Δ • ͭ·Γ͜ͷา͸ଧͯͳ͍ɺͱ͍͏ओு
  12. ྫ: ਓ࿛ • ਓ࿛ͷϧʔϧΛͦͷ··ద༻͢Δͱɺࣗવݴޠղੳ͕ඞཁ ʹͳΓɺղੳ͕೉͍͠ • ʮਓ࿛ϓϩτίϧʯ... ֤ϓϨΠϠʔͷൃݴΛఆࣜԽ (ࣄ࣮΍ ҙਤͷද໌,

    ཁ੥ͳͲ) • ྫ: REQUEST [◦͞Μ] (DIVINATION [×͞Μ])
 →ʮ◦͞Μɺ×͞ΜΛ઎͍·͠ΐ͏ʯ • ͜ΕʹΑΓݚڀର৅ʹ͠΍͘͢ͳΔ
  13. ϧʔϧΛఆࣜԽ͢Δͱ • ʮ࠷ޙͷ৹൑ʯͷΑ͏ͳέʔεΛਖ਼͘͠൑ఆͨ͠Γɺ
 ໃ६Λൃݟͨ͠ΓͰ͖Δ (͸ͣ) • ήʔϜ AI ͳͲͷݚڀର৅ʹͰ͖Δ •

    ಛʹ General Game Playing ... ະ஌ͷήʔϜΛ͏· ͘ϓϨΠͰ͖Δ൚༻ AI ͷର৅ʹ • ήʔϜࣗମͷੑ࣭ͷཧղʹܨ͕Δ
  14. ྫ: ຑ੃ • ଟਓ਺, ϥϯμϜωε͋Γ, ෆ׬શ৘ใ ਓ਺ ਓ ঢ়ଶ ༗ݶݸ

    ϥϯμϜωε ͋Γ ہ͝ͱͷॳظঢ়ଶ͸ϥϯμϜ ৘ใ ࣗ෼ͷखṛ )BOE ͸ࣗ෼͚ͩʹ։ࣔ
 ࢁṛ %FDL ͸શһʹඇ։ࣔ
  15. ୳ࡧ(1)
 ϛχϚοΫε๏ / ࢬמΓ(α-β๏) • ήʔϜ໦ͷͱ͜ΖͰઆ໌ͨ͠ͷ͕
 ϛχϚοΫε๏ • ࢬמΓ ...

    ಡ·ͳͯ͘ྑ͍ࢬΛΧοτ͢Δ • ྫ: ͋ΔMoveͰ10఺औΕΔͷ͕֬ఆ͍ͯ͠Δɻ => 10఺ҎԼ͕֬ఆͨ͠ࢬ͸ಡ·ͳͯ͘Α͍
  16. ϞϯςΧϧϩ໦୳ࡧͷվྑ • Multi-Armed Bandit Problem ʹର͢ΔΞϧΰϦ ζϜΛԠ༻͢Δ (UCB1 ΞϧΰϦζϜͳͲ) •

    ͲΕ͘Β͍౰ͨΔ͔ෆ໌ͳεϩοτϚγϯ͕ͨ ͘͞Μ͋Δͱ͖ɺͲ͏͍͏ઓུͰ΍Δͱྑ͍͔
  17. ྫ: ࢦͷήʔϜ • ہ໘਺͕গͳ͍ • ͔͔ͨͩ 5^4 * 2 =

    1250 ௨Γ • ରশੑ౳Λߟ͑ͯ (5+4+3+2+1) * 2 - 1 = 224௨Γ • ͦͷ͏ͪ14௨Γ͸ऴྃہ໘ • ׬શղੳ͕Մೳ
  18. ྫ: ғޟ • ғޟͷAI͸͠͹Βͣͬ͘ͱऑ͔ͬͨ • 2006೥, ϞϯςΧϧϩ໦୳ࡧ + UCB1 ͷొ৔ʹ

    ΑΓɺಥવΞϚνϡΞߴஈҐϨϕϧʹ • ΊͪΌͪ͘Ό෼͔Γ΍͍͢ࢀߟࢿྉ͕͋ΔͷͰ
 ஔ͍͓͖ͯ·͢
  19. ྫ: ΀Α΀Α • ࣮ػͰਓؒʹউͬͨྫ͋Γ • (࣮ը໘Λը૾ೝࣝ) • AI ಉ࢜ͷରઓେձͷه࿥΋͋Δ •

    ϨΪϡϨʔγϣϯ͕೉͍͠ • ൛ݖͷ໰୊, ϓϥοτϑΥʔϜ͕ͳ͍ • ਓؒͷೝࣝೳྗͷݶք (কع౳ʹൺ΂ͯAIѹ౗త༗ར)
  20. boardgame.io ͷػೳ (ެࣜΑΓ) • State Management • Multiplayer • AI

    • Game Phases • Prototyping • Logs • View-Layer Agnostic • Component Toolkit • Extendable
  21. ϑϨʔϜϫʔΫͱ͸Կ͔ • A structure that forms a support or frame


    for something • (Collins English Dictionary ΑΓ) • Կ͔ʹର͢Δࢧ࣋෺΍࿮૊ΈΛܗ੒͢Δߏ଄
  22. ଊ͑ํ͕ద੾ • ྫ: কع • ʮہ໘ʯ(൫໘ɾۨͷঢ়ଶ) Λঢ়ଶ(G)ͱͯ͠؅ཧ͍ͨ͠ • ࣮ࡍʹ͸ࢦ͠खͷཤྺ΋ήʔϜͷঢ়ଶʹؚ·ΕΔ •

    ཤྺ͕ͳ͍ͱઍ೔खͷ൑ఆ͕Ͱ͖ͳ͍... • ͦΕΒ͸ϑϨʔϜϫʔΫ͕؅ཧͯ͘͠ΕΔͷͰɺ։ൃऀ͕ҙ ࣝ͠ͳ͍Ͱ΋࢖͑Δ (͍͍ͪͪࣗ෼Ͱཤྺ؅ཧ͠ͳ͍͍ͯ͘)
  23. ଊ͑ํ͕ద੾ • Move Λ G => G ͷ७ਮؔ਺ͱͯ͠ଊ͍͑ͯΔ • ෭࡞༻ͳ͠

    • ϝϦοτ͕ଟ͍ • ཤྺͱͯ͠ѻ͍΍͍͢ • React ͳͲ View ଆͷϑϨʔϜϫʔΫͱ૬ੑ͕͍͍
  24. boardgame.io ʹΑΔଊ͑ํ (3) • Phase ͱ͍͏֓೦Λಋೖ • Move ͨ͠ޙ Phase

    ΛભҠͰ͖Δ • Phase ʹΑͬͯɺऔΓ͏Δ Move ͷछྨ͕
 มΘΔ
  25. ࠶ܝ: boardgame.io ͷػೳ • State Management • Multiplayer • AI

    • Game Phases • Prototyping • Logs • View-Layer Agnostic • Component Toolkit • Extendable
  26. Multiplayer • ෳ਺ਓͰͷಉ࣌ରઓ͕Մೳ • multiplayer: { server: 'localhost:8000' }
 ͷΑ͏ʹઃఆ͢Δ͚ͩ

    • transport ૚͕ந৅Խ͞Ε͍ͯΔઃܭ • socket.io, firebase ͕࢖͑ΔͬΆ͍