Admin * New entry * Up load * All archives 

C++&DirectXでプチプチゲーム制作をしています。文章力?気合で乗り越えるさ。

 

旧 ゲーム的な何か。

01«1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.»03
2009年02月の記事一覧

« 01月     03月 »

Posted on --:--:-- «edit»

Category:スポンサー広告

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

tb: --     com: --

go page top

Posted on 23:06:35 «edit»

Category:異境

レーザーーー 

レーザーを表示するだけ

ハートフェルトファンシーに合わせながらスクショ撮影。
レーザーの表示だけ作りました。ホントは数日前に終わる予定だったのですが。。
エラーにならない致命的なバグがいくつも出てきた挙句、ここまで遅れてしまいました。

スクショの表示でわかると思いますが、発射時に少しずつレーザーが出てくるようになってますね。
理論はわかっていたのですが、バグのせいで頭がこんがらがって。。数時間前は頭痛でねているほどでした。

思えば試験も近いので、この辺で暫く保留ですね。
あぁ。。時間がない。

ではでは。
スポンサーサイト

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

Posted on 01:32:26 «edit»

Category:雑談

新作、発表されましたね 

試験1週間前切りましたがいつも通りのSignalです。
東方の新作の発表がありましたね。「東方星蓮船」だそうで。
ついにUFOか。。副主人公が咲夜→早苗と転換を果たしまして、また違った世界になりそうですねぇ。
個人的には得点の要素が変わったり、難易度調整がよさげになっているところが気になります。

例大祭には行きませんが楽しみです。友人から借りようかな。

それにしても神主さんは流石ですねぇ。こっちはやっとの思いで作っているというのに。あの製作ぺースは尋常ではありません。

さて、異境の方なんですが、今レーザーの実装を行っています。
出現、回転の処理が煩雑になってしまうので今までとは異なる処理をしたりして、忙しいです。

ではでは。

テーマ: 日記

ジャンル: 日記

tb: (0)     com: (0)

go page top

Posted on 01:04:45 «edit»

Category:異境

角度指定弾実装 

今日英検準2級の面接受けてきました。
1問盛大に間違えましたがそれ以外はOKでした。
面接直前に今日実装する関数のメモを書いていまして、準備なんかしてませんでしたからねぇ。

今日の成果はこちら。

角度指定弾

敵が5way弾を放ってきます。弾の方向は進行方向通りになっています。
で、ショットかビームが当たると赤いエフェクトが散って、爆発時は丸いエフェクトが広がります。

いやー。これで処理速度を落とさずに回転させられましたね。(ビームの表示がおかしかったので無理やり補正するなどしてますが)
後々ネックになるか心配ですが、とりあえずうまくいきました。

uv座標って、
(0.0, 0.0),(1.0, 0.0), (0.0,1.0),(1.0,1.0)
という4つの変数で指定するので、コードが非常に複雑です。

//回転の中心から各頂点への距離を求める
float
disuv = sqrt(pow(pu - u, 2) + (pow(pv - v, 2))),
disduv = sqrt(pow(pu - du, 2) + (pow(pv - v, 2))),
disudv = sqrt(pow(pu - u, 2) + (pow(pv - dv, 2))),
disdudv = sqrt(pow(pu - du, 2) + (pow(pv - dv, 2)));

//角度を求める
float rad = D3DX_PI*2*-dir;

//各uv座標を求める
float
uvx = pu + sin(-rad+atan2(u-pu, v-pv)) * disuv,
uvy = pv + cos(-rad+atan2(u-pu, v-pv)) * disuv,
duvx = pu + sin(-rad+atan2(du-pu, v-pv)) * disduv,
duvy = pv + cos(-rad+atan2(du-pu, v-pv)) * disduv,
udvx = pu + sin(-rad+atan2(u-pu, dv-pv)) * disudv,
udvy = pv + cos(-rad+atan2(u-pu, dv-pv)) * disudv,
dudvx = pu + sin(-rad+atan2(du-pu, dv-pv)) * disdudv,
dudvy = pv + cos(-rad+atan2(du-pu, dv-pv)) * disdudv;

//構造体にデータを入れる
theCUSTOMVERTEX vertex[6]={
{D3DXVECTOR3(x-dx/2.0f, y-dy/2.0f, 0.0f), 1.0f, color, uvx, uvy},
{D3DXVECTOR3(x+dx/2.0f, y-dy/2.0f, 0.0f), 1.0f, color, duvx, duvy},
{D3DXVECTOR3(x+dx/2.0f, y+dy/2.0f, 0.0f), 1.0f, color, dudvx, dudvy},

{D3DXVECTOR3(x+dx/2.0f, y+dy/2.0f, 0.0f), 1.0f, color, dudvx, dudvy},
{D3DXVECTOR3(x-dx/2.0f, y+dy/2.0f, 0.0f), 1.0f, color, udvx, udvy},
{D3DXVECTOR3(x-dx/2.0f, y-dy/2.0f, 0.0f), 1.0f, color, uvx, uvy}
};

描画処理etc...

どうでしょうか。この羅列。個人的に頭がくるいそうでした。なによりコードの書き方が下手で下手で。
uvが左上の指定、duvが右上、udvが左下、dudvが右下です。
回転させる中心であるpu,pvも加えられています。
四角形をある1点を中心にして回転させるといえばいいでしょうか。

まぁなんとか行ったのでよしとしましょう。
後ショット関係で実装すべきはショットの消滅時のエフェクトぐらいですね。
これからそれをやってきます。

ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (1)

 Re: 角度指定弾実装

MIDI打つの楽しいね!勝手に指が動いちゃうんDA☆

さて、それはさておきだな、レーザーの画像についてだ。中心を他より赤い(明るい?)細い線にすれば少しは見栄えがよくなると思うんだ。

その理由としては、お前にも分かるように説明するのなら、銃ってのは普通に考えると狙いが分かりづらいだろ?それを改善するためにレーザーポインタを付けることがあるんだな。そうしたら、少しは絵がマシになるんじゃないかと助言。

  by お箸侍

Comment-WRITES

go page top

Posted on 03:48:00 «edit»

Category:異境

少々 

角度変更

こちらはバグではありませんよ。角度変更の実験です。
今のところすべての画像が45度回転しています。

FVFのフォーマットで座標変換済み(XYZRHW)を使うと回転等の設定ができず(ただ画像を板に張り付けるぐらいしかできない)

ならば座標変換前にと戻してみたところ処理速度ガタ落ち、使い物にならず

今日あれこれ調べて結果、貼り付ける画像のuv座標(使用部分の切り抜き)で調整することに(つまり戻ってきた)

という次第です。弾を1000個も使えばその他のエフェクト等も使って実質数千のタスクが60分の1秒に動くことになりますからね。やや荒っぽいですがそれで何とかなるでしょう。
画像をスペースに余裕を持たせて作ればいいだけですし、回転する必要のある弾は癖のある形をしてませんしね。

ちなみにショット・ビーム接触時のエフェクトはとりあえず実装済みです。もう少し手を加えないと違和感ありますが。

今日はやる気が起きなかったのであす以降それを手軽に使えるように関数を作らなければいけませんね。眠いので寝ます。

ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

Posted on 02:47:31 «edit»

Category:異境

パーン 

敵の爆発その1

とりあえず敵の爆発エフェクトをとりあえずつけました。敵の体力がなくなると爆発します。
もっとも爆発なのか微妙なぐらいのものですが。
エフェクトのアイデアは紅魔郷からです。あまりにもしょぼいので工夫するつもりですが、これまた面倒なんですよね。物理はややこしくてあまりやる気になれません。もっともやらなければ不精者ですが。

ちなみに敵はすべて5wayの自機狙いです。簡単にway弾を作れる関数を作ったので応用が効きますね。

その他追加点としてはビームの情けない黄色を赤色にしたこと。ビームとかレーザーって三原色しかないんですね。兵器関係の知識もちの友人には恐れ入ります。

今からショット・ビームが敵に接触したときのエフェクトを作ってきます。

ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

Posted on 02:49:10 «edit»

Category:雑談

レポート終了 

ただいま午前3時10分前です。
レポート仕上がりました。枚数少ないとはいえ書き始めたのが提出2日前の夜ですからねぇ。。
とりあえずこれでプログラミングを再開できます。

今のところ敵本体は実装終了。爆発のエフェクトを考えないといけませんね。

ではでは。

テーマ: 日記

ジャンル: 日記

tb: (0)     com: (0)

go page top

Posted on 21:58:31 «edit»

Category:異境

チョイ修正 

特別重要なことでもないので短めに。

驚きの白さ再修正

昨日のスクショよりより鮮やかに。
忠実に近い弾幕になりました。
その分避けにくくなりましたが。本家はばらまき弾の構造がやや違うみたいですね。面倒なので単純に済ませてます。

父親、母親ともにこの弾幕を見られたのですが、
父…ドロドロ血液みたい
母…細胞分裂みたい
うーん。やはりこの手のものはイレギュラみたいですね。そもそも弾がゆっくり出るシューティングって何だろう。

まぁこの際構いません。

ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

Posted on 22:11:00 «edit»

Category:異境

驚きの白さ 

驚きの白さ!
おそらくインパクトはトップレベル。霊烏路空の第一スペルの再現でございます。 

地霊殿クリアの喜びを引きずって思わず作成。
加算合成するとやはりきれいですねぇ。重なれば重なるほど明るく。
ちゃっかり4難易度分作ってあります。画像はLunatic。

ホントは1面ボスのキャラ設定を決めるつもりだったんですけどね。。
弾幕作りは楽しいものです。

レポートもあるし、キャラ作りもあるし、何を優先しようかなぁ。。

ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

Posted on 23:15:21 «edit»

Category:ゲーム

ちゃっかり 

久しぶりにプログラミングから外れて。
今日はレポートのための取材に行ったりなんだったりでした。
うーん、鼻の調子が悪い。

本題に入りましょう。

今日久しぶりに心と時間の余裕が出来たので東方をやってみたんですね。
プレイしたのは地霊殿のHard。Extraはパターン化する気力がないのでスルーしてます。
まぁ、数回1面で死んでようやく軌道に乗ったかと思ったら
残機2つ残して初クリアしました。
いやー。驚きですね。Hardで6面到達したのが2回。双方お空のニュークリアエクスカーションで死んでいたわけですが、今回それ以降アドリブ状態で何とかクリアしました。

抱え落ちも1回。風神録と違いパワー不足に泣かされましたがなんとか最低限の被弾で済みました。
ちなみに地霊殿の難易度別のクリア年月日を見ると、
Easy:2008年9月3日
Normal:2008年9月5日
Hard:2009年2月10日(今日)
やはりHardは比べ物になりません。

まぁこれでHardクリアは風神録、地霊殿の2つになってへたれHardシューターを卒業できたかな。

おそらく異境の難易度設定も基礎難易度は私の実力であるHard基準になるかと思います。
Lunaは友人のルナシューターにテストを任せます。流石にあれは無理。。
今度の目標は永夜抄Hardですかね。

ではでは。

↓なんとなく拍手レスの返信は続きで書くことにしました。

テーマ: ゲーム

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

Posted on 21:02:20 «edit»

Category:プログラミングとか

描画問題解決 

やっぱり最後は熟達者に聞くに限りますね。
ただ質問の後にいつもとんだボケをかますSignalです。
素で勘違いするのはいつになったら治るのでしょうか。。

まぁそんなことは置いときまして、お陰で描画問題が解決しました。
線型補間と呼ばれる、まぁいわゆる1ドットより小さい精度で疑似的に描画する機能を使う事で弾が震えているようにみえたり、なーんて事はなくなりました。

なんとなく記念に。整然と並んでますね。
適当弾幕
これからは敵の作成に、と言いたいところですがレポートが。。
明日レポートのための取材がありまして。いろいろ手間がかかりますね。まぁ仕方がないでしょう。

ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

Posted on 23:56:12 «edit»

Category:プログラミングとか

処理速度検証 

5000弱の弾

素晴らしいですね。このスクショでは5000個近い弾が表示されています。処理落ちなし。
あるサイトで見つけたコードを組み込んだ結果こうなりました。
先日話していたDrawPrimitiveUPの呼び出し回数もだいぶ減っています。(同じテクスチャを使いまわしているため、弾の表示に関して言うと約5000回→30数回)

ちなみに高速化前のプログラムではFPSが48程度しか出ませんでした。
どうやらタスクが増えれば増えるほど効果が増すみたいです。

コードが少々汚いのでそれさえどうにかすれば高速化完了ですね。遅くなったらまた新たな処置を考えればいいでしょう。

ちなみに上の弾幕ですが、方向弾と加速度の組み合わせだけで出来ています。ほかにも数種類似たのを作ってはありますがアップロードが面倒なので省略します。

ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

Posted on 00:01:58 «edit»

Category:異境

高速化。 

なかなかシューティングゲーム自体の組み立てに入れないSignalです。
まぁ簡単に言いますと、処理速度が遅くて実用にならないわけです。
昨日の発言をすべてひっくり返した気がしますが、まぁまぁ。
今日はプログラム関係の話を。

この後エフェクトにしろ何にしろどんどん画像(ポリゴン)の表示枚数が増えるわけで。。ひたすら高速化です。

とりあえず今日はビルボードをカメラに向ける、なーんていうどうでもいい処理を省いて座標変換済みのデータ処理にしました。
まぁFVFの設定をD3DFVF_XYZからD3DFVF_XYZRHWにして微調整を加えただけです。
もっともこれで早くなったわけではないみたいですね。ついでに整理したのでコードは大分減りましたが。

今のところ大玉640個の表示が精いっぱい。それ以上だと家のデスクトップで処理落ちが出ます。おそらくスペックの低いPCだと300個ぐらいで悲鳴あげそうです。

たぶん原因としては、

テクスチャの重ね合わせの設定

theDevice->SetTexture( 0, g_pBillboardTexture[texType] );

theDevice->SetFVF(kD3DFVF_CUSTOMVERTEX);
theDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, vertex, sizeof(theCUSTOMVERTEX));

この処理を毎回繰り返しているからでしょうね。上の3つに関しては省略可能なので、そこを減らすだけで相当軽くなるはずです。
後やることとしてはDrawPrimitiveUPの呼び出し回数を減らすことでしょうね。
どうやらバッファにデータをいくらか蓄えてまとめてDrawPrimitiveUPで描画、という方法で呼び出し回数を減らせるみたいです。

大玉1500程度が処理落ちせずに表示されたら作業再開するかと思います。
ホントは弾の画像等は一枚にまとめてその一部を指定して描画、にすれば軽くなるんでしょうがその画像もありません。。
まぁ暫く。

ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

Posted on 21:11:45 «edit»

Category:異境

とりあえーず当たり判定を 

今日も休みだったのでプログラミングに充てました。
あぁ。。明日から授業か。この頃学校の勉強から離れっぱなしです。
まぁいいでしょう。まずは成果の方を。

被弾前
当たり判定処理通常時

被弾直後
当たり判定処理被弾時

復活時
ふっかーつ

当たり判定は円形で作ってあります。当たり判定が接触して耐久力が0になった時に爆発処理に切り替え、爆発のモデルを4つほど重ねて、それをだんだん薄く、大きく表示します。
復活時は点滅表示させて3秒間無敵状態になっています。

爆発なんか適当ですね。とりあえず持ってきただけですので今後どうにか。。

ただ問題は時間制御と表示の震えです。

時間制御の方ですが、どうやら現状では完全に解決できない問題らしく、
・処理落ちが激しい
・FPSが60を少し超える
・画像がちらつく
のどれかを背負わなくてはいけないみたいです。
Vistaだと解決できるみたいですが。。Vistaなんて使わないしそれではXP以前で使えないわけで。。

可変FPSも難しそうですし、とりあえず体感でよさげなのを使います。

さらに表示の震え。
これは本当にまずいです。弾がぶるぶる震えて表示されているわけで、これではゲームになりません。
サンプルプログラムを引きずっている関係で座標変換をコード内で行っているわけですが、それがいけないのかなぁ。。小数点の丸め当たりでずれが生じるのかも。
またしばらく見た目の変化がなさそうですが頑張ります。。

ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (1)

 Re: とりあえーず当たり判定を

乙。
背負わなくてはならない枷はFPSが60を少し越えるっつうのが一番マシかもね。
初めからその速度ならその速度に慣れるだろうし、遅くなる分には問題ないでしょう。残り2つよりは目立たないだろうしね。
こちらもキャラ設定の部分更新しておこうかね。

  by お箸侍

Comment-WRITES

go page top

Posted on 21:20:03 «edit»

Category:異境

当たり判定実装中 

時間があればある程無駄に使ってしまうSignalです。
内部の処理で欠陥が嫌というほど見つかってはいますが仕方なく放置しています。
中身の美しさよりもまず外観の美しさを作っていきます。

今日やったこととしては、
円形の当たり判定を作り、それ同士が当たった時に判定を行い、互いの攻撃力で互いの耐久力を削る、という仕組みを作ったことです。

例えば、自機の攻撃力、耐久力を1、弾も同様にすると、お互いの当たり判定が接触したときに、双方耐久力が0になります。
0になった時に自機の破壊処理、弾の消去処理を入れれば完成です。

もっとも、まだその破壊処理はないので、ただひたすら数字が動いているだけです。
それはこれから行うつもりです。ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。