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

【初心者】スレを立てる前にココで質問を【Part17】

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2008/05/11(日) 03:14:48ID:lWW0Pcx0
疑問に思うことがあれば、スレを立てずに、まずはココで質問。
スレッドを立てる前にはローカルルールを読みましょう。
http://pc8.2ch.net/gamedev/

>>980 を踏んだ人は次スレ立てをお願いします。
【アップローダ・避難所・Wiki】
ゲーム製作技術板公式Wiki
http://gamdev.org/w/

ゲーム製作技術板公式アップローダ
http://gamdev.org/up/

ゲーム製作技術板公式掲示板避難所
http://bbs.gamdev.org/gamedev/

ゲーム製作技術板予備
http://yy13.kakiko.com/gamdev/

アップローダー予備
http://gamdev.hp.infoseek.co.jp/

gamdev.orgが落ちるたびにあげてみるスレ
http://pc8.2ch.net/test/read.cgi/gamedev/1107022166/
0254素人2008/06/12(木) 20:56:36ID:YCgQbZ2q
Fatal: ファイル VORBISFILE_STATIC.LIB が開けません
** error 1 ** deleting Debug\spgame02.exe
Make End !! (Elapsed time 0:00.375)
ってな感じになります。・・・errorって出てますね・・・
0255名前は開発中のものです。2008/06/12(木) 21:18:00ID:gzO65s1E
>>254
それはメッセージの通りだな
リンカがVORBISFILE_STATIC.LIBを見つけられないんだ
ライブラリを置いてる場所にパスを通してないんだろ
0256名前は開発中のものです。2008/06/12(木) 23:00:22ID:xs8x640a
3Dゲームで、
多くの物体同士の当たり判定(1対1ではなく、多対多の当たり判定)ってどうするんですか?
全ての組み合わせでやると物凄い計算量になってしまいそうです。
999+998+987+986...といった具合に。当たり判定にはバウンディングボックスを使います。
0257名前は開発中のものです。2008/06/12(木) 23:54:28ID:gzO65s1E
>>256
物凄いがどの程度の話なのか知らんけど、富豪厨の俺は
数年前のモバイルノートで1000発のAABB相互作用を力任せ法でやったが
結果は余裕だった。この程度の処理量なら鼻糞だ

それっぽい総当り処理のサンプルソースは某スレに貼ったことあるが
そんなクズソース見なくてもできるだろ
0258名前は開発中のものです。2008/06/13(金) 00:29:37ID:/jwDkXsA
まあ、あとは、エリア分割なりグループ分けなり、
何らかの方法で計算量を抑えるようにすればいいってことだよな。

あと、数が多いと、ちょっと1つあたりの計算量を減らすだけで大幅に変わったりするので
厳密にやらずに適当にやる、とかも効果的だったりする。
0259名前は開発中のものです。2008/06/13(金) 04:43:05ID:O4NLI/1r
ゲームコンテストに出しなさい。
http://www.tohofuhai.com/  豆腐ゲームコンテスト
http://kirara111.sakura.ne.jp/  星屑きらら杯
http://3punge.com/ 3分ゲーコンテスト(今休止中)


何でもかんでも詰め込もうとしないで、切り捨てるとこころは切り捨てて
完成させねば。。
0260名前は開発中のものです。2008/06/13(金) 10:03:33ID:FGpNXRkP
すでにそれっぽい指摘が出てるが
星屑きららはやめといた方がいいぞ
主催がDQNてことで知れ渡ってる
詳細はノウハウ板の止めとけスレ
あるいはこの板の語るスレ辺りで
0261名前は開発中のものです。2008/06/13(金) 11:13:31ID:hIYZdXb5
つか
マルチで宣伝うぜー
0262名前は開発中のものです。2008/06/13(金) 15:01:22ID:xNnxVjQD
そうなのか。
よく分からんけど、投稿作品一覧のコメントを見て色々と酷いことだけは分かった。


神のゲームバランススレが落ちそう。誰か立てて。
0263名前は開発中のものです。2008/06/13(金) 17:21:08ID:iI+lriih
>>240
全画面スクロールさせるとズレが上から下に移動しているのが分かる。
0264名前は開発中のものです。2008/06/14(土) 08:10:31ID:Vx/ilw+o
ところで液晶の場合CRTと違って電子線の走査がないから
液晶の駆動回路が生成するVSYNC信号無視してフレッシュレート60Hzと
決め付けて高精度タイマーでタイミング取って60Hzでフレーム切り替えしても
2Dスクロールのガタツキは体感できても
上側=旧フレーム、下側=新フレーム、みたいな現象は視認できないような
気がするんだが、実際どうなの?

と、未だにトリニトロン管を使ってるマイノリティの俺

体感できなくね?思うのだが
0265名前は開発中のものです。2008/06/14(土) 08:12:18ID:Vx/ilw+o
最後の一行は消し忘れだ!
0266名前は開発中のものです。2008/06/14(土) 09:41:01ID:WEqkvEOP
warrockや、バトルフィールドみたいにFPSでコクピット視点で車運転するプログラム作りたいんですが
それ関係のオープンソースや、作り方のHow to とか載ってるサイトや本ってありますか?
0267名前は開発中のものです。2008/06/14(土) 10:17:32ID:yvWyvXql
>>264
うちのPC2台だと視認できるよ
察するところ、ビデオカードからディスプレイ端子に出力された信号自体が
「上半分と下半分で1フレーム分違う」状態なら、それがきっちり反映されるんだろう
0268名前は開発中のものです。2008/06/14(土) 19:50:19ID:nT6UYhMt
ESPお願いします
使用言語:C++ 開発環境:製品版VisualStudio2005

問題の部分は恐らくPlayer.cpp&.h Enemy.cpp&.hだと思います
Playerクラスのvoid GetDistance2Target(Enemy *e);という宣言(定義は空実装)に下記のビルドエラーが発生します
error C2061: 構文エラー : 識別子 'Enemy'
Enemyクラス(Playerクラスがフレンド)があるヘッダもインクルードしてあります
Aクラスを宣言し引数を(A *e)に変更するとエラーは発生せずその後AをEnemyに書き換えビルドをするとエラーが発生しません
ただPlayerクラスがあるヘッダを1行でも書き換えると上記のエラーが再び発生します
0269名前は開発中のものです。2008/06/14(土) 19:56:25ID:BjxsUuMK
>>268
そのヘッダファイルの上のほうに
class Enemy;
と書く
0270名前は開発中のものです。2008/06/14(土) 20:12:45ID:nT6UYhMt
>>269
ありがとうございました
簡単に解決できるような事を聞いて申し訳ないです
オブジェクト指向の概念ばかりでなくプログラムも弄って勉強するように努めます
0271名前は開発中のものです。2008/06/14(土) 21:09:31ID:uDqAdFXo
>>270
オブジェクト指向自体ももっと勉強汁
そのクラスの関係は悪手
0272名前は開発中のものです。2008/06/15(日) 12:24:09ID:EcGkhplh
>>267
レスd
そうか。つかよく考えたらビデオカードはあくまでも伝送方式(アナログRGBやDVI
インターフェースの仕様)に従って映像信号を出力(アナログRGBならHSYNC
検知する毎に画面上端ラインから順に、デジタル方式のDVI-DやHDMIも
上端ラインから順だったかな)してるんだよな。だから、例え出力装置の中で
画面切り替えが一瞬で行えようとも、CRTと違いスキャンラインの概念がなかろうとも
ケーブル経由の伝送に時間をかけていれば上側=旧フレーム、下側=旧フレーム
という現象は起きるのか
0273名前は開発中のものです。2008/06/15(日) 12:46:49ID:EcGkhplh
×下側=旧フレーム
○下側=新フレーム
0274名前は開発中のものです。2008/06/16(月) 01:42:19ID:jf5cBPIE
  ,..-──- 、
おしえて           /. : : : : : : : : : \
               /.: : : : : : : : : : : : : : ヽ    
               ,!::: : : :,-…-…-ミ: : : : :',
              {:: : : : :i '⌒'  '⌒' i: : : : :}
                 {:: : : : | ェェ  ェェ |: : : : :}
.         , 、      { : : : :|   ,.、   |:: : : :;!
        ヽ ヽ.  _ .ヾ: :: :i r‐-ニ-┐ | : : :ノ    
          }  >'´.-!、 ゞイ! ヽ 二゙ノ イゞ‐′      
          |    −!   \` ー一'´丿 \
         ノ    ,二!\   \___/   /`丶、
        /\  /    \   /~ト、   /    l \
       / 、 `ソ!      \/l::::|ハ/     l-7 _ヽ
      /\  ,へi    ⊂ニ''ー-ゝ_`ヽ、    |_厂 _゙:、
      ∧   ̄ ,ト|    >‐- ̄`    \.  | .r'´  ヽ、
     ,ヘ \_,. ' | |    丁二_     7\、|イ _/ ̄ \
     i   \   ハ       |::::|`''ー-、,_/  /\_  _/⌒ヽ
0275名前は開発中のものです。2008/06/16(月) 13:54:36ID:V29OceOR
BGMにMP3やOGG等の圧縮されたものを使用しているケースが多いですが、
実行時にデコードしているんですよね?
特にOGGはデコードが遅いと聞きますが、
だったら最初からWAVEにしないのはどういった理由なのでしょうか?
0276名前は開発中のものです。2008/06/16(月) 14:10:08ID:CWBMeGpP
waveだとサイズでかいだろ。
それにいまどきのエンコーダならoggも遅くない。
0277名前は開発中のものです。2008/06/16(月) 14:10:30ID:yolkQjtt
>だったら最初からWAVEにしないのはどういった理由なのでしょうか?
圧縮できることのメリットすべて

>特にOGGはデコードが遅いと聞きますが
実際にはMP3より少し遅いくらい。(エンコードはかなり遅い)
使うライブラリにもよるが、公式の実装でもあまり問題にならないよ。
このへんは実際にストリーミング再生させて
ゲーム中にどのくらいCPU食ってるのか数字出さないと議論にならんよ。
0278名前は開発中のものです。2008/06/16(月) 14:10:38ID:CWBMeGpP
×エンコーダ
○デコーダ
02792752008/06/16(月) 14:43:16ID:V29OceOR
>>276>>277
返信ありがとうございます。

ということは、WAVEがダメなところはメモリ消費量だけでしょうか?
メモリを気にしなければ数MBあるWAVEをBGMとしても問題ない
ということでしょうか?
デコードしない分CPU負荷も少ないですし
0280名前は開発中のものです。2008/06/16(月) 14:51:04ID:il/CiK3K
実行時のメモリより配布時のファイルサイズがでかくなる方が問題じゃない?
0281名前は開発中のものです。2008/06/16(月) 14:54:56ID:ELtfR4ND
>>279
まぁそうだけど、44kHz・16ビット・ステレオのwavで、1分≒10MBだぞ
0282名前は開発中のものです。2008/06/16(月) 15:07:51ID:S6nxqRuD
>>279
正直俺は、mp3の128位とwav44kHz・16ビットの音質の違いが解らん。
それでもwavが良いんだ!と言うこだわりが無ければ、
データは小さければ小さい程、色々良いと思うな
02832752008/06/16(月) 16:07:30ID:V29OceOR
確かにファイルサイズがすごいことになりそうです。
今時のPCならmp3やoggのストリーミングも気にならないようですし、
oggでいこうと思います。
大変参考になりました。
返信ありがとうございました。
0284名前は開発中のものです。2008/06/16(月) 16:55:24ID:uX6B7Jne
ナローバンダーは、モバイルを含めると意外にまだいるからな。俺とか。
0285名前は開発中のものです。2008/06/16(月) 16:58:18ID:uX6B7Jne
書き忘れ。

BGMとか長くなりそうなものはmp3やoggなどの圧縮ファイルを使い、
効果音のような比較的短く、かつ再生タイミングがシビアなものはwaveそのまま、なんて人もいる。

あと、ウェブでダウンロードさせるのと、コミケでCDを頒布するのとでは
状況がまた違うから、そこで分けてる人もいるようだ。
0286名前は開発中のものです。2008/06/17(火) 02:25:10ID:k5Hbpskc
ある敵にいくつかAIパターンがあって、条件で切り替わる場合、
どういう風にして実装してます?
C++という想定で

1.行動を決定するメンバ関数(update()とか)に大量のif文を突っ込んで処理

2.敵クラスは、staticな関数へのポインタをもち、指し示す関数を入れ替えることでAIを切り替える
  関数にthisポインタを渡して処理

3.敵クラスは、AIクラスへのポインタをメンバとしてもち、
  指し示すAIクラス(の継承クラス)を入れ替えることでAIを切り替える
  で、AIクラスのメンバ関数にthisポインタを渡して処理

1が簡単だけど、2、3は同じAIを複数の敵クラスで共有できるって言う利点がありますよね
0287名前は開発中のものです。2008/06/17(火) 02:48:32ID:sJZvekW7
パターンデザイン的には3だよね。
いわゆるストラテジパターンというやつ。

あとはメンバ関数へのポインタを使って入れ替えるとかね。

class Hoge {
private:
  // メンバ関数型を定義
  typedef void (Hoge::*ACTION_PTR)(void);
  // メンバ関数へのポインタを格納する変数
  ACTION_PTR action;

public:
  // 行動のセット
  void action1(void) {}
  void action2(void) {}
  void action3(void) {}

  // コンストラクタで初期値を設定
  Hoge() { action = &Hoge::action1; }
  // 同様の構文でメンバ関数を変更可能

  //ポインタを通してメンバ関数起動
  void update(void) { (this->*action)(); }
};
0288名前は開発中のものです。2008/06/17(火) 09:37:29ID:XINqrfBX
ストラテジーパターンだな
0289名前は開発中のものです。2008/06/17(火) 15:08:42ID:sS8dV5wo
1が簡単とはおもえんのだがw

>>287
C++はよくわからんが、行動のセットってクラス外にださんの?
なんか見通しが悪い気がするんだが
0290名前は開発中のものです。2008/06/17(火) 23:15:33ID:sJZvekW7
>>289
そうかな?
データと行動セットをひとまとめにして隠蔽しちゃうことにも、
それなりにメリットあると思うんだけどね。
一回作っちゃえば後から考えなくても良い。

でもまぁ、「ふるまい」クラスを作れば、他のクラスにも適用できるというメリットはあるね。
個人的にはオープンすぎるのは逆に不整合を起こしがちだから苦手だけれども。
0291名前は開発中のものです。2008/06/18(水) 21:31:16ID:WrwNxCgo
良し悪しは別として、ifが並ぶのは個人的にイヤだw
0292名前は開発中のものです。2008/06/18(水) 23:30:26ID:kSLx4lcS
この板初めてな俺が来ましたよ

この板の人たちはPSPとかDSとかwiiとかのすごいかんじのゲーム作ってるの?
それともケータイのアプリみたいな簡単な作りっぽいゲーム作ってるの?
パソコンでやるゲームを作ってるの?
ネットしてたら、なんか餌とかあげたらなついて誰が一番なついてるみたいなランキング付きのペット育成みたいなんあるじゃん
あんなん勉強したら一人でつくれる?
お金かかる?
作ってみたい
0293名前は開発中のものです。2008/06/18(水) 23:32:07ID:O5zucpEm
礼儀知らずに答える義務はない
0294名前は開発中のものです。2008/06/18(水) 23:53:36ID:Q1s+fteM
>>292
紙ですごろく作ったっていう話は聞かないな。
ほとんどがPCで動作するものを前提に話を進めてる気がする。
0295名前は開発中のものです。2008/06/19(木) 00:05:06ID:g8qpIga7
>>292
PSPとかコンシューマハード向けのゲーム開発は、
ゲームカテゴリーの裏技・改造板の方が詳しい
ゲーム製作技術板は基本的にPC向け

内容はファミコンみたいなミニゲームもあるし、
2000円で販売して飛ぶように売れるゲームを作る人もいる

開発環境はタダで手に入る(Visual Studio Expressでググれ)し、
情報はネット上に転がっているので、金はかからない
出来れば専門の本を買うか、図書館で手に入れて読んだほうが良いけど

ゲームを一人で作るのは限界があるよ
プログラムは勉強するとしても、絵や音楽はどうする気だ
テキストベースのゲームなんて豪快なことしたら誉めてやるが
0296名前は開発中のものです。2008/06/19(木) 00:17:48ID:VxrSErVz
みんなありがとう
ちょっと楽しそうな板だから勉強してみる
絵くらいはなんとか書くよ 音は鳴らなくてもいいやw
暇潰し程度のもんをネットにあげてみたいな
0297名前は開発中のものです。2008/06/19(木) 12:39:21ID:8LUlnvdl
ifがネストするのは嫌よね
0298名前は開発中のものです。2008/06/19(木) 21:41:06ID:/TWRozlQ
while、forなら2回まで、ifなら3回くらいまでなら許せる。switchは1回かな。
0299名前は開発中のものです。2008/06/20(金) 17:43:56ID:HYR3VEF9
こういうのは特に嫌だな、たまにやっちゃうけど
if(Aの取得){
 if(Bの取得){
  if(Cの取得){
   if(Dの取得){
    if(Eの取得){
     処理
     Eの開放
    }
    Dの開放
   }
   Cの開放
  }
  Bの開放
 }
 Aの開放
}
0300名前は開発中のものです。2008/06/20(金) 18:56:25ID:smksGIRq
それは単に愚かなだけでは…。
0301名前は開発中のものです。2008/06/20(金) 22:12:26ID:0jFV+g1O
思いついたアイデアを試験的に実装するときに書くコードだな
0302名前は開発中のものです。2008/06/22(日) 00:46:33ID:Nh8dlMcG
すいません、質問です。

勉強の為、C++で2Dのシューティングゲームを作っています。
自機や敵などのアニメーションを作ってみたいのですが、
何か一般的な手法とかありますでしょうか?
0303名前は開発中のものです。2008/06/22(日) 00:54:26ID:i0gJBqIP
楽な手は無い。
爆発するアニメのコマを一つずつ用意して適当な時間間隔ですり替えていく。
ちょっとプログラミング技術を要する。
03043022008/06/22(日) 02:26:24ID:Nh8dlMcG
>>303さん
レスありがとうございます。

その手法はなんとなくイメージできたので試してみたいと思います。
実際にプログラムで処理するとしたら、
アニメのコマの範囲や、切り替えの間隔をを管理するようなテーブルみたいなのが必要そうですね。

とりあえず現状は試しでソースにテーブルを直接書いてみる事にしますが、
キャラクタやらアニメーションのパターンやらが増えてきたら、
ソースに直接手書きで作成とかだと効率悪いような気がしました。

アニメーション管理に使えそうなツールとかあるのかな?
その辺も探してみようかと思います。

ありがとうございました。
0305名前は開発中のものです。2008/06/22(日) 11:08:20ID:g06tuC8K
>304
やり方なんて幾通りもあるが、その方法で別に問題ないと思う。

アニメ管理ツールみたいなのは見たことがある。
企業だと確実に有るだろうな。
0306名前は開発中のものです。2008/06/22(日) 11:33:19ID:GKAOzkXe
>>304
絵描きとプログラマが別人だとツール無しじゃやっとれんかもね。
俺は複数人での製作経験無いけど。
勉強も兼ねてるんならツール一式も自前で作ってみたらどうだろう。
0307名前は開発中のものです。2008/06/22(日) 18:39:39ID:8b6P9lU/
簡単なシューティングゲームを作りました。
で、いままですっかり忘れていたんですが、メニュー画面ってどうやって実現しましょう

void main(){
  /*画面とかデバイスの初期化とか*/
  int select;
  while(true){
    select = menu(); //メニュー画面
    switch(select){
      ....
    }
  }
}

で、selectに応じてゲームを始めたり、オプション画面を出したり?
0308名前は開発中のものです。2008/06/22(日) 19:01:36ID:PrpfkLMi
ほかの状態遷移はどうやってんの?
それと同じで良いと思うんだが・・・。
0309名前は開発中のものです。2008/06/22(日) 19:11:44ID:8b6P9lU/
やべぇ、キャラセレ画面も考えてなかった

>>308
ゲームそのものはゲームクラスをインスタンス化して、
そのメソッドをmain関数内のループから呼び出してます
0310名前は開発中のものです。2008/06/22(日) 19:20:28ID:PrpfkLMi
もしかして状態遷移考えて作ってなかったってこと?
0311名前は開発中のものです。2008/06/22(日) 19:22:40ID:g06tuC8K
正直、>307で何がしたいのか見えてこないんだが。

while(1)
{
  if    (フラグ==タイトル   ) タイトル画面( );
  else if (フラグ==キャラセレ ) キャラセレ画面( );
  else if (フラグ==ゲーム本編) ゲーム本編( );
}

これでいいんじゃない?
0312名前は開発中のものです。2008/06/22(日) 20:25:34ID:iT3uPeFi
関数のポインタ使うか
"デザインパターン"でググるといいかも
0313名前は開発中のものです。2008/06/23(月) 00:11:11ID:T4uoidjV
class Scene{
void draw()
void move();
}

class Title : public Scene{
...いろいろ
}

class CharaSelect : public Scene{
...いろいろ
}

こんな感じで
currScene = new Title():
シーンごとに作るのがswitch使わなくてスマートになるんじゃないの?
0314名前は開発中のものです。2008/06/23(月) 00:45:50ID:mDDnsWDd
>>313
それでどうやってswitch使わなくて済むかよくわからないのですが
while(1){
switch(scene){
case TITLE: currScene = new Title(); break;
case CHARA_SELECT: currScene = new CharaSelect(); break;
....
}
currScene->move();
currScene->draw();
}
自部のがちょうどこんな感じになってるんですがいい方法あるんですかね?
0315名前は開発中のものです。2008/06/23(月) 00:59:18ID:fMSgUVEh
Scene* move()

p=move()
if(p!=NULL){
  delete currScene;
  currScene=p;
}


我ながら汚すぎて噴いた
0316名前は開発中のものです。2008/06/23(月) 01:03:30ID:jZlgp0tw
>>314
状態が多くないならそれでいいと思うけど
自分はこんな感じ

class Scene{
virtual void draw() = 0;
virtual void move() = 0;
}
enum SCENE{ TITLE, SELECT, SCENEMAX };
SCENE now_int;
*Scene now;
*Scene scene[SCENEMAX] = { &title, &select};

while(1){
now = scene[now_int];
now->move();
now->draw();
}
0317名前は開発中のものです。2008/06/23(月) 01:07:53ID:fMSgUVEh
now_intは誰が書き換えるん?
0318名前は開発中のものです。2008/06/23(月) 01:15:36ID:T4uoidjV
こんなんはどう?

class Scene{
virtual void draw() = 0;
virtual void move() = 0;
virtual Scene sceneChange() = 0;
}

Scene * next;
if( ( next = currScene->sceneChange() ) != NULL )
{
  currScene = next;
}

だめかw
0319名前は開発中のものです。2008/06/23(月) 01:25:34ID:jZlgp0tw
>>317
titleとかの状態のクラスが
0320名前は開発中のものです。2008/06/23(月) 01:32:04ID:uo+1ccfk
適当に書いてみた

int SceneManager::receiveMessage(Message* pMsg, int param1, int param2, int param3, int param4)
{
  switch (pMsg->getType()) {
    case MSG_CHANGESCENE:
      assert(SCENE_ID_MIN <= param1 && param1 <= SCENE_ID_MAX);

      m_pNextScene = m_allScenes[param1];
      break;
  }

  return SUCCESS;
}

int SceneManager::execScene()
{
  if (m_pNextScene != NULL) {
    Scene* current = m_pCurrentScene;
    Scene* next = m_pNextScene;

    current->onExit();
    next->onEnter();

    m_pCurrentScene = next;
    m_pNextScene = NULL;
  }

  return m_pCurrentScene->execute(this);
}
0321名前は開発中のものです。2008/06/23(月) 09:12:21ID:cIfICiuE
// あのね、僕の場合はね、シーンを総括するシナリオクラス作ったの。
// STLのlist(線形リスト)でSceneを管理するんだよ。
// (案外、スタックでもいいような気がするなー)
// (*1)Scenario::start()でシナリオが開始されて、
// (*2)登録されたScene::start()を呼び出すの。
// あ、Scene::start()っていうのは、そのシーンを開始するメソッドね。
// それでね、Sceneの中で次のシーンが決まったら、
// (*3)Scenario::addScene()で、次のシーンを登録して、
// 今実行中のシーンはただちに終わればいいの。
// (*4)登録されたシーンが全部無くなったらゲーム終了ね。

// ところで、これだけの長文読むより、プログラムを読む方が簡単に思えてくるだろ

list<Scene*> Scenario::scenelist;

void Scenario::start() // (*1)
{
while ( scenelist.size() > 0 ) { // (*4)
Scene* s = scenelist.front();
(*s)->start(this); // (*2)

scenelist.pop_front();
}
}

void Scenario::addScene(Scene* scene) // (*3)
{
scenelist.push_back(scene);
}
0322名前は開発中のものです。2008/06/23(月) 22:43:25ID:SqRC+pBQ
個人的にはswitchやif文羅列が健全だと思うよ

そういえば関数ポインタや多態は最適化が効かないから
速度的に不利って話どうなの?
0323名前は開発中のものです。2008/06/23(月) 23:23:03ID:0j4G1ygb
最適化する必要無いほど早い。
0324名前は開発中のものです。2008/06/23(月) 23:36:23ID:/qtuGijz
>>個人的にはswitchやif文羅列が健全だと思うよ
いわれてきづいたけど、小規模のシーン管理だとswitchとかifのほうがいいとおもた
RPGぐらい画面遷移が複雑だとクラスのほうがいいかもしれんけど

>>速度的に不利って話どうなの?
とりあえずクラス自体がわりと重いっぽい、いろいろ調べたら早くする方法が書いてあって
それ全部使えば矩形の当たり判定なら数千個までいけると思う
0325名前は開発中のものです。2008/06/24(火) 19:19:07ID:YG9wxXVw
関数ポインタ利用して関数並べて実行させるのとswitch/caseって分岐が少ないと殆ど速度に差が無いみたいだな
0326名前は開発中のものです。2008/06/24(火) 20:37:20ID:qocbnAno
今時関数ポインタ程度で重いって(笑)
0327名前は開発中のものです。2008/06/24(火) 23:07:53ID:nk5lzdPA
それを言い出すと、いまどき配列走査くらいで、
いまどきnewくらいで……と富豪厨化する
ていうか、それが俺
0328名前は開発中のものです。2008/06/24(火) 23:12:47ID:vNDV7jMM
javaのスレッドをnewするのはコスト高いぞ。
0329名前は開発中のものです。2008/06/25(水) 03:01:35ID:c0GyxKOT
どう実装されているかも分からないヴァーチャルマシンのコストを決めつけてかかる328は、
たぶん学歴が低い。
0330名前は開発中のものです。2008/06/25(水) 03:23:39ID:LrDWXSL9
学歴という言葉を出さないでくれ。荒れる。
0331名前は開発中のものです。2008/06/25(水) 20:09:54ID:/Pf8ls+r
>>329>>328 VMがどう実装されてるか知らないと何故言い切れるんだろう?
0332名前は開発中のものです。2008/06/25(水) 21:18:20ID:4PLXCLdL
どのVMを利用するか未定であれば、どんな実装なのかも未定だ。
ただ、VMレベルでコストが高いと言っている可能性もあるけどな。
0333名前は開発中のものです。2008/06/25(水) 21:58:19ID:zW+uiCng
マルチスレッドにするとsynchronized やvolatileを使わざるを得ないから
関数や変数へのアクセスコストが全体的に割高になるという意味でなら納得。
0334素人2008/06/26(木) 00:03:25ID:FJtaI/dg
ここのみなさんってゲーム会社に入れるくらいスゴいんじゃないかって最近見てて思います。
現実はもっと厳しいものなのでしょうか?
0335名前は開発中のものです。2008/06/26(木) 00:53:43ID:J+99J/hz
ドラクエみたいにちょこちょこ仲間が着いてくるのを実装したいんですがどうすればいいんでしょう?
考えたのは、入力された上下左右を保存しておいて、一個遅らせながら次のキャラに適応って感じなんですが
うまくいかないです。どういう考え方をすればいいんでしょ?
0336名前は開発中のものです。2008/06/26(木) 00:58:21ID:7RoWXjdF
考え方はそれで問題ないと思う
実装でミスってるんじゃない?
0337名前は開発中のものです。2008/06/26(木) 01:00:06ID:J+99J/hz
ありがとうございます
そうですか、もう一遍見直してきます
0338名前は開発中のものです。2008/06/26(木) 04:03:21ID:08fIa4T9
>334
ゲーム会社であることは、おそらく全く関係が無い。
0339名前は開発中のものです。2008/06/26(木) 10:07:11ID:TBkGU+/r
>>334
実際業務中にここ来てる奴も居るだろ。
俺含め、普段コンシューマやってて趣味でwindowsプログラム
してる奴とか。
0340名前は開発中のものです。2008/06/26(木) 11:43:02ID:MvZUxeyN
>>334
すごい人は極一部で語るスレみたいなゴミがほとんど
0341名前は開発中のものです。2008/06/26(木) 14:11:44ID:LcBDfznV
本職PG(非ゲーム系)が趣味でゲーム製作ってのは多そう。
0342名前は開発中のものです。2008/06/26(木) 20:54:16ID:UkEztdRQ
ゲーム業界自体がそのゴミだよ。
0343名前は開発中のものです。2008/06/26(木) 23:52:36ID:i6T6uFP1
>335
>入力された上下左右を保存
入力じゃなく、前のキャラクターの座標の数値を入れたら?
0344名前は開発中のものです。2008/06/26(木) 23:57:28ID:ICzeg2Oh
後ろのキャラは1歩分昔の自キャラ
つまり、1手前の操作を反映してやればいいんだ

もしくは多間接でATAN使って常に前方キャラと一定距離を保つようにすればいい
0345名前は開発中のものです。2008/06/27(金) 00:01:56ID:JPbTTp2P
>>341
俺そうだよ。
三流と言うのもおこがましいほどの三流で将来が怖いけど。
会社のPCはプロキシに弾かれて2chにアクセスできないなぁ。

>>335
人によって実装方法は違うと思うけど俺の場合……
・X,Yを格納できるバッファを49個用意して適当に初期化する
・先頭キャラの座標に変化があったときのみ、以下の処理を行う
  ・バッファを1つずつスライドしてバッファ[0]に先頭キャラの座標を入れる
  ・2人目の座標をバッファ[16]と同値にする
  ・3人目の座標をバッファ[32]と同値にする
  ・4人目の座標をバッファ[48]と同値にする
0346名前は開発中のものです。2008/06/27(金) 04:58:56ID:y+uRaN6T
345みたいな実装を行うと、「キャラの並び替え」を追加したときに
拡張地獄に陥るんだよね。
さらにDQ4的な「障害物があったら避ける」メカニズムは絶望的になる。
浅謀近慮の典型例。
0347名前は開発中のものです。2008/06/28(土) 00:56:37ID:UNOxry2I
並び替えをしたらバッファも"並び替え"をするに決まってるじゃないかHAHAHA
0348名前は開発中のものです。2008/06/28(土) 02:56:38ID:uLeq9+80
FCドラクエの並び替えって瞬間移動じゃなかったか?
>>345の場合、新しく二人目になった人がバッファ16を参照すりゃいいような

>>346
そういや馬車の動きとか独特だった
0349名前は開発中のものです。2008/06/28(土) 11:23:44ID:uY+gT1X+
隊列で思い出したけど、
弱いキャラ(魔法使い系)を中央に置く隊列って、あんまり見ないよな。
0350名前は開発中のものです。2008/06/28(土) 12:52:55ID:UNOxry2I
そもそもオープンフィールド系のゲームで隊列云々をシステムに組み込まれてもあまり説得力なくね?
例えば、敵が8体いて、味方が4人(前列2人後列2人)
こういうケースですら「後列にいるから攻撃される可能性が低くなります」ってそれは違うだろう
TRPGやダンジョン系RPGのシステムを何も考えずに適用するから変なことになるんだ
0351名前は開発中のものです。2008/06/28(土) 14:20:27ID:mxHBnLLH
敵中に孤立した所を三方向から突き入れられたりした日にゃ、
よっぽどの人間でない限りは突き殺されるんでね?
そういった状況を生み出さないために、隊列には意味がある。
でもな、説明されんと隊列の意味なんて分かんね〜よな。
0352名前は開発中のものです。2008/06/28(土) 19:29:34ID:/wGNqaoZ
激しくスレ違いだけど、ちゃんと軍隊も機能しててそれでいて主人公も
旅をしているRPGってあるんだろうか?
0353名前は開発中のものです。2008/06/28(土) 19:43:05ID:5mLxNHUh
中東の片田舎で生まれて、
軍隊に入って、
クウェート行ったり、
撤退したり、
米穀人が攻めてきて、
カリブ海の法的に微妙な島の施設に長期に渡って監禁されたり?



つか板違いだからw
■ このスレッドは過去ログ倉庫に格納されています