User:Greenwing
日本語版の翻訳者(2016~2017)。準備期間をいれますと LOVE Wiki には約三年間(2014/07~2017/05)関わってきました。 ただいま、日本国内の需要の低さから翻訳活動を休止しておりますが、 LOVE Version.0.12.0 が公開されたら正式復帰とさせていただきます。
活動休止期間中に、ご用のあるかたは、フォーラムのプライベートメッセージか、改善の提案・誤訳の報告からどうぞ。
2017年05月24日 GreenWing 『伊達巻きの日』に記す。
……寝袋と伊達巻きって似ているよね……。
近況と追記(2017年08月17日)
たまに一時復帰することがありますが、あくまで例外扱いです。気まぐれですので定期的な一時復帰を期待されることは望みません。 当方でも LOVEを 採用したプロジェクトは進めておりますので、そちらを優先しているところですが、完成はいつになるのやら。
メモ (初心者さんが悩みそうなチラシの裏) =
駄文失礼。
- love.graphics.* 系の関数は love.draw() 以外では記述できないのは、制約を設けることで美しくかつ柔軟に記述しやすくするのと、描画順序やオブジェクトの重なりを概念上わかりやすくするため……などは、なんとなく理解できると思います。詳しいことが知りたいのでしたら love のソースコードの
love/src/scripts/boot.lua
を読まれると理解が深まります。ちなみに love.draw() 以外で使えないのは love.run() などで画面クリアとリセットを行っているからです。なので、他のコールバックで love.graphics.* を使用しても、その後に love.draw() が実行されますので消えてしまいます。描画済みのものは保持されていたほうがいいとお思いの方もいらっしゃるでしょうが、別のものを描きたいときに消えていたほうが色々楽ですし、消えてほしくはないものは Canvas (フレームバッファ) にあらかじめ一括で書き込んでから表示してください。そっちのほうがきれいに書けますし高速ですからといったところでしょうか。
- コールバックはともかく、シーンの切り替えですかね。あれは、ソースの先頭に切り替え用のフラグ変数やテーブルを記述して、各コールバックでフラグと対応する処理を if 文で分岐させる。フラグ切り替え・書き換えは love.keypressed() コールバック内で対応するキーごとに行えばいいだけのことです (テーブルに関数名を書き連ねて、添え字指定で一気に処理を切り替える方法もありますが、できそうなほうを調べて試してみてください)。何を言っているのかさっぱり妖精でしたら、変数、テーブル、分岐、コールバックを復習して実際にソースコードを書いたり、オープンソースの love 採用ゲームのコードを読んでみてはいかがでしょうか。
- 恐れずに連想配列を使いましょう。すっきりしますよ。
- 日本語キーボード (106) において「変換、無変換、漢字、ひらがな」など一部のキーは使用することができません。採用ライブラリである SDL 2.05 では対応済みなのですが、どうも LOVE 側の検証不足のようですので、いまのところ使用できません。クイックハック程度では修正は無理です。これらのキーはゲームではあまり使いませんが、ちょいと、ゲーム内で使う異世界魔動計算機で異世界文字によるインプットメソッド付き(しかもなぜか親指シフト風)のラインエディタを実装したいな。といったときに困ります。
……あくまでゲームフレームワークですから、低レベルキーボードAPIを酷使するような用途は考慮されていないのですよね (スキャンコードではなくキーコードの這いずりたいところですが)。
一般的な対策方法は調査中ですが、見つけたらレポジトリのほうにパッチを投げていただければ助かります。