プログラミング
Show HN: 独自のスクリプト言語とIDEを備えたC#製ゲームエンジン
Show HN: C# Game Engine with its own scripting language and IDE (github.com)
要約
ArcadeMakerは、独自のスクリプト言語「Exp」と統合IDEを持つクロスプラットフォームの2Dゲームエンジンです。C#で開発されており、MonoGameをバックエンドに利用してデスクトップ、モバイル、コンソールへのエクスポートが可能です。開発はまだ完了していませんが、オープンソース化され、コミュニティからの貢献を募っています。
全文翻訳
ArcadeMaker
ArcadeMakerは、独自のプログラミング言語(プロトタイプはExpと呼ばれます)と統合IDEを備えた、シンプルな2Dクロスプラットフォームゲームエンジンです。エンジンとIDE自体はC#で書かれていますが、ArcadeMaker内でゲームをプログラミングするために使用する言語は、C#ではなく私のカスタム言語です。現在、グラフィックスとオーディオのバックエンドはMonoGameによって強化されており、デスクトップ、モバイル、コンソールへのエクスポートが可能です。また、Webサポートを可能にするためにKNIエンジンの実装を追加する予定です。このプロジェクトはまだ完成していません。しかし、作業に費やす時間が非常に少ないため、他の人が興味を持ち、現実的なものにするのを助けてくれることを願って、オープンソース化することにしました。ArcadeMakerはGameMaker 8に基づいているため、もしあなたがGameMakerを使ったことがあるなら、学習は非常に簡単だと感じるでしょう。
プロジェクトの背景
ArcadeMakerは数年間にわたりいくつかの段階を経て構築されており、その異なる部分は私のプログラミングの旅の非常に異なる時点で書かれました。IDEは約3年前に書かれましたが、その頃の私のプログラミングスキルは今日とは大きく異なっていました。Exp言語はIDEの後に作成されましたが、それでも現在のコアエンジンとMonoGame実装が存在する前でした。当初、ArcadeMakerはユーザーがゲームロジックを直接C#で記述するC#ベースのエンジンとして始まりました。プロジェクトをしばらく離れた後、私は独自のプログラミング言語を作成し、ArcadeMakerに戻ることを決定しました。古いC#スクリプトレイヤーを私の言語に置き換え、その周りでコアエンジンを書き直しました。この長く、段階的な開発履歴のため、IDEには現在、新しいエンジンバックエンドがまだサポートしていない多くの機能が含まれています。例えば:
親オブジェクト — IDEではサポートされていますが、エンジンにはまだ実装されていません。
Dllパッケージマネージャー — IDEには存在しますが、現在はいかなる効果もありません(エンジンがスクリプトにC#を使用していたときは効果がありました)。
長期的な目標は、新しいエンジンを古いC#バージョンと同等の機能レベルまで引き上げ、その後それをはるかに超えて拡張することです。
計画されている機能
エンジンの不足しているIDE機能の完全な実装
WebエクスポートのためのKNIエンジンのバックエンド
Exp言語のより完全で安定したバージョン
drawRect()、deactivateInstancesInRegion()、setRoomWidth()など、一般的な日常使用のゲーム関数のすべてを実装
モバイルおよびコンソールビルド用のクロスプラットフォームテンプレート
ドキュメント、チュートリアル、サンプルプロジェクト
オープンソース化する理由
私はArcadeMakerに取り組むのが好きですが、それに値するペースで開発するのに十分な時間がありません。オープンソース化することで、他の人が以下を行うことを願っています:
エンジンを実験する
言語とツールを改善する
不足している機能を追加する
バグを修正する
プロジェクトの将来を形作るのを助ける
GameMakerスタイルのワークフローを楽しんでいる方や、軽量で初心者フレンドリーな2Dエンジンに貢献したい方は、ぜひ参加してください。
ビルド方法
リポジトリをクローンします。
お好みのC# IDE(Visual Studio、Rider、またはVS Code)でソリューションを開きます。
NuGetパッケージを復元します。
プロジェクトをビルドします。
IDEプロジェクトを実行してArcadeMakerを開始します。
(オプション) — IDEがロードされたら、「ファイル -> プロジェクトを開く」に移動して、「tests/Example Projects」からサンプルプロジェクトをロードします。
貢献
あらゆる種類の貢献を歓迎します:
コードの改善
バグ修正
ドキュメント
機能提案
エンジンバックエンドの実装
言語設計のアイデア
プルリクエストを送信する前に、アイデアについて議論するためにイシューを開いてください。現在、私はこのプロジェクトに一人で、自由な時間を使って取り組んでいる唯一の開発者なので、ドキュメントは本当に、本当に不足しています。私はそれを改善するために最善を尽くしますが、プロジェクトに関連することなら何でも質問してください。私はすべてに答えます!
ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。詳細はLICENSEファイルを参照してください。
このREADMEとAIの使用について
このREADMEファイルを作成するためにGPTを使用しました。AIについて言及されているので、それについていくつか言葉を:
このプロジェクトには、AI生成コードまたはアーキテクチャはほぼ0%含まれています。唯一の例外は、衝突検出のためのSeparating Axis Theoremの数式を記述するためにClaudeを使用したことです。なぜなら、その数学は私にとって少し重すぎるからです。それ以外はすべて — エンジン、IDE、言語、アーキテクチャ — 手書きです。AIをプログラミングツールとして使用することに何か問題があるからではありません。それがソフトウェア開発の未来の巨大な部分であることは知っています。それは単に、私がこのプロジェクトを楽しみと挑戦のために構築し、個人的には機械にそれをやらせるよりも、自分でコードを書くことを楽しんでいるからです。AIとその増大する力の時代においても、このプロジェクトの完全なバージョンは本当に有用であると信じています。ArcadeMakerは初心者フレンドリーなエンジンであり、人々はたとえ最終的にすべての行を手書きしなくなったとしても、コードがどのように機能するかを常に理解する必要があります。それを学ぶ唯一の本当の方法は、実際にコードを書くことです。そして学習を超えて、このエンジンはAIにすべての作業を任せることなく、一人で、単に楽しむためにゲームを作りたい人にとって素晴らしいツールにもなり得ます。