Javaエンジニアがゲームエンジニアに転職する方法を経験者が教えます
「業務システムに比べてゲームの方が難しいって話聞くけど…」
「ゲーム開発には数学の知識が必要っていうけどホント?」
プログラマーなら誰でも一度は「ゲームを作りたい!」って思ったことがあるかと思います。
私もプログラミングを始めた理由は「ゲームを作りたかったから」でした。
実際就職した会社は業務システム開発の会社で、10年程Javaで業務システムを開発する仕事を続けた後、ゲームエンジニアへ転身しました。
ですから、「Javaエンジニアがゲームエンジニアになることは充分可能です!!」
いくつかの工夫をしたら、意外とかんたんに転身できたんです。
そんな方法を紹介します。
Contents
Javaからゲームエンジニアになる2つのパス
- ゲームのサーバーサイドのプログラムをJavaで作ってる企業に入る
- ゲームのクライアント技術(Unity、Unreal EngineやCocos2d-x等)を学んでクライアントサイドエンジニアに転身する
1. ゲームのサーバーサイドエンジニアになる
ゲームのサーバーサイドの多くはWebと同じ技術で作られています。
いわゆるJSON APIです。WebでもAjaxによる通信をする場合、サーバーサイドはレスポンスとしてJSON形式のデータを返しますよね。あれと全く同じ仕組みでゲームのサーバサイドも実装されています。
例えば、ソーシャルゲームでガチャを回す機能で考えてみましょう。
ガチャを回すボタンを押すとサーバのJSON APIへ通信して、サーバーサイドで乱数を生成してランダムにカードを決定して、決定したカードをレスポンスとして返します。レスポンスを受け取ったクライアントプログラムは画面にカード画像を表示します。
このサーバサイドの部分はWebと同じ技術で実装されています。
JavaでいうとSpringやJerseyなどでJSON APIをかんたんに作ることが出来ます。もちろん、素のServletのout.printlnにJSON形式の文字列を出力する方法でも作れます。
大抵の会社はレスポンスのデータオブジェクトをSpringやJerseyなどのフレームワークを使ってJSON形式に変換出力しています。
私が参加したゲーム開発のプロジェクトのサーバーサイドはいずれもJavaで実装されていました。ゲームのサーバは高い処理性能が要求されるのでPHPやRubyのようなスクリプト言語よりも高速に動作するJavaを採用している会社が多いようです。
ゲームのサーバサイドエンジニアになるのであれば、使ってる技術はほぼ同じなのでかんたんに転身できます。
2. クライアント技術(Unity、Unreal EngineやCocos2d-x等)を学んでクライアントエンジニアに転身する
「サーバーサイドじゃなくて、キャラを動かしたりしたいんだよ!!」という方はクライアント技術を学ぶといいでしょう。
私もそういうタイプでして、こちらの道でゲームエンジニアに転身しました。Unityを独学して、いくつか個人でゲームを作って、それを実績としてアピールしたら採用してもらえました。
作品を作ってアピールしなくてもUnityエンジニアの需要は高く、多くの会社が人手不足なので、「独学で学びました!」だけで通る会社も多いと思います。
Unityは超おすすめ
Unityはゲームエンジンと開発環境がセットになっていて言語は、
- C#
- 静的型付JavaScript
- Booという静的型付Python
で開発することが出来ますが、ほとんどの企業ではC#が使われています。
C#は文法がほとんどJavaといっしょなのでかんたんにマスターできます。プロパティやインデクサなどJavaにはない、ちょっとした便利な文法があって、コード書くのが楽しい言語です!
ですから、JavaエンジニアがUnity・C#を学ぶのはとても良い選択だと思います。
C++派ならCocos2d-x or Unreal Engine
C++が得意だという人はCocos2d-xを学ぶのも良いと思います。Cocos2d-xも人気のゲームエンジンで多くの企業が採用しています。ただ、こちらはUnityと違って2Dゲームしか開発出来ないので、需要は今後減っていくのではないかと思います。
Unityは2Dも3Dも開発出来て、しかも、開発のかなりの部分を開発環境のUI操作で行うことが出来ます。キャラクターや建物などをドラッグアンドドロップで配置して、位置の調整などをしたら、それらを動かすC#のコードを少し書けばゲームが完成します。もちろんそれなりの規模のゲームを作るにはたくさんコードを書く必要はありますけどね。
Unityとほぼ同等の機能のを持っているゲームエンジンとしてUnreal Engineがあります。グラフィック性能が優れていて、美しいビジュアルのゲームを作ることができます。言語はC++です。
「習うより慣れよ」だし「独学するより仕事しながら学べ!」
プログラミングは「習うより慣れよ」だってよく言われていますよね。
「本を読んでいるだけでは身に付かないので、コードを書くべし」って話です。
もっと進めると、「学んでばかりじゃなく、仕事で使うべし」になります。
私はUnityを独学で4か月学んだ後、Unityの仕事を開始しましたが、仕事を開始してからの方がずっと速く上達しました。
ですから、ある程度基礎が身に付いたら、転職活動してみるといいと思います。独学でゲーム技術を学んでいてもお金をもらえませんが、仕事にするとお金も貰えて、しかも上達も速いので一挙両得ですからね。