ゲームプログラマーは、デザイナーのビジョンを実際にゲームエンジンで動かす人です。私はKwaleeのモバイルゲームプログラミングチームで働いており、主にUnityを使っています。たとえば、デザイナーが特定の方法でサイコロを転がしたいと考えた場合、そのロジックを処理するスクリプトを書きます。 また、ゲームアーティストと協力して、ゲームが見栄えが良く、高いパフォーマンスを実現することにも目を光らせます。
このブログでは、Kwaleeでの5年間の経験を活かして、ゲームプログラマーとしての基本的な洞察とアドバイスを共有します。使用する言語やツール、原則、さらに私のキャリアアドバイス、初心者および上級者向けのヒントも紹介します。
ゲームプログラマーの役割は何ですか?
コードを書いてゲームを現実にします。 ゲームデザイナーがコンセプトを作成し、ゲームアーティストがアセットを作成する間に、プログラマーは機能的でプレイ可能な体験を創り出します。ゲームのパフォーマンスを最適化し、特定された問題をトラブルシュートします。
ゲームが優れた感触で高パフォーマンスで動作することを保証します。これを達成するには、コード自体がクリーンで拡張可能であることを確認する必要があり、これは思っているより難しいです。 コーディング標準を使用して、チーム全体の一貫した品質を維持します。これには、名前の付け方やフォーマットなどが含まれる場合があります。しかし、時にはすべが単純でないこともあり、時間内に完了させるために一工夫が必要となります。
私たちの責任には、ゲームがエンドユーザーハードウェアでうまく動作することの確認も含まれます。モバイルゲームでは、古いデバイスが過熱しないように注意が必要です。アーティストと協力してドローコールの数を最適化します。ドローコールとは、CPUからGPUへのオブジェクトの画面描画命令であり、テクスチャ、メッシュ、シェーダーなどの描画を促します。ドローコールの数を最小限に抑える必要があります。多すぎると、フレームレートの低下やスタッタが発生する可能性があります。これを解決するにはさまざまな方法がありますが、複数のオブジェクトを単一のドローコールにバッチしたり、ユニークなテクスチャやマテリアルの数を減らしたりすることが役立ちます。特にモバイルでは、異なる技術仕様を持つ多種多様なデバイスが市場に出ているため、これが非常に重要です。
主なゲームプログラミング言語は何ですか?
日常のゲームプログラマーとして、私たちの時間の多くは、さまざまなプログラミング言語でスクリプトを作成することに費やされます。最終的に別種のソフトウェア開発者です。選ぶべき言語はたくさんあります。あるものは他よりも易しいように見えるかもしれませんが、いったん一つを学んで習得すれば、他も確実に学べます。最大の挑戦は、業界の門をくぐることです。
次に、最も人気のあるゲームプログラム言語をいくつか紹介します。
- C# - ゲーム開発で広く使用される多用途の人気プログラミング言語です。初心者に最も取り組みやすい言語の一つです。その最大の特徴の一つは、自動ガベージコレクションがある点で、メモリ割り当てを自動で管理してくれます。忙しいプログラマーにとって非常に便利です。
- C++ - 対照的に、アンマネージドな言語であり、メモリをマニュアルで割り当ておよび解放する必要があります。それにより、複雑さと難易度が一段と上がります。しかし、スピード、制御、パフォーマンスの向上を可能にします。
- Java - C#と同様に、メモリ管理とガベージコレクションが搭載されており、開発者が詳細にこだわらずにメモリを管理しやすくしています。Web開発や企業アプリケーションで広く使われていますが、ゲーム開発のトップチョイスではないかもしれませんが、効率的でスケーラブルなアプリケーションの作成には無駄がない選択肢です。
- Swift - iOSとmacOS向けにアプリやゲームを構築するためのAppleのネイティブ言語です。しかし、クロスプラットフォームの開発にはそれほど向いていません。私たちはモバイルゲームを常にAndroidとiOSの両方に公開することを目指しています。
どうすればゲームプログラマーになれるか?
ゲームプログラマーになるためのさまざまな方法があります。私の道は比較的一般的で、スタッフォードシャー大学でゲームデザインとプログラミングを学びました。最初はゲームアートに進むと思っていました。子供の頃から芸術に非常に情熱を持っており、大学のアートのモジュールを非常に楽しんでいましたが、そこでゲームプレイを作成することがとても楽しいと気づきました。高ポリゴンモデルを作成するのに数日かかることがありましたが、ダックを飛ばして爆発させるのにかかる時間は半分でした。プロトタイピングを行うと、結果をすぐに目の前に見ることができます。
しかし、ゲームをプログラミングすることの美しさは、伝統的なルートを通らなくても、多くの人にアクセス可能であることです。私の大学には50歳以上の友人もいました。新しいことを体験するのに遅すぎることはありません。Kwaleeでは、主にYouTubeのビデオを見ながら学び、お遊びでゲームを作った人を雇用しました。今日、新しい才能への数多くの機会があります。新しい学生のポートフォリオを見ると、彼らには多くのものが備わっています。素晴らしい才能がやってきて、業界の中でエキサイティングな時期です。
おそらく聞きたい質問のひとつ - AIはプログラミングというキャリアに影響を与えるでしょうか?とても役に立ち、ますます向上しています。問題に詰まったり、何かを説明してほしいときには、まさに完璧です。バグをトラブルシュートしたり、最新のChatGPTにコードを貼り付けてリファクタ(「クリーンアップ」)するのに使えます。しかしポートフォリオを見るとき、私たちはあなた自身のスキルを見たいと考えるので、AIを使っても構いませんが、自分のスキルの代替にはしないでください。
ゲームプログラマーの日常はどのようなものですか?
私の生活に基づいて一例を挙げましょう。 私はリードプログラマー(自分の夢の仕事と呼んでいます)ですが、ハンズオンと他のプログラマーの管理をバランス良く行っています!
私の典型的な一日は、ラテを手に取り、QAチームのバグやブロッカーをダブルチェックすることから始まります。次に、他のチームメンバーがブロック作業を解除するために何かが必要かどうかを確認します。その後、音楽をかけてタスクリストを掲示します。Slackで進捗状況を共有し、素早くフィードバックを得ながら、チームメンバーをサポートするために2~3つのプロジェクト間でアイデアを飛ばし合います。私たちはまた、プログラミングの効率を高めるために共有システムに多くの時間を費やしています。すべてがスムーズに動作するには、定期的に維持し、更新、修正する必要があります。
初心者向けのゲームプログラミングのヒント
絶対にたくさん学ぶ機会があります!
- YouTubeなどで多くのことを学べますし、サンプルゲームも多いので学ばない理由はありません!人気のあるエンジンは無料で、非常に楽しく使用できます!
- マスターピースと言われる「デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素」(通称Gang of Four)という独特の本にも目を通すと良いでしょう。これは30年経った今もプログラミングの日々の作業に不可欠なゲームパターンの基礎を紹介しています。
- 自分の考えはあるかもしれませんが、基本が分かるまでシンプルにスタートしましょう。
- 商業プロジェクトに拘束されていない時には、好きなだけコードを書けるので、楽しんでおかしなものを自由に作成してください。
- ポートフォリオを構築することが非常に重要です(これで私は仕事を得ました)。ただし、大学の一般的な標準的な作品ばかりをアップロードしないように気を付けてください。追加の1日を使ってリスキンしたり機能を追加したりすると、注目されるかもしれません。
- 広告料金またはアプリ内課金で何千ドル稼ぐことも可能です。あなたがセットアップされるまで、また、パブリッシャーと提携し独自の本格的なゲームを作りたくなる場合です。
- プログラミングだけでなく、アート、デザイン、QA、交流がある他の分野についても学びましょう。例えば、QA手法を理解していると思い込んでいると、問題を認識していても気づけない罠に陥る可能性がありますが、ユーザーとしてプレイすることでコーディングの視点からの「こうあるべき」と考えるのではなく、全く異なるやり方を試しましょう。
上級者向けのプログラミングのヒント
ここでは、ジュニアからプログラマー、そしてシニア、リーダーに至るいくつかの役に立つヒントを示します。
- 学び続けることは常に役に立ちますし、間違いなしに学ぶことはできません!
- もしあなたが何かに本当に熱中しているなら、更に専門化することができます。たとえば、シェーダーやレンダーパイプラインに取り組むのが好きなら、画像シェーダーを使用して複雑なビジュアルエフェクトを描画する能力を拡大したり、パフォーマンスを最適化したりする方法を学んでください。あるいは驚くべきエフェクトを作成するために、レンダーパイプラインを使用したりします。
- 本当にすごいもの、例えば複雑なシステムを作ることができたら、あなたの契約が許すなら、それをアセットストアにアップロードして、高度な作業を公開してください。ある特定のタイプのプログラマー、例えばゲームプレイプログラマー、サーバープログラマー、グラフィックスプログラマー、マルチプレイヤープログラマーとしてニッチを開発することもできます。
- または、私のようにマネジメントの道を歩み、他の人を指導することができます。私のキャリアを進めるための戦術は、新しい責任を吸収することでした。最初は小さなことを改善することから始めました。即ち、小さなワークフローの変更です。次に、新しいプロジェクトを作成するときに時間を節約するためにテンプレートを使用してプロセスを簡単にしました。それから、メンタリングとマネジメントにのめり込むことでより多くの自信を得て、共同閲覧、コードレビュー、ワークショップの開催やプロジェクト管理を担当するようになりました。
チームの一員として働くときも、マネージャーとして働くときも、称賛を与えることも建設的な批判を与えること同様に重要です。コードをレビューするときは、他人を元気づけるのが良いです!
ゲームプログラミングの基本原則は何ですか?
ゲームプログラミングをカバーするブログに組み入れざるを得ない重要なトピックがいくつかあります。以下に最も重要なことを示します。
ソースコントロール/バージョンコントロール
ゲームにセーブポイントがあるように、プロジェクト開発にもセーブポイントがあります。これらはプロジェクトの一般的な記憶領域として機能し、3、4人のプログラマーが同時にシステム上で作業を行い、変更をサーバーにプッシュすることができます。変更を追跡することができ、何かが壊れた場合にも簡単にロールバックすることが可能です。2人の開発者が同じファイルに取り組むと、そのファイルはマージの一部となり、競合がある場合は手動で解決するか、特定の個人の変更を選択して適用することができます。Unity内でPrefabsやScenesを使用するときにたくさん発生します。
これらの用語は時々重なりますが、一般にソースコントロールはコードにフォーカスし、バージョンコントロールはプロジェクトのすべてのファイル、アセット、ドキュメントを含みます。
Source Controlを初めて使用する際は、初めての人にとっては少し怖いかもしれません。非常に圧倒されることもあり、競合が発生すると何をすべきかわからないことがあります。でもバージョンコントロールは時間の瞬間を保存するのに役立ちます。頻繁に更新が行われ、詳細にコミットメッセージが付けられていれば非常に有用で安全です。複数のポイントへの戻る、複数のブランチを持つこと等も可能です。それをPixarのToy Story 2のように偶然削除されたが、彼らのテクニカルディレクターの自宅のハードドライブから回復されましたが、代わりにすべて安全にサーバー上に保存されていると考えてください。
オブジェクト指向プログラミング
これは主にKwaleeで使用しているプログラミングの一種です。オブジェクトを使って具体的なものや抽象的な概念を表し、コードベースを現実の物の見方や操作と同様の構成にして、複雑なシステムを維持しやすくすることを目的としています。コードを独立したクラスに分け、再利用、拡張しやすく、その後のメンテナンスを行いやすくします。
もちろん、それが良いか悪いかの議論はあります。最も高い性能を備えているわけではないですが、非常に機能的です。言語と同様に、それぞれに利点と欠点があり、1つを学び、始めるのが賢明です。コンパイラ(人間のコードを機械コードに翻訳するプログラム)の動作を理解するために、最初に学ぶ価値のあるものを選んでください。さらに、関数型プログラミング(数学に近い考え方を取る)や、論理プログラミング(事実とルールを使用する)、命令圧力プログラミング(ステップバイステップのデータ処理を行う)を考慮することもできます。
プログラミングパターン
これらは便利なもの - ソフトウェアデザインでよく直面する問題を解決するための再利用可能な解決方法です。問題を解決する方法をテンプレート化して、一からずつ車輪を発明する必要を無くし、実証済みのソリューションを使えるようにします。
例えば、シングルトンデザインパターンは、ゲーム設定マネージャーのクラスがゲームの中で唯一のインスタンスであることを保証し、それへのグローバルアクセスポイントを提供します。このパターンのコードにより、SettingsManagerクラスのインスタンスが一つだけ存在し、必要に応じてそれを再作成または複製する必要が無くなります。
さらにファクトリパターンもあり、オブジェクトをより組織的で柔軟な方法で作成する手助けをします。例えば、キャラクターやアイテムのような特定の種類のオブジェクトを生成するメソッドを定義し、入力パラメータに基づいて、より多くのオブジェクトを簡単に作成できるようにすると、毎回スクラッチから始めることを避けられます。
このブログがゲームプログラミングの領域に対する興味を持たせたことを願っています。初心者でも経験豊富なプログラマーでも、Kwaleeのキャリアについて詳細を確認するか、私たちのモバイルゲームや出版について知り、デベロッパーとして私たちがリリースしていることをもっと知って、私たちのチームに適合する楽しい一面を発見してください。








