シューティングゲーム製作技術総合 17機目
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2008/11/27(木) 10:18:19ID:bBI1A+d5それは「シューティングゲーム製作」・・・。
このスレでは、そんなシューティングゲームの製作技術や技術の検証、成功談
失敗談笑い話、難易度の設定方法論、多弾の是非などについて語り合いましょう。
もちろんBulletMLなどで弾幕を作成してみたり、自分の作ったシューティングを
晒してみたり、プロジェクトをはじめてみるなどもOK!
ただし、シューティングの未来とか既存のゲームの話題などは、関連する他の
スレでやってくれ。
過去スレ,関連スレは >>2-3で。
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
デバックに便利
配列のアクセス違反とは一発でわかる
0190名前は開発中のものです。
2008/12/11(木) 21:57:51ID:1D8jgOIGとかいて
angle[-30];
とかアクセスしてたのよ
お分かりうふん
0191名前は開発中のものです。
2008/12/11(木) 22:08:42ID:ZMWk7FR20192名前は開発中のものです。
2008/12/11(木) 22:12:17ID:1D8jgOIGそんなことを言いにくる
アナタの神経を疑う
0193名前は開発中のものです。
2008/12/11(木) 22:20:10ID:PzlRgt6s0194名前は開発中のものです。
2008/12/11(木) 22:24:20ID:ReLxUK+G0195名前は開発中のものです。
2008/12/11(木) 22:36:56ID:IWquCMNPフロー制御の条件分岐に例外機構を使うのはお行儀悪い子だよね
「こんなゲームも一発クリアできないプレイヤーは想定外」
ということで例外機構を使ってみたんだ
同人活動するときは何にも考えずにゲラゲラ笑いながら遊んで作ってるんだ。しかたないね
ID:1D8jgOIGが怖いです。病院が逃げるそうなので僕も逃げます。バイバイ
0196名前は開発中のものです。
2008/12/11(木) 22:39:55ID:1D8jgOIG小学生^q^
幼稚園児
オモロー
0197名前は開発中のものです。
2008/12/11(木) 22:46:11ID:1D8jgOIGやったことがない
理解できない
→ キチガイ
R O M さ せ た 結 果 が こ れ だ よ ! ! !
0198名前は開発中のものです。
2008/12/11(木) 22:49:09ID:1D8jgOIG「マジキチ」
で埋め尽くされます
貫太郎飴だなおまえらってw
きんもー
0199名前は開発中のものです。
2008/12/11(木) 23:05:03ID:qUtH+lGrあ釣
0200名前は開発中のものです。
2008/12/11(木) 23:06:50ID:PzlRgt6s0201名前は開発中のものです。
2008/12/11(木) 23:07:30ID:qUtH+lGr0202名前は開発中のものです。
2008/12/11(木) 23:08:20ID:Tl9RQtTK気がついたらテトリスを作ろうとしていた。
これはチャチななんとかうんたらかんたら
0203名前は開発中のものです。
2008/12/11(木) 23:32:02ID:66P3Ue94javaで書くと
まず
public interface messListener{
public void onMessage(ハンドル);
}で、
public abstract class dialog imprements messListener{
}こんな感じで規定クラスdialogを定義。
次にタイトル画面の実装。
public class title extends dialog{
public void onMessage(ハンドル){
タイトル画面のハンドル処理;
}}次にゲーム画面の実装。
public class game extends dialog{
public void onMessage(ハンドル){
ゲーム画面のハンドル処理;
}}
で、プログラムはこんな感じ
public class prog implements ハンドルリスナー{
private static messageListener 最上位ダイアログ;
protected void onウィンドウメッセージ(メッセージ){
最上位ダイアログ.onMessage(メッセージ);}
}
0204名前は開発中のものです。
2008/12/11(木) 23:45:53ID:66P3Ue94画面をせんいするために、専用のコントローラーを作成する。
public interface switchCon{
public void gamestart();
public void gameover();
}
で、このコントローラーをさっきの に反映させて、ダイアログクラスはswitchConを持たせるようにする。
public abstract class dialog{
protected switchCon parent;
public dialog(switchCon){
parent=switchCon;
}}で、親は
public class prog implements messListener,switchCon{
private dialog title=new title(this);
private dialog game=new game(this);
public void gamestart(){
this.最上位ダイアログ=game;
}
public void gameover(){
this.最上位ダイアログ=title;
}}
こんな感じでswitch文を消せるぞ。
0205名前は開発中のものです。
2008/12/12(金) 00:05:33ID:QbHMYd890206名前は開発中のものです。
2008/12/12(金) 00:22:38ID:VZzcTBSK0207名前は開発中のものです。
2008/12/12(金) 00:47:19ID:Clw3+x9Uyieldさいこー
0208名前は開発中のものです。
2008/12/12(金) 07:35:46ID:WDwvXEG9テンプレートメソッドでジャネレータプログラミングして
ファクトリーパターンで大量生産バグも大量wwwwwwww
プロトタイプでいくらでの客ごまかせるし
デコレータで後からいくらでも追加可能なオブジェクト大量
上司に見られそうなところはストラテジーでワケワカメにして
ソースを提出したら
「君はシングルトンパターンだね」って言われたwwwwwww
0209名前は開発中のものです。
2008/12/12(金) 07:39:51ID:WDwvXEG9うんこもれちゃうぅぅぅぅぅ
0210名前は開発中のものです。
2008/12/12(金) 08:29:54ID:TDR4iWlC0211名前は開発中のものです。
2008/12/12(金) 08:59:45ID:7Vhx53Ep0212名前は開発中のものです。
2008/12/12(金) 10:01:07ID:KS0mry8G0213名前は開発中のものです。
2008/12/12(金) 11:51:40ID:jEMz4U5E今日びシューティングなんておっさんしか作ってないのかと思ったが
10代20代のがきんちょもつくってんのかね
0214名前は開発中のものです。
2008/12/12(金) 13:38:31ID:9YG19P1/0215名前は開発中のものです。
2008/12/13(土) 06:42:10ID:/PbeHoQk0216名前は開発中のものです。
2008/12/13(土) 12:14:21ID:kDyXwhQ10217名前は開発中のものです。
2008/12/13(土) 14:52:20ID:/PbeHoQkHuman->Run();
Human->Run();
Human->Run();
Human->Run();
Human->Run();
Human->Run();
Human->Run();
Human->Run();
Human->Run();
Human->Run();
Human->Run();
Human->Run();
Human->Run();
Human->Run();
Human->Run();
Human->Runaway();
0218名前は開発中のものです。
2008/12/13(土) 15:50:33ID:/PbeHoQk自称プログラマの揚げ足取り野郎だった
ちょ〜っと辛口コメントしただけで消えやがった
士ね
0219名前は開発中のものです。
2008/12/13(土) 16:08:01ID:DkCmDL9z0220名前は開発中のものです。
2008/12/13(土) 16:47:13ID:/PbeHoQkhttp://jun.2chan.net:81/b/src/1229154418067.jpg
0221名前は開発中のものです。
2008/12/13(土) 17:51:58ID:nI3aVzuF0222名前は開発中のものです。
2008/12/13(土) 17:57:14ID:2kHwy9mM何の話だ
0223名前は開発中のものです。
2008/12/13(土) 18:40:29ID:bE3YPBnE0224名前は開発中のものです。
2008/12/14(日) 16:47:21ID:nnJ/0obaすんごい作りかけだが、ちょっと晒してみます。
http://www.csync.net/service/file/view.cgi?id=1229240355 (解凍:starman)
0225名前は開発中のものです。
2008/12/14(日) 19:08:12ID:zWg8gBHj0226名前は開発中のものです。
2008/12/15(月) 00:56:14ID:nHX6b6vV弾幕を描画するときって基本的にどうやるべき?
おいらの場合はbulletクラスにdrawableインターフェイスくっつけてるけど、これって本来正しくないよな?
一般的にはどうやるんだべさな。一番効率が良い方法とか教えてけれ。
■ このスレッドは過去ログ倉庫に格納されています