ゲームプログラミングのアルゴリズムの学び方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
サンタクロース

ゲームプログラミングのアルゴリズムの学び方

#1

投稿記事 by サンタクロース » 13年前

こんばんわ、サンタクロースと言います


私はゲームプログラミングのアルゴリズムの学び方について悩んでいます


まず、少し長くなりますが私が質問しようと思った理由です
ゲームと言っても様々なジャンルがあるのですが、私は特にSTGを作りたいと思っています
しかしSTGを1から自力で組むのは無理だと思うので、サイトを参考にするのが普通だと思います
ただ、大抵のサイトでは、「作者と一緒にSTGを作っていこう」といった感じで
ソースコードがバンっと張られて、そのあとにソースコードの内容を解説するようなタイプだと
思うんです。例として挙げると申し訳ない気がしますが、ちょうど龍神録様の
「龍神録プログラミングの館」の様な感じです
確かにそのソースコードを打ち込んでいけばゲームは出来ますけど、それだとタイピングと変わらなくて自分の身にならない気がするのです
じゃあ、結局ゲームのアルゴリズムってどう勉強すればいいんだろう、皆さんはどのように勉強しているのだろう・・・と思ったので
今回投稿させていただきました


ゲームを作っている方で、自分はこんな風にアルゴリズムを学んだ、または学んでいるというのを回答して下さるとうれしいです

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: ゲームプログラミングのアルゴリズムの学び方

#2

投稿記事 by softya(ソフト屋) » 13年前

龍神録もそうですが、ああいう形で作りかたを提示するか問題集と回答にするかで比べると龍神録のような方法のほうがやる気が出ると思うのです。
ただ、答えが全部か書いてある問題集みたいなのものなので、そのまま暗記すれば良いと勘違いしてしまう危険性を孕んでいます。

で、プログラミングはまず幾つかの例を見せて、それを元に応用問題をいくつも解くほうが実力は付くと思います。
龍神録の場合は最初に問題というか解説があるので、それだけを読んで下の方を読まずに自分なりに書いてみて答え合わせをしてみると実力がつくと思います。
それも難しいと感じるなら、まずゲームプログラミングの館を上記の方法で復習して、じゃんけんゲームなどの簡単なものをDXライブラリのリファレンスだけ見て作って見ること。じゃんけんゲームに複雑なエフェクト加えること。など自分で難しくなるように工夫をしてみる事が大事です。
そレが出来るようになったら、すごく簡単なシューティングを作ってみましょう。
・自機を表示
・自機をキー入力で移動
・自機から弾を単発発射
・自機から弾を連発
・敵の発生
・敵と弾の当たり判定
・敵にHPを設ける
・敵が移動
・敵がパターン移動
・敵が簡単な攻撃
・敵が多弾攻撃
・敵が弾幕
などなどの順番で積み重ねていく内に龍神録のコードの意味も分かってくると思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
nullptr
記事: 239
登録日時: 13年前

Re: ゲームプログラミングのアルゴリズムの学び方

#3

投稿記事 by nullptr » 13年前

ゲームのアルゴリズムを勉強したい、といいますが、何のアルゴリズムが勉強したいのですか?アルゴリズムを何に使いたいのですか?
アルゴリズムとは、解法です。
問題をどのように、いかに効率よく、安全に行なうかなどの解法です。
それらを学びたい・・・気持ちは分かりますが、何のアルゴリズムが勉強したいのですか?アルゴリズムを何に使いたいのですか?それが重要だと思います。使わないアルゴリズムを勉強する?無理です。

結局、自分でゲームを作っていると「これは一体どうしたらいいんだろう」という場面に出会います。
そうしたら、必然とそれを調べ始めます。何に使いたいのかハッキリしていることを調べて覚えるのは簡単です。

つまり、アルゴリズムなんてゲームを作っていれば覚えます(ゲームに使うアルゴリズムだけですが)
確かにそのソースコードを打ち込んでいけばゲームは出来ますけど、それだとタイピングと変わらなくて自分の身にならない気がするのです
まずはそれから始めてください。ご自身でおっしゃっていますね。いきなり1から作るのは無理です。
アルゴリズムなんていうのはゲームが作れる人間が考えるものだと思ってください。今は、他に覚えることがあるとおもいます。
このサイト様のすばらしいソースコードから学ぶことがたくさんあるはずです。

人のコードをコピーするのは自分のためにならない・・・。確かに、数学の教科書を丸写ししても頭はよくなりません。
しかし、プログラムに必要なのは努力よりも経験です。そもそも人様のこんな大規模なコードがまるまる見れるなんて珍しいのです、パソコンの画面に穴があくほど見ることをオススメしますよ。
 
 
✜ で C ご ✜
: す + 注 :
¦ か + 文 ¦
?
Is the は :
order C++? ✜
     糸冬   
  ――――――――
  制作・著作 NHK
 
 

科学太郎

Re: ゲームプログラミングのアルゴリズムの学び方

#4

投稿記事 by 科学太郎 » 13年前

既に適切なアドバイスがありますので、私なりのアドバイスをします。
まず、私がゲームを良く作ってた20代前半(1990年代)にはゲーム製作本はほとんどなかった。(BASICの本はあったがC言語ではなかった)
でも、ゲームを作りたかったので思考錯誤してミニRPG、インベーダー・ゲーム、パワーアップ型のシューティング・ゲームを作りました。
しかし、単純に作り続けたのではありません。

シューティング・ゲームのみに絞ると次のステップを踏みました。
(1)最初は正しく動くゲームを作る。
(2)全ての関数をリスト化して関数名の統一化を行って作り直す。
(3)関数名とデータ処理から統一化できそうなデータ構造を考える。
(4)データ構造を見直して同じルールのシューティング・ゲームを作り直す。
(5)データ管理のアルゴリズム(ソート、リスト、バイナリツリー)などの書籍を読む。
(6)データ管理のアルゴリズムを読みながらゲームに使えそうな方法を探ってみる。
(7)見つかったら新しいデータ構造を考えてシューティング・ゲームを作り直す。
(8)ファイル構造、分配コンパイルも含めて見直して何度も作り直す。

このように同じルールのシューティング・ゲームを何度か作り直します。
ぱっと見ただけではデザイン、ゲーム・ルールは変わりませんが、
アイテムや敵機のデータ管理構造や開発用のソースファイル構造などが変わります。

このためどのように分配コンパイルすれば良いのか、自分で考えた分だけ記憶に残ります。
記憶に残すには自分自身で考える必要があり、覚えるのとは意味が違ってきます。
自分で考え出したシューティング・ゲームの作り方(構造)は一生忘れない智慧です。

また、アクション・ゲームを作ろうとした時にシューティング・ゲームのデータ構造が利用できます。
つまり、違うジャンルを作る事でゲームの共通項目が見えてきます。
これこそがゲーム・アルゴリズムを学ぶ近道です。

サンタクロース

Re: ゲームプログラミングのアルゴリズムの学び方

#5

投稿記事 by サンタクロース » 13年前

softyaさん、loweさん、科学太郎さん、回答ありがとうございます

>>softyaさん
>>龍神録の場合は最初に問題というか解説があるので、それだけを読んで下の方を読まずに自分なりに書いてみて答え合わせをしてみる

これは面白い方法かもしれないです。
ただ、分からない→ソースを見るという暗記にはならず、
自分のソースと見比べることで自分に今何が足りていないのかが
把握できると思います

>>loweさん
>>それらを学びたい・・・気持ちは分かりますが、何のアルゴリズムが勉強したいのですか?アルゴリズムを何に使いたいのですか?それが重要だと思います。使わないアルゴリズムを勉強する?無理です。

そうですよね、将来なんの役に立つのかと必死に世界史の単語を
詰め込もうとしてもなかなか覚えれなかったのがいい例でしょうか(笑)

>>アルゴリズムなんていうのはゲームが作れる人間が考えるものだと思ってください。今は、他に覚えることがあるとおもいます。

自分は勘違いしていました。大事なのはアルゴリズムを正しく使える
ようになるということですね
ただコードを見るのではなく、このコードがなにに使えるのかを常に
意識してみたいと思います

>>科学太郎さん
お二人とはまた違った意見で面白いと思いました。
小さなゲームをたくさん作るというよりは、一つのゲームの
内部的な構造をじっくりと考えていくわけですね
今の時点ではちょっと難しそうですが、この方法なら確かに
自分でしっかり考えることが出来、かつプログラミングの能力が
上がりそうです。またじっくり考えるので、記憶にも残りますよね

------------------------

回答本当にありがとうございました。今後の自分のすべきことが見えてきた気がします。
自分の出した結論としては、

龍神録の章に沿って、ソースコードを見る前に自分で書いてみる。
              ↓
分からないところはソースコードを参照させていただく、ただ覚えるではなくて、何に使われているのかをはっきり理解する

ある程度慣れたところで、データの管理の仕方をいろいろ考えてみる


結論といってもひとつにまとめただけですが;;

閉鎖

“C言語何でも質問掲示板” へ戻る