Swoppで発表

「並列」に関するワークショップなのでTonyuの並列性について述べた発表.

  • ゲームはオブジェクトがたくさんでてきて,それぞれ自分の意思で動く
  • 状態遷移を自然に書くには,それぞれが実行単位をもったほうがよい
  • この仕組みを実現するにはコルーチンが一番やりやすいよね
  • でも,コルーチンって思ったほど普及していない.実装している言語が少ない.
  • 「ゲームではコルーチンがよく使われている」というのを実例をあげて示す
  • これで,もっとたくさんの言語でコルーチンが導入される契機になってくれれば.
  • でも,ほとんどの言語でサポートされれているスレッドも使わないともったいない
  • スレッドとコルーチンを両方使うアプリケーションとしてゲームを提案したい.
  • Tonyu のプロジェクトボードの作品をコーパスにして,コルーチンの利用頻度をしらべた.また,スレッドを使って並列化できる部分がないかを検証した.

質問

  • 他にもコルーチンの実装手段はたくさんあるよ
    • Cのsetjmp,グリーンスレッド,Fiber,python,Modula,LUAScheme
    • あるけど,素人さんに目に触れるものがほとんどない. HSP , VB , Flash あたりがサポートしてくれていれば.
  • ネットワーク対戦ゲームに対応させる場合.ソケットの待ちがあったらどうなる
    • やっぱり処理を他のオブジェクトにゆずるでしょう
  • 入力するまで待つ,というのはどうやる
  • 状態遷移をちゃんと意識させるために,ちゃんと変数に状態をもたせて書かせたほうがよいのではないか
    • 必要に応じて状態を意識した書き方もできる.Tonyuには, onUpdate() という,フレームごとに毎回呼び出されるメソッドも用意されている.
  • 他に,たくさんの実行単位が動くアプリケーションといえば,Webアプリケーション(リクエストたくさん来るから). Webアプリでのコルーチンの活用法を考えてみたらどうか