ゲーム制作ライブラリの開発を進めた。オーディオローダにシークが実装できたので、それと共にストリーミング音声のシークやループ再生もできるようになった。また、キーボードの押下状態だけでなく押した・離したフレームを取得できるようになった。Siv3Dと似たようなインタフェース。
また、MacOSでの動作検証をやり始めた。ビルドはGithub Actionsの力で確認していたが実行時の検証は後回しにしていたので色々問題が発生することを覚悟する。まずVulkanの初期化でエラーが出た。ErrorIncompatibleDriverだそうだ。ググるとそのものズバリのページがあった。
https://s5suzuki.github.io/posts/mac-vulkan
この通りにしたら無事表示された。サウンドもつつがなく動作した。問題はキーボードだ。記号系のキーはともかくアルファベットや数字のVirtual KeycodeはWindowsと同じでしょと勝手に思い込んでいたが、全く思い違いだったようだ。例えばキーボードのAは0に割り当たっている。kVK_ANSI_A
などといった定数としてCarbon/Carbon.h
で定義されているらしい。本当は公式の信頼できるドキュメントに当たりたかったのだが見つからず、やむなくMDNに載っていたものを参考にした。畑違いの資料だと思うのだが。
これでとりあえず、WindowsとMac上で画像表示とサウンド再生とキーボード取得ができるようになった。最低限のゲーム制作の準備は整ったと言っていいだろう。次はどこに取り組もうか。
- OS処理まわり
- Linux環境でのキーボード取得
- カーソル取得
- フルスクリーン表示対応
- グラフィック関連
- 画面サイズ変更対応
- 図形描画
- 3D描画
- 画像への描画
- オーディオ関連
- oggのシーク対応
- オーディオの再生位置取得など対応
- オーディオのタイミング指定再生
- コールバック式オーディオ
実はもう実アプリケーションを作りながら不満を探していく方が良いかもしれない。
Rabbit Holeをプレイした。
- 突撃。緊急回避で避けれる。
- 天井にワープして落ちる→地面から棘を生やす。速すぎて回避に未だ成功していないが、画面端に緊急回避か?
- 弾を投げる→分裂して8方向弾になる。緊急回避?
なんにせよ手の内を明かし切れていないし、既知の攻撃も回避パターンがほぼ未解明。もっと対戦を重ねる必要がある。未だに1週目クリアが最大の壁だが、1度ループすればCatalystに会うのは難しくない。
道中の安定方法についていくつか知見を得た。
- 4面のお化けは銃を向けると突撃してくる。銃を向けなければ突撃してこないので一番最後に処理すればよい。
- お化けと赤クラゲが重なった状態で出現するパターンは厄介。一度赤くらげに突撃させてそれを緊急回避するとよさそうだが、回避先にさらに別の敵もいたりする。ロケランや黄金銃などを持っていれば一撃必殺すればよいのだが。
- 3面でお化け三体(+何か雑魚1体)が同時に出た場合、最下段のお化けを最優先で処理しつつ雑魚を飛び越し、右端からお化けを睨みつつ処理するとノーダメ率が高い。
- 2面ボスはスライディングの打ち返しが重要で、どう打ち返すかが重要だが、近接の判定は思ったより広いことが分かった。身長くらいの距離で打ってしまってよい。なおどうしても飛び越しで対応を迫られた場合は弾とボスの間に着地するのがマシ。
- 3面ボスはワープ前に剣を落とす場合と落とさない場合がある。行動パターンで完璧に読めるので覚えるのがよい。
- Yomi2回戦において、全画面ナイフは前ではなく後ろに緊急回避した方がよい。Yomiに衝突する可能性を減らせる。
- Yomiの全画面鎖攻撃は、Yomiからあまり離れない方が対応しやすい。隙間に入りやすい。
2週目を進んでいたら唐突にSHEDが現れた。実績でだけ名前を聞いていた相手だ。攻撃はかなり良心的で、近接を何度か→突撃→たまに銃撃というだけだった。なんとか初見で倒すことができ、操作キャラにSHEDが加わった。まさかこんな突然出くわしてしかも勝利するとは思わなかった。何者なんだこいつ。
試しにちょっと遊んでみたが、どうやらdealerと何らかの因縁があるらしい。あのdealerがSHEDには露骨に違う態度を見せた。
Categories: 未分類