暴言なのは分かってますが、
学生の頃ゲームプログラマーを目指した昔の僕に
そのまま言ってやりたいセリフ。
こんな記事を見つけたので。
プログラマ、SE、ゲームプログラマについて - Yahoo!知恵袋
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1438427284
自分は将来、プログラマ、いずれはSEになりたいと考えていましたが、
最近では3Dも学んで、ゲームも作ってみたいと思うようになりました。
長時間労働、低賃金といわれていますが、やってみたいんです。
そこで、本題なんですが、
上記の仕事で働くには、今、どんなことをすればいいんでしょうか。
プログラマとして、働けるのは短いとか、
ゲーム業界は就職倍率高いとかは分かっています。
自分がやりたいのは、BGMとかグラフィックではなくて、
企画、制作、プログラムという部門です。
多くの質問では、今はともかく旧帝大に入れるように、勉強せよと書いてあります。
学業に関しては、旧帝大狙える程度のものと自負しておりますので一層努力します。
軽音楽部で、勉強もせねば、体力も必要とトレーニング、
でも直接プログラミング能力としてはC言語と、Javaをかじった程度です。
でも好きなんです。
考えが甘いのは分かっています。
今、どんなことを勉強すればいいんでしょうか。
ゲームクリエイター、企画制作部門で働きたいことを前提として、
ご回答いただきたいです
(低賃金はプロジェクトそのものもひどいのしか回ってこない
負のスパイラルなので、いずれは高賃金目指しましょう。)
上に対してベストアンサーがこちら。
(読み飛ばし可)
ゲームクリエーター(プログラマー)の仕事を勘違いしているといけないので、このサイトに目を通しておいて下さい。
http://www.purplemoon.jp/game/
企画制作とゲームプログラマーを兼用しているのは、小規模な作品で、
人も少ない小さな会社ぐらいです。今時は珍しい存在だと思います。
普通は、完全に分業だと思ってください。
企画制作なら
・雑学レベルの高い人・人生経験の豊富な人・プレゼン力のある人
を目指してください。
プログラマならチームワーク力と技術力が必要です。
ここでは、主の技術面で必要な本を紹介します。
1.とりあえずC言語。ポインタや構造体は完璧に理解できないとだめです。
「新版 明解C言語入門編」。
http://www.bohyoh.com/Books/MeikaiC01/index.html
「Cの絵本」
http://www.seshop.com/detail.asp?pid=1806
↓
1.5.DXライブラリの学習。
ゲームプログラミングの楽しさを味わって下さい。
「DXライブラリ置き場 HOME」
http://homepage2.nifty.com/natupaji/DxLib/
「ゲームプログラミングの館」
http://dixq.net/g/
「ゲーム作りで学ぶ!実践的C言語プログラミング」
http://karetta.jp/book-cover/game-programming
↓
2.基本的なアルゴリズムとデータ構造の学習やデバッグ技法など。
DXライブラリと並行で進めて下さい。
「アルゴリズムの絵本」
http://www.seshop.com/detail.asp?pid=4179
「新版 C言語によるアルゴリズムとデータ構造」
http://www.bohyoh.com/Books/CAlgoData/index.html
「C言語による最新アルゴリズム事典」
http://www.amazon.co.jp/dp/4874084141
「C言語 デバッグ完全解説」
http://www.amazon.co.jp/dp/4774133620ここまでが2D編です。プロを目指す人は下に続きます。
3.C++言語。最低限クラスは理解を。
「明解C++」
http://www.bohyoh.com/Books/MeikaiCPP/index.html
「独習C++」
http://www.amazon.co.jp/gp/product/4798103187/
「ロベールのC++入門」
http://www.amazon.co.jp/dp/4839926050/
↓
4.WindowsAPI(OSの仕組み)の学習。
途中までで良いですがWindowsのメモリ、プロセス/スレッドは理解してください。
「APIで学ぶWindows徹底理解」
http://software.nikkeibp.co.jp/software/backno/04apimook2.html
「Windowsゲームプログラミング」
http://wisdom.sakura.ne.jp/system/winapi/index.html
↓
5.DirectXの学習。色々ありますので必要そうなのを。
「ゲームプログラミング入門」
http://www.amazon.co.jp/dp/499050061X
「ゲームプログラマになる前に覚えておきたい技術」
http://www.amazon.co.jp/dp/4798021180
「DirectX ゲームグラフィックス プログラミング Ver. 2.1」
http://www.amazon.co.jp/dp/4797341874
「DirectX9必携」
http://www.amazon.co.jp/dp/4990500601
「逆引きゲームプログラミングfor Windows DirectX」
http://www.amazon.co.jp/dp/479801169X
↓
6.ゲームアルゴリズム、数学、AIの学習。
必要なものを自分でチョイスしてください。
「ゲーム開発のための数学・物理学入門」
http://www.amazon.co.jp/dp/4797329076
「ゲームエンジンプログラミング」
http://www.amazon.co.jp/dp/4797331976
「実例で学ぶゲーム3D数学」
http://www.amazon.co.jp/dp/4873113776
「実例で学ぶゲームAIプログラミング」
http://www.amazon.co.jp/dp/4873113393/
「ゲームプログラミングのためのリアルタイム衝突判定 」
http://www.amazon.co.jp/dp/493900791X
「3D格闘ゲームプログラミング」
http://www.amazon.co.jp/dp/4797341807
「3DRPGプログラミング」
http://www.amazon.co.jp/dp/4797330465
「アクションゲームプログラミング」
http://www.amazon.co.jp/dp/4797335971
「アクションゲームアルゴリズムマニアックス」
http://www.amazon.co.jp/dp/4797338954
「パズルゲームアルゴリズムマニアックス」
http://www.amazon.co.jp/dp/4797347090
「シューティングゲーム プログラミング 」
http://www.amazon.co.jp/dp/4797337214/
「シューティングゲームアルゴリズムマニアックス」
http://www.amazon.co.jp/dp/4797327316
「弾幕 最強のシューティングゲームを作る!」
http://www.amazon.co.jp/dp/4797352299
↓
7.リアリティのための3Dシェーダの学習。必要に応じて。最初はいらないです。
「DirectX 9 シェーダプログラミングブック」
http://www.amazon.co.jp/dp/4839912475
「DirectXシェーダプログラミング 仕組みからわかるゲームエフェクトテクニック 」
http://www.amazon.co.jp/dp/4797344962
↓オリジナルゲームの開発。
会社によっては提出が必須です。
それとこちらのコラムもチェックしておくこと。
「3Dゲームファンのためのグラフィックス講座」
http://game.watch.impress.co.jp/docs/series/3dcg/
「3Dグラフィックス・マニアックス」
http://journal.mycom.co.jp/column/graphics/index.html
最先端に追いつくための本と道のりを揃えたということで
この中から必要なものをチョイスしていくのは悪く無いと思います。
思うんですが、実際は1本のゲーム作るのにこれら技術の10分の1も使いません。
ゲーム作りの大半は膨大なキャラクターアニメーションとテキストとボイスと
いろんなゲームパラメータとの複雑なバランスを面白く演出調整する
漫画やアニメを作るのに近いずっと地味な作業です。*1
最先端現場にすべてを統括する「ゲーム」プログラマーはいない
いや、もちろんPS3でファイナルファンタジーやら、
グランド・セフト・オートやら超大作つくるのなら上に上げた
何十倍もの技術が必要となるんでしょうし
そういう道を目指してるかもしれませんが、
そういうところにはもうゲームプログラマーはいないんです。
大雑把に言うと、
3Dエンジンプログラマ、
シェーダープログラマ、
ネットワークプログラマ、
ツールプラグインプログラマ、
サウンドプログラマ、
メニュー、セーブ、システム周りプログラマ、
コックピット、HUD表示プログラマ、
エフェクトプログラマ、
とかなんとか、それぞれ複数の一流専門家が事にあたってます。
もちろん、これら全てのプログラマをひっくるめて
「ゲームプログラマ」と呼ぶことは可能ですが、
僕が学生の頃憧れてた「ゲームプログラマ」は
極小のメモリと聞いたこともないマイナーCPUという
超貧弱な表示機能で、普通にやっては絶対不可能な映像や
新しい世界を実現させ、特化型ではなく
「なんでも自分でできる」万能の魔法使いだったわけです。
企画ディレクター兼、ゲームプログラマーとして、最先端でオレのゲームを作りたかった
自分がやりたいのは、BGMとかグラフィックではなくて、
企画、制作、プログラムという部門です。
僕は学生の頃、プログラマーが全ての肝で
全体の統括者で、企画制作をかねそなえ
新しい世界を実現させるのはプログラマー次第だと思ってました。
でも、コンシューマーゲームでは
それこそ企画、プロデューサー、制作ディレクターがゲームシステムの肝を決めて
他のデザイナーやサウンドや広告から声優、ゲームに関わるもろもろを
全てコントロールしないと良いゲームが出来ないので
とてもプログラムを兼業でやってる暇はありません。
必然的に、ハードウェアが高度化しまくった現在のプログラマーは
それぞれが優秀な特化専門になるので、
「少人数のゲームプログラマが自由に世界を構築していく」
という物ではなくなりました。
かと言って、
どんなにシェーダープログラマが毛をふさふささせても、
どんなに凄い3Dエンジンで画面を人で覆い尽くしても、
ゲームの本質とは関係ありません。*2
その分野については自分のゲームが作りたい人よりも
3Dそのものが大好きな人とか、
プログラムそのものが大好きな人のほうがずっと向いてます。
特化型は特化型なりのすごい工夫や達成感がたくさんあるものです。
最先端でないDSならばなんでも自分でやるゲームプログラマたりえるか?
一応いまでも、コンシューマー表現力として最弱なDSなどでは
涙ぐましい努力でハードの限界を突破しようという
まさに昔によく聞いたような話はありますが、
西川善司の3Dゲームファンのための「ラブプラス」グラフィックス講座 - GAME Watch
http://game.watch.impress.co.jp/docs/series/20100430_365048.html
田之倉氏「実は5,000ポリゴンのモデルを9分割したとしても、DSではこれを1度のレンダリングで全画面に描画できないんです。なので、1フレームの描画を4回に分けて描画する工夫を入れました。『ラブプラス』ではモーションを適用するボーン数も多いため、座標変換の演算コストも高かったというのも理由の1つに挙げられます」
実際の描画エンジンでは、以下のようなプロセスを経て描画を完遂させている。
・1パス目:次パス以降での描画に必要なモーションなどの計算
・2パス目:次パス以降での描画に必要なモーションなどの計算 & 200ポリゴン程の描画
・3&4パス目:残りのモーション計算 & 性能をフルに使用した(2,000ポリゴン程)描画
鈴木氏「複数フレーム時間に、またがって1フレームをマルチパスレンダリングしていく実験プログラムを開発し、これのテストを重ねて、今の描画エンジンの開発の見通しを立てました。丁度、このテクニックが他社でも使われはじめたので、我々も実装を試みたということでもあります。」
かつて初代ファミコン時代、表示数制限の厳しかったスプライトを、時分割表示をすることで倍化して表示させるテクニックが生み出されて、ファミコンの映像表現力が一気に向上したことがあったが、まさに、あれの21世紀版3D編といった風情である。
もう今年か来年にハードはWii並の表現力をもった「3DS」へ世代交代となるので、
これからの学生が来年以降採用されて表現の弱いDS向けにつくることはないでしょう。
ハードウェアが強力なときに、世界を表現する肝となるのは
ゲームプログラマではなくデザイナーのほうです。*3
さらにいうと3DSで採用されたグラフィックチップPICA200は*4
枯れた技術の水平思考にふさわしいのか
これまで頻度の高かった類のソフトウェアシェーダーを
ハード機能として実装しています。
必至に勉強したシェーダープログラムが
全く役に立たないとまではいわないけど
プロジェクトとしてはあまり必要とされない可能性が高い。*5
西川善司の3Dゲームファンのための「PICA200」講座(前編) - GAME Watch
http://game.watch.impress.co.jp/docs/series/3dcg/20100715_380961.htmlDMPの「プログラマブルシェーダー」のハードウェア化という新発想
一般的な3Dアプリケーションを制作する際、必要になってくる3Dグラフィックス表現には定番といえるものがあり、それらまでを全てプログラマブルシェーダーで構築するのは無駄なのではないのか?
プログラマブルシェーダーが業界標準となっていく一方で、こうしたアンチテーゼも、組み込み機器や携帯機器の世界では起こったのだ。プログラマブルシェーダーの活用が進む過程で、よく使われる定番のプログラマブルシェーダー活用の処理系を、逆に専用ハードウェアの形で実装してしまえば、ハイパフォーマンスが期待でき、なおかつメモリやレジスタなどの無駄なリソース活用も減らせられるため、性能対消費電力の効率の面で優れるのではないか。DMPはこの考えを軸に独自GPUの開発に乗り出した。
現役セガプログラマーの回答
実は元記事に紹介されてた本を書いたセガの平山尚さんもそこで答えてるのですが
僕としてはむしろそちらをベストアンサーに押します。
たくさんのことを覚えるよりも、
やり方を自分で考える経験をたくさん積む方が大切です。
DirectXやOpenGLなどは所詮誰かが作ったプログラムにすぎません。
本質はそれによってどんな計算をどのような方法で行うかにあります。
Windowsだって誰かが作ったプログラムにすぎず、
Windows上で動くプログラムを作るためには
「やむを得ず」覚えないといけないことがいろいろありますが、
やはりそれは本質ではありません。
VisualStudioの使い方だって同じです。
極端に言えばC言語の文法すらそうです。
本質は自分が作りたいゲームをどうコンピュータで動く形で表現するか、にあります。
だから、私はたくさんの本を読んで、
たくさんのことを勉強することにあまり意味を感じていませんし、
そうした人ができる人だという印象も持っていません(物知りは所詮物知りです)。
「これが必要だからこれをまず勉強しないと」という考え方は、
挫折を招きやすく、もともとの目標を忘れさせます。人間は必要性が納得できないと本当の意味で勉強することはできません。
むしろ「どこまで勉強せずにゲームを作れるか」
と逆に考えた方がいいと思います。
DirectXを勉強しないと3Dゲームは作れない、と言う人を私は疑います。
WiiやPS3はDirectXでは動いていません。あれは手段のひとつに過ぎず、
そもそもそんなものがなくても3Dのゲームは作れるのです。
その過程で「ああ、数学ってこういうふうに使うのか」とか、
「アルゴリズムってだから大切なんだ」ということが身に染みて理解できるはずです。
数学やアルゴリズムやDirectXの面白くない本を苦労して読むのはその後でも間に合いますし、その時ならきっと楽しく読めると思います。
また、本の良し悪しもよくわかるようになって、
ハズレな本に高い金を払わずに済むでしょう。
ほんと、僕は学生時代にこの言葉に出会いたかった。
もし最小限のプログラム学習があるとしたら
ゲームプログラムって極端に言うとグラフィック(サウンド)データさえあれば
「if」
「for」
「switch」
「random」
「配列」
「ファイル読み込み」
「ファイル書き出し」
「画面出力」
「デバイス(コントローラー)入力」
だけでも面白いものが作れたりします。*6
これに3Dライブラリを足しても、
「3Dアニメーションモデルの読み込み」
「モデルの3Dアニメーションスタート」
「モデルの3Dアニメーションストップ」
の関数を覚えるのが最低限で、
三角関数やクォータニンなんて難しいことは後回しで充分です。
そんなこと知らなくても結構複雑なゲームは作れます。
これだけ覚えるなら上記教科書の何万分の1でしょう。
ハードや言語を学ぶというのは、
これだけでは複雑で冗長でバグが増えやすいプログラムを
いかに分かりやすく、拡張性高く、高速に、そして保守できるかということを
効率的に学ぶと思ってもいいかもしれません。
ですが、元記事の教科書すべてを学ばなくても
作り始めようとするならこれだけですぐスタートでき、
必要な状況に出会ったときにまた学び直せるのです。
元3Dプログラマーの話
あと、コンシューマー業界としてはC++でいいのですが、
とにかくまずゲームを作るなら
メモリ管理やポインタなどがない
javascriptなんかでもいいと思います。
もう一人、この元記事にとても的確なツッコミをいれてる
元3Dプログラマーid:shi3zさんの意見に同意で
ゲームプログラマになる方法 - Keep Crazy;shi3zの日記
http://d.hatena.ne.jp/shi3z/20100801/1280682397
本当にこんなに勉強する必要があるんだろうか?
ともあれ、僕はいまの高校生がこんなに大量の
「ゲームプログラミング歴史大全」みたいなのをマスターしないと
ゲームプログラマを目指せないとしたら、業界としてヤバいと思う。
(略)
要するにこのキャリアパスのなかではただの一回も
「ゲームを面白くする方法」についてトレーニングしてない。
それはゲームを作ってるといえるのか?
あと、彼(?)が就職するのって、大学いくとしたら早くても4年後で、
4年後にようやっとDirectXのシェーダープログラミングをマスターして
本当に合ってるのか?と心配になる。
(略)ゲームプログラマになりたかったら、まずゲームを作らないとだめなんじゃないかなあ。
C言語だけ勉強したってできるようにならないし、
そもそもゲーム作りの腕を磨くんだったら、
そんなニッチで誰も遊べないような環境、
要するに特殊な 3Dアクセラレータなんかが必要な環境でゲームつくると、
友達に「おれがつくったゲーム遊んでみろゴルア」とか言えない。
もっと友達とかとみんなで遊んで自慢しやすい環境、
たとえばPHPとかiPhoneとかなんでもいいけど、
言語なんか簡単なやつのほうがいいに決まってる。
そういうので友達に自慢して、みんなで夢中になって遊んだり、
遊ばせたりしながら、スパイラル的にゲームを改良して面白くしていく、
というプロセスの体験こそが重要で、
あとはまあお定まりの最先端の技術のキャッチアップというのも当然必要だろうけど、
そんなものは五年経ってみないとわからないものでね。
そう、特にこの部分。
モチベーションを高め、作るのを楽しむためには
なるべくすぐに友達や多くの人に見せれる環境が重要だと僕も思います。
いまどき Cで作った exeファイルをダウンロードしてインストールするのも
そのわずか数クリックが一般に人にはめんどくさい大きな壁だったりします。
発表の場としてWebゲームの道
Webですぐ遊ぶとしたらFLASHなんかが最適だと思いますが、
FLASHは歴史古くて、すでに優秀な無料ゲームが数多く
ちょっとしたプログラムでは全然注目されなかったりします。
その点今話題のHTML5+javascriptなどは注目度は高くても
まだ仕事で使えるほど仕様が固まってなくて
プロが本格的に参入してない分、
ちょっと気の利いたプログラムでも注目を浴びやすいです。
FLASHはゲームに使えるライブラリが充実してて
その分使い勝手は現在のHTML5+JSより数段上なので*7
とがったアイディアがあればFLASHもいいかもしれません。
FLASHのActionscriptとjavascriptは
同じECMAscriptを基準としてるのでどっち学んでも
文法がほぼ一緒でもう一方に応用しやすいですし、
もちろんどちらにも言語的にやっかいなメモリ管理やポインタはありません。
今は面白法人カヤックさんが、
どちらもWebブラウザだけですぐコードが実行できる
すてきな場を無料で公開提供してて
他人のプログラムを学ぶとしても最適な場があります。
ネットすらなかった僕の時代からすると羨ましい限りで。
jsdo.it - Share JavaScript, HTML5 and CSS
http://jsdo.it/
wonderfl build flash online
http://wonderfl.net/
まあ、こういう方法もあるよという
無数にあるだろう中の1つの方法論です。
就職するにしても、Cでゲームを中途半端にしか完成できないより
Webでたくさんの失敗をして、たくさんのフィードバックをもらうほうが
面白いゲーム作りの経験値が圧倒的に違うので就職にも有利でしょう。
下手でもステージに立ち続けてる人のほうが成長するのも速いです。*8
それでもゲームプログラマー、、企画兼プログラマーで自分のゲームが作りたい
コンシューマーにゲームプログラマという職業はもうない。
みたいな書き方をしましたが、
5名以下の小規模なチームであれば、
プログラマーが全体のディレクションも統括する
自分の作りたいゲームを作る場所もあるかと思います。
たぶん、iPhone、iPad、Android、XBOXアーケード、PSstore、
Wiiware、DSiware、携帯アプリ、mixiアプリ、Facebookその他ソーシャル、同人コミケなど
上から下、企業から個人まで市場はいろいろあります。
ただ、開発メーカーは新人の企画をすんなり通すわけないので
個人でやりながらグラフィック仲間をあつめるなり、
プログラマーとして専門能力を高めつつ、
ディレクターとしてのキャリアアップ?を狙ったり、
自分が本当にやりたいこと、本当に表現したいことを見つけたら
その中で自然と道が決まってくるでしょう。
今の学生で昔の僕みたいに
実際のゲーム業界とずれた認識もってる人がどれくらいいるかわかりませんが、
昔の僕に言い聞かせるつもりで書いてみました。
こういった考え方も参考の一つとなれば幸いです。
最後に僕から見たベストアンサーである、
引用二人の著書を改めて貼っときます。
平山さんの本は、僕もざっと目を通してみましたが
プログラマーがやるべきことと、
根本的にデザインや企画からなおすことと、
プログラム以外にゲーム作り全体の哲学を説いててその部分読んでも面白い名著ですよ。
あとは本の宣伝になってしまいますが、許してください。
私の本はそういった思いを本にしたものです。
DirectXもWindowsプログラミングも一切なしで、
可能な限り最短距離でゲームを作るための
「計算の本体」を学べるようにしたつもりです。
中身はDirectXで動いているので、
付録のソースコードを見れば
DirectXの実際の使い方も勉強できるかと思います。
以上です。がんばってください。
ゲームプログラマになる前に覚えておきたい技術 平山 尚(株式会社セガ)
おすすめ平均
良書です。
プログラミングはできるがゲームは作れないあなた向け
ゲームを作りたい方へ
基礎を習得して凝り固まった頭が少しほぐれました
初級プログラマが一人でゲームをつくれるようになるための本。
Amazonで詳しく見る by G-Tools
ゲームデザイン誇大妄想狂 (I・O BOOKS) | |
清水 亮 おすすめ平均 清水節全開 Amazonで詳しく見る by G-Tools |
ついでに僕からすすめる「必要になったとき」かゆいところに手が届くFLASH,JSの本はこちら。
もし2冊目に買うならこれかな?
JavaScript 第5版 David Flanagan 村上 列
おすすめ平均
言語としてのJavaScriptに一番踏み込んだ本
JavaScriptのバイブル本
JavaScripterに捧げる本
JavaScriptを理解したいのならだまされたと思って読んでください
買って良かった
Amazonで詳しく見る by G-Tools
JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス Douglas Crockford 水野 貴明
おすすめ平均
遠回りを避けたい人へ
手っ取り早く習得
痒いとこだけ掻いてくれる
JavaScriptを勉強しなおすのにとってもよいです。
JavaScript コアに関する最高の本
Amazonで詳しく見る by G-Tools
FLASHでゲーム作るためにあるような本。
世界的なFLASH四天王のひとりとか。の続編
ActionScript 3.0 アニメーション Keith Peters 永井 勝則
おすすめ平均
アニメーションと数学と物理
物理計算のいろはがわかった気がする
和書には無い魅力
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆........
数学嫌いのデザイナーにオススメ
Amazonで詳しく見る by G-Tools
詳解 ActionScript 3.0アニメーション ―衝突判定・AI・3DからピクセルシェーダまでFlash上級テクニック
Keith Peters 相川 愛三
オライリージャパン 2010-01-25
売り上げランキング : 210425
Amazonで詳しく見る by G-Tools
以上でした。
*1:さらに人と予算と納期とグラフィッククオリティをなんとか落しどころつけるためにとんでもない苦労がw ここでデータバランスを面白く演出調整する時間なくなってクソゲー化するの避けたいねえ
*2:敵の表示を増やすことに意味があったのはPS2時代に登場した「真・三国無双」までですかね。
*3:作るものによりますか?
*4:読みはピカチューだよな?w
*5:シェーダーの腕を活かしたいならPS3や、360を続けていく開発会社選べばいいのですが、ほんとにPS3開発を続けるのか、次の次世代機がまたどうなるのか当の会社側自身も分からないですしね。
*6:どっちかというとプログラムより製品クオリティに耐えうるデータを膨大に作る方が地獄w
*8:最近はブラウザゲーもやっと金が稼げる市場として価値が上がってきてますしね