ゲームプログラマーの基礎について


みなさん、初めまして。

大阪Cygamesのエンジニアをしています 堀端です。

今回は、「ゲームプログラマー」を目指している学生さん向けの
記事を書かせて頂きます。
ここ最近では、
誰にでもゲームが作れる環境が出来てますよね。

UnityUNREAL ENGINE 4など
様々なゲームエンジンがあり
非常にゲームを作りやすくなりました。

Unityの画面

Unity画面

 

UNREAL ENGINE 4の画面

アンリアルエンジン4

 

ゲームエンジンを使えば、

ポリゴンの板を出すのも、とても簡単に出ます。
キャラクターモデルを出すのも、モデルデータさえあれば表示も簡単です。
アニメーションもすぐに動いてくれますし、あたり判定もやってくれます。
エフェクトもエディタがあり、本当に簡単に作れます。
最近のゲームで主流のシェーダーなども常備されていて
グラッフィックも申し分のないものが気軽に表示できます。

本当に良い環境になってますね。

プログラマーがいなくても
ある程度ゲームが作れる状態になってます。

 


 

さて、本題です。

ゲームプログラマーを目指している学生の皆さんは
ゲームを作るときに
何から勉強を始めてますでしょうか?

UnityUNREAL ENGINE 4の操作する勉強でしょうか?
それらを覚えた後にゲーム制作を始めますか?

もちろんゲームを作るという目標であれば
これで問題ないでしょう。

しかしそれでは、ゲームプログラマーとして
基礎を勉強せずに進んでしまわないかとても心配です。
勘違いをされると困るので先に書いておきます。

「楽してゲーム作りをする事は、大賛成です!」

ゲームエンジンを使ってコストをおさえてクオリティの高い
ゲームを作るのは良いことです。

 

ですが最近の学生さんたちは、
これらのゲームエンジンの機能に頼りきってしまうせいか

「ネイティブ実装で、ポリゴンやモデルを表示したことが無い」
「モデル表示はどうやってるのか分からない」
「当たり判定をしたことがない」
「Java,C#しかやったことないのでメモリ管理したことがありません」
「メモリリークってなんですか?deleteってなんですか?」

といった様々な話を聞きます。

エンジンが全てやってくれるから覚える必要が無いという
方向に向かうのは良くありません。

例えば

ゲーム制作の終盤になって良く出る
「不具合」や、「高速化」など
修正の仕方がわからないでしょう。

アマチュアは深いところまで知らなくてもいいですが
プロの現場では、深いところまで触ることが良くあります。

 

私が学生からプログラマーとしてゲーム業界に入るために必要だった
最低限の技術

「DirectX or OpenGLを使ってゲームを作れる技術」

でした。

それはどういったものかというと簡単に列挙すると
以下の通りです。


・C++、C言語の知識
・DirectX or OpenGLのAPIの知識
・メモリ管理システム
・マルチスレッド
・タスクシステム
・当たり判定(球、カプセル、線の交差判定と押し出し)
・Vector, Matrix, Quaternionの算術演算の知識
・算術演算ライブラリの自作
・単体ポリゴン表示
・モデル表示(骨、スキニング)
・アニメーション(骨、シェイプ)
・ライティング(平行ライト、ポイントライト、スポットライト)
・パーティクルエフェクト
・ビュー投影の知識
・ポストエフェクトの知識
・物理演算の知識
・アセンブラの知識
・シェーダーの知識


これらは今のゲーム制作にも、非常に役立っています。
これからプログラムを勉強する人にとっては
覚える量が多いかもしれませんが、一つ一つ進めていけばいいと思います。

UnityやUnreal Engine 4を使ってゲームを作るのも良いのですが、
これらを一からプログラムを打ってみてはいかがでしょうか。
プログラマーとして自分に足りないものが見えてきてきますよ。

 

エンジンはゲーム制作での補助的なものですので、
基礎をしっかり勉強してみてください。

 

基礎が出来ているエンジニアは凄く重宝されますよ!

 

現在、Cygamesではゲームエンジン「Cyllista Game Engine」の制作を行っています。

Cyllista Game Engineの画面

Cyllista

先ほどの知識など持たれている学生の方は一緒に開発しませんか?

Cygamesの新卒採用の情報はこちらです。

お待ちしております!

では、またね!