![見出し画像](https://assets.st-note.com/production/uploads/images/110996334/rectangle_large_type_2_c8770c652f9c5700c4f6c9b3237f7c10.png?width=1200)
MGL週報 #24 - おおよそ雑記
このエントリはゲーム開発用フレームワーク「MGL」の開発記録です.MGLは次のWebサイトにて無償で公開されています.
あまり多くを語れる作業をしていない事と,先週の週報のビュー数が5件だったので,今週はMGL関連の雑記にします.
UI改修の進捗
先週に引き続きUI機能の改修作業を行なっていました.少なくとも,テストプログラムを書いて意図した通りに動作しているところまでは確認しています.
ゲーム向けのUIイベント処理を難しくしている要素の一つは,入力方法の多彩さにあります.MGLが対応している入力デバイスはマウス,キーボード,タッチ,ゲームパッドの4種類であり,そのうちどれを使用するかはゲームによって異なります.UI機能の仕組みとして理想的なのは,各々の違いを上手く吸収して単一のコードで全ての入力方法に対応することです……が,現実問題としてそれは困難です.マウスやタッチのような座標指定とキーボードやゲームパッドのキー入力では性質が大きく異なるのですから.
目の前で理想と現実が同居している以上,取捨選択は避けられません.どこを妥協して何を通すかを悩んだ結果,キーボードやゲームパッドのようなキー入力イベントは標準では扱わない事にしました.その代わりに,少しだけコードを記述する事によって簡単に対応できるようにしています.マウスとタッチの操作についてはデフォルト動作に任せることもできるし,キー入力と同じように自分で書くこともできます.
残念ながら,この選択が正しいかどうかは現時点ではまだ分かりません.テストプログラムでは想定した範囲内の動作しか確認できませんから,使い心地や想定外の落とし穴を見つけるにはやはり実際に運用してみるのが一番です.
要するに「悩んだ末に方針を固めたけど,まだ自信は持てない」といったところです.実際にゲームを作って試すにしても,4種類の入力デバイス全てに対応するゲームとなるとジャンルが限られてくるのですよね.
iOSへの導入手順補足
UI改修の検証中に気付いたのですが,いつの間にかドキュメントの導入手順通りではiOSアプリケーションが起動しなくなっていたようです.原因は最近のXcodeのアップデートで標準で付与されるようになった設定によるもので,これが存在しているとアプリケーションのライフサイクルが変化してしまうためです.
そんな訳で,ドキュメントに対処法を追記しておきました.
この手順で動作に支障はなくなりますが,将来的にはこのような手順を踏まなくても起動するようにしたいと考えています.
ちなみに,iOSとよく似たtvOSについては今まで通りの手順で問題ありません.
MGLはオープンソース?
……なのでしょうか? 実のところ,私はMGLに対して「オープンソース」という言葉は極力使わないようにしています.
オープンソースの世界には「オープンソースの定義」と呼ばれるものがあり,この10ヶ条の条件を満たしているソフトウェアのみが「オープンソースソフトウェア」と名乗るべきだとされています.
MGLはこの条件を全て満たしているはずですので,その意味ではオープンソースソフトウェアなのかもしれません.
一方,この定義を作成した団体であるOSI(オープンソース・イニシアティブ)は,各々のソフトウェアライセンスに対してオープンソースの定義を満たしているかを審査しています.これを満たすライセンスは「OSI オープンソース・ライセンス」や「OSI承認ライセンス」などと呼ばれており,オープンソースソフトウェアにはいずれかのOSI承認ライセンスを適用することが推奨されています.
このライセンス的な観点で言えば,MGLはオープンソースの定義を100%満たしてはいません.MGLは基本的にzlibライセンスであり,これはOSI承認ライセンスです.しかし,一部のファイルに対しては例外的に実質パブリックドメインのCC0が適用されています.このCC0は(と言うよりパブリックドメインという考え方自体が)法的に不明瞭な点があるため,OSIはこれを承認しなかったのです.
また,オープンソースは定義よりも思想的な理念が重視されている文化です.その点,MGLはあまりオープンソース文化を意識した活動ではありません.興味や関心が無い訳ではないのですが,「MGLはオープンソース活動です!」と言ったらかなりの語弊を感じる方が大多数ではないでしょうか.
……何で突然こんな事を語り始めたのかというと,最近は仕事を得るために自身の活動についてを説明する機会が多々あって,その際にMGLに関してはとにかく伝えにくいのです.「C++向けのゲーム開発用フレームワーク」と言っても一部のエンジニアにしか伝わらないし,「ゲームエンジン」という言葉を使うとUnityのようなローコード系の開発環境を連想させてしまいます.
結局,説明が面倒なために多くは語らないのですが,多分その辺が私の営業下手な部分なのでしょう.でも,「オープンソースじゃないけどオープンソースに近いもので,ゲームエンジンっぽいけど皆さんの想像するゲームエンジンとは異なるもので……」って説明したら,本来詳しい人ですら間違いなく混乱するじゃないですか.Speechスキルの高い方ならこれをどう説明するのでしょうね?
まあ,肩書きが何であれ,MGLはMGLです.
その他
最初に投稿したMGLの紹介記事も内容が古くなってるし,そろそろ新しく書き直した方が良い気がしてきました.