How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
はじめに ここでは、スクリプトバージョン2から導入されたマイクロスレッドというものについて解説していきます。プログラムをかじった事がある人でも、マイクロスレッドというものにあまりなじみのない人は多いのではないかと思います。マイクロスレッドは、特にゲームにおけるアニメーション処理において非常に重宝される機能ですので、是非ともマスターしておきましょう。 ↑ 1−1.概念 マイクロスレッド(ファイバーと呼ばれることもある)とは、中断可能な処理のかたまりです。関数やサブルーチンでは一旦呼び出し元に戻るとそれっきりですが、マイクロスレッドでは一度中断した部分に、また後で戻ることができます。 図 1-1-1 関数やサブルーチンの処理の流れ 図 1-1-2 マイクロスレッドの処理の流れ マイクロスレッドは一度に複数立ち上げることができ、まるで並列して処理を行っているような感じになります。 図 1-1
■ [event][Ruby/SDL] Ruby1.9のFiberはゲームにも使えるのか? 結論から言うと、余裕で使える。 今使ってるノートPC (PenM 1.2GHz, メモリ1GB) だと300キャラくらいまで大丈夫な感じです。 大丈夫というのは「描画フレーム数が50/秒以上」とかそんな。 ていうかFiberってなによ いわゆるコルーチンです。 ふつーのゲームプログラミングでは、敵を「右→下→左→上」という順に動かすために「いま動作のどこまでやったかフラグ」 を用意したりして頑張るんですが、コルーチンがあればこんなに簡単に。 def act_move1(i) @x = rand(640) @y = rand(480) 40.times{ @x += 8; Fiber.yield } # 40回右に動く 40.times{ @y += 8; Fiber.yield } # 40回下に動
Lua のコルーチンはとても便利ですが、意外とあんまり使われていないようなので、簡単な使い方をまとめてみたいと思います。 基本 Lua コルーチンは、関数に対して「途中で抜けて、あとで戻る」ための機能を追加した物です。 coroutine.yield コルーチンの中心的な機能である「途中で抜ける」には coroutine.yield という関数を使います。 function ex1 () coroutine.yield "HELLO!" coroutine.yield "HELLO AGAIN!!" return "SEE YOU!" end こんな風に使うと、関数の途中で抜けてそのときに、返り値として "HELLO!" や "HELLO AGAIN!!" という文字列を返します。 ただし、ここで定義した ex1 という関数はこのままでは「ただの関数」なので、この yield は使えません
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く