読者です 読者をやめる 読者になる 読者になる

プログラミング

BMSプレイヤー開発 for macOS: BMSパーサー編

開発近況 harpこと BMSプレイヤーfor macOS の開発ですが,忙しさを言い訳にしてしばらく手が止まっていました。 最近ようやく以前のようにモチベーションと時間を取り戻してきたので少しづつ進めています。 今はBMSパーサーを書いているところで,BMSの仕様…

ViewControllerの戻るボタンのタップをハンドリングする。(戻る動作をキャンセル可能)

iOSにおいて前の画面に戻る際, 「本当に前の画面に戻りますか?」 というアラートダイアログを出して,選択次第で戻る動作をキャンセルしたい需要が生まれました。あまり大げさな実装はしたくないので,iOSが用意するUINavigationControllerによる画面遷移…

NSResponderのkeyDown()とI/OKitのIOHIDManagerのInputValueCallbackの反応速度の違い

ナノ秒の精度で時間を計測できる mach_absolute_time() で検証しました。 NSResponderはSpriteKitのシーンが保持するとあるSKNodeで,keyDown()時の速さを測定しました。 ちなみにSKNodeはfirstResonderになっています。 結論 ものすごくざっくり言うと,I/O…

macOSで音ゲーを作る上での障壁と懸念事項

macOSで動く音ゲーを開発したい 最近SpriteKitの記事をよく書いていますが,macOSで動く本格的な音ゲーを作りたいと思いチマチマと下準備を進めていました。 前の記事で紹介したリポジトリがまさにそれです。 以前からそれらしいものを組んで検証していたの…

SpriteKitでシーンにクリック可能なオブジェクトを配置するための仕組み

qiita.com qiita.com 上記の記事はiOS向けの記事です。 OSX用のゲームを作っている場合,touchesBegan はないはずなのでどうするのだろうと少し考えてみました。 前述の記事はオブジェクトに名前をつけてdelegateで処理させる戦略のようです。 名前を付けてS…

MacでHID準拠USBゲームコントローラの値を取得したい

コントローラがどんな種類の入力をもっているかスキャンできるコードを紹介します。 このプログラムの管理下にあるときは任意のタイミングで入力の状態がどうなっているかもチェックできます。 startメソッド の無限ループはチェックのためにその場におきま…

SpriteKitのSKSceneでShiftKey(装飾キー)をハンドリングする方法

SKSceneはNSResponderを継承しているはずなのに,なぜかfunc flagsChanged(with event: NSEvent) を継承してもコールバックが呼ばれないので,extensionで解決してみました。 extension SKView { override open func flagsChanged(with event: NSEvent) { scen…

AndroidのGLSurfaceViewに描画する内容を動画として吐き出す方法

ゲームの録画機能をCocos2d-xで動くアプリの中に実装しました、というお話を社内ブログに書きました。 Cocos2d-xが絡むからこそ難しくなったりする点もあることにはあるのですが、それなりに汎用性のあるお話です。 当初ハードウェアに依存しないソフトウェ…