lua

色々実験中

lua

正月休みの間Luaを操作するCコードをいじってました。とりあえず、Luaからネイティブオブジェクトを生成する実験と、yieldによるマイクロスレッド化の実験は完了。年明けからはもう一段規模を広げて実装をします。 正月中の調査結果については後でまとめる予…

組み込みスクリプトの組み込み(1)

さて、ようやく色々目処がついてきたので、これまでの経験を元に、ゲームフレームワークを作っていきたいと思っています。 当面は、フレームワークの話は無しで(爆)、Luaを外部スクリプトとして組み込む作業を進めて行きます。なにをLuaに担当させ、なにを…

Lua日本語化パッチ

Lua

LuaのSJISパッチを作っている方がいらっしゃいました!!! すばらっしい! http://www.water.sannet.ne.jp/sowwa/ その方の現在のblog(どこにトラバ打っていいのかわかりませんのでリンクだけ) バーチャルゲームライブラリGameCatapult成長日記 http://bl…

Shift-JISが使えない話について

Lua

Luaの文字列でShift-JISが対応してない(いわゆる「構成」を書く時に「構\成」としなきゃならないパターン)件ですが、ダブルブラケットで囲むバージョンの文字列を使えば、エスケープシーケンスをインタラプトしないので、Shift-JISでも問題無い事が分かり…

メモ

Lua

テーブル記述時に空括弧は合法(構文パースエラーにはならない)

エラーコード(C++側)

Lua

"Lua_***"のメソッドの返し値として定義されているのは以下の5つのようです(メソッドによって返る物が違うのが困り物だが……) include\lua.h(36): #define LUA_ERRRUN 1 include\lua.h(37): #define LUA_ERRFILE 2 include\lua.h(38): #define LUA_ERRSYNT…

エラーコード

Lua

Luaの実行時エラーメッセージをソースコード中に探したのですが、リソース管理されてなくて、エラーが発生したその場所でエラー文字列生成してた(泣) 可能な限り調べて表にしました(レイアウト崩れてるけど)http://someiyoshino.cool.ne.jp/insideyanesd…

Programming in Lua

Lua

asin:8590379817 恐らく現時点で出版されている唯一のLua本。来月あたり購入予定(今月は色々出費が重なってピンチ)

今のネック

Lua

構文エラーが起きた時にそれをフックする手段が欲しいです。あるんでしょうけど探してません(イベントラッパの製作が先)。

構造化テーブルへのアクセス

Lua

昨日延々やっていたのはイベントシーンの記述をLuaのテーブルで行って、その中身をC++から取得するテストでした 結局、スタックをがちゃがちゃいじってテーブルにアクセスするより、ツリーの末端をまるごと返すLuaメソッド書いた方がはるかに簡単でした。 ま…

lua_next使用時の注意

Lua

イテレーションにおける要素の取得順序は不定。number,tableなどもソートされない。 ちゅーことはですよ。インデックスを指定して値を取るか、ラベル名を指定して値を取るかしかない(そりゃそうか?) ソート順序の指定、型コレクションを取得する方法につ…

テーブル内テーブルへのアクセス

Lua

luaスクリプト test={3,4,5,test2={10,11}} test.test2テーブルにアクセスする //グローバル配列へのアクセス lua_getglobal(L, "test"); printf("pop%3d\n",lua_gettop(L)); lua_pushstring(L, "test2"); lua_gettable(L, -2); lua_pushnil(L); printf("%3d…

配列のイテレーション

Lua

//配列の巡回 lua_pushnil(L); while(lua_next(L ,-2) != 0) { printf("%3d\n",lua_gettop(L)); printf("%s - %s - %s\n", lua_typename(L, lua_type(L, -3)), lua_typename(L, lua_type(L, -2)), lua_typename(L, lua_type(L, -1))); printf("%f - %f\n", l…

単純な配列へのアクセス

Lua

luaのスクリプトで、グローバルにこんな配列があったとして test={3,4,5} これにアクセスする //グローバル配列へのアクセス lua_getglobal(L, "test"); lua_rawgeti(L, -1, 1); printf("%f\n",lua_tonumber(L,-1)); lua_pop(L, 1); lua_rawgeti(L, -1, 2); …

lua_rowgetiはバグ?

Lua

lua_rowgetiで配列から値を取り出そうとすると、結果がスタックの0に格納されます。でもスタック0って使用禁止では? ←勘違い。配列インデックスの初期値を"0"にしてて、スタックが変になってたっぽい。正しくは"1"から。

lua_numberは

Lua

lua_numberはdoubleの#defineです

「継続」と「末尾呼出除去の最適化」の違い

Lua

Luaには「末尾呼出除去の最適化」という仕様があって、そもそもみはえるはこの「末尾呼出除去の最適化(名称が長いよ!)=継続」なのかと思っていました。以下、Luaにおける「末尾呼出除去の最適化」を説明します。詳しくはリファレンスマニュアルを参照し…

LuaをYAMLパーサーにする

Lua

一応確認しておくと、YAMLのパーサーをLuaで実装する訳ではありません。Luaのデータ構造でYAMLと同等の物が記述できないかという話です。リプレーサは作るかもしれませんが。いや、だったらパーサー作っても同じか?当面の作業は以下の2つ 既にやっている人…

Luabind

Lua

http://luabind.sourceforge.net/ メタプログラム系のC++ラッパ。lua_stateの取り回し方法として module(L) [ //lua_state Lの有効範囲 ]; と記述させるのはもはや感動的ですらある。C++を読んでいるとは思えん。本当に動くのかこれ^^;と思ったら現在beta…

覚書き

Lua

関数名を指定せずにcallした場合http://lua-users.org/wiki/CppLuaDataPassingTutorialグローバルが実行される……のかな? という事は、グローバルコードはロードされただけでは実行されないって事? ああ、まあそりゃそうか グローバルのチャンク=グローバ…

内部関数呼び出し

Lua

C++からLua内の関数を呼び出す際、関数名をlua_getglobalでスタックに積むわけですが、なぜ「lua_getglobal」なのでしょうか? 以下に解説します

作業中

Lua

毎回lua_stateを渡さなければならないCっぽさがむかつくので、lua_stateをラップするだけの単純なC++クラスを作っていたのですが、よく考えたら、Luaから呼び出されるC関数は、引数にlua_stateを取るので、その時このクラスは役に立たない(もげー)。な…

組み込み指向スクリプト(?)Lua

Lua

年内の作業は、まずLuaをタスクシステムに組み込む事です。LuaはVBやPascalライクなスクリプト言語で、言語思想自体が別言語から呼び出される事を前提に設計されており、多くのソフトウェアで採用されている、オープンソースな言語です。 コト、ゲームにおい…