ゲームプログラマーの『求人の見方』と最近の技術事情を紹介
「需要が多い技術を知りたい」
「優良なゲーム会社を見分ける方法ってある?」
私は元々業務システム開発の仕事をしていて、Webサービス開発へ移った後、ゲームエンジニアになりました。
ゲームプログラミングって難しい印象があったのですが、独学でUnityを学んで、いくつか自作ゲームを作って、それを実績にして応募したら採用してもらえました。
そんな経験を踏まえて、「ゲームプログラマーの求人の見方を経験者が教えます」を紹介します。
Contents
ゲームプログラマーは大きく分けて2種類
ゲームプログラマーの求人は、
- クライアントサイドエンジニア
- サーバーサイドエンジニア
があります。
Webの場合、クライアントもサーバーも一人のプログラマーで対応することが多いですが、ゲームの場合、クライアントとサーバは担当が分かれる場合が多く、求められる技術セットも異なります。
クライアントサイドエンジニアはゲームの画面表示プログラムを作ります。
サーバーサイドエンジニアはサーバーのデータベースを検索したり更新するプログラムを作ります。
1. クライアントサイドエンジニア
- C++またはC#を用いたゲームプログラム開発経験
- コンシューマーゲーム開発経験、もしくはUnityでの開発経験
- スマートフォン(iOS/Android)に関するゲームプログラミング経験がある方
のように書かれているのがクライアントサイドエンジニアです。
C++, C#, iOS/Android等と書かれていれば、クライアントサイドエンジニアの募集だと考えて良いでしょう(C++はサーバーサイドで使われてる場合も有り)。
2. サーバーサイドエンジニア
- LAMP環境での実務経験がある方
- 大規模サービスでの実務経験がある方
- PHP、Ruby、Javaを使用したシステム開発経験
- Linux、RDBMSを用いたアプリケーションの開発経験
などと書かれているのはサーバーサイドエンジニアの求人です。
分かりやすく「サーバーサイドエンジニア募集」って書いてある求人もあります。
そうではなく、「ゲームエンジニア募集」って書かれている場合は、
「どっちサイド(クライアント/サーバ)の募集なのか」
をよく見てみましょう。
これからゲームプログラミングの技術を覚えたい方は、クライアント側(画面表示)かサーバーサイド(データベースアクセス)のどっちをやりたいかを考えてみてください。
個人でゲームを作る場合は両方必要なので、両方学びます。
ゲームのサーバーサイド技術はWebのサーバーサイドと大部分は同じなので、Webや業務システムのサーバーサイドエンジニアをやってる方がゲームのサーバーサイドに転身するのは比較的かんたんです。
ゲーム開発の流行技術
最近はスマホゲームの求人が多いのでそちらに絞って考えてみます。
クライアントサイドの技術
スマホアプリは大きく分けて
- iOS系(iPhone, iPad等) → プログラミング言語はObjective-CかSwift
- Android系 → プログラミング言語はJavaかKotlin
があります。
同じゲームでもiOSとAndroid両方にリリースするなら本来、別の言語で作らなければならないのです。
その不便さを解決するために登場したのがクロスプラットフォームのゲームエンジンです。
1. Unity
現在一番よく使われているゲームエンジンです。Unityで開発したコードは設定によりiOS用にもAndroid用にもビルドできます。
またUnityは2Dと3Dどちらのゲームもかんたんに作れます。ゲームプログラミングって難しい印象がありますが、Unityを使うと思ってたよりずっとかんたんにゲームを作れます。
UnityではC#, JavaScript, Boo(Python方言)の3つのプログラミング言語が使えますが、ほとんどの会社でC#が使われています。
2. Cocos2d-x
Cocos2d-xも人気のあるゲームエンジンです。
Unityとの一番の違いはCocos2d-xが2Dのみのサポートであることです。Cocos2d-xで3Dゲームは作れません。
最近のスマホゲームは3Dのものが多いですが、まだまだ2Dゲームも人気なので、2Dゲームを作りたい方にはいいと思います。Cocos2d-xではC++でコードを書きます。
3. Unreal Engine
Unreal Engingeはグラフィック性能に優れたゲームエンジンです。
Unityよりも綺麗なグラフィックのゲームが作れると言われています。
開発言語にC++が使用されます。
サーバーサイドの技術
サーバーサイドの技術は大きく分けて2つの要素があります。
- プログラミング言語
- データベース
1. プログラミング言語
サーバーサイドのプログラミング言語は多数の選択肢があります。
PHP, Ruby, Python, Perl, node.js, Java, Scala, Go等さまざまです。
JSON APIというJSON形式(JavaScript Object Notation)のデータをクライアント側に返すAPIを作成します。
2. データベース(DB)
MySQL, PostgreSQL, Redis, memcached, MongoDBなどがよく使われています。
MySQL, PostgreSQLはリレーションデータベースと言われるタイプのDBで、SQLという問い合わせ言語を使います。
例えば、ユーザーの経験値を取得するSQLは
SELECT keikenchi FROM users WHERE user_id=12345
のような感じになります。英語みたいですよね。
Redis, memcached, MongoDBはNoSQLというタイプのDBでSQLのような共通の問い合わせ言語はなく、それぞれのDBごとにちがったアクセス方法が用意されています。
ゲームエンジニアは需要が増加中で求人がたくさんあるので、ぜひチャレンジしてみてください。私も独学で採用まで行けましたからね。