トップページgamedev
984コメント270KB

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

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

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

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

過去スレ,関連スレは >>2-3で。
0100名前は開発中のものです。2007/07/31(火) 12:38:00ID:sjQMA74N
僕は昨日童貞を卒業した非魔法使いなので分かりません。
0101中坊2007/07/31(火) 12:43:53ID:xXvVZWrK
>>100
そうですか、ほかにわかる方はいませんか?
0102名前は開発中のものです。2007/07/31(火) 13:58:00ID:JP2NXuRa
なんで回避しなきゃいけないの
0103名前は開発中のものです。2007/07/31(火) 13:58:07ID:uffl31RZ
>>99
なるべく、暇なときには、処理をOSに返すようにする
具体的には、余っている時間分、WinAPIのSleepをするようにする。
ただし、Sleepは精度が低いので、余裕を見て使う
0104名前は開発中のものです。2007/07/31(火) 14:35:38ID:4sSoDS3Y
Sleep();
0105中坊2007/07/31(火) 14:47:49ID:xXvVZWrK
わかりました。やってみます。
0106名前は開発中のものです。2007/07/31(火) 23:56:10ID:PKc1YjwA
ゲームがCPU占有してても別に問題ない気がするけど・・・
0107名前は開発中のものです。2007/07/31(火) 23:57:14ID:nei+80eK
夏は困る
0108名前は開発中のものです。2007/08/01(水) 02:17:30ID:QL2+sExz
マルチコアなら50%までしか行かないから大丈夫じゃね?
0109名前は開発中のものです。2007/08/01(水) 04:40:02ID:+vDNgo9L
昔のノートPCだったら、ウィ〜〜ンって、ファンが音たてて快音上げて、アツアツになって、
落ちたりすることもあったので、気を使ったものだ。
いまや、100%でぶん回しても気にならん

>>106
まあね。
0110名前は開発中のものです。2007/08/01(水) 10:21:39ID:+PzB2jiP
行儀の悪いアプリだな。
別にいいじゃん、で済まさんでちゃんと対処しようぜ。
0111名前は開発中のものです。2007/08/01(水) 10:55:06ID:z852awX1
ウインドウモードだけは100%じゃないほうがいいかな
0112名前は開発中のものです。2007/08/01(水) 13:31:51ID:qg+yowJt
イベント会場でノートPCをデモ用に使ったことある人なら
バッテリー食わないように工夫する必要性は分かってくれるよね

0113名前は開発中のものです。2007/08/01(水) 13:34:24ID:qg+yowJt
sage忘れたスマン
0114名前は開発中のものです。2007/08/01(水) 14:30:33ID:S85w3a5n
そういう工夫のためってんならムービーでいいじゃない。
あと別にsageなきゃいけないわけでもあるまい。
0115名前は開発中のものです。2007/08/01(水) 15:15:12ID:qg+yowJt
ムビ流すだけならiPod置いておくだけで済ませられるんだけど
やっぱ試遊できるようにしとくと反応も売り上げも違ってくるんだわ…
目の前で反応が見れると楽しい(凹む)しな

「バッテリー食わないように工夫」って書いたんだけど
大抵はほんの数行コードを加えるだけで済んでしまう話。
極端な例を出せば、DirectX使ってるシングルスレッドアプリなら
Present()時にV-BLANK信号に同期させるフラグを立てるだけで
消費電力は抑えられる
0116名前は開発中のものです。2007/08/01(水) 15:54:37ID:QL2+sExz
試遊って近隣に迷惑かかりそうで躊躇しちゃうんだけど
実際のとこどうなんだろ。
0117名前は開発中のものです。2007/08/01(水) 16:44:53ID:qg+yowJt
俺の場合、誰も並ばんような一人サークルの弱小だからな
大抵はお隣さんのほうがお客がいるよ

あんまし閑古鳥が鳴いてると周りが気を使っちゃうんだ
試遊可にしとくとたまに誰かが立ち止まってくれるし
ちょっと遊んでくれる。その程度さ!
0118名前は開発中のものです。2007/08/01(水) 16:50:48ID:S85w3a5n
俺一度コントローラをコミケにもって行った事あるけど
試遊する奴いなかったから今はもって行ってない。

デモは絶対必要だけど、試遊はどうなんだろう。
一応ぜんぜん売れないサークルってわけでも無いんだが…。
0119名前は開発中のものです。2007/08/01(水) 16:57:20ID:qg+yowJt
痴呆イベントでしか出品したことないからなんとも…
やっぱコミケだと空気がすこし違うんだろうね
0120名前は開発中のものです。2007/08/01(水) 17:46:02ID:iNha/wgK
なんで商の話になってるんだ
0121名前は開発中のものです。2007/08/01(水) 18:35:03ID:Jt0Zi122
【結論】
CPUパワーを無駄に浪費して
リフレッシュレート以上のフレームレートを
叩き出すことに血道をあげるのはベンチヲタだけ

普通のゲームアプリは処理時間が余ったら
大人しくOSに返上しとけと
0122名前は開発中のものです。2007/08/01(水) 18:40:05ID:QL2+sExz
商いの話って飽きないよね
0123名前は開発中のものです。2007/08/01(水) 18:48:08ID:BGMovmEQ
試遊ってだめだったのか
さっそくデモムービーつくるかw
0124名前は開発中のものです。2007/08/01(水) 19:22:44ID:S85w3a5n
>>123
いいID
0125名前は開発中のものです。2007/08/01(水) 22:40:46ID:n+DVKsS2
デモムービーに凝り過ぎて力尽きる
 ↓
ゲーム配布中止。デモムービーCD配布
0126名前は開発中のものです。2007/08/02(木) 15:19:06ID:Q8SVKs3C
プログラムが動いてるとこ見ないと買う気おきないよ
お試しプレイできなくてもデモループが普通じゃないかね?
ムービーなんて編集でどうにでもなる
つーか負荷をごまかす話の流れで騙す気まんまんだろうけど
0127名前は開発中のものです。2007/08/02(木) 18:03:35ID:prh0vYgh
デモムービーってアケシューとかで流れるようなプレイ中の動画じゃないのか?
0128名前は開発中のものです。2007/08/02(木) 18:22:40ID:dcfg3C+O
プロモーションムービーだってのに、編集でどうにかするとか
負荷をごまかすとか意味がわからん。
0129名前は開発中のものです。2007/08/02(木) 18:36:57ID:h7uYaDfJ
プロモーションって言うからには、テロップとかキャラ絵とかを
編集で入れるもんじゃないの?
0130名前は開発中のものです。2007/08/02(木) 20:10:20ID:3bhYpTJ5
いまどきのシューターがそんな編集で騙されるタマかいな。

俺のムービーは無修正のプレイ映像ですよ。
>>126みたいなのが見たがってるのがそれなんだろうし。
0131名前は開発中のものです。2007/08/02(木) 20:26:43ID:dcfg3C+O
だいたい騙すって何をどう騙すんだ?
0132名前は開発中のものです。2007/08/02(木) 21:35:22ID:3bhYpTJ5
どうなんだろうなw
0133名前は開発中のものです。2007/08/02(木) 22:51:49ID:4JyL3Iy+
お前らが作ってるのってやっぱ超弾幕シューか?
0134名前は開発中のものです。2007/08/02(木) 23:02:02ID:J1euKPvZ
>>133
弾幕はいろんな人が作ってるから作る気起きない。
今作ってるのは横STG。弾よりも地形と体当たりで殺す感じの。
0135名前は開発中のものです。2007/08/02(木) 23:27:17ID:0KOt2Dhn
体当たりで殺しにくるゲームはムカツクことが多い
うまく調整してくれw
0136名前は開発中のものです。2007/08/02(木) 23:52:20ID:tPzXlZfD
個人的につくってるのはチャロンタイプのTPS
0137名前は開発中のものです。2007/08/03(金) 09:21:45ID:A/lznhe8
>>134 確かにもう、お腹いっぱいだよな…。
弾幕シューで遊びまくったし、
作ったゲームも弾幕ばかり。

パロディウスとかするとなぜかホッとする。
0138名前は開発中のものです。2007/08/03(金) 10:10:20ID:yQgA9Kwf
そこでなぜパロなんだw
0139名前は開発中のものです。2007/08/03(金) 13:46:30ID:G46fioOr
もう歳を取ったので弾幕は自分が避けられなくてつまらないんじゃよー。
目もしょぼしょぼするし
0140名前は開発中のものです。2007/08/03(金) 14:46:12ID:7SgTkviH
弾幕が出来ないんじゃなくて昔やってたゲームしか出来ないんだろ
0141名前は開発中のものです。2007/08/03(金) 20:39:02ID:G46fioOr
なんかエスパーされてるけどずっと弾幕シューター
0142名前は開発中のものです。2007/08/03(金) 20:42:47ID:tfGnZa3k
じゃあ俺は141を撃ち落とす固定砲台。
0143名前は開発中のものです。2007/08/04(土) 09:40:10ID:wbN+plsn
年を取ると体が付いて行かなくなるからな
動体視力も反射神経も判断力も落ちるし
シューティング自体プレイするのが辛くなる
0144名前は開発中のものです。2007/08/04(土) 11:49:27ID:IhbabusI
経験の話かも試練が俺は大学のころより今のほうが
うまくなってるなあw
0145名前は開発中のものです。2007/08/04(土) 16:03:35ID:oDbDDe2M
最近ガチで目が悪くなってて困る。ゲームの派手なエフェクトやカメラモーションについていけん。
シューティングだと、弾が当たってるときの白点滅なんかありえないって感じ。
0146名前は開発中のものです。2007/08/04(土) 20:52:13ID:MSle7aBz
年を取って腕がにぶったかはともかく、最近本気で難しいゲームを攻略するみたいな情熱が沸かないんだよなw
難易度ぬるめのとかアンデフみたいな見た目の凄いゲームを適当プレイとかばかりだ
0147名前は開発中のものです。2007/08/06(月) 20:27:54ID:xG+IWjng
ロボシューティング作ろうとしたら
ドット絵がマジかけなくて進まない
ロボの場合色んなモーションあるし一人じゃ無理らしい
何かラクチンにキャラチップ作れるアイデアありませんか?
0148名前は開発中のものです。2007/08/06(月) 20:44:53ID:1RvcEaOd
ヴァルケンみたいなやつ?
3Dでやったら?
もしくはそれをモーションとして書き出してそこからドット修正。
お前さんのスキルにもよるが…。
0149名前は開発中のものです。2007/08/06(月) 21:59:06ID:6A7m/pZv
3Dはボーンとモーションだけ頑張れば後は超楽だぞ。
0150名前は開発中のものです。2007/08/06(月) 22:26:16ID:P2iRLwTy
ボーンとモーションさえあるならオレもさっさと作り始めてるわっ
ソコが一番難儀なんだろうに・・・。
0151名前は開発中のものです。2007/08/06(月) 22:34:29ID:WlO9FjRC
それが自前でできないなら人に頼むしか無いじゃん
0152名前は開発中のものです。2007/08/06(月) 22:50:29ID:6A7m/pZv
だから「だけ」って書いてあるだろうが。
どんだけ頭わるいんだ、おめぇ。
0153名前は開発中のものです。2007/08/06(月) 22:55:17ID:5yUK5zVv
まあスイカでも食って怒りのボルテージ下げろよ
0154名前は開発中のものです。2007/08/07(火) 16:28:10ID:RDwqsi08
すいません質問です。
現在のスコアを表示したいのですが、スコアの値を各桁に分解する楽な方法ってないですかね?
0155名前は開発中のものです。2007/08/07(火) 16:44:26ID:AIyv4dl8
ある
0156名前は開発中のものです。2007/08/07(火) 16:53:13ID:lyE3j1c/
10で割るなりsprintfで吐くなりするだけだろ・・・。
それがいやならBCD変換でどうぞ。
0157名前は開発中のものです。2007/08/07(火) 18:31:33ID:RDwqsi08
やっぱりそこら辺が無難ですか。ありがとうございます
0158名前は開発中のものです。2007/08/07(火) 20:32:52ID:Z/mQNFX+
* void todec_8(ULONG value, UBYTE buf[]);

_todec_8:
movem.l arg1_l(sp),d0/a0 * d0.l:数値 a0:出力バッファ

divu.w #10000,d0

move.w d0,d1
ext.l d1 * d1=上4桁
swap.w d0
ext.l d0 * d0=下4桁

moveq.l #10,d2

divu.w #1000,d1
move.b d1,(a0)+ * 8桁目
swap.w d1
ext.l d1
divu.w #100,d1
move.b d1,(a0)+ * 7桁目
swap.w d1
ext.l d1
divu.w d2,d1
move.b d1,(a0)+ * 6桁目
swap.w d1
move.b d1,(a0)+ * 5桁目
0159名前は開発中のものです。2007/08/07(火) 20:34:08ID:Z/mQNFX+
divu.w #1000,d0
move.b d0,(a0)+ * 4桁目
swap.w d0
ext.l d0
divu.w #100,d0
move.b d0,(a0)+ * 3桁目
swap.w d0
ext.l d0
divu.w d2,d0
move.b d0,(a0)+ * 2桁目
swap.w d0
move.b d0,(a0)+ * 1桁目

rts

68000-10MHzで1VSYNCに400回実行できるYO
01601572007/08/08(水) 10:12:29ID:v0DGJ57K
うちはC#なんでこんな感じに実装しました。
とりあえず現状では問題なく動くっぽいです


public void DoMove()
{
 int a = 0;
 int b = 0;
 for (int i = 0; i < NowScore.DIGIT_NUMBER; ++i)
 {
  b = (int)Math.Pow(10, NowScore.DIGIT_NUMBER - i - 1); // xのy乗の値を返す
  this.digit[i] = (this.score - a) / b;
  a += (b * this.digit[i]);
 }
}

public void DoDraw()
{
 for (int i = 0; i < NowScore.DIGIT_NUMBER; ++i)
 {
  this.cutX = this.digit[i] * NowScore.CUT_SIZE_W;
  Framework.HSL.graph.SetSprite(               // 引数渡してスプライト描画
   NowScore.TEXTURE_NUMBER,
   NowScore.POS_X + (i * NowScore.DIGIT_INTERVAL),
   NowScore.POS_Y,
   this.cutX,
   0,
   NowScore.CUT_SIZE_W,
   NowScore.CUT_SIZE_H);
 }
}
0161名前は開発中のものです。2007/08/09(木) 09:01:05ID:03RYicTw
一の位 = score % 10;
十の位 = (score / 10) % 10;
百の位 = (score / 100) % 10;
0162名前は開発中のものです。2007/08/09(木) 09:26:37ID:wAD6gldC
文字列変換して1文字ずつ取得が一番楽な気がする。
ところで他の人はこういうのって、点数変化した時だけ処理してるの?
それとも毎回必ず計算して表示させてる?
0163名前は開発中のものです。2007/08/09(木) 22:47:32ID:L7ETUDDX
>>162
毎回計算してても十分に間に合うよ。
>>161みたいにやってたら遅いけど。
0164名前は開発中のものです。2007/08/09(木) 22:56:39ID:Tm6LW0Jp
>>163
遅いって8bit時代の人ですか?
0165名前は開発中のものです。2007/08/09(木) 23:04:46ID:L7ETUDDX
いや、別に。
わざわざ冗長なことをするのが気になるだけだよ。
そのソースがどんなコードを吐くのか見えていれば誰でも思うことだと思う。
0166名前は開発中のものです。2007/08/09(木) 23:37:41ID:HEYszh2g
別にいいじゃん161でも
0167名前は開発中のものです。2007/08/09(木) 23:57:00ID:ZpXaSKEy
スコア表示ならせいぜい1フレームに1回だろ。
そんなところがボトルネックになったりしねーよ。
0168名前は開発中のものです。2007/08/10(金) 00:02:26ID:jrmAY/NW
俺も>>161だな。正確にはループさせてるけど。
0169名前は開発中のものです。2007/08/10(金) 00:53:05ID:SvI4eXzA
ほとんどの人はループさせて一桁目を抽出、10でわっていくんじゃないかな
0170名前は開発中のものです。2007/08/10(金) 01:18:29ID:hrEZ+VlD
とびつきひめ読本に、1フレームあたりの処理時間(16msか17msか)を
ブレゼンハムのアルゴリズム使って求めるって書いてあったけど、
60fpsを正確に出そうとするとこの方法が一番いいのかな?
0171名前は開発中のものです。2007/08/10(金) 01:35:59ID:SvI4eXzA
高精度タイマでマイクロ秒で計算するという方法がある
0172名前は開発中のものです。2007/08/10(金) 04:01:33ID:QDoBD+fB
16mでぶん回すだけでも良いと思うけどね。
実際のところきっちり60fpsで更新するメリットって何かある?
0173名前は開発中のものです。2007/08/10(金) 04:17:21ID:FvXjMQm9
宗教上の理由とか。
FPS周りは怖そう。

まぁたいした量じゃないし、1回書いたらつかいまわすし、
きっちり計算してる方が精神衛生上いいんで、俺はプレゼンハム使って実装したなぁ。
16msでぶん回すくらいならfloat使うかな。
0174名前は開発中のものです。2007/08/10(金) 08:16:41ID:l+U0J7e0
Windowsで完全に60固定で回すのはムリなんだし
だいたい58〜62くらいで収束すればいい。
0175名前は開発中のものです。2007/08/10(金) 08:36:24ID:w/cIxmy/
ヒント: リフレッシュレート、同期待ち
0176名前は開発中のものです。2007/08/10(金) 08:41:56ID:YyBw365y
そしてディスプレイは50Hzで動作中。
0177名前は開発中のものです。2007/08/10(金) 08:50:44ID:FvXjMQm9
ttp://spitfire.client.jp/program/fps.html
まぁ俺はB宗1派ってことで。
SDLつかってんだけど、リフレッシュレート設定できないみたいなんで。
あ、キッチリ計算するとFPS60と表示できるってメリットがあったわw
別に処理落ち率表示にすりゃいいんだけどね。
0178名前は開発中のものです。2007/08/10(金) 08:51:57ID:+KC/j3SS
そこら辺ってどうしてる?
0179名前は開発中のものです。2007/08/10(金) 09:42:07ID:zsdH0qDi
同期すると遅延するのでイヤン
0180名前は開発中のものです。2007/08/10(金) 10:04:10ID:l+U0J7e0
とあるライブラリはB宗1派+2派になってたな。
VSYNC待ったあとに、タイマーで60に合わせてる。

リフレッシュレートが60未満の環境ではダメだが、
PCでそんな環境はまずねぇしな。
0181名前は開発中のものです。2007/08/10(金) 10:31:47ID:SvI4eXzA
液晶ディスプレイが普及した今60Hz以外はほとんどないのがいい
ただ、フルスクリーンのアスペクト比のほうが厄介
多少負荷がかかるが解像度を変更しないという方法もある
0182名前は開発中のものです。2007/08/11(土) 10:59:10ID:ddnzZkDr
液晶といえど70Hzも結構ある気がする。
0183名前は開発中のものです。2007/08/11(土) 13:20:55ID:5aK7rbAn
たとえば?
0184名前は開発中のものです。2007/08/11(土) 20:00:37ID:rvUAMOKB
>>179
遅延なくす方法はあるから調べなさい。
GPUの動作理解していれば一発
0185名前は開発中のものです。2007/08/13(月) 06:13:45ID:LlXXWXeS
リフレッシュレートに70とか85とか使ってる奴は殴っていい
75は、ギリギリ許す
0186名前は開発中のものです。2007/08/13(月) 08:32:45ID:97Mfw0eD
もうそういうの考えるの面倒だから
モニタのリフレッシュレートとってきてdtかけて計算しようかしら…
0187名前は開発中のものです。2007/08/13(月) 13:47:29ID:J8x7Qzkn
いまどきCRT使ってる奴ってどのくらい居るんだろ
0188名前は開発中のものです。2007/08/13(月) 13:50:44ID:x8GxvkBn
CRTは場所とるし重いのがなぁ・・・
0189名前は開発中のものです。2007/08/14(火) 02:53:26ID:PRCYMwvn
それに電気も食う。でもゲームには最高なんだけどなぁ…
10万円以内で買える国産の新品CRTが売り場から消えてしまって悲しい
ブラウン管用ガラスを製造してた旭硝子が去年3月に撤退しちゃった

今使ってるCRTが経年劣化で少しづつ調子悪くなってきた
0190名前は開発中のものです。2007/08/14(火) 03:15:09ID:tzsoZ/vF
PC用はどうでも良いんだが、15kHzRGBが映るしっかりとしたCRTが欲しいなあw
いや液晶でそれが可能ならもっと理想的か…。
0191名前は開発中のものです。2007/08/14(火) 06:04:40ID:8V49PXv0
去年発行された法人向けPC部品カタログにはCRTモニタの欄もちゃんとあったから
まだまだ普通に売ってるんじゃないかな。
でも滅茶苦茶目が疲れるよね。
0192名前は開発中のものです。2007/08/14(火) 17:29:52ID:OkrTpHAq
3D空間の2点を通る放物線を描くにはどうすればいいんだろう
参考になるページあったら教えておくれ

放物線を描いて飛ぶミサイルを狙った場所に着弾させたい
0193名前は開発中のものです。2007/08/14(火) 18:00:17ID:8V49PXv0
発射地点、各点を回転させて2Dとして計算した後にまた回転して元に戻せばいいんじゃね
0194名前は開発中のものです。2007/08/14(火) 18:08:45ID:M1v2/EIY
ゲームプログラミングのための3Dグラフィックス数学に
ちょうどそんなのが載ってた気がする。
0195名前は開発中のものです。2007/08/14(火) 18:45:29ID:pFTpDsem
放物線を
重力方向に垂直な面に投影したベクトル(等速直線運動)と
重力方向だけのベクトル(等加速度直線運動)に
分けて考えればいいんじぇね?
0196名前は開発中のものです。2007/08/14(火) 18:51:29ID:WRx2oxml
放物線は二次曲線だから、2点だけじゃ定まらない。
発射ベクトルと1点なら定まるだろうな。あとは代数の問題。
でも放物線より二次ベツェ曲線の方が簡単だと思うが。
0197名前は開発中のものです。2007/08/14(火) 20:52:03ID:VsWG1XJm
銃や小口径の砲(迫撃砲やグレラン)は
初速の自由が利かないから
初速は定数にしてみろ

地球の自転とか完全に無視して地表は無限平面
つまり地動説を唱えろ。鉛直下方向の単純な重力場だ

あとは発射点と着弾点が与えれば
仰角は算出できる。高校物理だな
0198名前は開発中のものです。2007/08/14(火) 20:54:24ID:VsWG1XJm
×地動説
○天動説
0199名前は開発中のものです。2007/08/14(火) 23:50:41ID:A5ediggz
だれかそろそろ教えてやれよw


X-Z平面は等速でおk。
 X'=X0+Vx*t …(1)
 Z'=Z0+Vz*t …(2)
(X0,Z0は発射時の位置、X',Z'は移動後の位置、Vx,Vzは移動速度、tは経過時間)

Y方向(高度)は落下の式でおk。
Y'=Y0+Vy*t-0.5*gt^2 …(3)
(Y0は発射時の高度、Vyは発射時の初速、tは経過時間、gは重力加速度)

それぞれ自分の座標スケールに合わせて変換する。
(メートル、センチ、ドット、フレーム、ミリ病など)

何秒後に目的の地点に着地するかを決めれば(= tの最終値とX,Z方向の目的までの距離)
(1)と(2)でVxとVzが求められる。
Vyも、発射と着弾の高低差とtの最終値を(3)に代入すれば求められる。

あとは、描画の時に時間を(1)(2)(3)に入れて計算すれば座標が得られる。
■ このスレッドは過去ログ倉庫に格納されています