シューティングゲーム製作技術総合 17機目
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2008/11/27(木) 10:18:19ID:bBI1A+d5それは「シューティングゲーム製作」・・・。
このスレでは、そんなシューティングゲームの製作技術や技術の検証、成功談
失敗談笑い話、難易度の設定方法論、多弾の是非などについて語り合いましょう。
もちろんBulletMLなどで弾幕を作成してみたり、自分の作ったシューティングを
晒してみたり、プロジェクトをはじめてみるなどもOK!
ただし、シューティングの未来とか既存のゲームの話題などは、関連する他の
スレでやってくれ。
過去スレ,関連スレは >>2-3で。
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インターフェイスくっつけてるけど、これって本来正しくないよな?
一般的にはどうやるんだべさな。一番効率が良い方法とか教えてけれ。
0228名前は開発中のものです。
2008/12/15(月) 09:30:22ID:fyQ9eFTJ画像をもつオブジェクトはWindowオブジェクトに描画オブジェクトを登録して
Windowオブジェクトは定期的に登録された描画オブジェクトを全部描画してる。
0229名前は開発中のものです。
2008/12/15(月) 20:19:12ID:1MzMGffR俺も似たような方法かな。
drawableインターフェースのリストを表示優先度別に持って
順番に描画処理を実行。
ちなみに俺も弾幕かどうかは区別していない。
0230名前は開発中のものです。
2008/12/16(火) 06:57:54ID:THHYYLqB同じ画像はまとめて描画するのが基本だから
もうやってるならそれでいいが
0231名前は開発中のものです。
2008/12/16(火) 21:36:45ID:xxIGjXbeでも、実際のところコスト的にはどうなんだろう。
Z軸をソートすることで表示されなくなるスプライトは描画しないようにしようって話だよな?
でも、そのためにNxとか計算してたら確実に赤字のような。
何fpsごとに、とかやっても意味のない処理だし。
0232名前は開発中のものです。
2008/12/16(火) 23:29:56ID:aSVdIEfv矢印キーを押すとブラウザのスクロールバーが動いちゃうぜ。
うちのノートパソコンなら問題なく60で動いた。
0233名前は開発中のものです。
2008/12/16(火) 23:52:42ID:aSVdIEfvみんなソートとか速度とか考えるよなー
うちはどうやって動作処理を記述すれば上手くいくのかさっぱり過ぎて結局強引なコードを書くんだよな。
最近接に対しての誘導とか、インスタンスのリストが必要だから管理クラスと相互参照にしちゃうし、
プレイヤーの情報表示とか、そのためのインスタンスを作ってプレイヤーのインスタンスを保持させてるし、
なーんか後で修正しようがない感じになってしまう。
本とここら辺の上手い管理方法ってないのかね?
>>231
半透明使うとZソートしないと変になっちゃうぜ
0234名前は開発中のものです。
2008/12/17(水) 01:24:40ID:0Pd0RxhVキャッシュのヒット率を上げましょうって意味でしょ。
と、2D前提の俺は思った。
0235名前は開発中のものです。
2008/12/17(水) 20:44:43ID:Yu9nmAqi> 60fpsでソートw
> でも、実際のところコスト的にはどうなんだろう。
wとかどうなんだろうもへったくれも何も
サクっと実験すればすぐ結論は出ると思うんだけど
なんでやんないんだろう。HSPerな俺でも変だと思う
描画するものをrand()とかで適当にシャッフルして
つまりマテリアルの順番をバラバラにして
つまりテクスチャもレンダリングステートもシェーダも何もかもバラバラにして
描画するだけ。ね、簡単でしょ
> Z軸をソートすることで表示されなくなるスプライトは描画しないようにしようって話だよな?
>>230はそんなこと書いてないと思うんだよね
0236名前は開発中のものです。
2008/12/17(水) 21:13:03ID:Kx3CWuJW0237名前は開発中のものです。
2008/12/17(水) 21:39:24ID:Yu9nmAqi0238名前は開発中のものです。
2008/12/17(水) 21:41:47ID:Yu9nmAqiこれ順番をバラバラにするってことね。ステート切り替えしまくった場合と
ある程度まとめた場合の比較をすればマテリアルソートすることの
意味が理解できると思うの
0239名前は開発中のものです。
2008/12/17(水) 22:37:27ID:iw2fEQZzロクにベンチマークテストもしないで根拠レスなことグダグダ言う奴っているよな
先入観だけで意味の無い最適化したり逆に必要なところで何もしなかったり
0240名前は開発中のものです。
2008/12/17(水) 23:05:17ID:Z0+SOnp7俺の事だな。
0241名前は開発中のものです。
2008/12/17(水) 23:26:50ID:jSJuJ/S7YUTORI最下層シミュレータにかけたところ以下のような出力結果が出たぜー( ・∀ ・)♪
「なんでやんないんだろう」
↓
[YUTORI最下層変換]
↓
「なんでソートしないんだろう」
「なんで実験しないんだろう」にはならないらしいぜ。YUTORI最下層ってすごいだろ。配慮しろよ
0242名前は開発中のものです。
2008/12/17(水) 23:32:50ID:Kx3CWuJW0243名前は開発中のものです。
2008/12/17(水) 23:38:16ID:jSJuJ/S7簡易にエミュレートするには有効だと思うよ
0244名前は開発中のものです。
2008/12/17(水) 23:42:27ID:Yu9nmAqi0245名前は開発中のものです。
2008/12/17(水) 23:43:48ID:Kx3CWuJWていうかSTGで描画するのにソートって意味あるのか?
0246名前は開発中のものです。
2008/12/17(水) 23:51:53ID:j5po2Z2/0247名前は開発中のものです。
2008/12/17(水) 23:52:27ID:IrN9kYXf0248名前は開発中のものです。
2008/12/18(木) 00:03:27ID:ngcbnL8q今日も彼は元気ってことだ。よかったなお前ら
0249名前は開発中のものです。
2008/12/18(木) 05:57:52ID:cp3Q3c0h0250名前は開発中のものです。
2008/12/18(木) 05:58:30ID:cp3Q3c0h0251名前は開発中のものです。
2008/12/18(木) 06:26:04ID:3f8yaJHa0252名前は開発中のものです。
2008/12/18(木) 13:02:45ID:RBRbpCNL0253名前は開発中のものです。
2008/12/18(木) 16:03:34ID:jTA930xc大人って汚いよなーっておもた
0254名前は開発中のものです。
2008/12/18(木) 16:15:20ID:6J6Zh9g60255名前は開発中のものです。
2008/12/18(木) 21:45:07ID:aoTycjO5もうちょっと勉強しようぜ
0256名前は開発中のものです。
2008/12/18(木) 22:05:15ID:N/4dA9YHシステム弄りに熱を上げるよりゲームに精を出そうぜ
0257名前は開発中のものです。
2008/12/19(金) 00:11:23ID:1hgxtZAXみんなもうちょっと玉葱の勉強しようぜ!
ハードウェア⇔デバイスドライバ⇔ダイレクトサンディー⇔アプリ (だいたいあってる)
GPUを隠蔽したインターフェース相手に直叩きって言えるなら
僕だって毎晩E3Dを直叩きしてるんだからねってGDAlgorithms-listで叫んでいいはず
哂われたら>>255の所為
0258名前は開発中のものです。
2008/12/19(金) 00:15:14ID:nHSI00R2ハードに近付けば近付くほど、その傾向が高くなる。
0259名前は開発中のものです。
2008/12/19(金) 07:59:20ID:H3IwsSUC0260名前は開発中のものです。
2008/12/19(金) 10:39:32ID:5kd3ludm0261名前は開発中のものです。
2008/12/20(土) 12:41:00ID:L1HxTdft■ このスレッドは過去ログ倉庫に格納されています