トップページgamedev
825コメント254KB

3Dエンジンの技術について語ろう

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。02/06/07 10:46ID:VX129WA.
語ろう。
3Dエンジンをつくる上での質問も可

3D Engines List
http://cg.cs.tu-berlin.de/~ki/engines.html
0002名前は開発中のものです。02/06/07 10:50ID:VX129WA.
3Dエンジンと3DグラフィックスAPIの明確な線引きは、むずいかな。
特にコンシューマ。

最強の3Dエンジンはどれだ!?
http://game.2ch.net/test/read.cgi/game/1019644359/
からの参考だと
「OpenGLやDirect3D等のAPIにデータを流すプログラムがエンジン」
0003名前は開発中のものです。02/06/07 10:55ID:VX129WA.
次世代(?)3Dエンジンも注目

http://www.watch.impress.co.jp/game/docs/20020529/e3deus.htm
0004名前は開発中のものです。02/06/07 12:04ID:vuHgRI3g
DOOMIIIエンジン
http://www.watch.impress.co.jp/game/docs/20020529/e3doom3.htm
0005自殺しろ博之馬〜鹿02/06/07 12:28ID:???
                         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      /\ /\           < ×クズ粕 博之×← 死んで人の為になりなさい お前にとって人生初めてのな 環境保護の意味でも死ね ! 博之よ。
      \_/  \  ∧_∧   // \_________
      /◯)//  \(´∀` )//
     /=// (⌒  ○=  )//
    /⌒//   VV /__ ノノ⌒
    (( // )   ⊆/〓〓(  ○ )
     \\_/          \_/
東京都北区 赤羽北2-31-16-1311 西村博之 ←これが社会の害虫 "糞ひろゆき"
0006名前は開発中のものです。02/06/07 16:22ID:???
煽りも改行ミスがあるとぶち壊しだな
0007名前は開発中のものです。02/06/08 16:33ID:???
ゼロから開発するくらいなら、他社のエンジンを買ってしまった方が安上がりという罠。

ということで、これより個人用・企業用に販売している3Dエンジンを吟味するスレにします。
0008名前は開発中のものです。02/06/08 16:51ID:???
俺もそろそろ他人のエンジン大人しく使う時代かなと思った。
0009名前は開発中のものです。02/06/08 21:14ID:???
他人のエンジンをうまく使い込むのと、自作で中途半端なエンジンを
作るのはどっちがフェードアウトコースだろうねぇ。漏れは後者だと
思ってるけど。
0010名前は開発中のものです。02/06/08 22:02ID:???
他人のエンジン使っても中途半端なゲームを作る奴。
0011名前は開発中のものです。02/06/08 22:34ID:???
>>9
他人のエンジンを使い込もうと思うと、
自作で同程度のエンジンを作れるぐらいの知識と技術が必要とされる罠。

既存のエンジンをうまく使い込むのは正しい姿勢だけど、
自作で中途半端なエンジンを作る経験を放棄した奴は即フェードアウト組みにご案内となる。

フェードアウトしたくなかったら、
趣味で自作エンジンを作りつつ、仕事で既存エンジンを使いこなすべし。
0012名前は開発中のものです。02/06/08 22:40ID:cQHVePf2
そうだね。
まずは自作を作ってみて、エンジンとはどうゆうものかと理解するのは
プログラマとして必要不可欠な経験だと思う。

以降は自作エンジンを作った経験はあるが、既成エンジンに興味が
ある人達の為の情報交換スレとして利用してください。
0013名前は開発中のものです。02/06/08 22:45ID:???
>>12
>>自作エンジンを作った経験はあるが

んなやついねぇヨ。
自分に出来ない事はさっくり白旗揚げて他人に頼るのもフェード
アウトしない秘訣だとは思うけどね。
0014名前は開発中のものです。02/06/08 22:57ID:???
>>13
まあ、何か他人より卓越した技術を持っていればフェードアウトすることはないと思うけどね。
3Dエンジンがかけなくても、高度なAIエンジンを書けるとか、
物理シミュレーションエンジンを書けるとか、OSを書けるとかね。

最悪なのは他人の作ったものを使うことしか能がない奴。
こういう奴は30才までにだいたい消えていくね。
0015名前は開発中のものです。02/06/08 23:08ID:???
>>14
>>最悪なのは他人の作ったものを使うことしか能がない奴。

 はぁ?よく判んないんだけど他人のライブラリを使うしか脳の無い
人っているのかねー?そこまで酷い奴には会ったことがねーから判らんよ。
0016名前は開発中のものです。02/06/09 00:21ID:???
一般的には、
他人の作ったライブラリしか使わない(ように見える)奴=コスト計算がしっかり出来ている奴
だとおもうがどうか。
0017名前は開発中のものです。02/06/09 00:44ID:???
>>16
でもなぜか、他人の作ったライブラリしか使わない奴が作るものは、へぼへぼなんだよね。
0018名前は開発中のものです。02/06/09 00:49ID:???
それは使わない奴じゃなくて無能だから使えない奴じゃないか。
誰かが書いていたけど、
人のライブラリを使うにはそれと同じ物を書けるくらいの技術力が必要だ、と。
でも実際に自分でそれを書かないのは、保守にかかるコストを考慮した結果。
0019名前は開発中のものです。02/06/09 01:00ID:???
>>18
正論なんだけど、>>16みたいなことを言っていると、
車輪の再発明をするのは馬鹿だなどと勘違いする奴が大量発生するんだわ。
0020名前は開発中のものです。02/06/09 02:10ID:???
勘違いや嘘っぱちを、この板の中で正論として広めることは
ある意味で心地良いという罠。
0021名前は開発中のものです。02/06/09 03:40ID:???
 あーもー、白状しますよ。漏れQuake1のエンジンすらまともに書け
ません。同等の物を作れなきゃ使う権利が無いなんて言われたらもう
明日にでも辞表を出すしかありませんヨ。

 つか、日本にQuakeエンジンをコーディングできる人って何人いるのよ?
0022名前は開発中のものです。02/06/09 04:55ID:???
>>21
厨はなんでも極論が好きだねぇ。
何も作らないか、Quake1エンジン並みのものを作るかしか選択肢はないのかい?

中途半端なエンジンでもいいんだよ、とにかく書け、作れ。
そして他のエンジンを見ろ、感動しろ、真似ろ、

そういう積み重ねがない奴は、まともにライブラリは使いこなせないってことだ。
0023名前は開発中のものです。02/06/09 04:59ID:???
Quake1のエンジンなら結構いるだろ。

コストを考慮して自作しない奴なんてどの位いるのやら・・・
能力あるやしはなんだかんだで自作すると思うけど。
実際自作した方が効率良い場合が多い。
00242202/06/09 05:02ID:???
補足しておくと、エンジンを書いたことがないなら使いこなせないというわけではない。
根底にあるアーキテクチャを知らずして使いこなすことはできないということだ。

そしてアーキテクチャを学ぶのに、
自分で実際に作ったり真似たりすることが一番の近道だと言うことだ。

本を読んだだけで深く理解できる天才はこの限りではない。
0025名前は開発中のものです。02/06/09 05:19ID:???
 デジタルロケってーのあるじゃない?あれで素人さんのゲームを
何本か見たことがあるけど、結構いい線行ってるの多いんすよね。

 中には3Dの知識が全く無い人でも結構なの作れてたりして、変に
使い所がない技術に溺れるよりもなーんも先入観が無いのも大事かも
とか思いました。
0026名前は開発中のものです。02/06/09 06:31ID:???
>>24
同意。
何も考えずに最高のパフォーマンスの出るライブラリなんて存在しない。
アーキテクチャを知らない奴は何がボトルネックになるかわからないから、
とんでもない使い方をするよね。
よく出来たライブラリであればあるほど無理な使い方でもなんとかしちゃうから
結果として非常にパフォーマンスの悪いものが作られてしまう。

例えばαチャンネル付きのテクスチャを何も考えずに描画できたとしても、
内部ではリストに繋いでソートして最後に描画しているなんてことを知らないから、
何も考えずにαチャンネル付けて描画しちゃう。

少し知識のある人なら、
αチャンネル付きのオブジェクト描画は最小限にし、できるなら加算で代用する。
スワップが起こらないように、すべてのテクスチャがキャッシュに載る大きさにする。
不透明と半透明オブジェクトは分離し、半透明は最後にリクエストする。
視点の変化が少ないならプリソートして動的ソートは避ける。
とかいろいろ工夫するよね。

その結果としてパフォーマンスにとんでもない差がでてしまう。
00272602/06/09 06:44ID:???
ついでに言うと、
これを見たアーキテクチャを知らない奴は、
「αチャンネルは遅い」としか捉えられないので、
今度は必要以上にαチャンネルを使わないようにしようと努力する。

丁度、仮想関数は遅いと言ってswitchで分岐している奴のように。
0028名前は開発中のものです。02/06/09 06:49ID:???
>>26
 どーでもいいけど、そーゆー事を吸収してバカチョンでも扱える
ようになってるのが「エンジン」じゃないのん?オブジェクトの
ソーティングなんか意識するエンジンなんかわざわざ使いたくにゃーよ。
00292602/06/09 06:51ID:???
>>28
ね、みなさん、いかにアーキテクチャを知らない奴が使えないかわかったでしょ。
0030名前は開発中のものです。02/06/09 07:16ID:???
26さん、そんな得意げに自分のレベルの低さを自慢しなくても…。ちょっと痛すぎ。
0031名前は開発中のものです。02/06/09 07:26ID:???
なんていうかねぇ、、、
26の言ってる事ってさ、んー、97年とか98年の
ほんとに3Dゲームが出始めた頃に始めてやった奴が
苦しんだところだよね。
0032名前は開発中のものです。02/06/09 08:00ID:???
コンシューマの人はそのハードで時代が止まっちゃうので仕方がない。
0033名前は開発中のものです。02/06/09 08:13ID:???
>>31
つーか初心者も初心者が
MSNのDirectXのFAQのページ見て
ハナクソほじりながらフーンとか言っちゃってる
レベルと思われ。
0034名前は開発中のものです。02/06/09 08:56ID:???
同意とか言いながら見当違いのところを語っちゃうのは恥ずかしすぎる
0035名前は開発中のものです。02/06/09 11:06ID:DlpweEuA
ライブラリがわからず、サンプルを改造する事しかできない人もいます
00362602/06/09 12:03ID:???
なんか、まだ「知っている」/「知らない」でしか物事を語れない厨が多いね。
Zバッファとαブレンドの問題なんて等に俺は知っている->レベルが低いという
短絡的な思考能力はどうにかした方がいいと思うよ。

俺が言っているのは、
「アーキテクチャを知らないと、重大なボトルネックを生む可能性がある」
ということであって、αブレンドの問題は本質ではなく、たんなるわかりやすい例に過ぎないんだが(藁

知っている例を上げると、レベルが低いと本質を見ず、
知らない例を上げると今度は高度すぎて理解できない。
厨相手に説明するのも大変だ(w
0037名前は開発中のものです。02/06/09 12:34ID:???
>>36
ほんとに高度なことも理解している奴なら>>26みたいにくどく語ったりしない。
0038名前は開発中のものです。02/06/09 12:40ID:???
>>26
内容には激しく同意しますが、板違いです。
マジレスは控えましょう。ネタで遊びましょう。

遺憾ですが、そういう板です。
0039名前は開発中のものです。02/06/09 12:46ID:???
どーでもいいこったが、26の言う事はただの精神論で一般論ではないヨ。
26のレベルの低さは>>29のレスですべてを語っていると思うが。
00402602/06/09 12:50ID:???
>>37
高尚な抽象論に留めておけば有難がるわけですな(藁

例えば>>22さんは高度なことを理解していて、
俺は高度なことを理解できていないということですか?
0041名前は開発中のものです。02/06/09 13:31ID:???
26が心配するのも分らんでもないよ。

最近は下支えとなるアーキテクチャを理解せずにプログラミングしても
それなりのアウトプットがあるからね。Java/VBなんかが筆頭かなあ。
ゲームプログラミングも、それで済ませられるなら済ませたほうがいい、
ということになるかもしれんよね。

たしかに、そういうライトユーザーがワンサカでてくれば、
開発者の全体のレベルはガンガン下がるわな。

でもさ、ここは技術について語るスレなんだよ。
使う側の態度や心得を語ったり、グチったりしてもしょうがないだろ。

まあ、ライトユーザーはすぐ馬脚を出すから(既に何脚か出てますが:藁)、
そんなときは彼らのレベルを引き上げるべく、
興味の湧く話題を振ってさしあげるのがよろしいかと思う。
0042名前は開発中のものです。02/06/09 13:37ID:???
つーか、そういうのって3Dエンジンの存在意義にまで影響を与えるような。
やっぱ作る側の心理としては、使う側に余計な手間や頭を使わせず
なるだけ抽象化したいって思うもんじゃないのかなぁ。
3Dエンジンって、ただ作る手間を抑える為に存在するものなの?
0043名前は開発中のものです。02/06/09 13:42ID:???
3Dエンジンと一言でくくってるけど

A 作れる人がその手間を省くためのもの
B 抽象化しまくって、基礎知識さえあれば組めるようにしたもの

では大きく違うと思う。
新人君がAのタイプのを見ると面食らうのが普通。
Bは新人君でも使えるけど26が危惧するところの状況に陥りやすい。
0044名前は開発中のものです。02/06/09 13:55ID:???
「使用上の注意は守った方が事故が起こりにくく、高い効用が期待できる」
「使用上の注意を守らずとも比較的安全なものから、正しく使わないと強い副作用を伴うものまである」
「使用上の注意が明示されていない場合、知識や経験に頼らなくてはならない場合がある」
みたいな話しじゃないのかな。
で、完全に抽象化され下位層を無視出来た方が嬉しいという理想と、とにかく基礎から全て学べやボケという理想、両極論がぶつかり合っている?
0045名前は開発中のものです。02/06/09 13:58ID:???
ぶつかり合うというか、適材適所という問題では?
教育用には43でいうところのBのようなものが必要だろうし、
手間を省くにはAが便利だろう。
0046名前は開発中のものです。02/06/09 14:08ID:???
>>45
それは逆で、教育用にはまず低レベルから教えることが重要だと思います。
お手軽ライブラリで形だけ作らせるのはゲー専の授業と変わらないと思いますね。
まあ使い捨ての人材なら問題ないのですが。
0047名前は開発中のものです。02/06/09 14:35ID:???
>>24
実際になにをやっているかを知らないと使ってはいけないというのは大体同意なん
だけど、

>スワップが起こらないように、すべてのテクスチャがキャッシュに載る大きさにする。
>不透明と半透明オブジェクトは分離し、半透明は最後にリクエストする。
>視点の変化が少ないならプリソートして動的ソートは避ける。

人によって3Dエンジンの定義が違うだろうけど、これってまさに3Dエンジンが実装
すべき機能ではないの?結局の所はリソースを馬鹿みたいに使われればどっち
にしろ遅くなるけど、マテリアル関連の最適化みたいのはアプリが一々考えなくて
もいいんじゃないか俺はと考えているので。
あとはエンジン側に細かなプロファイル機能とドキュメントをつけておけば大体は
ボトルネックを考えられる手がかりにはなるんじゃない?

ところでPCのFPS以外で社外から導入したエンジンってどれくらい使われてるんだろ?
Renderwareとかを3Dエンジンの一種と考えても売れたゲームってGTA3くらいしか世間
のソフトでは思いい浮かばないんだけど…つーか、自社でしっかりしたゲームを作って
無い会社のエンジンってイマイチ信用できないなーって思うの俺だけ?
■ このスレッドは過去ログ倉庫に格納されています