スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--.--.-- | スポンサー広告

[Lua] 日本語Lua5.1リファレンス/LuaEdit などなど

まず、
Lua5.1リファレンスマニュアルが日本語に翻訳されています!
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html


この文書は、 Lua 5.1 Reference Manual を原著者に無断で日本語に訳した、
非公式の Lua 5.1 リファレンスマニュアルである。
誤訳の指摘は歓迎するので、yuno@users.sourceforge.jp へよろしく。

・・・うは。
なにはともあれ、日本語のリファレンスがあるのはありがたいです。まさに「神」ですなー。

そのほか、Programming In Lua、LuaEdit3.0.1a、VS2005 Lua Language Packなど↓↓↓


【“[Lua] 日本語Lua5.1リファレンス/LuaEdit などなど”の続きを読む】
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

2006.03.24 | Comments(2) | Trackback(0) | Lua

[Lua] Luaの数値型の精度の問題

こないだSquirrelの記事で予告したので、忘れないうちに書くことにします。
Luaの公式メーリングリストでもかなり何度も話題になっている()ところですが、
Luaの数値型の精度について、特にDirectX等と一緒に使う場合には注意しなければなりません。

ゲームなどの用途では、色(RGBA)を表すのに32bitの整数で表現することがよくありますが、このような値をLua変数に代入し、演算した場合に化けてしまう場合があります。(ちなみに、Lua5.1からは0xFFのような形式で数値を書けるようになりました)

Luaでは変数に数値を入れることができますが、数値を扱うための「数値型」という型がひとつあるのみで、整数型や浮動小数点型というものはありません。整数だろうが浮動小数点だろうが、おかまいなくこの「数値型」の値として同じ(C言語における)型の変数で扱われます。この数値型の実装には、デフォルトではC言語でのdouble型が使われます。

では、デフォルト状態で、Luaの変数は32bitの整数を完全に表現できるでしょうか?

これは通常はOKです。double型は、整数を扱う場合には53ビット分の精度がありますので、32bitのint型の役割を十分に果たします。整数と整数の四則演算(値が小数になるような割り算を除いて)では、誤差が発生することもありません。このため通常は特に問題はないところです。

しかし、これがうまく機能しなくなる場合というのがあります。


【“[Lua] Luaの数値型の精度の問題”の続きを読む】

テーマ:プログラミング - ジャンル:コンピュータ

2006.03.24 | Comments(1) | Trackback(2) | Lua

[Lua] ラグナロクでLua?/SciTEのセッションファイル

えーっと、どうやら最近ここのブログに飛んでくる人の大半がラグナロクオンライン(以下RO)のホムンクルス関連で来られているみたいです。
ついこないだ、ROにLuaを使用したホムンクルス制御システムが搭載されたためなんですが、Luaが広まりつつあることが喜ばしい反面、私はROやってないので参加できずどうも歯がゆいところ。そういや5日間無料チケット持ってたような・・・。

ちなみに、SciTE関連のページのアクセスが多いようなんですが、私もここしばらくSciTEでLuaのプログラムを書きまくっていますし、そこそこ快適なエディタかなと思います。

せっかくなので、ちょっとしたSciTEのTips(Windows向け)をご紹介。
SciTEでは、複数のファイルの編集状態を「セッションファイル」に保存することができます。そこで、このセッションファイルをダブルクリックすればセッションファイルに含まれるファイル群が一括でオープン!、となれば便利なのですが、なかなか簡単にそうもいきません。単純な関連付けではテキストファイルとして開いてしまいます。

そこで、以下のファイルをバッチファイルとして任意の場所に保存し、エクスプローラで.sesに関連付けてください。
セッションファイルをダブルクリックすれば、セッションファイルに含まれるファイル一式を抱えた状態でSciTEが起動してくれます。

OpenSciTESesion.bat(674 byte) update 2006/11/10

SCITEPATHとLUAPATHはそれぞれSciTEのインストールフォルダとLua.exeのパスに書き換えてください。Luaはver5以降のexe必須です。(手前味噌ですがこちら

実装としては・・・Luaでコマンドラインをすこーし加工しています。-eオプションを使うとインラインでスクリプトを書ける、という機能を利用しています。

バッチファイルの内容は以下のような感じですが、最後の行は表示の関係で1行を3行に分割していますのでご注意ください。


@echo off

rem <SciTEセッションファイル関連付け支援バッチファイル>

rem SciTEのセッションファイル(*.ses)にこのバッチファイルを
rem 関連付けてください。
rem セッションファイルのファイル群を抱えてSciTEが起動します。
rem by はむ!(2006/3/19)

rem SciTEのインストールフォルダ(フルパス)を記述してください
SET SCITEPATH=G:\lua_tools\wscite166\wscite\

rem Luaのexeのパスを記述してください
rem(フルパス、またはパスが通っている場合はコマンド名のみでOK)
SET LUAPATH=Lua.exe

rem セッションファイルをパラメータとしてSciTEを起動
"%LUAPATH%" -e "cmd=[[start \"\" \"%SCITEPATH%\SciTE.exe\"
\"-loadsession:]]..string.gsub([[%1%]], [[\]], [[\\]])
..[[\"]];print(cmd);os.execute(cmd);"


コマンドウィンドウが残ってしまうのは愛嬌ってことでご勘弁を。
なにか良い方法あれば教えてくださいませ。


追記(2006/11/10)

kuzeさんのアドバイスにより、startコマンドを使用してコマンドウィンドウを消去することができました。
また、SCITEPATHにスペース文字を含んでも大丈夫なように " をつけました。

テーマ:プログラミング - ジャンル:コンピュータ

2006.03.19 | Comments(2) | Trackback(0) | Lua

[Lua] LuaJIT 1.1.0 リリース&VC++.Net向けプロジェクトファイル

以前にもご紹介しましたが、Luaの実行を高速化するLuaJITのLua5.1対応版がリリースされました!
なお、Lua本体と違ってx86系CPU用のみですのでご注意を。

LuaJIT公式サイト
http://luajit.luaforge.net/


修正点はこちら
http://luajit.luaforge.net/luajit_changes.html
一部SSE2を使ったり、インライン化やアライメント調整、オプティマイザの調整、ライブラリ関数の最適化、などで高速化したようです。

最適化コードの用件を満たさない場合には動的にオプティマイズ解除を行うようにすることで、生成コードがコンパクト(約30%減)になったようです。


性能評価はこちら
http://luajit.luaforge.net/luajit_performance.html
前回の1.0.3と比較してもめちゃめちゃ高速化してますね・・・。すげぇの一言。

なお、GCテストと同様のことをさせると、なんか序盤でつっかかって良い成績が出ませんでした。前バージョンの1.0.3でテストしたときはLua5.1と同様の挙動をしていただけに少々謎です。GCそのものにはあまり、というか全く手を入れていないようですが・・・。

ちなみにLuaJITもMITライセンスなので、Luaと同様、商用アプリにも使いやすいのが良いですね。


ただ紹介するだけも何なので、VC.Net(2003)用プロジェクトファイル作ってみました。
LuaJIT110_vc7proj.zip(3,689 byte)

LuaJIT1.1.0を展開したディレクトリの中にぶっこんでluajit.slnを開いてReleaseビルドすればOK!です。binディレクトリにexeとdllができます。

テーマ:プログラミング - ジャンル:コンピュータ

2006.03.16 | Comments(1) | Trackback(0) | Lua

[Lua] Squirrel :Luaの後継者?

たしか2chのLuaスレで見つけたんだったと思いますが、最近squirrelがちょっと気になる存在です。

公式サイトはこちら。
http://www.squirrel-lang.org/

なぜ気になるかというと、LuaからDNAを受け継ぎつつ、ゲーム用の組み込みに関してLuaで問題のある点を綺麗にクリアしているためです。(もしくは、クリアしようとしている・・・かな)

squirrelの作者はFarCryでエンジンにLuaを組み込んだ人らしく、Luaについて良い点・悪い点を知り尽くしているということで、期待が持てます。

全体のつくりや言語の基本的な特徴はLuaに非常に類似したものですが、
以下の点でLuaよりいいかも・・・と思わせます。


【“[Lua] Squirrel :Luaの後継者?”の続きを読む】

テーマ:プログラミング - ジャンル:コンピュータ

2006.03.10 | Comments(0) | Trackback(0) | Lua

[Lua] Lua5.1のGC実行効率に関する考察

先日リリースされたLua5.1ですが、インクリメンタルGCが特徴のひとつとなっています。

GC(ガーベージコレクション)は、不要になったメモリを回収し、解放する機構のことですが、これが結構時間のかかる動作で、最近Luaを使った自作システムのプロファイルをAMD CodeAnalystで取ってみたら実行時間のほとんどがGCにかかっていた・・・ということもありました。基本的には動作の早いLuaだけに、GCがある種のネックともなっています。

Lua5.1では、インクリメンタルGCによって、Lua5.0までは一括で全メモリに対して実行するしかなかったGCを、細切れに実行することができるようになりました。特にゲームなどの半リアルタイム用途のアプリにおいて、GCが実行される時に突然大きく負荷がかかることを防止することができます。

・・・というのが口上ではありますが、しかし、そもそもGCってどうなの?どういう特性を持っているの?というとなかなかよくわからないものです。

また、Lua5.1ではcollectgarbageでいくつかパラメータを設定できますが、どういう値を設定すればいいのか、なかなか手がかりがないものと思います。

そこでいろいろ実験してデータを取ってみました。


注意)この実験では、ガーベージとして長めの文字列を使用したため、ガーベージが溜まることによる悪影響が現実的な場合の数十倍程度大きく表れている可能性があります。詳細はこちらの記事でご確認ください。


【“[Lua] Lua5.1のGC実行効率に関する考察”の続きを読む】

テーマ:プログラミング - ジャンル:コンピュータ

2006.03.06 | Comments(0) | Trackback(0) | Lua

新しい記事へ <<  | HOME |  >> 古い記事へ

広告:

カテゴリ展開メニュー

  • 未分類(13)
  • Lua(38)
  • プログラミング(11)
  • 食べ物(3)
  • SPAM(2)
  • ゲーム開発(4)
  • GIS/GPS/GoogleMaps(2)
  • スポーツ(1)
  • Skype API(1)
  • AR(1)

はてブ ランキング

ブログ全体: このWikiのはてなブックマーク数

プロフィール

はむ!

Author:はむ!
よく使う言語・環境:
C++,C,Lua,java,VBA,DB
たまにPHPとかjavascript
血液型:O型

メール: lua%ham.nifty.jp
(%を@に変えてください)
ついったー: @hammmm

Lua関連アンテナ

ブロとも申請フォーム

この人とブロともになる

全記事表示リンク

全ての記事を表示する

ブログ内検索


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。