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

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

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

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

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

■前スレ
シューティングゲーム製作技術総合 3機目
http://pc5.2ch.net/test/read.cgi/gamedev/1087339516/l50
0356名前は開発中のものです。04/09/01 20:53ID:jO/Ck9N1
無限ループだな
0357名前は開発中のものです。04/09/01 20:54ID:Sw2TaBQc
固定少数で小数部の初期化を忘れて整数部の初期化だけしてたおかげで
ずれたことはあるなぁ。
0358名前は開発中のものです。04/09/01 21:38ID:1NYwUGUd
リプレイはキャラが変な動きしたときの再現に役に立った。
だから漏れにとってリプレイはデバッグルーチンのひとつでつ。
0359名前は開発中のものです。04/09/01 21:44ID:qfSY39uO
>>355
ソースが無いから余計混乱させることになるかもしれないけど
BBXに昔、商用3D格闘ゲームをWinで作ってる(自称)の人がきてた。
で、リプレイでずれることがあるとかいう話を展開してたのは覚えてるけど
もうずいぶん前だなぁ・・・。BBX過去ログにはのこって無いのか?
0360名前は開発中のものです。04/09/01 22:17ID:M+Pa7IBI
>>359
ありがとうございます。

と、その後もう一度ググってみたところ、該当すると思われる情報をひとつ発見しました。
ttp://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=36&vew=256
# 「似たような検索結果を表示」にしないと出てこなかったので前は気付かなかった…。

多分>>243で言われてたのはこれかな?と。
同時に、同じスレッド内で初代Pentiumの演算バグについても述べられていたので、
もし当たりなら、昨日言われてたことについてはほぼはっきりした気がします。

で、これを見た上での自分の結論としては、
この問題への対処としては「浮動小数を使わない」ではなくて、
「ゲーム中に裏でヘンなソフト動かさないで」で終わりにしようかと。

こんなことのためにプログラムに変な足枷を付けるのは、
個人的にはトレードオフとしてやってらんないレベルだという感想だからです。
0361名前は開発中のものです。04/09/01 22:49ID:GGRf75RV
>>358
俺もその経験あった。
リプレイ中に任意早送りつけたら便利なこと便利なこと。
0362名前は開発中のものです。04/09/03 00:03ID:3Ys/rW5p
>>361
リプレイの任意早送りか。いいなそれ。
0363名前は開発中のものです。04/09/03 01:29ID:4NHgfN9B
リプレイ?

AVIで出力汁。コレ完璧

次の話題どうぞ
0364名前は開発中のものです。04/09/03 08:14ID:0+0ESNrY
さすがに巻き戻しは考えたことねえな
0365名前は開発中のものです。04/09/03 13:31ID:CJRrnDNj
>>361
あー、それ俺もやってた
というか、完成した奴にも普通にその機能実装してたけど

>>364
便利そうだが、大変だな
0366名前は開発中のものです。04/09/03 15:05ID:8TnCVra1
ステートセーブ付けるとデバッグに便利かも。
0367名前は開発中のものです。04/09/03 16:42ID:FFA162Zl
いろいろ面白いことができそうなんだよなー、ステートセーブ。
巻き戻しはステートセーブの応用でもいけそう。

ただ、1面1リプレイというスタイルでいまどきのCPUなら描画適宜スキップすれば
面の最後まで数秒で早送りできるだろうから、大抵のことは早送りで済む。
その数秒が惜しいような機能には、ステートが有効かもな。
0368名前は開発中のものです。04/09/03 18:07ID:aRdpetGc
どうせならコマ送りも欲しいな。
当たり判定のアラがバレるケド(藁

0369名前は開発中のものです。04/09/03 18:56ID:RZU0tjIn
ステートセーブで巻戻し実装するとなると
フレーム毎にステートセーブすることになるのか?
オブジェクト多いと少しえらいことになりそうだな
0370名前は開発中のものです。04/09/03 19:14ID:FFA162Zl
60フレームごとなら軽くなるかな
別スレッドでステートセーブ…は途中までセーブしたところで変化してしまうから意味ないか
0371名前は開発中のものです。04/09/03 19:30ID:N/Y/TBRx
ステートセーブなんて言葉、初めて聞いたが、
みんな平然と使ってて何かと思ったら、エミュで使われている言葉か。
0372名前は開発中のものです。04/09/03 19:42ID:yW3vxo+/
そうやってエミュ叩きの流れを作ろうとしているわけですか?
0373名前は開発中のものです。04/09/03 20:18ID:qBdd4zvr
まぁ、CPUレベルでのデバッグとかハードウェアとかにある程度詳しくないと見ない用語だし、
知らないのは恥ずかしいことじゃないよ、たぶん。
0374名前は開発中のものです。04/09/03 22:24ID:0a6rc2ez
システムによっては相当な量になるだろうね、音声とか画像のように
垂れ流される情報とかあるし。

でも再生点を自在に設定できれば、復習したい場所から何度でもやり直しプレイ
ができるので面やボスが長いゲームにはいいかも
0375名前は開発中のものです。04/09/04 01:00ID:rRpb9SWv
ステートセーブって、どうやるんでしょうか?
タスク内のデータを全部保存しておく、って感じでしょうか?
0376名前は開発中のものです。04/09/04 01:42ID:U/SJyI4g
状況を再現するのに必要な情報を保存。
0377名前は開発中のものです。04/09/04 01:55ID:lAQEFRvV
まぁ、とりあえず保存して、再現してみればいい。そうすれば何が足りないのかわかる。
0378名前は開発中のものです。04/09/04 02:18ID:0OBDapMN
ゲーム中で、出力命令があったら出力処理している部分を、
いったん組み直す必要があるわな。

ゲーム中の出力命令を中間データに変えるようにし、
今のフレームのすべての出力命令がそろったら、
中間データを用いて出力処理を行う形に組み直す。

この形にすれば、逐次、中間データを保存することで、
ステートセーブが完成する。
0379名前は開発中のものです。04/09/04 02:43ID:jxxoIAmp
え?敵の位置などの状態、変数を保存するのがステートセーブなんじゃないの?
0380名前は開発中のものです。04/09/04 03:04ID:EVmeUH35
VMで組んで
VM上のメモリをそのままHDDにセーブすんだよ
0381名前は開発中のものです。04/09/04 03:53ID:s6MvXOlY
>>378
それ、出力部分しか保存してないから
ステートセーブにはならないんじゃないか?
0382偽ガルーダ04/09/04 04:38ID:swd1pHqk
TypeXはPCベースらしいですね。
ここのやり取りが色々参考になるかも。(ならんか?)
0383名前は開発中のものです。04/09/04 09:04ID:28WXfw+v
なにほざいてんだバーカ
0384名前は開発中のものです。04/09/04 10:45ID:1uEQtt+S
ステートセーブなんて真のステートセーブはエミュならではのものなんだよ!
考えてみると構造体の中にポインタがあったらそれだけでmallocされたメモリとかアドレスとか
あれこれ違ってくる。RPGのセーブはステータスと場所とフラグぐらいだが
0385名前は開発中のものです。04/09/04 11:29ID:w/FPKiOs
>>384
|ω・)つ[シリアライズ]
0386名前は開発中のものです。04/09/04 13:41ID:67OTd1X/
>>384
|ω・)つ[シリアライズ]
0387名前は開発中のものです。04/09/04 14:06ID:lsT93R/j
シリアライズの実装は難しい
0388名前は開発中のものです。04/09/04 16:03ID:1yYp47iK
ステートセーブは大変だよな…普通はステージごとのセーブとリプレイ早送りで十分だ。
ステージ開始にセーブ/ロードするだけなら、普通は敵や弾の座標は一切記録する必要が無い。
自機のステータスとランクなどだけですむ。
0389名前は開発中のものです。04/09/04 16:18ID:ahSAn11t
そういや、ボス前に雑魚を出さない仕様にするとかあるな。
0390名前は開発中のものです。04/09/04 16:25ID:EOXs62Ac
ボスの必殺技を何度も何度もチャレンジしてみたいというのはあるが...

しかし実装し(てもらい)たいのは自分のゲームじゃないんだな。
0391名前は開発中のものです。04/09/04 20:48ID:Pf2Z+TKE
最近の言語ならシリアライズは標準実装で余裕だろ
0392名前は開発中のものです。04/09/04 22:19ID:YX3XC6uY
よし、あれだ。

巻き戻したい場合は1フレーム目から計算しなおせば良うわなにおする
0393名前は開発中のものです。04/09/04 23:31ID:+kpUEDCp
音楽プレイヤーでシークを「冒頭から指定時間までの早送り」として実装するようなもんだな
多少時間はかかっても実用に堪えればそれでよい
0394名前は開発中のものです。04/09/05 04:49ID:jBYbFXZt
CPUとGPUを上手く並列に処理できるよう書いてる人って居ますか?
要するに現フレームのバックバッファへの描画を終えて垂直同期の待機中、
CPUは次フレームの計算を初めても問題がない、って部分っす。
実際2Dシューってそこまでする必要はないと思うけれども…
そうなるとマルチスレッドにしてイベントで同期を取るって感じになるのかな。
0395名前は開発中のものです。04/09/05 06:35ID:0ekjaJx5
>実際2Dシューってそこまでする必要はないと思うけれども…
計算だけになるから凄く速くなる。先の分を処理しても
一回先の計算を終えて待っていることになりあまり効果が無いかと…
むしろ表示が原因で処理落ちが発生しているときに、タスクの
座標計算だけ処理して表示を何回か飛ばしてしまう処理の方が
ほしいのではないでしょうか。
0396名前は開発中のものです。04/09/05 06:55ID:9hrBJRap
ttp://up.isp.2ch.net/up/220b9d78ae46.lzh

観音蜂を改変してみますた。
エクステンドいじってみただけですが、バランスぶっ壊れ。
039739604/09/05 06:58ID:9hrBJRap
ただし、うちは観音蜂の作者じゃないので、間違っても観音蜂の作者に改変についての動作不都合報告とかしないように。

とりあえず動作確認はしてありますが、ウイルスチェックはしたほうが安全かもしれませんし、
また、ノークレームでお願いします。
0398名前は開発中のものです。04/09/05 10:00ID:3KHpp+4T
そんなものをここに貼るのはまちがっている。
技術的にも見るものがない
0399名前は開発中のものです。04/09/05 10:21ID:GEDEt6J2
>>394
まぁすでに3Dの描画でもネックじゃないしねぇ
レスポンスがおくれるほうがまずい
0400名前は開発中のものです。04/09/05 11:28ID:haCuFxjW
>>398
見るべき所があるかどうかは、見る人が決めること。
藻前が決めることでも無いだろ。というか、
見るべき技術のあるヤシが、こんな所に張るわけがないだろ。
0401名前は開発中のものです。04/09/05 11:58ID:zFD8NlgN
技術的に見るものがないかどうかはともかく
勝手に改変したものを貼るのはどうかと思うが?
0402名前は開発中のものです。04/09/05 12:15ID:HL1TpU4J
改変の具体的な内容とその手段が明らかにされればそれでいいや
俺は触ったことがないが、チートツール使えば一発ですむようなネタかな
0403名前は開発中のものです。04/09/05 12:26ID:fYUJo/EI
まあとりあえずアフォがいることだけは連絡済み。
0404名前は開発中のものです。04/09/05 20:11ID:EjjMcQBr
>>403=アフォ
040539604/09/05 22:21ID:9hrBJRap
>>402
正式に配布されているパッチ03とdiffしてください。
2箇所を数バイト書き換えた程度です。

2回目以降のエクステンドを劇ヌルにしますた。

とりあえず弾幕の研究などに役立ててみてください・・・って役立つのか?
0406名前は開発中のものです。04/09/06 01:08ID:G5UqfzEW
>>405=396
板違い。ここ池。
http://pcstg.s59.xrea.com/
0407名前は開発中のものです。04/09/06 01:09ID:auNVauLj
>>398=401=403=406
040839604/09/06 01:16ID:seHK1QkI
>>407
ADSLでネカフェに入れるようなお金持ち合わせてないんで、無茶です。
0409名前は開発中のものです。04/09/06 01:29ID:u3Xqk7WV
チートは板違いやね。
0410名前は開発中のものです。04/09/06 11:06ID:4CObFC3E
じゃ、作者側としてはチートに対抗する手段を考えよう。
完全に防御するのは無理としても、シロウトに毛の生えた程度のレベルの奴らの解析モチベーションを萎えさせるような。
0411名前は開発中のものです。04/09/06 12:07ID:ObP3Kgea
全てのキャラにスレッドを持たせてマルチスレッドで動作。
順序が必要な場合はきっちりイベントでスレッド同期を取る。
スクリプトは実行時コンパイルでマルチOS対応だぜ!
0412名前は開発中のものです。04/09/06 13:38ID:zZFndjB4
タスク処理を知ってるかい?
0413名前は開発中のものです。04/09/06 14:32ID:YyEXjF8/
メモリ上の変数のアドレスが起動ごとにころころ変わればいいんだっけ?
パターンマッチ検索にもひっかからないように、さらにシャッフルしてみるとか。
0414名前は開発中のものです。04/09/06 15:58ID:4CObFC3E
例えばチートの手法ってどんなのがあるか浮かぶものとして、
・プログラムファイルの解析&修正→デフォルトの残機数を記載してある部分を修正
・メモリの変化をサーチ→ダメージを受けたり、残機やライフが減ったときの前後の
メモリの変化を調べ、残機値が格納されたアドレスの値を変更

などあると思うけど、他にどのようなものがありますかね
0415初心者シューター04/09/06 16:11ID:MAHnG5m3
1機目から読ませていただき大変勉強になっています。
質問したく書き込みしました。一般的に機体・敵・弾にどのくらいの変数を持たせるのでしょうか?

ネットサーフィンをしていて弾には50以上の情報を持たせているというのを見て驚き質問しました。
ちなみに自分はフラグなども合わせて10個前後です。
0416名前は開発中のものです。04/09/06 16:25ID:yDTtNb+/
30から36バイトだなぁ…
0417名前は開発中のものです。04/09/06 18:49ID:OVtBUS5O
自分に限れば、敵は多くて30個、敵弾は曲げない場合多くて10個
でも凝っていろいろ増える場合もあるし、ちゃんとした理由があり保守や速度で対策がとってあるなら
やたら多くても構わない
0418名前は開発中のものです。04/09/06 21:18ID:YX5GWUV7
>>414
自機数の増減を行う部分に、暗号化したコピーを別の場所に作成しておく機能を
付加しておく。暗号化したコピーと、自機数が異なったら終了にする
0419名前は開発中のものです。04/09/06 22:39ID:H0B5S2Ss
メモリアクセスを検知したら強制終了みたいなことはできないのかねえ

自機の数とか正規に増やすには専用のイベントを呼んで増やしていくみたいにして
不連続&&イベントで増えていないと判断した場合は1機にしちゃうとか

実装するにはフラグを作るって感じで
フラグがONになってないのに増えていた場合は不正と

でフラグも変えられたらとなるかもしれんがフラグはmallocで確保して
どこにあるのかわからないようにすればいいのかな

不正を関知したときの罰をどうするかだね
これ次第では解析をやる気を無くすことになる

普通なら1にもどるとかだけど
場合によってはセーブが消えるゲームの例もあるそうだし
DQ IV(PS)は改造王 ? だっけて称号になるとか
シューティングならタイトルに戻るとかがいいね

某シェアウェアみたいにロジックボムは・・・
0420名前は開発中のものです。04/09/06 23:09ID:yDTtNb+/
ワークラムのチェックサムとるとか。
0421名前は開発中のものです。04/09/06 23:17ID:H0B5S2Ss
とにかく軽い事が前提って感じもするな
不正チェックでFPSが下がったりしたら目も当てられない
0422名前は開発中のものです。04/09/06 23:28ID:+eLiXSxV
内部処理の範囲内だから
余程大げさなことしなければ
処理速度に影響は出ないでしょ。
場合によっては、毎フレームチェックする必要もないし。
0423名前は開発中のものです。04/09/07 00:02ID:h7I5YBzw
普通にパラメータのチェックサム取るだけでも、処理速度に影響しない割に
かなりの効果はありそうだと思う
できるだけ対象のパラメータが変化する部分をまとめたほうがいいかな。
0424名前は開発中のものです。04/09/07 00:10ID:wt9esqtB
>415
たくさんの変数を持つオブジェクトを作ってるのは、
最小公倍数的な設計をしているからじゃないの?
0425名前は開発中のものです。04/09/07 00:31ID:asZ/U40h
OSレベルのクラッシュコードを走らせる>罰
0426名前は開発中のものです。04/09/07 00:56ID:gZ7IZfSE
それは誤爆したら洒落にならん。
しかも誤爆じゃなくても、製作者の評判が貶められる自殺行為。
0427名前は開発中のものです。04/09/07 01:20ID:Ql6zLCx/
即タイトル画面に戻す → 無難
増やしたはずなのに増えていないような…いや、増えたように見えているだけ?
ボス体力が無限になっていて自爆もしない?など混乱させる
 → 解析への嫌がらせとしてはこちらのほうが効果があるか
0428名前は開発中のものです。04/09/07 01:25ID:+PutyQIb
東方みたいなストーリー性の高い奴を作る場合なら、1回不正を検知したら
クライマックスで突然
「お前メモリいじったろ」
「この卑怯者!」
とか罵声浴びせてバッドエンドとか……はて、どっかで見たような。
0429名前は開発中のものです。04/09/07 01:25ID:OZoSHpNJ
何か一昔前のプロテクトみたいだなw
0430名前は開発中のものです。04/09/07 01:26ID:+PutyQIb
ああ、別にどういうタイプでもエンディングでスタッフロール流す代わりに悪口を延々流せば良いのか。
0431名前は開発中のものです。04/09/07 01:47ID:qTEhYFt+
>>412
擬似タスク処理を無駄にCPUとOSの機能で実装して
意味不明なことをすることに意義があるんじゃないかw
0432名前は開発中のものです。04/09/07 02:35ID:qijeeSAs
wingroov関係の記事ググって読んでみ。
正直怖くなる。そんなことできなくなるから。
>バッドエンド、クラッシュコード

「別のプロセスにより書きかえられました」
とか丁寧で無難なメッセージを表示してexit。
0433名前は開発中のものです。04/09/07 02:54ID:iGtyS1tp
クラッシュコードは冗談で言ったんだろうけどさ・・・

まぁ、俺はPCのシューティングゲームはリプレイで競い合うもんだと思ってるし
凝ったチート対策なんていちいちしないけどね

意図的な処理落ちによるスローモーション対策とかはがんばってるよ
0434名前は開発中のものです。04/09/07 04:28ID:/iE4xahX
ねこまんまが脅威だ・・・
メモリアクセス検知ありそうなんだけどねぇ。
ある?
0435名前は開発中のものです。04/09/07 07:34ID:zfVoxFjs
ねこまんまのプロセスがあったら終了で
0436名前は開発中のものです。04/09/07 20:01ID:o6RynIKo
チートやクラック対策は別板に行った方がレベル高い情報得られると思う。
STG特有の話でもないし、俺や素人が思いつくレベルのことなら既出だろうし
クラック方法もほぼ確立してるだろうし。
APIフックやIsDebuggerPresentでとりあえず対策してたつもりだったけど
破る方法さっくり言い当てられちゃったし。
0437名前は開発中のものです。04/09/07 20:23ID:aQyzw09w
チートプログラマー養成スレ
http://pc5.2ch.net/test/read.cgi/gamedev/1030635642/
Windowsでクラックされないオートセーブを!
http://pc5.2ch.net/test/read.cgi/gamedev/1013457353/
0438名前は開発中のものです。04/09/08 00:45ID:huNOrUiD
正直、クラック対策より完成を急ぐ方が先だろ
0439名前は開発中のものです。04/09/08 00:50ID:5CYgaSdz
然り
0440名前は開発中のものです。04/09/08 03:41ID:C6lXxpXg
納期があるわけじゃあるまいし
急ぐ必要はないだろう
0441名前は開発中のものです。04/09/08 03:54ID:E518gHiO
他人にゲームとして遊んでもらえる最低限の出来、を完成とするなら、
一般的にはできるだけ急ぐほうが良いのでは。
(調整が完了するという意味での)完成は永遠にしないよ、という宣言は例外としておいとく。
まあのんびりやって長くモチベーションを維持できるスキルを身に付けてる人なら、特に急ぐことも無いか。
0442名前は開発中のものです。04/09/08 04:28ID:G2l0zlnp
「ゲーム」の質を優先させるべき、と言いたかったのではなかろうか。
チートさせる気を起こさせないほどの、「ゲームとしての面白さ」が最強のプロテクトだ!
とか言ってみるテスト。
0443名前は開発中のものです。04/09/08 04:48ID:lIUoYSyo
ソレダ
0444名前は開発中のものです。04/09/08 05:55ID:GSLy4zsB
ヤシらはゲームする前にコード探してる気がするw
0445名前は開発中のものです。04/09/08 08:44ID:IGj2SdV/
そもそも完成してない奴はチート対策に興味を持たないだろ
0446名前は開発中のものです。04/09/08 09:00ID:MJ1Z97B8
完成してない奴ほど気にする

ってか俺は>>442は名言だと思う
0447名前は開発中のものです。04/09/08 09:46ID:qAJQz44f
なんつーか攻めの考えで、良いね
0448名前は開発中のものです。04/09/08 11:54ID:IGj2SdV/
そうなん?
漏れは>>446じゃないから完成してない奴の気持ちは分からんけど、
インターネット見る前まではチートなんか気にしたことなかったよ。

気にするようになったのはネット上でチート対象となっていた情報を得てから。
0449名前は開発中のものです。04/09/08 12:51ID:C6lXxpXg
現実を見る限り、チートするしないにゲームの面白さなんか関係ないけど。
0450名前は開発中のものです。04/09/08 13:15ID:5CYgaSdz
チート対策しなきゃいけないほど多くの人にプレイされてるのか?
0451名前は開発中のものです。04/09/08 16:26ID:lIUoYSyo
っつかシューティング好きな奴で、ここぞとばかりにチートしまくるやつもあんまいないだろう
そんな奴は実はシューティングが好きじゃないからすぐ離れていく


つい最近からこのスレ見始めたんだけど
意外と質問に来るヤシとかいないんだな
0452名前は開発中のものです。04/09/08 16:52ID:y+rz/Cdn
>意外と質問に来るヤシとかいないんだな

実装案はちょっと考えればすぐに解かるものばっかだからだろ>STG製作
改めて質問するほどの内容なんてそうそうなさげ

作るにあたっての最大の難関は素材かと
0453名前は開発中のものです。04/09/08 17:06ID:0YfQD2pk
プログラム初心者が自分の理解度などの情報をちゃんと明かして質問してくれれば
答えるほうも楽なんだろうけど、なかなかそういう例が少ないな

テキトウにSTG用絵素材を生成するツールを作ろうかと思ったが、いまだに影も形もできてない
できたところで自分の好みにあってるだけの、汎用性の低い素材しか作れない可能性も大きい
0454名前は開発中のものです。04/09/08 18:26ID:F9yWuPFo
素材生成つっても爆発とフラクタル雲、あとはせいぜいショットくらいだろう?
他に何か自動生成で作れそうなのあるかね。
0455名前は開発中のものです。04/09/08 19:32ID:9ItgcPnE
巷にあるようなすごい素材をボタン一つで自動生成!というレベルは自分には到底無理なので、
単色8x8ドットの質の素材を自機、敵、背景チップなどで用意するときに手抜きしよう、という程度。
ある程度できれば色数や形はそれなりに拡張できるだろうし。
8x8ドットじゃ小さいだろ → ネタゲーのように単純拡大 といった方向。
最初は低画質だが、自分の好みの粒の揃った素材を用意できるかも、あたりが発想だったかな。
爆風ツールとかドット絵ツールで普通に素材用意もしてるんだけどね。
うーん、うまく説明できないや。ともかく大幅に期待外れな内容でスマンかった。
■ このスレッドは過去ログ倉庫に格納されています