SlideShare a Scribd company logo
1 of 8
Download to read offline
Copyright (C) 2013 National Institute of Informatics, All rights reserved.
ゲームとモデル検査ワークショップ
#1
2013年9月12日
国立情報学研究所 GRACEセンター/先端ICTセンター
長久勝
mailto : nagaku@nii.ac.jp
Twitter : @mnagaku
Copyright (C) 2013 National Institute of Informatics, All rights reserved.
2
じゅんび
 http://code.9leap.net/
アカウントを持ってなかったら作る
http://code.9leap.net/codes/show/34479
動作確認
Javascriptのコンソール表示方法を確認
 LTSA
 http://www.doc.ic.ac.uk/~jnm/book/ltsa/download.html
「download ltsa」からltsatool.zipをDL、
適当な場所に展開
ltsa.batでメモリ設定
Copyright (C) 2013 National Institute of Informatics, All rights reserved.
3
そのいち、だっしゅつげえむ
 ゲームのスクリプトに潜むバグを
LTSAで取ってみます
 http://code.9leap.net/codes/show/42604
ログインして、Forkして、自分用の環境を作る
実行するとLTSA用のモデルがconsoleに出る
// FSP から下の記述
LTSAにコピペで持って行く
Copyright (C) 2013 National Institute of Informatics, All rights reserved.
4
おれのあたまのなかのげーむしなりお
do / 鍵取得=false
開始
さて進めて どんどん進めて
ぐるぐる脱出最後のドア
探索
do / 鍵取得=true
鍵発見
もうないドア開
開く
開かない
終了
次へ 次へ
次へ
次へ
周りを探すドアを開ける
次へ [鍵取得==false]
次へ [鍵取得==true]
次へ
次へ
次へ [鍵取得==true]
次へ [鍵取得==false]
次へ
次へ
次へ
Copyright (C) 2013 National Institute of Informatics, All rights reserved.
5
けんさできるせいしつのれい
 const False = 0
const True = 1
fluent HAS_KEY = <{m.s鍵発見.s最後のドア}, {m.sさて進めて.sどんどん進めて}> initially False
fluent OPEN_DOOR = <{m.s開く.s終了}, {m.sさて進めて.sどんどん進めて}> initially False
assert P1 = [](OPEN_DOOR -> HAS_KEY)
 イベントによって変化する状態を定義し、その状態の関係をLTLで検査式として書く
 P1:ドアが開いた状態の時は、必ず鍵を持っている状態でなければならない
 progress END = {m.s終了.s開始}
 進行性検証
 どんな状態からでも、いつか「m.s終了.s開始」のイベントを起こせる
 「m.s終了.s開始」のイベントが起こせなくなる進行とは、エンディングに到達できないパスがあるということ
 property Test = (m.s鍵発見.s最後のドア -> m.s開く.s終了 -> Test).
 安全性検証
 システムを抽象化(捨象)して守るべき性質を記述
 「m.s鍵発見.s最後のドア」、「m.s開く.s終了」以外のイベントを無視した場合、システムが
「Test = (m.s鍵発見.s最後のドア -> m.s開く.s終了 -> Test)」
と等価か調べる
 鍵を発見していないのにドアが開いたり、鍵を複数回発見してからドアが開いたりすると、等価にならない
Copyright (C) 2013 National Institute of Informatics, All rights reserved.
6
そのに、さされる
 http://code.9leap.net/codes/show/42607
 const False = 0
const True = 1
fluent DEAD_ME = <{m.s死ぬ.s終了}, {m.s終了.s開始}> initially False
fluent LIVE_CAT = <{m.s終了.s開始}, {m.s猫死ぬ.s死ぬ}> initially True
assert P1 = [](DEAD_ME -> LIVE_CAT)
 自分を殺すのが必ず猫だとした場合、
自分が死んだ時に、既に猫が死んでいたらおかしい
 ほんとは、死んだら生き返らない検査項目も必要だけど、ここでは割愛
 物語の内容についての制約も検査できる
 モデル化に工夫しておくと、自動化も可能
 キャラ表示命令から香盤表を自動生成して、その情報を使うとか
 シーンにアノテーション(タグ)を付けて、遷移以外のイベントを自動で埋め込めるようにするとか
Copyright (C) 2013 National Institute of Informatics, All rights reserved.
7
へいこうせい
 モデル検査は
本来、並行システムの検証に用いられる
LTSAのexample、6章の「食事する哲学者」
 ADVスクリプトに書き下されたシナリオ進行では
並行性を扱わない
登場人物毎の振る舞いを
個別のプロセスと考えると並行システムになる
個別のプロセスが並行合成されて
単一プロセス化されている
 並行性のないモデル化ができるので、
状態爆発を回避できる
Copyright (C) 2013 National Institute of Informatics, All rights reserved.
8
げーむしなりおともでるけんさ
 モデル化すると、
複雑さは、組み合わせの量に変換される
 人間は量を扱えない、機械は量を扱える
 複雑なシナリオを高品質で実現!

More Related Content

Similar to ゲームとモデル検査ワークショップ#1

2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmfAtomu Hidaka
 
佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合う佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合うDaiyu Hatakeyama
 
チップレベルでカスタマイズできることで見える世界の体験
チップレベルでカスタマイズできることで見える世界の体験チップレベルでカスタマイズできることで見える世界の体験
チップレベルでカスタマイズできることで見える世界の体験Junichi Akita
 
株式会社カブク システム開発最前線
株式会社カブク システム開発最前線株式会社カブク システム開発最前線
株式会社カブク システム開発最前線Takuro Wada
 
PWA+WebARをECサイトで使ってみたい
PWA+WebARをECサイトで使ってみたいPWA+WebARをECサイトで使ってみたい
PWA+WebARをECサイトで使ってみたいDaisuke Yamashita
 
IoT向けプラットフォーム「SORACOM」とは? 他2本
IoT向けプラットフォーム「SORACOM」とは? 他2本IoT向けプラットフォーム「SORACOM」とは? 他2本
IoT向けプラットフォーム「SORACOM」とは? 他2本SORACOM,INC
 
SORACOM UG 九州 x JAWS-UG 熊本 共催 | #あのボタン 開発のちょっといい話とSORACOMアップデート&ブログの書き方を披露しちゃう回
SORACOM UG 九州 x JAWS-UG 熊本 共催 | #あのボタン 開発のちょっといい話とSORACOMアップデート&ブログの書き方を披露しちゃう回SORACOM UG 九州 x JAWS-UG 熊本 共催 | #あのボタン 開発のちょっといい話とSORACOMアップデート&ブログの書き方を披露しちゃう回
SORACOM UG 九州 x JAWS-UG 熊本 共催 | #あのボタン 開発のちょっといい話とSORACOMアップデート&ブログの書き方を披露しちゃう回SORACOM,INC
 
Rustで3D graphics programming
Rustで3D graphics programmingRustで3D graphics programming
Rustで3D graphics programmingKiyotomoHiroyasu
 
エンタプライズ領域のアジャイル開発の課題 - FIT2020
エンタプライズ領域のアジャイル開発の課題 - FIT2020エンタプライズ領域のアジャイル開発の課題 - FIT2020
エンタプライズ領域のアジャイル開発の課題 - FIT2020Yusuke Suzuki
 
Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話y-uti
 
JAWS DAYS 2018 | IoT時代におけるデバイスのファームウェアとクラウドのいい関係
JAWS DAYS 2018 | IoT時代におけるデバイスのファームウェアとクラウドのいい関係JAWS DAYS 2018 | IoT時代におけるデバイスのファームウェアとクラウドのいい関係
JAWS DAYS 2018 | IoT時代におけるデバイスのファームウェアとクラウドのいい関係SORACOM,INC
 
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdfAyachika Kitazaki
 
SORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデート
SORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデートSORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデート
SORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデートSORACOM,INC
 
最近のTremaを触ってみてちょっとはまったこととか
最近のTremaを触ってみてちょっとはまったこととか最近のTremaを触ってみてちょっとはまったこととか
最近のTremaを触ってみてちょっとはまったこととかM Hagiwara
 
Report JAZUG activities 2010.08-2011.09
Report JAZUG activities 2010.08-2011.09Report JAZUG activities 2010.08-2011.09
Report JAZUG activities 2010.08-2011.09Saori Ando
 
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオンAzure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオンYasuaki Matsuda
 
G検定傾向と対策_pythonguild#3LT
G検定傾向と対策_pythonguild#3LTG検定傾向と対策_pythonguild#3LT
G検定傾向と対策_pythonguild#3LTHide Fukano
 

Similar to ゲームとモデル検査ワークショップ#1 (20)

2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf
 
佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合う佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合う
 
チップレベルでカスタマイズできることで見える世界の体験
チップレベルでカスタマイズできることで見える世界の体験チップレベルでカスタマイズできることで見える世界の体験
チップレベルでカスタマイズできることで見える世界の体験
 
株式会社カブク システム開発最前線
株式会社カブク システム開発最前線株式会社カブク システム開発最前線
株式会社カブク システム開発最前線
 
Scratchはいいぞ
ScratchはいいぞScratchはいいぞ
Scratchはいいぞ
 
PWA+WebARをECサイトで使ってみたい
PWA+WebARをECサイトで使ってみたいPWA+WebARをECサイトで使ってみたい
PWA+WebARをECサイトで使ってみたい
 
#crazy-js Quiz
#crazy-js Quiz#crazy-js Quiz
#crazy-js Quiz
 
IoT向けプラットフォーム「SORACOM」とは? 他2本
IoT向けプラットフォーム「SORACOM」とは? 他2本IoT向けプラットフォーム「SORACOM」とは? 他2本
IoT向けプラットフォーム「SORACOM」とは? 他2本
 
SORACOM UG 九州 x JAWS-UG 熊本 共催 | #あのボタン 開発のちょっといい話とSORACOMアップデート&ブログの書き方を披露しちゃう回
SORACOM UG 九州 x JAWS-UG 熊本 共催 | #あのボタン 開発のちょっといい話とSORACOMアップデート&ブログの書き方を披露しちゃう回SORACOM UG 九州 x JAWS-UG 熊本 共催 | #あのボタン 開発のちょっといい話とSORACOMアップデート&ブログの書き方を披露しちゃう回
SORACOM UG 九州 x JAWS-UG 熊本 共催 | #あのボタン 開発のちょっといい話とSORACOMアップデート&ブログの書き方を披露しちゃう回
 
Rustで3D graphics programming
Rustで3D graphics programmingRustで3D graphics programming
Rustで3D graphics programming
 
エンタプライズ領域のアジャイル開発の課題 - FIT2020
エンタプライズ領域のアジャイル開発の課題 - FIT2020エンタプライズ領域のアジャイル開発の課題 - FIT2020
エンタプライズ領域のアジャイル開発の課題 - FIT2020
 
Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話
 
JAWS DAYS 2018 | IoT時代におけるデバイスのファームウェアとクラウドのいい関係
JAWS DAYS 2018 | IoT時代におけるデバイスのファームウェアとクラウドのいい関係JAWS DAYS 2018 | IoT時代におけるデバイスのファームウェアとクラウドのいい関係
JAWS DAYS 2018 | IoT時代におけるデバイスのファームウェアとクラウドのいい関係
 
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf
20220615_Visual_Programing_IoTLT_vol11_kitazaki_v1.pdf
 
SORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデート
SORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデートSORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデート
SORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデート
 
最近のTremaを触ってみてちょっとはまったこととか
最近のTremaを触ってみてちょっとはまったこととか最近のTremaを触ってみてちょっとはまったこととか
最近のTremaを触ってみてちょっとはまったこととか
 
Report JAZUG activities 2010.08-2011.09
Report JAZUG activities 2010.08-2011.09Report JAZUG activities 2010.08-2011.09
Report JAZUG activities 2010.08-2011.09
 
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオンAzure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
 
ARCore
ARCoreARCore
ARCore
 
G検定傾向と対策_pythonguild#3LT
G検定傾向と対策_pythonguild#3LTG検定傾向と対策_pythonguild#3LT
G検定傾向と対策_pythonguild#3LT
 

More from Masaru Nagaku

GTMF2018大阪Meet-ups
GTMF2018大阪Meet-upsGTMF2018大阪Meet-ups
GTMF2018大阪Meet-upsMasaru Nagaku
 
教育・研究クラウドサービスのためのパターンランゲージ
教育・研究クラウドサービスのためのパターンランゲージ教育・研究クラウドサービスのためのパターンランゲージ
教育・研究クラウドサービスのためのパターンランゲージMasaru Nagaku
 
人類の単一個体融合に向けて
人類の単一個体融合に向けて人類の単一個体融合に向けて
人類の単一個体融合に向けてMasaru Nagaku
 
An Experiment of 1/319
An Experiment of 1/319An Experiment of 1/319
An Experiment of 1/319Masaru Nagaku
 
ワークショップ「ゲーム開発チームにおけるパトレット」
ワークショップ「ゲーム開発チームにおけるパトレット」ワークショップ「ゲーム開発チームにおけるパトレット」
ワークショップ「ゲーム開発チームにおけるパトレット」Masaru Nagaku
 
ゲーム業界から見たアジャイル開発
ゲーム業界から見たアジャイル開発ゲーム業界から見たアジャイル開発
ゲーム業界から見たアジャイル開発Masaru Nagaku
 

More from Masaru Nagaku (8)

GTMF2018大阪Meet-ups
GTMF2018大阪Meet-upsGTMF2018大阪Meet-ups
GTMF2018大阪Meet-ups
 
教育・研究クラウドサービスのためのパターンランゲージ
教育・研究クラウドサービスのためのパターンランゲージ教育・研究クラウドサービスのためのパターンランゲージ
教育・研究クラウドサービスのためのパターンランゲージ
 
人類の単一個体融合に向けて
人類の単一個体融合に向けて人類の単一個体融合に向けて
人類の単一個体融合に向けて
 
GameJamCanvas
GameJamCanvasGameJamCanvas
GameJamCanvas
 
An Experiment of 1/319
An Experiment of 1/319An Experiment of 1/319
An Experiment of 1/319
 
ワークショップ「ゲーム開発チームにおけるパトレット」
ワークショップ「ゲーム開発チームにおけるパトレット」ワークショップ「ゲーム開発チームにおけるパトレット」
ワークショップ「ゲーム開発チームにおけるパトレット」
 
ゲーム業界から見たアジャイル開発
ゲーム業界から見たアジャイル開発ゲーム業界から見たアジャイル開発
ゲーム業界から見たアジャイル開発
 
Xp20120915
Xp20120915Xp20120915
Xp20120915
 

ゲームとモデル検査ワークショップ#1

  • 1. Copyright (C) 2013 National Institute of Informatics, All rights reserved. ゲームとモデル検査ワークショップ #1 2013年9月12日 国立情報学研究所 GRACEセンター/先端ICTセンター 長久勝 mailto : nagaku@nii.ac.jp Twitter : @mnagaku
  • 2. Copyright (C) 2013 National Institute of Informatics, All rights reserved. 2 じゅんび  http://code.9leap.net/ アカウントを持ってなかったら作る http://code.9leap.net/codes/show/34479 動作確認 Javascriptのコンソール表示方法を確認  LTSA  http://www.doc.ic.ac.uk/~jnm/book/ltsa/download.html 「download ltsa」からltsatool.zipをDL、 適当な場所に展開 ltsa.batでメモリ設定
  • 3. Copyright (C) 2013 National Institute of Informatics, All rights reserved. 3 そのいち、だっしゅつげえむ  ゲームのスクリプトに潜むバグを LTSAで取ってみます  http://code.9leap.net/codes/show/42604 ログインして、Forkして、自分用の環境を作る 実行するとLTSA用のモデルがconsoleに出る // FSP から下の記述 LTSAにコピペで持って行く
  • 4. Copyright (C) 2013 National Institute of Informatics, All rights reserved. 4 おれのあたまのなかのげーむしなりお do / 鍵取得=false 開始 さて進めて どんどん進めて ぐるぐる脱出最後のドア 探索 do / 鍵取得=true 鍵発見 もうないドア開 開く 開かない 終了 次へ 次へ 次へ 次へ 周りを探すドアを開ける 次へ [鍵取得==false] 次へ [鍵取得==true] 次へ 次へ 次へ [鍵取得==true] 次へ [鍵取得==false] 次へ 次へ 次へ
  • 5. Copyright (C) 2013 National Institute of Informatics, All rights reserved. 5 けんさできるせいしつのれい  const False = 0 const True = 1 fluent HAS_KEY = <{m.s鍵発見.s最後のドア}, {m.sさて進めて.sどんどん進めて}> initially False fluent OPEN_DOOR = <{m.s開く.s終了}, {m.sさて進めて.sどんどん進めて}> initially False assert P1 = [](OPEN_DOOR -> HAS_KEY)  イベントによって変化する状態を定義し、その状態の関係をLTLで検査式として書く  P1:ドアが開いた状態の時は、必ず鍵を持っている状態でなければならない  progress END = {m.s終了.s開始}  進行性検証  どんな状態からでも、いつか「m.s終了.s開始」のイベントを起こせる  「m.s終了.s開始」のイベントが起こせなくなる進行とは、エンディングに到達できないパスがあるということ  property Test = (m.s鍵発見.s最後のドア -> m.s開く.s終了 -> Test).  安全性検証  システムを抽象化(捨象)して守るべき性質を記述  「m.s鍵発見.s最後のドア」、「m.s開く.s終了」以外のイベントを無視した場合、システムが 「Test = (m.s鍵発見.s最後のドア -> m.s開く.s終了 -> Test)」 と等価か調べる  鍵を発見していないのにドアが開いたり、鍵を複数回発見してからドアが開いたりすると、等価にならない
  • 6. Copyright (C) 2013 National Institute of Informatics, All rights reserved. 6 そのに、さされる  http://code.9leap.net/codes/show/42607  const False = 0 const True = 1 fluent DEAD_ME = <{m.s死ぬ.s終了}, {m.s終了.s開始}> initially False fluent LIVE_CAT = <{m.s終了.s開始}, {m.s猫死ぬ.s死ぬ}> initially True assert P1 = [](DEAD_ME -> LIVE_CAT)  自分を殺すのが必ず猫だとした場合、 自分が死んだ時に、既に猫が死んでいたらおかしい  ほんとは、死んだら生き返らない検査項目も必要だけど、ここでは割愛  物語の内容についての制約も検査できる  モデル化に工夫しておくと、自動化も可能  キャラ表示命令から香盤表を自動生成して、その情報を使うとか  シーンにアノテーション(タグ)を付けて、遷移以外のイベントを自動で埋め込めるようにするとか
  • 7. Copyright (C) 2013 National Institute of Informatics, All rights reserved. 7 へいこうせい  モデル検査は 本来、並行システムの検証に用いられる LTSAのexample、6章の「食事する哲学者」  ADVスクリプトに書き下されたシナリオ進行では 並行性を扱わない 登場人物毎の振る舞いを 個別のプロセスと考えると並行システムになる 個別のプロセスが並行合成されて 単一プロセス化されている  並行性のないモデル化ができるので、 状態爆発を回避できる
  • 8. Copyright (C) 2013 National Institute of Informatics, All rights reserved. 8 げーむしなりおともでるけんさ  モデル化すると、 複雑さは、組み合わせの量に変換される  人間は量を扱えない、機械は量を扱える  複雑なシナリオを高品質で実現!