ゲーム業界について(3) プログラマー

チーム内での役割は特に明記する必要はないだろう。
ただ、一口でプログラマーといっても、プログラマー内での役割は様々ある。
特に志望者の人は、どの役割を担うことになるかわからないし、やりたいこともあるとおもうので、注意。

職種内での役割分担

プログラマーという職種はチーム内においてプログラミングを行うわけだが、何をプログラミングして作るかということにおいて、役割分担を見ることができる。

その何を作るかということに関しては、大きくわけて次の2つに分けられる。
・アプリケーション(ゲーム)
・ライブラリ・ツール

アプリケーション
アプリケーション部分というのは、実際のゲームを作ることを指す。
ゲームプログラマー志望者がイメージしているのは主にこの部分だろう。

ゲームの基本システム、個別システムなどに分担され、基本システムを担当するのが主にメインプログラマー(チーフプログラマー)と呼ばれる人であることが多い。

基本システムは、ゲーム全体を統括する担当になるが、そのゲームの根本部分も含まれる。
また、全体的な設計ということも含まれるだろう。
そのゲームの基本部分というのは、格闘ゲームであればPCを操作し戦うという部分にあたる。

個別システムなどは、基本的な部分を作られたあとに、敵キャラ個別に組み込んでいくことなどが挙げられる。

ただ、実際のゲーム作りの役割分担は、企業によってもチームによってもタイトルによっても変わってくるので、絶対的なものはない。
またライブラリの充実度や後述するライブラリ・ツール担当の位置づけなどでも変わってくる。

メインプログラマーやそれに匹敵する立場のプログラマーとなると、ライブラリのカスタマイズやゲーム設計、問題が起きたときの切り分けなども必要になるので、ライブラリ・ツールに対しての知識も必要になる。


ライブラリ・ツール
これらはゲームを作るということでは裏方にあたるかもしれないが、大変重要な役割である。
一般的にはアプリケーションを作れてもライブラリやツールは作れないということはあっても、ライブラリやツールを作れてもアプリケーションは作れないということはない。
(もちろんアプリケーションにも独特のノウハウはあるが、一般的な技術力としての問題)

というのは、ライブラリは実際にはそれを用いてアプリケーションを作成するのであるから、アプリケーションを作るときのことを想定せずに作ることはできない。
想定せずに作られたライブラリなど何の役にも立たないといっても過言ではない。

ライブラリの大きな機能としては、描画、入力デバイスの管理、ツールとの連携などが挙げられる。
昨今では、物理演算、ネットワーク通信などもある。

ツールとしては、グラフィック関係と企画関係が挙げられる。
(もちろん、役割分担は会社によっても異なるので、その内容からこのように分けた)

グラフィック関係は、グラフィック素材を作成するという行程をより効率的に行うためのツールである。
市販のツール(MAYAやXSIなど)のプラグイン形式であることもあれば、独自のWindowsアプリケーションということもある。

企画関係としてはゲームに必要なデータ作成用のツールということになる。
これも市販ツールを利用してということもあるが、独自ツールであることも珍しくはない。
例えば敵の配置を行うツールなどが挙げられる

ライブラリとツールとどちらかというと困る部分もあるが、スクリプトというのもある。
役割としての位置づけはツールではあるが、ライブラリとも密接である。

また、サウンド関係のツールなどもある。


必要な技能

まずはプログラミング言語。

主にCまたはC++言語が必須といえる。
元々はC言語であることが多いが、昨今はC++へと移行していることも珍しくない。
これはコンシューマ機、携帯ゲーム機でも共通である。

また、アセンブリ言語も必要になることがある。
これは主にライブラリ、アーケードゲーム機、可能性としては携帯ゲーム機でもあり得る。
PCゲーム機では使うことはほとんどない。

次に軽量言語。
PerlでもPHPでもRubyでもPythonでも構わない。
直接用いるということは少ないが、ちょっとしたことをするときに便利である。
またゲーム製作でのスクリプトを作成するときに役に立つ。
PerlかPythonあたりがお勧めかもしれない。
Perlは汎用性が高く、Pythonは海外で非常に人気が高くMAYAなどの市販ツールでも使用可能なことが多い。

携帯電話でのゲームとしてはJAVAが必要になってくるだろう。
もし携帯電話でゲームを作ることになり、対象にAUのBREWがある場合は地獄を見ることを覚悟しておくこと。

その他プログラミングに関することとしては、ツールやファイルフォーマットについてもできるだけ知っておく方がよい。
ツールはないと実践できないので辛いところ。
調べれば分かることでもあるので、情報がどこにあるのかをチェックしておくことはお勧めする。

またアルゴリズムについても深い造詣が必要。
プログラミング言語を知っていても、適切なアルゴリズムが思いつかなければ役に立たない。

アルゴリズムって?といわれると、手法ということもできるかもしれない。
例えばソートでも「バブルソート」「ヒープソート」「クイックソート」などが挙げられるし、経路探索なども様々なものがある。
時には自分で適切なアルゴリズムを作り出すことは必要だ。
ただ、いろいろなことは専門家により研究されているので、それを自分の血肉にしておくことが重要だ。
そうすることで、新しいアルゴリズムを思いついたり、既存のものを改良したりすることができる。

直接的ではないこととしては、体力と良きプログラマー仲間。

上手くいかなかったり、締め切り間際になると体力勝負になるし、携帯電話ゲームは別にしても、携帯ゲーム機でさえも何ヶ月もかかる。
長い間、継続して業務を行うということでは、やはり体力は必要である。

よいプログラムを書くにはよいプログラムソースを見ることという話もある。
やはりいろいろな知識を得たり、相談したりするためにも良きプログラマー仲間は必要だ。


なり方

適切な学校にいき、必要な基礎知識を得、就職活動を行う。

中途の場合、ゲーム以外のプログラマーからも転職可能だ。
ただ、基本的にはIT系のほうが明らかに待遇は良いので、家族がある場合にはあまりお勧めできない。


企業にもよるが、多くの場合作品提出が求められる。
求められないのは、大手企業を中心とした新卒採用と、中途で商業製品であるため提出できない場合だ。
それでも、なんらかの作品があったほうが良い。
あまりにへっぽこな作品を出すとマイナスだろうが。

作品としては、ゲームもしくはツールとなるだろう。
Windowsアプリケーションでなんら問題はない。
どのような内容が良いかは、志望する担当による。
ただ、3D作品であることはプラスになると思う。

評価が低くなりがちなものとしては、2Dシューティングゲームが挙げられる。
2Dシューティングそのものが悪いというよりは、ありがちで差別化がされにくいということが多い。
そうとうレベルの高いものであったりシステムが斬新などでなければあまりプラスにならないだろう。
また2Dシューティングはよく専門学校の課題になるようで、基本部分がみんな一緒だったり、下手すると90%以上同じソースだったりする。

また、課題で作ったものや、講師が作ったものをベースとして作ったものは減点対象だ。
課題で作ったものでもフルスクラッチで作っているのであれば問題はないが、ただ、同じものを同じ課題をやったものが作っているということは忘れずに。
講師が作ったものをベースとすると、ソースをみれば明らかであるから、志望者はなめんなと。

逆に評価が高くなりやすいのはツール。
特に3D関係のツールやサウンド関係のツールだろうか。
サウンド関係は特に人口も少ないのでかなり評価されやすいだろうが、そのかわりその道に進むことになるのはほぼ確定となる。

注意点としては、必ずドキュメントを添付すること。
プログラム作品で圧倒的な差を付けられないと思えば、ドキュメントで差を付けるくらいドキュメントに労力を割くべき。
特にツールの場合は顕著。
誰でも知っていて志望者あこがれである、ある大手の企業では、ドキュメントがなければその時点で不採用決定となるほど。
ドキュメントがしっかりしていて、さらに目立つものであったから採用というケースもあるくらいだ。

結局、ゲームだろうがツールだろうが作っても使われなければ意味がない。
また、他人に説明する能力があるか、理路整然としたドキュメントが書けるかというのがドキュメントで端的にうかがい知れる。


雑感

プログラミング技術だけでやっていけるか?というのをネット上で見かけることがある。
その答えとしては、ムリということになる。
一時期をそれだけでしのいでいけるかもしれないが、その程度。

ただ、独自のアルゴリズムだけでというのであれば、可能となる。
例えば、非常に性格も悪く仕事で関わる人、全員がそのアルゴリズムという能力さえなければ絶対につきあわないという人も存在する。
ただし、これは希有な例であることは間違いない。

コミュニケーション能力は、チーム製作である以上、必ず求められる。
これはプログラマーに限った話ではないが。

また、ハードウェアの知識も必要だ。
Windowsアプリであれば多少は許されるが、コンシューマ、携帯ゲーム機、携帯電話、アーケードは一種の組み込み系だ。
ハードの能力を十分に引き出すには、やはりハードウェアの知識が必要になる。

特にメモリの概念がない者は個人的にはプログラマー失格だとすら思っている。
PCなら足りなければ増やせばよいし、スワップされてHDDも使うこともできる。
しかし、コンシューマ、携帯ゲーム機、携帯電話、アーケードなどは、ハードや制約ありきなものである。
その限られたリソースの中で、データの管理、アルゴリズムなどで使用しなければならない。
メモリが次世代機になり従来より増えたと言っても、コンテンツがリッチになりデータに必要なメモリが増えている。
だから今でも、また将来もメモリについては気にしながら最適な使い方をしなければならないからだ。


カテゴリ:

関連する記事

この記事に関連する記事は、2 件です。

トラックバック

このブログ記事に対するトラックバックURL
http://fakelife.info/mt/system/mt-tb.cgi/48

コメントする


画像の中に見える文字を入力してください。