トップページgamedev
986コメント314KB

ゲームプログラミング相談室

■ このスレッドは過去ログ倉庫に格納されています
0001プチ9627m01/11/06 18:47ID:G6Fk/ND/
ゲームプログラミング全般についての質問スレッド。
駄スレ立てる前にココで聞きましょう。

■旧スレ(プログラミング技術板より)
○パート1
http://piza.2ch.net/tech/kako/969/969984472.html
○パート2
http://pc.2ch.net/test/read.cgi/tech/985540361
○パート3
http://pc.2ch.net/test/read.cgi/tech/1002894129/
0365名前は開発中のものです。02/02/08 10:27ID:???
うわーん
036636102/02/08 13:50ID:???
お答えしてくれてありがとうございました。
>>363
operator new はクラスごとに書かなくちゃいけないのかな?
とりあえず何回もnewされるクラスに使ってみて、パフォーマンス
を比べてから、効果が大きいようであれば他のクラスにも使ってみます。
>>364
うう、関数オブジェクトだとかそこら辺は勉強してないのであまりわからないです
もうしわけない。想像していた以上にSTL周りのことは重要になってきそうですね。
Effective STLでも読んでみることにします。
0367209 ◆jUZhK5lw 02/02/08 15:11ID:???
うおーん

0368名前は開発中のものです。02/02/10 11:26ID:tpvVEAK8
ゲームのアルゴリズムを学ぶのに良い本知りませんか?
みんなアルゴリズムってどうやって勉強してるんでしょうか?
0369名前は開発中のものです。02/02/10 12:05ID:???
とあるページでCPUの占有率が常に100%なゲーム(アプリ)はダメみたいな事を書かれていましたけど、
何か理由があるのでしょうか?
0370名前は開発中のものです。02/02/10 13:39ID:???
100%がダメというより
マルチタスクOSでの行儀がなってないとだめということだよね。
無限ループみたいな組み方すると
バックグラウンドのプロセスになかなか処理がいかなくなる。
そうするといろんな弊害が起きることが考えられる。
0371名前は開発中のものです。02/02/10 14:24ID:???
>>370
最初から他のアプリケーションと並行して動かすことを前提としないゲームなら、
それでも構わないと思うけどね。フルスクリーン表示なら全然問題ないでしょ。

ただ、ゲームをウィンドウモードで表示しながら Web で検索しようとか思うと、ちょっ
と嫌かも。
037236902/02/10 20:12ID:???
なるほど。理解できました。
ありがとうございます。
0373名前は開発中のものです。02/02/10 23:16ID:???
>368
ソフトバンクの「遊びのレシピ」って本は
各種ゲームのアルゴリズムとデータ構造を解説してる。
基礎的で単純なものばかりだけど,行き詰まってる人にはいいかも。

勉強法だけど,私は他のゲームを見てアルゴリズムを想像してるだけ。
0374名前は開発中のものです。02/02/11 10:28ID:???
おお。。あんたもそうか。
これがくせになってもう病気。。
GT3見ても何見てもだんだんフローチャートに頭の中になっていく…
0375名前は開発中のものです。02/02/16 14:06ID:???
>>361,366
ワシも同じページ見ながらC++でタスク作ったことがある。
そんときは363と全く同じやり方に行き着いたよ。
メモリ管理は手を抜いて固定サイズメモリ領域の配列に
したけど。

いちいち各クラスのoperatow newを用意する必要はなくて、
タスク基底クラスのoperator newだけ自前で用意して、継承
させてやればOKOK。

関数ポインタの扱いがC++だと厄介なので、TCBの内部では
statusだけ保持して、別途用意した関数ポインタテーブルを
引くようにした方が楽だと思う。

ttp://www.emit.jp/prog/prog_cpp0.html
この辺参照。
0376名前は開発中のものです。02/02/17 10:19ID:???
普通は固定から切り出しじゃないのか??
0377名前は開発中のものです。02/02/17 20:54ID:???
>>375
> 関数ポインタの扱いがC++だと厄介
直接メンバ関数へのポインタを使わずに、多態を使えば良い。細かいことは
コンパイラが面倒見てくれるぞ。
0378名前は開発中のものです。02/02/18 02:33ID:???
図々しくてすみませんけど。
固定から切り出しのソースコードが乗っているホームページ有りましたらキボンヌ。

0379名前は開発中のものです。02/02/18 03:50ID:???
>>378
operator new() の使い方が分からんの、それとも static なブロックからデータを
切り出す方法がわからない?

C++ chunk operator new あたりで検索かけて見つけたページ
http://www.relisoft.com/book/tech/9new.html
0380名前は開発中のものです。02/02/18 10:32ID:???
(>_<)ワーショイ
0381名前は開発中のものです。02/02/19 01:23ID:???
>>378
placement new (operator new())に関しては、
More Effective C++ を読むのが良いかと。

固定から切り出しについては、確保した固定メモリ領域内の
アドレスを引っ張ってきてキャストするだけでいいんだが・・・
(もちろん管理は自前でやる必要があるけど)

で、任意サイズのメモリを切り出せるようにするとフラグメン
テーションやらガベコレやらめんどくさくなるんで、手を抜くな
ら切り出すメモリのサイズを固定にしちゃう、と。
その場合、オブジェクトのサイズが切り出し単位のサイズを
超えないようにすることだけ注意するべし。
0382名前は開発中のものです。02/02/19 01:44ID:???
>>377
基底クラスのexec()は仮想関数にしといて、各クラスの関数
ポインタはstaticに定義したメンバ関数ポインタテーブルから
引く、と。
0383名前は開発中のものです。02/02/19 03:22ID:???
>>382
イメージがつかめんので、も少し詳しい解説を希望。

俺は

struct Task {
  // 引数はともかく
  virtual void exec() = 0;

  // 固定長ブロックから切り出す
  static void* operator new(size_t);
  static void operator delete(void *);
};

を基底クラスに持ってきて、派生クラスを

class TaskBackground : public Task
{
 // メンバ変数いろいろ
public:
  virtual void exec();
};
みたいに書くのが良いかと思ってたんだが、382 のアイデアは違ってるよね。

タスク連結用のデータは Task に突っ込んでも良いし、別にタスク管理クラスを

class TaskManager {
  typedef std::list<boost::shared_ptr<ITask*> > TTasks;
  typedef std::vector<TTaskList> TTasksList;
  TTasksList m_TasksList;
public:
  TaskHandle add(boost::shared_ptr<ITask*> spTask, unsigned uPrio);
  void remove(const TaskHandle& hTask);
  void exec() {
    for (TTasksList::iterator i = m_TasksList.begin(); i != m_TaskList.end(); ++i)
      for (TTasks::iterator j = i->begin(); j != i->end(); ++j)
        j->exec();
  }
};

って感じで作るのも良いかと考えてた。
038438202/02/19 23:29ID:???
>>383
class Task {
public:
Task();
~Task();

  virtual void exec() = 0;

  static void* operator new(size_t);
  static void operator delete(void *);

private:
int m_Status;
};

とやって、

class TaskBackground : public Task
{
public:
enum {
STAT_INIT,
STAT_APPEAR,
STAT_STAY,
STAT_DISAPPEAR,
};
  virtual void exec(void) { (this->*apfnTable[m_Status])(void); }
private:
static void (TaskBackground::*apfnTable[])(void);
};

と言う感じ。STLの無い環境だったのでSTLは使ってませんでしたが、基本的には
同じ方式です(よね?)

038538402/02/19 23:33ID:???
インデントが・・・。
鬱。
すまそ。
0386名前は開発中のものです。02/02/19 23:51ID:???
>>384
なるほど。各タスクの「中」で状態遷移させるのに、メンバ関数ポインタを使おうと
いう話ですね。理解しました。
0387名前は開発中のものです。02/02/20 11:45ID:???
みなさんは、どうやってプログラムの勉強したんですか?
0388名前は開発中のものです。02/02/20 18:02ID:???
>>387
1. 本を読む
2. コードを読む
3. プログラミングする

いじょ。
0389名前は開発中のものです。02/02/20 18:50ID:???
>>387
作りたいものを作る
いじょ
0390209 ◆jUZhK5lw 02/02/20 19:16ID:???
>>388 389
んなこと、だれでもしってるつーの
0391名前は開発中のものです。02/02/20 21:03ID:???
>>390
じゃ、知らないことを書いてみれば?
0392名前は開発中のものです。02/02/20 21:57ID:???
>>390
プログラミングに王道はないんだよ…
0393名前は開発中のものです。02/02/20 22:06ID:???
>392

この言葉かっこいいな・・・
0394名前は開発中のものです。02/02/20 22:14ID:???
別に387がそうだという訳じゃないけど、
プログラミングを「覚えよう」という発想が間違い。
プログラミングは「理解」するもんだよ。

まぁ、日本の学校教育が「覚える」主体で「理解」を
求めてないから、どうしようもないんだけどねぇ。
0395名前は開発中のものです。02/02/21 01:07ID:???
プログラミングに邪道はあるのだよ‥‥
0396名前は開発中のものです。02/02/21 02:02ID:???
>>387
まずはプログラムを書く。作りたいものならなお良し。作らなければならないもの
なら更に良し。

んで、わからないことにぶち当たったら、自分で悩んで調べて何とかする。
それでもどうにもならなかったら、予め質問内容をきちんと調べて、自分がどこまで
わかっていてどこがわかっていないかを明確にした上で先達に聞く。

そして、書きながら、もしくは書いた後で、より良いコードにするためにはどうすれ
ばいいのかを悩んで調べて改善していく。その積み重ねしかないよ。

「どうすればいいですか?」という、聞かれた方がYesかNoで答えられないような
質問をした時点で負け。
0397名前は開発中のものです。02/03/05 04:05ID:???
定期ageしとく
0398名前は開発中のものです。02/03/05 10:37ID:???
>>388
4.自分のコードを直す

つーか、糞コードを糞なままにしてると、上達せん。
0399名前は開発中のものです。02/03/05 20:05ID:???
>>398
でも、ゲームをつくることを最優先にしないと、
コードばっかいじって永遠に完成しなかったりする罠。

つくっては壊し、つくっては壊し...
0400名前は開発中のものです。02/03/06 01:47ID:???
>>399
で、そのうちに

1 行き当たりばったりで作るのではなく、事前に設計する

ことを覚える、と。ちなみに、その先は

2 設計ができるようになると、楽しくてはまり、過剰設計の罠に陥る。
3 リファクタリングを身に付ける。

と続く。
0401名前は開発中のものです。02/03/06 17:03ID:???
ゲームなら期限を決めて作る。
ちなみに俺は無期限だと完成できないタイプ。
0402名前は開発中のものです。02/03/07 09:55ID:???
>>399-400
この段階に入ってからが本番。学ぶべき事が格段に増える。

・モジュールやデータ構造といった、設計関連の知識
・ソートやサーチなどの、アルゴリズムに関する知識
・パーティクルや画像合成など、エフェクトに関わる知識
・UIやツール作りなどの、人間工学に関わる知識
0403名前は開発中のものです。02/03/10 15:29ID:???
>>394 に共感を覚えた。
プログラムに限らず数学とか頑張って手順を説明してるのに
「とりあえず答えは何?」と聞かれるとすげー腹立つ…。
(しかもそういう説明する奴は嫌われる、と(ワラ))

>>402
俺は特にプログラム初心者のゲームに欠けてるのはモジュールだと思うんだよね。
アルゴリズムとかエフェクトに関する知識がいくらあっても、
ソースが膨大化して何がなんだかわからなくなってはいお疲れみたいな。
0404名前は開発中のものです。02/03/10 17:25ID:???
結果がすべてだからな。
0405con tofu ◆iOTveYXw 02/03/10 21:40ID:???
>>387-404
この辺り、すごく参考になりました。特に >>402 辺り。
皆さん、ありがd

ほかには
・プロセス/スレッドやメモリ等、OS寄りのことについて
もやっておくと、頭スッキリして楽になるように感じます。
0406名前は開発中のものです。02/03/12 11:15ID:3GjIfP2m
一応ageとこ。
0407名前は開発中のものです。02/03/12 11:20ID:???
==2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数:95432人 発行日:2002/02/12
どもども、ひろゆきですー。
こないだお伝えしました「佐々木さん」の件ですが、実を言いますと佐々木さんだけが悪いってわけじゃないんですー。佐々木さんはなにもいきなりドアを蹴って騒いだりしたわけじゃないんですー。
佐々木さんは最初は極めて紳士的に接してきたんですけど、おいらがドア越しに生意気な態度をしちゃったもんだから佐々木さんはキレちゃったんですー。。。

ご承知のとおり、おいらってばメルマガでは自分の都合のいいことを、都合のいいようにしか報告しませんが、本当はおいらにもたくさん非があるんですよー、、、えぇえぇ。。。
INSIや谷澤動物病院が裁判に持ち込んだのも、実はおいらの態度に問題があったんですよねー。。

おいらはこれまで2Ch被害者の襲撃から逃れるために、キックボクシングをやっていたなんて嘘を吐いてきましたが、本当はキックボクシングどころか卓球すらやったことないんですー。
おまけに両親とお姉ちゃんにはさんざん甘やかされて育ってきたので、いまいち礼儀というものを学べなかったようなんですー。うぅ、、、
もしなにかスポーツにでも打ち込んで、ちゃんとした両親に育てられてれば、こんな陰湿な人間にはならなかったと思うし、こんなに歯糞もたまらなかっただろうと思う今日この頃ですー。。。

ところでおいらって平安貴族みたいな顔してますかねー?
こないだ埼京線で女子高生の集団に「麻呂だー」「超キモイー」って言われちゃったんですけど。。。

んじゃ!
0408名前は開発中のものです。02/03/14 19:41ID:???
age
0409名前は開発中のものです。02/03/29 13:45ID:???
さみしすぎるんですが・・・
0410名前は開発中のものです。02/04/13 11:43ID:???
あげてみる
0411名前は開発中のものです。02/04/13 11:56ID:???
>>402
なんか、俺がいまそんな感じだ。。
興味が多方面に分散して、自分が手に負えなくなってきたよ。
これはこれで楽しいんだが(w


                     ミンナ、ソウナンダネ…
0412名前は開発中のものです。02/05/07 23:19ID:R1rOQJWc
初心者用質問スレはageとかんとな。
0413名前は開発中のものです。02/05/08 14:35ID:???
これから Visual Studio 6.0 と DirectX8.1 SDK を初めてインストールするんですが、
どっちを先にインストールした方が良いとかってありますか?
OS は Win2K です。
0414名前は開発中のものです。02/05/08 15:38ID:???
VS6→WinG
DXは入れる必要ない
041541302/05/08 17:26ID:???
>>414
WinGってなんか懐かしい
0416RE:02/05/08 23:58ID:y5yWHAGQ
コナミの音楽ゲームに
良く似た
DanceDancerevolutionもどき
作りたいんですが
作る前に
どんな知識と技術が必要ですか?
0417名前は開発中のものです。02/05/09 00:07ID:???
>>416
法律の知識と裁判で戦う技術。
0418RE:02/05/09 00:48ID:???
>>417
法律の知識と裁判で戦う技術。
裁判で戦う技術は無いですが
知識だけなら
0419名前は開発中のものです。02/05/09 00:55ID:???
>>416
まず作り始めろ。
そのうちにどんなことが必要かわかってくるはずだ。
0420RE:02/05/09 01:14ID:???
>>419
分りました〜
メモ帳でがんばって見ます
0421名前は開発中のものです。02/05/09 07:50ID:???
>>417-418
ちょっと笑った。
0422ゲー作初挑戦@ ◆ByBD3yHE02/05/09 21:49ID:9rTAdl0c
初めてゲームを作る決意をしますた。
同人ゲーですが。

かと言って絵描きの自分では、プログラマーを集うしかなく、
絵描きのページで募集したところで集まらず。

落ち物ゲーム+(間のストーリー流れを)ADVで作りたいのですが、
何か良いスクリプトないでしょうか?
ある程度までは勉強する覚悟はもちろん有りです。(C言語など一切触ったことありませんが)
また、技術者を募る良い場所があれば指南していただきたいのですが…。
もちろん報酬はお礼程度ですが有りです。
0423名前は開発中のものです。02/05/09 21:53ID:???
>>422
メンボスレ
0424ゲー作初挑戦@ ◆ByBD3yHE02/05/09 22:15ID:PutN4UaM
メンボスレ?
0425名前は開発中のものです。02/05/09 22:36ID:???
>>424
おそらくこれだろ

☆メンボスレ☆(メンバーボシュースレッド)
http://game.2ch.net/test/read.cgi/gamedev/1005323011/

良いひとそうだし(スレ違いの質問してるが)、暇なら手伝いたいがのぉ。
とにかく同人作りは、相方選びが一番重要なりよ。…いやマジで(´・ω・`)
0426ゲー作初挑戦@ ◆ByBD3yHE02/05/09 22:42ID:???
スマソ、ありがとうございます。
思いっきりスレ違いですたな。

頑張ってオモロイ技術者をゲットして楽しく作ってきまつ。
0427名前は開発中のものです。02/05/10 22:12ID:lw3De0y2
 
0428名前は開発中のものです。02/05/11 01:00ID:???
あ、もう逝っちゃった?
http://natto.2ch.net/test/read.cgi/2chbook/1020693668/
0429名前は開発中のものです。02/05/11 13:22ID:???
すみません、DirectXが上手く動かないんですが…
VBから使ってるんですが、
プライマリサーフェイスとバックサーフェイスの
フリップが上手くいきません。
っていうか、概念がいまいち分かりません。
バックサーフェイスに画像転送

フリップ

ループ
させているんですが、バックサーフェイスに画像を書き込めていない見たいなんです。
どなたか分かる方いませんか?
0430名前は開発中のものです。02/05/11 17:31ID:npO7xgR2
もう少し情報出してもらえないとわからないよー。

Windowモードでフリップしてないよね?
0431名前は開発中のものです。02/05/11 20:40ID:???
>429
>バックサーフェイスに画像を書き込めていない
ならFlipとは別問題じゃない?
0432名前は開発中のものです。02/05/11 21:24ID:???
一応解決しました。
>>431さんの言うとおり、フリップとは一応関係ありませんでした。
クリッパーの設定がおかしかったみたいです。
クリッパーを外したらちゃんと書き込めました。
で、結局クリッパーの使い方は分からず終いでした。
ついでに、320,240のフルスクリーンです。

っていうか、クリッパーの使い方教えてください(;´Д`)人
検索してみましたが、ページが一箇所しか見つからず、
しかも、そこに書いてある通りにやっても上手くいきませんでした。
0433名前は開発中のものです。02/05/11 22:04ID:???
ヘルプにはのっとらんのか?
0434名前は開発中のものです。02/05/11 22:06ID:???
ヘルプ!?
って?
DirectXの?
あるの?
0435名前は開発中のものです。02/05/11 23:14ID:???
DirectXのヘルプはみんなの心の中にあります
0436名前は開発中のものです。02/05/11 23:34ID:???
わかりました、心を磨くため、しばらく旅に出ます。
探さないでください。
0437名前は開発中のものです。02/05/12 00:21ID:???
心配しなくても探しません。
安心してください。
0438ピル・ゲイツ02/05/12 00:24ID:???
>>435
ナイスアシスト!!
0439名前は開発中のものです。02/05/12 01:13ID:???
DirectXができません、同じ症状の人いませんか?

コンパイラ :Borland C++
SDK :DirextX 7,DirectX7a
症状 :プログラムを起動したら「このプログラムは不正な・・・」
       MAINのエラーです。DDRAW.DLLなどのメッセージ。
プログラム :DirectDrawのオブジェクトを作る簡単なもの、
      DirectDrawCreate,DirectDrawCreateEx共にエラー、戻り値も帰ってきてない模様
      コンパイラに付いてきたライブラリ(DirctX3)なら動きました。
SDKのサンプルは動きました。
DirextX :DirextX8.0
0440名前は開発中のものです。02/05/12 01:38ID:4YN9DEeo
>>439
DirectXができません、って・・・(sigh

COFFとかOMFとかでgoogle検索しる!
044143902/05/12 01:41ID:???
わかりました、探索してみます。
044243902/05/12 01:51ID:???
OMFで検索したら「オメコファイヤー」とでますた
044343902/05/12 01:59ID:???
オブジェクトファイルの種類についてでました。
0444名前は開発中のものです。02/05/12 04:15ID:???
>>439
implib.exeでddraw.libを作り直してください。
0445名前は開発中のものです。02/05/12 05:27ID:rvy9Ukfg
いや、ルパンはとんでもないものを盗んでいきました。
それは貴女の心です。
0446名前は開発中のものです。02/05/12 09:53ID:VspODHGo
最近プログラミングを勉強しはじめた厨房の質問なのですが
c++buliderとWindows付属のツール(ペイントなど)だけでゲームの製作は可能ですか?
0447名前は開発中のものです。02/05/12 09:55ID:???
>>446
可能
044843902/05/12 09:59ID:???
解決しました、
必要なのはIncludeFileだけで、
SDKの中のライブラリは使わなくていいんですか?
0449名前は開発中のものです。02/05/12 09:59ID:VspODHGo
プログラミング以外にもさまざまな知識が必要ですか?
0450名前は開発中のものです。02/05/12 12:56ID:???
DirectX8SDKいれたらVCで「DirectX AppWizard」っていうのが追加されますよね。
それつかってゲーム作ってる人います?
0451名前は開発中のものです。02/05/12 15:13ID:???
抽象的な質問ばっかり
0452名前は開発中のものです。02/05/12 15:25ID:W8mXt2BA
 
0453名前は開発中のものです。02/05/12 16:56ID:???
答えられないヤツばっかり。
0454名前は開発中のものです。02/05/12 17:40ID:???
なかなか返答が難しい質問だからな
0455名前は開発中のものです。02/05/12 17:56ID:???
企画屋撲滅スレに行けば優秀なプログラマが沢山いるんできっと質問に答えてくれるYO
045644002/05/13 03:21ID:???
>>448
どのように解決したのか、後続のためにtipsのまとめキボンヌ
045744802/05/13 22:44ID:???
えっと、
IMPDEF ddraw.def c:\windows\system\ddraw.dll
でモジュール定義ファイル作って、
IMPLIB ddraw.lib ddraw.def c:\windows\system\ddraw.dll
で作ったファイルをリンクしたら動いた。

けど、このファイルがDirextX7で動くか心配だ・・・
045844002/05/14 01:21ID:QkMxU4bA
>>457
THX!

ま、正直なところ、DirectXであれこれやるならVC++を使うことをお薦めするが・・・。
0459名前は開発中のものです。02/05/14 06:42ID:???
>>457
それでいいと思うよ。
0460名前は開発中のものです。02/05/14 08:45ID:???
DirectXの機能を使うと楽になる部分もあるけど、ほとんど使わないで済む程度のゲーム
だったらVC++とかDelphiのライブラリ内で作っちゃった方がいい。
0461名前は開発中のものです。02/05/14 14:24ID:???
>>460
そりゃそうだ。
マインスイーパ作るのにDirectXはいらないな。
適材適所。
0462名前は開発中のものです。02/05/14 21:31ID:gp9yAFEg
 
0463名前は開発中のものです。02/05/18 20:47ID:OvBslwUs
 
0464名前は開発中のものです。02/05/19 11:39ID:l8bBGy5I
FF XIでのヘタレッぷりには大いに笑わせてもらった。
映画で懲りたかと思えばコレか、
おまえらゲームプログラマの質なんてたかが知れてる。

次はどんな手で笑わせてくれるんだ?
サーバが重くてつながらないのにチョコボ大陸横断レースでもするのか?(藁
■ このスレッドは過去ログ倉庫に格納されています