シューティングゲーム製作技術総合 17機目
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2008/11/27(木) 10:18:19ID:bBI1A+d5それは「シューティングゲーム製作」・・・。
このスレでは、そんなシューティングゲームの製作技術や技術の検証、成功談
失敗談笑い話、難易度の設定方法論、多弾の是非などについて語り合いましょう。
もちろんBulletMLなどで弾幕を作成してみたり、自分の作ったシューティングを
晒してみたり、プロジェクトをはじめてみるなどもOK!
ただし、シューティングの未来とか既存のゲームの話題などは、関連する他の
スレでやってくれ。
過去スレ,関連スレは >>2-3で。
0090名前は開発中のものです。
2008/12/06(土) 23:27:05ID:RvirWTCn0091名前は開発中のものです。
2008/12/06(土) 23:53:56ID:8zCwMYDf0092名前は開発中のものです。
2008/12/06(土) 23:57:34ID:d+fN4aMe>>89みたいなのだとFPSを上げれば上げるほど誤差がでるから
if( (1〜1000の経過ミリ秒) < (この1秒間での更新回数)*1000/60) )
wait(( この1秒間での更新回数)*1000/60) - (1〜1000の経過ミリ秒) );
みたいな
0093名前は開発中のものです。
2008/12/07(日) 01:20:05ID:nT4ceVXHそれは少し問題がある。
Windowsでは一番下のifからループの最初に戻るまでに時間がかかる可能性がある。
また、Sleepは指定した時間で戻る保証がない。遅れる可能性がある。
基本的にループ内で時間を取得するのは1ヶ所にしないとダメ。
0094名前は開発中のものです。
2008/12/07(日) 08:49:50ID:CrWGaene0095名前は開発中のものです。
2008/12/07(日) 11:40:55ID:MnGKoZXg0096名前は開発中のものです。
2008/12/07(日) 21:15:48ID:YhkzdsGX少なからずリアルタイムループ制御の技術は身につけて置いて損は無いだろう。
……本当にリアルタイムなのかどうかはさておき
0097名前は開発中のものです。
2008/12/08(月) 02:42:41ID:u3e7IEjo0098名前は開発中のものです。
2008/12/08(月) 11:02:44ID:xkZWgcaE素人プレイヤーにDirectXなどという得体のしれないランタイムを
長時間かけてインストールさせる作業を強制できるだろうか
0099名前は開発中のものです。
2008/12/08(月) 12:12:53ID:tNegh1fp0100名前は開発中のものです。
2008/12/08(月) 12:34:13ID:xkZWgcaEあと定期的にバグ修正版が出るWEBブラウザを更新するのもめんどい
0101名前は開発中のものです。
2008/12/08(月) 13:16:08ID:espLlLLxとあるので、そのうち DirectX が Windows 自体にインストール済みになる
時代が来るので、初心者は気にしなくていい時代がくる
と予測
0102名前は開発中のものです。
2008/12/08(月) 13:18:05ID:espLlLLx3Dゲーでもしない限り気にしなくていい気がスルー
0103名前は開発中のものです。
2008/12/08(月) 13:30:04ID:xkZWgcaE不景気で大量に失業者が増えるので、Windows7搭載PCを買えない人が続出して、
思ったほど普及しないと予測
>>102
Windows98でネットなんかつなぐなと言いたい
Microsoftのサポート切れるわ、Javaのサポート外だわ、ウィルスバスターのサポート外だわ
良いこと無い
0104名前は開発中のものです。
2008/12/08(月) 13:47:28ID:espLlLLxてことはLinuxの出番ですか?
まぁサポート料でウハウハなんですが
0105名前は開発中のものです。
2008/12/08(月) 14:00:39ID:tNegh1fp0106名前は開発中のものです。
2008/12/08(月) 14:30:03ID:txNXu5ctどっちにしろPCゲームプレイしたいなら
いつかはDirectXインストールしなきゃならんだろ
0107名前は開発中のものです。
2008/12/08(月) 14:46:11ID:xkZWgcaEmacも忘れないであげてください
>>106
そんときゃもう素人プレイヤーじゃないだろうからいいや
0108名前は開発中のものです。
2008/12/08(月) 15:34:15ID:tNegh1fp0109名前は開発中のものです。
2008/12/08(月) 15:43:31ID:rjxQpxpY0110名前は開発中のものです。
2008/12/08(月) 16:41:04ID:txNXu5ct訳分からん
0111名前は開発中のものです。
2008/12/08(月) 17:59:35ID:xkZWgcaE0112名前は開発中のものです。
2008/12/08(月) 18:18:21ID:bxJJH0Tb0113名前は開発中のものです。
2008/12/08(月) 19:41:44ID:8qLAhPDR0114名前は開発中のものです。
2008/12/08(月) 20:01:13ID:xkZWgcaE動作要件に書いとくしか無いんじゃね。
*nix系のソフトのインストールマニュアルを見ても、
「○○が既にインストールされている必要があります」みたいなのがずらりと並んでたりするしなあ
0115名前は開発中のものです。
2008/12/08(月) 20:59:19ID:9DrHGdXMしょぼゲーしか作れないじゃん
0116名前は開発中のものです。
2008/12/08(月) 22:03:31ID:espLlLLxそれもそうだね
GDI自作するよりもDirectX使った方が早いし、
MSお墨付きだし
Macは・・・すまん
Javaが盛り上がってきたら作成されるかもしれん
0117名前は開発中のものです。
2008/12/08(月) 23:05:43ID:MfS7g7PZ0118名前は開発中のものです。
2008/12/08(月) 23:14:36ID:9DrHGdXMあんなの情報弱者が買うハードだ
0119名前は開発中のものです。
2008/12/08(月) 23:35:13ID:+S7O52E1ゲームが好きでマカーやってる人間は用途に応じてハード買い揃える程度の可処分所得があるので
心配してもらわなくても結構ですの。BIOSHOCKとDEADSPACEのためにゲーマー仕様のノートPCくらい持ってますの
コールドスリープから目覚めたてのID:xkZWgcaEは速やかに永眠モードに戻るか速やかに社会復帰に努めなさい。
まずはOpengGL&GLSL&各GPUベンダーの拡張命令セットを使えるようになれ。話はそれからだ
0120名前は開発中のものです。
2008/12/08(月) 23:36:46ID:u3e7IEjo苦労の割に需要が見込めんだろう
0121名前は開発中のものです。
2008/12/08(月) 23:43:15ID:+S7O52E10122名前は開発中のものです。
2008/12/08(月) 23:47:52ID:xkZWgcaESDLいいよ、SDL。Windows/Mac/*nix対応だし。
0123名前は開発中のものです。
2008/12/08(月) 23:51:47ID:9DrHGdXMちっとも慣れてないじゃんww
妬んでるんじゃなくて、哀れんでるんだよ
あぁ。マッキントッシュのイメージ戦略に載っちゃったんだね・・・・と。
まじで今のマックは欠片も羨ましくない
昔のフォトショップとかイラストレーターがWinよりも先に出てた時ならまだしも
そういう選民思想みたいなの振りかざして、上から見るのは寒いから辞めた方がいいよ?
0124名前は開発中のものです。
2008/12/08(月) 23:59:50ID:QMJ/R6ZHUnixユーザ(というか開発者)が買ってるからw
0125名前は開発中のものです。
2008/12/09(火) 00:03:14ID:FH6Ed4rzそれに準拠した製品を作るのが商売としては賢い戦略だろうな。
Flashとかはまた別物かな。
0126名前は開発中のものです。
2008/12/09(火) 00:09:40ID:sF7Fv4my落ち着け、普通ならDirectx画はいってる環境なら勝手に入ってる。
別途入れるソフトが必要なのはXNAだ
0127名前は開発中のものです。
2008/12/09(火) 00:18:42ID:UUSX3J9x俺の知識が古いのかもしれんが、MDXは標準インストールではなかったはず。
0128名前は開発中のものです。
2008/12/09(火) 00:25:56ID:WtrXFULJたしか窓の世界ではサポート期限が切れたWinMeとWin2kでさえDirectX7相当(だっけ?)標準搭載。
WinXPならDirectX8辺りを標準搭載。
2008年末現在、どんなウンコ窓PCのオンボGPUでも固定機能パイプラインくらい搭載してる。
今更CreateDIBSectionとか(旧WinGに相当する関数群?)に固執するメリットは絶無だろ
あるいは何らかの特殊な緊縛プレイ(demo用のソフトレンダラー組む)とか
0129名前は開発中のものです。
2008/12/09(火) 00:31:41ID:FH6Ed4rzつまりDirectX7相当の機能だけ使って作りましょうってこと?
0130名前は開発中のものです。
2008/12/09(火) 00:42:56ID:WtrXFULJDirectXインスコさせたくねーとかいう天邪鬼ユーザーに配慮したいとかいう人がいたから
そこまで言うなら「固定機能パイプライン必須」程度を下限にしとけばいんじゃねって話
0131名前は開発中のものです。
2008/12/09(火) 00:47:20ID:RPj0CwyCなんでそうなるんだよ
0132名前は開発中のものです。
2008/12/09(火) 02:05:46ID:4JCb9FOv0133名前は開発中のものです。
2008/12/09(火) 02:18:31ID:RPj0CwyC0134名前は開発中のものです。
2008/12/09(火) 10:15:17ID:S3aTmjvE参考のページを教えていただけると幸いです
ボタンを押すと発射、while(pos.y>0)でくくると、最初とpos.y=0の時の中間が描かれません。どうすればいいのでしょうか?
0135名前は開発中のものです。
2008/12/09(火) 10:39:31ID:wTdUmZMK0136名前は開発中のものです。
2008/12/09(火) 10:52:00ID:wTdUmZMKすまん、無視してくれ
0137名前は開発中のものです。
2008/12/09(火) 11:05:00ID:S3aTmjvE0138名前は開発中のものです。
2008/12/09(火) 11:13:10ID:UXQm+qSaじゃあ表示されないのは当たり前だろ
whileでくくるんじゃなくてボタンを押したときは弾を生成する処理だけをする
メインループで弾が存在したら弾を1コマ進めて表示する処理をし、
画面街に飛び出たら消滅させる処理をする
0139名前は開発中のものです。
2008/12/09(火) 11:16:34ID:wTdUmZMKhttp://dixq.net/s/
俺もこれ見てシューティング作ってる
0140名前は開発中のものです。
2008/12/09(火) 11:42:00ID:8b11EtKt日本語を勉強するか
プログラムを勉強するか
数学を勉強するか
どれかを選べばいいと思う
0141名前は開発中のものです。
2008/12/09(火) 11:43:28ID:S3aTmjvE写っぱなしの弾をボタン一回で継続的に動かしたいだけなのに・・・・;;
0142名前は開発中のものです。
2008/12/09(火) 12:04:01ID:LlY86N04RadeonXPress200上で開発して60Fps出てたのがたまたまRadeonHD4850で動かしてみたら一桁まで落ちるので、
何でかと思ったら行列スタックや属性スタックの操作が極端に重かったみたいで、判るのに苦労した。
0143名前は開発中のものです。
2008/12/09(火) 12:06:37ID:PL50HxGw具合が悪いんですけど、何の病気でしょうか?
と訊かれただけで、あんたは何の病気かわかるのか?
0144名前は開発中のものです。
2008/12/09(火) 12:13:39ID:8b11EtKtさらに質問が返ってくるに25000ガバス
0145名前は開発中のものです。
2008/12/09(火) 12:43:33ID:S3aTmjvE0146名前は開発中のものです。
2008/12/09(火) 12:48:07ID:wTdUmZMK0147名前は開発中のものです。
2008/12/09(火) 12:49:16ID:S3aTmjvE0148名前は開発中のものです。
2008/12/09(火) 13:18:17ID:4JCb9FOv0149名前は開発中のものです。
2008/12/09(火) 13:20:23ID:FH6Ed4rzwhileでくくった中に描画する処理を書けばいいんじゃね。
while ( pos.y > 0 ) {
=== 移動の処理 ===
=== 描画の処理 ===
===その他の処理 ===
}
0150名前は開発中のものです。
2008/12/09(火) 13:29:24ID:S3aTmjvEしかも2ちゃんでwww
0151名前は開発中のものです。
2008/12/09(火) 14:48:12ID:PI3BaNiE釣
0152名前は開発中のものです。
2008/12/09(火) 16:52:36ID:fFSBTS/40153名前は開発中のものです。
2008/12/09(火) 16:57:20ID:Sb5wMSbY弾を撃つと弾以外のキャラの動きが全て止まるゲームを思い出した
0154名前は開発中のものです。
2008/12/09(火) 16:59:45ID:8b11EtKt0155名前は開発中のものです。
2008/12/09(火) 17:11:18ID:M91LEl8M0156名前は開発中のものです。
2008/12/09(火) 17:29:23ID:8b11EtKt0157名前は開発中のものです。
2008/12/09(火) 17:37:06ID:PI3BaNiEあ釣
0158名前は開発中のものです。
2008/12/09(火) 18:08:52ID:VNydxNb7というような波が出来てしまうんですが、満遍なく発射するにはどうしたらよいんでしょうか。
現状は、ショットの要求があったときに、あいている弾があったら発射するという感じにやっています。
0159名前は開発中のものです。
2008/12/09(火) 18:16:35ID:Sb5wMSbYそれぐらい自分で考えられないでゲームは完成するのか?w不安だよw
どうとでもできるだろ
0160名前は開発中のものです。
2008/12/09(火) 18:26:30ID:IEG5htND>現状は、ショットの要求があったときに、あいている弾があったら発射するという感じにやっています。
それで問題ない気がするけどな。
上と下の両方に同時に要求してるわけじゃないのかな?
ちょっと邪道かもしれないけど、ダブルショットの要求があった時に、
「2つ空き」があるかどうか確かめて、なければ撃たない、
あれば両方撃つ、って形でいけるんじゃない?
0161名前は開発中のものです。
2008/12/09(火) 18:43:45ID:VNydxNb7すいません。確かにどうとでもなるんですが、あのシンプルなショットに
そんな面倒な処理があるのか?という思いがありまして。
>>160
要求は同時に出しています。
行順の問題かとも思って、発射するごとに行を入れ替えたりも試したんですが。
2つ空きのほうは、元々画面内の弾数が多くなくて避けたいので、ちょっと煩雑でも自己流で書こうと思います。
ありがとうございました。
0162名前は開発中のものです。
2008/12/09(火) 19:18:46ID:IEG5htNDやり方が間違ってるんじゃないのなら
単にバグが潜んでるだけかもしれないよ。
0163名前は開発中のものです。
2008/12/09(火) 19:30:26ID:8b11EtKt気づけ
0164名前は開発中のものです。
2008/12/09(火) 20:34:56ID:FH6Ed4rz2つ確保するつもりが、ポインタを1つ分しか進めてなくて、弾が次々と上書きされてたりしてな。
0165名前は開発中のものです。
2008/12/09(火) 23:06:18ID:lVmIafHS弾丸リスト.add(上向き弾);
弾丸リスト.add(下向き弾);
でやるもんだし、C++でも似たような実装は可能だろ?
とりあえず、Cでやりたいんなら連結リストを実装することから始めてみればいいんじゃないか。
0166名前は開発中のものです。
2008/12/10(水) 16:37:24ID:Cps9vI6cSetWindowLong関数やSetWindowLongPtr関数で変更するのってありかな?
メッセージハンドラ中にswitch文とか煩雑かなーと思うわけですが
なんか一般的な方法ってあるんですかね?
0167名前は開発中のものです。
2008/12/11(木) 00:30:52ID:SwlibDem0168名前は開発中のものです。
2008/12/11(木) 01:09:07ID:Tl9RQtTK0169名前は開発中のものです。
2008/12/11(木) 05:41:33ID:Gzl7Lfi5この板で自分以外にC#をC#系スレ以外でいってる人はじめてみた・・・ちょっと感動だ。
0170名前は開発中のものです。
2008/12/11(木) 10:13:54ID:tNsh0a9k単一のウィンドウプロシージャーからディスパッチすればいいと思う
0171名前は開発中のものです。
2008/12/11(木) 10:17:05ID:7h0mUefCシューティングゲームプログラミング(松浦著)では、タスククラスからシーンクラスを派生させて、
タスクリストの1つとしてシーンを作成していた
その仕様はわかるんだけれど、シューティングゲームに限らずたとえばRPGだった場合、
メニュー画面とか、どうなっているのかなーと思った次第
メニュートップ→魔法→だれの?→どの魔法→魔法対象
みたいに新しいメニューが生まれてくるじゃない
これもタスクリストに1つ1つ書くのかなーって、疑問に思ってる
0172名前は開発中のものです。
2008/12/11(木) 11:04:32ID:1D8jgOIGRPGはまだ手を出してないが
俺だったら states などに状態を入れて
switchで分けるかもな
タスクシステムって、マルチスレッドとかでもならない限り
威力発揮しなくね?
0173名前は開発中のものです。
2008/12/11(木) 16:02:40ID:1D8jgOIGこれもタスクシステムでできるかな?
0174名前は開発中のものです。
2008/12/11(木) 16:07:14ID:1D8jgOIGX透過線のデータをXLSファイルに出力しつつ
リアルタイムに表示するシステムのライブラリを作ってるんだ
0175名前は開発中のものです。
2008/12/11(木) 17:05:49ID:1D8jgOIGいつもこける
そしてずっと俺のターンになるバグがでます
製品版だし、DirectXもバージョン合ってるのに
なぜ動作しないんでしょうか?
OSはVistaです
0176名前は開発中のものです。
2008/12/11(木) 17:07:41ID:1D8jgOIGどこの院かバレるじゃねぇかw
誰か消してくれ
0177名前は開発中のものです。
2008/12/11(木) 17:20:48ID:e6R1e+p80178名前は開発中のものです。
2008/12/11(木) 17:27:02ID:jeJaub+T0179名前は開発中のものです。
2008/12/11(木) 17:52:07ID:jDESsGSyタスクリストなんて言う名前で呼んでるから見えなくなってるだけで、
実体はアルゴリズムのエントリポイント(一般的には関数ポインタとか)の連結リストを順番に呼び出していく機構でしかないわけだから、
同じようにアルゴリズムのスタックの一番上だけを実行するような機構を用意すれば良いわけだ。
void Menu()
{
}
void MagicSelect()
{
0180名前は開発中のものです。
2008/12/11(木) 17:56:00ID:jDESsGSyvoid Menu()
{
if(hoge)Push(MagicSelect);
}
void MagicSelect()
{
// 同
}
void Who()
{
// 同
}
略
void SelectTarget()
{
// スタックをクリアして次のキャラとか、戦闘開始とか
}
実際どう実装するのが一般的かはしらんけど私はこうしてるな。
RPGは作ったこと無いけど。
0181名前は開発中のものです。
2008/12/11(木) 20:11:08ID:IWquCMNPSTGってOSのGUIサービスを使わなくてもへっちゃら平気なことが多いから
そういう場合、OSのメッセージシステムも関心の外にあったりする。↓仮想コード
winmain(){
try{
//ゲーム環境構築
//D3D,SOUND,INPUT,USERDATA,ワーカースレッド生成,etc
boost::shared_ptr<GAMEENV> gameenv(new GAMEENV(gamemain));
// メインスレッドはWM_QUITされるまでグルグル回ってろ
while(1){
GetMessageとかうんたらかんたら
…
}
}catch(...){;}
}
gamemain(){ // 自由です。HSPerにとっては水を得たお魚状態
try{
boost::scoped_ptr<SCENE> logo(new LOGO(gameenv)); //ロゴ画面
boost::scoped_ptr<SCENE> demo(new DEMO(gameenv)); //デモ画面
(…後略…)
http://pc11.2ch.net/test/read.cgi/gamedev/1226199100/174-
}
STGのシーン遷移は超単純だからコードにベタ書きしたほうが分かりやすかったりする
RPGみたいに複雑なシーン遷移をするならSCENEのツリーとかSCENEのグラフが要るね
こういうのは可視化・エディットできるGUIツールがあると便利だね。ツクール大好き
>>172-176
>どこの院かバレる
(・∀・)病院ダロ。カエレ
0182名前は開発中のものです。
2008/12/11(木) 20:22:48ID:1D8jgOIGほぅほぅほぅ ホーホケキョ
リンク先はオブジェクト指向ですねぇ
しかし、私がSTGの状態遷移に一番ややこしいStrategy Patternを使っていたのは内緒だ
0183名前は開発中のものです。
2008/12/11(木) 20:32:19ID:1D8jgOIGしかしですね
結局 switch文使ってるじゃないですか
これが気に入らなくてねストラテジーパターンに走ったんですが、
さらに汎用性のある基本オブジェクトの作成、つまり基本設計ですかね
でつまづき
CGameクラス作ってシングルトンパターンは楽勝だったんですけど
テンプレートメソッドパターンがなかなかのつわものでしてね
そうこうしているうちに、ワケワカメになってしまってね
結局 デザパタ一切使わない ピュアなC/C++になってしまったんですよ
そして、人生でもつまづいてね
あーいたたた
0184名前は開発中のものです。
2008/12/11(木) 20:46:44ID:1D8jgOIGcase TITLEOPTIONTYPE_GAMESTART: //ゲームスタート
try{ //STAGEEXCEPTIONTYPE_GAMEOVERという例外を投げるまでゲーム続行
stage1->Run();stage2->Run();stage3->Run();stage4->Run();
stage5->Run();stage6->Run();stage7->Run();stage8->Run();
ending->Run(); //エンディング画面再生
}
これの
stage1->Run();
stage2->Run();
とあるが
空の処理を回すのが気に入らない
0185名前は開発中のものです。
2008/12/11(木) 20:48:07ID:1D8jgOIGObserverパターンで監視しろっつーの
と俺が言ってみるテスト
まぁ、増えるのは複雑さだけなんですけどねorz
0186名前は開発中のものです。
2008/12/11(木) 21:02:17ID:IWquCMNPあ、gamemain中のgameenvだけど、これは適当にgamemainの引数でひっぱってきてね
0187名前は開発中のものです。
2008/12/11(木) 21:08:33ID:IWquCMNPHSPerのSTGは一面から始まってプレイヤーが生残する限りエンディングまで一本道で進むよ
順次処理を静的に記述してるだけだよ
>>174のコードに空の処理なんか無いよ
0188名前は開発中のものです。
2008/12/11(木) 21:49:08ID:jrEtBQbk0189名前は開発中のものです。
2008/12/11(木) 21:56:55ID:1D8jgOIGん?
タイマーの処理が加わってないからよくわからん
もっと深く
>>188
デバックに便利
配列のアクセス違反とは一発でわかる
■ このスレッドは過去ログ倉庫に格納されています