HSPとC++にて製作中のシューティングゲームの開発日記など。
最近はプログラム雑記が多めです。
あけましておめでとうございます。
今年もよろしくお願いしますm(_ _)m
先日、虫姫さま ふたり というSTGを買ったのですが、
中古の初回版で通常版とほぼ同価格で、
サントラ未開封、DLC未開封と、とてもいい買い物でした(`・ω・´)
まだゲームはやっていませんが、そのうちレポート書きたいと思います。
さて、実は去年暮れの話だったのですが、
ある本を読破しました。
ブログ見返したらこの辺に書いてました。
この本はとても分厚くソースを見ながらという形だったのでなかなか時間が
とれなくて放置気味だったのですが、やっと全部目を通し終わりました。
本を読んだ各章の印象などを書いていきたいと思います。
今年もよろしくお願いしますm(_ _)m
先日、虫姫さま ふたり というSTGを買ったのですが、
中古の初回版で通常版とほぼ同価格で、
サントラ未開封、DLC未開封と、とてもいい買い物でした(`・ω・´)
まだゲームはやっていませんが、そのうちレポート書きたいと思います。
さて、実は去年暮れの話だったのですが、
ある本を読破しました。
ブログ見返したらこの辺に書いてました。
この本はとても分厚くソースを見ながらという形だったのでなかなか時間が
とれなくて放置気味だったのですが、やっと全部目を通し終わりました。
本を読んだ各章の印象などを書いていきたいと思います。
Chapter1 はじまりのゲーム
基本部分ではあるものの、かなり詰まった内容でした。
おまけのフラグ、ポインタ関連の話は後で何回か見直すほど
とても重要だと感じました。
Chapter2 点から始める2Dグラフィックス
まずは簡単な点から始まり、それを組み合わせて矩形にしていき
全体に表示していく流れでした。
単純な作業に感じましたが、これが基になっているんですよね…。
Chapter3 描いた絵を使う
ようやくここで、絵を読み込んで表示が出来るようになりました。
ここで使うDDSという画像形式を始めて知りました。。。
フォーマットを見るとガッツリ変数の集まりだということが分かります。
ヘッダーの話もここで出てきました。
去年ちょうど調べてた内容だったので、読んでおけば良かったなと後悔w
今まで当たり前に使ってたアルファがとても複雑だという事も知りました。
式とビットシフトをこんなに駆使していたとは…。
Chapter4 リアルタイムなゲーム
ゲームの入力方式とFPSについての記述が主でした。
入力方式は3つあって、
・押している時間に比例
・前のフレームで押されていなかったら
・一定時間押されていた
これらが混在してますね。
FPSの計測法も載っていなかった方法で計算出来るので、
結構いろいろあるんですよねー。
Chapter5 かんたんなシーケンス遷移
条件分岐のそれぞれの特徴が挙げられていました。
状態遷移だったりシーケンス遷移だったり意味は同じでも
言葉自体統一されてないんですね。。。
ここでの遷移はif-elseとswitchで固めた物でした。
Chapter6 文字の書き方
シングルトンの話が出てきました。
大学のプログラミングの授業では全く出てきませんでした。
重要な事だと思うんですけどね・・・。
最近は当たり前のように文字が出てくるので、内部で数値管理されてるって
忘れそうになる事が多々ありますね。。。
フォントと言えば多くのゲームでダイナフォントが使われてる印象を受けます。
何か理由があるのかしら・・・
Chapter7 はじめてのアクションゲーム
かの有名なあの爆弾ゲームを作りますw
テスト用に調べる時は0、1、たくさんって調べるのは始めて知りました。
ゲームの仕様や課題点を文字として書き出すのは大事ですね。
実際ゲーム作るときには結構やってました。
Chapter8 平面の衝突処理
バウンディングボックスの話が出てきました。
壁にはまらないようにしたり、複数との衝突考えたり、
いろいろ問題点が出てきて、頭が痛くなりますね。。。
Chapter9 いろいろな入力装置
マウス、キーボード、ジョイパッドの扱い方が出てきます。
さらりと進んでいきますが、実際掘り下げてくと、
PS2/USB形式だとか、ボタン配置だったり、複数のコントローラーの
話だとかいろいろあるんですけどね。。。
(ボタン配置は○×が海外だと逆なのは出てましたね)
Chapter10 少しマシなシーケンス遷移
ようやくクラスで状態遷移を管理する話が出てきます。
かなりソースはスッキリするものの名前空間で分ける部分は
結構複雑に感じました。
分業体制だと必要になってくるのでなんとか習得したいですね(`・ω・´)
あぁ、早くこれを使ったゲームが作りたい・・・。
Chapter11 音を鳴らす
音の扱い方をサラリとやります。
おまけの音を作る部分が斬新でした。
一定周期だと何も感じないのに曲作ると凄いですねー。
Chapter12 回す、伸ばす、動かす
ローテート、スケール、トランスレートですね。
3Dソフトやってるので、こっちの方がシックリ来る。。。
一つの点ごとに計算を適用していって、
全体が動いてるように見える。
これが、内部では複雑な事やってるなぁ、と感じました。
Chapter13 ハードウェアのパワー
前章でやった内容をハードウェアにやらせます。
恐ろしくコード記述も簡単になって、表示も滑らかになって、
グラフィックハードウェアの偉大さを思い知りました。。。
=== ここまでが2Dの内容 ===
Chapter14 立体を描く
3Dの基本部分をやります。
基本は2Dの延長ではあるものの、カメラの概念が増えて
ちょっと複雑になってきました。
ここもハードウェアを使いますがCPUを使ったら、
恐ろしく重くなりそうですね・・・。
Chapter15 ライブラリの作り方
これまで扱ってきた部分を抜き出して一つにまとめてしまう事で
作業を楽にしようという内容でした。
使う人の事を考えたライブラリ製作はまだまだ難しそう。。。
Chapter16 XMLモドキを読む
構文解析ですね。
行から字句を取り出していき、
それをswitch分岐でそれぞれの処理を行っていく内容でした。
記述間違いをどうするかは、深刻な問題だなと感じました。
Chapter17 遅くないコードを書くために
様々なアルゴリズムを駆使して、計算負担を軽減していく内容でした。
常にアルゴリズムを適用したら良いと言うわけではなく、
時と場合によって、使い分ける必要があると言う事は
肝に銘じないと・・・。
Chapter18 立体の衝突処理
球、三角形、線分と2Dとはまた違った判定方法が出てきます。
60FPSを維持するためには計算量は限られてくるので、
重くなると不都合が生じる難しい部分だと痛感しました。
Chapter19 ロボファイトの設計
ここまでの内容を基にゲームとして組み立てていきます。
AIの話がちょっと出てきますがサラリと流れちゃいます(´・ω・`)
Chapter20 光が当たるということ
光を入れて明るく表示させる内容です。
モデル自体もどの見え方で作ったかと言う事も関わってくるので
様々な部分を知る必要があるんだなと感じました。
そして実際は削る部分がたくさんある事もわかりました。
Chapter21 キャラクターが動き出す
アニメーションをやります。
基本原理として、ある部分とある部分の差を求めて補完していく形です。
そのままだと不都合があるので階層を作っていって、追従させる部分が
とても複雑でした。3Dソフトと連携させようとすると更に複雑に
なるんですよね・・・。
ここはまだまだ勉強中。。。
Chapter22 遅くない衝突検出
当たり判定をソートや分割を使って、
計算しなくてもいい部分を作り、簡略化し、高速化する内容です。
Chap18と比較するとかなりの高速化が実現しています。
Chapter23 ローディング
データをどのように分割して読むかといった事や、
ファイルの圧縮、暗号化、マルチスレッドについて取り扱っていました。
マルチスレッドはデータベースと同じような問題点を含んでいました。
最近は端末が発展したと思っていてもほとんど変っていない部分があるせいで
読み込み問題がなくならなかったんですね。。。
最近はメディアインストールが当たり前になってきてますけどね。
Chapter24 floatの使い方
float型の問題点が挙げられています。
DirectX系の引数はfloat多いんですよね・・・。
SOW ZFを改めて見直してみましたが、
ほとんど実数はdoubleでやっていました。
この辺の内容もプログラムの授業ではノータッチ。
なんだか重要な部分を教えないのに疑問を感じますけどね(´・ω・`)
Chapter25 付属ライブラリ本番仕様
ライブラリの各機能を紹介する内容でした。
Chapter26 バグとの付き合い方
論理矛盾、人為的、技術的の3つのタイプのバグにどうしていくかが
挙げられていました。
実際に直していけそうなのは人為的部分なので
どうしていくか考えないといけないですね・・・。
Chapter27 もっと先へ
本で取り扱っていなかった内容と参考文献が挙げられていました。
800ページ越えでもまだまだ扱っていなかった部分がたくさんありました。
個人的にはAIの部分をもっと知りたかったです。。。
====== ここまで =====
以上書いてきましたが、とっても読み応えのある本でした。
もっと、多くの事知りたくなりました(`・ω・´)
ではまた~
PR
Comment
この記事にコメントする
Trackback
この記事にトラックバックする: |
カレンダー
カテゴリー
カウンター
最新コメント
最新記事
(11/23)
(10/24)
(09/13)
(09/06)
(08/30)
プロフィール
ブログ内検索
最古記事
(02/12)
(02/18)
(03/19)
(03/26)
(08/10)