Swoppで発表
「並列」に関するワークショップなのでTonyuの並列性について述べた発表.
- ゲームはオブジェクトがたくさんでてきて,それぞれ自分の意思で動く
- 状態遷移を自然に書くには,それぞれが実行単位をもったほうがよい
- この仕組みを実現するにはコルーチンが一番やりやすいよね
- でも,コルーチンって思ったほど普及していない.実装している言語が少ない.
- 「ゲームではコルーチンがよく使われている」というのを実例をあげて示す
- これで,もっとたくさんの言語でコルーチンが導入される契機になってくれれば.
- でも,ほとんどの言語でサポートされれているスレッドも使わないともったいない
- スレッドとコルーチンを両方使うアプリケーションとしてゲームを提案したい.
- Tonyu のプロジェクトボードの作品をコーパスにして,コルーチンの利用頻度をしらべた.また,スレッドを使って並列化できる部分がないかを検証した.
質問
- 他にもコルーチンの実装手段はたくさんあるよ
- ネットワーク対戦ゲームに対応させる場合.ソケットの待ちがあったらどうなる
- やっぱり処理を他のオブジェクトにゆずるでしょう
- 入力するまで待つ,というのはどうやる
- while(getkey) update ... Tonyuにはイベントハンドラの概念がない
- 状態遷移をちゃんと意識させるために,ちゃんと変数に状態をもたせて書かせたほうがよいのではないか
- 必要に応じて状態を意識した書き方もできる.Tonyuには, onUpdate() という,フレームごとに毎回呼び出されるメソッドも用意されている.
- 他に,たくさんの実行単位が動くアプリケーションといえば,Webアプリケーション(リクエストたくさん来るから). Webアプリでのコルーチンの活用法を考えてみたらどうか