
ゲームプログラミングのためのC#学習、よい方法は? 90
構想 部門より
多くの人と同様に、私は自分でゲームを作りたいと思っている。MATLABやVisualBasic、LabVIEWを除き、実際のプログラミング経験はない。初めはRubyを試してみたが、パワーの必要なゲームの作成に進むにはC言語系を学ぶ必要があるとの結論に達した。その後、いろいろと調べてみるうちにC#にたどり着いた。
プログラミング以外のゲームデザインや理論に関しては問題ない。MayaやBlenderを含む、CADの経験が8年近くある。また、セミプロレベルのサウンドスタジオを所有しており、iTunesでインディーズアルバムをリリースしているし、様々なプログラムで効果音や音楽の制作を担当している。9年ぐらいDotAのベータテスターをやっているので、ゲーム開発の困難さなどは理解しているつもりだ。構想は1~2年かけて練り上げたもので、既にゲーム(RTS)の成長テーブルやユニットの種類・状態、ストーリーラインといったアイディアは書き出している。ゲームは自分の時間を使って作る計画で、完成までに数年かかる覚悟もできている。
このように自分の状況を書き出したのは、自分が何をしようとしているのか自分自身がわかっていることを皆さんに理解していただきたいためだ。「どうすればゲームが作れるのか教えて」などといった質問をするつもりはない。ゲームプログラミングのためにC#を学ぶとしたら、何から始めればいいだろう(たとえば、おすすめの書籍など)。オブジェクト指向プログラミングは理解しているので、あまり必要ない。文法も覚えさえすればいいのであまり必要なく、方法に関連するものが必要だ。ゲームの開発に関する他の書籍や情報でおすすめのものがあれば、お教え願いたい。私は今のところ何も知らないが、素質的には問題ないと思っている。
ビデオチュートリアルという手もある(&MonoGameをオススメ) (スコア:4, 参考になる)
ゲームの開発言語に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]
そこまでわかっていて、なぜわからない? (スコア:3, すばらしい洞察)
そこまでいろいろと分かっているのなら、作れるはず。あるいは少なくとも、分からないことを自力で調べられるはず。
作れないのなら、状況説明のどこかに嘘やごまかしがある。
Re:そこまでわかっていて、なぜわからない? (スコア:5, すばらしい洞察)
上達するひと/しないひとの漫画みたいですね。
やる前から最短経路にやたら固執する人って、実は本当にやりたいわけじゃないんでしょう。
たとえ今なんらかのゲームフレームワークを教えられたとしても、
「このフレームワークの効果的な活用スタイルはどのようなものか」
とかなんとか言い出してもう一段後退するだけのような気が…。
実践するモチベーションを欠いたまま知識だけ増やしてどんどん腰が重くなるタイプは、
グダグダ言わせずに背中を突き飛ばして最初の1歩を踏ませないと何も始めません。
質問者がC#を効果的に学習する最良の方法は、
「…おまえって本当にワナビーだよな」
と言い放ってくれるリアルな知人を得ることだと思います。
Re:そこまでわかっていて、なぜわからない? (スコア:1, 興味深い)
この人、なぜベストを求めてるんですかねぇ。「まず一番良い方法を探す」っていうのは
一番遠回りで、しかも方法を知っただけで終わりにしちゃう危険も多い、最悪の選択なんですがね。
Re:そこまでわかっていて、なぜわからない? (スコア:1)
気持ちはわかるんだよ。
今、頭の中にある素晴らしいゲームを、今直ぐにでも作らないと、他人に似たようなゲームを先に作られてしまうってのをね。
今からプログラムを勉強するより、ディレクターになってプログラムできる人を捜した方が一番早いんじゃないかな?
天琉陳(Teruching)
Re:そこまでわかっていて、なぜわからない? (スコア:1)
ディレクターで思い出したんですが。
初期のウインドウズ向けのエヴァンゲリオンのゲームはすごかった。
要求するスペックが半端なくて。
部分インストールでゲームをやる場合、50倍速のCD-ROMドライブが推奨とか表示されましたから。
(計測してたっぽい)
2倍速のドライブが当たり前の時代です。
うちの4倍速では話にならんと、フルインストールしましたが、
べらぼうにゲームは遅かったです。うちの環境で?!とビックリしました。
中を見ると、マクロメディア ディレクターのデータファイルが…。
Re:そこまでわかっていて、なぜわからない? (スコア:1)
でも何も考えずにただがむしゃらに突き進むのも同じくらい馬鹿げた方法だけどね。
まるでそれは鉄下駄履いてウサギ跳びして、膝関節壊すような。
だから一番手っ取り早いのは師匠を見つけるか、或いは大学に行くことだと思う。
Re: (スコア:0)
自力でやろうと思えばやれるとは思っているが、情報収集もしておきたいって所じゃないかな。
ついでに、スラドのネタとして面白そうと思ったとか、同じくC#のゲーム作りに興味がある人の参考にもなるのではとか。
実践型の書籍がいいんじゃないかな (スコア:2)
いろいろ経験があるなら、これからも分野を選り好みせず学んでいけばいい。
VBの経験があるならC#もすぐ覚えられるだろう。(非.Net時代のVBやVBAしか知らない、という意味だったらちょっと困難かもしれないが)
Windows系やXBox系で開発するなら、Direct Xを学ぶと良いと思う。ゲーム作り実践型の書籍も豊富だし。
それから、全体的に知識と経験がコンテンツ寄りに見受けられるので、
「アルゴリズムとデータ構造」的な、情報理論を学んで足場固めをすると良いように思う。
ところで、日本ではプラットフォームにしてもアルゴリズムにしても「ゲームを作りながら覚える」系の書籍が豊富だけど、欧米ではそんなこと無いんだろうか?
Re:実践型の書籍がいいんじゃないかな (スコア:2)
思い通りのモノを作るには、実践()すぎて何とも。
#書籍とは違うけど、http://www.page.sannet.ne.jp/hirasho/ に転がっている siggraph.zip は良さげな印象
Re: (スコア:0)
はじめから高度なやつじゃなくて、作るのが簡単そうなゲームを1回作ってみればいいんじゃないかな
テトリスとか
Re:実践型の書籍がいいんじゃないかな (スコア:1)
それだ!
麻雀は役判定が必要だから、脱衣ブロック崩しあたりで。
「ゲームプログラミング遊びのレシピ」には随分お世話になりました。 (スコア:2, 興味深い)
個人で楽しむ範囲のゲームを手軽に作れる「遊びのレシピ」は重宝したし、表紙とかボロボロだけでいまでも所有している。
もう絶版になってしまったのかな?思えばこの書籍を読みつつDelphiを覚えたのだった。
そもそも言語なんて一つだけじゃ足りないよ (スコア:2)
言語を習得しようとしている時点でダメ。
使っていくうちに何とかなるもので,
ゲームが作りたいなら,ゲームのルールを考えるべきで,
そのルールを文章化した上で,それをどう実装すべきか考える。
そこで始めてプログラミング言語の登場だ。
何がしたいかがハッキリしていれば,あとは簡単。
翻訳みたいなもんだから。
実際はソコまで簡単にいかないだろうけど,
少なくとも入門としてはこれで出来ない規模のゲームは
開発しないほうがよいと思う。
ここまで来れば,どの言語を選ぶかって些末な問題だと思う。
まあ,C#を使うって言うのはその中ではベスト,なのかなあ。
Unityで使えるし。
考えるな (スコア:1)
手を動かせ
# スマホ関連とかでもちょくちょくC#での開発とか聞くようになってきたのでちょっと覗いてみようとは思ってる
俺みたいなやつ他にもいるんだな (スコア:1)
叩いて壊し
渡らない
次の石橋
探して歩く
言語は手段 (スコア:0, フレームのもと)
といったことが言えましたが、今はそういう制約はないですね。
したがって、一番重要なのは、開発ソフトがゲームとして面白いかどうかでしょう。
新規性、没入感、達成感、バランス、ワクワク感、意外性などゲームをゲームとして
成立させるための要件はいろいろありますが、言語はそれらを実現するための手段にすぎません。
ゲーム書くのに、C#がいいと思っている時点で、この人は面白いゲームは開発できない
だろうと思ってしまいます。
手段を聞いてる (スコア:3, すばらしい洞察)
こういう意見が出ることを予想してくどいくらいに説明してるのに、それでも的外れなコメントついちゃうんですね…
うじゃうじゃ
Re: (スコア:0)
ただ元のタレコミも「自分では既に答えを出していて追認だけが欲しい」という臭気が…
Re:言語は手段 (スコア:2)
> ゲーム書くのに、C#がいいと思っている時点で、この人は面白いゲームは開発できない
> だろうと思ってしまいます。
え・・・変な事言ってるかな?
NOBAX氏は「車乗るんならF1じゃなきゃね!」とか「バッグならヴィトン以外駄目でしょ」
みたいな偏見を持つのがイカン、それはクリエイティブの妨げだと言っているんでしょ?
別にC#に偏見持ってるわけでないでしょ
Re:言語は手段 (スコア:1)
>大昔だったら、BASICはノロいから、ゲームを書くにはアセンブラを習わないとダメだよ
大昔でも、必ずしもそうでもないよ。
マイコンBASICマガジンでも「それなりに」面白いゲームはあった。
それは今でも大差ない。
しかしそれを超えるゲームを作ろうとすると、処理性能が壁になることが多い。
そうなると言語やアルゴリズムで改善しないと実現できないってだけの話。
#だいたい「言語は手段」とか「言語は単なる道具」といってるヤツって、そもそも何が言いたいんだか。
#1、手段/道具だから、なにを使っても同じ/かまわない。
#2、手段/道具だからこそ、最適/最高の物を使うべき。
Re: (スコア:0)
そうでもないですよ。
今でも製作するゲームの処理能力的キャパシティは言語の実行速度に大きく影響されます。
インタプリタ型だとかなりアルゴリズムを工夫しないとあっというまに処理能力が足りなくなります。
C++でも早い段階からの細かいパフォーマンスチューニングはかなり大事で、無計画に力任せに組んでいたら後の方で処理負荷かかりすぎて身動きが取れなくなることもよくあります。
そういう意味で、ゲームを作るのならC++やC#、あるいはそれに匹敵する処理速度の出る言語を選択するのは重要です。
「あればあるだけ使ってしまう」のが記憶容量と演算リソースなのです。
Re: (スコア:0)
しかしあればあるだけ使ってしまったゲームが面白くないと感じるのは私だけではないはずだ
Re: (スコア:0)
「あればあるだけ使ってしまったから面白くない」なんて感性はよほど稀有だと思いますよ
Re:言語は手段 (スコア:1)
>制限がないとリアル強者がそのまま強者なだけで面白くもなんともなくなる。
別にそれは実装時のリソースの制限とは何の関係もないものだと思うが。
#「リソースがあればあるだけ使ってしまったゲームが面白くない」ではなくて
#「リソースがあればあるだけ使ってしまったゲームが面白いとは限らない」ってだけじゃね。
Re: (スコア:0)
そういった妙なオカルトに毒されてる方々もそれなりにいるみたいなので、確かに貴方だけではないでしょうね。
Re: (スコア:0)
相談者が懇切丁寧に説明していることを全く読んでないのは置いておくとしてしても、ひどい。
ゲームを書くのに言語の制約はない、言語は手段に過ぎないと書いておきながら、C#を選択したことを理由に面白いゲームは開発できないって。
自分が何を言いたいのか考えて書かないんだろうか。
Re:言語は手段 (スコア:1)
内容が支離滅裂ですね。論理的な思考が苦手な人なのでしょう。
Re: (スコア:0)
C# って単語に脊髄反射したかのように、タレコミすら読まずにこんなマヌケなコメント書いちゃったんだろうなぁ。
老いって怖いね。
Re:言語はゲーム (スコア:0)
> 開発ソフトがゲームとして面白いかどうか
> 新規性、没入感、達成感、バランス、ワクワク感、意外性など
なにしろ.NETなんでVisual StudioかMonoかくらいしかIDE無いなあ。
JavaならNetBeansとかEclipseとかXCodeとかいろいろ比較して例の発電所の音テンプレを作れないか悩めるだろうに。(悩んで終わり)
Re: (スコア:0)
前半は割といいことを言っているので、
なぜ結論がこんなに意味不明なのだろう。
有能なプログラマを雇え (スコア:0)
ゲーム作るためにどう言語を学習すればいいかなんて悩んでる時点で、この人が理想とするゲームを作れるレベルに達するまで何年かかるか分からない。
作っては捨て、作っては捨て、試行錯誤の果てにその域に達してからが漸くスタートラインだ。
そして構想の規模から察するに、スタートラインに立ってから軽く2~3年、いや5年~10年かかるかもしれない。
今から10年頑張っても完成しないかもしれない。
その覚悟があるのならC#の勉強を頑張ってみるのもいいだろう。
本気で完成させたいのなら、有能なプログラマを雇うのが最も可能性が高いだろう。
とは言え、それですら逃げるリスク等々あるわけで完成に漕ぎ着けるのはかなり難しいが。
ぶっちゃけると、取りかかってもいないのに壮大な構想なんて練ってる時点で死亡フラグざっくざくですけどね。
実際作ってみるとあれはダメこれはダメの繰り返しですし、既に下手の試み何とやらって状態になってると思われます。
ゲームプログラミングのためにC#を使っているひとだけが答えてあげればいいのに。 (スコア:0)
お前ら黙ってろ。
Re: (スコア:0)
遠隔操作プログラミングのためにC#を使っているひとも
答えちゃだめですか?
Re: (スコア:0)
答えられるものなら答えたらいいんじゃないか。
Re: (スコア:0)
Mayaとか言ってC#を限定するなんて
アドバイスできる奴がどれほどいるのか
MSのサイトですらC++中心なのに
ゲーム開発 [microsoft.com]
Re:ゲームプログラミングのためにC#を使っているひとだけが答えてあげればいいのに。 (スコア:1)
一から作るってのならC++がいいと思いますが、別にそこら辺はゲームエンジンに任せますよって話なら
C#でゲーム作ってる人それなりにいますし、問題ないかと
ただその場合はUnityとか具体名が出そうな気がするんですが…
xnaは終了しましたし
不自由言語を使うべきでは無い (スコア:0)
とRMSは曰うに違いない。
Re:不自由言語を使うべきでは無い (スコア:1)
そもそも御大的にコンピュータゲームってアリなのか? アリなら言語を選べというし、ナシならゲーム制作自体をするなというんじゃないだろうか。
Re: (スコア:0)
> そもそも御大的にコンピュータゲームってアリなのか?
RMSは見つけられなかったけど、FSF的にはこんな見解 [osdn.jp]を見つけることができました。
GNU Backgammonとか、GNU Goとかありますし。
Re: (スコア:0)
ISO規格化されてるのに....
Re: (スコア:0)
少なくともJavaとかいうクソ言語よりはよっぽど自由だよな
こういう系統が定期的に出てくるけど (スコア:0)
アメリカンジョークでしょ。
何はともあれ (スコア:0)
手を動かせばいいのでは?
ゲームのアイディアがあり、大筋のデザインができてる、それでいて開発言語の習熟が必要というのなら
後は、まず作って破棄して作り直してを繰り返すしかないでしょうに。
それとも、何か最適なフレームワークは?それの習熟にベストな書籍・Webサイトは?って話なの?
それこそ調べて手を動かせよって話なんですが…。
MODつくれば? (スコア:0)
DotAのベータテスターやってるなら、そっち系のMODとして、自分の作りたいものの作れば良いんじゃないか?
ひな形がある分、ちょっとづつ完成させて行きやすいし。
で、MODの範囲でどうにもならなくなったら「それができる方法」を探して1からプログラミングはじめりれば良い。
rubyダメなの? (スコア:0)
例えば三目並べゲームを描くなら
おそらく最短の工数で、かなり短くて、明瞭で、比較的速く動作するコードが書けると思うんだけど
ブラウザゲームでも、裏で最も頑張ってるのはrubyだと思う
優れたフレームワークのおかげでセキュアだし
ユーザ増加やスパイクアクセスなど、あらゆる問題に対してコントロールを可能にする
今、タブレットの画面を見回しながらコメ書いてるんだけど、rubyが役に立ちそうにない部分を見つけるのはとても難しいね
というか、今のところ俺には見つけられてない
このブラウザだって、javascriptとは別の選択肢としてruby乗っけてもいいんじゃないかって気がw・・ってのはruby推し過ぎだろうけどw
Re:rubyダメなの? (スコア:1)
それはリッチなUIも含めての話?
いまどきのマシンで三目並べの速度が気にすることなんてないと思うんだが。
> 今のところ俺には見つけられてない
だけど採用されていないじゃない。
> このブラウザだって、javascriptとは別の選択肢としてruby乗っけてもいいんじゃないかって気がw
冗談で言ったんだろうけど実はこれが一番現実的なコメントではないかな。
javascriptも昔はすごい遅かったけど、ブラウザに乗っていたおかげで高速なエンジンを作ってもらえたし。
Re: (スコア:0)
ドブに落ちそうな人を肥溜めに叩き込むようなコメントだな。
なんで全部自分でやらないといけないの? (スコア:0)
CADが使えて作曲もできるならプログラミングできる人と協力してソフトつくればいいじゃんか。
全部自分でやるとそりゃ儲けは独り占めできるのかもしれないが、そもそも製品ができないのでは話にならない。
そして、人間は使わない能力は衰えるようにできている。今CADやらできても、プログラミングを覚えたころには一線級ではなくなっている。
できることに集中したほうがいい。
ベタ過ぎるかも知れないけど習作で (スコア:0)
作りたいゲームの類似タイプのクローンを作るってのは、個人開発でゲームプログラミングを学ぶには良い素材。
シンプルなゲームでも、形式的に実現するだけじゃなくて微妙な操作感やSEのタイミングなんかも
「思い通り」に実現できるようになるまではそれなりの経験を積まないと辿り着けないもんだし。