こんにちはマイコン制御

May FORTH be with you.

LÖVEメモ その3

  • LÖVEを色々いじって遊んでいます。
  • 公式サイトのチュートリアルに一通り作例があるのでそれ見ると大体どんな風に書けばいいのかが判ってきます。
  • あと日本語の解説ページだとここが詳しかった。
  • 英語の解説ページも結構ありますが、Luaはバージョン違うと結構動かないことが多いので、出来るだけ作例とバージョンは合わせた方がいいのだけれど、英語ページでバージョンまで言及してなくて、あれっ?て事になったりするので、今最新の0.10.1を使うなら上の二つのページを見た方が確実かも知れない。
  • 文法というか書き方は、まんまLuaなのでLuaが判っている人なら戸惑うことなくどんどん書けそう。
    • 自分は買ったままで積読だったLua公式本を読みつつ、チュートリアルを触ったり人のプログラムを読んだりって感じです。
    • 洋書でLÖVEの解説本もありますね。

Programming in Lua プログラミング言語Lua公式解説書

Programming in Lua プログラミング言語Lua公式解説書

  • 構造としてはj5.jsなんかと似ている。
    • ゲームというのはある種のステートマシンなので大体似てしまうのかも。
    • ケルトンとしてはこんな感じで3つのコールバックがメインになっている。
      • updateとdrawはデルタタイム毎に呼び出されて更新されてて、その他、キーやジョイスティックの入力なんかも、この3つの関数に書いても、入力の都度などその都度処理が行われる。
function love.load()
--ここでデータの読み込みやテーブルの定義などをする
end
function love.update()
--ここでフレーム毎の処理を行う
end
function love.draw()
--ここで画面描画を行う
end
  • 上の公式本はRenoiseのスクリプトLuaが使われていて、何かできるかしらと思って買って積読になっていたんだけれど、LÖVEで慣れたらRenoiseに再挑戦するのも良いかも。
  • でもって改めてLuaを勉強しているんだけれども、割合判りやすいと思いますが、いくつか課題もあって、以下自分用メモ
    • データ構造はテーブル一択。でもテーブルに何でも放り込めるのでこれで何とかなってしまう。
      • いわゆる配列として使える
      • テーブルの要素にテーブルも使えるので多次元配列はもちろんできる
      • 連想記憶としても使える
    • 関数もテーブルの要素として扱えるので関数型言語っぽい使い方も出来る
    • 配列の要素にアクセスするときにx["a"]でもx.aでもいけるので、オブジェクト指向ぽく書くことも可能
    • コルーチンのところまでまだ読み進んでいないんだけれど、コルーチンはschemeの継承ぽいようなので、ゲームのような並行処理をいっぱいするものには便利に使えそう
  • あと、いま使っているLÖVE0.10.1はLua5.1ベースなんだけれど、当然のことながらLua5.1で書かれたらLua用のライブラリならそのまま使える。
    • LuafftというLuaだけで書かれた高速フーリエ変換ライブラリがあって、それを使ったLÖVEのアプリとかあった。前のエントリーでも書いたけれど、音をいじるライブラリをLuaだけで書いて十分実用になるというのはさすがスクリプト言語最速を謳っているだけのことはあるのかも。