Skip to content →

Acerola Software Posts

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じゃないとレイアウト崩れるのさ.

Comments closed

失業の日々

無〜職 無職 無〜職 窮人
無〜職 無職 No収入
無〜職 無職 無〜職 窮人
無〜職 無職で ハロワ行こ〜
M! U! S! Y! O! KU! 無職!
M! U! S! Y! O! KU! 無職!

……という某宣伝カーのパロディを思いつきTwitterで呟こうとしましたが,何だかうまく言葉に表せない抵抗感に襲われました.

* * *

仕事に追われていた頃は,仕事さえなければ大量に積んである本とゲームを消化できるんだろうなーとか思っていましたが,いざ職を失うとそうでもない事に気付きました.ちょいちょいゲームを起動したり本を手に取ったりするものの,今は消化している場合じゃないというか,気持ち的に集中できず,何だかんだでゼルダもまだクリアしていません.普段から「今年一年真面目に働くのは,来年も楽しくゲームをするため」とか言ってた私ですが,あれは経済的理由だけでなく精神的な意味も含まれていたのだと実感しています.

で,何をしているのかと言えば,次への準備です.これからどうなるかは殆ど決まっていませんが,何も考えていない訳ではないですからね.

* * *

生活の節目のついでに少し変化をという事で,愛用のキーボードから離れて普通の日本語キーボードに変えてみました.

私が英語キーボードを使い始めたのは,就職して間もない頃なのでかれこれ10年以上も前.当時オンラインゲームの開発でクライアント2台とサーバ1台を操作しており,3台のフルキーボードでデスクが埋め尽くされていました.この状況を解決すべく小型キーボードを求めた結果,小型ながら実用性重視のHappyHackingKeyboardに辿り着いたのがきっかけです.

その頃は上位モデルに日本語配列がなく,それを買う余裕もなかったのですが,店頭デモで触れた静電容量無接点方式のキーに惚れ込んで「いつかはこれを買う!」と意気込みながら下位モデルの英語配列を買ったのはとても良い思い出です.エディタにvimを使い始めたのもその頃だったっけか.

私は職業柄色々な職場を転々としていたので(所属会社はずっと同じでしたよ),場所を移る度に「私物のキーボード持ち込みOKですか?」なんて質問をしていました.もうそんな質問もしなくなるんだなぁ……2つの意味で.

Comments closed

遂に無職

……です.正確には月末に退職ですが,今はもうお休み中です.

理由は様々です.ポジティブなものからネガティブなものまで色々.さすがの私も,1つや2つの理由で約12年勤めた会社を辞めたりはしません.会社も仕事も私には合っていたし,続けられるのであればそれが最善だったのでしょう.それでも辞めてしまった理由は……長くなりそうなので割愛します.

そんなこんなで,谷底に転げ落ちた私は,空を見上げながら「さて,どうしよう?」という状況です.

* * *

以前,今年中にゲーム作って配信するよーと言っていた記憶があるのですが,こんな状況なので無理そうです.これまでのゴタゴタで全然作業が進んでいないし,この先も色々なゴタゴタが待ち構えているため,少なくとも年内には無理です.いつになるかも明言はできませんが,それも含めて色々と画策しています.

ん?画策している場合じゃない?

* * *

今後どう動くにせよ,のんびりしていられる状況ではないのですが,タイミングを見計らったかのように色々届いてしまいました.

とりあえず,ゼルダですかね.うるりらじいさんが私を呼んでいる.

Comments closed

2019年抱負とか来月の事とか

2019年になりました.

去年の2018年という年は,経験した中では過去最悪のろくでもない年でした.あまり生々しい話は避けますが,今年はそうでありたくないと願っています.とはいえ,去年のツケを払わなければならない関係上,今まで通りという訳にはいかないようです.

良くも悪くも変化のある年でしょう.どちらにどう転がるかは私次第.過去を取り消すことは不可能ですので,先の見えない未来を少しでも良い方向へと向けていくのが今年の抱負です.

……などと考えながら新年を迎えた早々,人生初の食中毒にやられました.腹痛の強化版くらいに考えていたのですが,この世の終わりかというくらいの悪寒が印象的でした.以前腹に大穴開けた事がありましたが,ピーク時はあれより辛かったと思います.

* * *

まあ,何がどう変わるかと言うと,来月(つまり明日)から1ヶ月間休職でして,そこから先のことは未定な状態です.復職するかもしれないし,そのまま退職するかもしれません.退職したら転職は厳しいだろうなとは思うんですけどね.

休職理由はというと,そこに至るまでの過程は省略しますが,この先仕事を続けていくか判断したいという個人的な理由です.本当は一度退職願を提出したのですが,あれこれ話し合った結果今の状況になりました.こんなめんどくさい人間に付き合ってくれる会社の方々には感謝しています.

* * *

来月はゲームを作る時間も多めに取れる訳ですが,これを本業にするのは現実的ではないんだよなぁ……(過去の売り上げを見ながら)

Comments closed

252日ぶり

気がついたら今年も終盤になっていました.実はここ暫くの間体調を崩しており,まあ色々と面倒なことになっているのですが,その辺は書いても楽しくないのでさらりと流すことにします.

とりあえず,最後にどんな事書いてたかな……と.

  • ぺぐそり公開終了
  • 反撃BLOCKS作り直し中

主にこの2つですかね.

* * *

ぺぐそりはお亡くなりになりましたが,現在公開中の反撃BLOCKSも後を追いそうです.と,いうのも,改定後のガイドラインに準拠しておらず,今後何かあってもアップデート対応ができない状態なのです.

この改定したガイドラインというのが厄介者でして,かなり根っこの部分からの修正が必要なレベルです.それこそ,作り直した方が早いというレベルに.

今ちょうど作り直し版があるので,これをアップデートと称して挿げ替えよう……とも考えたのですが,それをやろうとすると今度はGameCenterという厄介者に引っかかってしまいました.仕様変更に伴って削除された要素があるので,アンロックできない実績が出てきてしまうのです.

これ以上サポートできないものをこのまま売り続ける抵抗感に加え,そもそも売れていないという現実も鑑みて,近いうちに配信停止すると思います.幸い64bit対応などは済ませてあるため,手元の端末で動かなくなるという事態は当分先とは思います.それまでに良い解決策が思い浮かべば,そのときまた再開するかもしれません.

* * *

それとは別に,ゲームとはちょっと異なるものを色々と進めていました.それも最終的にはゲームになるのですが,形になるのはかなり先な見込みです.

しかし,配信停止によって何も配信していない状況になるのも嫌なので,一旦作業を中断してゲームのほうにシフトしようかと考えています.今はというと,ざっくりと仕様を書いて,実装の前準備として古くなったツール類を書き直したりしています.

こちらは2019年公開予定.何故なら,2019年じゃないと成り立たない文字が含まれているから.これを自分に課した締め切りと思って進めていく予定です.

Comments closed

iOS版「ぺぐそり」配信終了のお知らせ

突然ですが,iOS向けに配信中の「ぺぐそり」は近日中に配信終了となります.理由は,Appleからそういう通達を受けたため.

AppleはiOS向けアプリの世代交代を促すために,古くてアップデートが滞っているアプリに対して「このままだと販売継続できないから30日以内にアップデートしてね」という感じの呼びかけを行なっています.30日以内にガイドラインを満たしてアップデートを行えば何ら問題はないのですが,それが不可能な場合はストアから削除されてしまいます.で,現在配信中の「ぺぐそり」がそれに引っかかってしまいました.

この動き自体は2016年初頭くらいから始まっており,「ぺぐそり」は2015年1月に64bit対応のアップデートを行なっていたため,多分大丈夫だろうと思っていました.が,どうやらそういう問題ではなかったようです.

30日以内に対処すれば継続して配信できるのですが,機能だけでなく内容的にも時代に見合ったものではないのは事実.中途半端に対処して延命するくらいなら,ゼロから新作として作り直した方が良さそうなので,これを機に配信終了とします.(そもそも何が原因で引っかかったのか知らされていないため,対処も難しいというのも理由のひとつではありますが……)

ちなみに,64bitに対応していて,そこまで古くないSDKを使用していても引っかかったという事は,ほぼ同じシステムで動いている「反撃BLOCKS」もちょっと危ないかもしれません.

* * *

……さらっと「新作として作り直す」とか書いていますが,あんまりその余裕も無いんですよね.

現在,作り直し版の「反撃BLOCKS」と,それとは別の作業を同時進行していますが,シングルタスクな私の脳では2つだけでも結構大変.本業という最も時間を食い潰す(だけど唯一金になる)ものもあり,どちらか1つに絞るべきかと思っていた矢先にこの通知ですから,もうどうすれば良いのやら.

もう,休日だけ1日48時間とかになりませんかね.

* * *

そんな作り直し版「反撃BLOCKS」の進捗状況.

オリジナル版+αの当初予定していた形にはなっており,ストアに並べる準備も申請に関わる部分以外は出来ている状態です.

残りは何かと言うと…….

  • BGMとSEを作り直したい(オリジナル版の出来がイマイチだったため)
  • 演出面をもうちょっと強化したい(大画面でプレイすると見た目が地味なのが際立つため)
  • あんまりテストプレイできていない

プログラムで解決できる部分がもう殆ど残っていないのですよね.私にとっては最も時間を取られる作業のオンパレードです.

Comments closed

2017年末

2017年も残すところあと2日.いつもなら「もう年末」とか「今年は一瞬だった」といった感想を持つのですが,どういう訳か今年は「まだ2017年だったんだ」という感覚です.仕事の都合で勤務先が3回変わったり,ゲーム三昧だった去年とは対照的に割と作業していたのが理由かもしれません.そういえば,この活動記録も今年に入ってからだったっけか.

* * *

今年中には一通り実装と思っていた作り直し版「反撃BLOCKS」ですが,リプレイのUIの一部が終わりませんでした.ゲーム自体はおおよそ作業が済んでいるのですが,調整し直したい箇所や作り直したい箇所も一部あったりします.そういえば新規追加要素のSEも作っていない事をたった今思い出しました.

……あれ,全然終わってないじゃん.

* * *

作り直し版「反撃BLOCKS」と平行して,次以降となるものにも着手しています.これは今までとはちょっと変わったもので,自分にとって初の試みになるものなので,完成するのかさえ怪しいものです.仮に完成するにしても,今の私では少なく見積もっても数年はかかりそう.そのため,他の作業と平行して少しづつ進めています.

実のところ,作り直し版「反撃BLOCKS」が今年中に終わらなかった理由は,こっちを進めていたからというのが大きかったりします.平行作業をこなせるほど要領の良い人間ではないので,その辺も大きな課題です.

* * *

今年更新できそうなタイミングが今しかなさそうだったため,徹夜明けの寝不足状態で書いています.推敲する余裕が無いのでちょっと文章がおかしいかもしれません.

今年は睡眠時間を削りすぎた……って,今年が異様に長く感じたのは,単純に起きている時間が長かっただけかも.

Comments closed

あれから10年

とある事がきっかけで古いデータを漁っていたところ,その時に発掘した自作ゲームが今日で10周年だった事に気付きました.

タイトルは「SGAME 3」.Windows向けのフリーゲームで,マニュアルによると公開日は2007年11月27日だそうです.

* * *

内容としてはシンプルな固定画面STGで,自機は左右だけでなく若干上下にも移動できる仕様でした.やや特徴的なのは,ステージ(フェイズ)クリアの条件が敵の殲滅ではなく一定数スコアを稼ぐ事であり,ランキングにはその時間が登録されるという,タイムアタック仕様な事.稼ぎの要は狙い撃ちによる倍率で,敵を倒すとスコアの倍率が上昇するが,打ち損ねてショットが画面外に出ると倍率が減少するという仕様でした.タイムを稼ぐには,より早くより正確に撃つ必要があります.残機制と見せかけてステージクリア時に全回復するという実質ライフ制で,特定条件でクリアするとエクステンド(=実質ライフの上限が上昇)等,シンプルと見せかけて普通じゃないゲームだった気がします.

このゲームの(ルールとしての)最大の欠点は,意識して稼ぐ場合とそうでない場合のスコアの差が大きすぎるため,何も考えずにプレイすると1ステージあたりの時間が長く,単調なゲームになってしまう事でした.そして,普通のプレイヤーは初回プレイから稼いだりはしません.このゲームをプレイした人がどれだけいたのかは分かりませんが,きっと面白いとは思わなかったでしょう.ちなみに,倍率を意識すれば全10面が7〜8分くらいで終わるゲームですが,稼がないと理論上は最長30分かかるゲームでした.(1ステージで3分以上かかると救済措置として強制的にクリア扱いになるため)

* * *

実を言うと,このゲームは私の中では「反撃BLOCKS」の前作にあたるものだったりします.ジャンルそのものは異なりますが,「一見シンプル中身複雑」なコンセプトや,図形的なキャラクター+実写背景というデザイン,ステージ表記が「PHASE」,トライアルモードや達人モードの存在など,いくつかは意識して似せてあります.ゲームの取っ付きにくさも似てしまいましたが……これは意識してません.

今となっては人に見せられるクオリティではないとしても,そこで得たものが次に継承できれば意味のある製作だったと思う次第.逆の意味で記録的な売り上げの「反撃BLOCKS」も,その存在を無意味にしないために次に生かす事にします.

* * *

……で,久々にプレイしようと思って仮想環境のWindows10で起動してみたところ,垂直同期が取れずに超高速で動作してしまい,ゲームになりませんでした.他のDirectX9のゲームがちゃんと動いているところを見ると,恐らくアプリ側の問題のような気がします.ビルドし直して動かして見るかと思ったのですが,Windows10にDirectX9のSDKを導入するのが結構めんどくさそうだったので諦めました.

試しにソースコードを覗いてみると,目を覆いたくなるほど稚拙なベタ書きプログラムでした.(一応言い訳をしておくと,10年前の私はプロではなく単なるゲーム好き青年でした)……が,未熟でできる事が少なかったが故に小規模で複雑な処理も行っておらず,良くも悪くもシンプルな内容.多分,移植しようとすれば割と簡単に実現できると思います.

いや,やりませんけどね.さすがに今はそんな余裕はありません.

* * *

余裕と言えば,新型のPSVRを発売日(かれこれ1ヶ月前)に購入しているものの,現在(デスク周りが)作業モードなため,(物理的な意味で)箱から出す余裕がありません.来月に出るVR版Skyrimまでには作業を一段落させるつもりでしたが,作り直し版「反撃BLOCKS」がもはや単なる移植でなくなっているため,PSVRさんにはもう暫くの間,ヨドバシの箱に入ったまま玄関に鎮座してもらう事になりそうです.

Comments closed

macOS版進行中

気がついたらもうすぐ11月.活動記録をサボり過ぎましたが,作業はちゃんとしてます.

どうも私はこの季節に体調を崩しやすいらしく,よりによって休日になると寝込むことが多いようです.崩すのはブロックだけにしたいところですが.

* * *

そんな訳で,例によって作り直し版「反撃BLOCKS」の件.

とりあえず,作業しやすいmacOS版をメインに色々と細かい対応を行なっています.主にシステムまわりの対応で,描画エンジンを作り直したり,入力まわりが別物になったり等々.数ヶ月かけた甲斐もあり,ストアに並べるのに必要であろう対応はmacOSに関しては大体完了しました.対応必須で面倒なものが1つ残っていますが,これはもう少し後に対応したほうが都合がいいので後回し.

それにしても,macOSの開発系の情報収集は本当に苦労します.ゲーム関係の情報となると特に.公式のドキュメントもiOSやtvOSに関しては需要のあるものは日本語化されていたりするのですが,macOSに関しては殆ど翻訳されておらず,当然インターネットで日本語で検索しても欲しい情報は殆ど見つからず.英語なら豊富なのかというとそんな事もなく,公式以外では運が良ければStack Overflowで見つかる程度.

いっその事ノウハウを集約して記事にでもしようかと思ったりもしましたが,それはそれで大変だし今のところ正しい実装である自信もないのでやめておきます.そもそも情報が少ないのは需要がないからとも取れる訳で……いや,作っているゲーム自体が需要無視か.

* * *

ゲーム内容に関してはもう実装は終えて残りは調整くらいに思っていたのですが,度々プレイしていたら色々とイマイチな気がしたため,こちらもごっそり変えました.

今までの内容はオリジナル版+αでしたが,このαが大きすぎてややバランスが崩れていました.難易度的に易しめになったのは狙い通りではありますが,「真面目にプレイしたら負け」のような内容に傾いていたのは少々問題.そもそも2周クリア時に残6というのは易しすぎな気もしていましたが.

という訳で,自機性能を分離して2つの自機タイプから選択するように変更しました.片方は今までに近い性能で,もう片方は今までに無い性能.どちらが優秀かというと実は後者寄りなのですが,扱いに若干慣れが必要なため,シンプルな前者のほうが攻略しやすいかもしれません.

で,分離して以来一度も2周できていません.色々と調整し直しです.

* * *

今回ちょっと懸念している事は,あまりテストプレイが出来ていないという事.iOSなら通勤電車の中でプレイする「通勤デバッグ」が可能だったのですが,今回はそれが出来ません.iOSで動かす事は可能なのでゲーム的なテストは不可能ではないのですが,環境依存のバグは見つからないし,決して安くない一体型コントローラも買う必要があります.

……それ以前に,今の職場,電車の乗車時間が10分ちょっとなんですよね.オリジナル版の開発時には合計40分くらいだったので,ほぼ毎日プレイしていたのですが.

* * *

このペースだと,macOS版の作業が一通り完了するのが早くて年末くらいという感じ.配信となると,来年頭くらいが現実的な時期でしょうか.

ここまで来たからには,少なくともmacOS版は配信すると思います.

Comments closed

魔王さん討伐帰り

1ヶ月くらい前にドラクエは控えるような事を言っていた記憶がありますが,案の定手を出した挙句プラチナトロフィー取得までプレイし,クリア特典の無料版ドラゴンクエストもクリアし,ついでにファミコン版ドラクエ4を久々に起動したところ2章クリアまでのセーブデータが残っていたのでさくっとクリアしていたら1ヶ月が経過していました.まあ,だいたい予想通り.むしろプラチナトロフィー取得が普通にクリア+α程度だったのが救いです.

今回のドラクエは発売前の宣伝で度々「原点回帰」という言葉を耳にしましたが,どの辺が原点回帰なのかを自分なりに考えてみたところ,以下のような結論に達しました.

  • 1988年 ドラゴンクエストIII そして伝説へ…
  • 1989年 グラディウスIII 伝説から神話へ
  • 1990年 パロディウスだ! 神話からお笑いへ
  • 1994年 極上パロディウス 過去の栄光を求めて
  • 2017年 ドラゴンクエストXI 過ぎ去りし時を求めて

正に原点回帰.

……というのは冗談で,実際にはプレイすれば分かる事なのですが,その辺はネタバレも含まれそうなので触れないことにします.ファミコン時代の旧作ファンなら最後までプレイして損はない良作だと思いますよ.

* * *

ドラクエも落ち着いたので,先週頭あたりから公開に向けての作業を行なっています.主に提出の際に対応必須なものへの対処です.

iOSで公開した際にも面倒だと思いながら色々と対処しましたが,MacやAppleTVはそれ以上に面倒です.iOSは何だかんだで動作環境が数える程度しかないし,Macのような面倒なセキュリティ対応もなければAppleTVの変に厳しい制約もなく,何よりもメジャーな環境なので少し調べればノウハウで溢れかえっています.逆にMacとAppleTVはマイナー過ぎて日本語の情報が殆どありません.結局のところ公式のドキュメントとサンプルコードを読み解くのが近道なのですが,英語力に乏しい人間なのでどうにも時間がかかります.

色々と面倒ではありますが,どのみち超えなければならない壁ですのでやるしかありません.

* * *

Windowsの開発環境も用意しないとな…….が,それ以前に5年前のモデルのMacが未だにメインなのを先に何とかすべきか.動作速度に不満は無いのですけどね.

Comments closed