- 締切済み
独学でプログラミングの知識を得る最良の方法
はじめまして。私は今年文系で大学進学する者です。将来はゲームクリエイターになりたいので、独学でコンピューターの知識を得ようと考えております。そこで、どのような勉強をするのが最良だといえるのでしょうか?ちなみに、パソコンに関しては知識は皆無です。高校の時は一応数III、Cまでは勉強しましたが物理はやっていません。あと、こんな本を使って勉強したほうがいいというのがあればそれも教えてください。長くなってしまいましたが、誰か力を貸してください。よろしくお願いします。
- みんなの回答 (14)
- 専門家の回答
みんなの回答
- gragra24
- ベストアンサー率31% (18/57)
元コンシューマ系のゲームプログラマです。 私も文系大学(経営学部)出です。 1.まずCとC++言語をマスターします。 (アンドロイドアプリのゲームプログラマを目指してるならJAVA) 適当に有名な入門書でいいですが、文法を通り一遍暗記じゃなく、 ポインタだとダブルポインタなどトリッキーところまで、なぜそうなるか理解できていて 使いこなせるように。 標準関数やSTLまで、こういうことをする時はあれが使えると引き出せるように。 あと初心者本だけじゃなく、バイブルである「プログラミング言語C」も読んでおいたほうがいいです。 なぜC言語をこのように設計したのかという、プログラミング言語の根本についての知識も広がります。 ポインタ関連なら「C言語ポインタ完全制覇」という本が良かったです。 2.次にWindowsSDKを勉強してWindowsアプリケーションを作れるようになります。 これはウィンドウを作成するまでのテンプレだけでいいですが、 どこをいじればウィンドウサイズが変わるとか、タイトル名が変わるとかだけざっと理解するのと、 ウィンドウズアプリケーションのメッセージハンドリングを理解します。 これも適当な本でいいですが、ネット上の猫でもわかる~など有名サイトでもよいです。 適当なところでサンプルを手に入れていろいろいじってみてください。 3.それからDirectXを勉強します。 2D画像を表示して拡大縮小・回転半・透明化などが行えるように。 音を出せるように。 キー入力できるように。 まずはシェーダを使わず、Xファイルの3Dオブジェクトが表示できるように。 DirectXの適当な初心者本に全部書いてます。本を買わなくてもネット上でも サンプルが多くあって学べると思います。 4.ゲーム作りを勉強します(ゲーム固有の作り方や作るもの)。 具体的にはメインループとフレームレート作成、タスクシステム、当たり判定、AI、ファイルのパック(ファイル管理)、メモリ管理、ツール、スクリプト、2Dアニメーション、スキンメッシュアニメーション、3D関連の数学、物理運動、oggなどの音楽圧縮、ムービー再生などを理解して作れるようになります。 どれもそれぞれの専門書があり一つを極めるだけとんでもなく大変なので、とりあえずゲームがつくれる最小限度で、一番簡単な部分をさわりだけ理解するでいいです。 それぞれの専門書を買うのもいいですが、たぶん初心者には大半理解できないです。 まずはネット上の情報で勉強してから専門書に移るでもいいです。 5.さらに上を目指すならシェーダ、インバースキネマティクスなどに手を出します。 入社試験でここまでの作品を出さなくても私の時代では受かりましたが、今は必要かもしれません。 CPUではなくグラフィックボードのGPU向けプログラムであるシェーダを作るため、 HLSL言語をマスターします。 (C言語とほとんど同じで、変数や関数が違うようなものです、言語自体覚えるのはたいしたことないです)ポストエフェクト系のシェーダや、シャドウマッピング、トゥーンシェーダなど基本的なものを理解して使えるようになります。 決まった動きしかしないスキンメッシュアニメーションじゃなく、外部の要因で3Dキャラが変化するように指先など枝葉末節から体の根幹に動きが伝わるインバースキネマティクスを扱えるなります。 シェーダ関連はMarverickProjectさんのサイトが秀逸です http://maverickproj.web.fc2.com/pg00.html 本ではシェーダプログラミングブック、ゲームエフェクトマニアックスなどが初心者向けでは良かったです。 インバースキネマティクスについては良書もネットよいところもあまり知らないです。 私の時代では、上の4番をさらっと流すまでを2年制のゲーム専門学校では1年目に詰め込み、 2年目ではひたすら作品作成だと聞いたことがあります。 私は5番までを独学で勉強して入社しました、独学なのでいろいろ怪しかったり間違えてて 入社してからプロのソースをみて大分勉強しました。 ゲームプログラマはプロデューサーやディレクター、デザイナー、デバッガーなどの 指示や要望に従って、頻繁にプログラムを改変します。それこそ息を吸うように プログラムを書き、そのうえで混がらないように作り上げる能力や言語への熟練がいります。 デグレーションさせないために、設計を重視し作ったあとは出来るだけソースをいじることを さけるビジネス向けのプログラミングとは趣が異なります。 プログラムなんてまったく知らないひとの指示に従わないといけないので、 作りやすさとか無視した根幹から変えなければいけない大幅な改変指示も発生します。 そのため、入社試験まで勉強を続けるというのではなく、専門学校のように早めに 一定の本での勉強をして切り上げ、後はひたすらたくさんのゲームを作って熟練度を上げる ということをしたほうがよいです。
- tavatar
- ベストアンサー率37% (3/8)
1.C言語入門等の本を買う ➡この時、立ち読みか何かで最初のほうのページの、開発環境の構築手順の部分を確認しましょう。 そこで何となくでも作れそうであれば、やってみましょう。さっぱり何を言っているのか分からなければ別の本にしましょう。 2.入門本の環境構築の部分を確認しながら、環境を作ってみる。 3.入門本に忠実に沿って操作していく。 (自転車に駒をつけて漕いでいるような段階です。あまり内容が分からなくても、本に従えばOKな段階です。) 3.本が最後まで出来たら、画面に"こんにちは"でもなんでもいいので、表示するだけのプログラムを組んでみる。 ➡一番簡単なプログラムという意味です。ウィンドウを出すだけでもいいでしょう。 まずは何も見ずに組もうとして、分からないところは本を見る、という方法にしてください。 これが出来た時点で、ごく簡単なプログラムは組めると言って差し支えないでしょう。 [ステップアップ] 1.プログラムを起動する時間帯によって、"こんばんは"に変えてみる。 2.最初から"こんにちは"ではなく、ボタンを押した時に初めて"こんにちは"、と表示されるプログラムに変えてみる。 3.もう一度ボタンを押すと"こんにちは"が消えるように変えてみる。 4."こんにちは"の代わりに何かの画像を表示してみる。 5.画像をクリック位置に表示するようにしてみる。 ステップアップになると、本に書いていないこともあるかもしれないので、 適宜ウェブ検索や、ここで質問する等してみましょう。 好奇心を持って、色々こうしてみたらどうなるんだろう?といじくってみるのが近道です。 それと最初に選ぶ本はとにかく分かりやすいものであることが重要です。 薄っぺらい、絵が多いものがおすすめです。 15才から出来る、といったものや、マンガなんかもあるので、探してみてください。
- umadesu
- ベストアンサー率33% (3/9)
VCはプログラミングの基礎って意味では必要ないんですけど、デバッガとかSPY++とか、Windowsアプリ開発に便利なツールがいっぱい。 学生向けの割引キャンペーンやってたら買ってもいいと思います。 独習Cとか基本的な書物の勉強をするのであれば、Linux入れてgccでもいいとおもいますよ。 むしろその方が望ましいかも。
- jiji_april
- ベストアンサー率0% (0/0)
私が手を付けた順番は HTML, JavaScript -> RPGツクールXP -> c, c++, java, アセンブリ, ... といった感じでしょうか。基本的に独学で、誰かに聞いたという覚えはありません。基本は調べることと、サンプルをいじくること。 プログラミング言語はたくさんある。先人に言わせれば甘いかもしれないが、HTML, c, javaはやっといて損しないと思う。 最初の課題は環境を整えること。参考までにc, c++のお勧めの開発環境としてはWindowsでコマンドプロンプトとBorland C++Compilerの組み合わせ。VCはお勧めできない。
- oshi810
- ベストアンサー率33% (1/3)
念のため補足します。 下で、人に聞く、と書きましたが、 自分でサイトや本やヘルプを調べまくって、それでも分からない、という 場合の最終手段にして下さい(人に聞くという行為) 例えば、 「変数って何ですか?」 「構造体って何ですか?」 「クラスって何ですか?」 とか、聞かれたら、仕事している人ならなおさら、削られると思うので。 (Googleで検索すれば、沢山出てきます) 入門書を買うにしても、サイトでC++について、調べて、 Amazonの書籍のレビューを見まくって、 その上で、ご自身の責任で決断してください。 タイトルが、 「独学でプログラミングの知識を得る最良の方法」 ということなので、 独学プログラミングに関して大切なのは、 「Google等で自分で調べる」 「自分で決断する」 ということかと思います。 勉強の方向性をはずさないためにも、 現役の師匠がいたほうがいいとは思いますが。。。 ただ、お金を払って学校に行く、などの、 金銭的負担を取らずに、独学という方法を選択 するのなら、自分で調べる、というハンデは 仕方ないかと思います。
- oshi810
- ベストアンサー率33% (1/3)
しばらく間が開いていますが、 プログラム、とのことなので、 とりあえず、プログラム系の内容に特化して書きます。 私自身、一時期元アーケード系のメーカーに勤めていた人(仮にXさんとします)と、 一緒にコーディングしていた(というか教えてもらった) ことがあります。 ちなみに、私はゲーム系の勤務経験はありません。 Xさん自身は、フルアセンブラでタスクシステムをコーディングしていた時代の古強者ですので、 今の時代の実情には即していない情報が正直多いですが、 ・とりあえず、C++の理解は基本。 Xさん自身は、 アセンブラ C C++ の順で覚えたそうです。 ただ、アセンブラ、Cをすっ飛ばして、 C++から入るのも、今の時代の人の入り方の一つかと思います。 (Windowsゲームの場合、C#なども使っているところがあるかもしれませんが) 私個人で、C++の参考にしたのは、 黄色いC++入門本 (入門は、いい本が直近であるかも知れないので、 自分に合いそうな本でOKかと思います) C++FAQ VisualC++大全500の極意 その他・・・ です。 興味に応じて、ハーブサッターの本を購入しても良いかと思います。 (氏のサイトで、有用な記事は結構よめるのかも?) ・タスクシステムの理解 「今頃タスクかよ」となる、あのタスクシステムです。 Xさんは、アクションとかシューティングで使っていたようです。 もう20年前以上前の呼び名だったりするので、 現状もう、使われていないのかも知れません。 ゲーム会社の現在の内情は知りませんが、 (というか、ゲーム系は勤めたことありませんが) C++でのタスクのサンプルコードなんかも、 ネットで探せば見つかると思うので、 これくらいは、コードを読んで理解できれば、 他のシステムでも、(超苦労はすると思いますが) 将来コードを理解するときの補助にはなるかと。 ・確実なのは、ネットでメールで、プロに聞くこと。 現役でネットでサイトを開設しているメーカー勤務の人とか、 ぱっとリストが思い浮かぶと思います。 そういった現役に、メールで簡単な指導を請うのも確実だと 思います。(勉強方法をはずすことがないので) ただ、最低限、C++の理解はしていたほうが良いと思います。 (でないと、基本的なコミュニケーションが出来ない。) あと、仕事をされている方への負担をかけないように気を使うことを忘れずに。 多分、C++なら、気合を入れれば、ある程度、基本の基本はすぐ、 理解できるのではと。 ちなみに、 その人が現役の時は、viエディターで仕事していたそうです。 なので、GCC等の理解が必要なのかも知れませんが、 C++自体なら、WindowsOSで、VisualStudioのExpressバージョンで 無料で勉強できると思います。コンソールアプリを作るのでも、 いい練習になるかと思います。 MFCや.netフレームワークを使わない、Pure C++?を使う癖を つけた方がいいのかも。 でもWindowsのネットゲームならば、MicrosoftのAPIに習熟するのも 意味はあると思います。その辺のご判断はお任せします。 (なので、作るのがアーケードなのか、PCなのか、DSやPSなのか、 方向性を絞った上で、プロにメールで聞くことをお勧めします。 >ある程度、コードが読めるようになってから) とりあえず、半年ほど、C++でWindowsアプリでも作ってみて、 それをネットで公開したりして、その後、どうするか 考えてみても良いのではと思います。 プログラマを目指さない場合でも、C++の経験があると、 エンジニアと酒飲んでるときに、「あるある」といった感じで、 話が合うので、割とすぐ、仲良くなれます。 (苦労のレベルが違ったり、その辺の違和感があるかも知れませんが) ・数学 必要に迫られれば覚えます。 「あくまで例え」ですが、3Dの座標変換ですが、ネットや本で調べながら、実装して、 こちらの予想通りの動作をある程度できるようになって初めて、 自らの血肉になる部分があるかと思います。 私自身も、実装して、画面上でポリゴンデータがぐるぐる動くのを見ながら、 そういうことなのね、と理解できたことがあります。 なので、数学や物理は、必要になってから、その都度、調べながら 実装していくのが、時間の無駄がなく、効率が良いのではと。 高校で数学されていたなら、たとえば、超基本的な4x4行列の計算なんかも、 簡単に理解できると思います。 >軸足はクリエーター コードの理解があると、エンジニアと(相手にもよりますが)多少は仲良くなれますよ。 彼らの苦労のしているところも話していれば、多少理解できるようになると思います。 別業界で、コーディングの経験がない人を、傍から観察したことがありますが、 何も分かっていなく、ひたすら、エンジニアを下に見て、こき使おう、とする 被害妄想的なところのある人でした。 あくまで一例ですが。 バグの指摘の仕方ひとつ取ってみても、 それでは、エンジニアの士気をそぐ、と思っていても、 その人は上司なので、黙ってみていました。 こうならないためにも、コードの理解は、あなたを将来助けると思います。 仮にマネージャー的立場になるとしても、 コーディングに関する知識は(人によって捕らえ方は違うと思いますが) なんらかの価値を持ちますよ。 あと、バグの勘所も鍛えられます。コードを読まず、アプリケーションの 挙動から、あるソフトのバグの原因を、メモリ関係でxxでは?とか、 ビンゴで当てたり出来て面白いです。 余計な業務を抱えさせられて、忙殺されるリスクもありますが、 その辺は、抱え込まない判断も出来るので、その人の判断次第ですが。 エンジニアの人からは、少しは感謝されやすくなるのではないでしょうか。 (ピントはずれの指摘だと、逆に迷惑かけますが) 下でも書かれていますが、 実際のゲームの現場では、聞く限り、 チーム何名で予算X万で納期は何時、と決まっているので、 納期を決めた訓練も大切でしょうね。 (これは、ゲーム系以外でも、似たような感じですが) 今は、ネットで人脈を作りやすい時代なので、 SNSやサイト経由でプロの人と仲良くなるのが、一番間違いがないと思います。 C++の理解は、ゲーム系に限らず、他の業界でも、価値を持つ「場合もあります。」 なので、方向性を転換する場合にも、無駄にはならないと思います。
お礼
質問に答えていただき、ありがとうございます。 最近とりあえずCから勉強を始めているのですが、なかなか悪戦苦闘 しています^^; とりあえず勉強をして、今後の道を広げていきたいと思います。 参考になりました。ありがとうございました。
- kumakkoro
- ベストアンサー率22% (2/9)
「ゲームクリエーター」の中にもいろいろな職種があるそうです。 任天堂マガジンとやらに現役クリエイターのインタビュー記事がありました。 http://www.nintendo.co.jp/nom/0004/01/index.html 自分の目指す方向性をつけてから勉強したほうが効果的かもしれません。
お礼
質問に答えていただき、ありがとうございます。 一つの事にとらわれてはいけないようですね・・・。 かなり参考になりました!! ありがとうございました。
> 数学が苦手で やはり、数学の知識というより、数学的考え方はどうしても必要です。 例えば、ある事象の中から特定の法則を見いだす等の能力は絶対必要です。 丸暗記で乗り切れる世界では無いのです。
お礼
質問に答えていただき、ありがとうございます。 なるほど。法則を見つけ出すのはなかなか苦手です^^; その能力から磨いていかないといけないですね・・・。 ありがとうございました。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★実際にゲームを作成する事です。 ・独学ということは良い面と悪い面があります。 『良い面』…好きな技術から学べたり、自分のライフスタイルに合わせての学習が出来ることです。 『悪い面』…情報不足だったり、参考にした本、サイトに誤りがあった場合に気付かずに間違いを 身につけてしまう点などです。 ・『ゲーム・クリエータ』、『ゲーム・プログラマ』どちらにせよ実践レベルの経験が必要です。 『本』、『サイト』、『他の人のソース』などを参考にして、実際に動くミニ・ゲームをたくさん 作って下さい。ゲームのジャンルも『パズル』、『トランプ』、『RPG』、『シューティング』など いろいろ作ることで、それぞれの技術(特徴)が分かってきます。最初から理想と現実がイコールには なりませんが、作っていくうちに今の自分の『スキル』が自分で把握できます。把握できたらば 『何』を学べば良いかが分かってきます。よって、たくさんのミニ・ゲームを作って経験値を上げて 下さい。→1ヶ月に1つのミニ・ゲームを作る目標などを計画して、4年間で 12×4=48個作れれば それなりの『スキル』が身につきます。あるは4ヶ月に1つ作成するという期限を付けます。 ・会社と同じように期限を自分の中で作るのです。→仕様書なども簡単でよいので作るとその後の作業が 効率よく出来ます。仕様を決めるのが最初の課題ですね。 ・『数学』、『物理』よりも『アルゴリズム(考え方)』が重要です。 ちなみに高等学校の『数学I』~『数学III』や『数学A』~『数学C』は簡単な教科書です。 昔は『代数幾何』や『基礎解析』が数学の教科書だったようです。→こちらの方が数学的にはちょっと だけ難しい教科書になります。大学へ行くと『逆三角関数』などが一般教養になります。 ・過去に RPG を作っている質問者さんがいました。ちょっとだけその質問を紹介します。 参考質問: ・http://oshiete1.goo.ne.jp/qa2643858.html→『RPGで誰が攻撃を受けるのかを決めたい』 ・http://oshiete1.goo.ne.jp/qa2650823.html→『ドラクエ4の戦闘のAIが知りたい』 本: ・http://www.amazon.co.jp/dp/4797325453/→『Windowsゲームプログラミング』 ・http://www.amazon.co.jp/dp/4797333332/→『猫でもわかるゲームプログラミング』 ・http://www.amazon.co.jp/dp/4777510670/→『3Dゲームプログラマーのための数学』 ・http://www.amazon.co.jp/dp/479800958X/→『フルスクラッチによるグラフィックスプログラミング入門』 サイト: ・http://wisdom.sakura.ne.jp/system/winapi/→『Win32 API入門』 ・http://www.kumei.ne.jp/c_lang/→『猫でもわかるプログラミング』 最後に: ・将来は『ゲームクリエータ』になりたいのになぜ?文系の大学に進学したのかが私には不思議です。 『ゲームクリエータ』になる為の専門学校(2年)が日本にはあります。そこへ進学すべきでしたね。 ・大学の勉強だけでも大変ですので、プログラミングの時間を計画的に組んだ方が良さそうです。 ・以上。おわり。→4月からの『文系大学』と『プログラミング』頑張って下さい。睡眠は大事です。もう寝ます。
- 参考URL:
- http://wisdom.sakura.ne.jp/
お礼
質問に答えていただき、ありがとうございます。 大変参考になりました!!本当にありがとうございます!! この方法を実践してみて、がんばりたいとおもいます。 私が文系になってしまったのは、単純に言うと数学が苦手で理系のD大学に落ちてしまったからです^^; それで、英語が得意だったので、英語だけでいける大学に進学することになりました。 浪人だけは絶対したくなかったのでそれを避けるためです。 専門学校には絶対に行くな!!・・・と高校の恩師に言われたので、 ゲームの専門学校は避けました。 本当にありがとうございました!!
- sakusaker7
- ベストアンサー率62% (800/1280)
目指すのが「ゲームクリエーター」でタイトルが「プログラミングの知識を得る」 なので軸足がどっちなのかよくわかりませんが、 2ちゃんねるのプログラマ板にある ゲームプログラマの人に聞きたい 23問目 http://pc11.2ch.net/test/read.cgi/prog/1170501069/l50 あたりにはゲームメーカーで実際に働いている人の 発言もあるみたいだし、今回の質問にあるようなことを 訊いている人もいます。 まあ場所が場所なので情報としては玉石混交と いったところでしょうが、参考にはできるでしょう。 ゲームハード板あたりにも同様のスレッドがあるかもしれませんが、 そちらは見てないので状況を知りません。
お礼
質問に答えていただき、ありがとうございます。 プログラムに関して勉強することがゲームクリエイターになることと密接に関係してると考えてたので、中途半端でしたが、軸足はクリエーターです。もっとも、いろんな方の回答を見てる限り、考えが甘すぎたようですが^^;その2ちゃんねるの板も参考にさせていただきます。ありがとうございました。
- 1
- 2
お礼
現役の師匠は確かにいてほしいと思ってますが・・・^^; まぁいないんで今は探しつつ自分である程度までは勉強しようと 思ってます。 様々な助言ありがとうございました。