ゲームをCで書いているのはなぜですか(はい、Cで)

私はその実です。 最近やっている私の個人的なゲームプロジェクトはすべて、バニラCで書かれています。だれもそれをしていません。だから、なぜ私がその選択をしたのか興味があるかもしれません。

以下は、気に入らないかもしれないプログラミング言語についての意見です。 私は警告した



言語から何が必要ですか



一部の要件は、議論や妥協の対象ではありません。 まず、言語は信頼できるものでなければなりません。 私はコミットしなかった間違いを探すのに時間を費やす余裕はありません。



Flashで多くのゲームを書いたが、今ではFlashは死んでいる。 古いゲームを最新のプラットフォームにポーティングする時間を無駄にしたくありません;新しいゲームを書きたいです。 プラットフォームが必要で、その寿命は確実です。



私が絶対に欲しいのは、特定のOSに依存しないようにすることです。 理想的には、コンソール用に開発できます。 したがって、言語で記述されたものを簡単に移植でき、またクロスプラットフォームライブラリを適切にサポートできることが重要です。



私は言語から欲しいもの



最も重要だが必須ではない要件は、単純さです。 この言語の機能とその素晴らしいスマートAPIを研究すると、それはめちゃくちゃ退屈だと思います。 理想的な言語は一度学習すれば、そのドキュメントを再び使用することはありません。



バグを見つけて修正すると、創造性が失われます。 より少ないバグを残したいので、強力なタイピング、品質エラーメッセージ、静的コード分析が必要です。 エラーの検索を簡素化し、したがって、優れたデバッグツールと動的分析を行いたいと思います。



美しいリアルな絵には興味がありませんが、パフォーマンスには関心があります。 リソースに対する要求が少ないと、実装に利用できる機会の範囲が広がります。 開発者がパフォーマンスについて考えないときに、最新の強力なコンピューターで何が起こるかを見るのは特に興味深いです。



私はコンパイラの速度についてさらに心配しています。 私は仏教の集中の達人ではなく、10秒以上待つのは無駄です。 さらに悪いことに、それはストリームをノックアウトします。 彼はTwitterを見たばかりで、どこかで5分が消えたようです。



私はOOPの支持者ではありません。 作業に費やした時間のほとんどは、クラスとオブジェクトを扱いました。 しかし、さらに、コードとデータを非常に緊密に結合する必要がある理由がわかりません。 私はデータをデータとして扱い、特定の状況で最適に動作するコードを書きたいです。



代替案



C ++は引き続きゲーム開発で最も一般的な言語であり、これには理由があります。 今まで、私のカスタムプロジェクトのほとんどはそれに書かれており、私はそれが好きではありません。



C ++は私のニーズをカバーしていますが、私の欲求を満たしていません。 彼は非常に複雑です。 適切なツールが利用可能であるにもかかわらず、潜在的なミスを犯しやすいです。 また、Cと比較して、コンパイルに時間がかかります。 C ++はパフォーマンスが高く、Cにはない機能を提供しますが、これは私が望んでいるものではなく、これは非常に複雑なコストで実現されます。



C#とJavaにも同様の問題があります。 これらは冗長で複雑なモンスターであり、小さなシンプルな動物が必要です。 どちらの言語も、プログラマーをOOPの深intoに直接誘導しますが、私はこれに反対です。 ほとんどの高水準言語と同様に、多くの複雑なものがここに隠されているので、誤って自分自身を足で撃つことを防ぐことはできません。



私はGoが本当に好きです。 多くの面で、これは再発明されたCであり、一般に公開される前に数年間考え抜かれたという事実に合わせて調整されています。 Goを使用したいのですが、1つの大きな落とし穴があります-ガベージコレクションです。 Goでのゲーム開発は、ガベージコレクターがゲーム世界全体を一時停止するため、開発者が許可できないため、疑わしいです。 また、ゲームライブラリではすべてがうまくいくとは限りません。 そして、これにCライブラリをいつでも適応させることができますが、問題はありませんが、それでも多くの不必要な作業が発生します。 さらに、私は見通しについて疑問を持っています。 GoはWebに適していますが、ペースの速い環境です。 これは特にFlashの死で感じられました。



JavaScriptは絶対に嫌いです。 自由度が非常に高いため、どのように複雑なプロジェクトを作成するのかが明確ではありません。 そして、私も試してみたいとは思いません。



Haxeは、このリストの他の言語よりもはるかに有望に見えます。 彼はライブラリに問題はありません。 ウェブ上で再び執筆を始めると、間違いなく彼のことをよく知るようになるでしょう。 言語の相対的な若さをいくらか心配している、それは生きますか? これ以上追加するものはありません。Haxeを使用すると、深くプレイすることなく、少ししかプレイできませんでした。



ジョナサン・ブローは自分の言語を書きます。 彼自身が使用したい言語。 私は彼の決定を賞賛し、時には私自身も同じことをするという考えに追いつく。 ただし、既存のライブラリをすべて捨てないでください。 そして、それらとの完全な互換性を実現することはそれほど簡単ではありません。 そして一般的には難しいですが、プログラミング言語よりもゲームを書き続けることを好みます。



なぜCが私にとって最良の選択なのか



Cは危険ですが、信頼できます。 これは、野菜を刻むのと同じくらい簡単に指を切ることができる非常に鋭いナイフです。 しかし、それは簡単であり、それを正しく使用することを学ぶことは難しくありません。



彼は速いです。 そして、コンパイルに関して言えば、どの言語でもそれがより速くできるとは想像できません。

どこでも動作するようにコードを書くことは可能です。 通常、これは比較的簡単です。 いつか変わると想像するのは難しいです。



ライブラリとツールの優れたサポートがあります。



これは私を少し悲しませますが、Cは今でも私にとって最高の言語です。



「ほら、あなたもCを書かなければならない。」のようなことは言いたくありません。 私の好みは非常に具体的であることを認識しています。 さらに、私がさまざまな言語で書いた量では、「バニラ」Cのコードが主導的地位を占めているため、これはすでに私の快適ゾーンの一部です。



はい、Cは私にとって最良の選択です。



翻訳者から



一部の場所での翻訳は非常に無料ですが、意味や内容を損なうものではありません。



私は金曜日に翻訳を準備しましたが、この日は特に適切だと思います。 元のテキストの著者が書いているが、それはすべての深刻さで...それを読んだ場合、あなた自身がすべてを理解しているようです。 読んだ真実を知覚することは価値がありません。



提案、要望、コメントは、いつものように、PMで。



All Articles