概要
- 筆者がゲーム開発にC言語を選ぶ理由 の説明
- 信頼性・移植性・シンプルさ を重視する姿勢
- 他の言語(C++、C#、Java、Go、Haxe等)との比較
- C言語の危険性と利点 の両面を評価
- 個人的な選択であり、他人に強制しない 立場
私がゲームをC言語(そう、C)で書く理由
- 最近の個人プロジェクトゲーム はすべて 「バニラ」C言語 で開発
- 一般的でない選択、理由の共有
言語に求める絶対条件
- 信頼性重視、自分で起こしていないバグに時間を割きたくない
- Flash向けゲーム の経験、Flashの終焉による教訓
- 長期間存続するプラットフォーム の必要性
- 特定OSへの依存回避、コンソール開発の選択肢確保
- 移植性と移植性の高いライブラリサポート の重要性
言語に望むこと
- シンプルさ重視、複雑な言語機能やAPIに疲弊
- 覚えやすい言語、何度も調べる手間の削減
- 厳格な型付け、強力な警告、静的解析 によるバグ削減
- 優れたデバッガや動的解析 でバグ発見容易化
- 高精細リアリズムは不要 だが、パフォーマンスは少し気にする
- コンパイラの速度重視、10秒以上待つと集中力が切れる
- OOP(オブジェクト指向)への懐疑、データとコードの柔軟な分離志向
他の選択肢との比較
-
C++
- ゲーム開発で主流、契約仕事でも多用
- 複雑さ・バグの発生しやすさ・コンパイルの遅さ が大きな不満
- 不要な機能が多く、シンプルさに欠ける
-
C#・Java
- 冗長・複雑、OOPに強く誘導
- 隠蔽された複雑性 が時に問題化
-
Go
- Cの現代版 という印象で好感
- GC(ガーベジコレクション)による停止 がゲーム開発に致命的
- ゲーム向けライブラリ不足、Cラッパー作成の手間
- ニッチさ による将来性への懸念
-
Web(JavaScript、Haxe等)
- Web環境の変化の速さ、Flash終了の恐怖
- JavaScriptの緩さ に不信感、大規模開発への不向き
- Haxe は将来性に不安も、Web開発時に有力候補
-
自作言語
- 独自言語開発への憧れ はあるが、ライブラリ資産の喪失や互換性維持の負担
- 本業はゲーム制作、言語開発に本腰を入れる気はなし
C言語が今も最適な理由
- 危険だが信頼できる、鋭い包丁のような存在
- 高速な実行とコンパイル、開発効率の高さ
- ほぼ全ての環境で動作可能、移植の容易さ
- 強力なライブラリとツールサポート の継続
- 特別推奨はしない、個人的な快適さと経験による選択
- 他人の選択を否定しない姿勢、自分のスタイルへの納得
まとめ
- C言語の選択は極めて個人的なもの
- シンプルさ・信頼性・移植性・高速性 を重視
- 他言語の複雑さや制約に対する違和感
- 「Cを使うべき」とは言わないが、自分には最適