2 ポイント 投稿者 GN⁺ 2024-09-12 | 1件のコメント | WhatsAppで共有
  • 2024年に新しい Palm OS向けミニゴルフゲーム Captain's MiniGolf v0.6 が公開され、2か月未満の断続的なコーディングで完成した
  • 核心は、プレイヤー自身が レベルパックデータベース を作成し、エクスポートして他のユーザーと共有できる仕組みにある
  • 実機の Palm OS デバイスがなくても、cloudpilot エミュレーター でブラウザからすぐに実行できる
  • C と旧式の Palm OS 環境は、メモリリーク、ポリゴン・軌道のデバッグ、乏しいドキュメントといった 開発上の制約 をあらためて浮き彫りにしている
  • ソースコードは GPL3 ライセンス で公開されており、他の人が Palm OS ゲームを作る際の参考資料として活用できる

Captain's MiniGolf v0.6 公開

  • Captain's MiniGolf v0.6 は、2024年に新たに制作された Palm OS向けミニゴルフゲーム
  • 夏のサイドプロジェクトとして始まり、2か月未満の断続的なコーディングを経て公開された
  • 最大の特徴は、ユーザー自身が レベルパックデータベース を作成できる点
    • 作成したレベルパックはエクスポートして共有できる
    • 他のユーザーがどんなコースを作るのかを見る楽しみも期待されている
  • Palm OS デバイスがなくても、cloudpilot エミュレーターを通じてブラウザで実行できる

Palm OS 開発体験と公開資料

  • C で Palm OS 向けゲームを作る中で、最新言語の保護機構がない場合、小さなミスがより大きな問題につながりうることをあらためて実感した
  • メモリリーク は予想以上に頻繁に発生し、ポリゴン形状やボールの軌道のデバッグも容易ではなかった
    • 内部ロジックを可視化する デバッグビルド が問題把握に大いに役立った
  • Palm OS はドキュメントが少なく開発難度が高く、次の資料が参考として活用された
  • 既知のバグとして、ボールが壁に挟まる問題と、メインのプレイフィールド内に閉じた壁ポリゴンを作ると背景やコースの色が正しく処理されない問題がある
  • 改善予定項目には、レベルの削除・移動、レベルパックの削除・共有、画面サイズに応じた動的解像度対応が含まれている
    • 現在の解像度は 160x160 固定
    • Palm OS 5 の高解像度デバイスでは 320x320 で動作する
  • 全ソースコードは GPL3 ライセンス で公開されている
  • 初稿は Palm Zire 72 で作成された

1件のコメント

 
GN⁺ 2024-09-12
Hacker News のコメント
  • 1990年代に Macintosh 向けのミニゴルフゲームを2度作り始めたが、結局完成もリリースもしなかった。
    最近、ほぼ35年前のソースコードを復旧し、エミュレータで使うディスクイメージを作っているところ。最初の白黒版 MiniGolf の試みはこちら: https://github.com/EngineersNeedArt/SoftDorothy-UnfinishedTa...
    2回目の試みは、プログラミングの腕が上がってから作ったカラー版で、Volume 2 に入る予定。いまそのディスクイメージを組み立てている

    • Glider は68k Mac 時代を代表するフランチャイズだった。また作業している姿を見られて本当に感激している
    • グラフィックが本当に素晴らしい。スタイルが気に入った
    • 子どものころ Glider を本当にたくさん遊んだ。このことを言える機会はおそらく今回だけだろうから、ゲームを作ってくれて本当にありがとう
    • John、ありがとう。このリポジトリには、私の好きなアート、エンジニアリング、歴史が少しずつ全部入っていて、何よりアートの比重が大きい。本当に刺激を受ける
  • いいね!
    ボールがカップに落ちるアニメーションを入れることを考えたことがあるのか気になる。動画では、ボールとカップが十分に重なった瞬間に新しいレベルが読み込まれるように見える。
    ユーザーとしては、ボールが実際に入るところを見られたほうがずっと満足感がありそう。次のレベルが読み込まれる前に達成感も増すと思う

    • これから検討してみる、ありがとう
  • 素晴らしい仕事、ありがとう!
    最近、Palm OS やほかのレトロな自作実行ファイル形式には、ノスタルジー以上の実用的な用途があるのではないかと考え始めている。
    Palm OS の .prc、itch.io の .gb 自作 ROM のようなものは、デスクトップ、iOS、Android、実機のゲーム機で実行でき、オフラインで効率的に動き、邪魔が入らず、アプリ内課金の可能性もない。
    たとえば Apotris を見ると、私は長年にわたって公式の Tetris 版をたくさん買ってきたし、今後もそうすると思うが、これはあらゆるコンソールで動かせる非常に洗練された実装だ。RetroArch Web のようなWASM ベースの GBA エミュレータと、現代のブラウザの標準ゲームパッド対応のおかげで、インストールなしにほぼどんなコンピュータでも遊べる。
    さらに、単一の独立した実行ファイルを持っていて、1年後、10年後、20年後にも高い確率で実行できるという安心感がある。私が好きな多くの iOS ゲームや Web インディーゲームには、おそらく当てはまらないと思う

    • 元の UI 哲学を保ち、昔のタイトルをすべて実行できる現代的な Palm OS フォンがあれば本当にいいのに。エミュレーション経由でもいいので実現できるとうれしい
  • 1999年ごろに PalmOS 向けのコードを書いていた。特に記憶に残っているのはアプリケーションのテスト方法。
    エミュレータの機能だったと思うが、ソフトウェアにイベントをひたすら投げ続けるものだった。細部は忘れたが、たとえばイベント1,000個に耐えれば合格、1万個なら良好、10万個なら優秀という感じだった。
    自分ではかなりまともな C++ プログラマだと思っていたが、そのツールを使ったらアプリケーションがどれほど早く落ちるかを見て衝撃を受けた。かなり謙虚にさせられる経験で、目が覚める思いだった。
    ああいう単純なツールがバグをあぶり出すのにどれほど効果的だったかをよく思い出すが、今日のマルチタスクでインターネット接続されたデバイスでは、そのまま通用する方式ではないだろうなとも思う。
    もう一つ覚えているのは、CodeWarrior が現在のソースファイル内のすべての関数を表示するドロップダウンボックスを備えた最初の IDE だったこと。生産性の面ではかなり大きな前進だった。
    ついでに言うと、2010年に日本にいたときも Palm Tungsten を使っていた。Palm 向けのとても単純な日本語辞書アプリがあり、筆順と方向の基本ルールさえ覚えれば、スタイラスで見えている文字をまねて、一致する漢字を検索できた。標識で知らない漢字をまねながら、道探しをかなり解決できた

    • > drop-down box with all the functions
      関数を区切るための #pragma - を覚えている。今はこういうものがない。代わりにコードブロックを折りたたむ #pragma region はあるが、それは別物
    • 誰かが Rust を PalmOS に移植しようとしている場面が思い浮かんだ。そんなことは起きないでほしい
  • 実機でこれを動かせるだろうかと考えていて、BlackBerry に乗り換えたとき自分の Palm LifeDrive がどうなったのかまったく分からないことに気づいた。
    あの小さくて分厚い PDA が懐かしい。当時としては本当にすごかった。
    https://en.wikipedia.org/wiki/LifeDrive

    • 先週掃除していたら、昔の Palm Tungsten E2 を見つけた。充電器も見つかったら実行してみて報告する
    • LifeDrive は本当に変わった Palm だった。
      一方では、以前の機種に比べて腹立たしい読み込み時間のせいで嫌いだった。もともとすべてを RAM/ROM に置くよう設計され、最初はファイル/ブロックベースのメモリという概念すらなかった OS が、予期しないメモリアクセスのほぼたびにハードディスクを起こす構造だったからだ。筐体も比較的大きかった。
      他方では 4GB だった。映画を2本以上まるごと入れられた。Wi-Fi を搭載した最初の Palm でもあったので、その点はよかった。
      総合すると、私にとっては Palm が現代的な流れに急速についていけなくなっていることの象徴のように見えた。たとえば Symbian は使い勝手では Palm OS と比べものにならなかったが、OS の観点でははるかに先を行っていたし、その後には当然 iPhone と Android が登場した
  • 本当に気に入ったし、特にアートデザインがいい。素晴らしい仕事。
    個人的に変えたいのは、狙いを定めるときにマウスを反対方向へ動かすほうが、より自然に感じるという点。昔の Miniclip の多くのミニゴルフゲームはそうしていた。
    自由なオープンソースゲームが好きなら Neverball と Neverput をおすすめする。Neverput はグラフィックがなかなか良い 3D ゴルフシミュレータ

    • もともと Palm はスタイラスを使うので、指で操作するタッチフォンと違って狙う地点を隠さなかった。また、ショット方向側のスペースをより確保する要因でもあったのかもしれない
  • 美しい!おかげで自分の IIIxe が恋しくなった
    不正確な思い出のバラ色フィルターを通すと、携帯端末における生産性が頂点に近かったものなのかもしれない。いつも身につけて持ち歩き、気にかけていたことを思い出させてくれるだけの機能は十分にあったが、注意を散らす通知はまったく足りなかった
    iPhone が絶えず自分を煩わせないよう静かにさせるには少し時間がかかったが、Palm はデフォルトがオプトインだった。何かを知らせるよう自分で命じない限り、静かにしていた
    実際に戻れと言われても戻りはしないけれど、一方で懐かしくもある

    • 同じ気持ち。自分の IIIxe が本当に好きだった
      今戻って見ればユーザー体験に愕然とするかもしれないが、当時は生産性を大きく高めてくれた。手書き入力言語も本当に良かった。実際にそれでレポートも書いた
      ノートPCを持ち歩かなくても、バスや移動中に文章を書けたので素晴らしかった。すごいデバイスだった
    • 通知制御は、使える中でも最も強力なユーザー体験機能の一つだと思う。自分が許可している数少ない通知については、位置・時間ベースの集中モードを積極的に活用している
  • 気に入った!短い提案だけど、次のレベルを読み込む前に、ボールがホールに入る瞬間を見せる時間を少し設けるとよさそう。その満足感をプレイヤーから奪うと、もどかしく感じるかもしれない

  • 興味深いプロジェクトだ。メモリリークやデバッグのような問題は、思った以上にゲーム開発ではずっと一般的だ
    こうした問題の多くは Unreal、Unity、Godot のようなゲームエンジンが抽象化してくれたが、C、OpenGL、メモリ制約の中でゲーム開発をするなら、特にハードウェアが制約を強制する場合、同じ初期の試行錯誤を経験し得る
    レベルエディタは良い要素だ。実装が気になるが、Tony Hawk シリーズにも似た系統の機能があり、Tony Hawks Pro StrCpy につながった: https://icode4.coffee/?p=954
    ただし脱獄や任意コード実行は、ミニゴルフのサイドプロジェクトよりも PalmOS ではずっと簡単に達成できそうだ

  • ブラウザベースのエミュレータで試してみたら、ゲームが本当に面白い。練習モードにほとんど吸い込まれそうになった
    Android、iOS、ブラウザ向けの移植版や、これに着想を得たバージョンがあるといい。本当に楽しい