Skip to content →

macOS Catalina対応

相変わらず失業の日々を送っています.色々とやるべき事は多いのですが,いかんせん会社から離職票が届かないと動くに動けないことも多く,とりあえず今やれる事を消化しています.

まあ,それはそれとして,たまには開発者らしいネタを書きます.

* * *

さて,本日ようやくmacOSの最新バージョン「Catalina」が配信されました.今回は多くの新機能を備えた大幅なアップデートのようですが,ゲーム開発者として真っ先にやるべき事は,自分の作ったゲームの動作確認でしょう.という訳で確認したところ,キーボードまわりを改修する必要があったみたいです.

macOSのキー入力を拾う手段は主に2つあって,ウィンドウのイベントとして通知されるものを拾う方法(NSEvent)と,ハードウェアから直接状態を取得する方法(IOKit)があります.私は後者のIOKitを利用していたのですが,今回のアップデートから,IOKitでキーボードの情報を取得するにはOSのプライバシー設定でアプリごとに許可してやる必要があるようです.許可していないアプリでは,初回起動時に次のようなダイアログが表示されます.

このウィンドウが出る条件として,少し調べた限りではIOHIDManagerSetDeviceMatching()にPageがGenericDesctopでUsageがGD_KeyboardのHIDを要求すると引っかかるようです.また,許可されていない状態では,IOHIDManagerRegisterDeviceMatchingCallback()で登録した関数に無効なデバイス参照が届きます.おかげでNULLアクセス起こしてたのは秘密.

対策としては素直にNSEventで実装することなのですが,いかんせんこのNSEventが素直な奴じゃないんですよね.イベント駆動はフレーム単位で動作するゲームプログラムとは相性が良くないし,修飾キーまわりが特殊なため,熟知していないと「押した通知は来たけど離された通知が来ない」とう状況が起こり,キーが入りっぱなしになるという大変残念なゲームになります.

面倒な事ではありますが,こうなった理由はキーの入力情報を監視して情報を盗むマルウェアへの対策でしょう.なので,ユーザーに許可を促すというのもあまり良い選択ではありません.ゲームに偽装したマルウェアなんて珍しくもない今日,軽率に「ただのゲームアプリだから大丈夫だよー」なんて吹聴したらセキュリティ意識を疑われてしまいますからね.

ちなみに,UsageがGD_GamePadでは問題なくスルーしているので,ゲームコントローラを利用するのは問題なさそうです.

* * *

Catalinaのアップデートで最も期待しているのが,Simulator上でMetalが動作するようになった(らしい)事.

今までMetalは実機でしか確認できず,かといってOpenGLは非推奨になったため,iOSでゲームを配信するには各種モデルを買い揃える必要がありました.申請の際に各解像度の端末で撮ったスクリーンショットが必須だったからです.公式ドキュメントにはSimulatorで撮ったやつで良いよと書いてあるのですが,そのSimulatorが動かないという状況.最近は若干緩和されて,iPhoneでは2種類,iPadでは1種類が対応必須な解像度になりましたが,それぞれ最上位機種になるため結構な額になります.(ちなみに「反撃BLOCKS」が現在配信停止中なのは,おおよそこれが原因です)

そんな状況も,Simulator上でMetalが動作するようになれば解決.という事で早速試してみたら……動きませんでした.

どうも頂点バッファのオフセットは256バイト境界でないと受け付けてくれないご様子.バッファの先頭アドレスにはアライメントの制限があって,macOSで256バイト,iOSとtvOSで4バイトというのは満たしていたのですが,オフセットのそんな制限ドキュメントに書いてあったかな?少なくとも同じコードがmacOS上では動いているのですが.

こちらの修正はまだ着手していませんが,うまく動いてくれればiOSアプリ配信再開の可能性もあるかもしれません.もっとも,申請の条件を抜きにしても,どのみち実機での動作確認は必要なのですけどね.

* * *

今回のアップデートではぎりぎり対応していましたが,現在使用しているMacが7年前のモデル.次はもう無いだろうなと思いつつ,どうしようかと迷い中です.本当は増税前に新調するつもりだったのですが,まさか増税前に失業するとは思いませんでしたからね.

曲がりにも技術で飯を食っていた人間のメインマシンが7年前のモデルというのも相当なものですが,この期に及んでWindowsマシンも欲しいのですよ.開発中のゲームのWindows対応というのもあるのですが,それ以前に役所に提出する書類,何でPDFなのにWindowsじゃないとレイアウト崩れるのさ.

Published in 活動記録 雑記

Comments are closed.