いいえ。少なくとも、おそらくそうではありません。
これは、ゲーム開発である車輪を再発明する非常に頻繁なケースであり、間違いはまだ非常に人気があります。
この質問をしている場合、他の人の行動に影響される可能性が非常に高いので、Epic Gamesがアンリアルエンジンで行ったことを見てください。
- UE3には、カスタマイズされた、奇妙で、最適化されていない、デバッグが難しいUnrealScriptのものがありました。
- 噂が正しい場合、ホットリロード可能なC ++ DLLを支持して、そのサポートはUE4で削除されます。
Epicよりもうまくやれると思いますか?
プログラム言語の作成は、ゲームエンジニアではなくプログラミング言語の作成者に属します。
言語が完全に成熟し、それに付随するツールセット(コンパイラ、リンカ、インタプリタ、デバッガなど)が使用可能になるには何年もかかります。現在、手元には多くのソリューションが用意されているため、少なくともゲームを作成することが目的である場合を除き、新しいことをゼロから始める理由はまったくありません。期間。
サイドの質問に答えるために、いいえ、これらの理由から、私は自分のスクリプト言語を実装したことがありません。しかし、私はいくつかの中途半端なものでたくさん苦しんでいます。彼らは非常に狭い機能セットを念頭に置いて作成されたため、彼らはいつもあなたを夢中にさせるこの小さな非常識な癖を持っています。多くの場合、ゲームを作成するだけでなく、言語の制限を回避しようとすると、ひどく多くの時間を費やすことになります。
言語を作成したい理由が、プログラミングをよく知らない人が使用することを意図しているためである場合、または非常にドメイン固有のものが必要であるために必要だと思われる場合は、これらも教えてください悪い理由。関数do_what_they_say_and_say_what_they_do()
、およびその基本的な使用法を公開する非常に単純な定型コードを使用して、非常に高レベルのAPIを作成できます。あまり技術的ではないユーザーは、少しプログラミングを学んでうれしく思います。また、実装が不適切な言語に制限されないことをうれしく思います。
したがって、これは少し突然または耳障りに聞こえるかもしれませんが、理にかなっているケースが1つあると言えます。スクリプト言語の作成方法を学びたい場合です。しかし、もしあなたがそうするなら、どうかお願いします:他人にそれを使わせることはしないでください。
編集
リンクしたCave Storyコマンドリストを見ました。痛い:
<ECJx:y [EC?] Jump @ Jump to event Y if any npc with ID X is present
Cave Storyの背後にいる開発者に無礼を見せたくはありませんが、これは制御不能なカスタムスクリプト言語で変異した単純なコマンドリストの完璧な例です。これは、単一の開発者または非常に小さなチームでも引き続き使用できますが、この段階で、適切なチューリング完全で十分に試行された言語(Luaなど)に切り替えることをお勧めします。
if (npc.id == x) then
jump_to_event(y)
end
これにより、たとえば、より複雑な条件が必要な場合に非常に簡単になります。
if (npc.id == x) or (npc.type == "enemy") then
jump_to_event(y)
end