私がUnityを独学してゲームプログラマーに転職した方法

      2017/01/20

Unityロゴ

「ゲームプログラマーになりたいけど、難しそう…」
「Web系のプログラムは組めるけど、ゲームは無理かな…」

ゲームプログラミングというとすごく難しそうなイメージがありますよね。

私もそうでした。私は業務系のWebアプリ開発の仕事をしていたのですが、ふとしたことからゲームプログラマーを志し、独学でゲーム開発技術を学び、今ではスマホゲームのプログラマーをやっています。

昨今のスマホゲームの爆発的ヒットによって、ゲームプログラマーの需要が急増していて、ゲーム開発経験のない人にもゲームプログラマーになるチャンスが十分あります。

私の場合、Unityを本やWebサイトで独学 → 個人でかんたんなゲームを作る → 作ったゲームを実績として求人に応募して採用されるという方法でうまくいきました。

そんなわけで今回は「Unityを独学してゲームプログラマーに転職した方法」を詳しく紹介します。

ゲーム開発って難しい?

これまでに何度か個人でゲームを作ってみたいと思いチャレンジをしたことがありましたが、DirectXを使ったゲームのソースコード見た時には、

「意味わからん、こりゃ無理だわ(´・ω・`)」

と思って諦めていました。DirectXのコードを見ると確かにゲーム開発はWebなどに比べて難しそうです。

そんなある日、書店でUnityの本が目に入り、手に取ってパラパラと眺めてみました。

Unityなら俺にも出来る!

「どうせ難しいんでしょ?」と思って手に取ったのですが、コードも短いし、やってることもなんとなくわかる気がしました。

「これならいけるんじゃないか!?」

と思ったんです。DirectXは言語がC++なのに対し、Unityは言語がC#やJavaScriptなので読みやすかったというのもあります。

ゲーム開発には高度な数学やゲームアルゴリズムの知識が必要?

ゲームプログラマーを志す際の敷居として「ゲーム開発には高度な数学やゲーム特有のアルゴリズムの知識が必要」というものがあります。私は数学が苦手なので、「やっぱ無理かなぁ」と思っていたのですが、実際今ゲームプログラマーをやれてます。

数学の勉強をしたわけではありません。

Unityが重力処理や当たり判定、フレーム制御などの低レベル処理をやってくれるので、高度な数学やゲームアルゴリズムを自分で実装しなくてもゲームを作ることが出来たのです。

Unity学習のポイント

手を動かしながら学ぶ

Unityで学習すべきことは大きく分けて2つあります。

  1. ツールの使い方
  2. コードの書き方

Unityのツールはかなり高機能でコードを書かなくても、かなり多くのことが出来ます。コードを書くにしてもツールとの連携が必須になるので、ツールの使い方を学ぶ必要があります。

コードの書き方は本やWebサイトを見るだけでも結構頭に入るものですが、ツールの使い方は実際に手を動かして血肉化しないと使いこなせるようになりません。

私の場合、先に本を数冊ざっと読んでみて、「だいぶ基礎的なこと分かってきたな」と思って、Unityを起動してみたのですが、いざやってみようとすると、何をすればいいかが分からず呆然としました。

そこで、ドットインストールのUnity講座をやってみました。動画の通りに手順を実行していくと、本で書かれていたことが思い出されて、知識が血肉化していく感覚がありました。

言語の学習なら本を読むだけでもある程度できますが、Unityは言語 + 開発環境なので手を動かすことが重要なんです。

なので、本を読みながら手順通り操作してみるとか、ドットインストールのUnity講座をやってみることをおすすめします。

やっていく内に自然と操作方法やUnityの特徴がわかってきます。

今だったら、Unityオンラインブートキャンプもいいと思います。人から教わったほうが早く覚えられますからね。

Unityの特徴

ツールとコードのスムーズな連動

green_floppysima20141024222406500

Unityの一番の特徴はUnity Editorというツールで3Dや2Dのオブジェクトを配置して、配置したオブジェクトを操作するスクリプトを張り付けるというものです。

ドラッグアンドドロップなどの作業で直観的に操作できます。

ゲーム内のオブジェクトとそれを操作するスクリプトがセットになるので自然とコンポーネント分割がなされ再利用しやすい設計になりやすいのも良いポイントです。

また、ゲーム内のオブジェクトにはタグをつけることが出来て、例えば"Enemy"というタグを敵キャラのオブジェクトに付けておけば、タグ名で検索して全敵キャラのオブジェクトを取得してまとめて操作するコードが書けます。このような便利な仕組みがたくさんあります。

アセットストアを活用すれば一から作る必要はない

UnityにはアセットストアというUnityで再利用可能な2D/3Dモデルや音声素材、プログラムの部品を配布しているサイトがあります。

この中にCompleteProjectというカテゴリーがあって、ゲームのひな型となるプロジェクト一式のセットになっています。これを元に作れば、元から出来てる部分を見て作り方を学べる、かつ作る手間が省けるので早く効率的な学習 & 開発が出来ます。

私が以前作ったゲームユニティちゃんバズーカミクミク防衛軍もアセットストアにあるMecanimExampleScenesというCompleteProjectをひな形に使っています。

3Dモデルやアニメーションが作れなくてもOK

アセットストアには3Dモデルや再利用可能なアニメーションデータもたくさんあります。

Unityの3Dモデル・アニメーションの形式にMecanimというものがあります。Mecanimは人体などの決まった関節の形式などの共通フォーマットなので、Mecanim形式に対応した3Dモデル・アニメーションならば、別の3Dモデルにも同じアニメーションを適用することが出来ます。

例えば、ユニティちゃん3Dモデル用に作ったアニメーションをプロ生ちゃん3Dモデルに適用することが出来るんです。

またMMDの3DモデルをMecanim形式に変換するMMD4Mecanimというツールもあるので、MMDの初音ミクをUnityで動かすことも出来ます。

サーバ連携も簡単

リアルタイムマルチプレイ通信ならPhotonCloud

モンスターハンターや白猫プロジェクトのようなリアルタイムに複数プレイヤーが動きまわるゲームを作るのもUnityであれば簡単に実現できます。

PhotonCloudというクラウドサービスがあって、このサービスが提供するクライアントSDKを使えば、サーバを自分で用意しなくても簡単にリアルタイムマルチプレイゲームを実装出来ます。

どれくらい簡単かというと、複数クライアントでリアルタイムに同期して描画したいオブジェクトにPhotonCloudが提供するモジュールを張り付けてパラメータをいくつか設定すればOKというレベルです。

TCPソケットやWebソケットを使って自前でリアルタイムサーバを実装することも出来ますが、手間を考えると断然PhotonCloudがおすすめです。

非リアルタイム通信ならWebAPI

リアルタイムではなく、単発の通信でスコアの記録などをさせたい場合はWebサーバとREST APIを用意すればOKです。Unityには簡単にHTTP通信するためのAPIが用意されています。

サーバーサイドの言語はPHP, Perl, Ruby, Python, Java, Node.js, Go等の好きな言語を選べばOKです。

私はNode.jsとRubyを使いたかったのでVPSサーバを借りていますが、PHPだったらレンタルサーバでもOKです。

ゲームが完成したら宣伝する

ニコニコ動画、Youtube, はてな匿名ダイアリー、無料プレスリリース、ブログ、Twitter、Facebook, qiitaなどで宣伝しました。

リリース後、数日はアクセスが2000くらいは来ましたが、その後はすぐに減ってしまいました。

なのでリアルタイムマルチプレイゲームを作っても、プレイヤーが一人しかいないという状況になりやすいので、一人でも楽しめるゲームにする工夫が必要です。

Unityエンジニアとして採用されるためにすること

Unityを独学で覚えたら、Unityエンジニアを募集している企業に応募すればOKです。需要めっちゃあるんで!

いくつかの企業はゲーム開発の実務経験がないという理由で落とされましたが、採用してくれる企業も見つかりました。

Unityエンジニアは需要に対してエンジニアの数が足りてない状態なので、今は採用されるチャンスです!

転職はやってみると思ってたより簡単!

私自身3回ほど転職してるんですが、思ってたより簡単で、転職エージェントを使ったらあっという間でした。

エージェントが応募先候補の選出から、面接の日程調整までやってくれるので、こちらから動かなくても半分くらい自動的に進む感じで楽でした。しかも今は好景気で売り手市場なので転職するのにちょうど良い時期です。

レバテックキャリアっていうエージェントがおすすめです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。

あとホームページ見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

なので、レバテックキャリアのホームページ見てみてください。「ホントだ、美人じゃん♪」ってきっと思うはずです笑

地方在住や、エンジニア未経験の人にも使える転職エージェントがある!

レバテックキャリアは東京・大阪近郊のエンジニア経験者向けサービスなので、地方在住の方や、エンジニアの仕事が未経験の方には、DODAがおすすめです。

未経験の人はサポート対象外のエージェントが多いんですけど、DODAは未経験者の転職も支援してくれます。以前エンジニア未経験の友達にDODAを教えてあげた所、ちゃんと登録できて未経験可の求人を紹介してもらえました。未経験の人こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいくと思います。

DODAは全国に拠点があるので地方在住の方もご利用いただけます。

人脈がなくてもフリーランスになれる!

フリーランスになりたい方にはギークスジョブがおすすめです。人脈がなくてもギークスジョブに登録するだけで案件を紹介してもらえます。案件の希望(どんな技術を使っているか、残業が少ないこと)等も聞いてくれるので、やりたい仕事が出来ます。対象地域は東京・大阪・名古屋・福岡近郊です。

「派遣社員」なら正社員とフリーランスのいいどこ取り!

フリーランスになりたいけど、確定申告とかめんどくさいなという方には派遣社員がおすすめです。

派遣ってネガティブなイメージありますが、ITエンジニアの派遣社員ならやりたい仕事を選べて、給料も悪くないですし、確定申告や年金、健康保険も派遣会社が入ってくれるのでいいと思います。

私の先輩でフリーランスになった後、派遣社員になった人がいるんですが「自由かつ煩わしい手続きがなくて最高」って言ってました!パーソルテクノロジースタッフに登録するだけで簡単に派遣社員になれます。

私(やまろう)への相談メールも募集中

転職や仕事術、勉強法等について質問や相談がありましたら、以下のメールフォームからぜひご連絡ください。
経験者から見れば簡単に解決できる相談って多いのでお気軽にどうぞ!こう書いてもなかなかメールくれる人って少ないのでホント気軽にメールしてくれると嬉しいです。

メールアドレス (必須)

相談内容

たまに間違ったメールアドレスを入力されていて返信できない場合があります。一週間経っても返信がない場合、メールアドレスを確認の上、再度送信をお願いします。

エージェントを使った方が転職活動は楽です

東京・大阪近郊のイケてるIT企業に転職したい人には『レバテックキャリア』

 東京・大阪近郊のエンジニア経験者向け転職サービスです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。

あとホームページ見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

エンジニア未経験の方や地方在住の方にはDODAというエージェントをおすすめします。

エンジニア未経験の方や地方在住の方には『DODA』

全国の求人を扱っていて、しかもITエンジニア未経験の人にも転職支援をしてくれるエージェントです。

未経験の人はサポート対象外のエージェントが多い中、DODAは未経験者を支援し転職を成功させています。未経験の方こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいきます。

『派遣社員』なら正社員とフリーランスの『良いとこ取り』!

  • 「フリーランスになりたいけど、確定申告とかめんどくさいな」
  • 「定時帰りできる職場や、時短勤務がしたい」

という方には派遣社員がおすすめです。

派遣ってネガティブなイメージありますが、ITエンジニアの派遣社員ならやりたい仕事を選べて、給料も悪くないですし、確定申告や年金、健康保険も派遣会社が入ってくれるので、実はとてもいい選択なんです。

 - 勉強法 ,