000%
RESTORATION Nº 11 · 2026
IPHONE · IPAD · MAC

HeavyMach — iPhone・iPad・Macで作り直した戦車アクションゲーム

大学生の頃にiPod touchで遊んだHeavyMachを、現在のAppleデバイスで再び動かせるようにしました。原作の戦闘・成長・ミッションを復元し、広い画面とキーボード操作、自動照準、新しい航空機と地上ユニット、HUDの位置編集を追加しました。私は機能を企画し、自分でプレイして原作と違う部分を見つけ、修正を指示しました。Codexは分析・コード実装・作画・ビルド・検査を担当しました。

緑の四隅とLOCKEDの文字が標的を示す。
FIG. 01HEAVYMACH — IPHONE · IPAD · MAC — IPHONE · IPAD · MAC
HEAVYMACHSECTION 01

iPod touchから現在のiPhoneへ

HeavyMachは2009年に発売された横スクロール戦車アクションゲームです。ピョン・ヘジュンが開発し、パク・ジェチョルが作画を担当しました。デバイスを傾けて戦車を前後に動かし、画面の攻撃したい位置をタッチして照準を合わせ、発射します。ジャンプボタンで障害物を越え、武器ボタンで地上・空中の敵に合う攻撃手段を選びます。復元版でもこの操作を維持しました。

私はCydiaで初めてこのゲームに触れ、その後、米国App Storeのアカウントを作る方法を調べて購入しました。当時の韓国ストアにはゲームカテゴリがありませんでした。後に2017年7月、3番目の職業としてiOS開発者を選んだ際、HeavyMachがその選択に約35%の影響を与えたと思っています。今使っているiPhoneでまた動かしたかったのも、そのためです。初めてiPod touchに触れていた自分を夢で見た後にこのゲームを検索し、原本を見つけたことが復元の始まりになりました。進路を変えた経験と、今このゲームを残そうとする理由は、併せて書いたMagsインタビューで扱っています。 Internet Archive(archive.org)のHeavyMachシリーズ集からダウンロードしたHeavyMach 1.13のビルドを基に、復元を始めました。

この記事では、2026年10月29日の公開版v0.16を基準に、機能と開発状況を説明します。iPhone・iPad・Macに通常アプリとチート検証用アプリをそれぞれインストールできます。原作のルールを復元した後、画面と入力を拡張して新しい敵を追加しました。元からあった機能と新たに加えた機能を区別しながら作業しました。

坂の上に跳び上がった戦車が敵に発砲する。FIG. 02
FIG. 02

The tank jumps above a slope and fires at an enemy.

HEAVYMACHSECTION 02

武器・成長・ミッションのルール

機関砲・散弾・ミサイル・ビーム・航空支援の武器は原作から引き継ぎました。武器ごとに弾速・拡散・重力・連射間隔が異なります。同じ場所から撃っても、武器によって軌道と到達時間が変わります。プレイヤーは戦車の位置と砲身を調整し、武器を切り替えたり支援攻撃を使ったりして敵と戦います。

経験値を得て移動・防御・攻撃能力を強化し、ボスを倒しながらミッションを進める構造も維持しました。ミッションを終えるとパク・ジェチョルのリザルトイラストと次のステージを選ぶ画面が表示されます。戦車が動き、弾が出ることだけでなく、ダメージと強化の計算、敵の移動・出現条件、ミッション終了と保存まで合わせる必要がありました。例えばダメージ強化は、整数除算の順序が変わると結果も変わります。Codexは同じ武器・強化・乱数条件で計算と実行結果を照合しました。

私はインストールしたアプリを実際にプレイし、傾き操作の反転、支援攻撃の落下位置、ボスの動き、抜けていたリザルト画像を指摘しました。修正後、原作復元段階のv0.9のiPhoneアプリで全ミッションをプレイし、その時点ではクラッシュ・誤動作・敵の移動異常は見られませんでした。その後、航空機と自動照準を追加したアプリもiPhone・iPadでプレイしました。

画面上部の武器一覧と選択枠。FIG. 03
FIG. 03

The weapon list and selection outline at the top of the screen.

複数の青い光線が空から地上へ降りる。FIG. 04
FIG. 04

Multiple blue beams descend from the sky.

MOVEMENT・DEFENSE・ATTACKを選ぶ強化画面。FIG. 05
FIG. 05

The upgrade screen offers MOVEMENT, DEFENSE and ATTACK.

戦車のイラストにSTAGE CLEARと次のステージのボタンが表示される。FIG. 06
FIG. 06

STAGE CLEAR and the next-stage button appear over the tank illustration.

HEAVYMACHSECTION 03

HUDの位置編集

戦闘中にMENUを開き、SET GAME UIを選ぶと、ボタン・計器・上部の金属装飾を移動できます。v0.14で追加した機能です。v0.15からは戦闘の一時停止メニューだけから開く形にし、ミッション選択画面の編集ボタンは削除しました。

移動したいグループをドラッグしてAPPLYを押すと、配置を保存して一時停止メニューに戻ります。戦闘を再開するにはRESUME GAMEを押します。RESET LAYOUTは編集中の配置を初期位置に戻し、CANCELは変更を破棄します。停止中の戦闘画面とサンプルシーンを切り替えて配置を決めることもできます。画像とタッチ領域が同じ位置情報を使うため、移動したボタンは新しい位置で押せます。

右側のツールパネルは、HUDをドラッグし始めると閉じます。再び開くにはTOOLSを押します。小さい画面では補助ツールだけがスクロールし、CANCEL・APPLYは下部に残ります。ツールボタンには、原作の金属ボタンの板・角・押下状態を再利用しました。

実装中には、カスタム配置で上部の金属板と接続レールが消える問題がありました。CodexがUPPER TRIMというグループとして復元し、個別に動かせるようにしました。戦闘中、装飾はタッチを遮りません。既存の配置ファイルも読み込め、変更した配置をAPPLYするときに1回保存します。

Codexは実機のiPhoneとiPadでHUD関連の検査をそれぞれ13件通過し、MENUを右へ動かして新しい位置を押すと一時停止メニューが開くことも確認しました。下の編集・適用画面はチートアプリで撮影したものです。上部の方向ボタンは、そのアプリの検査用ボタンです。HUD編集の実装記録に入力・保存・装飾復元の過程をまとめています。

iPhoneのチートアプリで上部の金属装飾を下に動かしたHUD編集画面。ドラッグ中は右のツールが閉じる。FIG. 07
FIG. 07

Upper metal trim moved downward in the HUD editor; the right-hand tools fold away during dragging. iPhone cheat app.

iPhoneのチートアプリでMENUを右に移して適用し、新しい位置を押して開いた一時停止メニュー。FIG. 08
FIG. 08

The pause menu opened by pressing MENU at its new position on the right. iPhone cheat app.

HEAVYMACHSECTION 04

保存・描画・音響・時間処理

初期実装では、射撃・被弾・経験値の獲得のたびにファイルを保存していました。私が「発射のたびにファイルを保存?」と聞くと、Codexはメモリ更新とファイル保存を分離しました。スロット選択・次のステージへの移動・ゲームオーバー・メニュー復帰時に保存するように変更し、既存の3,624バイトの保存形式は維持しました。修正後の自動検査では、180フレームの射撃中のファイル書き込みは0回、メニュー復帰時は1回と記録されました。

初期のレンダラーはCPUでピクセルを計算し、行を反転してコピーした後、毎回画像オブジェクトを作っていました。私は、自分で正常動作を確認した環境で動く原作と比較し、UIKitで毎回ゲーム画像を作る実装を見直すよう指示しました。CodexはOpenGL ES 1.1でスプライトを描画し、テクスチャを再利用する形に変えました。テクスチャ転送後に不要になったCPU側のピクセルメモリも解放しました。MacはデスクトップOpenGLの互換経路を使います。

射撃音には別の遅延もありました。Codexが測定したAVAudioPlayerの効果音再開始呼び出しは、平均52.887ms、p95で58.549msでした。OpenALのバッファとソースをあらかじめ用意して発射時に再利用するよう変更した後、再生呼び出しのコストは平均0.007053ms、p95で0.008167msと測定されました。測定対象は、効果音の再生を要求する呼び出しの処理時間です。

時間計算も修正しました。初期実装では実際の経過時間を蓄積し、画面を1回表示する間にゲームの状態を更新しなかったり、複数回更新したりしていました。Codexはこれを、画面を表示するたびに1回ずつ更新する形に変えました。一時停止やバックグラウンド移行時には、ゲーム時間・効果音・発射を押し続ける入力を停止します。復帰後はプレイヤーが手動で再開し、戦闘中に120秒間入力がない場合も同じように一時停止します。武器切り替え時に抜けていた効果音も再生するように直しました。

HEAVYMACHSECTION 05

広い画面と座標

画面比率に応じて、より広いワールドを表示するようにしました。新たに見える左右の領域でもタッチした場所へ射撃するには、実ピクセル・UI・カメラ・ワールドの座標を区別する必要があります。ボタンの画像とタッチ領域は同じ配置計算に従います。両方の横向きに合わせてセンサーとタッチ座標を変換し、逆になっていた傾きによる移動方向も修正しました。

ミッション3-5の航空機型ボスが早く接近しすぎる問題も、画面拡張に起因していました。Codexは最初、私が言った敵をヘリと取り違えました。航空機だと訂正した後の調査で、画面幅が広がったために敵の表示条件と戦闘開始条件が早く成立していたと分かりました。Codexは表示範囲が広がってもボス戦が早く始まらないよう、戦闘開始条件を別に処理しました。

航空支援攻撃が戦車の後ろに落ちる原因は、タッチを離したときに渡していた偽の座標でした。Codexは入力解除と照準座標を分け、最後の有効な攻撃位置を維持するように直しました。リザルトイラストが出なかった経路では、JPG・PNGの接尾辞対応を修正しました。画像を見つける問題を直した後には、広い画面で画像の外側に戦場が見える問題も別に修正しました。

タイトル・モード・ミッションメニューでは、中央の既存画像を維持し、左右に背景を追加しました。つながらない陰影や構造を修正し、テクスチャの余白が混ざって表示されていた黒い線も除去しました。メニューを切り替える際、4枚のパネルがドアのように閉じて画面全体を覆うように変えました。中央のマークの大きさを保ち、外側だけを広げました。閉じたときに隙間ができないよう、表示座標を整数にそろえました。

HEAVYMACHSECTION 06

自動照準の操作と弾道

アーマード・コアとエースコンバットの目標選択・追跡を参考に、自動照準を企画しました。移動やジャンプ中も砲身は敵を追いますが、移動・ジャンプ・武器選択・発射はプレイヤーが行います。HUDのAボタンを押すと、前方の近い敵を選びます。矢印ボタンで目標を切り替え、照準器ボタンで発射します。再びAを押すと、原作のタッチ照準・発射に戻ります。

選択した敵は画面外へ出ても維持します。撃破・削除されたり戦車の後方へ移動したりすると、別の前方の敵を選びます。目標にはコーナー装飾とLOCKED・TRACK・BLOCKEDの状態を表示し、画面外の目標は画面端の方向表示で示します。目標がない場合は基本の砲身角度に戻ります。

Codexは武器の速度・重力・寿命と敵の直前の移動量を使い、到達可能な弾道を計算しました。実弾と同じ順序で重力と位置を更新し、砲身角度に応じて砲口位置も再計算します。低い弾道が地形に阻まれる場合は高い弾道を調べ、航空支援武器では上空の発射点を反映します。

当初、私は武器の放物線と敵の動きを計算し、必ず命中する照準を要求しました。Codexが入れたC補正は、弾速・拡散・飛行経路まで変えていました。影響を確認した後、これを削除させました。現在の機能は目標選択と砲身調整であり、弾速・拡散・重力・ダメージは既存武器の値を使います。発射後に敵が動いたり弾が拡散したりすれば、外れることがあります。

Codexは自動照準を切った状態で、機能追加前後の手動射撃の記録を比較しました。20種類の武器、3つの乱数シード、それぞれ420フレーム、合計25,200フレームの記録がバイト単位で一致しました。画面外・地形の下・目標なしの状態をより分かりやすくする案内は今後の課題です。

緑の四隅とLOCKEDの文字が標的を示す。FIG. 09
FIG. 09

Green corners and the LOCKED label mark the target.

LOCKEDと表示された空中の敵と戦いながら跳ぶ戦車。FIG. 10
FIG. 10

The tank jumps while fighting a locked airborne target.

自動照準で空中の敵に発砲する。元の速度、5秒。FIG. 11
FIG. 11

Firing at an airborne auto-aim target. Original speed, 5 seconds.

自動照準で発砲しながらジャンプし、着地する。元の速度、6秒。FIG. 12
FIG. 12

Jumping, firing at an auto-aim target and landing. Original speed, 6 seconds.

FIG. 13

Auto-aim gameplay with sound · 7 seconds.

FIG. 14

Jumping, firing and the weapon list with auto-aim · 7 seconds.

HEAVYMACHSECTION 07

6種類の航空機

新しい空中の敵は、垂直離着陸機Yak-141・Harrier GR3・F-35Bと、戦闘機F-22・Su-57・MiG-31です。私は機種・外形・武装・出現条件を指定し、既存の敵を置き換えずに配置の間へ追加させました。Codexが作画とコードを担当しました。

垂直離着陸機は既存ヘリの移動と武装を活用します。Yak-141は単発ミサイル、Harrier GR3は2発の機関砲、F-35Bは2発のミサイルを使います。移動に応じて機体が傾き、砲口・ノズル・当たり判定も機体姿勢に従うようにしました。14サブミッションに合計113機を追加し、元の敵配置1,182項目の名前・座標・順序・ボスフラグは維持しました。新ユニットには別の乱数状態を使い、既存の敵の乱数呼び出し順を変えないようにしました。

3種類の戦闘機にはルクス・ルナエの塗装を施しました。黒色・金のライン・金色のキャノピー・尾翼のエンブレムで、視覚的なオマージュを表そうとしました。ボス戦とその直前のミッションの終盤に強力な増援を加え、ボス1体と通常の敵が協力して攻撃する戦闘の難度と緊張感を高める企画です。既存コードとリソースを再利用し、原作を変える箇所を少なくしようとしました。

HeavyMachは、私が開発者という職業を選ぶことに影響を与えました。エースコンバット8の発売が決まったと聞いたときは、少なくとも発売日までは生きていなければと思いました。ルクス・ルナエを加えることで、私の人生で両ゲームが持つ意味をHeavyMachという1つの作品に込めました。記憶にあるルクス・ルナエの外観と、相手にしたときの脅威・緊張を一緒に移そうとしたので、塗装と武装・出現条件をまとめて企画しました。

耐久力は既存の通常Heli定義の最大値450に1.7を掛けた765です。F-22とSu-57は既存の単発ミサイルを1発ずつ3連射し、MiG-31は2発のミサイルを3組、合計6発発射します。ミサイル速度は160から200へ25%上げました。連射速度の増加は後の指示で25%から10%へ下げ、既存武器のダメージ・重力・拡散・寿命は維持しました。

7つのボス戦と各直前ミッションに、合計72機を追加しました。直前ミッションでは最後のワールド区間に4機ずつ出現し、ボス戦ではボスとの戦闘が実際に始まると出現します。私は通常アプリで機体が画面内に突然現れる問題を見つけ、修正を指示しました。Codexは機体全体が画面右端の外から入ってくるように直しました。進入中は発射せず、一時停止すると進入も止まります。既存ボスのクリア判定は維持しました。

画面内へ素早く進入する速度は、Codexが独自に決めました。私が直接指示した箇所ではありませんが、エースコンバット8で戦ったルクス・ルナエの高速一撃離脱と旋回戦を思い出させたため残しました。現在の動きと武器使用手順は原作の感覚を逸脱していないと思います。v0.16では編隊が進入するときの間隔を修正しました。

Codexは機体の生成位置と進入先に同じ相対配置を適用しました。横の間隔は140、縦は70で、機数・武装・速度・進入後のAIは維持しています。増援14区間、画面サイズ5種類、プレイヤーの高さ2種類の140条件で、生成から進入完了まで機体間の余裕を確認しました。ただし戦闘が始まると原作のAIがプレイヤー付近へ移動するため、再び密集することがあります。プレイヤーを固定した別の56条件の比較では、進入20秒後に重なる機体の組数は修正前372から修正後533に増えました。編隊進入の修正記録では、進入とその後の戦闘を分けて記録しています。

新しい機体の絵は、Codexに何度も描き直させました。私は実機の形状を維持しながら原作の色調と質感に従うよう求めました。最初の案には、頼んでいない短い機首や誇張された装甲など、外形の再解釈が入っていました。Codexは実際の写真・図面を形状の参照に、既存のゲーム画像を色調・質感の参照に分けて作り直しました。その後、私は実際のゲーム画面で輪郭・表示サイズ・後部の炎を確認し、修正を指示しました。具体的な選択理由と、この過程への評価はMagsに続きます。

この作業では、テキストの指示を受けたCodexが既存コード・アセットを読んで再利用し、指定した外形と動作をどこまで正確に実装できるかも確かめようとしました。両ゲームで得た経験をHeavyMachの戦闘に取り入れながら、自分でプレイして何を変えるかを判断し続けています。進入後の戦闘中に再び密集する現象は残っており、画面外へ離脱して再攻撃する動作はまだ構想中です。

戦車が黒い航空機に光線を発射する。FIG. 15
FIG. 15

The tank fires a beam at the black aircraft.

FIG. 16

Combat against the added aircraft · 13 seconds.

HEAVYMACHSECTION 08

シルカ・ツングースカの地上ユニット

v0.13からシルカとツングースカが地上の敵として登場します。既存の敵を置き換えず、35ステージに計152両を追加しました。シルカは白い弾丸を6発ずつ、ツングースカは白い弾丸4発とミサイル2発を連射します。武器ごとに発射位置と発射状態を管理します。

航空機を追加したときと同様に、外見は新しく作り、元の地上ユニットの移動と戦闘動作を使うよう求めました。Codexが車体・砲塔・砲身・ミサイル発射管・レーダーを個別に作り、既存のパーツ構造につなぎました。弾丸・煙・爆発・効果音、被弾と破壊の処理も既存の経路を使います。車体と武器を1枚の絵にまとめず、斜面での動きと砲身の反動を維持しています。

レーダーは砲塔に固定した台座と、その上の回転部に分けました。回転部には24方向の絵を使い、砲身とは独立して回ります。新しいパーツには原作の色調と質感を反映しました。外見を直す間も、車体の動き・武装・ミッション配置は維持しました。

シルカは最初に組み立てた砲塔が平たく見えたため、再修正しました。実車写真を参考に側面装甲と後部の厚みを増やし、長いアンテナ2本を取り除きました。その後、砲塔の表示高さを16からツングースカと同じ29へ上げ、砲身とレーダーの接続位置も動かしました。最終画像と修正過程は地上ユニットの制作記録にあります。

下の2枚は、iPhone・iPadのチートアプリで組み立てと射撃を検査した際の、最終パーツ適用後の画面です。通常アプリにも同じユニットが入っています。追加した敵を含む全キャンペーンの弾薬・ダメージ・クリア難度は、引き続き確認する課題です。

iPhoneのチートアプリで、最終砲塔高さを適用したシルカが斜面で白い弾丸を発射する。FIG. 17
FIG. 17

Shilka fires white rounds on a slope with its final turret height. iPhone cheat app.

iPadのチートアプリで、ツングースカが斜面でミサイルを発射する。レーダーは砲身と独立して回転する。FIG. 18
FIG. 18

Tunguska fires a missile on a slope; its radar rotates independently of the barrel. iPad cheat app.

HEAVYMACHSECTION 09

Appleの3プラットフォームで共有するコード

ゲームルールはC++20、Appleデバイスのウィンドウ・入力・グラフィックス・音響との接続はObjective-C++で構成しました。HeavyMach.xcworkspaceで共通モジュールとiOS/iPadOS・Macプロジェクトの依存関係を管理します。移動・弾道・ダメージ・成長・敵配置を各アプリへコピーせず、同じコアから利用する構成にしました。武器の数値を1つ変えたときに3プラットフォームへ同時に反映するためです。

共通コードはプラットフォーム別SDKでコンパイルした静的frameworkとしてリンクし、画像・音源・マップ・追加画像はHeavyMachAssets.bundleとしてアプリに含めます。iPhoneとiPadは同じiOSターゲットを使います。MacはAppKitアプリとしてウィンドウ表示とフルスクリーンに対応し、Catalystは使っていません。プラットフォーム別のコードは、ウィンドウ、アプリのライフサイクル、入力、グラフィックスコンテキストの違いに対応します。

iPhoneは両方の横向きへの画面回転とタッチ・傾き・キーボードに対応します。iPadは画面比率に合わせたキャンバスでタッチ・傾き・キーボードを併用できます。Macはキーボードで操作します。移動・ジャンプ・砲身調整・発射・武器選択・メニューをキーに割り当て、Shiftで傾きと砲身角度を細かく調整します。

チート検証用アプリではミッション・全武器・パーツ・強化条件を指定し、同じ戦闘を繰り返せます。通常アプリとは異なるアプリID・保存領域を使い、チートコアとランタイムも分けてビルドします。コアの計算だけでなく、実際の画面で武器を選び、押して離す操作まで確認するために使います。

HEAVYMACHSECTION 10

確認した結果と残る検査

2026年10月29日に公開したv0.16では、Codexが編隊進入と戦闘機能を検査し、iPhone・iPadの通常アプリとチートアプリを無線で更新しました。既存のセーブとHUD配置を維持して起動し、私が両方の機器で直接プレイした際には異常は見られませんでした。

同日の計測では、iPad Air M2の編隊進入区間のフレーム呼び出し間隔p95が21.39msで、基準の20msを超えました。修正前と同じ条件で比較し、原因をさらに調べる必要があります。iPhoneの進入・戦闘区間とiPadの戦闘区間は、呼び出し間隔の基準を通過しました。

iPhone Airと13インチiPad Air M2にインストールした通常アプリを私が直接プレイした際、フレーム落ちや誤動作は見られませんでした。Codexが2026年10月27日に行った実機自動検査では、両デバイスとも85項目中84項目が通過し、表示時間比較の1項目が失敗しました。実際に検査したOSはiOS/iPadOS 27.0.1です。自動検査のキーボード入力にはDevice HubのOSキー入力を使用しており、Bluetooth・USBキーボードを実際に接続する検査は残っています。

Mac mini M4 Pro、macOS 27.0.1では、移動・ジャンプ・照準・射撃・20種類の武器・メニュー・グラフィックス・音響・フルスクリーンを含む33項目が通過しました。開発用証明書で署名した通常・チートアプリのリークは0件でした。それ以前にad-hoc署名アプリで検出されたシステム接続のリークは、署名とアプリ登録状態を照合して解消しました。1200×800・1920×1080の6シーンで、30フレームの準備後に180フレームを測定した処理時間のp95は10.86~14.29msでした。

HUD編集を追加した後、ローカルのad-hoc署名で計測すると、6条件中3条件で処理時間の基準16.67msを超えました。修正前も5条件が基準を超えていました。以前の開発証明書による署名と条件をそろえた再計測、ウィンドウ表示の遅延調査は残っています。

2026年10月28日には、Codexが公開mainを新規cloneし、既存の作業フォルダと原本パッケージへのアクセスを遮断した状態でビルド・実行しました。リソース1,482個のハッシュを照合し、コア21項目・iOS 10項目の検査が通過しました。通常・チートアプリをiPhoneシミュレータでも実行しました。他の人もリポジトリのファイルだけでビルドできるかを確認する検査でした。

iPhone・iPadの表示時間検査が失敗した原因は、さらに調べる必要があります。長時間の移動・ジャンプ・戦闘での発熱・電力・メモリ変化、実際のキーボードの接続と再接続、追加航空機を含む全キャンペーンの弾薬・ダメージ・クリア難度も確認する予定です。アラームアプリを使ってからゲームへ戻ると音が消えるという報告もあり、原因調査前です。条件別の数値は検証記録にまとめました。

HEAVYMACHSECTION 11

ダウンロードしてビルドする

現在のビルドはApple Silicon・arm64向けです。プロジェクトの最低OS設定は、iPhone・iPadがiOS/iPadOS 15.0、MacがmacOS 12.0です。実際の検査環境は前述のOS 27.0.1のデバイスです。ビルドにはApple Silicon Mac、Xcode、CMake 3.20以上、Python 3、Git LFSを使います。ソース・画像・音源・マップ・ビルドプロジェクトはGitHubリポジトリにあります。

git clone https://github.com/gelb2/HeavyMach.git
cd HeavyMach
git lfs install --local
git lfs pull
python3 tools/verify_build_resources.py
open HeavyMach.xcworkspace

Git LFSで大きいリソースを取得した後、リソース検査ツールを実行し、workspaceを開きます。Xcodeで自分の開発チームと署名を設定し、実行先を選びます。iPhone・iPadの通常アプリはHeavyMachRestored、チートアプリはHeavyMachValidationです。Macの通常アプリはHeavyMachMac、チートアプリはHeavyMachMacValidationです。v0.16 Releasesのソース・リソースアーカイブを取得してビルドする方法もあります。シミュレータ実行・実機インストール・署名エラーの解決はインストール文書にあります。

バージョン管理は、作業ブランチをdevelopへ、developだけをmainへマージする順序です。リリースタグはmainのマージコミットに付けます。特定のリリースを再ビルドするときは、そのタグのソースとリソースを一緒に使います。コード構造・機能・修正過程・変更履歴は全体文書から参照できます。

GitHub Releasesにはv0.9からv0.16までの変更記録があります。上のcloneコマンドはmainを取得します。特定の公開版をビルドする場合は、そのタグのソース・リソース一式を選びます。v0.16の後には、リリースノートの抽出、リソース入り圧縮ファイル、ハッシュ、GitHubの下書き公開を扱うtools/release.pyもmainに追加しました。v0.16のパッケージと失敗・再開の検査17件を確認し、このツールで新しいリリースを実際にアップロードして公開する工程は次の版に残っています。リリースツールの説明にコマンドと出力物を記載しています。

HEAVYMACHSECTION 12

今後の開発

2026年10月29日時点の公開版はv0.16です。自動照準・航空機6種類に続き、地上ユニット2種類、HUDの位置編集、文字を除いたアプリアイコン、編隊進入間隔の修正を反映しました。アイコンはiPhone・iPad・Macの通常アプリとチートアプリに適用しています。

自動照準の状態案内の改善とチュートリアル0-0〜0-4は未実装です。AndroidはアイコンのPNGを用意しました。共通C++コアをCMake・NDKでビルドし、ウィンドウ・入力・音声・グラフィックをAndroid APIにつなぐ作業は今後の計画です。まだAndroidアプリやAPKはありません。

ビルド警告はまだ全面的な調査・修正を終えていません。一部の警告は、使用が推奨されなくなったAPIに関係すると推測しています。機能追加と並行して警告の原因も調べる予定です。ダウンロード・リソース準備・ビルド・実行をまとめるスクリプトも計画しています。Mac実行とiPhone・iPadへのインストールを選び、必要なツール、開発チーム、署名設定を案内する方式です。

HEAVYMACHSECTION 13

制作者・ライセンス・プレイ資料

原作の制作者は、開発者のピョン・ヘジュンとイラストレーターのパク・ジェチョルです。2011年にWeMade Entertainmentの子会社WeMade Creativeが、HeavyMach・HeavyMach 2のIPを含むIndiappsの資産を取得しました。制作者と会社ごとの役割には、原作制作と後の買収を分けて記録しました。

このプロジェクトで新たに書いたコードにはMITを適用します。ライセンス適用範囲は、原作由来の資料・外部コード・文書を区別します。原作の画像・音源・ゲームデータと追加画像にはリソース利用条件を適用し、OpenAL Soft・stbなどは外部ライブラリ告知に従います。

私はこの復元版で金を稼ぐつもりはありません。他の人も自分でビルドしてプレイできるよう、コードとアセットを公開しました。今後も復元した内容や修正した内容を記録していくつもりです。原作者や他の利害関係者から公開停止を求められたら、リポジトリを削除するつもりです。後にsass.studioのApp Storeアカウントを作り、原作者・利害関係者から配布許可を得た場合も、無料で提供します。

プレイ資料は私が録画した動画から抽出しました。PNG 8枚、元の速度で再生するGIF 2本、音声付きMP4 3本で、原作のジャンプ・武器・強化・ミッション結果と、新しい航空機・自動照準を見ることができます。シーン別の元動画の時刻とファイル一覧も併せて公開しています。

Nine Years and Three Months

私はこの復元版で金を稼ぐつもりはない。コードとアセットを一緒に公開し、ほかの人も自分でビルドして遊べるようにしたい。このゲームをどう復元し、何を直したのかも記録に残すつもりだ。

利害関係者から連絡があれば、このプロジェクトは取り下げる。HeavyMachの制作陣が私にくれた9年3か月は、私を造った創造主が最初に私に割り当てた寿命を超える値だ。

金が必要なのは、この世だけだ。

— FIN —