トップページgamedev
1001コメント335KB

シューティングゲーム製作技術総合 3機目

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。04/06/16 07:45ID:u0+hin61
ゲームプログラマなら誰もが通る、もしくは、通った道。青春の香り?
それは「シューティングゲーム製作」・・・。

このスレでは、そんなシューティングゲームの製作技術や技術の検証、成功談
失敗談笑い話、難易度の設定方法論、多弾の是非などについて語り合いましょう。
もちろんBulletMLなどで弾幕を作成してみたり、自分の作ったシューティングを
晒してみたり、プロジェクトをはじめてみるなどもOK!

ただし、シューティングの未来とか既存のゲームの話題などは、関連する他の
スレでやってくれ。

■前スレ
シューティングゲーム製作技術総合 2機目
http://pc5.2ch.net/test/read.cgi/gamedev/1073736474/
0004名前は開発中のものです。04/06/16 08:04ID:OUlSC7/A
3機目か……これで最後だな。
0005名前は開発中のものです。04/06/16 08:07ID:QUEElok0
エクステンドするかもしれないだろ
0006名前は開発中のものです。04/06/16 09:15ID:xv1+oWoW
>>1
乙。
0007名前は開発中のものです。04/06/16 16:00ID:dHciVOoi
シューティングマニアックスはいまいちですた
…読まないと得られない知識ってあるかね。。
0008名前は開発中のものです。04/06/16 18:38ID:KTvNF9aV
いまいちでもよんどくか…
0009名前は開発中のものです。04/06/16 18:41ID:Zcc4AjKX
ステージの組み方とかありました?
前にスクリプト組めって言われたけどいまいちわからないので
そのあたりの解説があれば買ってみようかと
0010名前は開発中のものです。04/06/16 20:23ID:cW2KlvaD
>>9
お手軽路線で lua を活用してみてはどうだろう。↓ム板のスレ
http://pc5.2ch.net/test/read.cgi/tech/1063711237/l50
俺スクリプト言語でイクならboost::spiritでもいいし。
0011名前は開発中のものです。04/06/16 20:53ID:dps5ZX6q
シューティングマニアックスに書いてる内容は、
プログラミング初心者の自分でもちょっと考えれば分かる事ばかりだった。
弾の動きなんてせいぜい高校数学レベルの内容だし。
そんなんじゃなくて、DirectXの基礎を理解してることを前提に、
簡単なシューティング丸々一本作り上げるような本があると嬉しいんだけどね
自分独習なので、クラス設計とかその辺の、他人のやり方が見てみたい
0012名前は開発中のものです。04/06/16 21:07ID:MQ3eZ9iG
正直、シューティング作ってて困るのは技術的なことよりも
センスとデザインなんだよな。そもそも俺全然シューターじゃないし・・orz

あれこれ意見出してくれるシューターがスーパーバイザとして
ついてくれるのが理想なんだろうけど。
0013名前は開発中のものです。04/06/16 21:11ID:cW2KlvaD
>>11
そこでやねうらお本ですよ。
0014名前は開発中のものです。04/06/16 21:47ID:zk5P+Zz/
>>12
シューターじゃないってのはシューティングが上手くないって意味?
それとおもシューティングをよく知らないって意味?
後者なら、なんでわざわざシューティング作ってるのか聞きたい。

まあそれはそれとして、あれこれ意見が聞きたければこのスレで聞けば
良いんじゃない?
0015名前は開発中のものです。04/06/16 22:35ID:Rgan57PD
世界で一番厳しいアドバイザが殺伐と勢ぞろい。
0016名前は開発中のものです。04/06/16 22:59ID:QG4pPmGK
シューティング苦手なら、シューティング苦手な人向けのシューティングを作ればよいと思われ。
下手にシューティング野郎が作ったシューティングより受けるシューティングになるかも知れん。
つーかシューティング多すぎ。
0017名前は開発中のものです。04/06/16 23:01ID:WJ+js66x
式神みたいなのとか?
あれって、俺の周りだとシューター仲間以外にだけ人気ある。
0018名前は開発中のものです。04/06/16 23:06ID:cW2KlvaD
>>12
そこで脱衣シューですよ
0019名前は開発中のものです。04/06/16 23:52ID:QUEElok0
自分でシューティングをやらないと
どういうシューティングが面白いのか分からない
ということかと
0020名前は開発中のものです。04/06/17 00:05ID:vb9IU+Ma
レイストームに感動してこの道に引きずりこまれた口だが
じゃあなにをどうやったらあんな感動が得られるのが創れるか
って言われると、未だにわからんよorz
0021名前は開発中のものです。04/06/17 00:19ID:7ad3p1xT
>>20
多分作品云々より、プレイヤーの精神状態とか今までやってきたゲームとかの
影響のほうが重要と思われ…
0022名前は開発中のものです。04/06/17 10:37ID:yXhfkS1k
昔から言われているものの未だに決定版が出現してない
「互いに向かい合って撃ち合う」タイプの対戦型STGですが、
やはり最大のネックは敵CPUのアルゴリズムなのでしょうか。
0023名前は開発中のものです。04/06/17 13:20ID:7ad3p1xT
アップルのARCHONがそれに近いw
サイドビューだけど…。
0024名前は開発中のものです。04/06/17 13:22ID:TJI/qepq
どうなんだろう。チンブレにしろTSSにしろ、決定版といえるほどの完成度はある気がする。
でも対戦格闘のほうが楽しいし、普通のSTGのほうがさらに楽しいが。

チンブレの高次面CPU相手に初心者が毎回同じ場所でやられて投げ出す問題は、
・大ダメージ攻撃の場所を憶えきれない
・どう駆け引きなのかがわからない (序盤の面は普通のSTGと同じ感覚で勝てるため駆け引きを学べない)
あたりが原因か?
0025名前は開発中のものです。04/06/17 13:35ID:pdvW+yJp
最初の2行に関しては知らないが
3行目の敵キャラプログラムが最大のネックという話は疑問だな。
 
洋物FPSのBOTプログラムについて調べてみてはどうだろう。
キチガイじみた強さと人間臭い行動をする作例は少なくない。
浦島太郎の気分が味わえるかもしれないぞ。
00262504/06/17 13:35ID:pdvW+yJp
ワリ。>>25>>22へのレスね
0027名前は開発中のものです。04/06/17 15:11ID:oW8I/UQn
洋物FPSのBOTがどんなロジックで動いてんのかは知らんが、
学習型にするというのも一つの手。
0028名前は開発中のものです。04/06/17 16:56ID:VHtkJJnp
学習アルゴリズムだけでコードの7割くらいになりそう
0029名前は開発中のものです。04/06/17 18:12ID:TJI/qepq
対戦格闘なら相手にして楽しめる程度のCPU組むのも比較的楽なんだが、
STGの、おそらく大部分が弾避けに属するようなのは、
実用で作れるんだろうか。今のところ議会制弾幕回避機関が先端か?

BOTをユーザーがプログラミングできるTSSクローンがあったとして、
それのCPUをまともに組めるかどうか。
原作の嘘避け連発があまり楽しくない、というところからこの問題はスタートしてるようだが…。

対戦格闘程度のCPUで十分楽しめるような対戦STGの仕様を組んだほうがいいか?
撃ちと避けが入る以上、かなり無理っぽい気がするが。
0030名前は開発中のものです。04/06/17 18:42ID:UsJOGb+R
対戦STGか
一応「ネットやろうぜ」の時にこれはというのがあったけど、
検索してもほとんど出てこん
0031名前は開発中のものです。04/06/18 01:27ID:pfXTMUD5
おたがい一度に1発しか撃てない対戦STG、というシステムなら、
対戦格闘のCPUと似たような作り方ができるかもな
それが面白いかはワカンネ
0032名前は開発中のものです。04/06/18 02:25ID:bbeJa3m8
ペンギンクンウォーズって対戦STG?
0033名前は開発中のものです。04/06/18 02:48ID:uyuJ/Q8r
オフコース
0034名前は開発中のものです。04/06/18 07:29ID:w3CPdfBj
何となく対戦グロブダーっぽい感じで想像してみるが、確かにうそ臭い回避だけなら比較的何とか
なりそうかもしれない。しかし、位置取りでオプション類を配置したりとか敵回避方向への
先読み弾の発射とかいった事になると、ちょっといい方法が思い浮かばない…
00352704/06/18 14:59ID:xHeZzj8T
>>34

何手先までも読むシューターに追従するのは苦手であるが
例えば10秒間生き長らえるための安全領域探索木なら
それほど大きくはならないし、高速だよ。
00362504/06/18 15:00ID:xHeZzj8T
ワリ。私は>>27じゃなくて>>25
0037名前は開発中のものです。04/06/18 15:16ID:+waD84AQ
あまりベタな弾避けアルゴリズム組むと、常時ドット単位・フレーム単位の神避けとかされそう。
00382504/06/18 15:22ID:xHeZzj8T
>>37
濃密な弾幕の中から「回廊」を見つけ出し「すり抜け計画表」を立てるのは
なかなか骨が折れると思うよ。最初の頃は明らかに行き止まりの「死の回廊」を
見つけ出して得意げに突っ込んでいくから(苦笑
探索ステップに上限を設けるので調整によってはヤケッパチ行動になりやすい。
00392504/06/18 15:25ID:xHeZzj8T
ゴメ。補足すると上記の方法論は厳密には弾除けとは別の部分です。
大局的な振る舞いを決定するためのルーチンです。ボードゲーム的で
面白いよ。
0040名前は開発中のものです。04/06/18 16:22ID:GSQH9Ei4
>>34
普通の偏差撃ち(相手が等速直線運動を続けるという前提のやつ)
でない場合の話か。その辺になると予想(博打)撃ちの世界に入っちゃうんだよね。
#相手が回避できるエリア(円)に満遍なく撒く必殺射撃は除くw
俺がやったことあるのは、相手の回避方向(の癖)を記録してフィードバックする
という単純な方法。たぶん、発展させれば相手の回避曲線まで記録するカンジ
になるんだと思われ。まぁ、STGはモデルが単純化されまくってるからサンプリング
できる要素も少ないし。比較的組みやすいのでは。

>>38
>明らかに行き止まりの「死の回廊」を
>見つけ出して得意げに突っ込んでいく

ワロタ
0041名前は開発中のものです。04/06/19 03:15ID:LIZprrue
縦シューつくってるんだけど、パワーアップ削ろうか悩んでる。
パワーアップあってもあんま意味ないんだよな。
死んでもその場復活でパワーアップアイテム拾ってほぼ元通りになるし…。
0042名前は開発中のものです。04/06/19 03:18ID:MK2Z4Ehq
パワーアップが出ると「パパパパワーアップ」が聞ける!



それだけだけど
0043名前は開発中のものです。04/06/19 04:35ID:5+1QYWlO
パパパパウァアッッ(・∀・)ガイジンサーン
0044名前は開発中のものです。04/06/19 09:04ID:fs4N6NKG
最初からフルパワー状態で、やられてもパワーダウンしない方がいい
攻撃が激しい終盤でやられて、最弱な状態からプレイ汁というのは酷だ
フリーや同人、アーケードでパワーアップ制にしている所は猛省して欲しい
0045名前は開発中のものです。04/06/19 09:33ID:BsxkmCMW
グラディウスとかみたいにフルパワーノーミス前提で作られてるならいいけど
最近の一般人にはノーミスクリアが難しい弾幕シューだとあんまり意味ない気がする
死んですぐにパワーアップアイテム出るならそもそもパワーダウンしなきゃいいし
あとパワーアップなしなら敵の体力の調整をしやすいって利点もあるな
0046名前は開発中のものです。04/06/19 09:57ID:VrZX8wM9
ふと思いついた。
空中でうろついてるパワーアップアイテムが弾を防いだら面白そうだ。
何十発か当たると壊れるようにして、すぐ取るかぎりぎりまで盾にするかのジレンマが。
バランス取りは大変そうだけどな。
0047名前は開発中のものです。04/06/19 10:59ID:UDCH0lYH
最近のケイブとかのパワーアップって単に序盤の弱い状態が強くなるという満足感を
得るための演出なんじゃない? やられても2,3個アイテム出るし。

0048名前は開発中のものです。04/06/19 11:59ID:/MxA8wAn
パワーアップの効果が微々たるものでも、自機の攻撃の見た目の変化がちょっとした楽しみになったりはする
弱い装備でやれることが少ない状態でプレイヤーをシステムに慣れさせ、
本来の複雑なシステムへパワーアップで段階的に発展させてゆく、という方向もある

作りたいゲームの方向によってパワーアップの要不要は大きく変わるし、作っている間でも変わるだろう

シルバーガン、斑鳩、ボーダーダウン…
単純パワーアップを廃したシステムがわかりやすいのって他に何があるかな

>>46
ギミック系にならさほどバランス気にせず取り入れられるかもね
0049名前は開発中のものです。04/06/19 12:28ID:MK2Z4Ehq
式神2もパワーアップ無いよ
ケツイも無いに等しい(死んでも即時パパパパウアッだから)
0050名前は開発中のものです。04/06/19 14:15ID:vQYTTem5
システムがわかりやすかどうかは疑問だが、同人ならOOHかな
最初から特殊兵器てんこ盛り
0051名前は開発中のものです。04/06/19 15:50ID:3Ym24Nqp
最近の縦だと、俺が知ってる範囲ではアーケードSTGでもパワーアップに
意味があるなと思えるのって無いんだよなあ…。
0052名前は開発中のものです。04/06/19 18:02ID:aGErBpFp
パワーアップって昔はゲームを易しく(有利に)するフィーチャーだったけど、
それだと上手い人ほど有利になってしまう、というジレンマをなんとかしようと
した結果、事実上パワーアップの意味がなくなったんだろうな。

ちょっと前は、パワーアップすると難易度が上がるので、1段階で止めとけとか。
0053名前は開発中のものです。04/06/19 18:36ID:YWlxQVDJ
チマチマとした攻撃力で雑魚のショボイ攻撃にも恐々としながら
避けてかわして耐えに耐えてやっとこパワーアップし、
アリンコをゾウさんが踏み潰すがごとく、さっきまで必死にかわしてた
雑魚を一掃できたりするところに爽快感がある。気持ちイイのれす。
これパワーアップの醍醐味なり。
破壊力があがることで
ゲーム性は低下する。よってすくなからず難易度はあげる。これ定石。
しかし雷電はこれどうなのかね・・
0054名前は開発中のものです。04/06/19 18:52ID:3Ym24Nqp
>>53
なぜ雷電がここで出てくるのかわからんけど、少なくとも最近のゲームは
最初ヌルいのであまりそういう感じしないんだけどな…。
後半は死んでもパパパパウァアッッだし。だからこそパワーアップシステム導入の
是非を考えてるんだけど。
0055名前は開発中のものです。04/06/19 21:57ID:PPot1Dwu
ダライアスとか延々とパワーアップしていくやつは事実上残機無用
だったと思うけど、続編作る上で問題にはならなかったのかな?
0056名前は開発中のものです。04/06/19 22:19ID:3Ym24Nqp
初代はショットでもまだミサイル>レーザー>ウェーブ等とあって
パワーアップの意味があったけど、IIなんかは中盤で死んだら最後までいっても
フルパワーにならないというシステムだったな。
あんま深く考えてないと思われ。
0057名前は開発中のものです。04/06/19 22:44ID:4pm1S1OR
死んだらパワーが思いっきり奪われるということで、
上級者に刺激を与えているのではないかと。
0058名前は開発中のものです。04/06/19 22:46ID:Z2pn+NBC
いまさらな話題だが聞いてくれ。

俺の方法はB宗一派に入ると思うのだが、
int time_table[] = { 16, 17, 17 }; のようなテーブルを用意して、
タイマーを調べて delta_t >= time_table[count] のときに画面を更新している。

これと同じような方法を使っている例は見たことがないのだが、
2Dゲーを作る場合には、この方法でもいいのか?
0059名前は開発中のものです。04/06/19 23:18ID:KfSZI/tC
なんというかそれは非常にレベルの低い解法だな。
ぴったり60fpsにしたいというならもっと良い方法がある
0060名前は開発中のものです。04/06/20 00:16ID:xxsbIohI
サンクロとかボスで死ぬと思いっきり萎えたな。
最近はその辺に気を使ってるのかな。>その場復活のアイテム
0061名前は開発中のものです。04/06/20 00:23ID:NgwUMUOo
>>58
逝ッテヨシ。googleヲ用イテ自己解決セヨ。義務。

キーワード:

サンプリング周波数
ナイキスト周波数
aliasing-error
固定小数点演算
bresenham's algorithm
マルチスッドレ
0062名前は開発中のものです。04/06/20 00:43ID:NgwUMUOo
嘘。逝かなくて(・∀・)イイ
int time_table[] = { 16, 17, 17 };  ←下駄を履かせるとイイ
あとはスクロールのガタツキを改善するための工夫をすればイイ。
0063名前は開発中のものです。04/06/20 00:47ID:JrKJOMHs
ぶっちゃけ浮動小数点でやってる俺はまんどくさすぎな人間
0064名前は開発中のものです。04/06/20 00:49ID:NgwUMUOo
フルスクリーン等の環境ならほぼ確実にV-SYNC待ちが入るので
誤差蓄積は無いし、問題ないのでは。
006564訂正04/06/20 00:55ID:NgwUMUOo
V-SYNC待ちを指定する場合は誤差蓄積を容易く回避できるし。
0066名前は開発中のものです。04/06/20 01:18ID:zSzztZMs
>>57
上手くなってきて稼ぎとか始めた場合や、
普段死なないところでミスしたら捨てゲーすると思う…。
0067名前は開発中のものです。04/06/20 05:04ID:lH+yFIWz
>>66
死んだときに後になればなるほど高得点が入るようにするとか・・・。
この場合、ボス戦で死ぬのは駄目。道中で死ぬことによって点数増加。
この点数は、ラストの残機ボーナスより(最終面で死んだ場合は)多くなるようにするとか
んで、死ぬことによって1、2段階ずつパワーダウンしていく。

ドドンパチでこれを考えると
緋蜂戦に入る前にぎりぎりまで残機を減らしたほうがいいわけだが
それだと、全一を目指そうとすると、緋蜂発狂モードに未パワーアップ&残機数無しで相手しなければならない。

こんな感じで、安全をとるか、点数を取るか。
とかにしてみるのも面白いやも。
あとこれだと後半で死んでも捨てげーにならない、と、言う利点ができたりするわけですが・・・

どんなもんやろ?
0068名前は開発中のものです。04/06/20 05:16ID:zSzztZMs
そこまでしてパワーアップの必要性を作ることもないんじゃない?
そういったゲーム性はまた別の組み方があると思う。
0069名前は開発中のものです。04/06/20 05:18ID:cSwmhxCc
死んだら敵機よろしく得点アイテムを吐くわけな。自機が。
特定のポイントで死ねなかったら捨てゲー確定ですな(意味不明かもしれん)。
0070名前は開発中のものです。04/06/20 05:49ID:zSzztZMs
あと、あんまり高いリスク→高得点を詰め過ぎてプレイヤーにストレスばっか
与えると、根本的につまらんゲームになりかねん。
0071名前は開発中のものです。04/06/20 05:59ID:JrKJOMHs
残機潰したほうがスコアが稼げるというゲームは実際にあるわけだが
そして不評なわけだが
0072名前は開発中のものです。04/06/20 06:32ID:zSzztZMs
えーとガンネイルとか?
ちがったっけ
0073名前は開発中のものです。04/06/20 07:11ID:BlbgnF66
>>54
なんだろね?
雷電は結構、パワーアップ重要だったと思うけど(復活ゲーだし)
多分、ボス前のショット>レーザーのバランスの事とか?

、、そろそろ、2ヶ月あまり停滞していたSTG作りを再開します。と自分に言い聞かせ、、。
とりあえず、安易な縦シューサンプルが動く所までを目標に、、。
00745804/06/20 08:19ID:eF3refHy
>>59
そんなにいい方法があるのなら、ぜひ聞かせてほしいが…。

>>61
キーワードはググりました。
固定小数点使ってもある程度の誤差は免れないと思う。
俺の方法よりはマシですけど。

>下駄を履かせるとイイ
無駄足は踏まさせてます。
if(〜)
{
before_time = time_table[count] - delta_t + now_time;

>V-SYNC待ち
完璧にV-SYNCが取得できるなら苦労しませんが。
まぁオプションで指定してもらえれば作る側は楽だが、そんなのめんどうだし。

>>63
そうですかね?浮動小数点でも有効数字の範囲なら同じに見えますが。
0075名前は開発中のものです。04/06/20 10:55ID:RCj90FIX
>>59
自分も聞かせてほしいです…
0076名前は開発中のものです。04/06/20 16:05ID:I9qRqgm/
じゃあ簡単に解説

まずWin32タイマー精度が1000ms分解能
ほしい精度が1000/60ms=50/3ms分解能

dword time_prev_mul3; // ワンフレ前の時間
dword time_cur_mul3; // 現在の時間
dword time_remain_mul3; // 誤差蓄積時間

void FpsTimer60::wait(){
  while((time_cur_mul3 = timeGetTime()) *3 + time_remain_mul3 - time_prev_mul3 >= 50);
  time_remain_mul3 = time_cur_mul3 - time_prev_mul3 - 50;

}


remainが大きくなりすぎたら一旦remainを初期化したりする処理
連続49/3日稼動をまたぐ時の処理は省略

…という方法
これでうまく動いてるんだけどどうや!
0077名前は開発中のものです。04/06/20 16:07ID:I9qRqgm/
かってに送信された。一行追加

void FpsTimer60::wait(){
  while((time_cur_mul3 = timeGetTime()) *3 + time_remain_mul3 - time_prev_mul3 >= 50); // 松
  time_remain_mul3 = time_cur_mul3 - time_prev_mul3 - 50; // 誤差を記録
  time_prev = time_cur; // ワンプレ前の値として記録
}
0078名前は開発中のものです。04/06/20 16:23ID:9GKIat6R
QueryPerformanceCounter は使ってはいかんのか?
0079名前は開発中のものです。04/06/20 17:01ID:65EGUQxQ
別に構わんと思うけど、1回の呼び出しに1us位掛かった気もする。
0080名前は開発中のものです。04/06/20 17:11ID:NgwUMUOo
>>74
で、bresenham' algorithm は無視かよ。
0081名前は開発中のものです。04/06/20 17:12ID:NgwUMUOo
s/'/'s/
00825804/06/20 19:22ID:eF3refHy
>>76
ども。
3倍して誤差をなくしてるんだな。

>>78
いいんじゃね?
俺はQPCが嫌いだから使っていないだけ。

>>80
無視しているわけではない、使っていないだけ。
まぁ76のが応用だな。

76を参考にして作ってみたが、delta_tがdj。

DWORD before_time = timeGetTime(), now_time, delta_t = 0;

int wait_vsync()
{
    now_time = timeGetTime();
    delta_t = (now_time * 3) - (before_time * 3);
    if( delta_t >= 50)
    {
        before_time = now_time;
        return 0;
    }
    return 1;
}
で、
while(wait_vsync())
00835804/06/20 19:24ID:eF3refHy
追記、
今回は delta_t が使えないので誤差の蓄積は諦めた。

ちなみに>>74に書いたが、58のソースでも誤差の蓄積はしていた。
0084名前は開発中のものです。04/06/20 21:13ID:5pDtmEUg
76だけど
あのさぁ、わざわざ3倍してんのはremainに誤差を蓄積して後フレームで取り返すためにやってんのに
その処理なくしたら何のいみもねーだろ。
そもそもv_syncとか意(ry
0085名前は開発中のものです。04/06/20 21:14ID:DI+n1JlW
まだブレゼンハムとか言ってる人がいるのか。
タイマ周りなんて容赦なく浮動小数使えばいいのに。doubleで1=1秒で。
0086名前は開発中のものです。04/06/20 21:41ID:DI+n1JlW
const double FRAME_RATE = 60.0;
double gameTime = 0.0;
double gameDeltaTime = 1.0 / FRAME_RATE;

Boost::timer t;

while (true) {
  double currentTime = t.elapsed();

  if (gameTime > currentTime) {
    Sleep(gameTime - currentTime);
  }
  gameTime += gameDeltaTime;

  Update();
  Render();
}

こんなんでも基本に。
0087名前は開発中のものです。04/06/20 22:01ID:OU12cvDW
>>74
>完璧にV-SYNCが取得できるなら苦労しませんが。

んー。DirectX7以前ならフルスクリーンでは確実に同期できますが。
(できない珍種ビデオカード環境があるなら例をあげてみなさい)
 
更に、DirectX8以降に対応したドライバならウィンドウモードでも
確実に同期できますが。大抵はスキャンライン単位で情報得られます。
 
まさか、「CRT側のリフレッシュレートと同期できない環境」で
ノイズレスかつスムーズな2Dゲームプログラムを実現できるとお考えで?
 
>>83
>誤差の蓄積は諦めた。
 
まぁ、勉強中ということなら今回は諦めてもいいんじゃないか。
ただし、精度保証はちゃんとできるんで。数値計算の初歩本ぐらい
買うか借りるかして勉強したほうがいいと思うぞ。

>>85

いや、精度保証付きであれば何でも構わないわけだが。
話の流れ的にも整数演算のみでカタが付くことを58が
望んでる様子だからブレゼンハムって単語が飛び出たのであるし。
0088名前は開発中のものです。04/06/20 22:06ID:zSzztZMs
vsync同期前提で良いんじゃないかなあと俺は思ってんだけどね…。
綺麗だし。
00898804/06/20 22:09ID:zSzztZMs
あ、言葉足らなかった。
タイマはリフレッシュレートいじれない人用と考えて
そんな高精度じゃなくても良いんじゃないって話。
0090名前は開発中のものです。04/06/20 22:13ID:DOcz0XvB
ねーねー、誤差蓄積時間って書いてあるけど、
これって単なる前回誤差時間だよね?
0091名前は開発中のものです。04/06/20 22:55ID:ImnSjeb4
ウィンドウモードでVSyncに同期できるってのはどういうことですか?
例えば普段リフレッシュレートを85Hzに設定してる人が、
ゲームのウィンドウだけをVSyncに同期して60fpsで動かすことって不可能ですよね?
0092名前は開発中のものです。04/06/20 23:02ID:wt7FAzbI
>>91
私はA宗です。

B宗1派の苦労もB宗2派の不幸も知らないし知りたいとも思わない。
0093名前は開発中のものです。04/06/20 23:10ID:ImnSjeb4
A宗でしたかー。
009492=8704/06/20 23:13ID:wt7FAzbI
です。
0095名前は開発中のものです。04/06/20 23:40ID:JrKJOMHs
数値計算屋ならなおのことB宗にしそうだけどなあ。
#ゲームなんて超複雑な偏微分方程式みたいなもんだ
0096名前は開発中のものです。04/06/21 00:01ID:ufNKNDg5
でだ、俺B宗なんだけど、ちとA宗の人に質問。

このことを具体的にどう実装してるのか教えてくれ。
「同じ曲線軌道を取る弾を等間隔に連打して曲線を描く弾幕を作りたい」
もちろん軌道は微分形式で表されてる奴ね。

dt可変だと、連射弾の1つ1つの軌道が変わると思うのよ。直線弾ではなくて、曲線弾だから。
結局そんなもんは誤差の範囲ってことでごまかしてるわけかな?
(実際にプレイしてればそんなに気にならないだろうし、どうせ桁外れに小さい誤差だろうけれど)
00979604/06/21 00:04ID:ufNKNDg5
すまん、ちと要点がなんだかわからない文章だった。

要するにこれをA宗の実装方法でやるのに問題点は
「等時間間隔で発射すること」「全ての弾の曲線に同一軌道を持たせること」
の2つだと思うんだけど、実際どうしてるのかな、と。
009892=8704/06/21 00:13ID:LDPsXW0a
教義をよく読んだら、もすかすてA宗ってオブジェクトのパラメータ更新も
リフレッシュレートに同期させんと異端になるんか。私、原理過激派に抹殺されるかも(・∀・)

>>96
弾幕に関しては、お定まりのアニメーション再生ルーチンと同じでイケルぽ。
空間上のパラメトリック曲線上をナゾルっぺよ。Δtにあわせてスライダー上を
進むようなイメージだべよ。
009992=8704/06/21 00:23ID:LDPsXW0a
えーと、予定調和的な処理を簡素に作り上げるなら
ゲームワールドの更新に未知のΔtを使うのは嫌過ぎる。ってのは同意。
 
私は「滑らかな2Dゲーム、滑らかなスクロール」のために画面更新は
リフレッシュレートに同期させよう。というつもりでA宗だと思ってたプチ信徒ディス。
0100名前は開発中のものです。04/06/21 00:52ID:ufNKNDg5
>>98
アニメーション再生ルーチンってのが具体的にどういうもんだか分からないのだけれど…。
もしオブジェクトごとに非常に小さい固定dtの数値積分で求めているとしたらそれは本末転倒で、
初めからゲーム全体にクロックを与えて、そいつで駆動したほうが楽でよくない?
0101名前は開発中のものです。04/06/21 00:56ID:S8I9DCcV
>>98
よく、知ったかのゲーマーとかがバカの一つ覚えみたいに60fpsとかいうけど、
実際は59.97Hz前後だから、VSYNCに頼ったところで正確に60fpsにゃならないんだよ。
昔のゲームは、単に高速タイマがなくて、ターゲットのリフレッシュレートは固定だから、
タイミング取るのにVSYNC割り込み使ってたという単なる慣習だ。

PCだったら、タイマとトータルのフレーム数のカウンタを併用して、1/60fps相当で
必要な処理を通すようにゲームループ回して、絵の方をつじつまあわせりゃいい。
ちらつきが嫌ならVSYNC検出して、帰線期間に絵を書き換えりゃいいし、
そうじゃないなら洋ゲーみたいにフレームレート可変って感じで。
今のシューティングゲームは、負荷でスローが掛かる表現にしたって、ソフト的に
ウェイト入れてやるだけなんだから、無理してVSYNC使う必要はないんだよ。
0102名前は開発中のものです。04/06/21 01:05ID:p+RaFqmS
俺は敵の挙動を計算式で処理してないので
60FPS固定でやるしかない。
0103名前は開発中のものです。04/06/21 01:14ID:JKYmVFm9
ずいぶんと脱線をしている気がする。まあ、76と86が実用になることだけわかってれば問題ないよな。
リフレッシュレート85とかのCRTでのウィンドウモードで
伝統的57〜60FPSゲームを動かすのがお題目なんだし。
■ このスレッドは過去ログ倉庫に格納されています