見出し画像

MGL週報 #31 - MGL 1.1.9公開など

このエントリはゲーム開発用フレームワーク「MGL」の開発記録です.MGLは次のWebサイトにて無償で公開されています.



MGL 1.1.9公開

毎度毎度遅くなりがちですが,先ほどMGL 1.1.9を公開しました.リリースノートはこちら.

今回のアップデート内容は小規模な不具合修正がメインとなります.これに加えて今後の機能追加に向けた仕込みを行うような事を以前に書いたかもしれませんが,今回は見送る事にしました.それらについては次の1.1.10にて導入する予定です.

間が空いた割には小さな不具合修正のみという寂しい結果となってしまいましたが,導入予定のタスク管理システムを用いてその辺の流れを可視化できないかと模索中です.次の更新に何を入れる予定で,それが今現在どの程度の進捗なのか等,タスクの情報を閲覧のみで公開するのは機能的には可能なのですよね.これを試しにやってみるのもありかもと考えています.

タスクを公開する最大の懸念点は,実装した後に酷い内容だったと気付いた際に,こっそりと無かった事にできなくなるという事.ええ,珍しい事ではないですよ.大抵これに気付くのはドキュメント化の最中だったりします.

どちらにせよ,1.1.10の作業に取り掛かるよりも先に,タスク管理システムの導入を行う予定です.どうするかはその際に考えましょう.


左右を区別しない修飾キー

1.1.9の唯一の追加要素として,キーボードの入力判定に左右を区別しない修飾キーのキーコードを追加しました.追加要素と言っても,既知の問題への対処となるためほぼ不具合修正みたいなものですが.

今回追加したキーコードは Control, Shift, Alt, GUI の4種類です.これらは修飾キーと呼ばれ,基本的には他のキーと組み合わせて使用するキーです.多くのキーボードでは修飾キーは左右に1つづつ存在しています.今回追加したキーコードは,その左右のどちらを押下しても同じキーとして認識してくれるものです.

Ctrlキーを例に挙げると,今まではLeftControlとRightControlの2種類のキーコードがありました.これらはそれぞれ左Ctrlキーと右Ctrlキーに対応しています.

さて,もし左右のCtrlキーをどちらも同じように扱いたい場合,今までは次のようなコードを書く必要がありました.

MGL::Input::Keyboard keyboard;

if (keyboard.IsPressing(MGL::Input::Keycode::LeftControl) ||
    keyboard.IsPressing(MGL::Input::Keycode::RightControl))
{
    ...
}

今回の更新によって,このコードは次のように簡潔に書けます.

MGL::Input::Keyboard keyboard;

if (keyboard.IsPressing(MGL::Input::Keycode::Control))
{
    ...
}

どちらも大して変わらないじゃないかと思うかもしれませんが,キーコンフィグ機能の存在を考慮するとそうでもありません.後者は他のキーと同じ判定式が使用できるのに対し,前者は修飾キー前提の判定式になってしまうためです.もしキーの割り当てを変更できるようにした場合,引数には定数ではなく変数を与えることになりますから,判定式は共通でなければ都合が良くありません.

また,MGLはキーの入力状態をキーコードごとに保持しています.これには押した瞬間や離した瞬間,そしてキーリピートの入力状態も含まれます.これらも含めて左右を同じように扱おうとした場合,もはや2つの判定式を '||' で繋げるだけでは解決できません.

そんなこんなで,これは独立したキーコードを割り当てた方が良さそうだよね,という事で今回の対応に至りました.もちろん,LeftControlやRightControlなどは今まで通り使用できますので,作るゲームにとって都合の良い方を選択しましょう.


その他

あ,そういえば「ぺぐそり+」のSteam体験版の事すっかり忘れてた.オータムセールまでには対応しておこう.(また忘れそう)

この記事が気に入ったらサポートをしてみませんか?