メモ
- LÖVEで音周りを弄っています。
- Luaは引き続き勉強するにして、LÖVEの他にもLua使えるゲームエンジンあったよなあと思ってちょっとググったり自分専用のWiki検索したりしました。
- マルチプラットホームだとCocos2D-Xが一番有名ドコロだと思うんですが、今、公式IDEだとJavaScriptだけでLuaが使えなくなってますね。
- あとMaratisていうのが良い感じなんですけど、開発止まってるようで悲しい。
- WindowsってことだとAIMとかAEnなんてのもちょっと触ってみました。
Cocos2d-x - World's #1 Open-Source Game Development Platform
http://www.maratis3d.org/
AIMS Headquarters
AEnオンラインヘルプ
- あとJavaScriptも
- 今はLuaをイジってますが、j5.jsもボチボチと。
- 音のタイミングとかはこっちのほうが自由度は高いかも。
- とはいえウェブブラウザなんで厳密にって訳には行かないかもですな。ちょっと実験してみよう
- UnityもJavaScriptで書けるんだよな。
- あと、Unityで音の加工も色々出来そう。
- 今はLuaをイジってますが、j5.jsもボチボチと。
ラングトンのアリ
- 引き続きLÖVEで遊んでいます。
- いろんな言語をとっかえひっかえ試しては形にならずに放置していましたが、取りあえず今回はこのLÖVEとLuaで前にQB64で大雑把に作ったシーケンサーの骨組みから完成させるまで作ってみようと自分に課しました。
- まあでも最初は公式Wikiのチュートリアルを写経するわけです。
- 写経ついでにちょっとアレンジしたりして勉強するのが速いですよね。下みたいに点を打つついでに動かしてみるとか。
- 写経だけっていうのも飽きてきて、そろそろゼロから何か書こうかということで、目標アプリではテノリオンみたいな感じにしたいので取りあえずみんな大好きライフゲームでも、と思ったんですが、ふと思いついて同じセル・オートマトンでもラングトンのアリを書くことにしました。簡単だし。
- それでやってみたらサクッと書けました。まだこのレベルならLuaとLÖVEで引っかかることは無いですね。配列が1始まりなのが変わっているくらい?
- Wikiを見るとセルの色でのバリエーションが研究されているみたいだけど、アリの歩く幅を色々変化せてみたりしました。
- 向きによって歩く幅が違うようにしつつ、縦横での一定の比率にするとか、ある一方向だけ他の方向と違う歩幅にするとか。
- で、やってみた結果
- 縦横の歩幅の比が整数の場合はオリジナルと同じような挙動の場合が多いようです。
- 縦横比が整数でない場合、一方向だけ異なる値の場合、はパターンを描きながら直進するパターンが多いようです。
- ただし、どういう理屈でそうなるのか判らないのですが、突如後戻りしたり曲がりだしたりするので油断がならない。
- そうとう大きいフィールドを作らないと詳しく調べられないので、このプログラムでは探索に限界がありそう。
- 全くのランダム、カオスなパターンというのは今のところは出てきてません。
- オリジナルのパターンでも10000ステップ超えたあたりで必ず直進パターンに移行するとか、直進開始後に適切なパターンに衝突すると巻き戻しが起こるとか、ライフゲームに負けず劣らず面白い挙動をするラングトンのアリですが、バリエーションも探すと色々面白そう。
- 見てて面白かったパターンのソースを晒してみます。LÖVE0.10.1なら動くはず。
- 最初見ていて予想するのとは違う展開になると思います。
- Web上でも動きますがかなり遅いので100倍速にしています。
- 本当は必要なところだけ画面を書き換えればいいんだよな。
- http://lovefiddle.com/FHFYFHgN3b44GiC9s
--ラングトンのアリ・バリエーション for LÖVE0.10.1 function love.load() -- width = 198 height = 148 -- ant = {} ant.x = width / 2 ant.y = height / 2 ant.direction = 1 -- map = {} for i=1, width do map[i] = {} for j=1, height do map[i][j] = 0 end end end function love.update() for i=1, 20 do if map[ant.x][ant.y] == 0 then map[ant.x][ant.y] = 1 ant.direction = ant.direction + 1 if ant.direction > 4 then ant.direction = 1 end next_pos(ant.direction) else map[ant.x][ant.y] = 0 ant.direction = ant.direction - 1 if ant.direction < 1 then ant.direction = 4 end next_pos(ant.direction) end end end function love.draw() for x=1, width do for y=1, height do if map[x][y] == 0 then love.graphics.rectangle("line", x * 4, y * 4, 4, 4) else love.graphics.rectangle("fill", x * 4, y * 4, 4, 4) end end end end function next_pos(a) -- if a == 1 then ant.x = ant.x - 2 elseif a == 2 then ant.y = ant.y + 1 elseif a == 3 then ant.x = ant.x + 1 elseif a == 4 then ant.y = ant.y - 1 end -- if ant.x < 1 then ant.x = width end if ant.x > width then ant.x = 1 end if ant.y < 1 then ant.y = height end if ant.y > height then ant.y = 1 end end
LÖVEメモ その3
- LÖVEを色々いじって遊んでいます。
- 公式サイトのチュートリアルに一通り作例があるのでそれ見ると大体どんな風に書けばいいのかが判ってきます。
- あと日本語の解説ページだとここが詳しかった。
- 英語の解説ページも結構ありますが、Luaはバージョン違うと結構動かないことが多いので、出来るだけ作例とバージョンは合わせた方がいいのだけれど、英語ページでバージョンまで言及してなくて、あれっ?て事になったりするので、今最新の0.10.1を使うなら上の二つのページを見た方が確実かも知れない。
- 文法というか書き方は、まんまLuaなのでLuaが判っている人なら戸惑うことなくどんどん書けそう。
Programming in Lua プログラミング言語Lua公式解説書
- 作者: Roberto Ierusalimschy,新丈径
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2009/08/28
- メディア: 大型本
- 購入: 5人 クリック: 78回
- この商品を含むブログ (18件) を見る
- メディア:
- この商品を含むブログを見る
- 構造としてはj5.jsなんかと似ている。
- ゲームというのはある種のステートマシンなので大体似てしまうのかも。
- スケルトンとしてはこんな感じで3つのコールバックがメインになっている。
- updateとdrawはデルタタイム毎に呼び出されて更新されてて、その他、キーやジョイスティックの入力なんかも、この3つの関数に書いても、入力の都度などその都度処理が行われる。
function love.load() --ここでデータの読み込みやテーブルの定義などをする end function love.update() --ここでフレーム毎の処理を行う end function love.draw() --ここで画面描画を行う end
メモっていうかLÖVE
- 結局ワナビーでコーディングも出来てないので見聞きしたことのメモ書き
- 自分が使いたいプログラム言語やフレームワークというのはこんな感じ
- 音と画像が簡単に操作できる
- それらがリアルタイムに動いてほしい
- 3Dも簡単に扱えたらなお良し
- 音に関してはサウンドファイルの再生だけではなくて、もう少しディープにいじれて欲しい
- マルチプラットホームでスマホも視野に入っていたら嬉しい
- 単独アプリとして配布できると嬉しい
- 音と画像が簡単に操作できる
- それに合うもので触っていたものはこんな感じでどれもモノになってないという
p5js.org
Processing.org
WarmPlace.Ru. Pixilang Programming Language
LÖVE - Free 2D Game Engine
- それで一番最後のLÖVEを久しぶりに調べていたら音をサウンドファイルの再生じゃなくていじるってページがあって楽しそうだった
- LÖVEはLuaで書けるSDLを中心とした2Dゲーム向けフレームワークで、公式ページとか何だかファンシーなテイストなのが持ち味
- スクリプト読ませず立ち上げるとそれぞれのバージョンごとにカワイイサンプルが立ち上がる
- 最新バージョンはこれ
- 公式Wikiも一部日本語訳されていたのは知っていたのだけれど、結構ごっそり日本語訳されてDLできるようにもなっていて調べやすくなった
- LinuxMintでも0.10.Xバージョン対応していたから対応速いのかも
p5.js素晴らしいですね。
アルバムも無事発売になって、完全放置だった自分のHPも少し手を入れていました。
senjiniban.hatenablog.com
それでようやくp5.js触り始められて、機能確認以上のものではないですが、今日はこんなもの作っていました。音が出るので注意。
http://onbangdo.net/testone/
ちょっとずつ、色々作ってみる予定。
こんなにイケメンではない。
紹介していただいているのはとっても嬉しいんですが誰だお前
www.terapija.net
ていうか何語なんだろう?