LÖVEのライブラリとデータフォーマット周り
- LÖVEは標準でも色々なデータフォーマットに対応しているけれど、色々なデータを扱えるようになるライブラリを有志の方々が作ってます。
- この人のつくるライブラリはツボに入った。
- それで上のブログのLandon ManningさんのライブラリSTIとか他にもライブラリがあるんだけれど、Tiledというマップデータを扱うライブラリでTiled本体を知りました。
- Tiledはスクリーンショットの通り2Dゲームのマップを編集するソフト。マップ画像だけでなく、オブジェクトとかも配置できる。Windows、Mac、Linuxに対応。
- 面白いのがデータのエクスポートで、CSVはもちろんなんですが、json形式、JavaScriptファイル、Luaファイルにエキスポート出来る。
- あと、Landon Manningさんは前回紹介したlove3dも作っているんだけれど、これを作るために数学計算用ライブラリcpmlとか3Dモデル読み込みライブラリiqmとかも作ってる。
- 最後にリンクまとめ張り
github.com
github.com
github.com
Tiled Map Editor
MakeHuman | Open source tool for making 3d characters
Inter-Quake Model (IQM) Format
- The IQM development kitが正式に対応しているのはblenderの2.64まで
Windows10の大規模アップデートの対応とか
- 前にも書きましたが自分の家のPC環境はノートPCでWindwos10とLinuxMintのデュアルブートで、今はLinux使うことが多い。
- なぜならば、Windows10の大きなアップデートがあったわけですが、それが上手くできてなかったんですね。
- Windows10だと自動更新の設定オプションとか見えにくく判り難くなってるので、基本おまかせでやってるんですがそれだと今回の大規模アップデートの際に、なんかビデオのコーデックのライブラリかなんだかがレガシーで、アップデートすると動かなくなる可能性があるので更新できませんでした、となって終了してしまうのでした。
- これが結構な頻度で発生するので、段々起動とか動作が重くなってきた。
- Windows10だと自動更新の設定オプションとか見えにくく判り難くなってるので、基本おまかせでやってるんですがそれだと今回の大規模アップデートの際に、なんかビデオのコーデックのライブラリかなんだかがレガシーで、アップデートすると動かなくなる可能性があるので更新できませんでした、となって終了してしまうのでした。
- 前のWindowsの時、XPとか7の時もこのアップデート関連で段々重くなってきて、それが嫌でLinuxにシフトしていたこともあるんですが、Windows10になって、そこら辺が解消されて良い感じに動くようになり、ソフトウェア資産の多さ(音楽用VSTはやっぱりWIndowsの方が楽)でWindowsに戻ってきてたのですが、こんな調子になってきて、やだなーと思ってちょっとLinuxに避難していたという状況。
- そんな状況だったのですが、おまかせで更新するのじゃなくて、更新用のアプリをダウンロードして、じっくり更新させたら(ほんとうにじっくりで30分以上掛かってる)ビデオコーデック問題も片付いて、無事大規模アップデートに対応することに成功しました。
- このノリで次回大規模アップデートも上手く対応できて、予告されてるHMDとかこの安ノートPCでも対応できたりしたら良いなあ
- そうしたらUnityとか頑張っちゃうんだが
- LÖVEの方は本当にやったりやらなかったりでボチボチ
- シーケンサーの方は奥さんも使ってみたいというリクエストを貰ったので、まずプチコンmkIIとかにもあるような簡単シーケンサーを完成させる事にしました。
- サウンドエンジンは出来て、ビートに合わせてシーケンスだけじゃなくて背景とか細かく動かすとかは出来た。
- ユーザーインターフェースは面倒なんで、公式Wikiにある先達のライブラリを利用させてもらってこれから作る予定。
- サウンドエンジンは出来て、ビートに合わせてシーケンスだけじゃなくて背景とか細かく動かすとかは出来た。
- あと、シーケンサーとは別にやっぱり3D出来たら嬉しいな、と思ってフォーラムでLove3Dライブラリ見て、デモをダウンロードしたけど動かなくて、ソース読んで直して動かす、ってところまでは来ました。
ライブラリ作者のデモムービー
www.youtube.com
風邪の効用
- 『風邪の効用』という本があって実はまだ未読なのだけれども、整体の創始者である作者の「風邪は自然の健康法である。風邪は治すべきものではない、経過するものであると主張する著者は、自然な経過を乱しさえしなければ、風邪をひいた後は、あたかも蛇が脱皮するように新鮮な体になると説く。」(「BOOK」データベースより)という風邪に関する考え方は非常に影響されたところがある。
- この1週間位無気力感がひどくて必要最低限以外の事はほとんど手につかなかったのだけれども、週末にあまりに酷い頭痛と軽い吐き気で起き上がれなくなってしまい1日寝ていたら、次の日に回復して、なんか気力も随分回復したのだった。
- 風邪の場合のような理屈は判らないんだけれど、身体が心身の不具合を治すために頭痛を起こしていたんだと思う。
- こういう病に対する東洋医学的な考え方はとてもしっくり感がある。
- 風邪の場合のような理屈は判らないんだけれど、身体が心身の不具合を治すために頭痛を起こしていたんだと思う。
- おかげで昨日は最近出来なかったLÖVEのプログラミングが結構進んだのだけれども、今やり方は大体判っているんだけれどちょっと面倒臭いところに差し掛かって、はてなに逃避しているところ。
- 逃避ついでに、またちょっとDEPTHやったり。
- 自分のノートPCはWondows10とLinuxMintのダブルブート環境なのだけれど、Windows10になってからWindows環境で使うことが多かったけれど、最近Linux使う事が増えてきた。Linuxだと誘惑が少なくてプログラミングに集中できて良いのだ。
- 作者: 野口晴哉
- 出版社/メーカー: 筑摩書房
- 発売日: 2003/02
- メディア: 文庫
- 購入: 10人 クリック: 90回
- この商品を含むブログ (153件) を見る
- 出版社/メーカー: ソニー・コンピュータエンタテインメント
- 発売日: 1996/12/06
- メディア: Video Game
- 購入: 1人 クリック: 13回
- この商品を含むブログ (17件) を見る
メモ補足
- LÖVEで音楽のBPMをきっちりキープするならWAVEというライブラリがあるのを見つけた。
- LÖVEのライブラリは基本Wikiにまとまっているんだけども、膨大な分量のあるフォーラムにだけ公開されているのも結構あって、探すの大変だったりする。
- ただ、このライブラリが想定しているサウンドファイルは1曲分で、BPMを検出したり、ダイナミクスを計算したり、love.updateのデルタタイムとは別にbpmに合わせた関数呼び出しをするのと、あとは音ファイルの再生について管理をするものなので、自分の用途とはちょっと違う。
- なので厳密にテンポはキープできなくても怪しげなアプリをバージョン1は目指そう。
- そう、あとLÖVEは標準ライブラリでトラッカーのMODファイルを再生できるってのもポイント高いんだよな。
- Renoiseで曲作ってMODファイルで出力すればそのままBGMになるんですよ。
- 対応しているMODのフォーマットも多い。自分がTokyoJunkSoundCollection作るのに使ってたOctaMedSoundStudioのMEDファイルも読める。
- てな具合に宣伝もしてみる。
- そう、あとLÖVEは標準ライブラリでトラッカーのMODファイルを再生できるってのもポイント高いんだよな。
- その他の自分用メモ
- UnityのJavaScriptっていわゆる方言なのでC#の方がまんま文法が使えるのでC#の方が良いって意見をちらほら見た。そうなんか。
- あと滅茶苦茶速いQuickBasic準拠BasicコンパイラのQB64がVer1.1になってた。
メモ
- 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