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

このエントリーをはてなブックマークに追加
15週目1面
ゲームプログラマなら誰もが通る、もしくは、通った道。青春の香り?
それは「シューティングゲーム製作」・・・。

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

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

■前スレ
シューティングゲーム製作技術総合 4機目
http://pc5.2ch.net/test/read.cgi/gamedev/1092048824/l50
シューティングゲーム製作技術総合 3機目
http://pc5.2ch.net/test/read.cgi/gamedev/1087339516/l50
25週目1面:04/10/18 02:42:39 ID:oCJmbNzb
■過去スレ

シューティングゲーム製作技術総合 2機目
http://pc5.2ch.net/test/read.cgi/gamedev/1073736474/

シューティングゲーム製作技術総合
http://bbs.gamdev.org/test/read.cgi/gamedev/1056635103/

■関連スレ
PCで出来る2Dシューティング(STG)総合スレ12
http://game6.2ch.net/test/read.cgi/game/1083576811/
★シューティングゲームは終わらない-STAGE28-
http://game6.2ch.net/test/read.cgi/famicom/1084795165/
G-わんげ鳩大往生XII〜絆ダウン〜 4stage
http://game6.2ch.net/test/read.cgi/arc/1069685469/

■関連スレ
FPS(フレームレート) VSYNC(垂直同期 リフレッシュレート)
http://bbs.gamdev.org/test/read.cgi/gamedev/1063274576/
リフレッシュレートに関する論争
http://piza.2ch.net/tech/kako/972/972165437.html

35週目1面:04/10/18 02:44:20 ID:oCJmbNzb
■参考リンク
フリーソフトで面白いゲーム まとめページ シューティングカテゴリ
http://www.frgm.org/cgi-bin/s.php?g=stg&b=n
BulletML
http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/
白い弾幕くん(BulletML+Lua)
http://user.ecc.u-tokyo.ac.jp/~s31552/wp/sdmkun/

■エフェクト作成ツール
aBOM
http://www1.odn.ne.jp/ceb94660/
BombMaker(explosion maker)
http://www.pluto.dti.ne.jp/~nkf/
Detonation
http://www.vector.co.jp/soft/win95/art/se173882.html
GraphicsGale
http://www.tempest-j.com/
発色弾
http://diry.net/mia/

4名前は開発中のものです。:04/10/18 02:46:30 ID:q7ATn44m
お疲れ様です!
5名前は開発中のものです。:04/10/18 03:20:44 ID:E9jIrH33
お疲れ!

前スレ>>991

falseだと思う。
1秒間に1回だけ1/60に間に合わないとすると、
1回だけフレームが更新されず、1秒間に59フレーム描画になるんじゃないだろうか。
30になるのは、(安定して)毎フレーム間に合ってない時では?
6名前は開発中のものです。:04/10/18 04:25:12 ID:q7ATn44m
解釈のしかたによるんでない?
感覚的にはふつ〜に
グラ3みたいに
処理落ち中は30で動いてて
処理落ちがしなくなったとたんいきなり60に戻って
あぼ ̄んっていう
7名前は開発中のものです。:04/10/18 05:12:47 ID:AQlnWMGk
FPSって、きっちり1秒ごとに計算するのが当たり前?

1秒ごとでない間隔で、算出してるのもあるみたいだけど
8名前は開発中のものです。:04/10/18 05:31:11 ID:FZ6e1Fbw
μ秒で時間を測れるタイマーがあるよな。
コレで計算すれば、1フレーム毎に計算する事も可能だ。
FPSというのは一秒間に書き換えられる画面の数だから、
[FPS]=1,000,000/[タイマーで計測された値]
で、FPSが出せる。
9名前は開発中のものです。:04/10/18 05:33:08 ID:AQlnWMGk
いや、それはわかってるんだけど・・・

俺がなんかおかしかったかな・・・
10名前は開発中のものです。:04/10/18 07:16:21 ID:u3qm4VuJ
>6
991の言い方だと>5になるっしょ
115:04/10/18 11:28:48 ID:E9jIrH33
>>6
推測で、>>10の補足をすると、
処理落ち中か、そうでないかは1フレームごとに判断される。
当然、秒単位より細かいタイミング。
ゲームで秒という単位を意識することはないと思う。
12名前は開発中のものです。:04/10/18 11:56:33 ID:/TyVMiqG
fpsって言葉を考えると秒なんだけどね。
13名前は開発中のものです。:04/10/18 13:03:36 ID:YKvA6Z8c
一般的なFPS計算では
ある程度の長さの単位時間で区切って(必ずしも1秒ではない)
[フレーム数]/[単位時間(秒)]で計算して、[単位時間(秒)]毎に更新してる

で、
>>8
VSYNC取ってる限り1フレームにかかる時間は
処理落ち掛かってても(n/60)秒って離散的な値になるわけで
その逆数から算出する方法だと60,30,20,15…のように離散的な数値となる。
だからusで時間計測しても何の意味も無い。
このタイプでFPS表示をしてるゲームはとりあえず見たことが無い。
14名前は開発中のものです。:04/10/18 15:14:15 ID:gxH6dECu
突然30FPSと60FPSの差が出てしまうのはウェイトの取り方に問題があるんでないかと
yaneSDKの方法ならそんな離散的な値をとることはなくなる
15名前は開発中のものです。:04/10/18 15:46:13 ID:MGBXCxl7
負荷がかかってフレームスキップよりは処理落ちさせたほうがいい
というゲームもあるけどな
細かい動きが重要な2D系はそうなんじゃないかな
16名前は開発中のものです。:04/10/18 15:48:04 ID:hEULwxdB
しかし処理落ちしっぱなしだとゲーム変わっちゃうからなー。
低スペックPCでやるとゲームが簡単になっちゃうのは避けたい。
17名前は開発中のものです。:04/10/18 15:56:25 ID:MGBXCxl7
推奨スペック満たしていないマシンなんてべつに処理落ちしてもいいだろ
推奨スペックがやけに高いとかじゃないのなら別に切り捨ててかまわないような

600MHz、ビデオも815や830以降のUMAなら半透明がんがん使っても
2DSTGとかならまず問題ないしね

逆にどうすればここまで重くできるのか・・・と悩むゲームもあると思う
18名前は開発中のものです。:04/10/18 16:12:05 ID:5YRMGXNn
>>17
学校でTAとかやってて課題のコード見てると、なんでこの処理するだけなの
こんなアルゴリズムしか考え付かないんだろうっていうものすごいことやる
人ざらにいるよ。

バイナリサーチやクイックソートみたいに大層なものじゃなくてもじゃなく
てもただメインループまわすだけでもどんだけでも遅くできる要素はあるけ
ど、あなたは正しい方法をある程度知っちゃってるからどう重くしていいの
か分からないだけだと思う。
19名前は開発中のものです。:04/10/18 17:34:27 ID:dfb+FmvQ
>>1
エクステンド乙

ム板でこんなん見つけた。かっこよすぎ。

将棋シューティング 裸王
http://ece4co.vis.ne.jp/shooting/raoh.html
2016:04/10/18 17:42:38 ID:hEULwxdB
>>17
いあースコアランキングとかやってリプレイ見たとき思ったんだけど、
なんか処理落ちするような低スペック機でやると簡単になっちゃって
不公平かなーと…。
21名前は開発中のものです。:04/10/18 19:15:25 ID:/sFXBfmk
ゲーム中に処理落ちした総フレーム数を記録しておいて
一定以上処理落ちしている場合はランキング側で
集計対象から外すとか。後ろ向きな方法ではあるけど。
22名前は開発中のものです。:04/10/18 20:31:18 ID:+9diWNgG

エディタでまだ何も入力していないのにオートコンプリートが作動した。
候補確定キーだけ押し続けていたら、そのままコードが完成した。
23名前は開発中のものです。:04/10/18 21:28:55 ID:BfX+SsEU
>7
俺の場合だけど、
Nフレーム分のリングバッファを用意して、毎フレーム時間を入れていく。
で、現在の時間とNフレーム前の時間との差を用いて、
「N/時間差」で最近Nフレームの平均FPSを毎フレームを求めている。
24名前は開発中のものです。:04/10/18 22:05:44 ID:LeGML7RC
割り込みスマソ。
Cマガの来月号の予告でシューティングのタスクシステム
の記事があるみたい。
25名前は開発中のものです。:04/10/18 22:09:12 ID:OcOTsQ3T
過去に出てきてそうな話題だけど、過去ログ見えないんで質問。
Windowsで「現在の時間」をとるのに一番いい(精度・機種依存の少なさなど)
のって何かな?(VSYNCを利用するのは除いて)
timeGetTime使ってるんだけどmsよりもうちょい細かいのが欲しいんだけど、
QueryPerformance系っていまいち説が多いし・・・
26名前は開発中のものです。:04/10/18 23:06:09 ID:AMLu+bH3
>25
2に張ってある関連スレを参照汁。
27名前は開発中のものです。:04/10/18 23:43:08 ID:ZlDYCf6q
>>24
シューティングである必要を感じないな
Cマガも必死だ・・・
28名前は開発中のものです。:04/10/19 00:43:17 ID:FLZ2iioQ
>>24
ライターが誰なのかが気になる。
29名前は開発中のものです。:04/10/19 01:12:48 ID:6G5jb8lD
というか、おまえらどうやって1/60秒のトリガ作ってますか
30名前は開発中のものです。:04/10/19 02:13:13 ID:SG0Jnehx
タイマの差分で16.66msまつしかないんじゃない?
リフレッシュレート60で同期できるときはそっち使うことにしてもいいと思うけど。

つーかまだ詳しくないからできるかどうか知らないんだけど。
31名前は開発中のものです。:04/10/19 02:45:34 ID:0CjYCbHv
俺は QueryPerformanceCounter 使ってるけど
ノートPCとかでCPUの周波数が変わったりしたときに
ちゃんと動く自信ない…。
32名前は開発中のものです。:04/10/19 08:28:09 ID:yqbKU33t
デジタル液晶にリプレースされた今、もう1/60秒にこだわる理由はないのでは
33名前は開発中のものです。:04/10/19 10:50:15 ID:X3WDl/sX
1/60秒にこだわる必要はないが
1フレーム分を表す単位時間は結局必要になるわけで
アケやコンシューマでよく用いられてる1/60をあえて使わない理由もなかったりする。
34名前は開発中のものです。:04/10/19 11:12:06 ID:kZ7AosPE
まあ液晶も普通のモニタも1/60に対応してない奴なんてないから無難なんですよ
対応してなかったらそのモニタが悪いっつーことでw
35名前は開発中のものです。:04/10/19 12:11:46 ID:5lYKiZd9
むしろ液晶がディスプレイの9割を占めるようになった今
60Hzで固定されていて実に具合がいい
36名前は開発中のものです。:04/10/19 12:12:19 ID:yqbKU33t
アナログのディスプレイの話じゃないすよ
1/60秒よりms単位の方が使いやすいなら、50fpsとか100fpsでもよかろうと
37名前は開発中のものです。:04/10/19 12:31:58 ID:zox45FE7
タイマー 評価:☆★★★★
間隔が短いと精度が著しく悪くなる
実用になるのは20〜25FPSぐらいまで
とにかくCPU使用率を低く抑えられるのが利点
実装も簡単

timeGetTime 評価:☆☆☆☆★
1/60秒を正確に取るにはやや精度不足
動作環境に左右されづらく多くの機種で安定動作
精度不足とはいっても通常の人間の目でわからないレベルなので
1フレームの長さを可変(17,17,16,17,17,16......_秒)にして無理やり60FPSにしたり
16_秒もしくは17_秒固定で60FPSにこだわらない(秒あたりのフレーム数より
フレームあたりの時間にこだわる)実装などがある
動作する機種の多さと精度のよさ、実装の難度のバランスが取れていて人気がある方法の一つ
CPU使用率をいかに落とすかが話題になりやすい

QueryPerformanceCounter 評価:☆☆☆★★
伝説的に古い機種、周波数が動的に変わる機種で不具合が出る可能性あり
とはいっても実際はなかなか遭遇することはないだろう(これから増える?)
DirectX(Vsync)を使わない方法ではもっとも精度が高い

Vsync 評価:☆☆☆★★
DirectXを利用しなおかつ全画面モードのみで使用可能
1/60をもっとも正確に取れる方法です(1/60という数字が出てきたのがVsyncのせいなので当たり前ですが)
Vsyncはリフレッシュレートに左右されます
最近のPCモニタは高性能化され60Hzより75Hzや85Hzで常用されることが多くなりました
なので1/75や1/85ではなく1/60にするためにリフレッシュレートの変更が必要です
DirectXの初期化時に簡単にできるのですが一部のユーザーはリフレッシュレートを変更されるのを嫌い
不評を買ってしまう場合があるようです。
60Hzだとチラツキ(※)が気になるので変えて欲しくない。全画面はより弁(他のウィンドウサイズが勝手に変更されるバグ)になるから嫌だ。など問題も多いです。
また、Vsyncに間に合わなかった場合の時間ロスも大きくスペックギリギリの機種には不利な方法です。
※ 他に適当な言葉がなかったのでチラツキと表現しますがFPSを語る上でチラツキというのは誤解を生みやすい言葉です。反省。
38名前は開発中のものです。:04/10/19 12:52:22 ID:5lYKiZd9
>>36
ティアリングが萎える人間もいる

OSにリアルタイム性のないもの使ってる以上
バックグラウンドで何も動かしてなくても負荷がない場面で
処理落ちやらなんやらがおきて萎え萎え

それがやっぱり昔からやってきた人間には理解不能

可変フレームレートのゲームならまぁティアリングは許容する
3937:04/10/19 12:59:15 ID:zox45FE7
長文&勝手な評価でスマソ
一応、数本作った上で調べてきたことをまとめてみました
ツッコミあればおながいします

より弁はVsyncじゃなく全画面の問題(timeGetTime利用時でもDirectXや全画面ぐらい使う)だったりと
書きたかったことを適当なところにインサートした感じもありますが勘弁してください

マルチメディアタイマが入ってませんが全く使ったことがないです。誰かレビュきぼん

P.S.
60Hzに対応してないレアなディスプレイもってますw
40名前は開発中のものです。:04/10/19 13:01:51 ID:5lYKiZd9
DirectXってリフレッシュレートの変更ができない環境のほうが多いんじゃ?

41名前は開発中のものです。:04/10/19 13:13:57 ID:yqbKU33t
>>38
んじゃ、デジタルのディスプレイは許容しないということ?(そこまで酷い画面割れする?)
それ以前にWindowsでプレイするのが理解不能と??
42名前は開発中のものです。:04/10/19 14:15:29 ID:V514rLzG
>>40
dxdiag使ってもダメか?
43名前は開発中のものです。:04/10/19 15:18:14 ID:/tR++0zQ
とりあえずリフレッシュレートスレくらい読もうぜ。既出しまくりだから。>yqbKU33t
44名前は開発中のものです。:04/10/19 16:32:43 ID:yqbKU33t
>>43
tnx
大体分かったけど、結局完全な同期方法を持たないプログラムが
タイマー等で中途半端に画面更新更新周期に合わせようとすると
画面が割れっぱなしになってしまうんじゃないすか?
45名前は開発中のものです。:04/10/19 16:40:10 ID:dS83Z15r
>37
乙。
QueryPerformanceCounterが一番重いことも書いといた方がいいかも。
ちょっと多めに3D入れると、快適に動くスペックが、
QueryPerformanceCounterとtimeGetTimeでは全然違うし。
あと、このスレまでにあったtimeGetTime3倍掛けのやり方も書いた方が
いいんじゃないのかな。俺、VSyncを除けば
あれが現段階で一番バランスとれていると思う。
46名前は開発中のものです。:04/10/19 16:41:46 ID:5lYKiZd9
>>42
それ解決方法になってない
47名前は開発中のものです。:04/10/19 16:51:40 ID:V514rLzG
手動じゃなくてプログラム上で変えるってこと?
それはあきらめるしかないな。
48名前は開発中のものです。:04/10/19 21:13:31 ID:gsAcyGQc
ということはVsync取れなければ60fps位で回すのは辞めた方がいいね
49名前は開発中のものです。:04/10/19 21:16:47 ID:Zak6AVNF
正確に同期が取れないなら、あえて大きく周期を変えたほうがいいのかな?
60Hzなら、16msとかで取るとティアリングの位置が毎回近い位置になるから目立つけど、
20msとか10msならバラけるぶん目立たなくなる?
50名前は開発中のものです。:04/10/19 21:40:21 ID:5lYKiZd9
>>49
たしかに40fpsあたりにすると目立たなくなる
ものによってはこれでもいいだろうね

STGだとちょっと滑らかさが段違いできびしいかな

現実的には垂直同期ループテストして60Hzっぽかったらそのまま垂直同期だけ、
多すぎるようだったら時間管理で16msで、というのが一番問題ないね
ウインドウモードでもそのまま時間管理にいくし
51名前は開発中のものです。:04/10/19 21:41:27 ID:trUkUJUf
>40>47
最近のならたいてい対応してないか?

今ちょっと使ってるKyroIIな奴でさえ、設定できるんだけど。
52名前は開発中のものです。:04/10/19 21:52:50 ID:QtX14qgT
>50
ところがどっこい、ShootingGame(仮)は20fpsでビックリ。
53名前は開発中のものです。:04/10/19 22:20:55 ID:2vnqRcGP
速い弾があるかでだいぶ変わるね
54名前は開発中のものです。:04/10/19 22:20:57 ID:Zak6AVNF
画面内に移動速度が速いものが無ければfpsが低くてもなんとかなると思うけど。
50fps(20ms)位でまわしておけばいいのかなー。
若しくはモニタの周波数になさそうな90fpsとか。
55名前は開発中のものです。:04/10/19 22:27:54 ID:2vnqRcGP
まぁ60FPSでまわせるなら、それより下を選ぶメリットはほぼ無いとは思う
56名前は開発中のものです。:04/10/19 23:54:03 ID:5lYKiZd9
50fpsやってみればわかるけどがたつく
57名前は開発中のものです。:04/10/20 00:08:45 ID:IaXVtvvI
なんかいまさらな話題な希ガス
58名前は開発中のものです。:04/10/20 00:18:10 ID:M4SYQBL7
50fpsだと60Hzのディスプレイを使った場合、10フレ分だけ同じ状態で
表示される訳だからかなりガタつくでしょ。
仮に100Hzのディスプレイを使ったとすると、全てのフレームが2回ずつ
表示されるわけだからスムーズになると思う。

もちろんこれは人間の目の能力云々の話とは別で
59名前は開発中のものです。:04/10/20 01:32:19 ID:oSwYBm/3
>>58
それは垂直同期が60Hzだから時間管理で60fpsだとがたつかないと
いっているようなものだ

実際は近いからこそがたつく
60名前は開発中のものです。:04/10/20 01:44:44 ID:IaXVtvvI
CRT使ってる人って、リフレッシュレートどんくらいにしてるの?
アクセス解析でコレわかればなー。
61名前は開発中のものです。:04/10/20 03:14:08 ID:+aF/qwkF
80Hz位にはするね
60Hzはちらつきが目立つ
6260:04/10/20 03:36:37 ID:IaXVtvvI
俺は70〜75くらいかな。
上げすぎるとボヤけるんだよな。
63名前は開発中のものです。:04/10/20 03:43:40 ID:R3L7BlLh
CRTは85で液晶は60にしてる。というか液晶は60しか選べないが・・・。
同期取れなきゃいくらだろうがガタ付くよ。同期取るタイミングが2フレーム置きか3フレーム置きかは別にして。
64名前は開発中のものです。:04/10/20 03:54:54 ID:A2F3RZ51
高解像度状態での60Hzは目に見えてチカチカするから75Hz
ゲームをやるときはDirectX診断ツールで60に上書きしてる
65名前は開発中のものです。:04/10/20 04:02:24 ID:bFNpCc33
俺は普段は、75・・・にしてるつもりだったんだが、今確認してみたら60になってた
まぁ、慣れたら気にならないね・・・

ちなみにXPとかじゃないから、解像度別にリフレッシュレートとかの設定が保存されたりして、
微妙にラッキーだと思うことがある。
66名前は開発中のものです。:04/10/20 08:27:14 ID:opTKSlQN
>>59
ティアリングとがたつきを勘違いしてる
67名前は開発中のものです。:04/10/20 10:37:12 ID:oSwYBm/3
>>66
ここでいうがたつきはティアリングのことかと
68名前は開発中のものです。:04/10/20 14:06:28 ID:MqjNIG5Y
横槍すまんがティアリングじゃないがたつきってあるんだ
69名前は開発中のものです。:04/10/20 14:15:50 ID:bd6yug97
2フレーム分の更新を行ったが表示は1フレームしかできない→コマ落ち
垂直同期が取れずに1フレーム中に2フレーム分の表示がばらばらに表示されてちらつく→ティアリング

ってことではないかと
70名前は開発中のものです。:04/10/20 14:21:14 ID:BebMKI/b
リフレッシュレートとfpsを一致させないとカクカクするのががたつき
2Dスクロールゲームで試すと分かりやすい
ティアリングは垂直同期待ちしないで書き換えた裏画面を表にして
表示した時に画面に水平な線が何本か走る奴でしょ
ディスプレイの電子銃?がまだ水平走査している時に反転しちゃうわけだから
そうなるのは当然だよね
71名前は開発中のものです。:04/10/20 16:47:08 ID:opTKSlQN
>>70
そうそう
がたつきという表現が明確に定義されているかは知らないけど、描画レートとリフレッシュレートの
回数の違いにより描画フレームが、0123345677等のように特定のフレームが他のフレームより多く
表示(又は逆に間引かれる)されてしまうのが原因。
高速の直線弾などボコッと1フレーム停止たように見えてしまう。

ティアリングは画面割れで、走査中に表示メモリを書き換えると生じる。同期待ちのメカニズム
を持たないプログラムではこれを避けることができない。
切れ目は描画レートとリフレッシュレートの差の周期で画面を縦に移動するので、この差が小さいと
ゆっくりと切れ目が画面を移動するため大変見苦しい。

あと、リフレッシュレートと関係のない問題として、ブレがあり、fpsが低いゲームなどで高速に
オブジェクトが移動すると残像が生じる(目の能力や、液晶の反応速度に因る)
72名前は開発中のものです。:04/10/20 18:25:59 ID:0BLAAPxU
ちなみに、より弁にならない対処方法。

画面モード変更前に、全部の画面を閉じておく。
いちいちハンドルチェックするのはめんどいので
キーボードイベントでウインドウズキー(VK_LWIN)+Mを入力すれば全部閉じる。

復帰時には画面サイズを戻してからVK_LWIN+シフト+Mキー。
73名前は開発中のものです。:04/10/20 18:29:33 ID:0BLAAPxU
全部の画面をって言い方は変だったな。全部のウインドウを閉じておくに脳内変換してくれ。
74名前は開発中のものです。:04/10/20 19:32:10 ID:0BLAAPxU
そして今気がつく。全画面ゲームってウインドウズキーの処理にだいぶ苦労するな。
いろんな全画面ウインドウズゲーでテストしてるんだが、ESCと同じ扱いで終了させたり
画面モードを戻してタスクバーにしまったり、みんな色々やってるようだ。
キー入力を渡さずに無効にする方法はないんかな?
75名前は開発中のものです。:04/10/20 19:33:17 ID:sWFekLMi
そういえばフラ板行くとfpsさえでかければマンセーな輩がいるな
76名前は開発中のものです。:04/10/20 20:28:59 ID:aomIPf63
おれおれ。
77名前は開発中のものです。:04/10/20 20:29:36 ID:aomIPf63
いや、ID的に>>75自身か。
78名前は開発中のものです。:04/10/20 20:55:34 ID:fImWYD9I
ウインドウズキーはマジウザイ
79名前は開発中のものです。:04/10/20 21:07:57 ID:/mBmRgO3
ALT+TABも
80名前は開発中のものです。:04/10/20 21:10:17 ID:bd6yug97
Managed DirectXのDirectInputにはNoWinKeyってフラグがあったがw
分かってんなら付けるな馬鹿MSが
81名前は開発中のものです。:04/10/20 21:20:02 ID:t4CYF04e
オレオレ自演?
82名前は開発中のものです。:04/10/21 16:57:54 ID:T7tkLkrE
fpsの話になると確実にスレが荒れるな・・・
83名前は開発中のものです。:04/10/21 17:16:05 ID:aFfvccIw
>>82
そのための専用スレですよ!!

FPS(フレームレート) VSYNC(垂直同期 リフレッシュレート)
http://bbs.gamdev.org/test/read.cgi/gamedev/1063274576/
84名前は開発中のものです。:04/10/21 19:53:55 ID:9bE1KjoS
え、煽り合いを楽しんでるんでしょ?
85名前は開発中のものです。:04/10/22 00:02:34 ID:hzkjFRC2
そんな(煽り合いを楽しむような)連中と一緒にしないでくれ。といっても今回のfps話題にはほとんど参加してないが。
86名前は開発中のものです。:04/10/22 00:06:42 ID:1RGBIMQR
ゲーム製作を楽しもうぜ。
87名前は開発中のものです。:04/10/22 01:31:28 ID:6287kMO1
まず、動くもの作らんとダメだな。うまくいったのを晒してくれればみんな使うだろうし。
88名前は開発中のものです。:04/10/22 01:37:17 ID:fDEifmM3
おいおまいら、ウインドウズキーを無効にする方法を見つけましたよ。
普通はキーを離す時にメニューが出るのだが、WINキー押し→別なキー押し→WINキー離しだとメニューは出ない。
なので、WINキーが押されたら別なキー、例えばシフトキーを押して離したという情報を加えてやればいいんでつよ。

ただしCTRL+ESCなんかの複合動作でのメニューオープンなど対応できないけどな。
89名前は開発中のものです。:04/10/22 02:05:19 ID:rn2Uk7ex
なるー。
まあWinキーを誤って押してしまうということには対処できるな。
同時押しはユーザーは分かっててやってるわけだからほっといて良いかも。
90名前は開発中のものです。:04/10/23 00:26:57 ID:2vLRGGWt
DX9でWinキー無効にする機能が付いたと思うんだが。おまいらDirectXのバージョンいくつで開発してんのよ?
91名前は開発中のものです。:04/10/23 00:29:20 ID:leJZJ5sx
3か5あたりが通かな。

俺は容赦なく9だが。
92名前は開発中のものです。:04/10/23 01:18:16 ID:vmDu16LB
NT4.0も桶なDX3マンセー
93名前は開発中のものです。:04/10/23 02:06:14 ID:uhMA/Qe1
>>90
9はDirectInput変わってないでしょ。
DISCL_NOWINKEYならDirectX7で既にあるのは確認した。
94名前は開発中のものです。:04/10/23 18:57:06 ID:cWtXBM67
あったのか、しらなんだ。でも、対応して無いゲームばっかりなのはなんでだ?
95名前は開発中のものです。:04/10/23 21:12:46 ID:uIcZ5KHo
>DISCL_NOWINKEY
> Microsoft Windows キーを無効にする。このフラグを設定すると、
> ユーザーは誤ってアプリケーションを終了することがなくなる。
> ただし、デフォルトのアクション マッピング ユーザー インターフェイス (UI)
> が表示されている間は DISCL_NOWINKEY フラグは無効であり、
> デフォルトのアクション マッピング UI が存在している間は
> Windows キーは通常どおり機能する。
96名前は開発中のものです。:04/10/23 21:29:40 ID:cWtXBM67
よくわからんがほぼ役に立たないってことか。
97名前は開発中のものです。:04/10/23 23:36:57 ID:uhMA/Qe1
アクションマップなんて使わないから充分役に立つぞ
98名前は開発中のものです。:04/10/24 00:13:27 ID:OZox6TUu
Managed DirectXを使っているがDirectInputは激しく楽に使えるぞ
というかマジでMDX便利ですって
99名前は開発中のものです。:04/10/24 00:50:29 ID:3bpTY9SC
というか、DX9.0cから付属してるサンプルフレームワーク使えば、初期化ではまることはない。
思い道理に動作させられるようになるのは時間かかるだろうけど。

P−133とかターゲットにしてるんじゃなければ、さっさちDX9.0cにしたほうがよさげです。
100名前は開発中のものです。:04/10/25 11:03:09 ID:vjX7T+BN
さっさちage
101名前は開発中のものです。:04/10/28 23:44:21 ID:ZcOeqvwz
地点AからBに向かってじょじょに減速してって、
地点Bでピッタンコに止まるようにしたいんだけどさ、
どんな計算したらいいんだか、わかる人オセーテ

102名前は開発中のものです。:04/10/28 23:59:31 ID:NOHamSdK
積分習ったなら一発。
ゲームに使う数学物理学のスレがあればそっちむけの話題か。
数学や物理をどこまで習ったか書いてもらえると教えやすいかもな。高校2年くらいならもう習ってるかな。
習ってなくても時間かけて試行錯誤でやっちゃう人もいるが、それはおいといて。
103名前は開発中のものです。:04/10/29 00:04:07 ID:8A9EMbxC
この式を使いたい条件に合わせて変形汁。

x - xo = vo × t + a × t / 2
(xo:初期位置,x:目的地,vo:初速度,a:加速度,t:時間)

ちなみに減速だと、加速度はマイナスになるな。
104名前は開発中のものです。:04/10/29 00:20:58 ID:TIRbD7Yi
>>101
直線上の場合なら、初期速度を vi , 時刻Tでの最終速度を 0

v(t=0) = vi
v(t=T) = 0

として、減速の原因となる逆向きの加速度を c とすると、時刻 t での速度は

v(t) = vi - c*t

で、位置(初期位置はr=0と仮定)はその積分で

2
r = vi*t - c*t /2

になる罠。加速度 c と止まるまでの時間Tの関係は自分で考えてね。
経路が直線じゃない場合は、もうちょっと難しいけど出来るよ。
105名前は開発中のものです。:04/10/29 00:32:40 ID:UD9l+DIN
一応書くが離散積分の場合はそれなりのことをせんとピッタリにはならんよ。
例えば前進オイラー法で積分するときに45ドットを10フレームで動いて停止する場合の解として

int velo = 10;
int pos = 0;

for(int i=0;i<10;i++) {
 velo += -1;
 pos += velo;
}

ってのがあるけど、>>103の言う方程式で計算すると矛盾する
45 = 10*10 + (-1)*10/2 = 50
連続な方程式が使えるのはdt→0の時だけ
106名前は開発中のものです。:04/10/29 00:45:25 ID:a/WIv4y/
dt が大きい場合を聞いているのでは?
107名前は開発中のものです。:04/10/29 01:08:32 ID:29C8BCSu
ゲームなんだから厳密でなくてもいいと思う。

移動量=残り距離/10

10は適当な数値。大きいほど遅くなる。
整数だと、残り10ドット未満で停止するから、残り距離/10+1とか足かせしておく。
浮動小数点だと、いつまでも減速しながら近づくから、残り1ドット以下になったら移動終了ってしとけ。
108名前は開発中のものです。:04/10/29 01:25:10 ID:76Rm40v4
等加速度運動でいいんなら、等差数列をつかうとうまくいくよ
109名前は開発中のものです。:04/10/29 02:10:38 ID:YLoCNwP9
>107

簡単で使い勝手よさそう
使わせていただきますm(_ _)m
110名前は開発中のものです。:04/10/29 07:29:23 ID:FruiSP8p
>>105
あ、間違えた。>>103

x - xo = vo × t + a × t × t / 2
が正解。
111名前は開発中のものです。:04/10/29 19:01:42 ID:KOzu5SCq
>>107
俺の秘蔵のテクを勝手に書くんじゃねー

というか便利ですよこれは、本当に。
112名前は開発中のものです。:04/10/29 21:43:11 ID:AHxXmwY+
よかったよ。
記憶違いか積分を忘れたか、と焦ったじゃないか。
思わず生徒時代の物理の教科書引っ張り出したよ。
来年30になるしな、高校時代なんてもう遠い日の思い出。
113105:04/10/29 21:52:52 ID:UD9l+DIN
>>110
俺も後で見直したときに式が間違ってた割りに答えが合ってて笑ったんだが…
「45 ≠ 10*10 + (-1)*10*10/2 = 50 だから矛盾」かな。
ちなみに>>103のまま計算すると値は95
114名前は開発中のものです。:04/10/29 22:14:55 ID:76Rm40v4
>>107
一見便利そうだけど、
時間tでX移動したいとか思ったとき
結構めんどくさくねえ?
115名前は開発中のものです。:04/10/30 04:30:46 ID:iJlOT/uL
厳密に動かしたいんだったら厳密な方法でやればよろしい。
116名前は開発中のものです。:04/10/30 07:25:13 ID:20kzn73K
加速度やら、疑似空気抵抗やら、摩擦やらを入れると、挙動としては正しいし、
動かしても納得の出来る動きになるけれども、計算が面倒になるよな。
117名前は開発中のものです。:04/10/30 07:28:39 ID:20kzn73K
まあ、現実の戦闘機にSTGみたいな動作をさせるのは無理
だから、そこまで気にする事ではないのかもしれんケド・・・
118名前は開発中のものです。:04/10/30 08:38:06 ID:45h7wobr
シューティングにそんなの望んでる奴がいるのか疑問
119名前は開発中のものです。:04/10/30 08:52:22 ID:w+aLMHAP
もったりした動作が良いなら、等加速度運動が良いし、
その状態でごく自然な最高速度を設定したいなら、
空気抵抗みたいなモノを定義しとけばいい。
その意味では、物理学は大事だと思う。

けれども逆に、ゲームの面白さと物理的な説得力は、
必ずしも結び付くモノでもない。

これは、シューティングに限った話ではないな。
むしろ、どのジャンルにでも言えることだと思う。
ゴッチャにしてる人が多いケド。
120名前は開発中のものです。:04/10/30 09:41:30 ID:vD9ARlUf
等加速で止まる程度ならともかく、いろいろ変数が増えると手に負えなくなる予感。

現実の機械だって、こういうことは解析的にはやってないんとちゃう?
ファジー制御とかである意味適当に止めてそうだが。
121名前は開発中のものです。:04/10/30 13:33:11 ID:l1Dqx9hw
必要無い、でFA
122名前は開発中のものです。:04/10/30 13:47:40 ID:KepR6urK
プレイヤーが思ったとおりに動くようにするのが一番いいんですよ
123名前は開発中のものです。:04/10/30 18:10:31 ID:bcRy6fuO
製作者が楽しいと思えるゲームなら、
遊んだ人間が楽しいと思える可能性はある。
124名前は開発中のものです。:04/10/30 23:53:00 ID:jmJkJ3we
当然のことを勝ち誇ったように!
125名前は開発中のものです。:04/10/31 00:08:36 ID:3ymG3mqi
クリエイターに当然という言葉は必要ない!
126名前は開発中のものです。:04/10/31 00:39:45 ID:IPA3UVIJ
>>124
製作者の楽しめないゲームが売り出されている限り、
こーゆー話は出てくると思うぞ。
127名前は開発中のものです。:04/10/31 03:01:42 ID:e5fBY3ES
つまんないと思いながら作るんですか・・・
128名前は開発中のものです。:04/10/31 03:10:40 ID:Q6NO+u9d
>>127
実際、それで商業辞めて同人に来るヤシも少なくは無い。
129名前は開発中のものです。:04/10/31 03:31:20 ID:1yqdSB8I
最初は楽しいつもりなんだけどね…
先に役員を喜ばせないとイカンのよ…
130名前は開発中のものです。:04/10/31 06:14:23 ID:9VerqiP/
だから、製作者自身が楽しめるゲームなんてほとんどないって。

どんなに良くできたゲームでも10時間や100時間で飽きてしまうのに、
それを作るのには月単位、年単位の時間がかかるんだから。
ものづくりは甘くねー
131名前は開発中のものです。:04/10/31 06:17:21 ID:QdxhdEfl
>>130
> どんなに良くできたゲームでも10時間や100時間で飽きてしまうのに、
> それを作るのには月単位、年単位の時間がかかるんだから。
> ものづくりは甘くねー
MMORPGとかなら年単位で遊ぶから大丈夫。
... と、思ったが、あれは開発時間もさらに、だしな。
132名前は開発中のものです。:04/10/31 06:18:42 ID:1yqdSB8I
敵キャラの配置決めた後実際に遊んでみて楽しくて仕方ないんだが…。
そんな俺は幸せなアホですな。
133名前は開発中のものです。:04/10/31 14:18:38 ID:1x3Fu6uT
俺「とりあえず最低限の敵出しした」
 ↓
俺「おもれー」
 ↓
テストプレーヤー「おもれー。これこれこうしたらどうよ」
 ↓
俺「修正したー」
 ↓
テストプレーヤー「いいかんじじゃん。続き作れよー」
 ↓
俺「うーん。めどいしちょっと調整を…」
 ↓
俺「うーん。もう少し調整を…」
 ↓
俺「あーん。調s(ry」
 ↓
テストプレーヤー「さっさと続き作れよ」
134名前は開発中のものです。:04/10/31 14:19:29 ID:+cpVp1K4
>>132
いいじゃないか、まさに理想的だ。
楽しいうちはモチベーションも維持するのも楽だし、なにより作業が苦痛じゃないっしょ。
135名前は開発中のものです。:04/10/31 14:46:05 ID:6/LNfdfF
>>132
そのモチベーションを最後まで持っていられるんであれば大変素晴らしい。
136名前は開発中のものです。:04/10/31 14:46:35 ID:Lv1y5Zzt
>>130
確かに甘くないね。けどプレイに関しては、
シューティングは一回クリアしただけで終わらないが理想だから、
やはり飽きないゲームが理想だね。
そりゃぶっつづけで何時間も連続、では飽きることあるだろうけども。
何度でもたのしめるもの、それには今までにないような
新s(ry
137名前は開発中のものです。:04/10/31 17:12:08 ID:e7PnL7kA
そかなぁ?
Flashのゲームなんか、ベクタあたりに転がってるシューティングより
はるかに面白くよくできてるのが結構あるけど、あまりやり込まなくても
手軽に最後まで見せてくれるのでありがたい。
昔はゲーム自体少なかったし、ネット環境も悪かったから同じシューティング
を何度もプレイしたけど。
138名前は開発中のものです。:04/10/31 17:26:34 ID:byccYx2K
アタリ判定について詳しく書かれてるサイトない?
139名前は開発中のものです。:04/10/31 17:28:57 ID:Yafruvvg
それはクリアすることにしか楽しみを見出せてないからそう思うんだよ。
オレなんかはドドンパチが好きなんだが、HITコンボが繋がってるのが楽しいので
クリアするよりも5面いって生き残ることの方が楽しめる。

5ボスまでノーミスでいけるようになってもクリアしたのは2回だけだw
140名前は開発中のものです。:04/10/31 19:19:23 ID:SJV/HPcZ
忙しいけどより多くのゲームをプレイしたい人もいるだろうし、作者の挑戦に
応えたい人もいるだろう。
攻略してもらいたい作りか、自分のメッセージ(やりたいこと)をより多くの
人に伝えたいのか、その辺も考えて調整する必要はある。

ただよほどの物でない限り、ほとんどのゲームシステム、ギミックが徒労と
なって日の目を見ることがないという危険性は否めない
141名前は開発中のものです。:04/10/31 20:13:33 ID:NQy4jMEt
敷居は低く、学習効果が高く、それでいて奥が深い
ってのが理想なんだけどね。
言うは易し。
142名前は開発中のものです。:04/10/31 21:24:07 ID:SRMb4d0S
1プレイを短く、クリア自体は楽、けどプレイによってスコアに差が出るような...
最近のプレイスタイルから見ると某自爆ゲーみたいなのが理想的かも
143名前は開発中のものです。:04/10/31 21:46:57 ID:K6aBvEBy
その方向性を突き詰めていくとミニゲームになっちゃうからな。
理想を追い求めるのも悪くないが、加減も大事だよ。
144名前は開発中のものです。:04/10/31 22:03:06 ID:1/+fVq+8
ミニゲームってのもイマイチわからない言葉だな。
145名前は開発中のものです。:04/10/31 22:55:57 ID:6cg8BrvN
>>138
ちっとも詳しくないが
こんなん張って混乱させてみる
ttp://www.aya.or.jp/~sanami/peace/memorial/code11-20.html#CODE14
146名前は開発中のものです。:04/11/01 03:51:33 ID:ZrpzWVgU
>>145
>やねさんからVisual C++6.0に付属のSTLはHewlett-Packard製であるとの指摘をいただきました。
この指摘も間違ってるし…
147名前は開発中のものです。:04/11/02 00:26:52 ID:7ho0NGhk
>>146
本当はDinkumware製だっけ?
148名前は開発中のものです。:04/11/03 11:11:43 ID:XBe4BPNt
ttp://www.geocities.jp/koumotsh/
の20041102すごいな、多弾ベンチマークってとこか
うちだと弾15000発くらい出た
全画面モードだと起動直後に500〜700に抑えられてしまうけど
DirectXを9.0cにするとか、VC環境入れて手元でmakeするとか、そのあたりはまだ試してない
149名前は開発中のものです。:04/11/03 12:01:48 ID:LtYuID/W
XPSP2プレインストールマシンだけに最初からDirectX9.0cだがまったくうごかねぇよ
150名前は開発中のものです。:04/11/03 15:33:48 ID:1aleni9a
>>148
凄いというよりキモイ。
実際、ゲームにして何がおもしろいのかわかんねぇーし。
151名前は開発中のものです。:04/11/03 15:43:53 ID:DFVyLVj0
ベンチマークとゲームの面白さが関係するという発想がわかんねぇー
152名前は開発中のものです。:04/11/03 15:56:15 ID:1aleni9a
>>151
おれもわかんねぇーw
153名前は開発中のものです。:04/11/03 15:58:28 ID:T/8Nj4X1
ジェノサイドサーキットの人だね。
154名前は開発中のものです。:04/11/03 16:08:15 ID:y8gGSTuH
ベンチマークといわれてFF11やゆめりあ、3DMarkなど、
処理速度計測よりもゲームのデモのようなものをイメージしてしまう人も、最近は多いのかも知れないな。
ベンチ詳しくないんで今適当にぐぐってタイトル挙げただけだが。
155名前は開発中のものです。:04/11/03 17:29:32 ID:ggQCUYA/
ベンチといえば、森ベンチしか浮かばん
156名前は開発中のものです。:04/11/03 18:40:44 ID:GLXEj8H3
ちゃちゃベンチがメインだった
157名前は開発中のものです。:04/11/03 20:00:44 ID:x7tYJ7vi
ゲフォ専用のなにかを使っているんだろう。ガメンクリアもしてないみたいだし、ウチでもうごかね。
AthlonXP3000+ RADE9800XT
158名前は開発中のものです。:04/11/03 20:32:34 ID:cvPyTlLg
>>157
アホちゃうか?ゲフォ専用?
HardwareShadowMap使ってるように見えるか?
WBufferDepth使ってるように見えるか?
ソース入ってるのに読めないの?文盲?

単純な話だよ。DirectXのプロパティでreleaseに変えてみ。debugだと引っかかる。
159名前は開発中のものです。:04/11/03 20:55:51 ID:YLC05zq/
いやそんな罵倒しなくていいから
160名前は開発中のものです。:04/11/03 21:19:51 ID:u0naCw25
実は本人
161名前は開発中のものです。:04/11/03 21:37:17 ID:YLC05zq/
読めて当然と思っている模様。
162名前は開発中のものです。:04/11/03 23:32:02 ID:x7tYJ7vi
ずいぶん気に障ったみたいだなw ソース読んで動かすほどのものなのか。

>文盲?
動かす方法があるならちゃんと書いてURLはっとけや。いちいちソースみてるやついるか?
163名前は開発中のものです。:04/11/03 23:38:30 ID:x7tYJ7vi
main.cppに
static BOOL            systemTask(void);
static BOOL            SystemTask( void );

ってあるけど、どこからも読んでないのはいいとして、あやしげな名前の付け方してるな。
良く間違えないもんだ。


つーかどこ読めばdebugモードだと動くってわかるのか、DirectX初心者のオレにもわかるように教えてくれよ。
164名前は開発中のものです。:04/11/04 00:32:23 ID:FJcBHOkO
>>158
見てないから知らんけど
それって、DirectXのエラーでアボートなりアサートなりしてるて事か?
ようするにバグがあるとw
165158:04/11/04 01:06:17 ID:gD6NZfMv
なんか俺、作者扱い?それは嬉しいな。
「森のクリスマス」以来のファンだし。

とりあえずID:x7tYJ7viは必死過ぎるから。
166159:04/11/04 02:14:52 ID:EUpD603b
客観的に見て必死なのは158だと思うがな
167名前は開発中のものです。:04/11/04 03:08:40 ID:CshyOyJF
いや、159のEUpD603bが必死過ぎるぞ。
168名前は開発中のものです。:04/11/04 03:09:47 ID:gc/yghlK
必死な人の多いスレでつね。
169159:04/11/04 03:18:09 ID:EUpD603b
158がもう少し普通の書き方してりゃこんな展開にはなってないと思うが…
170名前は開発中のものです。:04/11/04 03:29:01 ID:gc/yghlK
>>158>>157の言動にカチンと来たみたいやね。
まあ、158はハードウェアマニアなんだろな。
171名前は開発中のものです。:04/11/04 03:32:11 ID:gc/yghlK
というか普通は、
わざわざ参考になりそうにないようなソースは読まんぞ。
参考になりそうなソースなら、話は別だが。
172名前は開発中のものです。:04/11/04 04:16:19 ID:uqcHXYYY
ID:gc/yghlK必死だなwwww
173名前は開発中のものです。:04/11/04 08:26:06 ID:hvSBgVDp
IDと冷めた視点からして170が作者
174名前は開発中のものです。:04/11/04 11:26:52 ID:lf0wBUpx
滅殺回路のひとだね。有名な人じゃん。
本職が絵描きらしいからバグぐらい見逃したれよ。
175名前は開発中のものです。:04/11/04 17:48:45 ID:6cfzGJaa
http://www.itmedia.co.jp/news/articles/0411/04/news023.html

・・・・もうね、アフォ(ry
176名前は開発中のものです。:04/11/04 18:15:24 ID:EUpD603b
アメリカ人はバカなので仕方ありません。
177名前は開発中のものです。:04/11/04 18:38:23 ID:jiQUk46z
ってことはなにかよ、俺ら自分の作ったゲーム、
英語版Windowsでは起動できないようにしなくちゃならんわけ?
やってらんねー。
178名前は開発中のものです。:04/11/04 19:16:34 ID:0G/R/s3h
どういう判決が出るかだよな
179名前は開発中のものです。:04/11/05 00:34:55 ID:NhCsJa9C
リスト見ると日本叩きが目的じゃないのか
180名前は開発中のものです。:04/11/05 04:01:42 ID:i37XUvTF
"TV"じゃなければおっけー

なんて理由がとおったりしたら笑えるけど、特許だと意外とあるかも。
181名前は開発中のものです。:04/11/05 06:05:02 ID:U+LQDEzV
>>179
全然。
EAやLucas、THQ、Ubiだって入ってるじゃん。
182名前は開発中のものです。:04/11/05 18:33:37 ID:dZGc50N/
でも日本企業が明らかに多いわけで。
・・・ああ、日本の技術力が高いからか。
183名前は開発中のものです。:04/11/05 21:11:57 ID:COxEXy5j
別に日本の技術力が高いわけでは無いが
184名前は開発中のものです。:04/11/05 22:33:56 ID:Ra0RL8j0
>>163
debugモードとDirectX初心者って何か関係あるのか?
185名前は開発中のものです。:04/11/06 01:10:01 ID:Z9JduIbF
しかしPCには甘く、家庭用ゲーム機がその主な矛先だったら ((((;゚Д゚)))ガクブル
186名前は開発中のものです。:04/11/06 09:16:46 ID:aP4gUmDZ
Σヽ(゚Д゚; )ノ
M$の陰謀かっ!?
187名前は開発中のものです。:04/11/06 09:30:42 ID:N8GIKkiE
UbiにVivendiにEAだろ。全然PCに甘くないし。
・・・そういえば確かにリストにM$入ってないな。
188名前は開発中のものです。:04/11/06 11:31:31 ID:AQaxhJE+
NINTENDOも入ってない。つまり、弱腰企業を狙い撃ち。
189名前は開発中のものです。:04/11/06 13:34:11 ID:Z/lsvqj3
あるいは既に和解を済ませてるか。
コイル氏事件なんてのもあったな。
190名前は開発中のものです。:04/11/06 13:45:32 ID:5FP1f1FZ
アメリカは交渉が主体の国だからね。交渉で弱気になれば、必ず負ける。
なぜならあの国では、論理はあくまで、交渉のための道具にすぎないから。
191名前は開発中のものです。:04/11/06 15:34:54 ID:1XGVXCHo
>>188
任天堂、ソニー、マイクロソフト。
ハードやシステムを供給しているところを避けている感じがする。
192名前は開発中のものです。:04/11/07 03:38:21 ID:RBonJNjZ
>>191
下手にそーゆー所を訴えると、訴えの前提になる足元を、崩されかねないからだろ。
なるべく無知なヤシを狙うのが、こーゆー連中のやり方。
193名前は開発中のものです。:04/11/07 12:59:38 ID:sKz+3aWe
なんかやり口が総会屋と変わらん気がする
194名前は開発中のものです。:04/11/07 13:44:12 ID:nJzeLnpH
まあアメリカだし
195名前は開発中のものです。:04/11/10 21:17:40 ID:jkucHUnU
BulletML記述に関して、質問があるんですが、どこで聞いたらいいでしょうか?ここですか?
196名前は開発中のものです。:04/11/10 21:26:45 ID:p4Cth+7h
>>1を見るに、ここで良いっぽい。たぶん教えられる人がいる筈。
197名前は開発中のものです。:04/11/10 21:48:27 ID:jkucHUnU
それでは質問させて頂きます。
BulletMLで敵機から自機の距離を得ることは出来ますか?
Luaじゃなきゃだめでしょうか。
あと、そもそもBulletMLで弾幕を作れるようになるには、どうすればいいでしょうか?ソース見て研究?
198名前は開発中のものです。:04/11/12 02:34:07 ID:eRfnIxj4
うむむ、教えられる奴が降臨しないな。
すまんが俺にはワカラン。
199名前は開発中のものです。:04/11/12 15:38:03 ID:TGkg4yrd
BulletML使い、以前は見たんだが最近は多忙か留守か
こういうときこそBulletMLを普及させるチャンスなんだけどな
200197:04/11/12 16:28:55 ID:0xutD8FO
マターリ待ってます。
201名前は開発中のものです。:04/11/12 18:08:57 ID:w2+QOqXf
・BulletML使ってるゲームの.BMLファイルをいじる
・webにいくつかある、BulletML体験Javaアプレットをいじる
このあたりが入り口なのかな?
リファレンスはLibBulletMLあたりかその他の付属ファイルか。
BulletMLを実際に組み込んでみる際のコツを解説したページもあったな。
BulletMLwikiあたり作って情報集めるのがいいのかもな。
それに類するポータルがもうありそうな気もするが。
202名前は開発中のものです。:04/11/12 18:51:57 ID:h+fweHIZ
このスレで聞いていい物かどうかわからんが聞いてみる。

ある画像にぼかし処理いれたいんだけどどうすればいいのかわからん。
ソースつきで誰か解説頼む。
203名前は開発中のものです。:04/11/12 18:59:41 ID:J3SPc7DZ
「ぼかし処理 ソース」でぐぐったらトップにそれっぽいのがヒット
もうすこし検索ワードを工夫すればもっとヒットするだろうな
204名前は開発中のものです。:04/11/12 20:32:52 ID:fCBTrE+m
>>197
誰か他の人が答えるかなぁ〜と思ってたんだが誰も答えないんで答えとく。

BulletMLでは自機までの距離を得ることはできない。
勿論、自分で仕様を拡張しちゃえばできないことはない。libBulletMLはオープンソースだし。
まぁそんなところで。
205197:04/11/12 20:51:41 ID:boBUXegl
>>201>>204
ありがとうございます。正直言って、僕プログラミングはかじったこともないんですが、
このへんを切り口に頑張ってみます。
206名前は開発中のものです。:04/11/12 21:10:34 ID:D6Zkc6CL
DOSでも使える弾幕のツールってあるっけ? 友達が聞いてきたんだけど・・・・
207名前は開発中のものです。:04/11/12 22:11:37 ID:kwoqfgR8
よくわからんがPC-98DOS用シューティングツクールとかの話か?あるか知らないが。
208名前は開発中のものです。:04/11/13 00:21:23 ID:Fwm7RLmI
なんで今更DOSなんだ
209名前は開発中のものです。:04/11/13 00:48:26 ID:jTmaapkm
専門学校でDOSのゲームを作ってるらしくて・・・スレ汚しスマソ
210名前は開発中のものです。:04/11/13 04:37:34 ID:0zAouwFN
DOSでも何でも基本は同じでしょう。
『弾幕のツール』が何を意味してるのかサッパリ検討が付かんけど・・・。
211名前は開発中のものです。:04/11/13 05:22:10 ID:2sL69RnZ
BulletMLのコンセプトは面白いと思ったけど、
こんなんそのまま使えるような単純なシューティングなんて作ってねーしとか言ってみるテスツ
212名前は開発中のものです。:04/11/13 11:04:14 ID:uySDXgav
技術ある人は自作するから使わないし、技術無い人は使いこなせない、そういう感じ。
ABA GamesのSTG見てるとかなり高度なこともできているようだけど、
あのレベルでやろうにもBulletML以外の部分が必要(?)に見えて結局やれない。
ソース読んで盗める技術のある人にとっては問題ないのかも知れないが…。
BulletMLだとかゆいところに手が届かないようだ、じゃあ使うのやめて自作だ、という人はいると思うんだが、
そのかゆいところに手が届きづらい例と対処法の蓄積があるといいようにも思う。
213名前は開発中のものです。:04/11/14 20:26:20 ID:q4b9NoG1
ABA Gamesの新作出たけど、やっぱあれもBulletMLだね。
あの人の作品って細かいギミックとかじゃなくて、
一発ネタとセンスで作ってる感じだからBulletMLで十分なんだろうね。
なんだかんだ言っても、BulletMLはABA Games専用なんだろう。
214名前は開発中のものです。:04/11/14 22:42:24 ID:0iCy3iL8
TUMIKI Fightersは割と遊べる難度調整だったなあ
あれのおかげで、そうかBulletMLもまともなSTG作れるんだ、と思ったものだ
215名前は開発中のものです。:04/11/14 23:30:35 ID:+Q2d6g7c
乱数否定組が沈黙するABA Games
216名前は開発中のものです。:04/11/16 08:15:41 ID:j2tf3eNf
↑自演乙。
217名前は開発中のものです。:04/11/16 12:38:27 ID:sDeDKJiW
え、神様降臨??
218名前は開発中のものです。:04/11/16 20:20:09 ID:JjM4p/WT
本人じゃなかったら
他人の作ったもので威張り散らす勘違い君だな
219名前は開発中のものです。:04/11/16 20:29:16 ID:s9uxw6dA
乱数否定組とか勝手に集団にして敵視してるし
沈黙するとかも勝手な妄想だし
220名前は開発中のものです。:04/11/16 21:09:31 ID:+AcB1eaZ
・リプレイファイルに乱数の種を記録するといいよ → リプレイの是非で荒れた
・ある種のゲームは乱数をできるだけ減らすと面白いよ → 乱数ゲーを否定されたと勘違いして荒れた
こんなとこだったか。
221前スレ75:04/11/16 23:59:01 ID:+DPLQEuC
>>216 ・・・ 湿気た撒き餌
>>217 ・・・ ボケた
>>218 ・・・ 食い付いた
>>219 ・・・ 相槌打った
>>220 ・・・ 冷静に火消し
>>221 ・・・ 氏ね
222名前は開発中のものです。:04/11/17 00:11:35 ID:F/vQq9xH
s/216/215/
s/217/216-217/
223名前は開発中のものです。:04/11/17 00:34:38 ID:uaFoH3EG
わけわからん
224名前は開発中のものです。:04/11/17 02:29:45 ID:plavnB3x
>>221
ノリツッコミかよ?
225荻本鉄一:04/11/17 13:00:13 ID:rOgjQr7E
言ったネタをなおしたらおしまい
226名前は開発中のものです。:04/11/22 20:12:18 ID:VigmoRlz
ネタ投下。
もまいらCマガジンのタスク特集は見ますたか?
227名前は開発中のものです。:04/11/22 22:09:56 ID:yyK/QESp
それは今でも買えるものですか
228名前は開発中のものです。:04/11/22 23:03:40 ID:PNvLApAb
見たけどびっくりするくらいイラネ
229名前は開発中のものです。:04/11/23 00:04:29 ID:Porc/a6n
Cマガ買ってみました。
関数ポインタ + ワークエリアってまんまクラスだと思うんですが。
結局昔の人がCでクラスのような考え方を実現するために編み出した技で、
Cしか使えない環境ならまだしも C++ でわざわざやるメリットがあるのか
疑問に思いました。
230名前は開発中のものです。:04/11/23 00:06:08 ID:4EIMrJ6Y
>>226
ツマンネーネタはイラネーヨクズ
231226:04/11/23 00:11:05 ID:p2g7c4VR
(´・ω・`)ショボーン
232名前は開発中のものです。:04/11/23 00:38:58 ID:hFGPeG0Y
クラスとコレクション使えればいいだけなんだよな
233名前は開発中のものです。:04/11/23 00:54:04 ID:pnQIehN9
タスクシステムってステートマシンと思っていいの?
234名前は開発中のものです。:04/11/23 03:57:24 ID:l/5rBHwm
Cつーか、アセンブラで編み出した技だな
235名前は開発中のものです。:04/11/23 10:49:22 ID:CdLlhcTC
異種の物を複数登録して順番を並べ替えたりすることが
自然にできる上に高速でタスクはクラスとは違ったメリットがあるな
236名前は開発中のものです。:04/11/23 11:07:43 ID:Porc/a6n
それは共通のインターフェースから継承させるのと同じじゃないのか。
237名前は開発中のものです。:04/11/23 14:12:17 ID:CdLlhcTC
なぜタスクがゲーム向きかというと
ワークはあらかじめ確保されている中から割り当てる
だから、
mallocなどをしないので頻繁にオブジェが生成/死亡されても
メモリが断片化しない &
家庭用ゲーム機のようなメモリの限られている環境でも使いやすい

それとプライオリティの概念がある から PAUSEも簡単に実装できるし

とにかくタスク固有の機能は色々とメリットがあると言うこと

そういえばC++版のタスクシステムも紹介されていたなあ

238名前は開発中のものです。:04/11/23 15:26:08 ID:pnQIehN9
パソコン用のゲームなら敢えてタスクつかわなくてもおk?
239名前は開発中のものです。:04/11/23 15:39:25 ID:CdLlhcTC
>>238
てことかもw
240名前は開発中のものです。:04/11/23 16:06:23 ID:l/5rBHwm
ステップ処理で書くよりも、驚くような効果が簡単に書けるね、タスクだと
241名前は開発中のものです。:04/11/23 18:00:12 ID:sXax5y52
オブジェクトプーリングというのもあるし、
一概に言えないけどね。
242名前は開発中のものです。:04/11/23 19:53:17 ID:Porc/a6n
>mallocなどをしないので頻繁にオブジェが生成/死亡されても
メモリが断片化しない new/delete のオーバーライドでいいじゃん。
うまくやれば可変長にも対応できるし。

もしかしてメモリプール + リストでオブジェクトを管理して、
オブジェクト内に、現在の状態を処理する関数のポインタを持たしてやることを
単にタスクと言うのかな?

243名前は開発中のものです。:04/11/23 20:13:34 ID:hFGPeG0Y
実装方法の違いだけだからそれでいいんじゃね?
単にタスクって単語はあいまいすぎるしな

しかし、断片化しまくりのnew使いまくりのGC前提のJavaですら
アレだけ早いのはうまい管理してるんかね?
ヤング領域のGC速度はやすぎ
244名前は開発中のものです。:04/11/23 21:57:59 ID:pnQIehN9
GCを言語レベルでサポートしてる場合は
手動でメモリ管理する言語よりむしろ速いことが多いらしいよ。
245名前は開発中のものです。:04/11/23 22:03:16 ID:WJYI1GR0
>>244
速いのは当たり前
問題はいつ遅い瞬間が来るかだ
246名前は開発中のものです。:04/11/23 23:12:21 ID:hFGPeG0Y
>>245
それ細かいこといったらリアルタイムOS搭載してないマシンでは
常にそれが起こる可能性がある
仮想記憶搭載している時点でまずあてにならないな
247名前は開発中のものです。:04/11/24 18:36:29 ID:xs9SYdrg
タスクと呼ばれるものの考え方を理解するメリットは仮想メモリもってないコンシューマ系に
そのまま生かせることだろうけど。

せめてGCが任意のタイミングでも呼び出せるようになってれば使いやすいンだがなぁ。
248名前は開発中のものです。:04/11/24 19:06:55 ID:q7BWye6q
任意のタイミングで呼ぶことはできるよ
249226:04/11/24 19:08:50 ID:j4ORPmla
壁|・) コソーリ





壁|ミ サッ
250名前は開発中のものです。:04/11/24 22:17:15 ID:F5VkZpNK
よかったな
251名前は開発中のものです。:04/11/24 22:46:04 ID:4bXfny80
Javaなんかはgcを呼んでも、その時にgcが起こるかどうか保障されない、だからね。
携帯Javaの場合はちゃんと任意のタイミングで起きる。
252名前は開発中のものです。:04/11/24 22:59:22 ID:4ZX1kcXD
一応仕様としては保障はされないが
J2SEでSUNの実装でちゃんと呼ばれる

が、old領域もGCするので意味なし
ループ中で使うメモリ量を把握してヒープ領域とnew領域の割合とかいじって
System.gc()は呼ばないほうが早いというわけだ

JavaはGC時間が1ms切ってるので通常のWindowsアプリなら
なんの問題もないと思われ

newの後のdeleteは意識はしないが使ってるメモリ量は把握してコントロールできてないと
GCおせーって思う馬鹿が出現するから注意
253名前は開発中のものです。:04/11/24 23:08:22 ID:D54bLpOf
なんかタスクとメモリ管理が混ざっちゃってる奴いねーか?
254名前は開発中のものです。:04/11/25 12:11:52 ID:ulEKcwcM
> それとプライオリティの概念がある から PAUSEも簡単に実装できるし

ここが理解できないんだけど、
PAUSEって何ですか?
255名前は開発中のものです。:04/11/25 12:55:23 ID:gjnOUkhd
>>254
アクションゲームでさ、
コントローラのStartボタンを押したら画面に「PAUSE」
とか文字がでてゲームが一時停止するでしょう?
あれのことだよ
つまりそれぞれのタスクがプライオリティとかの値を持っているから
指定したプライオリティのタスクは一時的に停止状態にするとかできるからこういう機能も
タスクなら簡単に実装できるってこと
一時停止だけじゃなく場面が変わる時に敵の球をまとめて消すとかそういう事にも使える
256名前は開発中のものです。:04/11/25 13:04:18 ID:mWnwOqXV
PAUSEさせる場合は素直にゲームループの処理関数の制御を
PAUSE関数(処理は一切しないで描画のみ)に移行させるだけだなあ
257名前は開発中のものです。:04/11/25 13:16:32 ID:ulEKcwcM
>>255
分かりやすい説明をありがとうございましたm(_ _)m
258名前は開発中のものです。:04/11/25 13:16:49 ID:gjnOUkhd
タスクでのPAUSEはSLEEP(一時停止)していない
タスクは動いたままだから
キャラは止まっているけど
背景は動いてるとか みたいな事とかできたりするわけよ
259名前は開発中のものです。:04/11/25 13:34:43 ID:jrGc13nB
タスクって便利な言葉だなぁ…。
何か特別なことのように感じるよ。
個々のオブジェクト毎に管理番号、状態番号を
持たせるってのはゲームのプログラムじゃ当たり前な気がするけど。
260名前は開発中のものです。:04/11/25 13:40:55 ID:gjnOUkhd
もうひとつタスクのテップ処理との大きな違いは
タスクはプライオリティ(優先度)順に実行される点

キャラクターとかは普通、個々のタスクは自分で描写しない

オブジェの描写専用タスクを作ってここのタスクが登録したオブジェを表示したりする
これもタスクと似たようなリスト構造になったものを使って背景の後で優先度順に描写されていく
261名前は開発中のものです。:04/11/25 13:47:21 ID:jrGc13nB
ステップ処理って何?
262名前は開発中のものです。:04/11/25 17:48:13 ID:ulEKcwcM
>>260
描画は一つのタスクがまとめて行うってことですか?
もしそうならサウンドの再生なんかも普通は一つのタスクでやるのかな。
263名前は開発中のものです。:04/11/25 17:59:26 ID:gjnOUkhd
>>262
DirectSoundの場合はサウンドにタスクいらないんじゃないかな
264名前は開発中のものです。:04/11/25 18:38:51 ID:4GEarigO
各キャラの描画もそれぞれ別タスクじゃないの?
265名前は開発中のものです。:04/11/25 19:56:21 ID:y9hM7XYU
クラス(タスク)の設計による、
タスクシステムの枠にとらわれてクラスの設計が制限されるのでは本末転倒かと
266名前は開発中のものです。:04/11/25 20:05:04 ID:+DfpgIpQ
あー、タスクもすっかりいかがわしい言葉になっちゃったね。まるで幸運を呼ぶ壷。
「プロが使う秘蔵のテクニック」みたいなノリで、偶像化されてしまってる気がするよ。
お前実際にそれで1本作ったことないだろってヤツが平然と語ったり記事書いたり。

最近はタスクなんて口に出すのも恥ずかしい。マジで。
これ一発で、ワナビーかフェードアウト組認定されかねんもんな。
「いわゆるタスク」とか前置きつけてみたり(w

アセンブラやC時代ならともかく、今ならまずC++で普通にOOPしろよと。
それで追いつかないような規模や複雑さのプロジェクトになったときに
初めてここの日記↓のリンク先のような議論が生まれるんだけど、
http://www.radiumsoftware.com/0307.html#030702
ほとんどの人には関係のない話だべ?
267名前は開発中のものです。:04/11/25 20:38:43 ID:gjnOUkhd
>>266
まあ昨今の3DゲームならC++じゃないとやってられないだろうね
実装の一つの手段としてそれを用いているわけでイカベーダも
ダウンロードしてきたサンプルのタスクシステムを使った物

趣味の範囲でやってるから古いやり方にとらわれのフェードアウトがどうのとかあんまり関係ないんじゃないかな
268名前は開発中のものです。:04/11/25 20:50:44 ID:Nk5311K7
複雑なのはOOPじゃないとやってられない
単純な2DSTGはOOPの恩恵も大きいのでOOPじゃないとたるい

どっちにしろ必要だな
PC対象ならなおさら
269名前は開発中のものです。:04/11/25 20:55:59 ID:aC2Sk8KW
>>266
>後になって,プレイヤーが「ドア」と会話する必要が出てきたのだ!
ワラタ

まぁ高度なのをやりたい人は高度なとこに進めばいい
270名前は開発中のものです。:04/11/25 20:57:55 ID:Nk5311K7
>>266
俺もC++しかしらないときに継承ばかりではまったことがある

Javaをやるようになって継承と実装という考え方で涙がこぼれそうになったのを覚えている

今思えばかなり恥ずかしい過去だが、もう7年以上前なので時効
271名前は開発中のものです。:04/11/26 00:19:29 ID:k3ZkrOta
まぁ、そんなこと知ってても知らんでも完成してしまえば関係ない罠

中にはシューティング海原雄山みたいなのがいて
「こ、これはOOPだがそこらの素人の物ではない!、なにか別の...」とか言ってるかも
272名前は開発中のものです。:04/11/26 02:02:26 ID:wqPWsONd
死のダイヤモンド!
273名前は開発中のものです。:04/11/26 03:12:18 ID:RhQ6dqGn
>>256
ポーズメニューがオーバーレイ表示されるような仕様が来たらどうすんだ?

継承だとコード重視になるね。
データドリブンで賄えるなら、タスク管理が都合が良いかも。
両方使えるようにするのが一番か。
274名前は開発中のものです。:04/11/26 05:43:47 ID:1G8/iLX9
いい加減C++に移行したほうがいいんだろうが、最近C言語しかサポートしてないハードやらされて
Cでよかったなと思ったよ。
Winでなんか作るときはなんちゃってC++プログラミングだが、使い慣れてないとなかなかしんどいね。

練習がてらにタスクシステムとやらをC++で構築してみるのがいいんじゃないかな。なんでもいいなら。
1度も使わずにアレコレいっても良くわからんもんだし。オレはシューティング作るならCで十分だけど。(ワラ
275名前は開発中のものです。:04/11/26 09:33:54 ID:riDOMDW2
プライオリティがあればタスクシステムじゃなくてもいいってこと?
タスクシステムの解説をいくつか読んだけどプライオリティの説明はおまけ程度か
省かれているものばかりだったのであまり重要な機能じゃないと思っていたよ。
276名前は開発中のものです。:04/11/26 11:43:36 ID:EZXS9gdo
プライオリティとかいう名前の割に、種類とかそういった意味でも
使われてるのが気になる。
277名前は開発中のものです。:04/11/26 13:24:06 ID:5FMqZreJ
プライオリティーという表現が一般的なのかどうか分からないけど
プライオリティーがある範囲内の数値のタスクを停止させたり
タスクリストから削除したい場合に便利という程度かな
これはタスクシステム特有の物ではないと思うけど
例えば弾幕シューティングで、今画面内を沢山の敵弾が動いているものとして
Aという敵キャラが吐いた弾だけを消したい場合、Aから吐かれた弾にAとの結びつきを表す情報を入れておく
タスクリストを先頭から辿って、A情報が含まれる弾タスクを消す
278名前は開発中のものです。:04/11/26 15:17:00 ID:QeKmSBXQ
処理の優先度を表すことに変わりないが、作る時にはオブジェクトの種類と考えた方が都合が良いという皮肉。

タスクの利点とされる「汎用性」は果たして意味があるのか、最近わからなくなってきた。
処理の順番に柔軟性を持たられせる意味も、全てのオブジェクトを一元管理できる意味も
チェンジタスクの意味も、本当にあるのか?

どうせ作りやすくしようとすればするほど汎用性なんか失われてゆくんだ!全て無駄だ!
279名前は開発中のものです。:04/11/26 15:33:00 ID:j2nRSbpj
何でも出来る行儀の悪いプログラムになりがち。
280名前は開発中のものです。:04/11/26 16:19:40 ID:QN/yziEK
チェンジタスクの派生型としてコールリンクって言うのもあるね
BASICでいうGOSUB RETURNみたいなの
漏れはその存在を知って自分で実装したけど

あと一定回数停止とか
281名前は開発中のものです。:04/11/26 16:30:04 ID:QN/yziEK
>>278
そこで新しく追加された変数が属性ですよ
優先度に対して一斉から 属性に対してに変わっただけだけど

で、さらに進化したのが親子タスクだね
親が死ねば子も死ぬっていう

これはサイトで公開されてる奴にはないね

優先度はenumで(PLAYER,ENEMY,PSHOT,ESHOT)ってかんじで表現したようなものじゃなくて

0x0000から0xffff という範囲にすると汎用性があがるね

まあ必要になったらタスクを拡張して機能を付けちゃえばいいんじゃない
282名前は開発中のものです。:04/11/26 16:52:29 ID:QeKmSBXQ
283名前は開発中のものです。:04/11/26 17:01:53 ID:QN/yziEK
>>282
そうです まあそこの受け売りみたいな
2chにアドレスはるのって気が引ける
284名前は開発中のものです。:04/11/26 17:10:01 ID:znvNIPwj
犯人は手に噛み傷を負ってる可能性大だな
285名前は開発中のものです。:04/11/26 17:14:57 ID:wqPWsONd
閉鎖って・・・いまのうちに保存しておかねば
286名前は開発中のものです。:04/11/26 17:43:26 ID:y74Rip2V
閉鎖・・・マジだ。
ということでHPを丸ごと保存しましたw
ロジシャンロードの管理人って、ゲームプログラマなのかな。
287名前は開発中のものです。:04/11/26 18:29:40 ID:QvnWtaAS
今まで列挙されたタスクシステムの機能は全てSTLに含まれているわけですが
そのあたりはどうお考えですか?
288名前は開発中のものです。:04/11/26 18:43:06 ID:F/4BM1fo
STL?
289名前は開発中のものです。:04/11/26 19:21:27 ID:njh1GOpc
プライオリティ付きタスクのことを言ってるならpriority_queueのことかな。
まあ「タスクシステム」なんていってもあんなものは結局
メソッドつきオブジェクトのコレクションでしかないからなー
290名前は開発中のものです。:04/11/26 19:23:26 ID:QN/yziEK
まあ仮想関数よりは関数ポインタのほうが速い罠
291名前は開発中のものです。:04/11/26 19:30:34 ID:2115kDh3
仮想関数より委譲使わない?
292名前は開発中のものです。:04/11/26 19:41:27 ID:B25lL8lR
>>287
STLにタスクシステムのようなものが含まれているんですか?
よろしければ詳細をおながいします。
293名前は開発中のものです。:04/11/26 20:53:22 ID:RhQ6dqGn
俺がC++で組んだ時は、仮想関数,list,vectorぐらいしか使わなかった。
生成にファクトリ、チェンジタスクにステートパターン使った。
タスクマネージャクラスで管理。こんな感じ。
294名前は開発中のものです。:04/11/26 22:05:43 ID:JQLuIk/m
まぁ、ゲ製ですから
295名前は開発中のものです。:04/11/26 22:23:20 ID:njh1GOpc
最近C#に移ったが全然遅く感じない。生産性が上がりすぎで満足してる。
C++にしてもその辺のシステム周りの速度低下なんか気にしなくていい。
仮想関数の呼び出しが遅いったって微々たるものだよ。

プライオリティの設定なんぞしなくても
STLならlist<Enemy*>、list<Bullet*>、…って感じで何本もリスト用意するだけ
(ちなみにSTLは速度に最適化してあるため速度云々の話は無視できる)

まあ如何にして楽に作るかですよ
296名前は開発中のものです。:04/11/26 23:00:40 ID:B25lL8lR
なるほど、参考になりますです
297名前は開発中のものです。:04/11/26 23:53:24 ID:0iQGVtbw
>>295
逆コンパイルするから晒してくれ。
298名前は開発中のものです。:04/11/27 00:05:44 ID:ZArG2ZwF
>>295
いまさらだな

.NETとJavaをずっと使ってきた俺はもうC++とか組む気にならねー
それくらいの生産性の違いはあるよな
型が強いとかコンパイルチェックが強いとしぜんとバグは取れるし
そのぶんゲーム自体にかける時間がとれる

昔はこれでもポインタ操作がないことに不安を覚えたものだ>Java
よくよく考えると8bit時代Basicで遊んでたわけだから
ポインタ使うかどうかなんて方法論でしかない
ならないほうが後から追いやすく安全だしね

一人で作ってるならまだいいがC++だとほんと人による能力の差が影響しすぎる

最近はJavaのServerHotSpotVMをリアルタイム系で生かす方法が
あるかどうか調べるのが熱い

まぁ2DSTGならインタプリタモードでも余裕だけど
299名前は開発中のものです。:04/11/27 00:58:22 ID:8QEOBztc
語りたいだけ語ろうや
ここなら少しくらい恥ずかしいこと言ってもスルーしてくれるし
300名前は開発中のものです。:04/11/27 01:48:49 ID:Qeo0mIrG
>>295
ハゲドウ
さらにEnemyやBulletがoperator newをオーバーライドして
メモリプールから割り当てるようにすると。
301名前は開発中のものです。:04/11/27 03:01:42 ID:8z4BC2SP
>>295
親子関係を持たせるのが面倒そうだから今まで敬遠してきたけど
その辺どうなの?
302293:04/11/27 03:03:30 ID:jTW521Lh
>>298
出来ればどの程度いけるのか晒して欲しいな。
参考になるものがないから、取り敢えずC++で作ったけど。

>>300
その辺は手付かずなんですが、Enemyなりの、最大サイズを数種類、数百個単位で
メモリプールを用意しておく。という感じ?(STLPortの内部defアロケータはそんな感じだとかどっかで見た)
303293:04/11/27 03:07:33 ID:jTW521Lh
>>301
基底クラスは同じでしょう。で、キャストとか。
突き詰めるとツリー構造になりそうな気がする。
コンポジット使ってるとか。
304名前は開発中のものです。:04/11/27 03:38:54 ID:j5l6idHS
>まあ如何にして楽に作るかですよ
同意。俺もこれを意識するようになってから、ゲーム製作の進捗が大きく進んだ。
305名前は開発中のものです。:04/11/27 03:53:46 ID:VJhqWams
シーン切り替えとかが死ぬほどめんどくさいんだけど
なにかいい手法ってないのかねえ
306300:04/11/27 03:59:32 ID:Qeo0mIrG
>>302
そうそう。
ある程度の種類ごとの最大サイズで確保する。
テンプレート使って種類ごとにプールを持っておけば、
例外的にデカいクラスのせいで無駄な領域確保する必要もない。
初期化時に確保する数を指定出来るようにしておけば
余計なもの作り過ぎないで済むし。
307名前は開発中のものです。:04/11/27 04:03:30 ID:jTW521Lh
どの辺りが?
自分の場合は、タスクに似てるけど、別のクラスを用意して管理してる。

現状では、タスクを全削除>生成してるけど、予定では、ゲーム中で共有するタスクと、
ステージ固有のタスクに分けるつもり。
STGの場合はあまりいらないか?
308名前は開発中のものです。:04/11/27 08:01:19 ID:Bufbdi39
ステージ切り替えがメンドウなのはステージ間に持ち越すデータをいきなり定義してしまうからだろうなぁ。
たとえばSTGだと自機の種類とか残機とか。
ステージ間を持ち越すデータを管理する処理系作って、ステージ作るときにそこからステージ側にわたしてやって
終了時に戻すような流れにすれば比較的無難に収まるかと。
リスタートなのかクリアしたからなのかの判断してから戻すようにするとかね。

適当に作ってはまることもままりますが。
309名前は開発中のものです。:04/11/27 11:29:30 ID:ZArG2ZwF
>>302
一番気をつけるのは絶対的な速度的なことではなくGC時間
これのチューニングを出来上がったあとにするだけ
使用するメモリ使用量とかによって数値をいじるだけだからそんなに大変なものではない
ゲームの種類によっても調整方法はかわるだろう
たとえば数分間しばらくGCはでてこないが、GCがいざおきると0.5秒かかるとかで遅い
というほうを選ぶ場合もあるだろうし、こまめにGCがおきるものの1回のGCにマイクロ秒
単位を期待するほうを選ぶ方法がある
STGでは主に後者かな

実際にJavaで2DSTG作ってもCPU使用率5%いくかどうかなんで
速度部分にはまったく問題ないね
インタプリタモードでも10%いくかどうか
だからVBだろうがHSPだろうがなんだろうが言語は問題じゃねー

それならば安定した品質がかける言語を選ぶべきだろう
人によっていわゆる合う言語は違うだろうけど

ちなみにJavaでインタプリタモードにするとアクセラレーションがきかない描画で
いろいろと重くなるのでさすがにお勧めできない

SDLをJavaから動かせばLinuxでもWindowsでもコンパイルのしなおしすらいらずに移植できるな
アクセラレーションも問題なくできるし

ちなみに.NETのほうがゲームに向いていそうでありながら情報が少ないので
Javaベースで開発、移植したほうがいいかもしれない
本当にJavaと.NETはちょっとしたところだけが違う

あと.NETは名前が悪い googleとかで検索条件にいれにくい
310名前は開発中のものです。:04/11/27 18:25:51 ID:6LkhouSZ
検索で調べることしかできんのか?
311名前は開発中のものです。:04/11/27 19:52:33 ID:VJhqWams
頭の悪そうな煽りが始まりました
312名前は開発中のものです。:04/11/27 22:36:30 ID:k6HfBBt4
>>308
いいこと聴いた
313名前は開発中のものです。:04/11/28 08:56:57 ID:vkgHBrSA
久々に来たらシューティング製作とは関係ないスレになっとるな
くだらねえ

雷電IIのリーマンレーザーで盛り上がってた頃が懐かしい
314名前は開発中のものです。:04/11/28 09:54:49 ID:Fadhvgpa
何だじじぃ。昔を懐かしむばかりで周囲に合わせられなくなったら終わりだぞ。
文句を言う前に自分で雰囲気を作ってみてはどうだ? くだらねえ

ま、そんなのはどうでもいいんだが、当たり判定の今の流行ってどういう感じ?
ちまちまと座標確認するのは変わらずなんだろうか。
長方形、半径、いっそ1ドット、どういうのがいいんだろ?
315名前は開発中のものです。:04/11/28 10:29:26 ID:QZ92NZkp
当たり判定に流行も糞もねぇ
316名前は開発中のものです。:04/11/28 10:47:28 ID:jPkLlxlR
・現在流行だと思うゲームの判定を調べる
・自分が真似したいゲームの判定を調べる
好きなのを選べばいい
質問する前に、自分の作ってるSTGの判定とかそれについての考えを晒せば?
317名前は開発中のものです。:04/11/28 11:16:21 ID:hZtuUOH+
半径はお勧めしないよ。
長細いのとか設定するのに複数の円が必要になるから結局手間になるだけ。
長方形と不定形の組み合わせがいいかもね。
弾とかは長方形で大きいものが不定形。
318名前は開発中のものです。:04/11/28 13:08:51 ID:qIa86Ojd
>>317
不定形というのは、物体の領域のマスク画像みたいなのを予め用意しておいて
1ピクセルずつ判定するということ?すごく重そう。
319名前は開発中のものです。:04/11/28 14:58:34 ID:hZtuUOH+
不定形->多角形=三角形の集合です。
意味不明でごめんなさい。

処理は重い部類だと思うけど自由度が違う。
320名前は開発中のものです。:04/11/28 15:08:48 ID:M0zsXPff
そんな細かく形に合わせて判定する必要があるとは思えんが。
前もこんな話でたなあ。
321名前は開発中のものです。:04/11/28 15:26:48 ID:/WYwSSYs
あ、多角形ね、なるほど
322名前は開発中のものです。:04/11/28 15:50:25 ID:hZtuUOH+
>>320
細かくなくてもいいのさ。
菱型のシルエットの敵や、回転するアームとかに判定を付けるのに
矩形を沢山、円を沢山、よりもそれっぽく付けれれば。

まぁ、PCがくそ速いいまなら自分がやり易いようにするのが一番だけどね。
323名前は開発中のものです。:04/11/28 16:21:16 ID:g9GPcPeG
俺は矩形判定でやってるなぁ。
敵とか自機とかのオブジェクトクが矩形判定を複数所有する みたいな。

オブジェクト回転させると、x,y方向固定で中心座標だけ回転するっていう、
グラIIIのシャドーギアみたいな仕様。
そこそこな数に分割すれは十分実用範囲だ。
324名前は開発中のものです。:04/11/28 16:41:27 ID:VvgcPort
そしてこうなるわけだ
http://www.pureweb.jp/~targest/sagifile.htm
325名前は開発中のものです。:04/11/28 16:49:03 ID:rePWdu5Z
>>323
おまえグラIIIやったことないだろ
326名前は開発中のものです。:04/11/28 17:12:29 ID:hZtuUOH+
ていうか、>>323が主流だと思いますよ。
回転による絵からはみ出る判定も、判定の隙間もちゃんと設定すれば発生しない。
俺は面倒くさいからやんないけど。
まぁ、頂点位置を作るもの面倒ですけどね。
327名前は開発中のものです。:04/11/28 17:36:32 ID:gMak4YiV
ショット方向と垂直方向に長い長方形をはみ出さないように置いておけば
大体バレないような気がする。

まーモノには限度と言うものがあるが。
328名前は開発中のものです。:04/11/28 23:34:14 ID:wowyNvTe
323のやり方が解りません・・ 図はないですかね・・
私は ttp://www5d.biglobe.ne.jp/~seiichit/yusyayo1.html でやってますよ
329名前は開発中のものです。:04/11/28 23:39:44 ID:DJQhdM7z
当たり判定専用マスク使用
自機当たり分のメモリだけ調べればいいので簡単
マスク使用しなくても爆炎処理とか別レイヤーでやればおk
330名前は開発中のものです。:04/11/29 00:40:03 ID:Gf9yEB7C
レーザーとかにカプセル状使ってる。
331名前は開発中のものです。:04/11/29 02:07:57 ID:/GDCO54y
2Dなら矩形で十分ですよ。
3D使ったり、回転する物体にグラディウスのレーザーがきっちり形に添って
着弾して欲しいとか思わなければなー。

332名前は開発中のものです。:04/11/29 02:50:34 ID:D8M1qHLQ
>>328
ほい。
http://gamdev.org/up/img/2009.jpg

>>326氏や>>237氏の言うように、必要なだけ細かく設定すればOK。
要は如何にそれっぽい判定を作るか。
SS版シルバーガンがあれば、当たり判定表示モードでプレイしてみるといいよ。

グラIIIの素敵判定はこれを見ればw
http://members.at.infoseek.co.jp/lbl/myweb2_015.htm
333名前は開発中のものです。:04/11/29 03:18:00 ID:mbnpv1zR
>>332
最低だねw>あたり判定
334名前は開発中のものです。:04/11/29 05:44:19 ID:9Bo0k4Vm
必要以上にちゃんと(?)作っても誰も気がつかないしね。だいたいでいいんですよw
(グラ3の評判はアレですが)

人的リソース、もっと直接的に言うとオレらのゲーム造ってる時間なんぞは限られるので
どーでもいい部分としっかりチカラ入れる部分を見極めないといい具合に出来上がりませんよ。
335名前は開発中のものです。:04/11/29 09:04:04 ID:8XeoCidw
ネタに対して野暮なことは言わんでもよろしい
336328:04/11/29 10:22:35 ID:fl7gFbiq
>>332
dクス 回転する場合はちょっと面倒なんですね ですがいい当たり判定ですね
337名前は開発中のものです。:04/11/29 10:30:16 ID:NTRqlczl
>>332の程度で十分だよ
これが問題になるケースはまずない
338名前は開発中のものです。:04/11/29 10:39:49 ID:/235BCVp
これが普通なんじゃないのか。
見た目通りにやろうとしてるアホもおらんだろう
339名前は開発中のものです。:04/11/29 13:10:23 ID:yn1/d2Px
グラ3も68000あたり使ってるんだっけ?
グラ2が68000を2個積んでるってのはX68の移植に当たって散々話題になったので知ってるんだが。
いまのCPUの100倍くらい遅いんだから、まあがんばったほうだと思ってあげるのが吉ですよ。
340名前は開発中のものです。:04/11/29 15:55:43 ID:ndGtlzGW
グラディウス3は必要以上に大きくとってるから文句言われるのであって
細かく設定していないからというのとはちょっと違うだろう。
341名前は開発中のものです。:04/11/29 16:03:18 ID:EziFsQ2N
ゴーファーのおでこも有名だね
342名前は開発中のものです。:04/11/30 02:11:18 ID:R58v7bjz
横シューで不用意に地形に近づくのはご法度ですよ。
そんなんでバランスとってるから廃れたんだろうけどな。
343名前は開発中のものです。:04/11/30 02:25:26 ID:CunE+Z2u
しかし横シューのほうが長期シリーズが圧倒的に多いぞ。
やっぱ横のほうがビジュアル的に有利→世界感やら設定を持ち始める
→シリーズ化、ってことだろうか?
344名前は開発中のものです。:04/11/30 03:08:22 ID:EhpU9xol
一理あるなぁ
縦シュー派が本当にSTG好きな人なんだろうなって思うわ
ヘタレな自分は横シューの方が好きだけど
345名前は開発中のものです。:04/11/30 03:31:02 ID:hVL3/wZs
縦シュー→ドラクエ
横シュー→FF
346名前は開発中のものです。:04/11/30 03:48:18 ID:CunE+Z2u
すまん、オレはウィザードリィ/ウルティマのほうが先にピンと来たw
347名前は開発中のものです。:04/11/30 06:10:24 ID:AovQ+QmU
点&線が軽いしフレキシブルでオススメ
管理が面倒だけど
348名前は開発中のものです。:04/11/30 08:34:52 ID:6oVRFfIY
巨大物体も線でつか?
349名前は開発中のものです。:04/11/30 10:19:29 ID:2QBhQR5o
線というのは直線の方程式のことでつか?
350名前は開発中のものです。:04/11/30 16:41:01 ID:ZKefEKfd
>>343
横画面でコンシューマとの相性が良いのが最大の要因では?
351名前は開発中のものです。:04/11/30 16:47:31 ID:HHLda+1j
多角形の判定はそれほど面倒じゃない。
352名前は開発中のものです。:04/11/30 18:03:12 ID:De1Pc6Qf
凹型はめんどい。
353名前は開発中のものです。:04/11/30 19:21:41 ID:+z+o6OmP
矩形でいいよめんどくさい…w
354名前は開発中のものです。:04/11/30 19:33:35 ID:McB8ZxHN
355名前は開発中のものです。:04/11/30 19:38:47 ID:+z+o6OmP
円てどういうとき使うん?
356名前は開発中のものです。:04/11/30 21:55:43 ID:PfKCvTRH
日本円
357名前は開発中のものです。:04/11/30 22:21:54 ID:BuMgCj8l
忘れたけど、シルバーガンが円だったんだっけ?
358名前は開発中のものです。:04/11/30 22:55:17 ID:V11Y9dYU
>>355
丸いもん同士の当たり判定を取るときとか?

>>357
確かシルバーガンは矩形じゃなかったっけ。
359名前は開発中のものです。:04/11/30 23:39:12 ID:zofF1oHH
円も矩形で近似できるからつかわんなあ
360名前は開発中のものです。:04/11/30 23:51:28 ID:chNRfK3w
円オンリー最強。
361名前は開発中のものです。:04/11/30 23:55:14 ID:8TLAv+q1
真円なら楽かもしれんが横長とかいろいろとかわるようなら厄介だし、
当たり判定は1キャラで矩形の可変長配列を持つようにしてどれかにあたればHITとするのが
普通な希ガス
362名前は開発中のものです。:04/12/01 00:08:12 ID:b+nkHEJg
自機の死亡原因はギガシリーズみたいに被弾のみ、敵と接触無しなら
円(というか2点間の距離)だけでスマートに可能
363名前は開発中のものです。:04/12/01 01:31:13 ID:mXXRcuuL
>>326
細長いレーザーとかは円の集合体として考えるのかな。
串団子みたいやな(笑)
364名前は開発中のものです。:04/12/01 01:40:14 ID:3ml3cEv5
円は回転するものに適している。
>332のように回転具合によって判定に違いが出ることがない。
追加して線(カプセル)判定も使えるし。
365名前は開発中のものです。:04/12/01 02:49:06 ID:IDQk523+
>>363
もっと手抜きするなら
先端部のみ判定

意外と気にならない
366名前は開発中のものです。:04/12/01 04:52:47 ID:nsqoizBy
当たり判定を行うとき

・攻撃側から防御側を見る
・防御側から攻撃側を見る

細かい事かもしれないけど、皆はどうしてる?
367名前は開発中のものです。:04/12/01 07:51:28 ID:RreTrbhh
一箇所で両方にフラグ付けしてやって
攻撃、防御、どっちも同じ方法で参照
368名前は開発中のものです。:04/12/01 07:53:49 ID:Xks3So2m
>>366
俺は「自機側」「敵側」に分けてる。
判定処理を行うのは基本的に敵側のクラス。
敵弾の判定領域のほうが複雑な形をしてるものが多いしね。
369名前は開発中のものです。:04/12/01 11:15:29 ID:KlTIl8Qf
自機弾・敵・敵弾といった種類毎に別のリストで管理してるので、
必要な組み合わせでイテレータを取得してループで判定関数に放り込む。
自機・自機弾・敵・敵弾は衝突可能クラスを継承してるので処理は同じ。
370名前は開発中のものです。:04/12/01 22:56:42 ID:G087owPH
衝突可能クラスで共通化か・・ちょっと目から鱗。

自機・自機弾・敵・敵弾をどこまで基底クラスで共通化するか迷ってる。
変数は座標・向き・大まかな大きさ・出現後フレーム数あたりかな?
関数はmoveとdrawとか。
371名前は開発中のものです。:04/12/01 23:55:48 ID:nsqoizBy
寝る前に書いたが、良く見たら凄い言葉足らずじゃんか、既に寝てたのか俺は。

・攻撃側から防御側を見て、当たっていたら防御側のHPを減らし、自分の事後処理を行う
・防御側から攻撃側を見て、当たっていたら自分のHPを減らし、攻撃側に当たった事を通知する

って書かなきゃ駄目じゃん、俺。
372名前は開発中のものです。:04/12/02 02:36:53 ID:pQ5b++Tp
オレの場合、当たり判定はマウスリスナーっぽい自作リスナーを利用している。
373名前は開発中のものです。:04/12/02 06:53:40 ID:3aTWRg3P
当たり判定登録の構造体と結果通知構造体をそれぞれポインタで登録するようにしている。
結果通知を共通化すれば複数のあたりを一挙に受け付けられるし、フラグ見るようにすれば全体で
1発しか当たらないとかもできる。

点と矩形で処理わけてるが、構造体はどっちでも同じものを使ってる。

同じもの使っておけば、途中で敵同士を当たり判定させたいとかってなっても困らないしね。

374名前は開発中のものです。:04/12/02 13:38:28 ID:DdJCpHth
>>363
楕円。
375名前は開発中のものです。:04/12/02 17:36:22 ID:hnyRwTxv
楕円同士の衝突判定ってすぐに思いつかないんだけど
なんか上手い方法あるんかな
376名前は開発中のものです。:04/12/03 03:00:48 ID:xaZrqNK+
楕円がどういうものかわかってれば円と似たようなものだと思う
計算量は円の二倍になるっぽいけど

敵や自機は矩形、その他は点、でいいんでね?
377名前は開発中のものです。:04/12/03 03:55:23 ID:jJVw+AUj
だ円だと、
それぞれの角度もつかって、弧までの距離2つの合計を出すって事かな。
まあ、だ円使うよりは、複数の円なり矩形を使った方がいいよなやっぱり。
378名前は開発中のものです。:04/12/03 18:49:04 ID:K3dBtMLz
円どうしだったら
(自X-敵X)2乗+(自Y-敵Y)2乗が
(自円半径+敵円半径)2乗以下なら当たり
ってだけで計算が楽だけど、楕円の場合は苦しいな

回らないなら楕円の方のXYを比率倍で計算するだけですむが
回転角がついている場合、ややこしい計算が必要になるだろうな
計算方法想像するのもマンドクセ

337のやり方に同意
379名前は開発中のものです。:04/12/04 00:52:39 ID:MlvGSrc8
全部カプセル型最強
380名前は開発中のものです。:04/12/04 04:11:14 ID:cdCUz0bs
CAVEゲーの様なショットと低速移動を1つのボタンに割り当てる場合について質問があるのですが。

ショットを連射しつつ高速移動したい場合はボタンを連射しながら動くことに
なると思うのですが、この際「ボタンを押してる間は低速移動」だとすると、
連射の度に一瞬一瞬移動が遅くなってストレスがたまると思います。
この様な兼用ボタンを採用しているゲームではここら辺どう対処してますか?

さしあたり思いつくのが
・ボタン押して数フレーム後から低速移動
・ボタン押すと減速開始、数フレーム後に低速移動の速度に落ち着く
なのですが、他の方法を使ってる方はいますか?

また、これらの方法を使うとしても何フレームで低速移動に落ち着かせるか迷うんですよね。
フレーム数が小さすぎると、連射の間に押すフレームより小さくなってちょこちょこ低速移動になってしまうし、
大きすぎるととっさの低速切り替えが遅れ勝ちになりそうで。
381名前は開発中のものです。:04/12/04 04:21:50 ID:QeP+PL7Q
一定時間押しっぱなしだったら低速移動、で良いんじゃないかなあ。
時間(フレーム)がどのくらいかはトライ&エラーで感覚的に丁度いい
数値を探すしかないんじゃない?
382名前は開発中のものです。:04/12/04 06:34:30 ID:iA1aOU70
>>380
まあ、連射するゲームではないのだが・・・

ABAさんのゲーム(のソース)みてると、
ボタン押している間は、低速の値に徐々に近づき
離している間は、高速の値に徐々に近づくようになっているな
参考までに
383名前は開発中のものです。:04/12/04 09:16:58 ID:r9aRerNk
>380
とりあえず思いついた方法を実装してみるのが先かと。
384名前は開発中のものです。:04/12/04 09:29:31 ID:GDKWpx4k
>>380
フレーム数はひたすらテストプレイして/してもらって割り出すしか。
二値じゃなきゃ駄目ってことも無いので段階的に変化させるとか。
385名前は開発中のものです。:04/12/04 12:47:01 ID:uLitlHXi
CAVEだと
・ボタン押してmフレーム後から減速開始
・nフレーム後に低速移動の速度に落ち着く
でmとnはそれぞれ3〜60くらいかね。数値は実測してないので嘘
同ゲームでも機体によってmとnは異なる
ロケテと製品版でも違う例もあったようだ
386名前は開発中のものです。:04/12/04 13:05:55 ID:H2/1a71s
AとCの使い分けですぐに低速に移行することもできるしね
詳細はまぁ分かるでしょ
387名前は開発中のものです。:04/12/04 13:49:40 ID:QbSISJQa
>>380
俺が今作ってるヤツだと、前者の方式でやってる。
切り替え時間は20-30フレーム(60fpsのとき)ぐらいかな。

とっさの切り替えで隙が生まれるのは仕方がないよ。
それなりに熟練したプレーヤーなら低速に入るタイミングを
体で覚えてくれるハズ。
その辺が気になるようなら、東方みたく低速ボタンをつければいい。
388名前は開発中のものです。:04/12/04 16:01:35 ID:FMTJyHA6
俺はショットボタンと低速ボタンを分けてる。
(もちろん設定で同じボタンに割り当てることも可)
そのかわり、操作が複雑になりすぎないように極力使用ボタン数を絞ってる。(ボムも無し)
389名前は開発中のものです。:04/12/04 16:37:12 ID:TzP6g75f
C押しながらAは低速専用ボタンと似るな。とっさに減速できて良い。
390名前は開発中のものです。:04/12/04 17:59:48 ID:mVDy3Uy+
そもそも低速移動できるようにしとかなあかんのが一種の歪みなんだけどな。
1フレームに移動するドット数を考えると、
高速移動時は理論的にすり抜けられるわけがないという。
391名前は開発中のものです。:04/12/04 19:19:04 ID:MlvGSrc8
常に全力疾走だと疲れるだろ?

時には立ち止まっても、ゆっくり歩いて進んでもいいじゃないか。

歪んでるのは、落ち着きを無くしてしまったこの大都会さ。
392名前は開発中のものです。:04/12/04 19:59:02 ID:07wUzbga
ケイブシューも東方も普通にプレイする分には操作のコンセプトは一緒ですね
393名前は開発中のものです。:04/12/04 20:10:18 ID:Ygfh5Qja
ショット撃ちっぱなしでいいなら、必要な操作は一緒だものね。
394名前は開発中のものです。:04/12/04 21:47:44 ID:xbb3uNtl
>391
かっこいいな、それ
395名前は開発中のものです。:04/12/05 00:58:30 ID:jpmcQcL7
>>391
吹いたw
396名前は開発中のものです。:04/12/05 10:03:02 ID:dsrpgm6J
>>390
精密移動で細かく避けて
高速移動でガーッと避ける
メリハリがあっていいじゃないか
397名前は開発中のものです。:04/12/05 11:42:43 ID:aoB/oDY8
俺もモードチェンジみたいなフューチャーは好きだね
398名前は開発中のものです。:04/12/05 12:21:14 ID:aoB/oDY8
ちょっと過去ログ見てたら、リプレイの話が出てたんだがちょっと質問
D3DXライブラリ使うと、内部でCPUごとに演算誤差が出てリプレイがずれる
D3DXでも演算する部分は使わないのが妥当なんだろうか?
399名前は開発中のものです。:04/12/05 12:21:58 ID:aoB/oDY8
> 内部でCPUごとに
内部でCPUごとの最適化されているために
400名前は開発中のものです。:04/12/05 12:54:37 ID:5WwgO22M
浮動小数点つかわなければいいのでは?
401名前は開発中のものです。:04/12/05 13:01:52 ID:nqBSDUP5
固定小数点最強説
402名前は開発中のものです。:04/12/05 13:05:32 ID:I06ZHIkn
>>391
話が理解できないからってくだらないこと書き込むなよ低脳
403名前は開発中のものです。:04/12/05 13:10:53 ID:faSlQI3x
何怒ってんの
404名前は開発中のものです。:04/12/05 15:48:43 ID:QEq2K2Fz
> 1フレームに移動するドット数を考えると、
> 高速移動時は理論的にすり抜けられるわけがないという。

フリーや同人にはこれがわからずに失敗してる弾幕シュー多いね。
405名前は開発中のものです。:04/12/05 16:02:25 ID:9It34p46
>>404
詳細キボン。フリーのシューティングゲーム作ってる漏れは具体的にどういうところに注意すればよいですか。
406名前は開発中のものです。:04/12/05 16:12:14 ID:W3qStFtF
一フレームの移動量が多いときに
正しく交差判定ができずに
すり抜けるってやつだろ
407名前は開発中のものです。:04/12/05 16:22:35 ID:v+Cntsyo
よっぽどのことがないとすり抜けないよ。例えば敵弾を1ドット判定だとすると
「敵弾の1フレームの移動量−自機の1フレームの移動量>自機の当たり判定の大きさ」
の時にすり抜ける可能性があるわけだけど、この式を満たす弾速って相当に速いw

緋蜂2波とかはたまにすり抜けることあるんだよね
あの場合それはそれで嘘避けもネタとして面白いからいいんだけど
408名前は開発中のものです。:04/12/05 16:27:02 ID:aoB/oDY8
すりぬけるのに関しては問題ないんじゃないのか?
昔のゲームは2フレームに1度しか判定しないものがあったと効くが
409名前は開発中のものです。:04/12/05 16:41:19 ID:uxNuOahw
実際にプレイしてみて、バランス調整の一環として判断すればいい。
理論上どうなのかより、遊んでみて面白いかどうかなんだし。
410名前は開発中のものです。:04/12/05 17:03:08 ID:faSlQI3x
390が言ってるのはそのすり抜けじゃないだろ?
どうでもいいけど。
411名前は開発中のものです。:04/12/05 17:10:31 ID:BKRFdp4B
低速モードが無いとすり抜けられないような弾幕作っちまうってことだろ。
412名前は開発中のものです。:04/12/05 17:25:47 ID:9It34p46
なら、クイック無敵モードで弾幕をぐぐり抜ける俺のシューティングは大丈夫ですな。

…難易度低すぎって怒られそうだが。
413名前は開発中のものです。:04/12/05 19:26:31 ID:tzW0xYke
>>412
いや、それがゲームの面白さにつながっているのなら別に問題はないっしょ。
414名前は開発中のものです。:04/12/05 21:36:29 ID:JuLqOnKX
弾幕って壊しちゃだめか?
415名前は開発中のものです。:04/12/05 21:41:44 ID:abYxHxMJ
なんでもいいよ、面白ければ。
こんなのシューティングじゃないとか言い出す奴は無視だ無視。
416名前は開発中のものです。:04/12/05 21:45:27 ID:faSlQI3x
不文律を侵すにはそれなりの理由がいるとは思うけどな。
極端な例だけど、右入力して左に移動されたら流石に
皆なんだこりゃというだろう。
417名前は開発中のものです。:04/12/05 22:20:35 ID:gAMehfbl
そんな例出すお前がなんだこりゃ、という感じがしないでもない。
418名前は開発中のものです。:04/12/05 23:13:07 ID:pHRMYxRJ
弾幕を不文律といっちゃうのもなんだこりゃ、と。
弾幕を止めると刺激が足りないというか、物足りなく感じるのは確かだけど。
419名前は開発中のものです。:04/12/05 23:15:33 ID:BHca5bjj
たぶんフライトシムやって上下逆のクソゲーと書き込みしてボロクソに叩かれた経験でもあるんだろ。
ぶっちゃけ右に入れたら左に動くことによって生まれる面白さがないと証明できないならそんなこというべきじゃない。

自機が簡単に無敵になれるゲームなんぞいくらでもあるし。 まあ、「無視だ無視」っつーことだわな。
420名前は開発中のものです。:04/12/05 23:26:17 ID:faSlQI3x
416は415の「シューティングじゃないとか言い出す奴は無視」に対する
レスだったんだけど。
前に2DSTGスレでとあるゲームに対して「自機や敵弾より上にスプライトが
出るのどうよ」みたいな批判が出てたのを思い出しただけ。

多くのプレイヤーが当然と思ってることに対して、それを破るのには、
それなりの必然性がいるんじゃないかということだ。
421名前は開発中のものです。:04/12/05 23:30:45 ID:faSlQI3x
あーすまん、俺が勝手に弾幕以外の話に飛躍させたのが悪かったんだな。
忘れてちょ。
422名前は開発中のものです。:04/12/05 23:34:10 ID:mkajxwDd
弾消し命と言うとコンパイル系かね。
いろいろ調整が面倒だから手を出してはいないが。
423名前は開発中のものです。:04/12/06 00:13:46 ID:VjqG8W04
そこにある弾に対して
「避ける」も「消す」も、基本的にはそのゲームにおいて
その場を生き延びて先に進もうとする行為である点では同じなんだな。
要はそのゲームが用意している「局面をさばく」手段が、どのように
具体的な面白さにつながってくるか、というところが大事なんだと思う。

弾幕を壊すゲームも、クイック無敵も、実装してみて面白ければきっと後が続く。
言い出しっぺがどんどん作ってみるべし。
424名前は開発中のものです。:04/12/06 00:30:23 ID:pREQWnVS
>弾を壊す・・
カオスフィールド・・・
ZANACxZANACの新ZANACにも弾けしモードがあったけど弾幕とは毛色が違うゲームだしな。
共通点はどっちも微妙な点かね。
425名前は開発中のものです。:04/12/06 01:52:51 ID:oftpBIad
クイック無敵ってギガウイングの劣化版か
426名前は開発中のものです。:04/12/06 02:06:26 ID:D4LphMuU
大好きな縦シューにたくさん実装されてるボムのことじゃねーの?
427名前は開発中のものです。:04/12/06 02:11:14 ID:i433z2Fa
ボムが自分にも当たるとか・・・いや、忘れてくれ。
428414:04/12/06 10:59:11 ID:dF0DO8zB
弾幕STGといえるか微妙だが、多量の敵弾を破壊するゲームは作ってある。

最大敵弾数は難易度で変化(75,125,200)
マウスで操作し、自弾の発射方向は自由に変えられる
敵弾は全方向から発射
HP制を採用し、自機の当たり判定を大きくする

という感じ。
429名前は開発中のものです。:04/12/06 13:01:57 ID:twF/litF
破壊可能弾とはまた違うんだろうけど、それでもザナックや怒首領蜂を思い出す
430名前は開発中のものです。:04/12/06 14:28:54 ID:9Br/XHeM
>>425
ギガウィングってのを知りませんが。
当方のは二度押しで、その方向へくるりと回転移動します。
その間は弾をすり抜ける。と。


正直、簡単すぎやしないかと心配…。弾幕は無責任に強くして、HPは自動回復。
431名前は開発中のものです。:04/12/06 14:51:22 ID:PmuMXUl5
1943みたいにすれば?w
432名前は開発中のものです。:04/12/06 14:57:17 ID:oftpBIad
ギガウイング知らずに弾幕シュー作るのか。それは凄いな。

いや、B級シューなので無知は別に恥ずかしいことではないんだが
車作るのに三菱知らないようなもんだ
433名前は開発中のものです。:04/12/06 15:40:26 ID:OHcenleO
三菱がB級だと言っているのか?
434名前は開発中のものです。:04/12/06 15:45:23 ID:PmuMXUl5
今やZ級
435名前は開発中のものです。:04/12/06 15:55:03 ID:DmgCIBSb
おまえんとこみたいなメーカーがあるから
リコールは無くならないんだ!
消えろ!

ってか?ひどいなw
436名前は開発中のものです。:04/12/06 16:31:01 ID:OJrHzzNS
シューティング作る場合、やっぱ既出のシューティングは知らないとナァ。
じゃねーと、『おおっ、俺すげーシステム考えちゃった、みんなに自慢にしなきゃ』って
頑張って作ったのに、○○のパクリじゃんって言われる罠。
437名前は開発中のものです。:04/12/06 16:52:59 ID:cK9dy4Jp
>>433
最新作が翼神であることを考えれば、的を射ているw
438名前は開発中のものです。:04/12/06 16:56:58 ID:cK9dy4Jp
>>435
翼神のことかー!!(AA略
439名前は開発中のものです。:04/12/06 16:57:38 ID:cK9dy4Jp
すまん、書き込みミスしたとおもっていたら成功しとったw
440名前は開発中のものです。:04/12/06 18:04:36 ID:PmuMXUl5
437超カッコイイな
441名前は開発中のものです。:04/12/06 19:03:52 ID:CUVG1m2J
>430
最近(でもないけど)のだと式神の城1の「???」の瞬間移動みたいなものか。
二度押し発動は、ちょん避けしようとすると暴発するのが辛かったんだが。
442名前は開発中のものです。:04/12/06 19:18:56 ID:OJrHzzNS
今日はあちらこちらのスレで連続爆死を見かけるな…
443名前は開発中のものです。:04/12/06 19:35:31 ID:PmuMXUl5
>>441
確かにちょん避けでダッシュ暴発はキツイな。
「ショット撃ってない時」とか条件付けたりすると良いかもね。
444名前は開発中のものです。:04/12/06 20:42:30 ID:vqAw8cHh
んー、暴発はなんとしても避けなきゃならんですか。
ならそれ発動用のボタン作ります。それ押しながら移動で回転。

どうも、助言ありがとうでした。
445名前は開発中のものです。:04/12/06 22:41:58 ID:49d8Qdiu
今まで回転避けなんてゲーム見たことないんだけど
ttp://roo.to/prefeam/ ←多分ここが最初だと思う
ひょっとして、黙ってパクリですか。
446名前は開発中のものです。:04/12/06 22:48:57 ID:vqAw8cHh
>>445
未完成のゲームをパクってどうする。
447名前は開発中のものです。:04/12/06 23:33:53 ID:bwkbBpfZ
>>445
似たようなものなら10年以上前からあるぞ
448名前は開発中のものです。:04/12/06 23:36:02 ID:ctAbxqY4
避けというより跳ね返しだが、スターフォックスのローリングなんかも似たようなもんか。
別に取り立ててめずらしいものでもないぞ>>445
449名前は開発中のものです。:04/12/07 00:26:28 ID:hrWkwjoi
自分の知ってるものが全てというような言い方をするとこうなるという良い例を見た
450名前は開発中のものです。:04/12/07 00:41:54 ID:B7jdn83V
パクリかそうでないかは言ってたらキリがない。
偶然ってこともあるし、似てるゲームもそりゃある。
でもどうせパクリ(パクラレ)ならある程度ヒットしたり、
有名になってからにしてほしいよな。
ゲームのアイデアに、作品が完成してるかどうかも関係ないわけだし。
451名前は開発中のものです。:04/12/07 00:59:08 ID:IoiJT6G7
つーか、パクリという言葉は創作をしない奴のセリフとしか思えん
452名前は開発中のものです。:04/12/07 01:00:03 ID:/o/ByAJ4
有名かどうかも関係ないだろ
453名前は開発中のものです。:04/12/07 01:04:19 ID:l5e6GX0R
TVでやってることを全部オレのパクリだとか言ってるヤツ周りにいないか?
パクリを言い出すとたいていそういう目で見られてますよ。
454名前は開発中のものです。:04/12/07 01:18:53 ID:B7jdn83V
パクリ自体は悪くないと思うし、有名にならなくてもいいけど
最初からアイデアだけ真似されるの見ると、なんかムカツク。
でもある程度、有名ならいいかなとは思う。
グラディウスのパクリ、ウィザートリィのパクリ
別にムカツカないし。暗黙の了解っつーか

>>451
それはパクリ良くないと認識してるからだよ
オマージュとか二次創作なら、あんまカチンとこないでしょ。
455名前は開発中のものです。:04/12/07 02:27:28 ID:+7tbfqt4
パクリとかオマージュとか言うだけならなんとでも言える罠
その先であざとさが見えてしまったら萎える
取り入れた結果(・∀・)イイ!ものが出来上がっていたら燃える

そんなもんじゃね?
456名前は開発中のものです。:04/12/07 02:31:49 ID:QsZOwp86
シューティングなんてみんなインベーダーのパクリだしな
457名前は開発中のものです。:04/12/07 03:55:06 ID:yzHHDbTG
おもしろければ勝ち
458名前は開発中のものです。:04/12/07 06:21:55 ID:IoiJT6G7
>>454
> それはパクリ良くないと認識してるからだよ
そうそうそれがいいたかった
よくわかってくださった

まあ、アイデアなんてゲームの1%にもみたいないものだ
ゲームは、エジソンじゃないが、1%のアイデアと99%の調整。
特にシューティングだってそうだろ?
やっぱ、パターン命だよな
459名前は開発中のものです。:04/12/07 06:23:00 ID:IoiJT6G7
> まあ、アイデアなんてゲームの1%にもみたいないものだ
まあ、アイデアなんてゲームの1%にもみ満たない

失礼
460名前は開発中のものです。:04/12/07 08:39:09 ID:2Y5K7LXZ
昔から「すてきだな」と思った弾幕やアルゴリズムを書き留めていて、
プログラムを書くときに参考に書いたりして、結果、
人の弾幕やアルゴリズムに勝手に手を加えて発表してしまった
461名前は開発中のものです。:04/12/07 08:39:43 ID:LbrL0AS9
パクリじゃなくて盗作
462名前は開発中のものです。:04/12/07 08:52:12 ID:hrWkwjoi
コンボやカスりを入れる同人シューはたくさんあるけど
配置とか弾幕が悪くてソレを全く生かせないのが多すぎる
463名前は開発中のものです。:04/12/07 08:58:32 ID:IoiJT6G7
>>462
おれもそう思う
配置や弾幕が鍵なのにな
464名前は開発中のものです。:04/12/07 10:19:58 ID:oAZgPICf
それが難しいから真新しいシステムに走るわけで。
465名前は開発中のものです。:04/12/07 11:16:11 ID:B7jdn83V
なにを言ってんだろう。出来もしないうちから。
ゲームだろうがなんだろうが、
いつだって新しいものを作るほうが難しいし、はるかに意義があると思うけどね。
466名前は開発中のものです。:04/12/07 11:23:26 ID:TvXaiOJW
>>465
そいつはいかにも若者の主張っぽくて微笑ましいが
いままでにない新しいものだけが特別な意味を持つって考えはいただけない
467名前は開発中のものです。:04/12/07 13:38:47 ID:L7YDUGj+
ギガウイングはAマイナス級くらいの実力あるだろ。
ギガウイング2はC級、翼神はZ級だけどな。
468名前は開発中のものです。:04/12/07 15:56:23 ID:NUf0SrI+
>>467
もしよければ他にA級やB級に属するシューティングを教えてください。
469名前は開発中のものです。:04/12/07 16:33:49 ID:HPA8w/2I
とりあえず文句が言いたいわけね
470名前は開発中のものです。:04/12/07 17:54:15 ID:/o/ByAJ4
>>467
いやB級だろ
翼神は確かにダメダメだが
あれ以下なものは他にもあるからZ級ではない
471名前は開発中のものです。:04/12/07 17:55:10 ID:VxRrVdZG
ランク付けは総合力か一芸に秀でてるか、などモノサシが曖昧なので異論出るし、>>1によるとスレ違いっぽいしな。
472名前は開発中のものです。:04/12/07 20:24:18 ID:kk0C9MQ4
とりあえず形にもできていないおれはZZZ級くらいで。おやすみ〜 Zzz...
473名前は開発中のものです。:04/12/07 20:32:45 ID:bmEvjmma
>>472
名前が強そう。

シューティングのランク付けやめないか?好みの問題も有るし不毛に見える…。
474名前は開発中のものです。:04/12/07 20:44:40 ID:6u7MHpXZ
そもそもスレ違いっぽいし、部分的に良い所を話すならともかく
比較してどうこうなんて話は無意味だと思うぞ。
475名前は開発中のものです。:04/12/07 21:25:02 ID:IoiJT6G7
トライジ(ry
476名前は開発中のものです。:04/12/07 22:04:35 ID:RerrmthA
オデンの具材のランク付けみたいな話だな。結論なんてでるハズがねー。


ところで虫姫ラスボスの弾幕AVIを見たんだが、弾の無い部分がほとんどなかった・・・
あれは避けられるのをちゃんと前提として設計してるのか?
それともBOM前提として隙間無く弾幕敷き詰めてるのか?
477名前は開発中のものです。:04/12/07 22:51:52 ID:VxRrVdZG
ノーボム前提で組んであるはず。今回はボム撃ったときのペナルティが物凄いので。
各所のシューターのページでも、最後はミスるな、ボムるな、が基本方針のようだし。
478名前は開発中のものです。:04/12/07 22:55:26 ID:8wqKqcu1
翼神は遊んでたら電源が落ちたからZ級未満だ
479名前は開発中のものです。:04/12/08 01:36:39 ID:OfSHCP0i
>>476
開発者たちが一回でも避けられた弾幕なら採用とかそんな感じじゃなかったっけ。

ゲーム速度を落として調整するという手もあるね。
どうせ弾幕シューの遊び手にはニュータイプがいるんだし。
480名前は開発中のものです。:04/12/08 02:26:38 ID:w4u3Ap9m
>>478
俺なんか初プレイで、コイン入れたら落ちたよw
店員呼んで再起動したら、起動時にウインドウのきれっぱしが表示されてワロタ
さすが、Embeded Windowsだなw
481名前は開発中のものです。:04/12/08 02:57:58 ID:O1nr3N1S
翼神の所為でtypeXの評判がすこぶる悪いのが解せない
タクミ社員は首を吊れ、と
482名前は開発中のものです。:04/12/08 04:07:54 ID:+PhqUDvz
コスト面以外で良い所が見つからん
483名前は開発中のものです。:04/12/08 09:20:55 ID:aYrhhJ0J
これに関してはWindowsの性というよりはプログラムのバグのような気もしないでもない
いわゆるPCと違ってTypeXはハードも固定されていて仮にバグがあっても回避しやすいだろうに

とおもったけど電源不足か熱暴走っぽいな
484名前は開発中のものです。:04/12/08 09:26:10 ID:yo8RSQFv
なんか翼神って店によって動きがカクカクだったり
そうじゃなかったりするね。
地元のゲーセンで普通に遊べたんだけど
秋葉のゲーセンでやったら1面からやけにカクカク動いてた。
マシンのスペックが台ごとに違ったりするんか?(んなわけないか)

スレちがいぽくてゴメン
485名前は開発中のものです。:04/12/08 11:11:28 ID:LQ6l17rP
うちのゲーセンだと1面からフレーム飛びまくりだったよ
結構、低スペックだったりするんじゃないんかね
486名前は開発中のものです。:04/12/08 13:03:12 ID:kZWPUQyq
何も知らずギガウィングっぽいのあるなと思ってやってみた。
PCでやってるような感覚でやはりカクカクしてました。

アーケードならどっちかと言うとぬめーって遅くなるんだが・・・。
487名前は開発中のものです。:04/12/08 13:28:32 ID:kbIJwTHP
処理落ちじゃなくて描画スキップ(?)になってるのは作成基準があるか、
巧が勝手にやってるんだと思う。
にしてもセレロンとはいえ2GHzオーバーのPCであんなにカクカクってのは、
どこに問題があるのかさっぱり判らんね。
解像度も特別高いわけでもないし。
オンボードのしょっぼいチップなのか?
488名前は開発中のものです。:04/12/08 14:00:13 ID:RRSq8DD0
数回の強制再起動(電プチ)でxpがHDDのDMA転送を外してたとか、
そんなしょうもない理由なんだろうなぁ。
489名前は開発中のものです。:04/12/08 14:06:45 ID:aYrhhJ0J
エンベデッドならHDD使わないのが普通じゃないのか
ビデオ性能もネックになってるとは思えないし
怒首領蜂2みたいなものかね

基本的な部分を見ると怒首領蜂2のほうがまともなようだけどな

つーか、製品出す前に誰も止めなかったのか?
490名前は開発中のものです。:04/12/08 14:12:54 ID:OfSHCP0i
弾幕シューでフレーム落ちという暴挙をまさかアーケードでやられるとは思わなかった。
フリーソフトとかなら割合よく見かけるけど。

自機や敵弾はワープするし、リフレクトフォースが発動したのかどうか
わからなくなったりするし。
491名前は開発中のものです。:04/12/08 14:53:20 ID:kbIJwTHP
弾幕シューで、というよりも販売元の作成基準に処理落ち不可でだめならフレームを落とせ、
とあったらゲームに関係なくやらないといけない訳で。
まぁ、妄想だけど。

タイトーのtype-xのページを見に行ったら思いっきりハードディスクがくっついてる写真が合った。
スペック的には今のPCの普及機位だった。cel2.5G/radeon9200/128MBでRAM256が最低スペック。
Biosとドングルによるハードプロテクトがあるから案外それが原因だったりして。

ていうか、HalfLife2がType-Xで出るのか。知らんかった。
492名前は開発中のものです。:04/12/08 17:36:53 ID:3sgLqIBx
自分がそのスペックで組んでもあそこまでカクカクにならん。
と思ったのは俺だけじゃあるまい。
493名前は開発中のものです。:04/12/08 20:06:47 ID:MqXFtJ7A
プレスコセレロンをあの空調がまったくない筐体に閉じ込めたいと思う自作erはおらんよ。
494名前は開発中のものです。:04/12/08 21:47:16 ID:aYrhhJ0J
今ならやはりPentiumM採用していただろうか?
冬でこの状態ってことは夏場はもっとひどいってことかね?
495名前は開発中のものです。:04/12/09 12:50:41 ID:CtGrhRg9
>>491
Radeon9200だとハーフライス2の真価が全然出せない気がする
それに1時間程度で終わるゲームじゃないんだけどなぁ…セーブどうるんだろ…
496名前は開発中のものです。:04/12/09 13:14:29 ID:khyP3LSk
ビデオカードはオプションで変更できるそうな。
RADEON 9250(128MB)/9200PRO(128MB)/9600SE(128MB)/
9600XT(128MB)/9800PRO(128MB)/X800PRO(256MB)/X800XT(256MB)
から選択。
なんか不思議な気分。

カードのスペックにバラツキがあるから処理落ちじゃなくてフレーム落ちになってるのかもね。
翼神は。
てか、9200で動くように作れば問題なさそうなんだけどな。
497名前は開発中のものです。:04/12/09 13:41:31 ID:TMzyhP9O
弾幕ものでフレームスキップというのがおかしい
498名前は開発中のものです。:04/12/09 15:00:04 ID:zXTBFOVv
HalfRice2キター!!!!!!!!!!!!!!!!!!!!!!!
499名前は開発中のものです。:04/12/09 17:08:32 ID:G4CY355P
VB5.0でシューティングを作成してるのですが、メインのループ処理内でWaitをかけ
処理速度を一定にしようと思い下記Wait処理を追加しました。

i=GetTickCount+30
Do Until (GetTickCount()>i)
loop

数機種の端末で動作させた所、端末のスペックにはさほど差はないにもかかわらず
動作速度に差がでて困ってます。
現状では上記"+30"の値を設定にて変更する事で、端末毎に見合った速度で調整
してるのですが、何か他に良い方法がないでしょうか?

必要でしたらそのシューティングもアプします。
500名前は開発中のものです。:04/12/09 17:24:24 ID:nZpgMZvO
googleでGetTickCountまわりを検索して
http://pc2.2ch.net/gamedev/kako/1006/10060/1006052623.html
ここの242を発見。多少参考になるんじゃないかな。VBじゃないけど。
あとはVB使ってる人に任せた。
501名前は開発中のものです。:04/12/09 17:26:25 ID:khyP3LSk
VBは知らんけど。
+30より速く動かないようにするならそれでいいんじゃないの?
もたつく機種を何とかしたいなら別の対処が必要。
502名前は開発中のものです。:04/12/09 17:30:52 ID:TMzyhP9O
>>499
そのコードだとSleepの30とかわらんぞ
ループの速度を一定にせんと
503499:04/12/09 18:00:12 ID:9e4qEViL
>>500,501,502

情報ありがとう。
ちょっと>>500ののぞいて覗いてみます。

常に一定の速度で動作して欲しいというのが希望なのですが
ループ内にWait処理を入れこむと>>502がご指摘の通り
うまく一定の速度で動いてくれません。
まぁ何とかゲームにはなっていますが、何となくカクカクした
動きでイマイチです。

とりあえず、アプしてみました。
ttp://up.haiiro.info/file/456.lzh

速度30で丁度良い按配にしてあるのですが、皆様の環境では
いかがでしょうか?
504名前は開発中のものです。:04/12/09 18:05:57 ID:TMzyhP9O
つーか肝心のソースが書いてないぞ
ウエイトのからんでる部分でもいいのでまとめて処理順をかいてくれ
505名前は開発中のものです。:04/12/09 19:14:06 ID:khyP3LSk
よくみたら確かにスリープと変わらんね。

i=GetTickCount+30
ゲームの処理
描画登録
Do Until (GetTickCount()>i)
loop

こんな感じにすれ。
機種間の違いはゲームの処理にかかる時間からくるものだから、
ゲームの処理の前の時間と処理終了後の時間でみないといかん。
506名前は開発中のものです。:04/12/09 19:45:38 ID:ORSSQTyE
混み合いすぎ・・ DLできません
507名前は開発中のものです。:04/12/09 20:11:06 ID:nZpgMZvO
>>505
そうだ。まず最初に、その指摘が必要だったんだ。GJ
508499:04/12/09 21:01:18 ID:AX/0fI0S
>>504
おおまかにはこんな感じです。

ゲームの処理
描画登録
i=GetTickCount+30
Do Until (GetTickCount()>i)
loop
んで、>>505の指摘を見て納得しました(下に続く)

>>505
なるほど!指摘されて納得!
たしかに単なるスリープになってたんで、直前の処理が重くなればなるほど
処理落ちしてしまう現象が多々ありました。
早速作り変えてみます。

>>506
混んでいますか?今、クリックしたらダウンロードできましたけど・・。
軽いところ探してみます。
509名前は開発中のものです。:04/12/09 21:06:20 ID:TMzyhP9O
スリープはその前に指摘してたんだが気づいてもらえなかったか・・・
510499:04/12/09 21:29:24 ID:AX/0fI0S
>>509
すみません。
あの時点では文章の意味を捉えきれてませんでした。

ちなみに今、Waitの処理を>>505と同様にしてみたのですが、
たしかに途中の処理落ちは無くなりました。
しかし速度を"1"等にすると今度はキー入力等に問題が出てきた
みたいです(キー入力を受け付けない)
とりあえず色々試行錯誤してみます。

あと端末毎に重い理由も何となく判りかけてきました。
ノートンやウイルスバスターを常駐してると重くなるっぽいです。
サービス止めたら速度が上がりました。

…でも早い時もあるんだよなぁ
511499:04/12/09 21:56:31 ID:eGKxmSHF
>>506

ここならどうでしょうか?>>505の修正かける前のバージョンですが。

ttp://u.skr.jp/1024/files/0626.lzh
512名前は開発中のものです。:04/12/09 22:18:14 ID:ORSSQTyE
DLできました スマソ
カッコイイですね エフェクトにも凝ってらっしゃる 数十分遊べました
513名前は開発中のものです。:04/12/09 22:37:42 ID:wDThauKe
>>511
完成度高いね
514名前は開発中のものです。:04/12/09 22:58:45 ID:qdk+sVpB
弾とか全体の絵の感じも良いね
60fps用のバージョンがあったらやりこんでしまうかもしれん
515名前は開発中のものです。:04/12/09 23:08:47 ID:0n7J9/Uf
Do〜Loopの間にDoEventsがあったほうがいいんじゃない?

あと、NT系だとGetTickCountとtimeGetTime+timeSetPeriodのどっちがいいんだろ。
(9X系ならtimeGetTimeだけど)
516名前は開発中のものです。:04/12/09 23:19:41 ID:TMzyhP9O
NT系ってひとくくりにしないほうがいいぞ
NT4と2000、XPとでだいぶ結果が違った記憶があるから
NT3系は・・・もう記憶とんでる
517499:04/12/09 23:32:21 ID:eGKxmSHF
皆様PLAYどうもでした。
ちなみにゲームスピード調整はオプションからできます。

>>512
微妙にズレたエフェクトがあってお恥ずかしいです。
難易度はテスト版なんで結構易しくしてあります。

>>513
もともとはVB2.0時代の遺物を掘り起こして32bit化させました。
足掛けの歴史だけは古かったりします。

>>514
fpsの制御が判りませんので・・
その辺をも少し勉強するのが今後の課題ですね。
Waitかけて調整するという古い手法から早く卒業したいものです。

>>515
loopの後にDoEventsは入れてます。
Wait用のDo〜Loop間に入れる方法と、Do〜Loop終了後に入れる方法どちらも
同じと判断しました(Loop内で得に処理やってませんので)
>timeGetTime+timeSetPeriod
そのようなAPIもあるんですね?ちと調べてみます。
518名前は開発中のものです。:04/12/09 23:49:55 ID:UoscMKZ7
+30にしてるってのは30_秒待つってことだよね
>>505の方法で、+30になってるところを+WAITにして、
const FPS = ほにゃらら
const WAIT = 1000 / FPS
としておくと、ほにゃららを決めればfps指定になりそうな予感
519名前は開発中のものです。:04/12/10 00:41:00 ID:Foz9+fuQ
>518
いやそれだけだとFPSあげるとゲームスピードまで上がっちゃう
移動部分とか弾の発射間隔なんかをFPSに応じて変化させないといけないから
それなりの大改造になっちゃうと思われ
520名前は開発中のものです。:04/12/10 00:45:28 ID:FIQ4yH9Q
>>515
> (9X系ならtimeGetTimeだけど)
NT系でtimeBeginPeriod(1)やってないだけだろ
521名前は開発中のものです。:04/12/10 01:20:25 ID:d6K/L9Nh
そこで描画と計算をスレッドで分離ですよ。
あんまりやってる人居なさそうだけど。。
522名前は開発中のものです。:04/12/10 02:01:20 ID:r1uGwjzw
それって実際どうなんだろう・・・
523名前は開発中のものです。:04/12/10 03:34:20 ID:P3teMSiB
とりあえず俺はこのシリーズ好きなので、新作なら嬉しい。
524名前は開発中のものです。:04/12/10 03:48:02 ID:L+RmPzsY
よくできてるな

「全ての処理が終わったら次フレーム時間まで待機する」っていう考え方よりは
「1フレームの時間内に全ての処理を終わらせる」っていう風に考えたほうがいいんじゃない
結局同じことだから気分的なものだけどね…
要するに「1フレーム時間は固定」というのが大前提ということです
525499:04/12/10 10:13:02 ID:9XEn1Ntf
>>518,519
とすると、まず基準として秒間30FPSとか決め打ちしてやり、毎回全体を通した1ループで
かかった時間(_)を拾ってくれば、1000/1ループ時間(_)で処理の回数が予想できるので
30FPSより処理回数が多くなるなら差分のWaitを、少なくなるようならWait無しで対応でき
そうな感じ・・
けどそうなると重い処理の部分ではやはりバラ付きがでそうだなぁ。

>>521
描画が時間かかる場合があるんですよね。
特にStretchBltなんか激重です。
そこが処理落ちの一つの原因で改善できませぬ。

>>523
ありゃご存知でしたか
タイトルとか全部消したんですが。
前回未完成だったので気を改めて焼きなおそうかと。

>>524
そうなりますよね。
まず秒間何フレームかを決める所から考えなければ。
まとめると
・秒間の処理回数を決める(FPS)
・1フレームあたりの処理時間を取得
・1フレーム内の処理時間で処理が追いつかない場合は描画関連の処理をカット
・早く処理が完了しても2フレーム目の処理には進めないようにWait(時間は計算)
こんな感じですかね?
526名前は開発中のものです。:04/12/10 11:00:14 ID:K3alismJ
>>521
スレッドで分離ってことは入力からの遅延があるってことだよね?
俺は次のフレームで結果がすぐに反映されないSTGは最悪な操作性だと思ってるが

>>524
別に垂直府同期とってないこのパターンなら1フレームにかかる時間が可変長でいいんじゃね?
60fpsのつぎが30fpsにしたいというのならそれでいいけど
>>525のようにへんに入り組んで考えてめちゃくちゃなコードになりそうだ
527名前は開発中のものです。:04/12/10 13:14:38 ID:J3BrzChB
F-WINGSは凄く出来がイイ!(・∀・)
でも3ボスの手前で突然終わってしまうのはまだ未完成だからかな。
528499:04/12/10 13:37:02 ID:mM4T3cQF
>>526
既にコード非常に見難いです。
本当は全部作りなおしたいんですけどそこまでの気力が・・
そもそもFPSの概念をよく理解しておりません。
「FTP=1秒間の描画枚数(処理速度)」と思っていいのかな?

>>527
ありがとう。
5ボスまでは行けますよ。
6面の途中で敵が出てこなくなります。
バグ・・・かなぁ??
あ、[ESC]押せば強制終了しますけどそれじゃないですよね。
529名前は開発中のものです。:04/12/10 14:02:20 ID:OfWSlwOi
fps = frame per second 1秒あたりのフレーム数。
アーケードも、ファミコンなど家庭用機も、シューティングは
ほぼ全てがfps60固定を前提にして作ってある。
PCだと性能が低いため15fps前提の時代もあった。
今はほぼfps60固定前提だと思う。
530名前は開発中のものです。:04/12/10 14:04:03 ID:J3BrzChB
>>526
1フレームにかかる時間が可変長ということは、敵の移動速度などをフレーム毎に計算し直す、
ということですか?

>>528
あ、、じゃあバグだったのかな。[ESC]は押してないですよ。
3面のバキュラを過ぎて、敵小隊を倒して、ウイングを確保した直後に画面が真っ暗になりますた。
んで、しばらくしたらタイトル画面に戻った。
531名前は開発中のものです。:04/12/10 14:08:24 ID:K3alismJ
>>530
いや、基本は処理オチなしで回るのがいいんだけれども、
処理落ちしたときに固定フレームレート計算でいきなり半分のfpsにするべきか、
それとも処理落ちした分だけずらすべきかという意味だ

垂直同期してない(できない)ウインドウモードなら後者でいいんじゃないかということね
532名前は開発中のものです。:04/12/10 14:10:22 ID:AzpVoOMZ
>>526後半は、1フレームで描画しきれなかったときのような例外的な場合の話ってことだよね。
533名前は開発中のものです。:04/12/10 14:35:58 ID:XleEsuwA
何の前触れもなくバキュラにナスカ地上絵と、
単純にパクリなのか、関連性もなければオマージュでもない。
なんだろうね・・・
あんまし好かんな、こういうのは。
あと、当たり判定がまんまキャラそのもの。ウィングないとすぐやられる。
3面ボスの高速ミサイルよけ運がわるいと即死って希ガス
534名前は開発中のものです。:04/12/10 14:48:35 ID:XleEsuwA
>>528
>描画が時間かかる場合があるんですよね。
>特にStretchBltなんか激重です。
>そこが処理落ちの一つの原因で改善できま

処理スピードに関しては、うちでは特に問題なかった。
遅くなる部分も全画面ならほぼどれでも楽に動きそうだけども。
535499:04/12/10 15:02:15 ID:B58ECsyO
>>529
ありがとう
有名所だとVF1の30fpsやVF2の60fpsとかですね
m25BASIC(笑)時代の人間なんで、フレーム云々とかいまいちピンと
きてませんでした。あの頃はそんなの全く気にせずによかったからなぁ。

>>530
あと[F2]キー押したら強制的にタイトルへ戻ります。
しかし突然落ちる現象ははじめて聞きました。ちとテストしてみます。

>>533
80年代のシューティングで自分が感銘を受けた要素をネタ的に取り入れました。
正直「パクリじゃん」って言ってもらうのが目的でもあります。
ゲーム名もそうですし、ボス名やウイングの種類、敵、各エフェクト、
どこかで見たものを要所々にパロディとして取りこんでいます。
一つ一つが「あ、これは何々のパクリだ」と軽く受け流して頂けたら幸いです。
自機の判定は羽と先端を除く本体部のみです。ウイングを装着すると判定は
大きくなります。
3面ボスはランダム性が強いですが、高速ミサイル射出前に破壊する事も可能
です。ウイング無ければ画面下部の隅が比較的逃げやすいかと。

>>皆様方
いろいろと話題やご意見等参考になります。
ここは良いスレですね。
536名前は開発中のものです。:04/12/10 17:30:18 ID:dZy+pYqu
>>499
音周りの終了処理おかしくない?
ゲームやったあと
winampで聞いてたmp3の曲の音がこもるようになったんだけど?
537536:04/12/10 17:31:26 ID:dZy+pYqu
winamp再起動したら戻った
すまそ
538名前は開発中のものです。:04/12/10 17:42:32 ID:eZhLbUze
いい雰囲気
539名前は開発中のものです。:04/12/10 19:24:10 ID:6Y/gdlQv
>499
こことかどうかな?
ttp://www.ultrasync.net/yofune/?cmd=read&page=GameDev%2FLink

あと画面下に自機がめり込むとちょっと遊びづらいです。
540499:04/12/10 19:38:36 ID:5ekQ8UPA
>>539
こんなHPがあったのですね。助かります!
早速お気に入りに登録と。

>>皆様方
今夜にでも新しいバージョンアプしてみます。

・速度調整を自動で行ってみました>>525辺りのロジックを盛りこみ
・自機のレベルアップを遅くしました
・ボス戦のみのモードを追加しました
・ランダムウイングモードを実装中(間に合うかな?)

他の端末でゲームスピードが最適かどうかが知りたいです。
一応、win2k(p4)とNT40(p3)で速度の低下が無い事を確認済
541499:04/12/11 00:24:29 ID:F2V6eQ8u
とりあえず自動でWait計算してかけるバージョンに作り変えました。
画面右下に現在かかっているWaitの値を表示してますんで
これが常に25〜30ならばほぼ期待通りの処理量かと思います。

ttp://u.skr.jp/1024/files/0632.lzh

ちなみにうちのWin98で動作させると若干速い感じがします。
あと原因が判りませんが、突然遅くなったりする場合があり
少々困ってしまいました。(Waitをコメントに変えて実行して
も発生する場合があり訳わかりません)
常駐物を落とすことで割と安定するっぽいので、環境的な
ものだと無理やり納得してます(笑

おまけモードを2つ付けてますんで、お暇でしたらどうぞ。
ボス戦モードはもう滅茶苦茶です。4面が限界でした。
ランダムウイングモードは、固定のウイングが全く無いため
ちょっと新鮮な感じで遊べるかと思います。
542名前は開発中のものです。:04/12/11 02:41:06 ID:Gc6vRMJF
>>526
んー、俺はそれでも1フレーム時間は固定にするべきかなー、って思う
1フレーム時間を可変時間にすると何が面倒かって、
ゲーム中のオブジェクトの時間進行速度がマチマチだからとにかくめんどくさい、
コレを実装するプログラムだけは絶対に嫌だw

>>525のやり方をほんの少し変えて調節すると
yaneSDKのFPS調節クラスと全く同じ機能になるよ
一応FPS45だとかそういう指定も出来るようになってる
543名前は開発中のものです。:04/12/11 11:42:52 ID:1OS7WaCz
>>542
>ゲーム中のオブジェクトの時間進行速度がマチマチだからとにかくめんどくさい、
>コレを実装するプログラムだけは絶対に嫌だw

これは上の30fpsに急に落ちる場合と59fpsに落ちる場合とはまったく別問題だよ
作り方がわるいのでは?
544名前は開発中のものです。:04/12/11 12:31:41 ID:Gc6vRMJF
>>526の「60fpsの次が30fpsにしたいというならそれでいいけど」は、つまり
>>524のやり方だと45fpsのような指定が出来ないと考えてるんだよね?

察するに「1フレーム」という単語が
時間進行の1フレームと描画進行の1フレームの別物を指していて
単にすれ違ってるだけだと思うんだけどね
545名前は開発中のものです。:04/12/11 13:01:51 ID:NDyxp7cH
時間進行の1フレーム・・・1フレーム
描画進行の1フレーム・・・1シーン

と言う風に言ったりするよね?
546名前は開発中のものです。:04/12/11 14:31:47 ID:se3EMHtG
しない。
547名前は開発中のものです。:04/12/11 17:24:37 ID:pwPyrG3Q
しねーな
548名前は開発中のものです。:04/12/11 19:23:33 ID:8lYYuoBO
しません。
549名前は開発中のものです。:04/12/11 19:30:18 ID:p6agkv37
>539
そこ、リンクが記事毎に分類されててわかりやすくていーな。
これWikiだけど、おれも足したりして良いのか?
550名前は開発中のものです。:04/12/11 20:01:40 ID:hMumaD3j
ヽ(`Д´)ノムキー
551539:04/12/11 20:36:28 ID:vR11f5K8
>549
俺に聞かれても(;´д`)
管理人に聞いてみてくれ。

>545
しないッス。
552名前は開発中のものです。:04/12/11 21:31:14 ID:6QErQDcK
>>545
しないおー
553名前は開発中のものです。:04/12/11 21:37:31 ID:nNxakqwb
>>545
したことないな
554名前は開発中のものです。:04/12/11 21:54:13 ID:2Px6kqZW
>>545
いわないな。むしろ逆なら言うかもしれんが。
555名前は開発中のものです。:04/12/11 22:37:51 ID:hMumaD3j
VSYNCを使う場合は、1シーンの描画が1フレームに間に合わなかった時に、2フレーム使用するので
60fps→30fpsにガクッとfpsが落ちてしまうわけです。
でも1シーンの描画が間に合ったり間に合わなかったりする境界の場合には、必ずしも30fpsであると
言うことではなくて60〜30の間のどれかのfpsになる場合もあるわけです!



・・・せめてこのスレだけでも流行らないかな(つд⊂)
556名前は開発中のものです。:04/12/11 22:38:49 ID:se3EMHtG
逆も言わない。
557名前は開発中のものです。:04/12/11 22:40:47 ID:Gc6vRMJF
なんかワロタ
558名前は開発中のものです。:04/12/11 22:43:16 ID:se3EMHtG
>>555
シーン、というならspsにならんの?
scene per second.
シーンといえば文字通り画面に現れている1シーンを表すものであって
時間の単位としては使われていない。
どこぞの会社の方言としては使われているかもしれないけど。
559名前は開発中のものです。:04/12/11 23:31:58 ID:hMumaD3j
(´;ω;`)ウッ
560名前は開発中のものです。:04/12/11 23:42:39 ID:uYrLB73N
昔は割り込みだったから、1intとはいったな
フレームはつかうけど、使い分けはしないな
561名前は開発中のものです。:04/12/11 23:46:17 ID:hcjSSrzp
1イントとか1インターとか呼ばれてるから interval の略かとオモッテタ。
562名前は開発中のものです。:04/12/12 00:01:35 ID:2MoEFU9D
別に昔だからって割り込みなんか使って無いと思うけど。
V-Blankを検出するまで待つだけだし。
563名前は開発中のものです。:04/12/12 00:18:53 ID:2GrPOnZa
割り込みって、音以外で何か使ったか?
564名前は開発中のものです。:04/12/12 00:32:39 ID:V4Sj+KDu
ごめん、しったかしただけだから気にスンナ
昔マリオは、メインルーチンなしで割り込みだけだったとかその辺
565名前は開発中のものです。:04/12/12 00:51:13 ID:gDl4N7ky
どっちでもいいけど、ポーリングだとバス占有しちゃうし
VSYNCまちは割り込みのほうが若干応答速度は速かった希ガス

ちなみに同期の仕方として超連射でつかっているライブラリ(XSP)は
処理落ちした場合は次のを待たないという通好みな仕様が合った希ガス
この場合は割り込みつかえないとね
566名前は開発中のものです。:04/12/12 02:12:39 ID:00qqTlxT


           シーン・・・
  
 

567名前は開発中のものです。:04/12/12 03:31:21 ID:AUxOPn4s
   | ∧
   |ー゚) ダレモイナイ・・FPSスルナラ イマノウチ♪
   |⊂
   |
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄


   |
   │ FPSー♪
   │   ∧ ∧  ノ
   │ ⊂(゚ー゚⊂⌒ヽつ
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄


   |
   | 
   | 
   │               シーン・・・
   │
   │ 
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
568名前は開発中のものです。:04/12/12 05:08:30 ID:dJnQLA/c



         こうしてつつがなく夜は更けていくのであった

569名前は開発中のものです。:04/12/12 06:09:12 ID:V4Sj+KDu
>>567
FPSというよりスニーキングアクションって感じだな

笑え
570名前は開発中のものです。:04/12/12 07:13:33 ID:75gASIRW
すまん、わからんw
571名前は開発中のものです。:04/12/12 08:22:31 ID:KRhTbzj7
>>564
まあ、メインルーチン無しのプログラムを作る事自体は、
難しい話でもないしな。メインルーチンが有る方が良いか、
無い方が良いのかは、作成するゲームによっても変わる品。
572名前は開発中のものです。:04/12/12 16:50:14 ID:RTLXKUT2
ファミコンにもスーファミにもメガドラにもPSにもPS2にも
MSXにもX68000にもPC-9801にもFM-TOWNSにも垂直同期割り込みついてるのに、
Windowsにはないんだよな。

俺もすっかり忘れてたけど、最初はかなりボーゼンとした記憶がある。
573名前は開発中のものです。:04/12/12 17:28:07 ID:qEfQ9cSY
まず、それ以前のハードと違ってWindowsでハード叩く方法がさっぱりわからなかった時点でボーゼンとした
574名前は開発中のものです。:04/12/12 17:41:02 ID:0uU5tLMS
漏れもだ。
スレッドが割り込みのかわりになると知ったのは、
そのだいぶ後の話だな。
575名前は開発中のものです。:04/12/13 00:04:09 ID:CDBkXiGS
Windowsって最初はリアルタイムゲームなんて眼中になかったからな
フリーセルやマインスイーパーができりゃ十分だと思ってたんだろう
576名前は開発中のものです。:04/12/13 01:30:28 ID:HvW0oEbA
XboxにもVSYNC割り込みないと聞いたぞ。
PCとの互換を気にしたのか、そもそもDirectX部隊にそんな発想ないのか。

今でもくれるっつーたら喜んで使うんだけど、
OSのカーネルとの兼ね合いとかいろいろ面倒なんだろう、たぶん。サリン。
577名前は開発中のものです。:04/12/13 11:12:29 ID:8o6Gv2ju
むしろ、Vsync割り込みを何に使うのか聞きたい。
DC/GCなんかでは用意されていたけど使わなかったし。
578名前は開発中のものです。:04/12/13 11:19:07 ID:mmtoLQGA
今のフレームバッファ方式で垂直同期フリップが使える環境なら
さほど問題になるまい

とくにコンシューマなら環境が固定されるしね
コンシューマでティアリングがあるほうがきもちわるいわ

Winはもうどうしようもないという妥協の産物だから>ティアリング

現状でも割り込みもらったところで垂直や水平は即時応答が必要な場合が
ほとんどだからリアルタイムOSでない辞典でこれは無理

サウンドにしても割り込みで応答していくのが本来のスタイルだが
これができないのはすぐにわかるだろう
例のOPMボードですらバッファ数での調整だけだから
579名前は開発中のものです。:04/12/13 23:37:35 ID:CDBkXiGS
    〃〃∩  _, ,_
     ⊂⌒( `Д´) < ヤダヤダ!ラスター割り込みできなきゃヤダヤダ!
       `ヽ_つ ⊂ノ
              ジタバタ
580名前は開発中のものです。:04/12/14 01:46:30 ID:NKc2PhBf
できるかボケw
581名前は開発中のものです。:04/12/14 06:47:36 ID:poGq8Mnc
>>577
何に使うのかというより、VSYNC待ちがポーリングじゃなくなるから。
VSYNC待ちしただけでCPU使用率100%になる環境があるWindowsはどうかと思う次第。

>>579
ラスタ割り込みはさすがにもう要らん(w
582名前は開発中のものです。:04/12/14 07:21:03 ID:mfmTbhdO
Sleep入れろ
583名前は開発中のものです。:04/12/14 10:24:02 ID:mtiwrzuV
割り込みにすると描画の負荷が高くて、今回の描画に間に合っていない場合なんかに不具合が出ませんか?
Windowsって割り込みできたっけ?
584名前は開発中のものです。:04/12/14 12:52:29 ID:bBZqvcB7
>>583
そんなことはない
Winではいわゆるまともな割り込みは使えない

ポーリングにしても確実な値が出ないものだから
垂直同期してフリップというのをハード的に用意しないとダメ

DirectXで垂直同期を待つという命令があると思うけど
それプラス垂直帰線期間中にbltでもきれいに動かない
これはマシンパワーの問題じゃなくてリアルタイムOSじゃないからであって
マシンパワーがあがることにより目立たなくさせるだけ

サウンドのバッファにしても同じ

別に割り込みとリアルタイム性が取れる環境なら8bitマシンでもあれだけ
ガンガン動いていて化けてはいないでしょ?
585名前は開発中のものです。:04/12/14 12:59:52 ID:mtiwrzuV
>>584
いや、>>583>>581に対する返事で、
Vsync割り込み無くてもいけるでしょ、ってことなんだけど。
586名前は開発中のものです。:04/12/14 13:08:13 ID:bBZqvcB7
不具合出ませんか?ってのにたいして
それはないといったまでだが
不具合がでるならプログラムがおかしいとしか
587名前は開発中のものです。:04/12/14 13:23:47 ID:mtiwrzuV
>>586
Vsync割り込み使ってるの?
Vsync割り込みじゃないとできない処理ではないし、PS2とかなら使うのかもしれないけど、
DC/GCでは使うことは無かった。PSはそんなに深くさわってないから判らない。
てか>>581ですか?

>不具合がでるならプログラムがおかしいとしか
使ってないのでわかりませんが、確かにプログラムの問題になるね。
描画中か調べれば回避できるし。

微妙に会話がうまくいってないね。
判り難くてすまんです。
588名前は開発中のものです。:04/12/14 14:00:33 ID:3eHtjL4s
> DirectXで垂直同期を待つという命令があると思うけど
> それプラス垂直帰線期間中にbltでもきれいに動かない

bltが遅くて、垂直帰線期間中にbltが終わらないからですか?
589名前は開発中のものです。:04/12/14 14:16:12 ID:bBZqvcB7
>>587
割り込みが使える環境でいじり倒せるというのは一昔前のパソコンだが
割り込みがないと困る場合はわりとある
今みたいにバッファをたくさん持って処理というのがないとかVRAMが遅いとか
今とは作り方が違うしな

>使ってないのでわかりませんが、確かにプログラムの問題になるね。
>描画中か調べれば回避できるし。
不具合が出るといっているのはちみが最初に言い出したことなんだが
納得されてもこまるというか、なら最初からへんなこといわないでくれ


>>588
間に合わないじゃなくて間に合ったところで垂直同期を待つ関数と
bltなど描画が反映される関数と別になってる時点でリアルタイムOSではない
Windowsではきれいに描画されることを期待するのは100%無理ってだけ
bltじゃなくてFlipでも同じだが、垂直同期をとってFlipというのがハード的に
用意されていればティアリングは防げる
590名前は開発中のものです。:04/12/14 14:39:10 ID:mtiwrzuV
>不具合が出るといっているのはちみが最初に言い出したことなんだが
>納得されてもこまるというか、なら最初からへんなこといわないでくれ
いや、すまんです。
でない?って聞いてるだけ何だけどね。

今日びのコンシューマて、ライブラリが結構強力でさ、そいつらがVSyncを使ってるから
後から割り込みをフックするユーザーのアプリじゃポーリングするのと大差ない。

そもそも、>>576前後が発端でVSync割り込みでなにすんのさ?ってことだから。
ポーリングは良くない、って人もいるみたいで、じゃVSyncでやってんの?と。
同期は必要だけど、割り込みって必要かー?と。
まぁ、大分スレの本筋と離れちゃってるからこの辺で収束したいんだけど・・・。
591名前は開発中のものです。:04/12/14 17:41:58 ID:poGq8Mnc
>>590
> 後から割り込みをフックするユーザーのアプリじゃポーリングするのと大差ない。

キミ、そもそも割り込み(VSYNC割り込みに限らず)の存在意義を理解していないのでは?

全然大差なくないよ。ポーリングのループはCPU資源の無駄だし、
そのCPUパワーは本来、バックグラウンドで思考ルーチンを回したり、
CD-ROMからファイルを読んだり、圧縮データを伸張したりと別のことに使えるはずのもの。
Presentみたいなブロック関数がCPU占有しちまうなんてアホみたいやん。

「なぜWindowsはイベントドリブンなのか」という話と同じことなんだけど
これで分からないかな。

> じゃVSyncでやってんの?

あれば使う。ファミコン時代からPSまで使ってた。
Windowsではないからちょっとむかついてる。

CPU使用率が100%になるからVSYNC待ちは良くないとか、別の論理まで登場したりして。
本当は逆で、VSYNC待ちでCPU使用率が100%になるOSが良くないのにさ。
592名前は開発中のものです。:04/12/14 18:40:28 ID:mtiwrzuV
一応理解して使ってるつもりです。
理解しきって使い尽くしているかといわれればNoになりますが。

後出しっぽくてすみませんが、大差ない、といったのは精度に関してです。
VBlank期間に入っても優先度の高いライブラリ周りを先に実行させるので、ポーリングしていても
割り込みに登録していても検出のタイミングはジャストで取れるわけじゃない、って意味で。
落ちてる場合はポーリングでは遅れますが。

>本当は逆で、VSYNC待ちでCPU使用率が100%になるOSが良くないのにさ。
OSのせいなの?OSに処理を返さないアプリのせいじゃなくて?

結局何に使いますか?
CPUフル稼働を目指すならコンテキストの切り替えですか?
593名前は開発中のものです。:04/12/14 19:59:17 ID:NqK8FNxH
>>591
>VSYNC待ちでCPU使用率が100%になるOSが良くないのにさ
× OS
○ ドライバ
594名前は開発中のものです。:04/12/14 19:59:34 ID:9a+RZ13R
VSYNCだとかが絡むネタはいつも盛り上がるなぁ
595名前は開発中のものです。:04/12/14 20:06:02 ID:mtiwrzuV
本筋から逸脱しまくりなので、ROMに戻ります。
良スレ荒らすようになってしまって申し訳ないです。
596名前は開発中のものです。:04/12/14 20:10:13 ID:JMMU1ESD
荒れてはおらんよ
597名前は開発中のものです。:04/12/14 20:37:23 ID:NKc2PhBf
Sleep使ったらボーリングとは言わんのだよ。
598名前は開発中のものです。:04/12/14 20:47:04 ID:mfmTbhdO
599名前は開発中のものです。:04/12/15 04:21:20 ID:zMSCIM6W
結局mtiwrzuVが何を言いたかったのかワカンネ
600名前は開発中のものです。:04/12/15 11:16:26 ID:CANb/MnY
> じゃVSyncでやってんの?
これじゃねーの?
601名前は開発中のものです。:04/12/15 16:49:44 ID:Pi7xlLAw
>>592
>OSのせいなの?OSに処理を返さないアプリのせいじゃなくて?

DirectXは垂直同期取ったらOSに処理返せないだろ。
ドライバがCPUを占有しない作りになってることを神とゲイツに祈るしかない。
だから割り込みよこせって話なんじゃん。
602名前は開発中のものです。:04/12/15 19:29:03 ID:h9T9p7ZJ
>DirectXは垂直同期取ったらOSに処理返せないだろ。
 
OSに処理を返せないってのはダウトじゃん?
ただ単にPresent関数が返ってこないのだから
つまりそのスレッドに処理が返ってこないだけでしょ。
だからマルチスッドレるわけで。
 
>ドライバがCPUを占有しない作りになってることを神とゲイツに祈るしかない。
ベンダーに祈るのが筋だろとネタにマジ突っ込み。

>だから割り込みよこせって話なんじゃん。
マルチスレッド&コールバック関数が代用品足りえない理由を述べよ。
603名前は開発中のものです。:04/12/15 21:26:51 ID:hDisOoRE
マルチスレッドを知らないとか・・・
604名前は開発中のものです。:04/12/15 21:57:58 ID:Pi7xlLAw
>>602
だからPresent関数がCPU占有したらマルチスレッドにしようが意味ないだろ。
「そのスレッドに処理が返ってこないだけ」じゃなくて
それだけでCPU使用率が100%になる、明らかにボーリングしてる場合一体どうしろと?

> ベンダーに祈るのが筋だろとネタにマジ突っ込み。

それはそうかも。
605名前は開発中のものです。:04/12/15 21:58:47 ID:Pi7xlLAw
s/ボーリング/ポーリング/
上のヤツに釣られた。
606名前は開発中のものです。:04/12/15 22:39:51 ID:bQhHcYMM
>>602
WindowsでVSYNC取るとCPUを専有する。どうしよう、って話だから
マルチスレッドとかぜんぜん関係ないでしょ。
VSYNC割り込みがない以上、MSやドライバのベンダを呪いつつ
同期オン・オフの各モードを用意するしかないわけだが。
607名前は開発中のものです。:04/12/16 00:56:31 ID:gCuPh9E/
つーか、割り込みなくてもいまじゃ普通につくれんだろ。なんに使いたいの?

608名前は開発中のものです。:04/12/16 08:08:17 ID:FUU0Kk70
何に使いたいかは>>577から誰も答えてない。
609名前は開発中のものです。:04/12/16 12:01:57 ID:c9auvA2i
        ☆ チン  〃 ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) < VSYNC割り込みのメリットマダ〜?
             \_/⊂ ⊂_ )   \_____________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        | .温州みかん.  |/
610名前は開発中のものです。:04/12/16 18:35:30 ID:EgVtF3ME
だから割り込みで起こしてもらえるならCPU占有しないのが確実になるだろ。
頭悪いやつが多いな。
611606:04/12/16 19:10:52 ID:fImvV4sn
コンシューマやアーケードのような滑らかな映像表現をするにはディスプレイとの同期が必要。
   ↓
が、DirectXでVSYNC待ちをするとCPUを専有する場合がある。
   ↓
同期を取ると、どんな高速なマシンだろうがCPUパワーの過半が浪費されてしまう。
その結果、他のスレッドやプロセスの動作に影響が出たり、
ノートPCではバッテリーの消費が激しくなったりファンが唸りを上げたりするので好ましくない。
実際、CPUを専有するゲームを作ると怒って開発者叩きを始めるユーザも多数いる。
   ↓
CPUを専有せずに確実に同期を取れる方法として、VSYNC割り込みが欲しい。
そもそも>>572みたいに他のゲーム用ハードにはみんなついてるんだし。


とかまとめてみたけど。

何に使いたいの?
→同期を取りつつ、CPUが専有されない真っ当なWindowsアプリを作りたい。
 また、VSYNC待ちで浪費されているCPUパワーを活用したい。

メリットマダ〜?
→CPUが専有されません。
612名前は開発中のものです。:04/12/16 19:47:27 ID:yjfP9+0v
あと何故PCに使われてないのかデメリットもまとめにボンヌ
613名前は開発中のものです。:04/12/16 22:10:49 ID:gCuPh9E/
最近はグラボとドライバが対応してたらDirectXが勝手に同期とってくれてるんじゃないのかな?
負荷の小さいゲームはいつも滑らかに動いてるけど。

XP以降だけの機能?
614名前は開発中のものです。:04/12/16 22:17:45 ID:FUU0Kk70
その勝手に同期でCPUを占有されるのが嫌な人たちと、別にいいじゃんな人たちがいるので
微妙にもめてるような。
615名前は開発中のものです。:04/12/16 22:49:12 ID:kykzdKeg
そろそろスレ違いでごんす
616名前は開発中のものです。:04/12/16 23:34:18 ID:20pIe8Gl
>>611
> が、DirectXでVSYNC待ちをするとCPUを専有する場合がある。
   ↓
> 同期を取ると、どんな高速なマシンだろうがCPUパワーの過半が浪費されてしまう。

V-Sync待ちをPresent関数にお任せすると
おかしなビデオチップとドライバの組み合わせでは
CPUパワーの過半を浪費する場合もあるという話だよね?
 
でも、そういう糞環境であっても
自前でV-Sync待ちすることは可能でしょ。

俺の試した限りでは
Sleep関数の精度の問題で
ギリギリまでSleepさせられないんで
CPU占有率を20%前後は食っちゃったけどさ。
617名前は開発中のものです。:04/12/16 23:35:59 ID:20pIe8Gl
×CPU占有率を20%前後は食っちゃったけどさ。
○CPU占有率を20%以下に抑えることはできなかったけどさ。
618名前は開発中のものです。:04/12/17 01:11:03 ID:fR88sufx
100%占有さえしなければ、
何%だろうが他のアプリが困ることはそんなにないと思ってたけど、違うのかな?
そんなオレはいつもSleep(0)とかで待ってる。
619名前は開発中のものです。:04/12/17 20:59:52 ID:W+xg7vzE
割り込み待ちにしてCPUには休んでいてもらえば、バッテリーが節約できる
620名前は開発中のものです。:04/12/18 04:49:11 ID:nVjO1nxY
>>619
携帯機ではよくやるね。
621名前は開発中のものです。:04/12/18 06:54:38 ID:K6QEeqd8
>>619
それが有用なのってノートをイベントでデモ機に使ってるときだけじゃん
622名前は開発中のものです。:04/12/18 07:23:39 ID:wUjx+TGr
?消費電力を節約できるってことでしょ?
623名前は開発中のものです。:04/12/18 17:32:43 ID:1sVbvuP6
        ☆ チン  〃 ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) < 次の話題マダ〜?
             \_/⊂ ⊂_ )   \_____________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        | .温州みかん.  |/

V-Syncの話はいつも話が発散するから秋田。
624名前は開発中のものです。:04/12/18 22:27:36 ID:KZ1OmR4w
親子タスクを実装して使ってるヤツいる?
625名前は開発中のものです。:04/12/18 22:51:57 ID:KiIyHG9G
実装も何も、親を見て自分で勝手に行動決めるだけじゃ…

とりあえずロボット型の敵にレーザーの応用で作った剣を持たせてブルンブルン振らせたりしてる。
626名前は開発中のものです。:04/12/19 00:17:13 ID:QcYjuFog
親子構造と親子タスクは違うのであり。
627名前は開発中のものです。:04/12/19 00:56:55 ID:busoo5vi
じゃあ説明しろよ
628名前は開発中のものです。:04/12/19 03:35:11 ID:AKN7dEWF
話題が閉塞してきたところで
イカベーダを見て欲しいのだが
スクリプト方式にしました.
コンパイラとかも付けたので
結構遊べるかも

ttp://hp.vector.co.jp/authors/VA036558/App/IBade.zip
629名前は開発中のものです。:04/12/19 04:07:58 ID:h3jIz3z+
出来はともかくその紹介の口調が凄くむかつくのだが。
どうにかならんか
630名前は開発中のものです。:04/12/19 04:25:54 ID:AKN7dEWF
ヘンに捻くれた感じになってしまいました.
スマソ
631名前は開発中のものです。:04/12/19 04:39:27 ID:p0i6koG6
またイカベーダか!
632名前は開発中のものです。:04/12/19 04:40:44 ID:c9LQUTJn
自尊心が見え見えなのがなぁ…
633名前は開発中のものです。:04/12/19 04:56:08 ID:AKN7dEWF
やっぱ?
634名前は開発中のものです。:04/12/19 05:05:18 ID:gB2TN1tM
イカベーダの何を見てほしいんだよ
635B型:04/12/19 05:17:15 ID:AKN7dEWF
スクリプトの命令群とかどうですか?
やっぱり敵の動きとかつまらないですよね
636名前は開発中のものです。:04/12/19 05:48:35 ID:gB2TN1tM
ゲーム内容のことか。
どの程度のもん目指してんのかによるが、いまんとこやり込もうと
思うような出来ではないな。
637名前は開発中のものです。:04/12/19 05:58:10 ID:p0i6koG6
イカベーダね、
「それなりに」できてるとは思うけど、
どうしてその程度の内容で処理ガタガタなんだい。
その点ではまた最初に戻ってるよと。一つ前のverのほうが良いね
638名前は開発中のものです。:04/12/19 06:05:48 ID:h3jIz3z+
なんというか面白いとか面白くないとかそういうレベルに到達してないな…
639名前は開発中のものです。:04/12/19 06:08:46 ID:AKN7dEWF
コンティニューの概念があるぐらいの
難易度じゃないとただの作業になっちゃうかも
640名前は開発中のものです。:04/12/19 06:34:27 ID:gB2TN1tM
どんな環境でもガタガタになるわけじゃないんだから
そういう内容書くなら君の環境も書くべきでは
641名前は開発中のものです。:04/12/19 06:39:45 ID:gB2TN1tM
レス先書くの忘れた
637へのレスね
642名前は開発中のものです。:04/12/19 10:54:54 ID:yCxbgzDJ
>結構遊べるかも

コンパイル型のスクリプトとかプログラム的には
色々面白いことやってるのかもしらんが、
肝心のゲーム性が無いからSTGとしては遊べないぞ。
643名前は開発中のものです。:04/12/19 12:26:22 ID:iLGFuYdZ
製作者的にどんなに面白いことをしていても
プレイヤー的には全然つまらないパターンの典型か
644名前は開発中のものです。:04/12/19 13:16:22 ID:KO8JELN4
何とかプログラムでと思って勉強していたんだが、ゲーム作るのって独特なんだな・・・
もういっそシューティングツクールで作ってもいいか?
遊ぶ側としてどう思うかが気になる・・・手にもとってもらえないとかはないだろうか
645名前は開発中のものです。:04/12/19 13:36:13 ID:gB2TN1tM
ツクール製は微妙なの多いから印象悪いかもねえ。
646名前は開発中のものです。:04/12/19 14:06:57 ID:XRA5b4Zm
ひとつ言えることは
ツクールで作ってたら
プログラムの勉強にはならん。
647644:04/12/19 14:25:18 ID:KO8JELN4
そっか・・・ありがとう。ツクール製だからといって、それだけで手にとってもらえないわけではないのか。
プログラムの勉強が目的じゃないんで、ツクールでちょっとがんばってみるよ。
648名前は開発中のものです。:04/12/19 15:13:00 ID:gB2TN1tM
HSPとかLGPとか使ってみたら?
649名前は開発中のものです。:04/12/19 16:03:25 ID:0tiKAGlU
RPGツクールはずっと出続けてるけど、
シューティングツクールって昔はそれなりにあったのに
もうないね・・・

650名前は開発中のものです。:04/12/19 16:09:44 ID:gB2TN1tM
根本的なジャンル人気とユーザーの年齢層の差かなあ。
651名前は開発中のものです。:04/12/19 16:24:56 ID:tpKqV2GA
弾幕ツクールなら、需要があるかもな。
652名前は開発中のものです。:04/12/19 16:53:57 ID:gB2TN1tM
敵配置データとか吐き出してくれると嬉しいんだけど。
そゆことできないのかな。
653名前は開発中のものです。:04/12/19 17:02:57 ID:0tiKAGlU
いまだとXMLあたりでシリアライズしてくれれば
環境に依存せずに使えていいね

問題はツールのほうを作るのが大変なわけだが
654名前は開発中のものです。:04/12/19 18:09:41 ID:kgZLtbo7
そこでBulletML
655名前は開発中のものです。:04/12/19 18:37:26 ID:0tiKAGlU
それはフォーマットだけしか・・・
656名前は開発中のものです。:04/12/19 18:58:26 ID:X91jZKiM
STGに限らず、ツクール的環境を用意してみたいなと思うことは良くあるなあ。
ソース公開しとけば、もっとよく改良してくれる人が出るかも知れないとか。
で既存のツクール的ソフトに目を向けてみると、自分のやりたいような痒いところに手が届かず
ソース非公開だったり、公開でもコンパイル環境限定だったり。
657名前は開発中のものです。:04/12/19 19:17:45 ID:7teXfw9d
思うだけなら誰でも
658名前は開発中のものです。:04/12/19 22:20:02 ID:QcYjuFog
自分で作ればいいやん。そうすりゃ、ソース非公開にしたり環境固定にしたりしたくなると思うぞ。

まあ、ツクールでどんなことできるか調べてみて、自分で作るならどうするかとか考えてみるのも勉強。
いろいろ見てみるのも勉強。ソースも探してみて見れ。
659名前は開発中のものです。:04/12/20 00:35:12 ID:Ay2g4+JK
問題は、そういったツクールを使った場合、システムが似通ってしまうんだよね。
660名前は開発中のものです。:04/12/20 01:15:04 ID:07CKdVFY
似ないように作れ。
661名前は開発中のものです。:04/12/20 10:33:48 ID:VT8XCKDS
>>656
そういったものを公開するとき
一番覚悟をきめなきゃならないのはサポートだな。
きっとウンザリするぞw
662名前は開発中のものです。:04/12/20 13:11:01 ID:Y99KgCWb
オープンにしてて無償なら、サポートを最初から放棄してても問題ないかも。
663名前は開発中のものです。:04/12/21 15:36:01 ID:4IDIqntD
サポートを放棄したツールなんて、よほどの出来でなければ誰も使わないような気がする
664名前は開発中のものです。:04/12/21 16:16:08 ID:HeAbpJWW
自分のために作ったものを公開するだけなんだから、他人が使うかどうかは関係ない
完全に使うだけの人間ならともかく、多少なりとも作り手にまわった人間にとって、気に入らない部分は
修正を待たずとも自分で直せるという環境は魅力的だし、それが無償ならなおさら
665名前は開発中のものです。:04/12/21 16:47:07 ID:ZluUh9SO
問題は自分で修正してまで使いたいと思わせるツールであるかどうかだよな・・・
666名前は開発中のものです。:04/12/21 18:19:26 ID:HeAbpJWW
ああ、そうか・・・確かにそうだ・・・ただ判断が自分でできないってとこが難しいな
667名前は開発中のものです。:04/12/21 18:38:49 ID:4IDIqntD
>気に入らない部分は修正を待たずとも自分で直せるという環境は魅力的だし
もうすでにそれは全然魅力的ではないよ。
それができるぐらいなら、適当にライブラリ見繕って自分で作っちゃうって。
無料で性能が良くて簡単に扱えるライブラリなんて、いまや探せば結構あるだろ?
668名前は開発中のものです。:04/12/21 19:00:55 ID:qUBM6LIZ
たしかに…
修正がいるなら自前でやったほうが早そうだし、
そのまま使うにはサポートが無いんじゃちょっと…

結論:たぶんいらない
669名前は開発中のものです。:04/12/21 19:50:33 ID:J5eNSCcB
おまえら、自己流の汚いソースを公開したり、他人が公開してる汚かったり綺麗だったりするソースを見てみなさいよ。
勉強になるから。
670名前は開発中のものです。:04/12/21 22:45:16 ID:7pVXjlcu
プログラマーとしては、無償提供なんてやってられないわけですよ。
671名前は開発中のものです。:04/12/21 22:58:22 ID:y3o3j+dn
ソース検索はコレ使え

Koders - Source Code Search Engine
http://www.koders.com/
672名前は開発中のものです。:04/12/21 23:22:39 ID:J5eNSCcB
他人にソースみせないやつはダメだと先輩がいってましたがな。
読み物嫌いな人も無料なので一読しる!

http://www.pro.or.jp/~fuji/mybooks/cdiag/

ページの下の方に本の内容が公開されてるので。
673名前は開発中のものです。:04/12/21 23:26:12 ID:Uty3icaw
自分のコードはなぜか人に見せたくないんだよな。
ムダに「企業秘密」的というか・・・。
674名前は開発中のものです。:04/12/21 23:49:45 ID:ZwV+zB+7
あるソースがあったとして
それを誰でも見ることが出来たとしても
そっから価値のある情報を得られる奴って
限られてるんだよな。
それは結局公開者と同等レベルの奴だったり。
また、あるソースに固執しても仕方ない気がするんだよな。
掛算九九をマスターした者は、それを教えるのに別に躊躇したりしないだろ、
次のステージに進むだけ
こだわってる奴って何時までも九九のレベルに留まってるだけのような
気がするんだよな。
675名前は開発中のものです。:04/12/22 00:28:09 ID:5lbI4GTR
漏れは人のソースダウソして読む根性無い
参考にするのはWeb上のサンプルコードくらい
676名前は開発中のものです。:04/12/22 00:40:46 ID:f7oiKQ4n
そういえば、ゲーム公開してるときにメールで「ソースくれませんか?」って聞いてくるやつがいたなぁ。
勉強熱心といえばいいのかそれとも・・・。
677名前は開発中のものです。:04/12/22 01:16:55 ID:4t19nDIu
微妙なライン・・・
678名前は開発中のものです。:04/12/22 01:31:22 ID:nicx4Sx+
いいから嫁と。
679名前は開発中のものです。:04/12/22 07:41:46 ID:a8c3s94H
スレタイをか?
680名前は開発中のものです。:04/12/22 12:27:22 ID:1J7bIPLA
ソース無し版をフリーウェアにして、
ソース付加版をシェアウェアにするとか。
681名前は開発中のものです。:04/12/22 14:42:11 ID:/yjtlK9x
またクソスレな流れになってきたな
682名前は開発中のものです。:04/12/23 04:42:49 ID:RtIihGtO
669のソースまだぁ?
683名前は開発中のものです。:04/12/23 23:45:21 ID:/98L0sKa
mada?
684名前は開発中のものです。:04/12/23 23:52:19 ID:RMfArIKu
他人のソースなど、自分のセンスの無さを再確認して絶望するためのみに存在するのだ。
俺とは根本的に頭の出来が違うのだろうな、と。
685名前は開発中のものです。:04/12/24 00:15:24 ID:7t9yYqQ9
不細工なソース → 読む気すら起きない
スマートなソース → 読んで自分の才能に鬱
686名前は開発中のものです。:04/12/24 00:20:50 ID:dkIPj+G8
プログラムなんか適当でーす
687名前は開発中のものです。:04/12/24 01:44:30 ID:riRoBYyz
ひとつ読んでみたいものがあるとしたら、ZANACのソースかなぁ。
688名前は開発中のものです。:04/12/24 01:57:16 ID:7bsMoXYR
ひとつだけサンタさんがソースを届けてくれるなら。FFのソースキボンヌ
689名前は開発中のものです。:04/12/24 01:59:06 ID:7bsMoXYR
あ、FFはスレ違いかw STGだとゼロガンナーのソースキボンヌ
690名前は開発中のものです。:04/12/24 02:08:17 ID:3yXbw5c2
>687
時代からして普通にアセンブラな気が
691669:04/12/24 06:06:48 ID:tmeGZDDG
仕事で作ったものばっかりなんで・・・。そのうちテトリスもどきでも作ってアプするよ。
STGの方が本当はいいんだろうけどw
692名前は開発中のものです。:04/12/24 14:11:53 ID:EIXaQXpe
>>691
仕事では一体何をt(ry
693名前は開発中のものです。:04/12/24 14:40:40 ID:isPiy0sm
>>690
そういや今Z80アセンブラ読める自信ねーな
694名前は開発中のものです。:04/12/24 16:00:52 ID:riRoBYyz
あるいは超連射のCで書かれた部分か。
なんつーかさ、「高速化技術」よりも「小さく作る技術」を見たいんだよな。
695名前は開発中のものです。:04/12/24 16:03:28 ID:y6Lj5eP/
>>691
クォース風にすれば問題なし
696名前は開発中のものです。:04/12/24 17:46:57 ID:h642Rwuz
>>694
小さく作れば大抵速くなるよな
697名前は開発中のものです。:04/12/24 17:52:42 ID:isPiy0sm
たしか超連射はほとんどCだったな
XSPで一部アセンブラだっけ
698名前は開発中のものです。:04/12/24 18:03:02 ID:C96PjdIU
>>696
画面のことかと思った。
699499:04/12/25 00:32:01 ID:23ml+9Xz
499です

あれから少し作りこんでみました。
しかし、当たり判定調整するの難しいですね。キャラの大きさは32x32を基本にして
中に描きこんだドット絵のサイズからマンパワーで座標を計算しており、キャラ描き直
したり新規で追加すると結構しんどいです。If〜Thenばっかのみっともない記述・・・
精進せねば。

F-WINGS(ver.1224)
ttp://u.skr.jp/1024/files/0760.lzh

難易度調整やパワーアップ関連、あとラスボス追加してみました(戦闘できませんが)
1〜5面までは遊べるかと思いますので、難易度等のご意見頂けたら幸いです。
手厳しい意見も是非お願いします。
700名前は開発中のものです。:04/12/25 01:00:05 ID:I+wnayTK
当たり判定は、ザコは1個でいいと思う。思ったより細かくやっても意味なかったりするのだよ。
701名前は開発中のものです。:04/12/25 03:48:30 ID:7qCXbQ5o
というか全く意味ないと思われ…
702名前は開発中のものです。:04/12/25 03:57:17 ID:kNrcT9ap
同じ種類のオブジェクトを画面にいくつぐらい出すのを想定しているのか考えて、
1個か2個しか出ないんだったら厳密にやってしまってもいいだろうし、
数十レベルで出す予定だったら、できるだけ簡潔にするようにすればいいね。
703名前は開発中のものです。:04/12/25 07:24:31 ID:vR+CihVW
>699
イイヨイイヨー ただ俺の環境だとこうなるんだが…
ttp://upload.fam.cx/cgi-bin/img-box/sel41225072210.png
704名前は開発中のものです。:04/12/25 08:46:15 ID:DNhCkAeh
かなり期待しているんだけど、あえて言うなら敵弾の色をもうちっと見やすくしてほすぃ。
フルスクリーンモードはあると嬉しいけど、こっちで対応するから別になくてもいいや。
あ、あと半角スペースのあるフォルダに入れるとMIDI鳴らなかった。
705499:04/12/25 09:24:14 ID:23ml+9Xz
みなさんメリクリです。
早速、ご意見ご指導ありがとうございました。

>>700,701,702
グラフィックに対して判定が大きかったりすると、見た目当たって無いのに
判定上当たったりしてたんで、敵毎に細かく判定付けました。
苦労の割には>>701が言う通りいまいち効果が判りません
今考えると大きさ毎のパターンを2〜3個用意しといて、
使いまわせば良かったですね。無駄に条件式が多くなる事も無かったし。

>>703
テストプレイありがとう。
画面が小さくなってますね。うーん。
・・たぶんOSのフォントサイズじゃなかろうかと予想。
ちと調べてみます。

>>704
ご意見どうもです。
敵弾はもう少し見やすくしてみます。
フルスクリーンというか、せめて2倍のサイズにできるようにしてみようかと
思案しています。かなり重くなりそうですが。
半角スペースのフォルダですか?こちらも調べてみます。
706499:04/12/25 09:29:20 ID:23ml+9Xz
ところで質問です。
実ゲームの画面サイズを動的に変更するには、どのようにするのが効率が良いのでしょうか?
"StretchBlt"でメイン画面を拡大表示するのが簡単で良いのですが、これだと滅茶苦茶重い
処理になってしまいます。DirectXなら簡単にフルスクリーン化する機能もあるみたいですが、
できればお知恵を貸してくださいませ。
707名前は開発中のものです。:04/12/25 10:47:23 ID:Vm3HdcxC
>>706
画面に綺麗な枠をつける。枠の外にステータス等を表示する。
まあ、昔のPCゲーでは、よく使われていた手法だ。
額縁に入れた絵だと、そこそこ見栄えが良くなるのと同じ理屈だな。
708名前は開発中のものです。:04/12/25 20:12:40 ID:79Ec0Vdp
昔のPCゲーの外枠やステータスエリアは
リアルタイム描画面積を減らすための涙ぐましい努力の一環だと思うが
そんなことはどうでもいいな、うん
709名前は開発中のものです。:04/12/25 20:42:10 ID:cil8I8c8
画面いっぱいの黒いウィンドウを表示させて、ウィンドウスタイルを変更してから解像度を変更する。
その上にメインのウィンドウをポップアップで表示させればそれなりに大きな画面としてごまかせる…よ。
プログラム内で特別に描画をいじらなくていいので楽。ちょっとアレな感じの解決策だけど…
(スタイル変更は他のウィンドウを巻き込まないため)
710499:04/12/25 22:20:23 ID:23ml+9Xz
>>707,708
以前のバージョンでは、得点表示やその他の毎回描画が必要でないものは
画面外のフレームに収めていた時期がありました。
いささか古臭かったのと、目線がメイン画面から移るのが鬱陶しかったので
今の1画面に無理矢理収める方法になりました。
結果、毎回描画する処理が増えたので処理に負担がかかってしまいましたが
自分的にはすっきりして気に入っています。

>>709
なるほど。
OSの解像度を変更させるんですね。ソフト側での対処ばかり考えてました。
PGに負担かけない方法という点では非常に有効ですね。
しかしこれだとアプリが異常終了や、タスク切替えられたときに問題でそうな予感。
ちと実験してみます。
711名前は開発中のものです。:04/12/25 23:57:39 ID:M2vAMQxV
VBのゲームで、2倍表示や3倍表示のモードを持ってたものがあった希ガス
ただ、どの方法で拡大描画してたのかはわかんない
712名前は開発中のものです。:04/12/26 00:22:25 ID:iJz+kwaP
あやふやなことは確認してから書け
713名前は開発中のものです。:04/12/26 00:58:20 ID:V+L5WM/L
まあ何というか2倍拡大だけでいいなら、倍角した画像を用意しておくとか
初期化時にどっか用意しとくかで構わないような気がする・・・
描画の座標指定だけごにょごにょすればいいんだし
714名前は開発中のものです。:04/12/26 08:35:40 ID:U7hutUIm
DirectX使わない方向の話だよな?
昔やったのは、
・最終的にWinodowにn倍角でStretchBlt
・StretchBlt遅い環境向けに、内部でソフトウェアで拡大して
 一旦DIBにn倍角で描画、最後に当倍でウインドウにBitBlt
だな。
まー、いまごろStretchBlt遅い環境なんて考えなくていいと思うが
715名前は開発中のものです。:04/12/26 16:31:08 ID:qKo+Xana
>いまごろStretchBlt遅い環境なんて考えなくていいと思うが
ところが作者の環境で「滅茶苦茶重い処理」らしいので・・・

「いまごろ」の環境だと、それこそDirectX使っても問題ないと思うし
716名前は開発中のものです。:04/12/26 17:15:18 ID:WFyn5ILm
素直にDirectX使った方が良いと思うな
VBで作ってるみたいだから参考文献とか少ないかもしれないけど
717名前は開発中のものです。:04/12/26 17:23:52 ID:LMMZPdfZ
PenIIIでVRAM4MぐらいのノートPCだと普通に重いと思うけど。
718499:04/12/26 18:16:35 ID:lYjLJbP5
ただいま帰宅しました。
皆様方レスどうもです。

>>713
たしかにそういう方法もありますね。
ただ修正個所が結構でてきそうなので、まずは>>709の方法で試してみて
それから検討してみたいと思います。

>>714
以前、メイン画面をStretchBltで倍化して表示させたのですが、私が使用
している端末のスペック(K6-500mhzとMMX166相当)ではかなり遅くなります。
素直にPC買いかえたいのですが環境作るの面倒臭くって。
あ、OSはWindows98とWindows98SEです。

>>716
DirectXには凄く興味あります。
これを完成させた次のステップとして勉強してみようかと思案中で
719名前は開発中のものです。:04/12/26 18:36:31 ID:3iBL3BwQ
>>499
VB捨てれ…ってのはだめか。
いずれ描画速度問題になりそうだから、DirectX使った方がいいと思う。
720名前は開発中のものです。:04/12/26 18:43:04 ID:U7hutUIm
さすがに、VBだからってDirectX使えないわけないでしょ!
DirectXはなんだかんだいって、ゲームには便利だから機会があったらやってみるが吉
721名前は開発中のものです。:04/12/26 19:13:24 ID:dBizska7
ポリゴンよりハードウェアスプライトとBGが4面くらい使えるボードが出ないかなぁと日々考えております。
722名前は開発中のものです。:04/12/26 19:37:35 ID:BU+M3QcB
>>721
ソフトウェアでそういうライブラリ作ればいいじゃない
723名前は開発中のものです。:04/12/26 19:42:25 ID:Jm7dTB4m
単なる一枚絵BGでいいなら100面くらい使えるぞ今のハードなら
半透明使わずオクルージョンカリング駆使すれば1000枚でもいける

まぁ要するに>>721は時代についていけてない可愛い子
724名前は開発中のものです。:04/12/26 20:37:01 ID:oYXrx3U4
>>718
> 端末のスペック(K6-500mhzとMMX166相当)ではかなり遅くなります。
 
StrechBltはビデオチップのアクセラレーションが絡むんで
CPUのスペックだけでは何とも言えない。

参考までに、
学生時代に(何年も前だが)実家のPC(K6-233MHz + Riva128)
で2D-STGを組んだときは
400x300x16bppでDIBにソフトウェアレンダリングして
30fps出てた。
 
で、>>499のゲームの実行結果を報告すると

CPU : Athlon(1.2GHz)
MEM : 512MB SDRAM(133MHz)
VPU : ATI Radeon 9800Pro 128MB
 
環境下で30フレーム切っている。
アプリ側コードに改善の余地があるように思われる。
725名前は開発中のものです。:04/12/26 20:54:50 ID:dBizska7
>>723
誰も性能云々の話なんかしとりゃせんがな。
何をするにもいちいち面倒臭え!ってだけでさ。
726名前は開発中のものです。:04/12/26 21:22:51 ID:FjNTA6l0
>>718
なんだそりゃ。遅いどころか動かなくても文句言えない性能だな。
そんなタダでもいらんPCなんか見捨てて、面倒くさがらず新しい環境にしなさいっての。
727名前は開発中のものです。:04/12/26 21:54:55 ID:onqUEl+g
将来的にDirectXに移行するのであれば、
今すぐのほうがいいと思う。
728名前は開発中のものです。:04/12/26 21:55:49 ID:BU+M3QcB
K6/500MHz当時のスペックならさほど遅いとはおもわないのだが
ソフトウェアレンダリングといえば超連射か
8bppだけどあれが200MHzで余裕で動くので作り方だろうな
速度稼ぐためにライン抜きとかも合った希ガス

>>725
だからライブラリ作ってしまえばどういうハードか意識しないですむ
ライブラリ作るほうがハードを起こすよりはらくだと思うぞ
729名前は開発中のものです。:04/12/26 22:17:08 ID:6MkCiJbp
n倍表示はVBだと元絵をピクチャボックスに読み込んだ後、
元絵のピクチャボックスをn倍の広さにしてから
同じピクチャボックスにStretchBlt()するのが良いかも。

画像転送サイズをn倍しないとならないけど、
リアルタイムでStretchBlt()をするよりはマシなはず。

ちなみに
CPU:Celeron 500Mhz
Graphics:i815(On Board)
Memory:64Mあれば
VB+GDIでもそこそこのキャラ数で60fps出せます。
730499:04/12/26 23:16:13 ID:lYjLJbP5
どもです。
本日はOSのサイズをソフト側で変更させるロジックを組んだだけで終わりました。
進捗遅いです。

>>724
グラフィックボードはSavage4 Pro(32M)使ってます。
ソースはダラダラと書いてはいますが、多用する処理は極力If構文を使用せず
論理式等で代用しています。ただ肉付けばかりしたソースなので肥大化してしまい
無駄な処理も多いと思います。
ただ、条件式にかかる時間よりも圧倒的に描画関連(BitbltやStrechBlt)が遅いので
全体的なPGの流れを見直さなければいけない予感がしてきました。
あ、ちなみに画面下に表示される数値はFPS値ではありません(sleepの値です)

>>726
そこまで遅くは無いかと・・・
3Dゲームは絶望的ですがそれ以外は結構動きますよ。
しかし・・いいかげん正月にでも買いなおしましょうかねぇ。

>>728
bitbltの一発表示と、ライン飛ばし"nx1(step2)" ドットのbitblt連続描画と考えていますが”
はたして速度に変化でるのでしょうか?後者のほうが余計な処理が増えるので遅くなりそ
うな気がします。

>>729
それは結局内部処理でn倍した場合用の処理(例えば当たり判定や表示位置ををn倍する)
を用意する必要があるという事?
結構影響大きそうな感じですね(違ってたらすみません)
731名前は開発中のものです。:04/12/26 23:32:11 ID:Jm7dTB4m
>>725
>>728の後半の通りだ。君は本当に可愛い思考の持ち主だな。
732名前は開発中のものです。:04/12/27 00:35:16 ID:bYLAsbW6
>>725
そんな貴兄にHSP
733名前は開発中のものです。:04/12/27 04:26:13 ID:W9zbwZoU
なにげにHSPの拡大縮小表示はかなり速いからなw
734名前は開発中のものです。:04/12/27 10:00:59 ID:ivo4lFPL
>>733
HSPだとそもそもフルスクリーンモードも解像度切り替えも楽にできるし
さりげなくDirectXも簡単に使えるしな。。。ただ言語仕様が orz
735名前は開発中のものです。:04/12/27 12:31:06 ID:4RRm9yNd
俺HSPの性能で言語使用がC系列ライクだったら今ごろ信者になってた
736名前は開発中のものです。:04/12/27 14:15:33 ID:z5HDQISK
あれでインタープリタじゃなかったら俺も信者になってた。
737名前は開発中のものです。:04/12/27 15:10:28 ID:DEb0n7+u
あれでオブジェクト指向も入っていたら俺も信者になってた。
738名前は開発中のものです。:04/12/27 15:22:04 ID:slrieifa
あれで言語がC++だったら俺も信者になってた。
739名前は開発中のものです。:04/12/27 15:30:27 ID:Q4pad1wj
プログラミング言語がHSPだけだったら俺も信者になっていた
740名前は開発中のものです。:04/12/27 17:04:21 ID:D6d/vUDU
LGPってどう?
741名前は開発中のものです。:04/12/27 22:33:24 ID:IW1RTa2F
プロパンだな
742名前は開発中のものです。:04/12/27 22:34:37 ID:D6d/vUDU
LPG
743名前は開発中のものです。:04/12/27 22:44:32 ID:1IssCyPR
ワロタ
744名前は開発中のものです。:04/12/27 22:56:03 ID:rT3vGyWl
HSPってそんなに便利なのか? C++で扱いたいなら普通にDirectXそのまま使えばいいと思うんだが。
D3DXは使いたくないけどHSPモドキは使いたいとか、そういうお年頃?
745名前は開発中のものです。:04/12/27 23:00:13 ID:bYLAsbW6
>>744
便利というよりは、最初に頭にたたき込まなければいけない知識が少なくてすみ、
お手軽にそこそこの結果が得られる、ということだと思う。
746名前は開発中のものです。:04/12/27 23:16:47 ID:D6d/vUDU
HSPはむしろ俺みたいなおっさん向け。
747名前は開発中のものです。:04/12/27 23:20:32 ID:LyymrE+f
>>746
おっさんでも当然使えると思うが、
基本的には子供向けだと思う
748名前は開発中のものです。:04/12/27 23:27:22 ID:RiGydzj1
10年近く前に大学で1コマFortranをとっただけの漏れみたいな人間にはとっつきやすくていいな>HSP

CとかC++とか名前は聞くけど、おっかなくて手を出せません。
おかげでここの書き込みも大半は意味不明だったりするけどね(苦笑)。
749名前は開発中のものです。:04/12/28 00:00:00 ID:aQKC6VND
使ってる人が多いということは、それだけニーズに合っているのだろう
750名前は開発中のものです。:04/12/28 00:04:23 ID:0g1xqgns
8bit時代のBASICをちょっとかじった世代にはありがたいぞ。
勉強含めて、あんまプログラムに時間かけたくないし。
751名前は開発中のものです。:04/12/28 00:25:39 ID:9LMc91BV
ダウンロードしてから(難しいお約束事を知らなくても)数行書くだけでDirectXが使えてしまうお手軽さは強い
C++などを普通に使える人にとっては、メリットは多少薄れるだろうな
752名前は開発中のものです。:04/12/28 00:40:30 ID:HvsI9P1G
やはり簡易言語には限界があるのだろうか。
753名前は開発中のものです。:04/12/28 00:47:11 ID:mR4dXFX+
漏れはツールの限界を知る前に己の限界にたどり着いてしまうので問題なし。
754名前は開発中のものです。:04/12/28 00:52:18 ID:0g1xqgns
HSP製ゲームですごいものがあれば説得力あるんだけど、
お手軽な分、お子様がなんも考えないで作りました、みたいなのが
大多数なのが実情なんだよなー。
755名前は開発中のものです。:04/12/28 00:52:29 ID:HvsI9P1G
>>753
天晴
756名前は開発中のものです。:04/12/28 00:52:39 ID:rF9sa9hD
突然謙虚な人が増えたのはなぜだ
757名前は開発中のものです。:04/12/28 00:55:19 ID:LjiL6gJO
みんな照れ屋なだけです。
758名前は開発中のものです。:04/12/28 01:18:55 ID:YqWBMztm
まあ入門にはいってことね。機能理解してからDirectXに進む方が理解は早いかも。
C++とDirectXとWinのお約束事の全部が良く判らないと、まともに動かすところまで進むのも大変で。

まあサンプルあるから絵を出すくらいならC++使ってもすぐだが。
759名前は開発中のものです。:04/12/28 01:28:52 ID:aQKC6VND
Flashなんかは、お子様級も多いけど、層が厚い分モンスター級な作者も結構潜んでいるよ
センスある作品見ると、普通に言語でちまちま何ヶ月もゲームプログラムなんか組んでる
自分が馬鹿馬鹿しく思える
760名前は開発中のものです。:04/12/28 01:55:37 ID:5d3rmYsv
Javaは意識せずに内部でDirect3D使ってるです
761名前は開発中のものです。:04/12/28 02:08:44 ID:7VtLEniq
HSPのシューティングというと飛翔鮎とかガンデッドラインとかか
762名前は開発中のものです。:04/12/28 02:10:33 ID:2RGa4Zd8
しかもDIBやDDBとかDirectXとかメモリーの確保によってすべてダイナミックにかわる
動的コンパイラだけにNT4のようにDirect3DがダメだったりSSEの有無とか
かなーりあたまはいい

.NETもだけど、静的コンパイラのほうが速度の限界がきやすいからね
内部で統計取りつつダイナミックにhotspotはつえーよ

GCのチューニングも余裕だし5.0での速度はすばらしい
763名前は開発中のものです。:04/12/28 02:17:36 ID:PLOY4h8r
>>754
個人的には飛翔鮎でHSPに対する偏見はなくなったなぁ・・・
LGPでもPsyche Metalとかあるし、このスレ的には言語は関係なさそ
目的が達成できてるなら、わざわざ途中で使用言語を変える必要もないだろうし
御幣があるかも知れないけど、「C系を使ってるほうが良い」みたいな風潮があるから
入門者が敬遠し、結果として、ものが比較的良いものにはC製が多くなってるだけだと思う

>>760
それはJavaの仕様ではなかったと思うです
でもJavaは透過GIFとか普通に使えるのが案外便利だと思うです
速度とかVMの話をしだすといろいろ湧いて出てくるのでそのへんはスルーしたいです
764名前は開発中のものです。:04/12/28 04:28:21 ID:eZh/IZfo
HSPヨまんせー
765名前は開発中のものです。:04/12/28 05:23:23 ID:ZaDUg1K6
便利ではあるがマンセーするほどのものでもないw
766名前は開発中のものです。:04/12/28 20:56:27 ID:0g1xqgns
言語より配置やアルゴリズムが大変だ…。
面白いかどうかってこっちで決まるよなあ。
767名前は開発中のものです。:04/12/28 21:28:49 ID:YuiMbh4O
配置やアルゴリズムが絶妙な作品にもう少し出合ってみたいな
現状探してもいないが…
まぁ配置に凝ったものにふれても、今度はシステムや細かい挙動が不満だったりしそうだが
768名前は開発中のものです。:04/12/28 21:31:05 ID:3v9zSI6u
シューティングゲームを作ってみたいのですが、
どこから手をつけていいのか分からないのです。


当方のスペック
・大学生♂
・その昔ロゴとかいうソフトで厨房の頃シューティングを作っていたりした
・c++をほんの少しだけ知ってる(無知に等しいかも)
・c++builder5professionalを持っていたりする(ほとんど使った事は無し・正規購入品)
・マシンスペックはxp、p4 1.8g、memory756M、radeon7500

言語・開発ソフトは上記でいいのか、
お薦めの書籍・ソフト・HP、何からはじめたらいいのか
等、教えていただけないでしょうか
769768:04/12/28 21:34:22 ID:3v9zSI6u
追記:2Dシューティングです
770名前は開発中のものです。:04/12/28 22:09:34 ID:JS0dmS9x
せっかく購入した開発環境があるんだから、それを使っていきましょや。
とりあえずはプログラミング自体に慣れたほうがいいかもね。
771名前は開発中のものです。:04/12/28 22:11:43 ID:XT9TjhPm
最初は絵を表示するとこかな。I/OのDirectX入門書とかお勧め
2Dつっても今はDirect3D使うのが主流だからDirect3Dを覚える

シューティングのプログラムの構成はWebに沢山あると思うんだが
本を上げるならシューティングアルゴリズムマニアックスとか。でもお勧めはしない
実際に作るときは他人の書いたソースでも参考にすれ

それが出来た上で面白いシューティングを作りたいならシューティングをやりこむべき
772名前は開発中のものです。:04/12/28 23:14:19 ID:T/yIjxhS
>>768
つ" http://clootie.narod.ru/cbuilder/index.html
個人的にゃDirectXよりVCLなんだが・・・・

こういうのもある。
Quadruple D for Borland C++Builder
http://www.kcat.zaq.ne.jp/takao/qd4bcb/
773名前は開発中のものです。:04/12/28 23:43:21 ID:rF9sa9hD
なにこのやさしい対応!?
774名前は開発中のものです。:04/12/28 23:46:32 ID:T/yIjxhS
同人系の人が留守だから・・・・
775名前は開発中のものです。:04/12/29 00:00:40 ID:lXo8DkvW
>768
猫又刃dのところのドキュメントを漁るとよろし
776名前は開発中のものです。:04/12/29 00:01:01 ID:vVDP+MeU
>>768
ロゴ?タートルグラフィックスの?
777名前は開発中のものです。:04/12/29 00:25:35 ID:z4xfI6WO
>>674
そもそもコンパイルができない香具師が多いらしいな。


mameのソースは公開されているが「コンパイルの仕方教えれ」な香具師が多すぎ。


778768:04/12/29 00:27:15 ID:vf96C4VU
情報をくださった皆様、大変ありがとうございます
とりあえず、DirectXをかじってみようかと思います

>>771
>I/OのDirectX入門書
とは
DirectXによるゲームプログラミング I/O別冊
の事でしょうか?

>>776
そうです
接触判定が
if touchingでできたのが恐ろしく素晴らしい事だと知ったのは
その後c++を学ぼうとして挫折した時の事でした

779名前は開発中のものです。:04/12/29 00:29:56 ID:00XPSv+R
同人系だと冷たいってのかよヽ( `Д´)ノ
780名前は開発中のものです。:04/12/29 00:36:41 ID:v4wMgCs/
えーとC++でシュ−ティングを作ってます
大体の枠グミは出来たのですが(自機、敵機を動かせて弾が出る。)面とかキャラデータとかを格納する方法が分からないです。
イマまではソースにそのまま埋め込んでたんでました。
多分別ファイル化何かを使って管理するのだとは思うのですが。
教えてくださいm(><)m
781名前は開発中のものです。:04/12/29 00:43:47 ID:BUEBy7Yt
その辺は好みの問題だと思う。
シューティングくらいだったら面数も多くないと思うし
ソース埋め込みでもいいんでない?
一人で作ってるんだったら外部データ化するメリットもそんなに無いだろうし。
あくまで俺の考えだけどね。
782名前は開発中のものです。:04/12/29 00:45:40 ID:saIBdyEK
ステージデータのハードコーディングからの脱却って、一つのテーマでありFAQでもあるかな
方法は用途によっていろいろなので一発で教えるのは無理だよなー
異論もどんどん出るだろうしな。作る人によって全然スタイルが違うし、
ある方法は他の人からすれば馬鹿馬鹿しくみえたりもするだろう
783名前は開発中のものです。:04/12/29 00:59:12 ID:oJsAFgDY
バランスを取るために変更が効率よくできれば、実装方法はなんでもいいかな。
784名前は開発中のものです。:04/12/29 01:02:02 ID:mV17DEnS
最近作ったSTGで初めて面データを外に出して、マップエディタを自作した。
あまりの開発効率のアップぶりに我ながら泣けた。

個人的見解を言えば、ある程度マップデータの規模が大きくなるならソースとデータを分けた方がいいと思われ。
785名前は開発中のものです。:04/12/29 01:02:03 ID:ssYyQs1h
たいていの入門書にはシューティングゲームとかいう名前でサンプルがあったりするけど、
実はキャラや弾の移動くらいで、配置などのステージデータとかの持ち方とかそういう
データ構造について言及してるのってほとんどないよね…
あと入門書でも爆発アニメーションについて、細かく説明してあったりすると嬉しいな。
移動や当たり判定については、もうおなかいっぱいだよ。
そういう参考書ってあったりするのん?
786名前は開発中のものです。:04/12/29 01:28:46 ID:vG3KQyOQ
>>785
そこでやねうらおですよ。
787名前は開発中のものです。:04/12/29 07:48:48 ID:QlZN4+1J
うらお!
うらお!
やねやね うらお!
788名前は開発中のものです。:04/12/29 09:33:39 ID:Lo0aqLLL
シューティングを作ろうとしているまた別の者です
敵弾パターンと敵パターンと移動パターンを定義して
データ上の敵は
・座標
・体力
・移動パターン
・移動パターンへの引数いくつか
・敵弾パターン
・敵弾パターンへの引数いくつか
を保持する方向ですが、なにぶん自分で思いついた方法ですので暴走してないか心配です
普通はどうやって保持して行動させるのでしょうか?
789名前は開発中のものです。:04/12/29 10:33:14 ID:E7rUOQkt
問題ないと思う.

私の場合は,座標とかの個別データの他は,
敵の種類ごとに移動や弾発射,描画とかをまとめた関数つくって
そのポインタを一個だけ持たせてる.

790名前は開発中のものです。:04/12/29 11:57:09 ID:6ISag/xJ
漏れは描画は別かな
表示コマンドだけキューアップ
791名前は開発中のものです。:04/12/29 13:57:03 ID:ND4dbfP4
>>788
細かいことだけど消滅するまでの時間とか持っておいたほうがいいかも。
例えば最終的に画面外に出て行く敵とかは
発生した瞬間に画面外に出て消滅するまでのフレーム数を求めてしまって、
画面外に出たかどうかの判定せずに、そのフレーム数を減らし続けて
0未満で消滅させる。
当たり前すぎてシューティングのサンプルとかでは書かれてないこと多い。
792名前は開発中のものです。:04/12/29 14:22:04 ID:GFKrxljp
Luaの組み込みにチャレンジしてるけど、仕様覚えるのが大変。
でも分岐や反復が使えると面白いことが出来そう。
793名前は開発中のものです。:04/12/29 15:49:57 ID:Lo0aqLLL
>>791
なるほど、情報サンクス。
794名前は開発中のものです。:04/12/29 18:25:39 ID:VUgu96uQ
age
795一星 ◆Cppn/.YI3. :04/12/29 21:21:12 ID:VUgu96uQ
オブジェクト(ここでは機体など)のデータにはvectorクラスを使うのがいい?
ただ単に配列で管理するよりずっと便利だと思うんだけど。
796名前は開発中のものです。:04/12/29 21:26:06 ID:t9m26RMS
vectorよりはlistかね
797名前は開発中のものです。:04/12/29 21:44:04 ID:zfi3Tw39
やれそうなときに両方を使ってみるのがいいかと。利点と欠点が見えてくる。
798名前は開発中のものです。:04/12/29 21:55:53 ID:GFKrxljp
ハンドルでアクセスしたり順番にアクセスしたりできるように、
内部的にはvectorなんだけど双方向リンクリストも持った形式になってる。
799名前は開発中のものです。:04/12/29 23:47:29 ID:VUgu96uQ
vectorとlistの欠点ってなんですか?
800名前は開発中のものです。:04/12/29 23:47:50 ID:VUgu96uQ
あと利点もお願いします
801名前は開発中のものです。:04/12/29 23:57:15 ID:CCFF1FWd
いや・・・それだけだとスレ違いだろ・・・
802名前は開発中のものです。:04/12/30 00:01:39 ID:DlTtDKxL
>>801
シューティングゲームを開発する上での利点・欠点なら問題ないのでは?
803名前は開発中のものです。:04/12/30 00:09:30 ID:Ur2g9oT9
>>802
じゃあよろしくw
804802:04/12/30 00:18:17 ID:DlTtDKxL
>>803
いや、俺無理だから……
805名前は開発中のものです。:04/12/30 01:02:55 ID:WdznkPh+
vectorは指定した添え字(位置)へのアクセスが高速な代わり、
要素の途中挿入や削除が遅い。
listは要素の途中挿入・削除が高速な代わりに、
指定位置へのアクセスが遅い。

シューティングのオブジェクト管理では大概
途中要素の削除が頻繁に起こる(弾が画面外に消えたり)し、
判定なんかでアクセスする際はbeginからendまで一通り回すだろうから、
決め打ちでどこかにアクセスすることは少ないような。。
と、これだけ考えればlistの方がいいんじゃないかなと思うんですが。
どうなんでしょう?
806名前は開発中のものです。:04/12/30 01:15:51 ID:DlTtDKxL
>>805
当たり判定で全オブジェクトを見なければならないので、
そうするとlistは不利なんでは?
807名前は開発中のものです。:04/12/30 01:19:17 ID:DlTtDKxL
808名前は開発中のものです。:04/12/30 01:22:46 ID:pDBy9gub
HSPでRPG作りたいんですが、正直難しいと思います。
でもやりたいんです!!僕はHSPでブロック崩し(アルカノイド)
ぐらいなら作ったことあります。
今のところ、オープニングまで作ったのですが、どなたか僕に
HSPの基礎からすべてを叩き込んでくれませんか??
お願いします。
809名前は開発中のものです。:04/12/30 01:25:09 ID:pDBy9gub
HSPでRPG作りたいんですが、正直難しいと思います。
でもやりたいんです!!僕はHSPでブロック崩し(アルカノイド)
ぐらいなら作ったことあります。
今のところ、オープニングまで作ったのですが、どなたか僕に
HSPの基礎からすべてを叩き込んでくれませんか??
お願いします。
810名前は開発中のものです。:04/12/30 01:27:11 ID:N8q60uxJ
iteratorで先頭から順番にアクセスするだけなら
さほど速度に違いが出ることはないかと思ったのですけど

むしろ、オブジェクト数が増えていった時、
vectorのように途中要素を追加削除した際に領域を再確保するコストに比べれば
アクセスにかかるコストは微々たるものではないでしょうか?
一番の問題はランダムアクセスをすることがあるかどうか、だと思いますが。

とはいっても実際のSTGで実証したわけではないので推測の域を出ませんが…
811名前は開発中のものです。:04/12/30 01:30:50 ID:TvuCxC7P
試せばええやん
812名前は開発中のものです。:04/12/30 01:55:11 ID:C7YTnA39
どっちだっていいだろ。
813名前は開発中のものです。:04/12/30 02:01:40 ID:ES/OVKwd
スペック高すぎて実感できないだろうから。Listのが良いよ。>>805に書いてあるとおり。
それが理解できないってのはVectorとListの違いを理解できてないってことだよ。

作ればランダムアクセスすることはまずないってすぐわかると思うんだがね。
814名前は開発中のものです。:04/12/30 02:22:39 ID:8n/58+YS
自分はlistでやってます。
vector使ってても、添え字からアクセスする事はあまりしないだろうし。
815名前は開発中のものです。:04/12/30 05:48:28 ID:5qALY9zF
・vectorはゲーム開始前に必要な要素数分のメモリを確保することができる
・listは要素を追加するたびにメモリを確保する

∴要素の追加に関してはvectorのほうが有利

ここまであってる?
816名前は開発中のものです。:04/12/30 07:35:26 ID:CjoC984V
STL使うとやたらファイルサイズが大きくなるんですが…
俺はしょぼいリストを自作して使ってます
817名前は開発中のものです。:04/12/30 10:41:27 ID:2SvBbKau
>>816
バカの典型
818名前は開発中のものです。:04/12/30 10:44:24 ID:Bm75nlqL
>>817
おちつけ

>>816
今時、ファイルサイズのデカさは問題にならないくらいの
HDD容量(配布するなら、通信帯域)があるから、

 ライブラリ自作する時間 < ファイルサイズ

だな、効率を考えると。
819名前は開発中のものです。:04/12/30 10:55:26 ID:PM36EONS
>>815
> ・vectorはゲーム開始前に必要な要素数分のメモリを確保することができる
> ・listは要素を追加するたびにメモリを確保する
>
> ∴要素の追加に関してはvectorのほうが有利
 
ちょっと待て。メモリ確保の様式が固定的であると考えますか。
妙ですね。例えば、listのソースに一度でも目を通していれば
allocatorが任意に指定できることを知るはずなんですが。

結論:
てめーよー
有利とか不利とかパフォーマンスを語るならよー
ちゃんと調べろよ。ベンチ取れよ。裏取れよ。
思い込みで語んなよ。なぁ。おい。ゴルァ。お?
820名前は開発中のものです。:04/12/30 11:27:02 ID:+kZT0mOX
ぶっちゃけどっち使おうが最近のマシンなら大差なかったりする
821名前は開発中のものです。:04/12/30 12:01:31 ID:z5Mxi6uB
>ちょっと待て。メモリ確保の様式が固定的であると考えますか。
>妙ですね。例えば、listのソースに一度でも目を通していれば
>allocatorが任意に指定できることを知るはずなんですが。

allocatorが任意に指定できようができまいが、listは要素を追加するたびにメモリを確保するのには変わりない。


結論:
お前もバカ。
822名前は開発中のものです。:04/12/30 12:19:33 ID:LKRjz9UK
>>819
>>821
多分君たち微妙にずれてる。
深呼吸してレスした相手の文章をよく読みましょう。
不用意に馬鹿とか言っちゃだめですよ、馬鹿ども。
823名前は開発中のものです。:04/12/30 12:22:24 ID:cd4ekPU/
話題転換に「弾幕はさいたま」でもどうぞ
824名前は開発中のものです。:04/12/30 12:33:10 ID:n6dK7/vq
>>820
フラグメンテーションを起こさなければね・・・
825名前は開発中のものです。:04/12/30 12:41:36 ID:6A9t7Beh
イテレータでアクセスするとVC++のデバッグでインスタンスのメンバを参照できないんですが
これって仕様?STL便利なんだけどバグったときに使いづらいなぁ
826名前は開発中のものです。:04/12/30 12:48:30 ID:fXtUvpbT
>>821
>allocatorが任意に指定できようができまいが、listは要素を追加するたびにメモリを確保するのには変わりない。
 
ずれている。私は>>815に前提条件の質問をした。
>メモリ確保の様式が固定的であると考えますか。
  
なぜ質問したかというと、それは>>815の結論

>∴要素の追加に関してはvectorのほうが有利

の導出過程がおかしいと感じているからだ。なぜ

>・vectorはゲーム開始前に必要な要素数分のメモリを確保することができる
>・listは要素を追加するたびにメモリを確保する

がパフォーマンスの優劣を語るに足る理由になるのか。
STG程度の要素数であれば全く取るに足らない話ではないのかと。
827補足:04/12/30 12:50:09 ID:fXtUvpbT
ID:PM36EONS = ID:fXtUvpbT
828名前は開発中のものです。:04/12/30 13:07:31 ID:72SUPqNT
>>826
てめーよー
有利とか不利とかパフォーマンスを語るならよー
ちゃんと調べろよ。ベンチ取れよ。裏取れよ。
思い込みで語んなよ。なぁ。おい。ゴルァ。お?
829名前は開発中のものです。:04/12/30 13:12:21 ID:fXtUvpbT
端的に言って私は
ソース出せの立場である。よって免責。
830名前は開発中のものです。:04/12/30 13:27:40 ID:C7YTnA39
自分は両方使うかな。
ゲームなんだからオブジェクト数などは有限で
開始時にvectorに入れといて、
用途に応じてそれぞれのlistに突っ込む
831名前は開発中のものです。:04/12/30 14:16:26 ID:D4fvJxzY
なにも考えない。
832名前は開発中のものです。:04/12/30 17:17:22 ID:b5ZMFDnA
普通は以下のページのような各コンテナの特性を理解したうえで用途に応じて選択する。
ttp://www5a.biglobe.ne.jp/~rarin/stl/

他に参考にできそうなものは、以下のページにあるvectorの注意点というところかな。
ttp://www.nantekotta.com/stl.html

あと、
>allocatorが任意に指定できようができまいが、listは要素を追加するたびにメモリを確保するのには変わりない。
これはちとおかしい。メモリを確保するのはallocatorだ。
833名前は開発中のものです。:04/12/30 18:36:24 ID:ES/OVKwd
ゲーム作ってるとListのが便利なんだが、パフォーマンスを考えるとそればっかりというわけにはいかないという
ところまで理解が進んでない人からみれば、Vectorこそが最適解となっちゃうだろうね。

メモリ確保は固定サイズで大量に確保しておいてそこから取得するようにすれば高速化は可能だが・・・。


まあ、使いもしないでどっちが良いとか言ってるヤツはプログラマとしては伸びないだろうな。
834名前は開発中のものです。:04/12/30 18:49:46 ID:8n/58+YS
>>816
テンプレートだからね。
全てのバージョンの型サイズ分の容量は食うのかな?
自分は気にしてないけどw
オマケにRTTIも使ってるしw
その辺(コレクション管理やアロケータ、メモリプール等)も一度は
理想的なものを構築したいと考えつつも、とりあえず実害がないから後回し、、。
それよりも先に、外部ファイルから型情報を追加、みたいな事をやってみたい。
835名前は開発中のものです。:04/12/31 02:31:47 ID:izOS7kYc
結局のところはlist有利ということになるのかな?
836名前は開発中のものです。:04/12/31 02:36:24 ID:ggtNGG+H
setって実装も見たことあるけど
837名前は開発中のものです。:04/12/31 02:49:52 ID:izOS7kYc
>>836
どれがいいのかはっきりさせてくれよー
838名前は開発中のものです。:04/12/31 06:47:48 ID:4emf782F
>>837
vector:可変長配列
list:双方向リンクリスト
set:2分木

STLportだかboostだかにハッシュもある。データ構造の特性考えて選ぶといい。

それにvector<Hoge>って直接書かずにtypedefしておいて、イテレーター経由で使うように
すれば数箇所書き換えるだけで全部試せる。

PenIIIクラスのCPUがターゲットで数千数万のオブジェクトが出てくるとかじゃない限り
そうそう違いが出るものでもないんでとりあえずどれか好きなの使っとけ。
839名前は開発中のものです。:04/12/31 07:01:36 ID:7fLtn7Y3
listでもゲーム開始前に必要な要素数分のメモリを確保することができるって話はどうなった?
やり方おしえてくれ!
840名前は開発中のものです。:04/12/31 07:22:30 ID:TnqP1wY6
そーゆー命令が無かったか?
841名前は開発中のものです。:04/12/31 07:36:09 ID:7fLtn7Y3
>>840
listにcapacity()はない
842名前は開発中のものです。:04/12/31 10:53:14 ID:mmQ16pBZ
list::resize?
843名前は開発中のものです。:04/12/31 17:50:02 ID:sFIqG235
確保される最大サイズの構造体で取得される最大数の配列を容易する。
空きワークはスタックしておけばいいかな。
アロケータで確保が必要になるたびに底の配列であいてるやつを拾ってくるようにする。
これで事前にメモリ確保されてる形になると思うが。当然拾ってくるオーバーヘッドは0にはできないが。


Listがなぜ便利なのかはかなり規模の大きいものを組んで失敗してみないと理解できないと思うよ。
そしてそれは非常に有益な情報なのです。まあ、そう思うところまで作りこまないなら何でもいいとおもうが。
844名前は開発中のものです。:04/12/31 18:07:40 ID:Yn/8GaVI
容易
845名前は開発中のものです。:04/12/31 20:09:21 ID:/WllPWzA
結果として出力されるものがあまり変わらないなら、
あとで楽なほうを選びたい。
846名前は開発中のものです。:04/12/31 20:21:18 ID:l7oRwyEO
そんな優柔普段なあなたに、std::map
ランダムアクセスも途中追加/削除もやり放題。
847名前は開発中のものです。:04/12/31 22:08:04 ID:1qMfUdPC
mapの内部ハッシュの管理がvectorだったら笑えるな
その辺どう?>>846
848名前は開発中のものです。:04/12/31 23:56:14 ID:8CeR0jws
>>847
ツリー管理だよ
849名前は開発中のものです。:05/01/01 01:02:25 ID:RqR8br13
>>848
シノニムじゃなくてハッシュ自体もツリーなの?

ソース見ろよ俺という感じだが。
850名前は開発中のものです。:05/01/01 11:56:17 ID:G4hknYqP
>>849
すまん>>838に書き損ねた。map:2分木だ。mapは連想配列のインターフェイスと性能要求だけで
「ハッシュ自体」が存在しない。

大抵の実装だとキーを2分探索してるはず。仕様にはデータ構造の実装方法自体は指定されてないけど
各操作に対する計算量のオーダーの要求を満たすには木構造を使うしかなかったような。

hashや各種アルゴリズム欲しかったら標準C++じゃないけどSTLport・boost・lokiあたりを
ざっと見とくといいよ。lokiはもはやC++以外の何かに見えたりするから深入りすると戻って
来れない。
851 【末吉】 【1562円】 :05/01/01 13:35:05 ID:bIice4WP
std::mapの実装は大概赤黒木だな。
つーか、それ以外の実装を見たことがない。

ハッシュベースの連想配列が使いたかったら、
STLportとかg++とかには最初からhash_mapがあるんでそちらをどうぞ。
ただし、こちらはイテレータで順次処理したときに、キーの順序に並ばないけどね。
852名前は開発中のものです。:05/01/01 13:38:21 ID:bIice4WP
あ。ひょっとして、>>849はstd::mapとstd::multimapを取り違えてるとかってことはない?
853名前は開発中のものです。:05/01/01 21:15:01 ID:1BbKfmM5
ゲームパッド等のコントローラ対応もいいんだけど
キーボード操作にも対応してほしいなぁという同人ゲーム結構あるよな。
まぁオレは初期型ワイドサインダー使いだから問題なしだが。
854名前は開発中のものです。:05/01/01 22:55:04 ID:1ij0yYPx
ワイドサインダー?
855名前は開発中のものです。:05/01/01 22:59:08 ID:WSxQDvik
ワロタ
仮面ライダーに出てきそうだ
856名前は開発中のものです。:05/01/03 11:15:57 ID:wcNlXr2G
ジャイケル・マクソンのガイドライン
http://that3.2ch.net/test/read.cgi/gline/1068732559/
857名前は開発中のものです。:05/01/03 11:33:52 ID:woxnn8nO
ジョン・ベンソンはいないのか?
858名前は開発中のものです。:05/01/03 14:29:07 ID:cWA7zPse
BulletML初心者です。
<vanish>が全然うまく使えません。使い方教えてください。
他に適切な聞きにいくべき場所があれば、すみませんが教えてください。
859名前は開発中のものです。:05/01/04 14:07:56 ID:YJOlpSit
BulletMLってXMLとかの知識が無いと使えない?
860名前は開発中のものです。:05/01/04 16:35:19 ID:E4m4Es9c
基本的には、XML知らなくてもLibBulletMLが全部やってくれる。問題ない。
たしかLibBulletML組み込みガイド書いてた人のページもあったはず。
861名前は開発中のものです。:05/01/05 15:14:38 ID:TNhuAPD5
BulletMLって自機の方向をサーチとかってできる? なんか自機の位置を
認識しない固定弾幕(ってなんだ)だけしかできないような気がするんだけど。

ていうかXMLに条件判定文って入れられたっけ?
862名前は開発中のものです。:05/01/05 15:36:18 ID:2X4hoQ6c
googleで公式page探して読むと一応解説がある
ttp://www.asahi-net.or.jp/~cs8k-cyu/bulletml/
ttp://www.asahi-net.or.jp/~cs8k-cyu/bulletml/bulletml_ref.html
> スタートを押すと、自分を狙った弾が飛んでくると思います。


たしかにBulletMLには素人の導入をはばむ壁が多いとは思う
直感的にアクセスできるのはある種の言語やBulletMLに慣れた人だけのように思えるサイトデザインとか
ダウンロードして何やったらいいのかすぐわかるのは複数言語経験ずみでリファレンスの読み方に慣れた人だけとか

普及ポータルとそこへのリンクが本家から貼ってあってもおかしくないほどの良い規格だと思うんだが
863名前は開発中のものです。:05/01/05 15:38:29 ID:teSL7Vmp
OOPで インベーダーの基本的動作作ったんだけど
OOPの観点からプログラム設計についてどう思うか、コメントください。

プログラムのみ
http://gkufme.s28.xrea.com/SpaceAction.zip

ソース付き
http://gkufme.s28.xrea.com/SpaceAction(and source).zip

ちなみにDirectX9を使用した自作ライブラリ使ってるので
DirectX9入ってないと動かないと思う。

操作は
← and → : 移動
space : ミサイル発射
864名前は開発中のものです。:05/01/05 15:42:37 ID:2X4hoQ6c
失礼しました、"素人の"は削除して読んでください
自分自身BulletMLをろくに理解してない素人だと思ってるが、だからといって
他人を素人呼ばわりしていいもんじゃない
865名前は開発中のものです。:05/01/05 16:23:27 ID:WGeYJZuU
そう思ったなら自分でそれを作ってみるべきだ。 もしそれをやるまでもないと判断したなら、当然みんなもそう思ってるということだよ。
866名前は開発中のものです。:05/01/05 16:59:09 ID:ty7rjUGs
>>863
せっかくOOPならJavaで作れよ。ダウソめんどい。
867名前は開発中のものです。:05/01/05 18:20:09 ID:5ILDACEh
>>863
CObjectから継承してるのに、なぜCTankでm_posMaxが多重定義されてるんだ?

それ以前に、OOPでゲームを作ることを考えてるなら
なぜポリモフィズムを一切利用してないのかが疑問。

これじゃ構造化プログラミングと大して変わらないじゃないか
868名前は開発中のものです。:05/01/05 18:26:12 ID:WGeYJZuU
具体的にどうしたほうがいいのかソースがないと永久に判らんのであり。
一人で10タイトルくらい作る程度ならあんま気張ってアレコレ作ってもしょうがないし。

OOPとか役に立つのはゲームツールやライブラリ部分で、ゲーム本体側はそれほど手間かけなくてもいいんじゃないかという
気がしてきましたよ。

もうそろそろそんなこと言っていられなくなるんかなぁ。
869名前は開発中のものです。:05/01/05 20:50:22 ID:teSL7Vmp
>>867

多重定義は 単なるミスでした

また ポリモフィズム(多様性)は、あまり活用しきれてないんですが
class CTank の MovePosとかに使ってますけど

例えばどういう感じに作ると効果的になりますか?
870名前は開発中のものです。:05/01/05 20:55:09 ID:teSL7Vmp
>>867

俺も実は ゲームに活かすと本当によい ということは本当なのかな?と疑問を
持つようにもなってきて。
ゲームでない場面ならば、活かせる部分がたくさんでてくるんですけどね

オブジェクト指向で作られたゲームがあまりないと思うのは
そういうことなのかな?
871名前は開発中のものです。:05/01/05 21:01:10 ID:teSL7Vmp
>>867

移動処理だったら Move
表示だったら Draw
とスーパークラスに(インターフェイスだけでも)定義して
それをオーバーライドすることで、
すべて同じ処理上で使用できるようにするってのが
いわゆる多様性ですよね

当たり判定など、他のクラスとの関連がかかわってきて
そこをどう組み込むかという部分で うまく作れなくなって
CSpaceActionクラスに まんま処理書いてしまった

872名前は開発中のものです。:05/01/05 21:47:22 ID:DpXQjaaB
>>870
>オブジェクト指向で作られたゲームがあまりないと思うのは
その根拠が知りたい。
873名前は開発中のものです。:05/01/05 22:00:37 ID:4KjT+Fag
>>869

俺育成ゲーム(参加者求む)
ttp://pc5.2ch.net/test/read.cgi/gamedev/1097684655/

ここ一通り読んでみれ
874jxta ◆YLtNyRyYyQ :05/01/05 22:06:58 ID:pfCpSMEG
>>863
俺だったらIObjectに純仮想関数でDo()を追加して使う
IObjectの双方向リストでも作って、敵とか弾とか出るたびにnewして放り込む
他のクラスと関連があるなら、参照するクラスのポインタをコンストラクタに渡す。
Run部分ではリストのノード全てをDo()してRender()とする。

つーか、カードゲーム製作スレに関係ないこと書くな!

>>870
TCG系カードゲームではオブジェクト指向便利だぜ
他のゲームでもいくらでも有効利用できるだろ
875名前は開発中のものです。:05/01/05 22:07:39 ID:wV3vLlm4
散々既出だとは思うがABA Gamesのシューティングはソースついてるし
自作STGフレームワークみたいなのの上にOOで作られてる。
TUMIKI FightersかrRootageあたりをどうぞ。
http://www.asahi-net.or.jp/~cs8k-cyu/
876名前は開発中のものです。:05/01/05 22:19:56 ID:teSL7Vmp
>>872

オブジェクト指向で作られたゲームよりも
非オブジェクト指向で作られたゲームの方が
はるかに多く見つかったから
( 純粋オブジェクト指向言語を除く )
877名前は開発中のものです。:05/01/05 22:24:42 ID:ty7rjUGs
ゲームなんてつまるところ手続きだもんなあ
878名前は開発中のものです。:05/01/05 23:02:30 ID:teSL7Vmp
>>874
>>敵とか弾とか出るたびにnewして放り込む

IObject って仮想クラスだよね
放り込むっていうのは CTank(戦車クラス) CEnemy(敵クラス) に
放り込むっていうこと?

ということは、CTank と CEnemy に 双方向リストを用意して、そこに
追加していくっていう意味でいいのかな?

とすると、弾の表示はどこのクラスが行うの?

879名前は開発中のものです。:05/01/05 23:06:03 ID:ty7rjUGs
各クラスが自分を描画を持つようにするか
描画専門のクラスを作るかでいつも迷う。
みなさんはどうよ。
880名前は開発中のものです。:05/01/05 23:06:27 ID:UJwUvb3U
IObjectのリストにCTankやCEnemyを放り込むんだろ。
まあ実際は描画順なんかを考慮しないといけないから
リストをそれぞれ分けることになるだろうけど
881名前は開発中のものです。:05/01/05 23:14:25 ID:teSL7Vmp
>>880

IObject は 純粋仮想クラスでしょ
I は Interface じゃないのかな?

882名前は開発中のものです。:05/01/05 23:17:16 ID:q4wOJf7x
>>874
俺も割りと近いことをしてる。
ただ、描画についてはIDrawのようなインターフェイスを用意して、
IDrawを実装しているオブジェクトが各Doの中で自分自身を描画リストに登録する。
登録の際は、描画の優先度を指定するようにして、
優先度順にRenderメソッドを呼ぶようにしている。
883名前は開発中のものです。:05/01/05 23:21:21 ID:UJwUvb3U
>>881
いやまあ厳密に言えばIObject*のリストだけど、
そのぐらい分かるだろう…
884名前は開発中のものです。:05/01/05 23:21:37 ID:teSL7Vmp
>>882
描画リスト とは どこにあるもので、どこが実行するリストなの?

みなさん教えてくれるのはうれしいんですが、
もう少し詳しくいってくださいな
885名前は開発中のものです。:05/01/05 23:23:19 ID:teSL7Vmp
>>883

IObject* のリストって??
俺が言いたいのは 仮想クラスだから、そのクラスを実行した
他のクラスがないといけないわけじゃん?

>>IObjectのリストにCTankやCEnemyを放り込むんだろ。

そのクラスはなんぞや? ということです
886名前は開発中のものです。:05/01/05 23:23:45 ID:teSL7Vmp
>>885

実行した 訂正ー> 実装した
887227:05/01/05 23:25:08 ID:m8TF3hkc
>>863
おお!勇気ありますね。でもソース落とせない、、。

>>879
偽ガルーダやサイキではタスク系クラスが描画系クラスを参照するようにしてます。
なので、タスク系クラスには基本的に描画機能は付けませんでした。
というか、ゲームエンジンは同じものを流用してます。
888名前は開発中のものです。:05/01/05 23:26:50 ID:UJwUvb3U
>>885
…?話がかみ合わない…。
念のため聞いておくけど、

class CTank : public IObjects {};
class CEnemy : public IObjects {};

こうしていれば

IObject* objects[2];
objects[0] = new CTank;
objects[1] = new CEnemy;

これが出来るってことは知ってるよな?
889名前は開発中のものです。:05/01/05 23:27:17 ID:UJwUvb3U
訂正
IObjects→IObject
890名前は開発中のものです。:05/01/05 23:29:43 ID:q4wOJf7x
>>884
えーと、あくまで自分の実装の場合で答えますね。
外枠となるシステムクラスがあって、
IObjectインターフェイスのリストと
IDrawインターフェイスのリストを持っています。

1フレーム内の動作としては、
システムクラスはまずIObjectリストに登録されたオブジェクトのDo関数を順番に実行し、
それからIDrawリストに登録されたオブジェクトのRender関数を順番に実行します。
その後、IDrawリストに登録されたオブジェクトは全て破棄します。
(毎フレームDo関数内で登録されるため)
891名前は開発中のものです。:05/01/05 23:36:46 ID:teSL7Vmp
>>887

スペースが空いていたので、そこでリンクがとぎれてしまったみたいです
文字列をすべてコピーして ブラウザのアドレスにはっつければDLできるんですが
一応↓にUPしておきました。
よかったらアドバイスください

http://gkufme.s28.xrea.com/SpaceAction(AndSource).zip

俺も厳密にはDxAppライブラリの方で描画をおこなっていますが、
スーパークラスのCObjectのメソッドのDrawで
DxAppライブラリの描画関数を呼ぶ用にしてます。

インベーダーで、敵がすべてばらばらに動くならば至極簡単な
構造で済んだんだけど、どのインベーダー(エイリアン)が壁にぶつかっても、
すべてのインベーダーが一段下に落ちなければいけないところがあって。
インベーダーを覆う エネミークラス っていうのを作ってしまった。
ここら辺から仕様がむちゃくちゃになってきた気がする・・・
892227:05/01/05 23:42:28 ID:m8TF3hkc
>>890
自分も似たような感じ。
違いは、
>その後、IDrawリストに登録されたオブジェクトは全て破棄します。
>(毎フレームDo関数内で登録されるため)
この部分か。
2Dに関しては、描画オブジェクトの種類が少ないので、静的に確保、
タスクオブジェクトは、生成時に描画オブジェクトのプールから未使用のものを
取得するようにしてる。
で、破棄するときには使用中のチェックを外す。と。
なので、3DSTGみたいに、3Dモデルが多種、多数 生成、破棄されるものは
破綻するか、、。
893名前は開発中のものです。:05/01/05 23:52:00 ID:teSL7Vmp
>>888

あ〜勘違いしてました。すみません。
IObject を実装したクラスの中で CTank や CEnemy のリストを持つっていう意味で
とっていたので。
なるほどです。

>>884
なるほど〜 そうすることで、すべて一辺に
処理できますね

みなさんありがとうございました
ちょっとIObject を作ってみます
894227:05/01/06 00:02:35 ID:fBEVXtFA
>>891
見ました。
うーん。大した事言えないけど。

もう言われてるけど、配列は使わない方が良い。
バッファオーバーランを常に監視しなくちゃいかんし。

(個人的には)ソース、ヘッダ、クラス名を可能なら一致させといた方が良い。

後、言われてるけど、virtualメゾットとか、派生全然使ってないね。
クラスとカプセル化以外はC。みたいな。
デストラクタは設計等が変更起きたときの事も考えて、常にvirtualで良い。

こんな感じ。
895名前は開発中のものです。:05/01/06 00:08:43 ID:QcZWb8pt
>>894

なるほど。
配列なくしてと。。

ソース名は CTank などの Cとってファイル名とするという習慣が
どこかのプログラム(マイクロソフト?)であったので
それに従ってましたが。
確かに同じ名前の方がわかりやすいですね^^;

確かに、自分でもオブジェクト指向っぽく見せて入るんですが、
昔とかわらないなぁ と思っていて。
やっぱり多様性の部分が問題ですね

ありがとうございました〜
896名前は開発中のものです。:05/01/06 03:30:25 ID:Mhznl9Gz
>>888
すげーまぬけな質問なんだけど、そのポインタだと仮想クラスに全部のインターフェイス突っ込まないと
ダメなんじゃー? それでいいのかな。

あと配列はキャッシュの関係で使った方が速いという話もでてるけど、高速化と安全に配列を使う方法ってのは
このスレじゃとりあえず置いておくって感じかな? 2DSTGで高速化必要な場面も今後はなかなかでてこないだろうし。
897名前は開発中のものです。:05/01/06 12:31:19 ID:msEVcuh/
>>894
配列は、qsortやbsearchを使いたい場合には便利なんだけどな〜。
898名前は開発中のものです。:05/01/06 14:22:12 ID:FNFCuVMx
>>896
{};←これは実装省略してるだけで、実際には色々入ってると思われ

>>897
C++標準コンテナを使ってる限り、
STLやboostに代替アルゴリズムがあるから問題ないかと
899名前は開発中のものです。:05/01/06 16:29:10 ID:QlYw71Tx
>>894
メゾット?メソッド?
900名前は開発中のものです。:05/01/06 17:08:46 ID:43/9D9X3
>>891
>どのインベーダー(エイリアン)が壁にぶつかっても、
>すべてのインベーダーが一段下に落ちなければいけないところがあって。

そういうのはメッセージ処理するといいんじゃないかな。
901名前は開発中のものです。:05/01/06 17:13:10 ID:3SSgVaak
Observerパターンを使うとよろし
902名前は開発中のものです。:05/01/06 23:42:56 ID:shNrigwC
>>899
ワロタ
903名前は開発中のものです。:05/01/07 03:03:20 ID:SAD5608N
プログラムを改良しました。
一応多態性を重視したつもりですけど、どうなんでしょうか。
また評価お願いします。

敵はまだ作ってないけど。。

ソース付き
http://gkufme.s28.xrea.com/SpaceAction2.zip

DirectX9必須

操作は
← and → : 移動
space : ミサイル発射
904名前は開発中のものです。:05/01/07 03:12:47 ID:4rAwCZXu
>>903
IObjectのデストラクタをvirtualにしておかないと、
IObjectのポインタに対してdeleteをかけた時、派生クラスのデストラクタが呼び出されないよ。
905名前は開発中のものです。:05/01/07 03:29:54 ID:SAD5608N
>>904

ほんとうだ・・・ありがとうございました

CSpaceAction クラス(ゲームクラス) のメソッドの中で
CMissile インスタンスに CTank インスタンスを渡さなければいけなくて
そのために、CSpaceActionのメンバに ObjectList の他にも CTank *pTank として
もっていますが、これは変でしょうか?

また、弾と敵との当たり判定をおこなう場合、保持されているリストが
ObjectListだけなんですが、どうやったら敵と弾のデータを当たり判定計算で
一緒に使うことができるんでしょうか。
敵のIsHItメソッドに弾メソッドを入れる方法がわかりません。
ObjectList に入っている物はすべて同じCCharacterインスタンスとして識別されてしまうので・・。

↑訳け分からない文書ですが(汗
アドバイスお願いします
906名前は開発中のものです。:05/01/07 03:32:32 ID:SAD5608N
>>905
              ・・・・・・
敵のIsHItメソッドに弾 メソッド を入れる方法がわかりません。

訂正
              ・・・・・・・・・・・・・
敵のIsHItメソッドに弾 インターフェイス を入れる方法がわかりません。


CTank *pTank のように、CSpaceActionクラスのメンバにもってしまえば
できることなんですが、それだとObjectListの意味がますますわからなくなって
しまいますよね
907名前は開発中のものです。:05/01/07 03:47:52 ID:4rAwCZXu
>>906
うーん、ちょっとよく分からないんだけど、
リストが1つしかないのに、どうやってそこから弾と敵を取り出して
適切に当たり判定ができるのか ってことかな?

それと個人的には、リストの走査でループ回すときは
イテレータ使った方がいいと思う
908名前は開発中のものです。:05/01/07 05:00:32 ID:SAD5608N
>>907
>リストが1つしかないのに、どうやってそこから弾と敵を取り出して
>適切に当たり判定ができるのか ってことかな?

その通りです。
みなさんはどうやっているんだろう・・・

>イテレータ使った方がいいと思う

イテレータ使うことにします
ありがとうございました
909名前は開発中のものです。:05/01/07 14:53:42 ID:m0nNyFzG
>リストが1つしかないのに、どうやってそこから弾と敵を取り出して
弾を含めた全てのオブジェクトに認識番号をつける
普通はオブジェクトリストと弾リストに分ける物だと思うが
弾リストも更に自弾用と敵弾用の二つ用意すれば一層便利ではないだろうか
910名前は開発中のものです。:05/01/07 15:14:04 ID:SAD5608N
>>909

一応認識番号をつけていますが、毎回ある処理で
自機が見つかるまでループしたりする必要がでてきて
すごく無意味な処理に感じるんですがどうなんでしょうか。

また、リストを分ける方法もありますが、これだと最初からキャラクターリストに
入れる必要がなくなり、それぞれ自機リスト、敵リスト、弾リストのようになってしまい、
多態性が活かせなくなってしまうんじゃないかと思っています。

オブジェクト指向って難しいですね
911名前は開発中のものです。:05/01/07 16:31:25 ID:ejA3YDIH
>>910
自機は別に(ポインタなど参照可能な変数で)取っておく方が便利。
>それぞれ自機リスト、敵リスト、弾リストのようになってしまい
敵と一口言ったって何種類もあるんだから多態性は十分活きると思うが。
912名前は開発中のものです。:05/01/07 16:35:47 ID:HXFPNfEh
struct TASK{
void *prev; //前のタスクのアドレス
void *next; //次のタスクのアドレス
float x,y; //座標
char buff[512]; //自由に使える
};

○head  オブジェクトリストの先頭
●term  オブジェクトリストの最後(番兵)
□bullet1 自弾
■bullet2 敵弾

ゲーム開始時のリストは○□■●という具合に連結していて
自&敵キャラ、アイテム等は○□の間に挿入
自弾は□■の間に挿入、敵弾は■●の間に挿入という具合に
生成したオブジェクトのリストの挿入箇所を決めておけばいいかな
913名前は開発中のものです。:05/01/07 18:25:37 ID:vObRInCC
>>910
自機リスト、敵リスト、弾リストを1つにまとめるのが多態性のメリットなのか?
914名前は開発中のものです。:05/01/07 20:01:03 ID:puMuEX6f
自機、敵、弾はキャラクタを継承したものだから
キャラクタリスト一個作って全部ぶち込めばいい。
弾のリストがみたけりゃ、ソートすればいいだろ。
915名前は開発中のものです。:05/01/07 20:03:10 ID:SAD5608N
>>910
そうですよね
でも、やっぱり自機、敵、弾はすべて同じキャラクタークラスから
継承しているから、なんともいやはやです。うーむ。

>>912
結構いいアイディアですね。
↓のソースは すべてのリストはばらばらに処理していますが、
一括まとめて操作するリストも作ってみました。
ただ、処理を行う順番は
移動処理 当たり判定 描画の順とやっていかなくてはいけなくて
ちょっと面倒な部分があったので、分割しました。

>>913
もちろん、同じキャラクタークラスから継承しているので、
十分メリットになりえると思います。
ただ、当たり判定などまだ行っていない処理があって、その部分で
やっぱり一括すると難しいなと思いますね。

みなさんありがとうございました。
アドバイスを参考に、すべてリスト化して、それぞれDo処理、Draw処理をおこなうように
改良しました

ものすごくソースが汚くなったような気がするのは俺だけかなぁ・・・
ちょっと見てみてください

CSpaceAction.cpp の部分ですべての処理を行っています。

http://gkufme.s28.xrea.com/SpaceAction3.zip
916名前は開発中のものです。:05/01/07 20:24:54 ID:puMuEX6f
ああ、スマン。話題は進んでいたのねw
つまり、キャラクタリストに入ってる弾と自機の当たり判定がしたいわけか??

それならシングルトンで監視クラス(イベントリスナ)でも作れば?
ようするに早期警戒機だよ。「私(自機)の領域内(x1y1-x2y2)に弾が来たら通報ください」って
監視クラスにお願いするんだ。

監視クラスは弾の参照を独自にリスト化し、常に弾の座標を監視する。
917名前は開発中のものです。:05/01/07 20:36:43 ID:SAD5608N
>>916

ありがとうございます

当たり判定なんですが、今やっているのは 自機と弾ではなく
敵と弾の当たり判定です。
敵と弾は複数存在しますので、監視クラスにデータを渡す場合、
std::listのポインタを渡すのが一番いいかなと思いますが
もし、Hitしていた場合、どの敵とどの弾がヒットしていたか
ということが分からなければ意味ないですよね

イテレータを戻せば、Hit処理を抜けたあと、そのイテレータに対して
処理(削除したり、ダメージを与えたり)が行えるので
よさそうですね
ただ、複数のHitがあった場合、それを返すのがすごい
大変になりそうで、難しいですね

もし実装するにしても、やっぱりfor文の繰り返しになってしまって、
すごい処理時間がかかってしまうのが気になりますが、
これはしょうがないんですかね

また、気づいたところがあったら言ってください
918名前は開発中のものです。:05/01/07 20:53:43 ID:shOYCEMg
>>916
その方法が一番無難だけど、心配なのはその有効性が理解できるやつがこのスレにどれほどいるだろうか・・・。
ざっと読んでみたけど、回答者はアフォばっかりだ・・・
919名前は開発中のものです。:05/01/07 21:16:27 ID:shOYCEMg
>>917
>もし、Hitしていた場合、どの敵とどの弾がヒットしていたか
>ということが分からなければ意味ないですよね

依頼者は監視クラスへ自分の参照も渡せばいい。
また監視クラスはタスククラスと連動する必要がある。

例:
敵No.5がタスクとして生成されアクティブになり、インスタンスを実行する。そのインスタンス上で監視クラスへ
「すべての弾を監視し、どれか一つでもわが領域へきた場合、その弾名(弾の参照)をしらせよ」と通告する。
監視クラスは要望を受け取り、要望リストへ入れる(要望は他からも来るため) そして要望を解析後、
タスククラスに対し、
「おたくの敵No.5から、おたくのすべての弾を監視するように言われた。おたくの弾のリストをもらえないか?」
と要求を出す。

みたいに。
920名前は開発中のものです。:05/01/07 21:42:38 ID:Xpw8rPQL
脳みそがウニになりかかった・・・
有効性は理解出来るが・・・
使いこなせるだけの脳力が、まだ不足してるな・・・
921名前は開発中のものです。:05/01/07 21:44:23 ID:SAD5608N
>>919
ありがとうございます

つまり、監視クラスがもつ要望リストへ、値をいれ、
ある処理で、その要望リストをすべて実行するって感じでいいんでしょうか

とりあえず、以下のように簡単なプログラムに直してみました。

CMissile *pMissile = new CMissile(); // インスタンス生成

Watch.HitWatch( pMissile, this ); // 監視クラスへ当たり判定の要望をだす

Watach.Do(); // 監視クラスが要望を実行

こうすると、当たり判定処理は、すべて監視クラスの中で実行されますが
それでいいんでしょうか?
>>916の方が言っていた、早期警戒機で通報してくれるようなものではなく
当たり判定用のクラスになってしまう気もするんですが。

でも実際気になったんですが、OOPのインベーダーって存在するんでしょうか
どこを捜してもOOPのインベーダー(のソース)が見つからない・・・
あるとしたら、どうやっているんだろう

922名前は開発中のものです。:05/01/07 23:25:53 ID:yUgpJ709
普通にほしいものでイテレータかえせばよろし

タスクすべてのリストがほしい場合と
敵弾だけ、敵だけ、自機弾だけとそれぞれ返すメソッドを作ればいいだけだ
923名前は開発中のものです。:05/01/07 23:48:05 ID:YhtB8wH7
つーか、弾と敵と自機のリストにわけちゃダメな理由が思いつかない。

理由ってのは分けないメリットということね。

924名前は開発中のものです。:05/01/07 23:56:52 ID:NL4hFZCg
だよなあ。
925名前は開発中のものです。:05/01/08 00:07:16 ID:hjzep1WS
>>921
>>916の方が言っていた、早期警戒機で通報してくれるようなものではなく
>当たり判定用のクラスになってしまう気もするんですが。

んなこたーない。マウスリスナみたいなものさ。君がもう少しイベントドリブンを理解してくれれば・・・。
俺の言ったとこはJavaやC#、MFCのイベント構造を応用しただけ。


926名前は開発中のものです。:05/01/08 00:16:24 ID:gGkdeKAN
>>923
わけちゃだめな理由ではなく、一緒のリストにすることがメリットになると
俺は考えてます。理由は多態性ですね
ただ、それによってデメリットというのもでてきます
同じリストに載っていることから、個々の関係処理がしにくくなってしまう
ことですね
今までやってきて、インベーダーでは個別にリスト化したほうが
より効率的に組んでいけるということを俺は感じました

といってもいろんな問題だらけでちょっと混乱中ですが;;

とりあえず、ネットで検索しつつ本当に納得できるような仕様を
模索中です




927名前は開発中のものです。:05/01/08 00:20:11 ID:/ABVr+0v
>リストが1つしかないのに、どうやってそこから弾と敵を取り出して
>適切に当たり判定ができるのか 

── base*型のポインタがあるとき、ポインタが指しているオブジェクトが本当に
属している派生型はどれかという問いに答えなければならない。この問いに対する
基本的な答えは4つある。

1. ポインタが単一の型オブジェクトだけを指すようにする
2. 関数が参照できるように基底クラスに「型フィールド」を配置する
3. dynamic_castを使う
4. 仮想関数を使う

基底クラスへのポインタは、集合、ベクタ、リストなどのコンテナクラスの設計で
使われる。このような場合、私がとるのは、同種リスト、すなわち同じ型のオブジェクト
のリストである。2、3、4、の方法は、異種リスト、すなわちいくつかの異なる型の
オブジェクト(へのポインタ)のリストを作る時に使われる。3は、言語サポートが
ある2の変種である。4は型の安全性が保証される2の変種といえる。1と4の組み合せは、
特に面白く、強力である。ほぼどのような状況でも、1と4の組み合せは、2や3よりも
クリーンなコードを作れる。──
                  ── Bjarne Stroustrup著 プログラミング言語 C++ 第3版
928名前は開発中のものです。:05/01/08 00:22:36 ID:gGkdeKAN
>>925

簡単なコードで示していただけたらわかりやすかったんですけどね
いまいちたとえ話がよくわからなかったみたいです

マウスリスナみたいなやつですか、なるほど
ちょっと考えてみます

ありがとうございます
929名前は開発中のものです。:05/01/08 00:35:49 ID:hrqfE2sK
多態性って同じように扱いたいときに利用するものでしょ。
扱いの違う「弾」やら「自機」やらをまとめても・・・。
930名前は開発中のものです。:05/01/08 01:05:30 ID:QNYWnF7k
多対多の種類別の比較が必要ならリストよりツリーのほうが効率よくない?
数百機ぐらいなら数回の探索で済むし
931名前は開発中のものです。:05/01/08 01:11:37 ID:QlDKHlzO
多態性など"ありがたOO機能"を無思考に使って悦に浸ってる脳死バカが多いスレですね
932名前は開発中のものです。:05/01/08 01:11:50 ID:k6jzP4jn
同じ基底クラスは一つのリストで管理しなければならない、などという制限は元々ない。
基底クラスは一緒にする、リストは複数とる、これで万事解決
933名前は開発中のものです。:05/01/08 01:21:54 ID:hrqfE2sK
わざわざ探索する手間をかけてまで同じコンテナに入れたい理由が・・・。
934919:05/01/08 01:22:35 ID:hjzep1WS
>>928
簡単な例か・・・JavaかC#なら書いてやってもいいがC++は嫌だ。

ていうかさ、Windowsってキーボードやマウスの状態を監視してて、たとえば
マウスが動いた場合WM_MOUSEMOVEが発生するでしょ?
その後コールバック関数WndProc()が呼ばれるでしょ?そして対応する処理を書くわけだけど、
これは理解してるよね?

つまり監視クラスに依頼者である敵のコールバック関数を登録して、弾がどれか当たれば
それを呼んでもらえばいいわけだ。
そのとき、当たった弾の参照を受け取ればいい。なんら難しくはないはず・・・。
935名前は開発中のものです。:05/01/08 01:46:51 ID:iyOU+bwt
>>926
>理由は多態性ですね
理由になっていない。手段が目的になっていないか?
936名前は開発中のものです。:05/01/08 01:53:45 ID:lgshSzuj
>>935
手段と目的を見失ってる典型例ってことだネ
傍観してる側としては面白くて仕方ないんだけどネ
937名前は開発中のものです。:05/01/08 01:58:05 ID:uJGDh50M
机の上を整頓して片付けない人がいる。
わたしは綺麗に整頓した方が効率が良いと思った。
必要な物は目的に沿ってすぐ取り出せるように引き出しへ収納するのだ。
だがその混沌とした机は云う。
我が主にとっては最も使いやすい状態なのだと。
938名前は開発中のものです。:05/01/08 02:01:22 ID:hrqfE2sK
>>937

どっちが使いやすいかは人それぞれだとでも言ってるのか?
939名前は開発中のものです。:05/01/08 02:32:14 ID:lSUAtuo5
どう考えても目的別に格納した方が良く。
まとめて参照したい場合もあるのならば、参照用のまとめたリストなり配列「も」持てばいいと思うが。


分けてるリストとまとめてるリスト両方持てばよし。 分けてる方がゲームは高速に動作すると思うがね。
「敵」と「自機」をいっしょに扱う理由はほとんどないだろうし。
940名前は開発中のものです。:05/01/08 02:35:01 ID:bf3HfWCS
>>938
脳細胞の発達の仕方は人それぞれだから、
仕方の無い話かもしれんぞ。有り余る記憶力を持ってる奴と、
応用力に長けてる奴と、数学的素養の優れている奴と、
直感の鋭い奴とでは、理解しやすいプログラムの組み方が
違うような気もするし。
941名前は開発中のものです。:05/01/08 02:41:38 ID:aFq71GdG
とりあえずC#やjavaなんかでinstanceofとか使いまくってる人は
変なこと教えないように気をつけてほしいものだけど
942名前は開発中のものです。:05/01/08 10:57:47 ID:WWe5jPOv
>>923
描画順にソートして格納しておけば、
std::for_each()一行で全部描画できちゃう

てのじゃだめ?
まあレイヤー数に上限があるってのが嫌いなだけなんだけど
943名前は開発中のものです。:05/01/08 14:01:28 ID:IO0rnvab
・自機と敵弾
・敵と自機弾
という当たり判定を行っているとする。
ここで、自機弾を当てたら壊せる敵弾を作りたくなりました。
どうしますか?

こんな仕様変更のたびに新しいリストを追加ですか?
944名前は開発中のものです。:05/01/08 14:06:37 ID:6F8Wag/3
最近他人のやり方にけちをつけまくる心の狭い子が多いな。
好きなようにやれよ。
945名前は開発中のものです。:05/01/08 14:07:04 ID:iyOU+bwt
>>943
「壊せる敵弾」を「敵」扱いとする。
946名前は開発中のものです。:05/01/08 14:37:49 ID:TzfGI0id
>>945
んー、じゃあ
・敵も自機もまとめてぶっ殺す極太レーザー
・これで死んだ敵は得点にならない
としたい場合は?
947名前は開発中のものです。:05/01/08 14:42:47 ID:iyOU+bwt
>>946
問答でもしたいの?
そういうときこそ
>新しいリストを追加
したらよかんべさ。
あと、得点システムは関係ない。
948名前は開発中のものです。:05/01/08 15:00:31 ID:UcHRni1n
>>946
そういうのこそ、さっきのメッセージドリブン使えばいいやん。
メッセージのパラメータで相手(のタイプ)をもらうようにして
極太レーザーだったら得点追加メッセージを投げないようにする。

リストを複数に分けるのとは関係のない話だと思うが。

949名前は開発中のものです。:05/01/08 15:10:06 ID:IO0rnvab
>>945
それだと自機と壊せる敵弾の当たり判定ができない

>>948
論点がずれてる
それにその方法だと敵も自機も極太レーザーのことを知ってないと
ダメじゃないか
950名前は開発中のものです。:05/01/08 15:17:10 ID:CsmrzUE4
>>949
ていうか、普通自機と敵は判定するものでないの?
>>943ではただ省略していただけだと思ったんだけど。
951名前は開発中のものです。:05/01/08 15:28:42 ID:mPtzx5YR
>>950
負けたくないからといってありえない条件を出すようなお子ちゃまは放置がよろしいかと
952名前は開発中のものです。:05/01/08 15:32:10 ID:UcHRni1n
>>949
>それにその方法だと敵も自機も極太レーザーのことを知ってないと
>ダメじゃないか
当たり判定クラスが知っていればいいだけじゃないのか?
敵や自機が知ってなきゃいけないのは
HITしたが得点は入らない というメッセージの種類。
953名前は開発中のものです。:05/01/08 15:54:31 ID:IO0rnvab
自機と敵の判定がないSTGなんてそんなに珍しくないだろ

>>952
> 極太レーザーだったら得点追加メッセージを投げないようにする。
の主語を勝手に敵クラスとしてしまった。すまん。
954名前は開発中のものです。:05/01/08 15:59:20 ID:dfDMWTxp
>>953
必死になるな。そんなに珍しくないって事は、普通のSTGは当たり判定があるわけだからさ。
つか、俺はあたり判定があるほうが普通だと思うぞ。まずは落ち着け。
955名前は開発中のものです。:05/01/08 16:00:15 ID:P0nW7hUU
まあ、5年間シューティング作ってきた俺の結論は「どうでもいい」だな。
3年前ならちょっと熱くなって持論を展開したかも知れんが
シューティングごとき、どういう設計で作っても何とでもなるのに気づいてどうでもよくなった。

ところで、エクステンドまだ〜?
956名前は開発中のものです。:05/01/08 16:07:22 ID:IO0rnvab
俺がそういうSTGばっかりやってて実際のところ良く分からんから
そんなに珍しくないと書いたんだが、都合の良い解釈ばかりする奴がいるようだ。
957名前は開発中のものです。:05/01/08 16:10:46 ID:dfDMWTxp
>>956
実際のところ良く分からんなら書くなと小一j(ry

まぁお互い落ち着こう、な?
958名前は開発中のものです。:05/01/08 16:36:08 ID:JG8y5vsc
■まとめ

▼リストわけないよ派の主張
多態が生かせる
仕様変更に強い

▼リストわけるよ派の主張
判定回数が少ない

■漏れの疑問
・リストわけたらなぜ多態が生かせないことになるの?
・リストわけない場合は当たり判定がオブジェクト数の2乗に比例しますが解決策は?
・リストわけると、事あるごとにリストを宣言してループ書いてって面倒じゃね?
・継承したオブジェクトをリストで管理して多態させるって最近のオブジェクト指向の考え方に反するよね。 移譲じゃダメなの?

おまいらの愛するやね本2にも少し記述あるよ・・・・

■今やるべきこと
次スレを立てる
959名前は開発中のものです。:05/01/08 16:45:46 ID:6F8Wag/3
他人がどう作ろうと良いじゃねーか。
960227:05/01/08 17:23:27 ID:ICmtvtLq
基本的にはわけない派かなあ?
俺も理由は、仕様変更に強い。というところ。
ぶっちゃけ、STG以外でも使う予定だったし。
共通処理を複数に分けると、歯抜けバグが出来そうで怖いし。

ゲーム仕様上分けた方が良い場合は、1つ上の具現化された層で、
リストわけて管理する判定クラスとか用意する。じゃ駄目?
1回総ナメすればわけてないクラスから欲しいもの抽出出来るわけだし。
961名前は開発中のものです。:05/01/08 18:17:32 ID:k6jzP4jn
リスト1本にするのは、ソースの見た目上の整合性とか、そんなのが主な理由でしょ。
多態を生かせるだとか、仕様変更に強いだとか、ソースを書く側の都合。
パフォーマンス視点から言ったらリストN本にしたほうが良いのは当たり前の話。
だけどループをまわすのがめんどくさいとかも、ソースを書く側の都合。

ならば、内部はリストN本なのに、多態を生かせて、仕様変更に強く、ループをまわすのが楽なリストを作る、
ってのが考え方としては筋ではないかと俺は思うんだがな。
class LayeredList {}; でも作ればリスト1本にしたがる人はご希望のリスト1本が完成しますが。
962名前は開発中のものです。:05/01/08 18:21:34 ID:iyOU+bwt
963名前は開発中のものです。:05/01/08 18:23:44 ID:N06HHtKa
>>962
964919:05/01/08 19:05:18 ID:hjzep1WS
>>955
んなこたーない、と釣られてみる
て言うかお前、作ったことないだろw

>>958
オレの場合はリストに分ける&分けな派両方だな。
というよりも、リストの追加、削除、内容変更等を監視するリスト監視クラスとそのインターフェースリスナ、
そしてリストの内容を種類別に分け、それを保持するクラス、この3つをインプリメントしとけばOK。

つまりすべてのタスクを収納したリストと、タスクを種類別に分けたリスト、両方持たせる。
種類別に分けたリストのほうは、本体の追加、削除のイベントに連動する。あくまで参照レベルだがな。

965名前は開発中のものです。:05/01/08 19:06:30 ID:hjzep1WS
スマンあげてしまった・・・
966名前は開発中のものです。:05/01/08 19:08:03 ID:lgshSzuj
「他人がどう作ろうと良いじゃねーか。」
みたいなつまんねぇし醒めるだけの発言は止めろボケ

まだまだ熱鉄板の上でダンス踊ってくれないと楽しめないだろうが
967964:05/01/08 19:13:52 ID:hjzep1WS
と思ったら>>960が先に語ってたな
968名前は開発中のものです。:05/01/08 19:52:02 ID:FJBKk48Z
>>964
だから、全体をまとめたリスト、目的別に分けたリストに「分ける」わけなんだよ。

オレの作ったやつもありとあらゆるものが1つのツリーになってるが、目的に応じていろいろ分けてる。
敵弾を管理するタスクの中に敵弾のリストが入ってるしな。

当たり判定なんだが、当たり判定管理のリストを種類ごとに1つ作って、リスト対リストで比較して
処理ルーチンをコールバックにしてる。 種類が増えたらリスト増やすし、敵と敵を比較したくなったら
同じリスト同士を比較処理に投げて、当たった場合の処理を新規に書き起こしてコールバックに登録。
(当たり判定は自分同士を当たらないようにだけ細工してある。)

8ビットや16ビットCPUの時代から処理作ってたら1つで全部管理するリストだけなんてやって使えネーで
終了する話だったがなぁ。

「多様性」がまったく理解できないや。
969名前は開発中のものです。:05/01/08 20:09:40 ID:r3QzsOeN
        ☆ チン  〃 ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) < 多態性のメリットマダ〜?
             \_/⊂ ⊂_ )   \_____________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        | .温州みかん.  |/
970名前は開発中のものです。:05/01/08 20:25:21 ID:aFq71GdG
リスナリスナいってないでdelegate使えば?
javaの他にC#も使えるんでしょ?(プ
971名前は開発中のものです。:05/01/08 20:45:43 ID:aFq71GdG
多態性のメリット
なんでもかんでもごっちゃに一つのコンテナにつっこめるやーカコ(・∀・)イイ!
中に入ってる各型ごとにswitch文で分けてダウンキャストして処理を書き分ければ
いつもどおりの俺のプログラムになった!わかりやすい!(・∀・)
972名前は開発中のものです。:05/01/08 21:06:24 ID:YRv+CHdD
汎用性があるように作ると、生産性はあがるけど、
たった1つの例外の存在により、クラスの構成に変更が入るという
矛盾した条件が発生するんだよなー。

徹底的な仮想化はあんまりお勧めできない。
973名前は開発中のものです。:05/01/08 21:21:44 ID:9Xzl9kF6
それを防ぐためのデザインパターンだろうに
974名前は開発中のものです。:05/01/08 21:28:30 ID:hjzep1WS
>>969
自動車免許のやつと原付免許のやつが戦車に乗り込みバトルしたら・・・
975名前は開発中のものです。:05/01/08 21:28:58 ID:ar3CYnQZ
プログラムはてきとうにつくればいいよ
リソースが全てだ
976名前は開発中のものです。:05/01/08 21:29:36 ID:r3QzsOeN
ダウンキャスト(・A・)イクナイ!
977名前は開発中のものです。:05/01/08 22:22:16 ID:S8I229Af
>>975
うまいリソースづくりの技法か…割と切に欲しいな
プログラムにかける労力を最小限にしそのぶんリソースに注力するというのは大前提として、
そこから先
いいレベルエディタをこれまた最小限の労力で作れってのも前提か
978名前は開発中のものです。:05/01/09 01:47:28 ID:S2u0AHY5
>966
つまり959が焼き土下座のAAを張れば万事解決ってことだな。
979959:05/01/09 02:06:09 ID:7iEvUstc
   ジュー

  ○| ̄|_
~~~~~~~~~~~~~~~~
980964:05/01/09 02:20:28 ID:tsluRhoF
オレはC++は全然詳しくないんだが君のOOPインベーダのリスト見させてもらった。
既に外出だが、ミサイルとタンクのクラス構成がダメダメだなw
キャラクタークラスという抽象クラスを作り、自機、自機弾、敵、敵弾、爆風、防壁、すべてそれから派生させるべき。
おれなら、スコア(イメージフォントの場合)もタイトルロゴも背景もそうするけどな。

あと、キー入力はキー監視クラス作れ。そしてキー入力に反応する自機とシステムキャラクタの二つだけが
キー情報の通報を受けるように要求する。このとき、キー監視クラスから送られて来たキー情報は第三者へ
渡さないようにする。キー情報がほしいクラスは、個々にキー監視クラスに要求すること。
これはキー監視クラスに限ったことではない。
システムキャラクタって言うのはシステム側に属するキャラクタであり、ゲームの開始・終了を管理するもの。
タスク内に常に存在し、彼がESCキーを受け取ればゲームは終了する。

監視監視ってうるさいかもしれんが、イベントドリブンはOOPにおいてベストオブベストなんだよ。
VSYNC監視やタイマ監視ぐらい使ったことあるだろ?
981964:05/01/09 02:22:12 ID:tsluRhoF
スマン、こっちは無視してくれ
982名前は開発中のものです。:05/01/09 02:26:11 ID:D1XLEQdQ
解説君乙
983名前は開発中のものです。:05/01/09 02:52:33 ID:O8/qKQgV
ドリブンのイベントは、上から金ダライが落ちてきたり、カラスが鳴いたり
ミイラに観客が「うしろうしろー!」と叫んだりします。
984名前は開発中のものです。:05/01/09 02:57:12 ID:JhwV0SDY
2点
985名前は開発中のものです。:05/01/09 03:03:40 ID:vxPl5S11
当たり判定でもめた形跡があるが
ザナックってどうやってたんだろう。
986名前は開発中のものです。:05/01/09 03:17:45 ID:N4fGN9F1
もめた内容がシューティングゲーム製作以前の話というのが・・・。
いやまあ、一応重要な部分ではあるんだけどね。
987名前は開発中のものです。:05/01/09 03:25:12 ID:Xm1HCRTl
ここでいってる「シューティング」は、落ちモノ系と並んで、初心者向けだからな
基本のお勉強スレになってるな
988名前は開発中のものです。:05/01/09 03:26:29 ID:JhwV0SDY
誰でも一回はぶち当たる壁なんだから、いいんじゃない?
989名前は開発中のものです。:05/01/09 13:40:07 ID:j+WNN7G5
近頃の初心者はシューティングからではなく・・・・MMORPGから作りたがる・・・・間違いない
990名前は開発中のものです。:05/01/09 13:50:32 ID:ishiSPfH
とすると、初心者はいきなり挫折を味わうことになるのか・・・。
991名前は開発中のものです。:05/01/09 13:51:19 ID:L+xAYUET
敵の配置とかアルゴリズムをちゃんと作ることを考えると
シューティング制作がとても初心者向けとは思えんけどね。

弾を撃ちながら降りてくる敵を自機が撃つ、という程度までを
完成目標とするなら、ジャンプアクションとかで同クオリティの
ものでも制作難度は変わらん気がする。
992名前は開発中のものです。:05/01/09 13:59:59 ID:NMQlD5HP
とりあえず形になるのが早いっていう点が、STG作成のいいところだと思う。
画像の表示、動きの基礎、他オブジェクトの生成といった基本を身につけるのも容易なんじゃないかな。
ジャンプアクションは床や壁との衝突判定が一番面倒なところじゃなかろうか。

まあ一番楽なのは、最初はRPGツクール等を使って何か作ってみることだとは思うけど。
俺もプログラミング始めるまではデザエモンやClick&Playやってたし。(懐かすぃ)
993名前は開発中のものです。:05/01/09 14:33:34 ID:RfBZ0DpC
シューティングは概念が簡単だから、プログラミング初心者には
とっつきがいいでしょう
994988:05/01/09 14:50:52 ID:Xm1HCRTl
>>991
もう散々言われてしまって言うことがないが、とりあえず書いておくと、
ジャンプアクションは初心者には無理すぎ。
シューティングは適当に動いて適当に当たり判定ついてれば、なぜか遊べてしまうが
そうはいかないからな。
995名前は開発中のものです。:05/01/09 14:52:51 ID:aLY2NpdP
俺はコンソールから入ったから、
シューティングの前に壁マリオなるものを作ったけどなぁ
996988× 987○:05/01/09 14:54:56 ID:Xm1HCRTl
すまん>>988

まあとにかく、自分の地形とのあたり判定、敵にも重力が適用され、ワールド座標で動く管理
こんなのが絡み合うからジャンプアクションは数段レベルが上よん
997名前は開発中のものです。:05/01/09 15:08:20 ID:L+xAYUET
あーそうか。
まあスクロールする必要はないんだが、最低必要な要素のレベルは高いかもなあ。
998名前は開発中のものです。:05/01/09 15:29:16 ID:CJKoZOCR
段階学習スレでもマリオは人気ない・・・・

GamDevPukiWiki - 段階的学習!
http://gamdev.org/w/?%5B%5B%C3%CA%B3%AC%C5%AA%B3%D8%BD%AC%A1%AA%5D%5D
999名前は開発中のものです。:05/01/09 16:21:21 ID:RitiJiRi
シューティングゲーム製作技術総合 6機目
http://pc5.2ch.net/test/read.cgi/gamedev/1105176011/l50
1000名前は開発中のものです。:05/01/09 16:23:23 ID:RitiJiRi
とりあえず1000get
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。