2008-12-01から1ヶ月間の記事一覧

今年買ったゲーム

巷では恒例行事のようなので試行。 タイトル プラットフォーム ジャンル 進行度 東方夢終劇 同人PC 弾幕シューティング ノーマル未クリア 東方緋想天 同人PC 対戦アクション ちょくちょくネット対戦 うみねこのなく頃に第2話 同人PC サウンドノベル クリア …

あけました

空間分割を取り入れる前になんとかしてもうちょっと高速化したいと思って考えていたが進捗なし。 とりあえずおめでとうございます。

衝突判定マジ重い

デバッグビルドだとアホみたいに重い。弾100発くらいでFPSが60を切り始める。 判定対象は自機ひとつだけなので判定回数は100そこらなんだが。VSYNCなら30FPSに落ちてスローになるからまだマシだが、タイマだとフレームスキップするんでもう飛びまくりで、デ…

PCが落ちる

今日だけで2回ブルースクリーンになった。やっぱメモリか?

衝突判定を実装

とりあえず力技で。 まだ作りかけでいろいろバグってる上に遅い。

描画だなあやっぱ

弾情報の受け渡しでvectorにpush、popするやり方を固定配列にしようと思ってたのを完全に忘れてた。 そこで実験。 描画を背景だけにして、1000万の弾情報要素を出し入れするのにかかる時間を測定。 手法は次の4種類。 1.静的に確保した固定配列 CBulletInfo …

字下げなくした

はてなのデフォルト(このデザインのデフォルト?)だと段落で字下げされてしまい、箇条書きの部分などが飛び出してかっこ悪かったのでなくしてみた。やり方はこれ。

なんというVC++初心者

VC++のショートカット Ctrl+spaceとF5とF7とF10とF11くらいしか使ってなかったぜー。 Ctrl+左右 トークン単位移動 Ctrl+Shift+左右 トークン選択 Alt+Shift+上下左右 不思議な範囲選択 Ctrl+上下 上下スクロール Ctrl+] 対の括弧に移動 Ctrl+J メンバ候補表…

ああ・・・次は衝突判定だ・・・

適当な弾幕パターンも3つほど作れたので、いよいよ衝突判定だ。 ブロック崩しのときのように、それぞれのオブジェクトタスクの更新メソッドの中で自分と対象の座標を参照して判定する、というのはちょっとダサいので、衝突判定を専門に行うタスクを別に作っ…

三角関数テーブル実装

頭が固くて、精度とかスケーリングとかそういう話を上手く理解できない。 まず訂正から。yaneSDKのatanは65536分割と書いたが、出力の角度を1周で0から65535としているだけで、それを65536に分割しているわけではなかった。 yaneSDKでの実装は下のようにな…

実験

vectorにpushしてpopする方式でやってみた。 環境 Core2Duo E8400 RADEON HD4850 DDR2-800 2GB 結果。1フレームあたり4000発くらいになるとFPSが60を切り始める。つまり余裕だね。こんな環境で参考にしてちゃダメだね。大体何FPSくらいまでならOKという基準…

ボス弾幕の設計案

とりあえず力技でやる設計を考えた。 弾の情報(初期位置、速度、タイプなど)を格納した構造体のリストを共有データにしておいて、弾幕を生成するタイミングになったらボスタスクがそのリストに弾情報をpushする。そんで弾タスクがリストを調べて、要素があ…

FPSの話〜完結編〜

そもそもどういう問題であったかおさらいする。 60FPSを実現するためには1フレームを1000/60=16.666…msに区切るように時間待ちをしなければならない。しかし、timeGetTime()などの一般的に使うタイマ関数では1ms単位の時間しか取得することができない。では…

すすまねー

ということで今日はFPS調整の実装を完了しただけになってしまった。 次はボスの弾幕を出したい。が、どうやればいいんだろう・・・。 自機ショットみたいに3発ずつしか出ないならトリガを3個共有データとして用意すればいいんだが、弾幕となるとそうはいかな…

弾でた

とりあえず自機のだけ。あと今までFPS調整がVSYNCオンリーだったのをタイマ同期もできるようにした。 今は少数を切り捨ててやってるので16ms固定になってるけど、整数にして誤差が積もらないようにする方法もやっとわかったっぽいので、明日作る予定。以前か…

EEの敵みたいに

ボスをくるくる回してみた。それだけ。なんという実装の遅さ。 共有しないローカル変数もデバッグウィンドウに出せるようにした。よく考えたらデバッグウィンドウクラスはシングルトンにしてたので渡すなんざ容易でした。 ただしローカル変数の保持元が消え…

弾幕シューティング製作本格的に開始

とりあえず自機とボスを表示するところまで。 ソースはバーやボールなどのキャラクタオブジェクトタスクの部分だけを自機とボスに差し替えれば動いた。 内容が簡単なうちはこういう各モジュールの独立性を維持するのは簡単だけど、この先に崩れていかないよ…

ということで進まず

VisualStudioをインストールしなおさないといけなかったので・・・。 その前に先日完成したブロック崩しをちょっと動かしてみようとしたら動かない。そういえばVC2005はランタイムを入れとかないとダメなんだったな・・・VC開発者が見る分には入ってるからい…

PC新調

Core2Duoも出切ったっぽいし、DDR2メモリもそろそろ底値っぽいし、グラボもコスパのいいのがでてるみたいなので、安定して移行するチャンスが来たと思って決行。 CPU Core2Duo E8400 16,980 マザーボード GIGABYTE GA-EP45-UD3R 14,780 メモリ ノーブランド …

昨日今日と進捗なし

なぜかというと、新しいPCをセットアップしていたため。 手際が悪いのか、組み立てもインストールも時間がかかってしょうがない。

2.5D弾幕シューティング

まず先に。ブロック崩しのバイナリとソースをうpしたのでほしい方は昨日の記事をば。 で、次の作品は見た目3Dシステム2Dの弾幕シューティング。まずはラフイメージ。 赤でjpgはマズイと思ったときにはすでに保存していた。 これだけじゃ意味不明なので仕様…

見た目だけ3Dブロック崩し完成

まだ衝突判定とか不自然なところがいっぱいあるけどとりあえず区切り。 赤球はライトで表現。 DirectXでマウスのスクリーン座標やクライアント座標の取得ってできないのか。 WindowsAPIでできるから問題はないんだけど、ちょっと気になる。 さて、明日からは…

もう少し

クリアとゲームオーバー判定作り中。ついでにソース整理。せっかくswitch-case文の羅列を防ぐ仕組みを入れていたのにswitch-case文を使おうとしていた。なんなんだ。あとやること。 操作をマウスに変更 ボール貫通モードの色付け クリアタイム計測 できれば…

また細かい話

ブロックがボールに当たって破壊されたとき。 ブロックのタスクオブジェクトそのものをdeleteするべきなのか ただフラグを立てて非表示状態にしておけばいいのか 答えは状況によりけり? フラグ管理が面倒ならdeleteしちゃってもいいし、オブジェクトの生成…

ねみー

12時〜1時には寝ないと次の日ろくに活動できない自分は普通なのかそうじゃないのか。 作ったもの。 DirectXフォント表示を作って、それ使ってFPS表示を作った。 クリア・ゲームオーバー判定を作りかけ。 ボールが自分の座標を判定して自分で「ゲームオーバー…

Mitakaすごい

関係ないけど、Mitakaっていう宇宙ビューアがすごい。 地球から飛び立って太陽系銀河系その外まで思いのままに見られる。 膨大な量の天体データが入ってて、一瞬で宇宙全体どこにでも行けてまさに神気分。 ただし500MBくらいメモリ食ってCPUもぶん回し続ける…

デバッグウィンドウ

とりあえずできた。 例の共有データモデルで共有されているオブジェクトならいくらでも見られる。ローカルの変数を見たかったらまたちょっと考えないといけないか。 描画方法はウィンドウプロシージャを介さず毎フレーム呼び出し。Rectangle()でクライアント…

早寝

昨日夜更かししすぎたせいで一日中頭が痛かった・・・ ただ長く寝ればいいってもんじゃなくて、眠りに就く時刻が一定じゃないと休息にならないのよね。 いったんリズムが崩れるとしばらく響くからなあ・・・今日は早く寝ることにする。 次のゲームのネタでも…

デバッグウィンドウ

今日もあまり進まなかったぜ・・・。 しかしGDIでウィンドウに綺麗に文字を書くってのはどういうのがセオリーなんだろうな。 別のウィンドウで隠れたりしても汚くなったりしないでとか。 単に毎フレームウィンドウ全体を塗りつぶして文字書けばいいのかな。 …

デバッグウィンドウ作成開始

ちょっと面白いことがあったんであまり作業がはかどらなかった。 変数をリアルタイムに表示するデバッグウィンドウを作りはじめた。 WindowsAPIでウィンドウに文字を書いたりするようなプログラムとかはじめてだ。入門サイト見ながら格闘中。