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

942bb606679caf4c57b38927f83178e1?s=47 qsona
August 30, 2019
5.6k

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

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

942bb606679caf4c57b38927f83178e1?s=128

qsona

August 30, 2019
Tweet

Transcript

  1. 4.

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

    ਓ࿛
 ͦΕͧΕҧ͏ੑ࣭Λ࣋ͭήʔϜ • ରઓήʔϜΛϞσϦϯά͢Δ͜ͱͰɺ
 ήʔϜͷੑ࣭Λଊ͑ͯΈΔ • ϞσϦϯάΛੜ͔͠ɺήʔϜͷϓϩάϥϛϯά΍
 AIΞϧΰϦζϜΛߟ͑Δ
  2. 6.

    1. ରઓήʔϜͷϞσϦϯά • 3ͭͷ؍఺ͰϞσϦϯά͢Δ • ήʔϜͷϧʔϧ • ήʔϜͷछྨͷ෼ྨ • ήʔϜͷঢ়ଶͷਐߦ

    (ήʔϜ໦) • ͦΕͧΕͷ؍఺ͰͷϞσϧͱɺ
 ࣮ੈքʹ͓͚Δਓؒͷଊ͑ํͱͷؔ࿈Λߟ͑Δ
  3. 9.

    • 1. ରہ • 2. ରہऀ • 3. ۨΛॳܕʹ഑ஔ •

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

    • 1. ରہ • 2. ରہऀ • 3. ۨΛॳܕʹ഑ஔ •

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

    ہ໘ (≒ήʔϜͷঢ়ଶͷू߹) • ൫໘ (൫্+ۨ), ࣋ۨ (ۨ୆+ۨ), ख൪ Λ߹Θͤ ͯʮہ໘ʯͱఆٛ͞Ε͍ͯΔ

    • ہ໘͸ɺকعʹ͓͚ΔήʔϜͷঢ়ଶ • ਖ਼֬ʹ͸ɺہ໘୯ମ͚ͩͰ͸ήʔϜͷঢ়ଶΛ දͤͳ͍ (ઍ೔ख: ϧʔϓΛ൑ఆͰ͖ͳ͍)
  6. 14.

    • 1. ରہ • 2. ରہऀ • 3. ۨΛॳܕʹ഑ஔ •

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

    ߹๏खͱې͡ख • কعͷࢦ͠खʹ͸ɺ߹๏ख (Valid Move)ͱ
 ې͡ख (Invalid Move) ͕͋Δ •

    ې͡ख͸ࢦ͠खͷू߹ʹؚ·ΕΔ͕ɺ
 ͦΕΛࢦ͢ͱʮ൓ଇʯͷऴྃ৚݅ʹΑΓ
 ήʔϜ͕ऴྃ͢Δ
  8. 17.
  9. 18.

    • 1. ରہ • 2. ରہऀ • 3. ۨΛॳܕʹ഑ஔ •

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

    ऴہ (ऴྃ৚݅ͱ݁Ռ) • ԦΛ٧·͢ (٧·ͤͨํ͕উͪ) • ౤ྃ (౤ྃΛએݴͨ͠ํ͕ෛ͚) • ૬ೖۄ

    (఺਺Ͱউഊ͕ܾ·Δ) • ઍ೔ख (Ҿ͖෼͚) • ൓ଇ (ېࢭࣄ߲ɻ൓ଇΛͨ͠΄͏͕ෛ͚)
  11. 22.

    "ଧͪา٧Ί" ͸ϝλతϧʔϧ • "٧Έ" = Ԧख͕͔͔͓ͬͯΓɺ͔ͭ૬खʹ
 Valid Move ͕ଘࡏ͠ͳ͍ঢ়ଶ •

    าΛଧͬͯԦख͢Δ ͱ͍͏ Move ͸ɺ
 ͦͷޙ૬खʹ Valid Move ͕ଘࡏ͠ͳ͍ͱ͖
 Invalid Move Ͱ͋Δ
  12. 25.
  13. 26.
  14. 27.
  15. 28.
  16. 29.
  17. 30.
  18. 31.
  19. 32.
  20. 34.
  21. 35.
  22. 36.
  23. 38.
  24. 40.

    าͷԦखͰ٧Μͩ • ͱ͍͏͜ͱ͸͜ͷہ໘͸ʮଧͪา٧Ίʯ • (࠶ܝ) าΛଧͬͯԦख͢Δ ͱ͍͏ Move ͸ɺ
 ͦͷޙ૬खʹ

    Valid Move ͕ଘࡏ͠ͳ͍ͱ͖
 Invalid Move Ͱ͋Δ • ͭ·Γ͜ͷา͸ଧͯͳ͍ɺͱ͍͏ओு
  25. 41.
  26. 44.

    ྫ: ਓ࿛ • ਓ࿛ͷϧʔϧΛͦͷ··ద༻͢Δͱɺࣗવݴޠղੳ͕ඞཁ ʹͳΓɺղੳ͕೉͍͠ • ʮਓ࿛ϓϩτίϧʯ... ֤ϓϨΠϠʔͷൃݴΛఆࣜԽ (ࣄ࣮΍ ҙਤͷද໌,

    ཁ੥ͳͲ) • ྫ: REQUEST [◦͞Μ] (DIVINATION [×͞Μ])
 →ʮ◦͞Μɺ×͞ΜΛ઎͍·͠ΐ͏ʯ • ͜ΕʹΑΓݚڀର৅ʹ͠΍͘͢ͳΔ
  27. 45.

    ϧʔϧΛఆࣜԽ͢Δͱ • ʮ࠷ޙͷ৹൑ʯͷΑ͏ͳέʔεΛਖ਼͘͠൑ఆͨ͠Γɺ
 ໃ६Λൃݟͨ͠ΓͰ͖Δ (͸ͣ) • ήʔϜ AI ͳͲͷݚڀର৅ʹͰ͖Δ •

    ಛʹ General Game Playing ... ະ஌ͷήʔϜΛ͏· ͘ϓϨΠͰ͖Δ൚༻ AI ͷର৅ʹ • ήʔϜࣗମͷੑ࣭ͷཧղʹܨ͕Δ
  28. 49.

    ྫ: ຑ੃ • ଟਓ਺, ϥϯμϜωε͋Γ, ෆ׬શ৘ใ ਓ਺ ਓ ঢ়ଶ ༗ݶݸ

    ϥϯμϜωε ͋Γ ہ͝ͱͷॳظঢ়ଶ͸ϥϯμϜ ৘ใ ࣗ෼ͷखṛ )BOE ͸ࣗ෼͚ͩʹ։ࣔ
 ࢁṛ %FDL ͸શһʹඇ։ࣔ
  29. 73.
  30. 78.

    ୳ࡧ(1)
 ϛχϚοΫε๏ / ࢬמΓ(α-β๏) • ήʔϜ໦ͷͱ͜ΖͰઆ໌ͨ͠ͷ͕
 ϛχϚοΫε๏ • ࢬמΓ ...

    ಡ·ͳͯ͘ྑ͍ࢬΛΧοτ͢Δ • ྫ: ͋ΔMoveͰ10఺औΕΔͷ͕֬ఆ͍ͯ͠Δɻ => 10఺ҎԼ͕֬ఆͨ͠ࢬ͸ಡ·ͳͯ͘Α͍
  31. 82.

    ϞϯςΧϧϩ໦୳ࡧͷվྑ • Multi-Armed Bandit Problem ʹର͢ΔΞϧΰϦ ζϜΛԠ༻͢Δ (UCB1 ΞϧΰϦζϜͳͲ) •

    ͲΕ͘Β͍౰ͨΔ͔ෆ໌ͳεϩοτϚγϯ͕ͨ ͘͞Μ͋Δͱ͖ɺͲ͏͍͏ઓུͰ΍Δͱྑ͍͔
  32. 85.

    ྫ: ࢦͷήʔϜ • ہ໘਺͕গͳ͍ • ͔͔ͨͩ 5^4 * 2 =

    1250 ௨Γ • ରশੑ౳Λߟ͑ͯ (5+4+3+2+1) * 2 - 1 = 224௨Γ • ͦͷ͏ͪ14௨Γ͸ऴྃہ໘ • ׬શղੳ͕Մೳ
  33. 93.

    ྫ: ғޟ • ғޟͷAI͸͠͹Βͣͬ͘ͱऑ͔ͬͨ • 2006೥, ϞϯςΧϧϩ໦୳ࡧ + UCB1 ͷొ৔ʹ

    ΑΓɺಥવΞϚνϡΞߴஈҐϨϕϧʹ • ΊͪΌͪ͘Ό෼͔Γ΍͍͢ࢀߟࢿྉ͕͋ΔͷͰ
 ஔ͍͓͖ͯ·͢
  34. 94.

    ྫ: ΀Α΀Α • ࣮ػͰਓؒʹউͬͨྫ͋Γ • (࣮ը໘Λը૾ೝࣝ) • AI ಉ࢜ͷରઓେձͷه࿥΋͋Δ •

    ϨΪϡϨʔγϣϯ͕೉͍͠ • ൛ݖͷ໰୊, ϓϥοτϑΥʔϜ͕ͳ͍ • ਓؒͷೝࣝೳྗͷݶք (কع౳ʹൺ΂ͯAIѹ౗త༗ར)
  35. 100.

    boardgame.io ͷػೳ (ެࣜΑΓ) • State Management • Multiplayer • AI

    • Game Phases • Prototyping • Logs • View-Layer Agnostic • Component Toolkit • Extendable
  36. 101.

    ϑϨʔϜϫʔΫͱ͸Կ͔ • A structure that forms a support or frame


    for something • (Collins English Dictionary ΑΓ) • Կ͔ʹର͢Δࢧ࣋෺΍࿮૊ΈΛܗ੒͢Δߏ଄
  37. 107.

    ଊ͑ํ͕ద੾ • ྫ: কع • ʮہ໘ʯ(൫໘ɾۨͷঢ়ଶ) Λঢ়ଶ(G)ͱͯ͠؅ཧ͍ͨ͠ • ࣮ࡍʹ͸ࢦ͠खͷཤྺ΋ήʔϜͷঢ়ଶʹؚ·ΕΔ •

    ཤྺ͕ͳ͍ͱઍ೔खͷ൑ఆ͕Ͱ͖ͳ͍... • ͦΕΒ͸ϑϨʔϜϫʔΫ͕؅ཧͯ͘͠ΕΔͷͰɺ։ൃऀ͕ҙ ࣝ͠ͳ͍Ͱ΋࢖͑Δ (͍͍ͪͪࣗ෼Ͱཤྺ؅ཧ͠ͳ͍͍ͯ͘)
  38. 109.

    ଊ͑ํ͕ద੾ • Move Λ G => G ͷ७ਮؔ਺ͱͯ͠ଊ͍͑ͯΔ • ෭࡞༻ͳ͠

    • ϝϦοτ͕ଟ͍ • ཤྺͱͯ͠ѻ͍΍͍͢ • React ͳͲ View ଆͷϑϨʔϜϫʔΫͱ૬ੑ͕͍͍
  39. 110.

    boardgame.io ʹΑΔଊ͑ํ (3) • Phase ͱ͍͏֓೦Λಋೖ • Move ͨ͠ޙ Phase

    ΛભҠͰ͖Δ • Phase ʹΑͬͯɺऔΓ͏Δ Move ͷछྨ͕
 มΘΔ
  40. 113.

    ࠶ܝ: boardgame.io ͷػೳ • State Management • Multiplayer • AI

    • Game Phases • Prototyping • Logs • View-Layer Agnostic • Component Toolkit • Extendable
  41. 114.

    Multiplayer • ෳ਺ਓͰͷಉ࣌ରઓ͕Մೳ • multiplayer: { server: 'localhost:8000' }
 ͷΑ͏ʹઃఆ͢Δ͚ͩ

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