ホーム < ゲームつくろー! < Lua組み込み編 その3 コルーチンで状態遷移をLuaで制御 Luaが持つ素晴らしい機能の一つに「コルーチン(coroutine)」があります。コルーチンは「関数の途中で戻ってきて、続きからまた実行出来る」という仕組みです。 こう聞いても「ん?」とハテナが付くと思います。私もそうでした。C言語にはコルーチンの機能がありません。なので、C言語に慣れている人だとピンと来ないんですよね。 例えば、キャラクタの位置を連続的に動かす事を考えてみます。最初10フレームは右へ1ステップずつ動き、次の5フレームで上へ、さらに次の7フレームで左下に移動するとしましょう。これをC言語でベタに書くとこんな感じになります: int state = STEP_1; int curFrame = 0; int step() { switch(state) { // 右へ10フレーム1
なんだか暑さと眠さで気だるくてしょうがないので気分転換になんか書いてみる。 突然だけど Lua を知ったのは2年くらい前。某NodeのPaaS開発のプロジェクトに参加した時に、カーネル内でパケットを解析して動的にL7ルーティング出来ないもんかと色々調べてた時に見つけたのが始まり。その時は実験用のサーバにとりあえずインストールして実行したらカーネルパニックで落ちました(テヘペロ)ってな感じで終わったんだけど。 その後、個人的に触ってみたらびっくりするくらい文法がシンプルな上に高速で省メモリで久しぶりに好きになった言語なのだけれど、Web系での情報があまりないのが悲しいトコ。 基本的に 組み込み言語 として紹介されてるので、その時点でスルーされてるのかもしれないけど、Nginx 上で Lua を動かすモジュールとして開発された OpenResty (CloudFlareの中の人が開発)やその上
LuaJITでお手軽3Dプログラミング (1) (2013/03/29) 世間では電子工作系の話題と違って、Raspberry Pi を使ったプログラミングの話題はあまり盛り上がっていないようですが、私は Raspberry Pi の GPU でずっと遊んでいます。 これまで C を使ってみたり (Raspberry Pi で OpenGL ES2 (1), (2), (3), (4), (5), (6) )、Python で試してみたりしていましたが、楽しく「コードを書いて実行する」事ができるのは LuaJIT という結論に達しました。 LuaJIT用のRaspberry Pi専用3Dライブラリが、やっと形になってきたので「 LuaJITでお手軽3Dプログラミング」という新シリーズを始めてみたいと思います。まずは使用するスクリプト言語 Lua と、私が今ものすごく惚れ込んでいる LuaJ
LuaJITのFFIライブラリが,FFI(Foreign Function Interface)を通した時にインターフェース越しに引数がどのように相互変換されるかは,一応ドキュメントになっています. FFI Semantics でも良くわからないことが多いので,いろいろとサンプルを作ってみました. Part 1: Hello, World with Standard C Library Lua版は,普通に「Hello, World」を表示します. FFIを通したバージョンは,Cの標準関数のprintfを通して「Hello, World」を表示します. プログラムは,1つのLuaスクリプトにまとめました. -- Pure Lua local msg = "Hello, World" print(msg) -- FFI local ffi = require("ffi") ffi.cdef[[
Luaが20周年たったらしく,メーリングリストが凄いことになっています. The earliest implementation of Lua that we have found to date has files dated 28 Jul 1993. We have dubbed that version Lua 1.0, which is available at http://www.lua.org/ftp/lua-1.0.tar.gz Lacking a precise release date, since Lua 1.0 was never released, we commemorate 20 years of Lua today. On behalf of the Lua team, I thank you all for your interest in Lua and
最近、vimの勝手スクリプトとかもluaで書いたりしていて、便利だなぁって思っています。 coroutineについてメモしておく。 coroutineの大体 coroutineは独自のluaスタックとローカル変数を持つスレッド的な物。 スレッド的だけれど、OSに制御が有るわけではなく、制御を明け渡すならロジック自体がそれを通知しないといけない。 create()するとコルーチンが作られる。resume()で実行/復帰、コルーチン内でyield()すると制御を戻せる。この時、戻り値として値をやり取りしたりもできる。 なんか適当に機能を使いまくると、こんな感じ。 local colo = coroutine.create( function( init ) if init == nil then init = 0 end local i = init while i < 10 do corou
ということで、最近はC++触ったりObjective-C触ったりJava触ったり、Lua触ったりしているわけですが、cocos2d-xに関してgumi Studyで話しました。とはいっても、中身は殆どcocos2d-xに関係ありません。 割と当たり前のことしか書いてないのですが、コンシューマゲームでも踏んだ「基本的な罠」について書いてあります。 cocos2d-xを触っていると、かなりの人たちがC++を知らずにC++を書いているという現実に出くわします。そういうとき「動いているから」で突き進むのではなく、1度止まって、自分がそれを理解しているのかを考えて見てはどうでしょうか。 ネイティブ開発アンチパターン from Isoparametric !
こんにちは。ヤマヤタケシです。 ランキングに挑戦中です。クリックしてやってください。→ 人気ブログランキングへ このブログで何回も言っていますけど、Luaっていいですよね! (Luaとはプログラミング言語の1つです。C,C++言語のアプリに組み込んで、開発効率向上のために使います) 2013.8.18(日)の勉強会に備えて、Luaの良さをまとめましょう。 Luaについてプレゼンをするけど、スライドは書かない! 書かないよ! 過去に書いた物と、 スクリプト時代 Luaは良い言語だなぁ ビジネスならLuaを選ぶべきです。 パッケージ管理の時代がやってきました! Macでtolua++をビルドする ゲームのデータはテキストで書きたいです。しかしパーサーはどうしますか? 他人のスライドで乗り切ってみせる! その良さを大いに語るプレゼンテーションを作成しようと思いましたが、既にある物は使いましょう。
Tips/OOP…オブジェクト指向について 前提:Lua のオブジェクト指向は Table を用いる。 ■簡単.. Tips/cgi…Lua を CGI スクリプトとして使う方法メモ * CGIの実現方法 Linux では、ソースの一.. Tips/continue…Lua で強引に continue を使うには なんと、Lua には、他の言語でいう continue が.. リンク集 Luaリンク集 Recently updated:luacom/pairs…2009-07-28 luacom/isMember..…2009-07-28 luacom/GetType…2009-07-28 Tips/OOP…2009-07-05 kucgi…2009-06-28 io/stdin…2009-06-28 io/read…2009-06-28 * 最新コメント:table/remove (20
第四回 Erlang 分散処理勉強会から早や3ヶ月…、学ぼう・試そうと思っていた事が思うようにできない日々を悶々と過ごしておりましたが、何とか時間を作って Erlang linkd-in driver を試すために Lua を組み込んでみました。 Source Code cooldaemon's erluna at master - GitHub 何が出来るのか? とても行数は少ないのですが、こんなんでも Erlang から Lua を呼べます。 設定ファイルを Lua で記述するような簡単な使い方は勿論、ちょっとした拡張を Lua で行うためにも利用できます。 例えば、Kai の Write/Write Conflict をサーバサイドで解決する機能を提供する計画があるのですが、幾つかの解決用アルゴリズムを Lua で記述してプラグイン化しておく事で、Erlang を知らない利用者の方で
NetBSD is a free, fast, secure, and highly portable Unix-like Open Source operating system. NetBSDカーネル内部でLuaスクリプトを動作させるためのコードがマージされた。この機能を利用するとカーネルに新しい機能を追加するにあたってC言語によるプログラミングではなくLuaスクリプトを使ったプログラミングが可能になる。カーネル開発の幅が広がるほか、高速開発のための方法のひとつとして利用できる。 Luaは軽量で高速なスクリプト言語。仕様がコンパクトで移植性に優れているという特徴がある。NetBSDはベースシステムにすでにLuaを取り込んでおり、Luaスクリプトによる記述ができるようになっている。今回カーネル内部においてもLuaスクリプトが利用できるようになったことで、C言語による開発を苦手とするユーザ
Terra is a low-level system programming language that is embedded in and meta-programmed by the Lua programming language: -- This top-level code is plain Lua code. function printhello() -- This is a plain Lua function print("Hello, Lua!") end printhello() -- Terra is backwards compatible with C, we'll use C's io library in our example. C = terralib.includec("stdio.h") -- The keyword 'terra' introd
Familiar API Luvit implements the same APIs as Node.js, but in Lua! This helps teams migrate without having to learn a new way of programming. Async Choice Choose your async model; we don’t mind; we encourage experimentation. If you don’t like callbacks and event emitters, use coroutines and write blocking style code without actually blocking your event loop! Modular Core The various projects in t
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く