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

C/C++ゲーム製作総合スレッド Part5

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2014/01/16(木) 00:00:31.27ID:w6WW3hAo
ゲーム製作におけるC/C++全般に関するスレです。

元スレ
DXライブラリ 総合スレッド その17
http://toro.2ch.net/test/read.cgi/gamedev/1383795645/

前スレ
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
C/C++ゲーム製作総合スレッド Part2
http://toro.2ch.net/test/read.cgi/gamedev/1351015269/
C/C++ゲーム製作総合スレッド Part3
http://toro.2ch.net/test/read.cgi/gamedev/1357899040/
C/C++ゲーム製作総合スレッド Part4
http://toro.2ch.net/test/read.cgi/gamedev/1376262450/
0561名前は開発中のものです。2014/04/25(金) 06:16:12.48ID:GoYRAt3T
数十のクラスが複雑に入り組むプログラムなんて作れない(能力が無い)からでは?と予想
0562名前は開発中のものです。2014/04/25(金) 07:46:12.69ID:XsfFQEHl
>>561
いいウィットだな
0563名前は開発中のものです。2014/04/25(金) 09:30:36.62ID:jXAfeA6F
>>557
こういうのどうやって実装すんの?説明してるようなサイトがあったら教えてちょーだい
0564名前は開発中のものです。2014/04/25(金) 09:42:20.41ID:XsfFQEHl
Stateパターンによる階層付きシーン遷移の方法は、確かセガ本あたりに載ってたような記憶がある
0565名前は開発中のものです。2014/04/25(金) 09:54:22.08ID:IVfFtFPz
ゲームプログラマになる前に覚えておきたい技術
ひらしょー本、セガ本
http://www.shuwasystem.co.jp/products/7980html/2118.html
http://www.shuwasystem.co.jp/gpro-sp/index.html
0566名前は開発中のものです。2014/04/25(金) 10:04:41.29ID:jXAfeA6F
昨日ちょうどそのセガ本の話が有名な同人プログラマのネット配信で出てたわ
「その本はプログラマになる前じゃなくてなった後に読む本だ」って言ってた
0567名前は開発中のものです。2014/04/25(金) 10:18:56.59ID:cWxmDdU5
その本って学生レベルでも中の下くらいだろ
0568名前は開発中のものです。2014/04/25(金) 12:50:45.98ID:bu2wQqL4
>>561
というか、そもそもデバッガでソース追えないという話に帰結しそうなのだが。
関数の中とかに「飛ぶ」訳ですし。

今後の事もあるから、「飛ぶ」事に慣れるのが肝要だと思いますけどね。
0569名前は開発中のものです。2014/04/25(金) 15:11:16.15ID:uQbX0MMa
セガ本で難しかったらgemsとか見たらもう発狂だな
0570名前は開発中のものです。2014/04/25(金) 15:22:16.96ID:5DdHErYn
14歳からはじめるC言語わくわくゲームプログラミング教室
著者:大槻有一郎
http://www.rutles.net/products/detail.php?product_id=392
かなりの素人向け、図書館にあるかもしれない。

内容はこれ、http://www.rutles.net/download/217/
0571名前は開発中のものです。2014/04/25(金) 16:40:46.26ID:jXAfeA6F
ゲームプログラマの新人でも面接時の作品提出では皆C+DirectX直打ちの人ばかりだようんたらかんたらという
流れの中で言ってたから、難しいというか本に頼らずともネットで情報集めてとにかく作れって感じだった。

その人自体もオブジェクト指向とか意味わからんでゲーム作ってるとか言ってるけど、
同人だけじゃなくコンシューマ機のゲームプログラムを1人で担ってるような人だし、
要は本見て文法覚えるより、汚くていいからとりあえず作品完成させろってことかと。
0572名前は開発中のものです。2014/04/25(金) 17:46:46.24ID:WhIg+aCP
>>571
とりあえず完成させろってのはその通りだな
ここでウンチク垂れ流してても自分の作品は完成させたことないってやつは多そう



そう、私の事ですorz
0573名前は開発中のものです。2014/04/25(金) 18:37:51.58ID:kjeLMb9X
directx直打ちじゃないけど大手新卒通ったわ
0574名前は開発中のものです。2014/04/26(土) 01:38:49.39ID:jf1SN+DQ
ゲームコーディングコンプリートって本にはGameLogicってクラスでゲームの状態を切り換えている
ソースコードはネット上にあがってるぞ
0575名前は開発中のものです。2014/04/26(土) 13:10:08.96ID:2tKTewnx
ぱっと見た感じ、キューかなんかで格納してる?
0576名前は開発中のものです。2014/04/26(土) 19:33:37.45ID:x5oOyDOe
スパロボみたいなゲームだと
・フィールドシーン
・戦闘シーン
・アドベンチャーシーン
・シナリオ準備シーン
みたいな感じに大別されるよね

シーンはキー入力の挙動も変わるから
それも内包しないといけないよね
0577名前は開発中のものです。2014/04/26(土) 19:37:39.56ID:IEmpvB3E
メニューとかの後の分岐はどうやってるの?
0578名前は開発中のものです。2014/04/26(土) 19:58:38.34ID:3cite/BR
http://i.imgur.com/C0gfdIL.jpg
これがPC98ロードランナーのチャートで、
イニシャライズ以下がゲームループになってる。
0579名前は開発中のものです。2014/04/26(土) 20:05:42.07ID:2tKTewnx
デモ読み込みはゲームループ外で、実際のデモ画面はループ内なんだな、面白い。
俺が思ってるデモ画面と別のものかもしれんけど。

>>576
当たり前っちゃ当たり前だけど、
フレームワークなりハードウェアなりから、キー情報を取り出したり使いやすいよう加工するのは共通部分で、
右キーで1マス動かすとか、そういう部分は各シーンのロジックで処理するのが良いんじゃない?

>>577
メニューって、「じゅもん」→「メラ」→「スライムA」 みたいな
シーン中に行われる多層型のメニューのこと?
0580名前は開発中のものです。2014/04/26(土) 21:29:25.57ID:5LBrFF8V
ポップアップメニュー出しながらもカメラや移動とか一部の操作はできるようにするとかだと
優先度とかそのキーで処理済みかの情報が欲しいから
シーンや入力が欲しいオブジェクトが欲しいキーを入力マネージャに登録しておいて
優先度の高い特殊なキーの組み合わせだけ先に処理して
あとは上位に位置するオブジェクトからキーを拾って処理して未処理は下に投げるとか
WindowsのWM_CHARを参考にしたキー処理終わってから各Updateみたいな事になってるけど
重複する事もあるキー入力の切り分けをシンプルに実装する方法ないかな
0581名前は開発中のものです。2014/04/26(土) 22:11:57.41ID:x5oOyDOe
キー処理用スレッドを作ってGetAsyncKeyStateを回すとか
0582名前は開発中のものです。2014/04/27(日) 03:54:19.08ID:WYXfeo+B
よく分からん質問だけどUIコンポーネントの階層でやれば?

class Parent : UI {
UI* child;

void update(Event* e){
// 特殊キー
bool isCopy = Key::isHold(Key::LCtrl) && Key::isHold(Key::C);

// 子コンポーネント先
child->update(e);

// 子コンポーネントでキー入力が確定した
if(e->isKeyEvent == false) return;

// このコンポーネントのキー入力
bool isThis = Key::is ... ;
}
};

class Child : UI {};
0583名前は開発中のものです。2014/04/27(日) 10:28:25.38ID:C+qpjQzl
>>580
ポップアップメニューはモーダルなインタフェースだから
ある1つのオブジェクト(または選択されたオブジェクト群)を集中して操作しているのに
関係がないオブジェクトを操作ができるのはおかしくない?
0584名前は開発中のものです。2014/04/27(日) 10:46:42.01ID:w1gNzEbH
恐らくだけど、ここでのポップアップメニューは一般的なGUI部品のソレではなくて、
fpsでよく利用されてるポップアップする選択形式のウィンドウの事でね。
wasdで移動しながらメニュー表示キーを押す事でソレが表示され、マウスカーソルでメニュー選択できる、みたいな。

とりあえず>>582で問題ないと思うけどね。
0585名前は開発中のものです。2014/04/27(日) 18:14:34.21ID:Pq1XXwa+
>582のままだと何個か同時押ししてる時に子供がキー処理しちゃったら
親は欲しくて子供では未使用のキー情報取りたくとも来なくない?
0586名前は開発中のものです。2014/04/27(日) 18:30:43.78ID:ZxV1P0nx
どういう状況?
0587名前は開発中のものです。2014/04/27(日) 18:38:37.60ID:Pq1XXwa+
メニューが子供でWASDで移動してるとして押しっぱなしで
メニューの選択を動かす矢印やショートカット等の何らかのキー押したら
移動のキー処理が省かれ、結果移動が止まる
0588名前は開発中のものです。2014/04/27(日) 19:14:17.90ID:ZxV1P0nx
ああ、なるほど。

あんまりPCでゲームやらないので分からんのだけど、市販ゲームだとキーアサインはどうなってるのかな。
メニューを開いてない状態で使えるキー(デフォルトだとWASDとか?)は、メニュー画面で何の処理にも使われないような感じ?
0589名前は開発中のものです。2014/04/27(日) 19:44:36.31ID:DG4EJccZ
使うキー全てを押されているか1つ1つチェックしていけばいい
0590名前は開発中のものです。2014/04/27(日) 19:59:45.12ID:8WD0svuP
市販ゲームを買って調べろよ
知らないとこにゲームを作るなんてアホなの

LINEをやったこと無いのにLINEスタンプを作って儲けようとするアホと一緒
0591名前は開発中のものです。2014/04/27(日) 20:22:36.88ID:ZxV1P0nx
>>590
全く意味は分からんが、何か気に触ったようなのでスマン
0592名前は開発中のものです。2014/04/27(日) 21:47:11.67ID:zcnpepzc
RPGなどの、キーを1回押したら次のマスまで移動するようなゲームの衝突判定は
自キャラの位置と壁の位置を二次元配列で管理できるので作れるのですが、

アクションゲームのように、キーを1回押したら数ピクセルしか進まないような
ゲームの場合、マップチップエディタでマップを作った場合、衝突判定はどうするのでしょうか?
0593名前は開発中のものです。2014/04/27(日) 22:33:28.11ID:vcLDHUdb
衝突判定は、全部が計算で出る。 二次元配列で管理と同じ。
0594名前は開発中のものです。2014/04/27(日) 23:24:50.87ID:ZxV1P0nx
>>593
ソース見てみないと分からんけど、今まで1対1で対応するような当たり判定しかやってなかったので
そのままでは応用が効かないって話じゃない?


>>592
こういう場合に昼用となるのは、ある範囲とある範囲同士が、
座標上で重なっているかどうかをチェックする、という処理が必要となる。

少し前にも似たような話題があったが、
まず1次元上で、線分Aと線分Bが重なっているかどうかを判定する処理を考えてみよう。

      +---- A ----+
  0----------------------------------------X
             +-------- B --------+

答えを言ってしまうが、Aの右端がBの左端より右側」にあり、Bの左端がAの右端より左側にあるとき
線分AとBは重なってると言えるのが分かる。

これで少なくともX軸から見た時に重なって見えるかどうかを判定することが出来る。
じゃあこれをもう一度、Y軸に対してやれば、結果として重なってるかどうか分かると思わないかい?

一応、この判定には欠点があったりするけど、そのへんは詳しい諸兄に任せる
0595名前は開発中のものです。2014/04/27(日) 23:39:37.39ID:+r7oKZO8
592の質問ってそういうレベルの話なのか。
もっと複雑な話かと思った。

マップチップでブロック単位(要するに矩形判定のみ)しかしないんだったら
593の言うとおり2次元配列管理でいいんじゃないかな。

座標をマップチップのサイズ(ピクセル)で割れば配列の座標は出る。(小数点以下切り捨て)
たとえばマップチップのサイズが 16*16 でマップデータが二次元配列に格納されてるとしたら
(100,150) の部分は二次元配列でいう (6,9) の部分という事になる。
あとはRPGなどと同じように衝突判定すればいい。
0596名前は開発中のものです。2014/04/27(日) 23:47:48.15ID:zcnpepzc
>>593-595
ありがとうございます!

>座標をマップチップのサイズ(ピクセル)で割れば配列の座標は出る
この考えが欠けてました。言われれば当たり前のことなのに1人で悩んでると全然思い浮かばない(´・ω・`)
05975942014/04/28(月) 01:02:00.85ID:BBr+Jrn/
>>595
あー、そっちか
お恥ずかしい
0598名前は開発中のものです。2014/04/28(月) 09:50:59.01ID:GzOhtwBz
それだけだと自キャラがどのチップ上にいるかしかわからんから
壁と自キャラが重ならないようにするにはちょっと工夫いるんじゃない?
例えば自キャラの上下左右全部で衝突判定するとか
0599名前は開発中のものです。2014/04/28(月) 14:28:53.40ID:uu2sZY8y
そんな必要ないよ。
自分の位置より進行方向1ブロック分をチェックして障害物なら動かなくすればいいだけ。
0600名前は開発中のものです。2014/04/28(月) 14:31:26.43ID:uu2sZY8y
ああ、いや違った。
上と左に関しては進行方向1ピクセル分だった。
0601名前は開発中のものです。2014/04/28(月) 19:55:37.77ID:BBr+Jrn/
>>599-600
アクションゲームでそういう処理をするゲームは少なそうだが
0602名前は開発中のものです。2014/04/29(火) 00:40:51.84ID:EMV53Qmd
>>530-536
大昔にタスクシステムスレだったかSTGスレだったかにこんな感じのソース
(微妙に違うかもだが)を貼ったが、別にゴチャゴチャ言われなかったけどな
因みに同人STG
int APIENTRY _tWinMain(HINSTANCE,HINSTANCE,LPTSTR,int)
{
  try{
    boost::shared_ptr<GAMEENV> gameenv(new GAMEENV);   //D3D,SOUND,INPUT,USERDATA,etc
    boost::scoped_ptr<SCENE> logo(new LOGO(gameenv));    //ロゴ画面
    boost::scoped_ptr<SCENE> demo(new DEMO(gameenv));   //デモ画面
    boost::scoped_ptr<SCENE> title(new TITLE(gameenv));    //タイトル画面
    boost::scoped_ptr<SCENE> config(new CONFIG(gameenv));  //コンフィグ画面
    boost::scoped_ptr<SCENE> stage1(new STAGE1(gameenv)); //ステージ1
  (…中略…)
    boost::scoped_ptr<SCENE> stage8(new STAGE8(gameenv)); //ステージ8
    boost::scoped_ptr<SCENE> ending(new ENDING(gameenv));  //エンディング
    logo->Run();                               //ロゴ画面再生
0603名前は開発中のものです。2014/04/29(火) 00:42:06.52ID:EMV53Qmd
    while(1){
      demo->Run();                            //デモ画面再生
      switch(title->Run()){                        //タイトル画面再生
      case TITLEOPTIONTYPE_CONFIG:               //オプション画面再生
        config->Run();break;
      case TITLEOPTIONTYPE_GAMESTART               //ゲームスタート
        do{
          if(stage1->Run() == STAGESELECTTYPE_GAMEOVER)break;
          (…中略…)
          if(stage8->Run() == STAGESELECTTYPE_GAMEOVER)break;
          ending->Run();                       //エンディング画面再生
        }while(0);break;
      }
    }
  }catch(...){return EXIT_FAILURE;}
  return EXIT_SUCCESS;
}
0604名前は開発中のものです。2014/04/29(火) 01:03:59.54ID:T7NavjR1
こりゃStateパターンを使えていない時点でゴミっすわ。
バカが書いたコードだと一目で分かる。

面接でこれ持ってきた奴がいたら不採用…と言いたいけど
この程度のバカが偏差値65クラスなわけで
次頭があれば徹底的に叩きなおすことを前提で採用、ってなるレベル。
0605名前は開発中のものです。2014/04/29(火) 01:31:18.44ID:l2CWKjf4
それでも俺は、自らコードを曝け出した事に対して尊敬するね。

批判だけなら誰でも出来る
0606名前は開発中のものです。2014/04/29(火) 01:46:17.29ID:EMV53Qmd
>>604
http://pc11.2ch.net/test/read.cgi/gamedev/1227748699/181-

当時は高専の学生でしたので
0607名前は開発中のものです。2014/04/29(火) 01:49:34.15ID:T7NavjR1
>>608
あー、それわかる!
高専生感がぷんぷん臭う。

俺の職場は理系院生が採用の中心だから
君のコード見ると偏差値70以下!って判定を下しちゃうんだよね…。
0608名前は開発中のものです。2014/04/29(火) 02:13:49.38ID:EMV53Qmd
どうか心安らかな日々を
0609名前は開発中のものです。2014/04/29(火) 02:16:22.74ID:ZoGLF8y+
んー別にいいんじゃね?
大してシーンも多くないゲームなら充分充分
パターンとかはもっと規模が大きくなって
制御構文使ってたら死ぬ時に使う物だと思うのだが

ということで誰かstateとstrategyの違いを教えてくださいな
ググってもイマイチ腹に落ちなくてなあ…
0610名前は開発中のものです。2014/04/29(火) 03:18:14.89ID:51TE7qv/
高専生感というとても具体的な指標
これが偏差値70以上の力だと言うのか・・・
0611名前は開発中のものです。2014/04/29(火) 08:43:51.10ID:7WDDZUtT
これdemo->Run()の中に別のゲームループがあるって事になるんだろ。
つまり>>528って事だろ。

ところでupdate()とdraw()に分けないのかな。
コンテンツロスト時の再描画とか、各シーンで個別に実装とかだるいっしょ。
0612名前は開発中のものです。2014/04/29(火) 10:25:45.81ID:EMV53Qmd
>>611
当時のソースは実家のPCに眠ってるのでうろ覚えなんですが、D3D9などの
デバイスロスト時の対応などはGAMEENVクラスに押し付けてました

描画と、ゲーム内時間発展のサイクルは独立。フレームスキップしてました。
描画は60⇔30⇔15[fps]の半固定。

時間発展の刻み幅は1/60[sec]固定。シミュレーション部分の計算自体は
とても軽かったので。あとはリプレイデータの都合。デバッグ時の巻き戻し
や早送り(任意時点へ移動)してたので
0613名前は開発中のものです。2014/04/29(火) 10:41:35.55ID:EMV53Qmd
>>611
>これdemo->Run()の中に別のゲームループがあるって事になるんだろ。
>つまり>>528って事だろ。

それぞれにゲーム内の時間発展を計算するサイクルがありましたね。
そういう意味ならそうなんだと思います。ゲーム固有の定石とやらは
よく知りません
0614名前は開発中のものです。2014/04/29(火) 11:00:02.81ID:R32lOXpJ
配信でコーディングしてる現役ゲームプログラマさんの仰っていた序列表貼っておきますね

神様 綺麗なコードで完成させられる人
人間 汚いコードで完成させられる人
=================( 越えられない壁 )====================
家畜 汚いコードで完成させられない人
ハエ 綺麗なコードで完成させられない人

ハエに出来るのは人間の邪魔だけと言っていて、なるほどなとリスナー達感心しきりでした。
ID:T7NavjR1見ててこの事思い出しましたね
0615名前は開発中のものです。2014/04/29(火) 11:23:57.20ID:k/FZV1V1
自分は
std::unique_ptr<Scene> scene = new なんかのシーン();
while(1){
scene->update();
scene->draw();
if( scene->isEnd() ) {
scene = std::move(scene->getNext());
}
}
ってやってそれぞれのシーンが次の遷移先返すようにしました
switchを意地でも使いたくてこんな形になった

実際switchの方がよく使われるものなの?サンプル探してもswitch使っているのしか見当たらないから困ってる
0616名前は開発中のものです。2014/04/29(火) 11:24:47.17ID:t5QADVCc
>>614
やるじゃんw
0617名前は開発中のものです。2014/04/29(火) 12:27:00.81ID:CXcBKCf+
>>615
多分だけど、

 if(関数に分けずそのまま羅列) → if(関数分け) → switch → stateパターン

……みたいに進化していくんだと思う。
単に自分がそういう順番でステップアップしたってだけなんだけどさ。

仮に自分が教えるなら、stateパターンによるシーン遷移は後回しにするかな
0618名前は開発中のものです。2014/04/29(火) 12:35:06.95ID:CXcBKCf+
ああそうだ思い出した。
シーン遷移をStateパターンで行う方法についてなんだけど、「シーン遷移しないとき」って、どうしてる?

(1) nullを返す
(2) thisを返す
(3) シーン遷移関数を用意しておき、それが呼ばれなかったとき
(4) その他

自分は(2)で、nullを返すときはゲーム終了ってことにしてる。
一般的なStateパターンなら(1)かなあ。
0619名前は開発中のものです。2014/04/29(火) 12:40:34.16ID:5MYZPLM5
>>612-613
なるほどthx. sceneの引数でgameenv貰ってるね。

シーン遷移の実装はシーン側は知る必要ないから、
その時の気分とかシーンの数とかで好きにやりゃいいと思うけどね。

Task的に入り組んだ作りしてないのなら、どれでもすぐ遷移図を思い描けるっしょ。
0620名前は開発中のものです。2014/04/29(火) 16:14:29.11ID:R32lOXpJ
>>616
曰く、
「クラス設計書貰うけど見ない。クラス流用して他のゲーム作ったことがないから意味がない」
「デザインパターン?何それ?」
「参考書は読んだことがないからオススメ本とか分かんない。ネットと、エラーが出たらググレカスで覚えた」


PSでほとんど1人でプログラム任される人の弁です
0621名前は開発中のものです。2014/04/29(火) 16:19:59.07ID:NQBFYHJc
>>620
すげぇ
俺そんなこと言ったことないけど、完全に俺だわ
ただ、作ってたのはPSじゃねぇけど
0622名前は開発中のものです。2014/04/29(火) 16:20:18.05ID:KJKa8R89
>>620
その人、協調性が無いから、単独でしか使い道が無い。
0623名前は開発中のものです。2014/04/29(火) 16:27:51.48ID:NQBFYHJc
人事を何とかしないとうちの会社はやばい
ゲー専卒で多少のコミュニケーションはできれば入れてる感じがする
8人中2人もう辞めてるし、てかそれ以前にDXライブラリをインクルードディレクトリへの追加方法わからねぇわ、プログラムが組めねぇわで最悪だわ
1人だけまともというかたぶん俺より組める奴居るけど
うちは研修する余裕なんてねぇってわかってんだろうが、去年入ったやつなんてもう最後の1人を何とか留まらせてるんだから、俺らに人事噛ませろよ
0624名前は開発中のものです。2014/04/29(火) 16:27:58.51ID:lMFqMvqX
PSでググレカスてどんな時代?
一昔前の1500円のミニゲーム移植とかの人てことなんだろうか
0625名前は開発中のものです。2014/04/29(火) 16:31:27.80ID:GSilIO8H
>>622
ちょっとワラタ
0626名前は開発中のものです。2014/04/29(火) 16:31:55.46ID:CPnqQaxX
従来の手続き型で何本もゲーム作ってきた俺だが
いっちょオブジェクト指向でも勉強するか、とやり始めた結果
もうずっと制作が滞ったままになっている。
なんでこんなにめんどくさいんだ……。
0627名前は開発中のものです。2014/04/29(火) 16:33:29.90ID:t5QADVCc
サッカー上手い人がサッカーの技術書読んでうまくなるわけもないし、そういう感覚なんかな。
本読まずにPG覚えるとか想像もつかねえw
0628名前は開発中のものです。2014/04/29(火) 16:59:24.66ID:CPnqQaxX
本は解るようになってから読むと解るけど、解らないうちに読んでも解らないからなw

そもそも本を書くような人は「本を読んだら解る人」だろうから、
本を読んでも解らない人でも解るような本を書けないだろうな。
0629名前は開発中のものです。2014/04/29(火) 17:12:12.68ID:dd41HZLf
ビギナーコラムでオブジェクト指向の哲学とか語られてもな
とりあえず作ってみよう系のほうが理解しやすい
ここを弄ったらこう変わるみたいな
0630名前は開発中のものです。2014/04/29(火) 17:21:14.92ID:5MYZPLM5
c++だけがoopじゃないっすから…
0631名前は開発中のものです。2014/04/29(火) 17:40:38.04ID:lMFqMvqX
>>628
だいぶ使いこなせるようになっても読めない初心者向けの本とかあるから性質が悪い
ゲーム用だけじゃないが初心者の頃はコードがのっててサンプルが作りたい物に近いから買ってみるけど…
Cマガも半分ぐらいしか理解できなかったがいま読み返すと消えてる技術も多くて笑える
0632名前は開発中のものです。2014/04/29(火) 17:48:57.10ID:bM1HEdOI
ゲーム系の学生なんだけど、ゲーム会社ってどのくらいのレベルのオブジェクト指向まで要求されるの?
あと、AIとかそういうアルゴリズムも重視される?
0633名前は開発中のものです。2014/04/29(火) 18:14:47.39ID:NQBFYHJc
>>632
ぶっちゃけ会社によって様々だからうちの会社で書くけど
新卒には特別な期待はしない
とりあえず、プログラムを作れれば良いや、ゲームまで作れたら儲け物って感じだな
後はただ、人間として基本的なことはできてればそれだけで良い
俺は現場だからこういうのを求めてるけど、人事は即戦力のゲームプログラマーとしてプログラムを作れないやつを入れてくるから何を見てるか同じ会社なのにわからん
とりあえず残業させてないのに毎年1ヶ月以内に1人、3ヶ月以内に半分になる新卒はゲーム作る気がないよね
0634名前は開発中のものです。2014/04/29(火) 18:23:27.78ID:EMV53Qmd
マ板でやれ。な
0635名前は開発中のものです。2014/04/29(火) 18:25:53.36ID:R32lOXpJ
>>621
スーパープログラマさんかな?w
他の配信者も有名な人だよって言ってたし、多分在京で働いてる業界人なら知ってる人ですよ。

ちなみに、よくプログラマになるにはどうしたらいい?という初見リスナーのレスあるけど
「C++とDirectX(ライブラリ自作)で『完成した』作品を持ってこい」と言ってますね。
本人もデザインパターンを配信中にググって知ったみたいだし
オブジェクト指向とか関係ないんじゃないかと。とにかく完成品をよこせと。
0636名前は開発中のものです。2014/04/29(火) 18:34:29.77ID:lKQHJo0L
Q 漫画家になるにはどうしたらいいですが?
A 漫画を描けば漫画家です
 プロになりたければ作った作品を持ち込んでください

Q ゲームプログラマになるにはどうしたらいいですか?
A ゲームを作ればゲームプログラマです
 プロになりたければ作品を持ち込んでください
0637名前は開発中のものです。2014/04/29(火) 18:38:17.18ID:NQBFYHJc
>>636
これ
でも、自分じゃなくて友人が作ったやつを持ち込むクソも居る
0638名前は開発中のものです。2014/04/29(火) 19:08:58.63ID:WRxgjGJf
スレ違いの話題振る質問者は不採用です
0639名前は開発中のものです。2014/04/29(火) 19:14:20.55ID:t5QADVCc
くだらないループ話を延々続けてる馬鹿に飽きていたからいい暇つぶしになったw
0640名前は開発中のものです。2014/04/29(火) 20:34:32.58ID:EMV53Qmd
>>609
>制御構文使ってたら死ぬ時に使う物
>>615
>実際switchの方がよく使われるものなの?
>>619
>シーン遷移の実装はシーン側は知る必要ないから、
>その時の気分とかシーンの数とかで好きにやりゃいいと思うけどね。

>Task的に入り組んだ作りしてないのなら、どれでもすぐ遷移図を思い描けるっしょ。

同意です。実装の選択肢は色々あり、個々の状況に応じて選べば良い事かと。
>>602-603の例で言えば、振る舞い的に拡張する予定がなく、実際しなかった
部分なので別に問題なかったですね

元々HSP上がりの人間(周りも同様)だったので手続き型の記述のほうが平易
というのもありました



>>617

State Pattern
switch-case構文
0641名前は開発中のものです。2014/04/29(火) 20:35:52.86ID:EMV53Qmd
>>640訂正
末尾の三行は消し忘れです。>>617さんごめんなさい
0642名前は開発中のものです。2014/04/29(火) 20:52:06.90ID:CXcBKCf+
>>635
何年か前に、画像表示、パッド入力、音声出力くらいまでは何とか作ったけど
途中で面倒くさくなって、結局DXライブラリに戻ってしまったという残念な経験しかないやw
0643名前は開発中のものです。2014/04/29(火) 20:55:41.83ID:EMV53Qmd
>>619
会社帰りにたまにボー●ーブ●イクでチャリンチャリンしてたんですが
転勤先にそれ置いてるゲーセンがなくて悲しみのあまり余暇にパチモン
作りで自分を慰めてるんですが、火器とかAIの部分はStateというかStrategy
というかそんな感じのコードはありますね。条件分岐でダラダラ書いてたら
流石に眩暈がしてきたので
0644名前は開発中のものです。2014/04/30(水) 00:47:22.57ID:bEifU6C0
何を言いたいのかサッパリ分からん
0645名前は開発中のものです。2014/04/30(水) 01:21:27.75ID:3yGpFv6B
>>643
パーツとか持ち替えの武器とか大量にあると面倒くさいことになるよね
あの手のアセンゲーっぽいのは俺も好きだが作りたいとは思わないな
0646名前は開発中のものです。2014/04/30(水) 09:11:19.42ID:JP5IUHRh
つまらない流れなので誰かネタ振りお願いします><
0647名前は開発中のものです。2014/04/30(水) 10:28:13.43ID:vrCaDxEc
初心者な質問ですみません。
クラスからクラスを呼ぶときってどういう書き方が普通なんですかね?

class A {
public :
static A* me ;
int a ;
A() ;
}
A* A::me ;

A::A() {
me = this ;
}

ってやって A::me->a とかやってるけど、なんかスマートじゃなくて……。
0648名前は開発中のものです。2014/04/30(水) 11:46:43.01ID:eqz1Of7R
なにがしたいのかさっぱりわからんけど、それmeにインスタンス入れてるだけであんまり意味なくない?
クラスからメソッド直接使いたいとかなら、メソッドをstaticで定義してクラス名::メソッド名()だけど
0649名前は開発中のものです。2014/04/30(水) 12:04:25.51ID:gNDB74Yv
グローバル変数みたいなことがしたいのかな
アクセス可能なオブジェクトを限定するのがオブジェクト指向の組み方だから
アクセスする必要があるクラスにポインタなり参照なり持たせたほうが良いんじゃない
0650名前は開発中のものです。2014/04/30(水) 12:58:15.72ID:2hopiA0K
日本語不自由で変な質問するやつはほっといたほうがいいよ
0651名前は開発中のものです。2014/04/30(水) 13:13:03.63ID:8+rqYap5
staticメンバの初期化の仕方の話でねーのん。
最近c++触ってないから間違ってたらすまんけど。

// A.h
class A {
public:
  static int a;
}

// A.cpp
int A::a = 10; // 初期化

// main.cpp
void main() {
  A::a;    // 利用
}
0652名前は開発中のものです。2014/04/30(水) 13:38:55.27ID:MPxnDurN
3Dゲームで経路探索をやってみようと思うんだけど、3Dの位置情報ってどうやって調べればいいの?
0653名前は開発中のものです。2014/04/30(水) 14:23:59.95ID:bEifU6C0
具体的には?

基本的に平面で移動するゲームなら2Dと大して変わらんしだろうし
キューブ状の座標(2Dで言うところのマス目)を移動するだけなら、移動方向に上下という選択肢が増えただけと考えられるし
ビルの中を探索するようなゲームなら、階段やエレベータでエリアを区切ればいい気がする。
0654名前は開発中のものです。2014/04/30(水) 14:32:28.53ID:Uak2ZaC3
何が聞きたいのかさっぱりわからんけど、普通に変数参照すればいいんじゃない?
複雑な地形での経路探索がわからんって話なら、地形の要点にポイント作ってダイクストラ法でいいんじゃないの
0655名前は開発中のものです。2014/04/30(水) 14:35:02.75ID:Uak2ZaC3
ごめんダイクストラ法じゃなくてA*か
0656名前は開発中のものです。2014/04/30(水) 14:50:11.17ID:49atqyLw
経路探索
http://samples.jbpub.com/9781556220784/Buckland_AIExecutables.zip

Chapter 5 にあるように 経路探索する。
Chapter 8\Raven_CoarseGraph のようにグラフとして探索する。
0657名前は開発中のものです。2014/04/30(水) 16:08:24.08ID:L0vWdcDz
>>655
A*はダイクストラの拡張版で、基本アルゴリズムは重複する部分が大きいから、
大筋外してはいないよ
ゲーム用途の経路探索性能は、A*の方がより最適化されるみたいだけど
0658名前は開発中のものです。2014/04/30(水) 16:47:29.58ID:IG+u4GlD
>>647
http://ideone.com/gt21RS
そのコードが何か不明だがこういう振る舞いをするという事がわかってれば好きにしろ
0659名前は開発中のものです。2014/04/30(水) 22:30:05.62ID:vrCaDxEc
647です。皆さん色々すみません。
やりたかったのは、例えばコンフィグデータを一括管理するクラスを作って
他のクラスでそれを使う、ような事です。
例として挙げたソースは簡単に書いただけで直接書き換えたいというわけではありませんでした。

関係ない愚痴ですが、こうやれば動くからこれでいいのかな、と作り進めてても
やっぱりおかしいよな、とまた一から作り直す、を繰り返してて制作が全く進みません……。
0660名前は開発中のものです。2014/05/01(木) 03:51:25.76ID:jedbV3SH
http://anago.2ch.net/test/read.cgi/ghard/1387003319/235
  ↑ ↑   ↑ ↑   ↑ ↑
0661名前は開発中のものです。2014/05/01(木) 05:10:34.61ID:z13QLsnT
唯一のインスタンスを保証するシングルトンではなく、
インスタンスは複数作れるけど、実体は同じものを作っている……っていうアルゴリズムあったよね。

>659の場合だと、その方法使えそうな気がするものの……名前が分からんので教えられん
■ このスレッドは過去ログ倉庫に格納されています