パスワードを忘れた? アカウント作成
11127749 story
プログラミング

ゲームプログラミングのためのC#学習、よい方法は? 90

ストーリー by headless
構想 部門より
本家/.「Ask Slashdot: Best Way to Learn C# For Game Programming?」より

多くの人と同様に、私は自分でゲームを作りたいと思っている。MATLABやVisualBasic、LabVIEWを除き、実際のプログラミング経験はない。初めはRubyを試してみたが、パワーの必要なゲームの作成に進むにはC言語系を学ぶ必要があるとの結論に達した。その後、いろいろと調べてみるうちにC#にたどり着いた。

プログラミング以外のゲームデザインや理論に関しては問題ない。MayaやBlenderを含む、CADの経験が8年近くある。また、セミプロレベルのサウンドスタジオを所有しており、iTunesでインディーズアルバムをリリースしているし、様々なプログラムで効果音や音楽の制作を担当している。9年ぐらいDotAのベータテスターをやっているので、ゲーム開発の困難さなどは理解しているつもりだ。構想は1~2年かけて練り上げたもので、既にゲーム(RTS)の成長テーブルやユニットの種類・状態、ストーリーラインといったアイディアは書き出している。ゲームは自分の時間を使って作る計画で、完成までに数年かかる覚悟もできている。

このように自分の状況を書き出したのは、自分が何をしようとしているのか自分自身がわかっていることを皆さんに理解していただきたいためだ。「どうすればゲームが作れるのか教えて」などといった質問をするつもりはない。ゲームプログラミングのためにC#を学ぶとしたら、何から始めればいいだろう(たとえば、おすすめの書籍など)。オブジェクト指向プログラミングは理解しているので、あまり必要ない。文法も覚えさえすればいいのであまり必要なく、方法に関連するものが必要だ。ゲームの開発に関する他の書籍や情報でおすすめのものがあれば、お教え願いたい。私は今のところ何も知らないが、素質的には問題ないと思っている。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • ゲームの開発言語にC#を選択したのは良いと思う。
    言語仕様は素直でモダンだし性能出るし開発環境のVisualStudioも完成度が高い。
    実行環境やコンパイル環境(ネイティブ吐けるよ)としてmonoがあるので先々はマルチプラットフォーム化もできるしね。
    Unityでゲーム作りたくなっても言語が同じなので知識が活かせる。

    ゲーム作るにはフレームワークから作るのも楽しいけど、質問者のようにMaya云々言ってるとなると3Dゲームを作りたいんだろうから3Dモデルローダーがあるライブラリが欲しくなる。3Dモデルローダの自作も楽しそうだけどちょっと遠回りすぎるし。
    WindowsでのゲームフレームワークだとXNAがあったけど、これは終了してしまった。
    でも互換環境のMonoGameというのがあるのでこれが良さそうだ。
    しかもMonoで動かすからWindowsだけじゃなくてiOSやAndroidやMacやLinuxなどでも動く。
    参考記事→僕の考えた最強のゲームフレームワーク『MonoGame』を試す [hateblo.jp]

    で、MonoGameに限らないけど最近はプログラム開発のビデオチュートリアルが結構ある。
    MonoGameについては以下のシリーズがよさそう。
    (2D)PRGを作るチュートリアル。ゲーム開発の勘所もつかめる。
    C# Monogame RPG Made Easy Tutorial 1 - Introduction [youtube.com]

    ビデオだと文章での解説で省略されがちな操作なども全部再現できるので、まずひと通りやってみて感覚をつかもうって時にはとても良い。
    もちろん再生時間分確実に時間を消費することと、開発環境簿バージョンが微妙にちがっただけで混乱を招くとうい欠点もあるけど、利点は大きい。

    とか偉そうな事書いてるけど、僕はまだMonoGameは使ってない。
    昔C#+SDLでシューティングゲームを作ったことはある。【宣伝】https://github.com/fkytks/NPTwins [github.com]

  • by Anonymous Coward on 2014年06月22日 19時54分 (#2625924)

    そこまでいろいろと分かっているのなら、作れるはず。あるいは少なくとも、分からないことを自力で調べられるはず。
    作れないのなら、状況説明のどこかに嘘やごまかしがある。

    • by Anonymous Coward on 2014年06月22日 21時15分 (#2625974)

      上達するひと/しないひとの漫画みたいですね。
      やる前から最短経路にやたら固執する人って、実は本当にやりたいわけじゃないんでしょう。

      たとえ今なんらかのゲームフレームワークを教えられたとしても、
      「このフレームワークの効果的な活用スタイルはどのようなものか」
      とかなんとか言い出してもう一段後退するだけのような気が…。

      実践するモチベーションを欠いたまま知識だけ増やしてどんどん腰が重くなるタイプは、
      グダグダ言わせずに背中を突き飛ばして最初の1歩を踏ませないと何も始めません。

      質問者がC#を効果的に学習する最良の方法は、
      「…おまえって本当にワナビーだよな」
      と言い放ってくれるリアルな知人を得ることだと思います。

      親コメント
    • by Anonymous Coward on 2014年06月22日 20時01分 (#2625927)

      この人、なぜベストを求めてるんですかねぇ。「まず一番良い方法を探す」っていうのは
      一番遠回りで、しかも方法を知っただけで終わりにしちゃう危険も多い、最悪の選択なんですがね。

      親コメント
      • 気持ちはわかるんだよ。

        今、頭の中にある素晴らしいゲームを、今直ぐにでも作らないと、他人に似たようなゲームを先に作られてしまうってのをね。

        今からプログラムを勉強するより、ディレクターになってプログラムできる人を捜した方が一番早いんじゃないかな?

        --
        天琉陳(Teruching)
        親コメント
        • ディレクターで思い出したんですが。
          初期のウインドウズ向けのエヴァンゲリオンのゲームはすごかった。

          要求するスペックが半端なくて。
          部分インストールでゲームをやる場合、50倍速のCD-ROMドライブが推奨とか表示されましたから。
          (計測してたっぽい)
          2倍速のドライブが当たり前の時代です。
          うちの4倍速では話にならんと、フルインストールしましたが、
          べらぼうにゲームは遅かったです。うちの環境で?!とビックリしました。

          中を見ると、マクロメディア ディレクターのデータファイルが…。

          親コメント
      • でも何も考えずにただがむしゃらに突き進むのも同じくらい馬鹿げた方法だけどね。
        まるでそれは鉄下駄履いてウサギ跳びして、膝関節壊すような。

        だから一番手っ取り早いのは師匠を見つけるか、或いは大学に行くことだと思う。

        親コメント
    • by Anonymous Coward

      自力でやろうと思えばやれるとは思っているが、情報収集もしておきたいって所じゃないかな。

      ついでに、スラドのネタとして面白そうと思ったとか、同じくC#のゲーム作りに興味がある人の参考にもなるのではとか。

  • いろいろ経験があるなら、これからも分野を選り好みせず学んでいけばいい。
    VBの経験があるならC#もすぐ覚えられるだろう。(非.Net時代のVBやVBAしか知らない、という意味だったらちょっと困難かもしれないが)
    Windows系やXBox系で開発するなら、Direct Xを学ぶと良いと思う。ゲーム作り実践型の書籍も豊富だし。
    それから、全体的に知識と経験がコンテンツ寄りに見受けられるので、
    「アルゴリズムとデータ構造」的な、情報理論を学んで足場固めをすると良いように思う。

    ところで、日本ではプラットフォームにしてもアルゴリズムにしても「ゲームを作りながら覚える」系の書籍が豊富だけど、欧米ではそんなこと無いんだろうか?

  • 個人で楽しむ範囲のゲームを手軽に作れる「遊びのレシピ」は重宝したし、表紙とかボロボロだけでいまでも所有している。
    もう絶版になってしまったのかな?思えばこの書籍を読みつつDelphiを覚えたのだった。

  • 言語を習得しようとしている時点でダメ。

    使っていくうちに何とかなるもので,
    ゲームが作りたいなら,ゲームのルールを考えるべきで,
    そのルールを文章化した上で,それをどう実装すべきか考える。
    そこで始めてプログラミング言語の登場だ。
    何がしたいかがハッキリしていれば,あとは簡単。
    翻訳みたいなもんだから。

    実際はソコまで簡単にいかないだろうけど,
    少なくとも入門としてはこれで出来ない規模のゲームは
    開発しないほうがよいと思う。

    ここまで来れば,どの言語を選ぶかって些末な問題だと思う。
    まあ,C#を使うって言うのはその中ではベスト,なのかなあ。
    Unityで使えるし。

  • by iwakuralain (33086) on 2014年06月23日 0時54分 (#2626048)

    手を動かせ

    # スマホ関連とかでもちょくちょくC#での開発とか聞くようになってきたのでちょっと覗いてみようとは思ってる

  • 石橋を
    叩いて壊し
    渡らない
    次の石橋
    探して歩く
  • 言語は手段 (スコア:0, フレームのもと)

    by NOBAX (21937) on 2014年06月22日 19時31分 (#2625914)
    大昔だったら、BASICはノロいから、ゲームを書くにはアセンブラを習わないとダメだよ
    といったことが言えましたが、今はそういう制約はないですね。

    したがって、一番重要なのは、開発ソフトがゲームとして面白いかどうかでしょう。
    新規性、没入感、達成感、バランス、ワクワク感、意外性などゲームをゲームとして
    成立させるための要件はいろいろありますが、言語はそれらを実現するための手段にすぎません。

    ゲーム書くのに、C#がいいと思っている時点で、この人は面白いゲームは開発できない
    だろうと思ってしまいます。
    • 手段を聞いてる (スコア:3, すばらしい洞察)

      by albireo (7374) on 2014年06月22日 19時53分 (#2625923) 日記

      こういう意見が出ることを予想してくどいくらいに説明してるのに、それでも的外れなコメントついちゃうんですね…

      --
      うじゃうじゃ
      親コメント
      • by Anonymous Coward

        ただ元のタレコミも「自分では既に答えを出していて追認だけが欲しい」という臭気が…

    • by blackdrug (13208) on 2014年06月23日 21時53分 (#2626672) 日記

      > ゲーム書くのに、C#がいいと思っている時点で、この人は面白いゲームは開発できない
      > だろうと思ってしまいます。

      え・・・変な事言ってるかな?
      NOBAX氏は「車乗るんならF1じゃなきゃね!」とか「バッグならヴィトン以外駄目でしょ」
      みたいな偏見を持つのがイカン、それはクリエイティブの妨げだと言っているんでしょ?
      別にC#に偏見持ってるわけでないでしょ

      親コメント
    • by firewheel (31280) on 2014年06月23日 14時56分 (#2626354)

      >大昔だったら、BASICはノロいから、ゲームを書くにはアセンブラを習わないとダメだよ
      大昔でも、必ずしもそうでもないよ。

      マイコンBASICマガジンでも「それなりに」面白いゲームはあった。
      それは今でも大差ない。

      しかしそれを超えるゲームを作ろうとすると、処理性能が壁になることが多い。
      そうなると言語やアルゴリズムで改善しないと実現できないってだけの話。

      #だいたい「言語は手段」とか「言語は単なる道具」といってるヤツって、そもそも何が言いたいんだか。
      #1、手段/道具だから、なにを使っても同じ/かまわない。
      #2、手段/道具だからこそ、最適/最高の物を使うべき。

      親コメント
    • by Anonymous Coward

      そうでもないですよ。
      今でも製作するゲームの処理能力的キャパシティは言語の実行速度に大きく影響されます。
      インタプリタ型だとかなりアルゴリズムを工夫しないとあっというまに処理能力が足りなくなります。
      C++でも早い段階からの細かいパフォーマンスチューニングはかなり大事で、無計画に力任せに組んでいたら後の方で処理負荷かかりすぎて身動きが取れなくなることもよくあります。

      そういう意味で、ゲームを作るのならC++やC#、あるいはそれに匹敵する処理速度の出る言語を選択するのは重要です。
      「あればあるだけ使ってしまう」のが記憶容量と演算リソースなのです。

      • by Anonymous Coward

        しかしあればあるだけ使ってしまったゲームが面白くないと感じるのは私だけではないはずだ

        • by Anonymous Coward

          「あればあるだけ使ってしまったから面白くない」なんて感性はよほど稀有だと思いますよ

        • by Anonymous Coward

          そういった妙なオカルトに毒されてる方々もそれなりにいるみたいなので、確かに貴方だけではないでしょうね。

    • by Anonymous Coward

      相談者が懇切丁寧に説明していることを全く読んでないのは置いておくとしてしても、ひどい。
      ゲームを書くのに言語の制約はない、言語は手段に過ぎないと書いておきながら、C#を選択したことを理由に面白いゲームは開発できないって。
      自分が何を言いたいのか考えて書かないんだろうか。

    • by Anonymous Coward

      C# って単語に脊髄反射したかのように、タレコミすら読まずにこんなマヌケなコメント書いちゃったんだろうなぁ。
      老いって怖いね。

    • > 開発ソフトがゲームとして面白いかどうか
      > 新規性、没入感、達成感、バランス、ワクワク感、意外性など
      なにしろ.NETなんでVisual StudioかMonoかくらいしかIDE無いなあ。
      JavaならNetBeansとかEclipseとかXCodeとかいろいろ比較して例の発電所の音テンプレを作れないか悩めるだろうに。(悩んで終わり)

    • by Anonymous Coward

      前半は割といいことを言っているので、
      なぜ結論がこんなに意味不明なのだろう。

  • by Anonymous Coward on 2014年06月22日 19時49分 (#2625920)

    ゲーム作るためにどう言語を学習すればいいかなんて悩んでる時点で、この人が理想とするゲームを作れるレベルに達するまで何年かかるか分からない。
    作っては捨て、作っては捨て、試行錯誤の果てにその域に達してからが漸くスタートラインだ。
    そして構想の規模から察するに、スタートラインに立ってから軽く2~3年、いや5年~10年かかるかもしれない。

    今から10年頑張っても完成しないかもしれない。
    その覚悟があるのならC#の勉強を頑張ってみるのもいいだろう。

    本気で完成させたいのなら、有能なプログラマを雇うのが最も可能性が高いだろう。
    とは言え、それですら逃げるリスク等々あるわけで完成に漕ぎ着けるのはかなり難しいが。

    ぶっちゃけると、取りかかってもいないのに壮大な構想なんて練ってる時点で死亡フラグざっくざくですけどね。
    実際作ってみるとあれはダメこれはダメの繰り返しですし、既に下手の試み何とやらって状態になってると思われます。

  • by Anonymous Coward on 2014年06月22日 20時17分 (#2625938)

    とRMSは曰うに違いない。

    • by Anonymous Coward on 2014年06月22日 20時24分 (#2625943)

      そもそも御大的にコンピュータゲームってアリなのか? アリなら言語を選べというし、ナシならゲーム制作自体をするなというんじゃないだろうか。

      親コメント
      • by Anonymous Coward

        > そもそも御大的にコンピュータゲームってアリなのか?

        RMSは見つけられなかったけど、FSF的にはこんな見解 [osdn.jp]を見つけることができました。

        GNU Backgammonとか、GNU Goとかありますし。

    • by Anonymous Coward

      ISO規格化されてるのに....

      • by Anonymous Coward

        少なくともJavaとかいうクソ言語よりはよっぽど自由だよな

  • by Anonymous Coward on 2014年06月22日 20時38分 (#2625950)

    アメリカンジョークでしょ。

  • by Anonymous Coward on 2014年06月22日 20時38分 (#2625951)

    手を動かせばいいのでは?
    ゲームのアイディアがあり、大筋のデザインができてる、それでいて開発言語の習熟が必要というのなら
    後は、まず作って破棄して作り直してを繰り返すしかないでしょうに。

    それとも、何か最適なフレームワークは?それの習熟にベストな書籍・Webサイトは?って話なの?
    それこそ調べて手を動かせよって話なんですが…。

  • by Anonymous Coward on 2014年06月22日 20時40分 (#2625953)

    DotAのベータテスターやってるなら、そっち系のMODとして、自分の作りたいものの作れば良いんじゃないか?
    ひな形がある分、ちょっとづつ完成させて行きやすいし。

    で、MODの範囲でどうにもならなくなったら「それができる方法」を探して1からプログラミングはじめりれば良い。

  • by Anonymous Coward on 2014年06月22日 20時43分 (#2625955)

    例えば三目並べゲームを描くなら
    おそらく最短の工数で、かなり短くて、明瞭で、比較的速く動作するコードが書けると思うんだけど

    ブラウザゲームでも、裏で最も頑張ってるのはrubyだと思う
    優れたフレームワークのおかげでセキュアだし
    ユーザ増加やスパイクアクセスなど、あらゆる問題に対してコントロールを可能にする

    今、タブレットの画面を見回しながらコメ書いてるんだけど、rubyが役に立ちそうにない部分を見つけるのはとても難しいね
    というか、今のところ俺には見つけられてない
    このブラウザだって、javascriptとは別の選択肢としてruby乗っけてもいいんじゃないかって気がw・・ってのはruby推し過ぎだろうけどw

    • by Anonymous Coward on 2014年06月22日 23時22分 (#2626025)
      > 例えば三目並べゲームを描くなら

      それはリッチなUIも含めての話?
      いまどきのマシンで三目並べの速度が気にすることなんてないと思うんだが。

      > 今のところ俺には見つけられてない

      だけど採用されていないじゃない。

      > このブラウザだって、javascriptとは別の選択肢としてruby乗っけてもいいんじゃないかって気がw

      冗談で言ったんだろうけど実はこれが一番現実的なコメントではないかな。
      javascriptも昔はすごい遅かったけど、ブラウザに乗っていたおかげで高速なエンジンを作ってもらえたし。
      親コメント
    • by Anonymous Coward

      ドブに落ちそうな人を肥溜めに叩き込むようなコメントだな。

  • by Anonymous Coward on 2014年06月22日 20時53分 (#2625959)

    CADが使えて作曲もできるならプログラミングできる人と協力してソフトつくればいいじゃんか。
    全部自分でやるとそりゃ儲けは独り占めできるのかもしれないが、そもそも製品ができないのでは話にならない。
    そして、人間は使わない能力は衰えるようにできている。今CADやらできても、プログラミングを覚えたころには一線級ではなくなっている。
    できることに集中したほうがいい。

  • by Anonymous Coward on 2014年06月22日 21時06分 (#2625970)

    作りたいゲームの類似タイプのクローンを作るってのは、個人開発でゲームプログラミングを学ぶには良い素材。
    シンプルなゲームでも、形式的に実現するだけじゃなくて微妙な操作感やSEのタイミングなんかも
    「思い通り」に実現できるようになるまではそれなりの経験を積まないと辿り着けないもんだし。

typodupeerror

UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie

読み込み中...