Roll Play My Life

= ryuji_026

ゲームをつくるときのデータ構造

f:id:ryuji_026:20130809115019j:plain

ゲームをつくろうとすると、たくさんのオブジェクトを管理しなくてはいけないので、オブジェクトというのはデータなので、データ構造というものを学ぶ必要がありそうです。たとえばパズルゲームでブロックはどういう配列とかリストとかに保存しておくのかとか、色ごとのリストにするのかとか、行列毎に保存するとかそういうことを考えます。つまりデータ構造というのは、データをどういう風にプログラム内で保存しておくかといったことで、そのときそのプログラムの処理において最適なデータ構造を選択しないといけないです。

データ構造を知らないと、最適なデータ構造を自分で考える必要があって、データ構造というのは昔から有名なことだから、自分で考えてもそれよりもっと素晴らしいデータ構造が実は存在していることがほとんどで、車輪の再発明という感じになります。

明解 Javaによるアルゴリズムとデータ構造

明解 Javaによるアルゴリズムとデータ構造

同じようにアルゴリズムというのもそうで、例えばパズルゲームで同じ色がつながっているブロックを消したいけど、あるブロックから出発してどこまでが同じ色か、というのを走査する方法を考えるとします。そのとき、うーんこれはあるインデックスから+1したり-1したりした場所のブロックが…とか少ない行列だから(0,0)から一気に見たほうが早いとか、考えるよりも、最適な方法を最初から知っていると時間の無駄にならないし、プログラムもより良くなります。

パズルゲームアルゴリズムマニアックス

パズルゲームアルゴリズムマニアックス

アクションゲームアルゴリズムマニアックス

アクションゲームアルゴリズムマニアックス

Javaゲームプログラミングアルゴリズム (CD付)

Javaゲームプログラミングアルゴリズム (CD付)

さっき思い出したけど、大学2年生のときに「データ構造とアルゴリズム」という授業があって、そのときはアルゴリズムというものは普通に考えれば考えつくものだし、気になれば調べればいいだけのこと、と思って全然ちゃんと聞いてなかったけど、そのときはデータ構造とアルゴリズムをなぜ学ぶ必要があるのかわからなかったから仕方がない気がします。少なくとも大学に入ってから1年間の授業を受けているだけでは必要性に気づくことは不可能だった気がします、大学というのは自分から学ぶものだと言えばその通りで、そういう意味ではいいんだけれど、ではそれを必修科目とすることには疑問はあります。あとデータベースのこととか、必要を感じたことがなかったら勉強しても普通おもしろくないし、全然覚えられないと思います。

こういう本を読みたいけど、今は『よいこの君主論』というおもしろい本を読んでいて、これは信頼している人におすすめされた本だし、読み始めたらおもしろい雰囲気がするのではやく読み終わりたいです。

この本はなんとマンガ化されていて、そのことはさっき知ったんだけど、だったら読むのに時間がかからないマンガ版を買っても良かったかもなと思っているところです。