
2026/08/11 22:34
Show HN: スクリプト言語と独自エディタを搭載したC#ゲームエンジン
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
ArcadeMaker は、GameMaker 8 の遺産を踏まえて構築されたオープンソースのクロスプラットフォーム 2D ゲームエンジンで、開発を加速させつつ AI が生成したコードへの依存を厳格に最小限に抑えることを目的としています。独自言語である"Exp"と C# インテグレーション開発環境 (IDE) を備え、MonoGame フレームワークを通じてデスクトップ、モバイルデバイス、コンソールへのエクスポートをサポートしています。現在、C# コアがより軽量でコミュニティ主導のプロジェクトへと書き換えられているアーキテクチャ移行段階にあり、Parent オブジェクトなどの一部のレガシー機能は、古いバージョンとの機能パラリティが達成されるまでサポートされていません。今後のアップデートでは、Exp 言語の安定化、日常使用に必要な機能(例:
drawRect、リージョンの非アクティブ化)の追加、Dll パッケージマネージャーやウェブエクスポート機能といった未実装の IDE ツールの導入に焦点を当てます。プロジェクトは MIT ライセンスの下で運営され、プルリクエスト前に課題追跡が必要という透明性の高い開発プロセスを採用しており、協調的な人間の労力を確保しています。特に、アーキテクチャおよびコードは AI の関与がほとんどないものの、分離軸定理(Separating Axis Theorem)のための複雑な数学的式については、その固有の難易度から Claude の支援を受けています。本文
ArcadeMaker: オープンソース化の背景と未来
ArcadeMaker は独自のプログラミング言語(プロトタイプ名:「Exp」)と統合開発環境(IDE)を備えた、シンプルなクロスプラットフォーム 2D ゲームエンジンです。
🛠️ 技術スタックと設計思想
- コア実装: エンジン本体と IDE は C# で記述されています。
- スクリプティング言語: ゲームロジックを実装するための言語は C# ではなく、プロジェクト作成者が設計したカスタム言語(Exp)を使用します。
- グラフィック・音声バックエンド: MonoGame を採用しており、以下のプラットフォームへのエクスポートが可能です。
- デスクトップ
- モバイル
- コンソール
- 将来の拡張計画: ウェブプラットフォーム向けのサポート(KNI Engine)の実装も予定しています。
📜 プロジェクトの背景
本プロジェクトは数年にわたる複数の段階を経て構築されました。開発は長期かつ漸進的に行われており、現在の IDE には新しいエンジンバックエンドがまだサポートしていない機能が残っています。
開発歴史の変遷
- IDE の誕生: 約 3 年前に作成されました(当時の技術力とは大きく異なります)。
- Exp 言語の設計: コアエンジンや MonoGame 実装が存在する以前に行われました。
- 構造的な進化:
- 当初はユーザーがゲームロジックを直接 C# で記述できるエンジンでした。
- プロジェクト一時的休止期間中に独自言語を開発し、元々の C# スクリプティング層をExpに置き換えました。
- これに合わせてコアエンジンも再構築されています。
現在の実装ギャップ
長期的な開発のため、以下の機能は IDE には存在しますが、エンジン側では未実装です:
- 親オブジェクト: IDE ではサポート可能ですが、エンジン側では実装されません。
- Dll パッケージマネージャー: IDE 内には存在しますが、現在は効果が発揮されていません(C# スクリプティング時代の名残)。
長期的な目標
新しいエンジンを旧来の C# ベージョンと同等の機能レベルへ引き上げ、その後さらに拡張可能な状態へと発展させることです。
学習へのヒント:
は GameMaker 8 に基づいて設計されているため、過去に GameMaker の経験がある方は学習がスムーズに進むはずです。ArcadeMaker
🚀 計画されている機能
以下の新機能実装を進めてまいります:
- エンジンへの未実装の IDE 機能の完全な実装
- ウェブエクスポート向けの KNI Engine バックエンドの実装
- Exp 言語のより完備かつ安定したバージョンへの上書き
- 日常利用される一般的なゲーム機能の全てを実装(例:
,drawRect()
,deactivateInstancesInRegion()
など)setRoomWidth() - モバイルおよびコンソール向けにクロスプラットフォームビルド用のテンプレート提供
- ドキュメント、チュートリアル、およびサンプルプロジェクトの整備
💡 なぜオープンソース化了吗?
開発を心から楽しんでおりますが、単独での時間的余裕不足により、プロジェクトが deserved なペースで発展し得ていません。
他者にも参加いただき、以下の取り組みと共にプロジェクトを育てることを願ってオープンソース化しました:
- エンジンを実践的に試す
- 言語とツールの改善
- 欠落している機能の追加
- バグの修正
- プロジェクトの将来像を共に形作る
GameMaker スタイルの開発ワークフローをお楽しみいただければ、または軽量で初心者にも優しい 2D エンジンへのコントリビュートをご希望であれば、ぜひご参加ください。
🛠️ ビルド方法
以下の手順で開発環境を構築してください:
# 1. リポジトリのクローン git clone <repository_url> # 2. ご利用の C# IDE でソリューションを開く # - Visual Studio # - Rider # - VS Code # 3. NuGet パッケージの回復処理を実行 dotnet restore # 4. プロジェクトのビルド dotnet build # 5. アプリケーションの実行 dotnet run
(オプション)サンプルプロジェクトの確認 IDE を起動した後、以下の手順でサンプルを読み込んでください:
- メニューから
→File
を選択します。Open Project
ディレクトリにあるサンプルプロジェクトを開きます。tests/Example Projects
🤝 コントリビュートについて
あらゆる種類の貢献を歓迎いたします:
- コードの品質向上
- バグ修正
- ドキュメントの充実
- 新機能の提案
- エンジンバックエンドの実装
- 言語設計に関するアイデア
参加手順
- Issue の作成: プルリクエストを送付する前に、必ず関連する Issue を開いてあなたのアイデアについて議論してください。
- 質問歓迎: 現在、一人の開発者が担当していますためドキュメントが不足している箇所があります。不明点は Issue でお気軽にご質問ください。喜んで回答いたします!
⚖️ ライセンス
本プロジェクトは MIT License に基づいています。詳細については
LICENSE ファイルをご確認ください。
📝 この README と AI 利用に関する注記
この README の一部は GPT を使用して作成しましたが、以下の点について補足しておきます。
- AI 依存度の低さ: 本プロジェクトには、ほぼ 0% に近いレベルの AI が生成したコードやアーキテクチャが含まれていません。
- 例外: 衝突検出のための「軸分離定理(Separating Axis Theorem)」の数式は計算が複雑なため、Claude を使用して記述しました。
- その他: エンジン、IDE、言語、アーキテクチャのすべては手書きで構築されています。
- AI 利用への姿勢: AI をプログラミングツールとして利用することに何ら問題はありません。むしろ、ソフトウェア開発の未来において極めて重要な要素です。
- 本プロジェクトの目的: 私は趣味と挑戦のために作り上げており、「機械にコードを書かせてもらう」ことよりも「自分でコードを書く過程を楽しむ」ことが喜びです。
- 教育的意義: AI の時代を踏まえつつも、本プロジェクトは手書きでの記述から離れてしまっても「プログラムがどのように動作するかを理解する」必要性を示すためのツールです。その理解を得る唯一の方法は、実際にコードを書くことです。
AI にすべてを任せずに、単なる趣味で自分でゲームを作りたくなる人々にとって、
ArcadeMaker は素晴らしいツールとなるでしょう。