トップページ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/
0523チューニングなんて後から02/07/25 12:51ID:???
とりあえず作りかける

ちょっと効率のいいアルゴリズム発見

それにあわせて書き直す

さらに効率のいいアルゴリズム発見

それにあわせて書き直す

さらに効率のいいアルゴリズム発見


052451102/07/25 21:22ID:???
レスありがとうございます。激しく反省中の511です。
>>522
>お前は効率的な書き方をマスターしたいのかゲームを完成させたいのかどちらだ?
ゲーム完成させたいです!

>慣れないうちはきっちり動くものを作り上げてから速度&効率のチューニングをやれYO!
そうですね、まだ直さなきゃ行けないとこがいぱーいあるのに
綺麗なソースをかきたいなんて100年早かったです。。反省。。。

>>523
うう、完成しないままループしてしまいますね。。。。。
きっちりさいごまで仕上げることに専念します。

今日は移動用の選択カーソルの不具合をなおします。
0525名前は開発中のものです。02/07/25 22:06ID:???
>>524
報告ならここにしろ
■自主製作ゲーム:開発状況報告スレ■
http://game.2ch.net/test/read.cgi/gamedev/1005143186/l50
0526西村トオル、ナイスですね〜02/07/26 20:35ID:???
今、DirectX8で3Dのゲーム作っています。
カメラアングルは、女優(対象)を後ろから捉えています。
そこで質問なんですが、
イベント中とかにゲームの動きを止めて
カメラだけを動かして女優(対象)を舐め回すように撮影したいんですが、
(取り合えず、女優を中心に球を想定して、常に女優の方を捉えつつ
その球面上をカメラが移動って方向で)
何か良いカメラの動きのアルゴリズムとか知りませんか?
やはり、監督自身(自分で)動く軌跡(座標)を切ってやらないといけませんかね?
0527名前は開発中のものです。02/07/26 22:27ID:???
>>526
ベジェ曲線みたいにすりゃいいんじゃない?
0528名前は開発中のものです。02/07/28 03:47ID:???
>>511
検証もせずに、他人のコード採用してたら、それこそあぼーんだよ。
解決案が必要なのに、エゴに凝り固まって、他人のソース見ることも出来ないのは、もっと重傷だけどね。
まあ、ゲームに関して言えば、コーディング技術云々より、ゲーム全体としてのデザインの方が重要だから、
そんな小さなことにこだわるな、というのが正解かもね。
0529名前は開発中のものです。02/08/15 17:23ID:???
>>528
んなこたーない
0530名前は開発中のものです。02/09/15 11:53ID:???
おまいらは、リソースの管理はどうしてますか?
基底クラスを書いて、音や絵やその他のデータなんかも
まとめて管理してるんでしょうか?
0531名前は開発中のものです。02/09/15 19:09ID:???
>>530
PCの話で良い?

データのI/Oはインタフェースに肉付けしてく形で作ってる。
具象クラス側で生ファイル、圧縮ファイル、ネットワーク、リソース、
各I/O方法にあわせる事が出来るし、プロトタイプ作ってる途中は
生ファイルI/Oだけあればよいし。
053253002/09/17 02:30ID:???
>>531
私も同じようなもんですが、ネットワークは別にしてました。
参考になりました。
0533名前は開発中のものです。02/09/19 05:00ID:N2qPvY6Q
スプライトを管理するクラスが作れません。C++ です。

今は、各々のキャラクタのクラスがサーフェスやアニメーションの情報も持っていて、
なんとなく不細工な感じがするので、見た目の情報を切り分ける事にしたんですが、
それを一元管理するクラスの設計が出来ません。

今動いてる物をいじるんだから、それなりに便利にしようと思い、
確保したサーフェスやアニメーションの情報や、今表示中のスプライトの情報を、
管理クラスの寿命と共に廃棄できるようにしようとしたり、
サーフェスやアニメーションの情報を削除しても、それをまだ使用してるスプライトがあったら、
そのスプライトが削除される時までは、保持されるような物を作ろうとしました。

けれど、実装してもうまくいかないし、
整理しようと紙に書いていても、頭が混乱してきました。

みなさんは、こんな場合にはどう設計されていましたか?
053453302/09/19 05:03ID:???
sage 忘れてました。
すみません。
0535名前は開発中のものです。02/09/19 05:10ID:???
普通にリファレンスカウンタ使う
0536名前は開発中のものです。02/09/19 05:14ID:???
俺の場合

◆オブジェクトクラス
スプライトへのポインタ(場合によってはテーブル)
各種パラメータ
_______

◆スプライトクラス
対象サーフェスへのポインタ
サーフェス上のRECT
現在位置
アニメーションありの場合RECTのテーブル
_______

◆サーフェースクラス
サーフェス実体
スプライトからの参照カウント

という風に階層分けをしてうまく作った。
053753602/09/19 05:18ID:???
場合によっては、

スプライトクラスを

◆スプライトクラス
現在位置
スプライト定義クラスへのポインタ
表示しているRECTのindex

◆スプライト定義クラス
対象サーフェスへのポインタ
RECTのテーブル

と分ける。
0538名前は開発中のものです。02/09/19 05:18ID:???
キャラをオブジェクトと見立ててそれぞれで画像を管理するとめちゃくちゃにならない?
私がやったときは、各キャラのデータを保持するクラスを作って
それとは別に「キャラのデータを元に画面を組み立てる」関数を作った。

ハードコーディングでキャラの外見を決める場当たり的な方法だけど、
小規模なら混乱を最小限に防げてプラクティカルだよ。
0539名前は開発中のものです。02/09/19 05:35ID:???
スプライトをリファレンスカウンタで管理するってどうよ。
シーン構築時に必要な物をすべて読み込んで、
終了時にまとめて削除する方が速いしスマートじゃね?
054053302/09/19 05:42ID:???
>>535-536
早朝からありがとうございます。

リファレンスカウンタは、調べていてる時に見つけて
>>536 さんのような感じにしていたんですが、
管理するクラスと、それに管理されるクラスとの関係を
上手くまとめられませんでした。

ゲーム開始前の時点で、管理クラスにサーフェスやアニメーションなんかの
描画に関係する物を登録して、終わった時には、使っていたほうは意識せずに、
管理クラスが、自動的に廃棄してくれるようにしようとしたんですが、
>>533 で書いたように、混乱して終わりました。

ここらへんの管理クラス回りの設計を質問したかったんですが、
文章が長い上に要点がボケてました。すみません。
054153302/09/19 06:08ID:???
>>540 を書き込む前に、その間の書き込みを確認してませんでした。

>>537
そうやって定義を分けておくと、同じ種類のキャラクタのスプライトで使いまわせますね。
参考になりました。

>>538
>「キャラのデータを元に画面を組み立てる」関数
が私が最初にとっていた方法だと思います。
その場合のキャラのデータとは、見た目やゲーム内での状態を一つにまとめて
表してる物の事ですよね?
違ってたら、すみません。

>>539
> シーン構築時に必要な物をすべて読み込んで、
> 終了時にまとめて削除する方が速いしスマートじゃね?
そうしたかったんですが、このへんが、よくわからなかったところなんです。
必要な物を管理するクラスの設計を、触りだけでも解説していただけませんか?
0542名前は開発中のものです。02/09/19 12:33ID:???
>>539
読み込み失敗時のエラー処理が繁雑になるから、ゲーム開始時点で
まとめて読んでしまった方が良いかも。データ量にも依るけど。
0543名前は開発中のものです。02/09/19 15:44ID:0CTGoUX3
vertex-shaderってなんですか?
0544名前は開発中のものです。02/09/19 15:57ID:???
vertex-shader(頂点シェーダ)ってのは、
トランスフォームやライティングやテクスチャやブレンディングなどの頂点処理機能のこと。

プログラマブル頂点シェーダは、いままで処理系(Direct3Dなど)の
固定機能のみであったのに対して、これらの機能をプログラムできるってやつ。
0545名前は開発中のものです。02/09/19 16:04ID:39QNxA7D
http://muvc.net/jsweb/happy_solution.html
054654302/09/19 16:38ID:???
>>544
サンクス。
禿しくわかりました。
オレイデス(・∀・)つ旦~
0547名前は開発中のものです。02/09/20 02:00ID:???
>>545
イイ!
0548名前は開発中のものです。02/09/20 04:38ID:???
ここはひどいインターネットでしたね
0549名前は開発中のものです。02/09/22 18:44ID:lBYio+jt
画角を、視点からの距離に応じて自然に変化させる事はできますか?
普通の人間に近い画角を設定すると、至近距離での物の見え方が
おかしいように感じます。
0550名前は開発中のものです。02/09/22 19:54ID:???
その問題は随分昔から色々言われてきて、
今のところ現実的な解決方法が見つかってないと思う。
至近距離のものは、目には歪んで見えているのに真っ直ぐのものを
真っ直ぐと認識できる。これは脳みそが補正しているからです。

至近のものをなんとかして正しくゆがめて表示すると、
それはそれで不自然に感じるはず。
なぜなら、脳が補正しないから。
0551名前は開発中のものです。02/09/22 19:57ID:???
もー少し書くと、
最大の問題は、目からディスプレイまでの距離が離れているから、
自然な映像は目からディスプレイよりも近い映像を表示し得ない
のです。

ヘッドマウント式のディスプレイであれば、
正しくゆがめるとちゃんと認識できると思う。
0552名前は開発中のものです。02/09/22 22:18ID:???
>>551
HMDは焦点距離を1mくらいに設定してるので、
結局うまく認識できないと思う。
0553名前は開発中のものです。02/09/22 22:28ID:???
それは16Bitでの単色のグラデーションが汚いことより重大な問題なのか?
0554名前は開発中のものです。02/09/22 22:52ID:???
Virtual Realityとしては結構な問題。
グラデーションはbit数を上げれば解決するけど。
0555名前は開発中のものです。02/09/23 00:45ID:ThYVC2el
dxfフォーマットの詳しい解説ページ教えて下さい
本は絶版みたいだし、お願いします
0556名前は開発中のものです。02/09/23 01:03ID:v6pFfVCj
>>555
やめとけ。検索すればすぐでると思うが、情報がいい加減でひどい
フォーマットってうわさだ。何に使うん?
0557名前は開発中のものです。02/09/23 01:11ID:???
ちょっと調べたが酷いもんだったなあ
3D拡張もあるらしいが
0558名前は開発中のものです。02/09/23 01:13ID:v6pFfVCj
http://homepage1.nifty.com/atmori/cg/shade/dxf/dxf.htm
0559名前は開発中のものです。02/09/23 01:53ID:???
>>556>>557>>558
ありがとうございます。
3Dを扱う一般的なフォーマットは知っておかんといかんかな、と思いまして
056054902/09/23 03:58ID:???
>>550-554
単純な問題じゃないと言うわけですね。
自分の知識でまだまだ足りない部分があった事がわかりました。
ありがとうございました。
0561名前は開発中のものです。02/09/23 06:14ID:FUH7SiPA
ゲーム作成用のC++クラスフレームワークいいのありませんか?
DirectX8はWizardもついてだいぶよくなったみたいだけど
構造体がいっぱい残ってるのがうっとしいです。
やれることが限定されても、そのへんクラスで結構隠してくれてるのが
あればいいんですが。
0562名前は開発中のものです。02/09/23 07:28ID:???
Wizardで作られたものを整理して、テンプレートとしてとって置く
0563名前は開発中のものです。02/09/23 07:39ID:???
>>561
http://www3.justnet.ne.jp/~botchy/el.htm
0564名前は開発中のものです。02/09/23 07:57ID:???
>>536
オイオイ
> いいの
ダヨ
0565名前は開発中のものです。02/09/23 08:13ID:???
elはごった煮だけど良い物だよ。
洗練されているという良い物ではないけど。
0566名前は開発中のものです。02/09/23 08:14ID:FUH7SiPA
>>562-563

ありがとうございます。
ELLibちょっとヘッダ眺めてみました(眺めただけ)。
ほかにもあれば、情報収集しときたいのでお願いします。
0567名前は開発中のものです。02/09/23 08:34ID:???
>>566
やねうらおの奴使っておけ。
まー、完璧ではないかも知れないが普通に使う分には問題ない。
NxDrawが生きてたらそれが良いと思うんだけどね。
あとはゆきいるかの所かなぁ

リンクは面倒なのでぐぐってくれ。

ゲーム用のフレームワークが本格的なゲームエンジンを指す場合、
高い金払ってUTのエンジン使えるように契約したりしてくれ。
0568名前は開発中のものです。02/09/23 08:49ID:FUH7SiPA
>>567
ふんふん、なかなか本格的ですね。
これはどうもありがとうございます。YTLには笑った。

趣味で使うつもりなので。
UTって何でしょう。
0569名前は開発中のものです。02/09/23 09:41ID:???
たぶんUnreal Tournamentのことだろう。
この辺を嫁ばいい。
http://udn.epicgames.com/
0570名前は開発中のものです。02/09/23 10:35ID:???
>>569

ありがとうございます。
ちょっと見ただけでは良く分かりませんでしたが
今度暇なときに見てみます。
0571名前は開発中のものです。02/09/23 14:39ID:???
>>567
あれじゃあ、片手落ちじゃない?
0572名前は開発中のものです。02/09/23 15:12ID:???
>>571
その前に君は日本語を使いなさい。
「あれ」は何の指示代名詞なんだい。
057357102/09/23 15:22ID:???
>>572
ポリポリ
0574名前は開発中のものです。02/09/23 15:29ID:???
>>572


  571
<#`Д´>パ、パカニスルナ
0575名前は開発中のものです。02/09/23 16:30ID:???
「片手落ち」ってのは使わないほうがいいよ
厨に変なツッコミいれられるから
0576名前は開発中のものです。02/09/23 16:52ID:???
>厨に変なツッコミいれられるから
575=厨
0577名前は開発中のものです。02/09/23 16:58ID:???
なんかよく分からんのだが
とりあえず誰か>>571の解説を頼む。
 
正直、俺には読解不能。
0578名前は開発中のものです。02/09/24 23:47ID:???
>>577
やねうライブラリでは、2D しか対応してないって事では?
0579名前は開発中のものです。02/09/25 00:30ID:???
3Dやりたいなんて書いてないじゃん
058057802/09/25 02:18ID:???
>>579
今時の PC でゲーム作るって言ったら、
3D に対応してるライブラリのほうが、作るのが簡単で良いんじゃない?
無理に 2D に落として仕様を考えるよりも、素直にアイデアを出せるし、
三世代くらい前のカードでも、充分速かったと思うよ。
0581名前は開発中のものです。02/09/25 02:31ID:???
>>580
ん?
3Dの世界を構築するエンジンじゃなくて、
3Dハードを使うって事か?
0582名前は開発中のものです。02/09/25 08:22ID:???
3Dだと初心者で権威を失うから駄目なんだよ。
0583名前は開発中のものです。02/09/25 08:52ID:???
意味がわからない
0584名前は開発中のものです。02/09/25 17:49ID:???
3Dだと初心者で←教える人は2Dは得意だけど3Dは苦手
権威を失うから駄目なんだよ。←2Dなら深い質問も大丈夫です、かかってきなさい

という意味と思われ
0585名前は開発中のものです。02/09/25 20:08ID:???
一つのファイルにバイナリとテキストを混在させるのは可能でしょうか?
また可能ならどういった方法がありますか?
テキストとバイナリを交互に書き込んでみたのですがテキストが化けました
Delphi、Windowsです
0586名前は開発中のものです。02/09/25 20:14ID:???
>>585
テキストをバイナリとして扱えばいいんでねーの?
0587名前は開発中のものです。02/09/25 20:39ID:???
>>586
なるほど、その手がありましたか!!
ありがとうございました
0588名前は開発中のものです。02/09/25 21:07ID:???
アフォが増えたな・・・
0589名前は開発中のものです。02/09/25 21:23ID:???
やっぱりファイルヘッダはテキストのほうがかっこいいので
>>585を再度質問させていただきます
よろしこ
0590名前は開発中のものです。02/09/25 21:37ID:???
>>584
漢文を訳すより難解なり
0591名前は開発中のものです。02/09/25 21:40ID:???
>>589
ヘッダだけテキストにしてそれ以降をバイナリ
もしくは全部テキストにしたければバイナリをbase64にでも変換すれば?
0592名前は開発中のものです。02/09/25 21:54ID:???
>>591
>ヘッダだけテキストにしてそれ以降をバイナリ
Delphiでどうすればできるのか教えて欲しいです
Cではできますた
0593名前は開発中のものです。02/09/25 22:14ID:???
>>592
同じようにしる!!

その手の作業に関しては、
DelphiでできてCでできないのはわかる(VCL使っているとか)が、
CでできてDelphiでできないというのはよくわからない。
0594名前は開発中のものです。02/09/25 22:16ID:???
とりあえず、Cではどういやってたか言ってくれれば、
こたえられるかもしれんよ。
0595名前は開発中のものです。02/09/25 23:00ID:???
そういえば漏れはDelphiでパケット越しに
テキストバイナリ混成データ送ろうとして
四苦八苦した思い出があるなぁ

けど、もうどうやったのか忘れた(藁
0596名前は開発中のものです。02/09/25 23:38ID:???
Delphiを捨てればいいと思うんだけど、、、ダメ?
0597名前は開発中のものです。02/09/25 23:41ID:???
Delphiパカニスルナ!!
Personalでやったから苦労したんだよ!

ちなみにパケット越しじゃなくて
パケットに詰めて、だな
0598名前は開発中のものです。02/09/25 23:57ID:???
パケットって言っても
シリアライズとデシリアライズのコードを対になるように書けばそれで
終わりっしょ?DelphiもCも関係ないと思うんだが・・・
0599名前は開発中のものです。02/09/26 01:34ID:???
>598
アホですか?
そのシリアライズがうまくいかないって話なんだけど?

てか思い出したけど
サーバC++/クライアントDelphiでやってて
コネクションまで確認できたのに結局データのやりとりはうまくいかなくて
クライアントもC++で組み直したんだった
もちろんDirectPlay使ってたとかいうオチじゃなくてWinSockでやってた
0600名前は開発中のものです。02/09/26 01:36ID:???
>Personalでやったから苦労したんだよ!
非PersonalだとコンパイラやIDEが勝手にプログラマの無知を補間してくれるんですか?
0601名前は開発中のものです。02/09/26 06:31ID:???
Personalに欠けてるコンポーネントが
ゲームアプリ開発に及ぼすってことなのかね。
あまり考えられないよな。
 
 
・・・・DB関連のことなのか。
0602名前は開発中のものです。02/09/26 06:32ID:???
× に及ぼす
○ 影響を及ぼす
0603名前は開発中のものです。02/09/26 06:57ID:???
Indyがフリーで落とせることを知らなかったとか
0604名前は開発中のものです。02/09/26 12:44ID:???
Indyの日本語ヘルプが手に入るインターネットはどこですか?
0605名前は開発中のものです。02/09/26 15:00ID:???
(´-`).。oO(日本語ヘルプがDelphiPro以降に付属することをわかってて聞いているんだろうな)
0606名前は開発中のものです。02/09/26 15:20ID:???
IndyよりもActionManagerがほしい
0607名前は開発中のものです。02/09/26 22:13ID:???
>>599
> そのシリアライズがうまくいかないって話なんだけど?

自分がアホであることを晒してどうするよ?
0608名前は開発中のものです。02/09/26 22:33ID:???
599にはデータを扱うプログラムは早すぎるってことで。
ソケットもファイルも書き込んだ/送出したデータをありのままの姿で返すだけだし、
をれが言語によって変わることも*ありえない*と言うことが理解できてないようだから。
化けたとしたらそれは書き込んだデータと書き込んだつもりのデータが違うだけ
0609名前は開発中のものです。02/09/26 22:40ID:???
ファイルに対してシリアライズして内容をチェックするのが先だあな
素人は何でも一度にやりたがるからダメだ
0610名前は開発中のものです。02/09/27 08:45ID:???
駄スレ防止age
0611名前は開発中のものです。02/09/27 11:30ID:u5LECmtB
C++でシューティングを作ろうと思っています。
敵キャラの抽象クラスを作って、キャラごとに派生クラスをつくりました。

そこで、出てくる敵キャラすべてを格納しておくキューを作りたいのですが、
Javaみたいな、すべてのクラスを格納できるキューが作れなくて困っています。

何か案はありませんか?
0612名前は開発中のものです。02/09/27 12:38ID:???
>>611
その抽象クラスのポインタを、コンテナに入れれば?
0613 02/09/27 15:01ID:uiQG1iKW
Indyって何?(w
0614名前は開発中のものです。02/09/27 15:39ID:???
>>611
… C++ の基本から勉強し直した方が良いような。

struct Base {
  virtual ~Base() {}
  ...
};

class Deriv : public Base {...};

using boost::shared_ptr;
using std::queue;

queue<shared_ptr<Base> > q;
q.push(shared_ptr<Base>(new Deriv);
0615名前は開発中のものです。02/09/27 18:07ID:???
>>613
Internet Direct。
主要なインターネットプロトコルに対応したオープンソース形式のライブラリ。
BSDライセンスとMPLのデュアルライセンスで都合のよい方を選ぶことができる。
Delphi, C++Builder, Kylix用。

http://www.nevrona.com/Indy/
# なぜか今つながらない。
0616名前は開発中のものです。02/09/27 21:17ID:???
>>614
C++をあまり知らないヤシに説明するのに
当然のごとくboostを使ってるお前がウザイと思うのは俺だけか
0617名前は開発中のものです。02/09/27 22:33ID:???
>>616
きみだけ。
0618名前は開発中のものです。02/09/28 03:01ID:???
>>616
boost なんて、もう標準も同然じゃん。
0619名前は開発中のものです。02/09/28 03:02ID:???
>>616
ていうか、boost 無しでは生きていけません。
0620名前は開発中のものです。02/09/28 03:07ID:???
boostが標準ってお前らの中だけでの話だろ。
入門書ではまずboostを扱わないし、
ウチの会社も導入を許可してくれない。

初心者に説明するときは、極力非標準は排除して話すべきだと思うんだが。
0621名前は開発中のものです。02/09/28 03:13ID:???
boostなしで生きていけないなんて軟弱ぅ
0622名前は開発中のものです。02/09/28 04:27ID:???
>>620
かと言って、生ポインタでもかわいそうな気が……
■ このスレッドは過去ログ倉庫に格納されています