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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
ゲームプログラム技術についての質問スレッド。
駄スレ立てる前にココで聞きましょう。

■旧スレ
○パート1
http://piza.2ch.net/tech/kako/969/969984472.html
○パート2
http://piza2.2ch.net/test/read.cgi/tech/985540361

■関連スレ
○鬱だ氏のう DirectX 2 (DirectXに関する話題全般)
http://piza2.2ch.net/test/read.cgi/tech/997101556
○初心者はここで聞け!DirectX相談室 (おもに初級用らしい)
http://piza2.2ch.net/test/read.cgi/tech/991795568

         ,  _ ノ)
      γ∞γ~  \
     曰 |  / 从从) )
     | | ヽ | | l  l |     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ノ__丶从ハ~ ーノ___  <  さくら!2番ゲットなんかしないもォォォォン!!
     ||ロリ||/)\>< | ¢、 \______________________
  _ ||吟||/  8 / ̄丶.)
  \ ||醸||  . ̄ ̄ ̄ ̄\
  ||\`~~´  (<二:彡) \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
   .  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
>>1
おつかれさん!
4デフォルトの名無しさん:01/10/13 02:09

   | \
   |Д`;;) ダメダ、、、・・・・モウゲ・・・ンカッ・・・・イ・・ダ
   |⊂
   |


     ♪  Å
   ♪   / \   ランタ タン
      ヽ(;оД`)ノ   ランタ タン
         (  へ)    ランタ ランタ
          く     タン


   ♪    Å
     ♪ / \   ピカァ トコロント!
      ヽ( оДо)ノ  ティッカム!!
         (へ  )    キュピ ティチ
             >    ピカァ!
6早起きさん:01/10/13 06:43
で、結局 GetGlyphOutline でのグレイスケールビットマップは、TTフォントなら常に取得できると考えていいのか?
オーバーサンプリングなんてやってられないのだが。
76:01/10/13 06:45
グレイスケールっつーかモノスケールな。すまん。
>6
失敗する環境は存在するラシイ
素直に大きくGGO_BITMAPして縮小するか
オプション画面でも設けて失敗する環境ではGGO_BITMAPで取得するようにするべし

某プロばっかりのゲームプログラマーのMLでは無印Win95とNT,2000の特定環境で
不都合が出る場合があるのでGGO_GRAYn_BITMAPは使用してはいけない
GGO_BITMAPに関しては環境依存は存在しないという結論になってた

取り合えずこの程度のことを面倒くさがる奴はゲームプログラマーには向いてないので
趣味ならともかくプロなら転職をお奨めする
>某プロばっかりのゲームプログラマーのML
どこのこと?
10デフォルトの名無しさん:01/10/13 12:06
>>8
どう失敗するのかおしえてくれ

それと
>GGO_BITMAPに関しては環境依存は存在しないという結論になってた
本気でそういうこといってるならばちょっとヤバい
http://support.microsoft.com/support/kb/articles/Q159/4/27.asp
>>8
>無印Win95とNT,2000の特定環境
それおしえてくれると助かるんだが
>>6

正直、
『不具合出る条件の特定作業が面倒くさい』尚且つ『不具合出したくない』ならば
Non-Antialiasedでやって。そんなん我慢できないよ嫌じゃ嫌じゃ絶対嫌じゃ
ってんなら素直にベジェの曲線情報からイメージ生成したほうが早えーだろ。

             と言いたい。
138:01/10/13 15:44
>9
エロゲプログラマ御用達のところ

>10
真っ黒が返ってくるってのだったかな?>無印Win95
NT,2000での不都合に関してはあるらしいってんで詳細は書かれてないね>過去ログ見ると

おっと(・・)
NTでは依存発生するのか、いいこと知った

>11
明確な判断材料がないってんじゃなかったかなぁ
もう無印Win95なんて切り捨てていいんじゃない?
正直、あまり古い環境の奴を甘やかすのは好きじゃない。

ところで、GGO_GRAYn_BITMAPのパフォーマンスってどうなのかな?
誰か自前処理と比較してみた人いない?
「使い物にならないほど遅い」「信じられないほど速い」等の話があれば聞きたい。

俺が使うとしたら、DirectX Graphicsの文字描画ルーチン用だから、
GGO_GRAYn_BITMAPが使えないような環境は迷わず切り捨てだな。
まぁ、DirectX Graphics使うんなら1/2までの縮小はアクセラレータで処理できるから
無理にGGO_GRAYn_BITMAP使わなくてもいいんだけどね。ただ、それだとテクスチャ
サイズの制限が痛い。
Voodooも切り捨てていいのかな?
>>14
>もう無印Win95なんて切り捨てていいんじゃない?
>正直、あまり古い環境の奴を甘やかすのは好きじゃない。
>Voodooも切り捨てていいのかな?

趣味ならさ、そんなん好きなようにやっちゃっていいよ。
お友達同士でVoodoo持ってる人間がいないと分かればさ、
そこでスパっと切っちゃって全然大丈夫だろ?
それで済むならそうしちゃえ。
>>15
なんかパックマンのピンキーみたいに陰険なカキコだな。
>>16
え、そう?
うがった読み方すれば確かに読めるとは思うけど・・・・。
でも、ここ相談室だから趣味でやってるほうが普通だし
漏れもその一人だし何とも感じなかった。

むしろ、あんま細かい互換性の確保にエネルギ注ぐより
完成にこぎつける方向で頑張ったほうが有意義だと漏れは思うYO

相談室的にいけば、だけどね
1817:01/10/13 20:51
× うがった読み方すれば確かに読めるとは思うけど・・・・。
○ うがった読み方すれば確かにそんな感じに読めるとは思うけど・・・・。
>DirectX Graphics使うんなら1/2までの縮小はアクセラレータで処理できるから

これ、何の事なのかうまく読み取れんかったんだけど、
要するにテクスチャの縮小フィルタオプションでバイリニアフィルタリングを指定して
1/2縮小描画して2xサンプリングのAnti〜な出力を得るとかその辺の話だよね。

もしそうだとしたら、自前の2xサンプリングルーチンを使う場合と同様に、
例えば、ゲーム立ち上げ時とか必要なシーンの直前とか用途に合わせて
適当なタイミングでAnti〜な出力結果をまとめて生成して文字コードによる
UV参照テーブル作るような、ごく普通の使い方でいけばいい。

そうすれば、Voodooのテクスチャ寸法の制限(256×256)で生ずる手間は
他の方法と同様だし、ゲーム中文字描画が必要なシーンでのメモリ消費量も
同じになる。

というか、“あえて互換性とかを気にするんだとしたら”
この方法の場合、縮小フィルタでバイリニアが使えるかどうかとか
3Dカードのほうにも注意する必要があるし、もちろん代替処理が要る。
だから特別にメリットがあるというわけでもない。
古い環境を切り捨てるも、古い環境をフルに使うも、
好きにすれば良いと思うよ。誰も強制はしない。
そうだな。
22_:01/10/13 23:35
age
サービスパックとIE4ぐらいは載ってて欲しいよね。
今、あえてNT4でゲームする奴がいるとしたら
多分職場のマシンでやってんだろうなぁ。たまらん。
>NT4でゲームする奴

うぇ〜ん。そんな大人、修正してやる。
266:01/10/14 00:50
>8
なにやら機嫌を損ねさせてしまったようだな。正直、悪かった。
ちなみにオーバーサンプリングやってられんってのは、実行時コストの話。

ま、それほど致命的な問題でもなさそうなので、GGO_GRAYn_BITMAPでいっとくわ。
趣味プログラムだしなー。
不具合が無視できないようなら、アドバイス通り、オーバーサンプリングに切り替えるよ。キャッシングしとけばコストも抑えられるかもしれんしな。
>>26
>キャッシングしとけばコストも抑えられるかもしれんしな。
あ、それやっておいたほうがいいよ。
288:01/10/14 02:38
>26
つーかここは失礼アマチュアの人のが多いんだね……
雰囲気読めてなかったよゴメン


キャッシングに関してはGetGlyphOutline()を使用しているといってる人
2人共に独自の方法でキャッシュしてるとのたまってたよ>そのMLでは

GetGlyphOutline()自体が比較的重いAPIだから
根本的に時間にクリティカルな処理を行うのには向かないと思う
画面中に一度に表示する文字数によっては
どの処理よりもボトルネックになる可能性があるよ
3Dゲーになると切り捨てるも何も・・・なあ・・・
>>29
ウダウダ言わんと好きなようにやれ。
そろそろ製品でもvoodooを捨てる傾向が見え始めているよ。
voodooといっても256*256テクスチャ制限のあるやつね(3以前)
3214:01/10/14 18:33
>>19
日本語の文字全部はテクスチャに入りきらないでしょう。
英数字だけならもちろん静的データとして持つよ。(そもそもGetGlyphOutlineなんて使わない)

主な使い道はチャットなんで、事前に用意するのはまず無理です。
でも、チャットにアンチエイリアスいらないか。
3319:01/10/14 21:46
>>14

>日本語の文字全部はテクスチャに入りきらないでしょう。
>英数字だけならもちろん静的データとして持つよ。(そもそもGetGlyphOutlineなんて使わない)

ちょっと待った。何故そんなトホホな話になるんだ。
うーん、そういう話は何処にも書いていないんだが。
スマンけど、なんか会話がスレ違ってきちまってる気がする。

整理された有益な会話を望むレスならば、まずは会話の流れとして

>要するにテクスチャの縮小フィルタオプションでバイリニアフィルタリングを指定して
>1/2縮小描画して2xサンプリングのAnti〜な出力を得るとかその辺の話だよね。

という確認部分について返事があると嬉しいんだが。
正直、この前提が当たってるのかどうかも分からんと
返答に窮してしまうよ。

よろしく頼むな。
346:01/10/15 01:29
>28 への質問ではないが、GetGlyphOutline() は重いのかな?
TextOut() を始めとする GDI のテキスト描画 API は、内部でこいつもしくは
相当なルーチンを呼んでいると思い込んでたよ。
つまり Windows でテキスト描画するのに最も高速なのは、
GetGlyphOutline() で独自にグリフを取得して、DC 絡みの調整処理を飛ばして
自力で描画する方法だと思ってた。
紳士プロフェッショナルな方がおられたら、教えていただけるとありがたい。
TextOut()とかと比べりゃ圧倒的に軽いけど
他の画面描画周りの演算と比べるとGetGlyphOutline()は重いってだけじゃない?
なのでテキスト描画のみに限れば6は正しいよ

ただキャッシングした場合と毎回GetGlyphOutline()するのを比べると
圧倒的にキャッシングが勝つってだけ
キャッシュが一切期待できないようなことをするならまた別だね
>日本語の文字全部はテクスチャに入りきらない
それは通常使う意味でのキャッシュ(動的キャッシュ)ではないでしょ。
一回使った文字だけ、次はロードしなくてもいいようにキャッシュに
貯めておくのに使うテクスチャサイズは自由。
入りきらなくなれば利用頻度の少ない文字を捨てるだけ。
376:01/10/15 16:26
>7 で言い換えた部分だけど、グレイスケールで問題無かったな。
つーかモノスケールって表現の方がおかしい気がする。
あんまり恥ずかしかったので自分で突っ込んでおく。

>35
フォローありがとう。文章読めない奴だな、俺は。

で、ふと思ったんだが、GetGlyphOutline() の GGO_GRAYn_BITMAP だけど
こいつの返すグレイレベル数からみて内部でオーバーサンプリングしている
のかもしれん。(n=2 で 5、n=4 で 17、n=8 で 65)
となると、GGO_BITMAP&自分でオーバーサンプリングでも、
実行コストをどうこう言うのは馬鹿げていたかもな。

GGO_GRAYn_BITMAP が異常データを返す条件がはっきり分かれば、
GGO_BITMAP に切り替えるふんぎりがつくのだが、本当に誰か知らないだろうか。
ゲームプログラマ失格でもいいからさ。知ってたら教えて欲しいよ。
38デフォルトの名無しさん:01/10/15 16:44
>>37
>で、ふと思ったんだが、GetGlyphOutline() の GGO_GRAYn_BITMAP だけど
>こいつの返すグレイレベル数からみて内部でオーバーサンプリングしている
>のかもしれん。(n=2 で 5、n=4 で 17、n=8 で 65)
あなたはFreeTypeのソースでもよむとよかろう。
http://www.freetype.org/

ついでにいうと、これをつかえばOSに頼らずに
アンチエイリアス描画できるぞ。
396:01/10/15 23:27
>38
情報ありがとう。
でも、FreeType1 は高品質グリフを取得するのに
APPLE とのライセンス契約が必要みたいだし、
FreeType2 は GPL なんだね…。(;´Д`)
わがままでごめんよ。そろそろ逝くわ。
>>39
よく読めー
GPLじゃない、もっと制限の緩いFreeTypeライセンスを使えるよ。
それとVM(Appleの特許部分)はやってみればわかるがなくても十分。
41通りすがりの:01/10/16 02:40
少し気になったのですが、
エロゲプログラマ御用達MLって、何処にあるのでしょうか?
少々興味が有りましたので...
426:01/10/16 05:10
>39
アーカイブの LICENCE.TXT を読んで理解した。
FTL と GPL の二者択一だったのねん。マヌケだたよ。
早い話、doc に FreeType コードを使用した旨を明記しとけばいいんだね。

ソースはまだ読んでない。へたれなんで多分理解できないしな。(;´Д`)
ただ FAQ を読むに、オーバーサンプリングやフィルタリング無しで、
256 level の anti-aliased イメージを生成しているわけか。優秀だな。
謹んで有効な選択肢の一つに入れさせてもらっておく。>FreeType2
438:01/10/16 06:33
>41
ア○スソ○トの妹○雄○さんが運営してるところだよ
なんなんだお前らは。
有用な議論してるのかと思ったら……

プロファイルしろや!!!!!
バカの巣窟。
そして44は巣窟を「すくつ」と読んでいるに1票
プロファイルを取るにはコードが必要、で上の方の話は
コーディング前にベストな手法を他人から聞き出して楽しよーって話(w
4741:01/10/17 04:28
>>43
早速のレス、ありがとうございます。

ア○スソ○トは判るのですが、
妹○雄○と言う方の事は、私の知識ではまったく見当が付きません。
今回はあきらめることにします。

有り難うございました。
488:01/10/17 04:51
>47
○尾○大さんだよ>後はgoogleへ
>>46

ゴミ溜め2chの情報乞食に自分で調べろゆーても話聞かんもん。
適当にあしらうなり放置プレイするなりホラ吹き込んで弄ぶなり
好きにしたらええがなー
50デフォルトの名無しさん:01/10/17 17:29
高低差のあるマップで移動範囲を取得したいんですけど
良いアルゴあります?
17ms以内に処理を終らせたいので・・・
51 :01/10/17 17:31
>>50
BBXに書いてた人?
52デフォルトの名無しさん:01/10/17 17:34
>51
BBX?
53デフォルトの名無しさん:01/10/17 17:44
>>51
違〜う
SRPGを作りたいんです。
タクティクス・オウガみたいの
>>53
SRPGのマップ程度なら、どんなに糞遅いコード書いたとしても17msもかからん。
>>50
それこそプロファイルかけろと言われかねん。
バリバリ3Dでもない限り描画以外の処理はそんなにかからんよ。
素直に実装してみそ。
>>50

まず、その17ms以上かかったという衝撃的ソースコードを
禿しくキボンヌー
57デフォルトの名無しさん:01/10/17 23:34
58デフォルトの名無しさん:01/10/17 23:41
WINDOWSのGDIだけしか使わないでアルファブレンディングを表現するにはメモリを直接操作しないと駄目ですか?
>>58

W2K限定ならGDIでも一応は出来るよ。
使い方はここ(↓)に載ってるから。
http://www.microsoft.com/japan/developer/library/default.asp
60デフォルトの名無しさん:01/10/17 23:54
英語版によるとWin98以降でも使えることになってるが
Win98のAlphaBlendはバグバグで使い物にならん。
実質WinMe/2000以降限定。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_6ig4.asp
63デフォルトの名無しさん:01/10/18 00:40
>59-62
感謝。ゲーム作成ソフトに、デザインのためのGDIのみでのABが必要だったのです。
もうwinXPも出るしwin98,95ユーザは範囲に入れないことにします。
64Win98ユーザー:01/10/18 02:38
>>63
デザインの都合のためだけに捨てられるのか・・・(´Д`)
>>64
ゲーム用のツールでって意味だろ?
製作者側でしかつかわんなら問題ないでしょ。
オープン系の開発ならともかく。
動かないゲームは遊ばなければ良い。ただそれだけの話。

そういえば、某フリーウェア雑誌は、
Win2kでの動作保証はしないと書いてあったな。
67Win98ユーザー:01/10/19 05:17
動かないことが悲しいんじゃない。捨てられることが切ないの・・・(´Д`)
>Win98ユーザー

はいはい。分かった分かった。悲ちい悲ちい。

■人生相談板
http://piza2.2ch.net/jinsei/
■心と宗教板
http://mentai.2ch.net/psy/
■人権問題板
http://ton.2ch.net/rights/

仲間に慰めてもらえ。
後、心療内科に行け。
>>67
まだ結構使われてるだろうWin95なんて、MSにも捨てられてるじゃん。
世の中には、Nimda防ぐためにIE6入れようとして、インストールできないやからもいるんだよ(藁
70Win98ユーザー:01/10/20 03:24
>>68,69
もっと面白いこと言って・・・(´Д`)
>>70
正直、そろそろ他所に逝ってほしい。
72Win98ユーザー:01/10/20 06:27
>>71
面白い。次はマ板にでもいくか・・・(´Д`)
http://www.cbook24.com/bm_detail.asp?sku=99924304
この本買った人いますか?評価きぼんです。
>>73
昨日書店でパラパラ見たけど、要るか?

この手の〜の作り方本を買うくらいなら、他の基礎的な本を買って読んだ方が
いいんじゃないの?
基礎が出来れいればこの程度の応用ならできるだろうから。
75デフォルトの名無しさん:01/10/20 16:16
>>74
この板に「RPGの作り方教えてくださ」ってクソスレ立てる奴が一人でも減ってくれるなら、
俺的にはこの本の存在価値を認めてあげても良い。
76デフォルトの名無しさん:01/10/20 16:42
>>75
かれらが作りたいのはFFだから(藁
彼らってリディアたん一人でしょ。
っつうか、上げんな。
7875:01/10/20 17:24
7975:01/10/20 17:25
>>77
正直スマン。78の間違い書き込みもスマン。
80デフォルトの名無しさん:01/10/20 18:13
まず本を読まずに自分で作って、ゲーム作りの厳しさを知ってから読んで欲しいな。
81デフォルトの名無しさん:01/10/20 18:31
それでは >>73 の言う本は、「ゲームづくりに一度は挫折した人向けの本」ということでよろしいか?
じゃあ、その本は幅広いニーズが見込まれるということか。
凄いじゃないか。Game Programming Gemsで消化不良おこして
腹をくだすぐらいなら、それ買ったほうがいい。いいよ。>>73
そう?
読んでないけど、キャラクタをクラスにするとか、スクロールのやり方とか、そういう簡単な事しか書いてないような気がする。
それが世の中の需要なんだろ。需要。

「よーし、パパはC++覚えてゲーム作っちゃうぞー」とか言ってるの。もう見て(以下略)

そりゃ売れるさ。
85デフォルトの名無しさん:01/10/20 21:43
アニメーションを含めてドット絵描く
エディタってどれが良いの?
86デフォルトの名無しさん:01/10/20 21:49
エッジでしょう。EDGE。
GraphicsGaleもあるでよ。
俺はPaintShopPro3でドット打ってるが、何か
>88
PSPってどうやって点打つの?
太いブラシとかエフェクトしかないんだけど。
ver7なんだけど機能が削られたのかな。
エフェクト関連のツールで、何か良いツール無い?
>>85
漢なら68エミュレータ上でEELを使うしか。
>>73
作者さんは、アドベンチャ−ゲームプログラミング書いた人だね。
これからはじめる人や挫折組みにはいいのでは?
>>85
EDGEとD-Pixedかな。
D-Pixedは昔使ってたけどアンドゥが一回しかできなかったり、
範囲選択中に不用意にクリックするといつのまにか変なところに貼り付け去れちゃってたり
したんで、徐々にEDGEに移り中。
うちのグラフィッカさんは移行が面倒らしく、何度もデータ消しながら泣く泣く使ってる。
データ消えて時に叫ばれる奇声はもう聞きたくないので、そろそろ乗り換えてほしい・・・。

EDGEもD-Pixedになれた身にはちょっと、操作の面倒くささがあってなかなか慣れられないけど。おれは
>>92
プログラム言語が理解できなくて挫折した人のほうが多いと思われるのでツクールを推奨。
9588:01/10/26 21:39
>>89
遅レス御免。

 Ver.3の頃のPSPは今とは別物と考えた方がヨシ。
 イラスト系の絵を描こうとすると相当使えないシロモノだけど、
逆にドット打つのにはかなり便利。
 なんというか、アイコンエディッタ系のソフトを強化したという感じ。

 レイヤー機能が無いのが痛痛痛々々・・・・
96デフォルトの名無しさん:01/10/27 00:59
定期age
話題がないで脛。
そうで脛
99デフォルトの名無しさん:01/11/01 09:38
age
100デフォルトの名無しさん:01/11/01 13:14
ハロー(注意報)。
えっと、Game Programming Gemsの誤植表とかないですか?
クォータニオンの乗算とか盛大に間違えてる気がする。

とりあえず自分で導出したからいいけど、
他にもたくさんあるんちゃうかみたいなー。
コンピュータ本は、コレクション趣味のあるひと以外は
初版に手を出してはいけないの法則。
102100:01/11/01 13:26
ギャース! 今の版では直ってるかなー。見てこよっと。
103.:01/11/01 13:55
>>93 >>85
そうそう、Winってなかなかいいドット絵エディタが見つからない。
俺もD-Pixed使っているけど、ちょっとバグがあるので乗り換えようかなと思ってる。
>>100
マジっすかー。
せっかくだから正誤対応表つくろうよ。
105デフォルトの名無しさん:01/11/01 20:14
EDGEはわりかしよかですよ。
MSXや68時代のドットエディタみたく、右ドラッグで連続コピーできるし。
106デフォルトの名無しさん:01/11/02 06:05
オブジェクトの管理ってどうやってる?
例えば、相互参照するようなものの場合、
片方解放しちゃうともう片方からアクセスした場合、
中身は保証されないよね?(運良くアクセスできるかもしれない程度)
やっぱ、生ポインタは危険だから、1クッションおく?
それとも、片方解放した時に、もう片方に解放したというメッセージを渡す?

なんかスマートでこの方法で管理しておけば、ラクだし応用きくぜっ
て言う方法は無いかな?

あ、ここでのオブジェクトは、「敵A」とか「自機」とかのレベルね。
107デフォルトの名無しさん:01/11/02 06:32
親子関係以外は相互参照持たせないようにするけどなぁ。
>>106
私も知りたいですね。>スマートな管理
Singleton なら static なポインタを仲介して
1クッションですが、そうでないときは
メッセージ流すくらいしか思いつきません。
>>106

>それとも、片方解放した時に、もう片方に解放したというメッセージを渡す?

これが一番いいんじゃない?
110106:01/11/02 07:02
>>107
いや、むしろ用途的には片方参照しかしない場合でもいい。
参照しているオブジェクトがいつのまにか不定になっている場合の問題を想定してる。

その場合でも、オブジェクトを解放する時に参照している側にメッセージを送るとなると、
どのオブジェクトに参照されているかをリストかなんかで管理しないといけなくなる。
すると結局相互参照になっちゃうわけで。

>>108-109
やっぱ、メッセージ流すのがはやいか・・・。
111106:01/11/02 07:06
あとワンクッションの方向で考えていたのは、オブジェクトを管理するものを作っておく方法。
オブジェクトを生成したときには、ユニークなIDを割り振り、管理者に通知(管理者側はリストに追加)。
オブジェクトを破棄するときには、管理者に通知(管理者側はリストから削除)。
オブジェクトを参照する場合は、管理者にIDを渡してオブジェクトの実体をもらう、と。
IDに対するオブジェクトが存在しない場合は、オブジェクトが無いよということを返してもらえばOK。
112106:01/11/02 07:11
ていうか、よく考えたらメッセージ流す方法でも十分か。
とりあえず、オブジェクト生成時に管理者に登録、破棄時に削除するのは前と同じ。
管理者がオブジェクトを削除するときには、リストに登録してある全オブジェクトに
削除メッセージをブロードキャストする、と。
113デフォルトの名無しさん:01/11/02 07:45
>>112
生成・消滅が頻繁に発生する場合だと
メッセージ配信のコストがリストにつながる数に比例するので
それがネックですね。許容できるかどうか…。
1フレーム毎に100超えるとキビシイ気もします。
よりスマートな方法はないものでしょうか。
オブジェクトが多くなればどうしてもオーバーヘッドはかさむよな。
生成消滅が頻繁ならばブロードキャストせずに管理リストの方にインスタンス判定
の仕組みをつくっておいて、必要に応じて各オブジェクトがアクセスする。
リストからターゲットのインスタンス情報を取り出すアルゴリズムが勝負になる。
115114:01/11/02 09:00
あとはすべてのオブジェクトをひとつのリストで管理せずに、
グループ分けして検索対象を最初から絞り込めるようにしておくか。
これ以上は汎用的な話ではなく、ケースバイケースで対象のHit率の偏りを
利用してゆくしかなさそう・・・。
116デフォルトの名無しさん:01/11/02 09:30
>>106
信じられない!
表示オブジェクト1個1個に実スレッド割り当てる馬鹿は居ない。
>>116
そりゃそうだ。
つーか >>106はそんなこと言ってないんじゃ?
メッセージっていってもスレッド間の非同期メッセージだけじゃないでしょ。
単なる同期関数コールだって、メッセージといえないことはない。
というか文脈からそう思った、常識的に。
118sage:01/11/02 09:36
COMみたくそれぞれのオブジェクトが参照カウンタをもつ。
カウンタが0になった時点で自分自身を削除する。
カウント処理漏れはスマートポインタでなんとかする。

ただしこれはあまり根本的な解決では無いような気もする。
119デフォルトの名無しさん:01/11/02 09:38
>>117
スレッドでないにしても消滅するとワーク解放するのが駄目。
120106:01/11/02 12:28
やっぱ、ブロードキャストせずに、リストをハッシュで実装して1クッションおく方が早い(速い)気がする。

>>116-117
まぎらわしくてすまんのぉ。
オブジェクト間どおしの通知のことだわ。117のとおりで。

>>119
で、ワーク解放しないでどうするの?ほっておくとメモリ食いつぶすけど。
>>120

質問。

デフォルトのnew演算子を使ってるのだろうか。
つまり、「オブジェクト毎のワークの解放動作」がすなわち
「ヒープの解放動作」となってるのだろうか。

もし仮にそうならば、
例えば、解放後のオブジェクトにアクセスしても、OSに叱られない
ようにする方法も模索してみてはどうか。
122121:01/11/02 13:21
その上で、そのオブジェクト内の固有のIDを検査し
そのメモリ領域が所望の情報をまだ格納してるのか(まだ解放されずに無事なのか)
どうかを吟味すればいいのではなかろうか。
123デフォルトの名無しさん:01/11/02 13:22
>>120
システム屋がゲーム作ってはいけない見本。
124デフォルトの名無しさん:01/11/02 13:29
状態を考えましょう。
表示オブジェクトの終了状態とそのメモリを使用しているプログラムの
状態とは別のものです。

よって、表示オブジェクトの終了をもってメモリを解放するのは
間違ってます。
125デフォルトの名無しさん:01/11/02 13:38
まあ、WINだけの話ということで。
なんか的外れなチャチャ入れてるのがいるな。
ま、生成解放を、
オブジェクトのアクティブ化、非アクティブ化と読み替えても
今までの話は当てはまるんじゃない?

それほど目新しい話でもなかったけど。
128106:01/11/02 14:23
ガ−−−Σ( ゜Д ゜)−−−ソ
無能さが露呈したか

こちらのシステムは、今は「オブジェクト解放=ヒープ解放」になってる
# はず。処理系のメモリマネージャまかせなんで
で、オブジェクト解放しちまうと、メモリを参照したときに危ないと。
だもんで、
・解放したことを他のオブジェクトに知らせる
・インスタンスがまだあるか(解放されずに無事か)調べて対処する
などと、解決策を考えているところ。

ところで、メモリマネージャを自作して「オブジェクト解放≠ヒープ解放」としたところで、
いつかその解放した領域を再割り当てしてしまっては、
結局間違って参照したときに問題が起きるのでは?

>>123
イタイイタイ石投げないで・・・

>>124
了解
>>128
>結局間違って参照したときに問題が起きるのでは?

例えばどのような問題を懸念する?
要するにワイルドポインタとかダングリングポインタの問題であろう。
ゲーム内のオブジェクトは相互参照しまくっててややこしいので、
どうフールプルーフを確保したものかと。

吾輩も新オブジェクト管理システム設計中なのでしばし待て。
キャラクターの氏=インスタンスの氏と分析したのだから
死んだオブジェクトという状態(死体)が必要無いわけでしょ?
上記の等式が成り立たないなら
状態を持って管理しなきゃ。
>>124
>>131

勉強になる。
133デフォルトの名無しさん:01/11/02 17:56
ダイナミックなプログラムを組むのは止めましょう。
>>130
>要するにワイルドポインタとかダングリングポインタの問題であろう。

すいません。
後者(dangling pointer)をここで懸念する理由が分からないです。
(前者は定義が分からないので省きます)

つまり、アプリ側が管理するメモリ領域(例えば固定長メモリプール)内の
オブジェクトを指し示すポインタがあるとして、例えばそのオブジェクト内の
固有のIDを調べたら『システムエラー』が発生してしまう、などとという
状況が想像できません。

単にアプリのメモリ管理自体がバグバグのヘボヘボというだけのような
気がするんです。どうなんでしょうか。
135デフォルトの名無しさん:01/11/02 18:53
かっこいい画面効果教えて
Windowsとかのアクセス保護エラーのイメージなんじゃないの?
単なる整数型のIDだったら問題ないだろうけど、
ポインタだったりすると変なとこりードライトしたり。
関数ポインタだともっとヤバイでしょ。
>かっこいい画面効果教えて
ラスタースクロールこそ時代の先端
ピカピカ〜!!ってやチュウ
>>137
ラスタースクロールって何?
ラスタごとにスクロールするんだよ。
そのまんまか
でも何でそれが先端なんだ>ラスタースクロール
そんな10年以上前の技術を先端とか言われてもなぁ…
WonderSwanでラスタスクロールやったらチョット褒められるか?
146134:01/11/02 19:54
>>136
>Windowsとかのアクセス保護エラーのイメージなんじゃないの?
勿論です。

>単なる整数型のIDだったら問題ないだろうけど、
>ポインタだったりすると変なとこりードライトしたり。
>関数ポインタだともっとヤバイでしょ。
勿論です。

文章がうまく伝わってなかったみたいで、すみません。
補足すると、134では以下の話の流れを元に質問しました。

>>106>>121-122>>128>>129>>130>>134

元の>>106の話題としては>>119,>>124,>>131辺りの解答が
どうも話の本筋みたいなので、それとは少しズレた質問かもしれません。
147134:01/11/02 19:56
× 解答
○ 回答
>そんな10年以上前の技術を先端とか言われてもなぁ…

マジレスされてしまった。鬱氏。
>>148
ワラタ、同情するよ
150デフォルトの名無しさん:01/11/02 21:24
シューティングで、弾が敵に当たったかどうかを判定したいのですが、
敵オブジェクトを弾オブジェクトの判定メソッドに引数として渡すべきか、
弾オブジェクトを敵オブジェクトの判定メソッドに引き渡すべきなのか、
わかりません。
順当にいくと弾に引き渡すほうが自然だと思うのですが、
またはぜんぜん違う方法でやるべきでしょうか。ちなみに言語はC++です。
判定オブジェクトに両方渡すのはどうよ?
152150:01/11/02 22:07
>151
それだ!
3Q!
153デフォルトの名無しさん:01/11/03 00:31
>>128>>128
例えばオブジェクトの生成はそのシーンの始めに必要な分を配列で一括して
行い、解放もシーンの最後にまとめて行う、じゃ駄目なの?

んで、オブジェクトに flag を持たせて、その flag を見てオブジェクトが
再利用可能か現在使用中なのか判別して管理する、と。 例えば、シーンの
途中で、そのオブジェクトがいらなくなったら解放するのではなく flag を
立てて、再利用可能状態 = そのオブジェクトは解放されている、とする、
みたいに。
154デフォルトの名無しさん:01/11/03 00:51
オブジェクト指向でHITーCHECKか、おめでてーな。
通はOOOOO(企業秘密)
155デフォルトの名無しさん:01/11/03 00:57
>>154
一文字多いぞ(w
156デフォルトの名無しさん:01/11/03 01:00
>>153
単純なフラグだと、使用を終了した後の配列を直後に別のオブジェクトが
使用した場合、子が死ななくなるのでマズイ。
>>153

それ、一言でいえばメモリプールだと思う。
>>121-122>>134辺りで出てる話と仕組みは同じ気がする。
158デフォルトの名無しさん:01/11/03 01:02
子にメッセージ送って、子が全滅するまで親が監視、その後自殺。
これが正しい一家心中。
159デフォルトの名無しさん:01/11/03 01:03
PPP−@いJJg./.U)00^^−@L/.i_KKPP−PPP/.
>>153
オブジェクトのデータ構造と、相互参照をどうするかは別々の問題でしょ。
161デフォルトの名無しさん:01/11/03 01:29
普通は固定配列。
162デフォルトの名無しさん:01/11/03 01:33
固定寅泰
>>161
C++ の場合は operator new を override すれば良いだけですな。
164デフォルトの名無しさん:01/11/03 01:38
>>154
気になる〜。ご教授お願いいたします。
混乱してきた。
まず、インスタンスは解放しないってのは前提だよね。
それで相互参照してる相方が非アクティブになったことを知りたいんだよね。

子が死なないとか、一家心中とかってそれと関係あるの?
オブジェクトの集団を管理するオブジェクトを親とよんでる?
子オブジェクト同士の直接の相互参照をさせずに管理オブジェクトを介して
情報やり取りする、という話?
166150:01/11/03 01:42
>154
まぁ、確かに、OOでいくと、チェックするクラスを独自に作るのは変かもしれないが、
俺の設計がクソだったので、チェックするクラスを追加するとうまいぐあいにいった。
167デフォルトの名無しさん:01/11/03 01:54
>>165
オブジェクトを生成したオブジェクトが親、生成された方が子。
親子の話は違ったかも。

単に一つの配列の決まった場所、あるいは範囲に各々のオブジェクト用の
ワークを配置して配列番号で見に行けば済む事です。
168153:01/11/03 01:59
>>153
んん? 子って、どれのことを指してる?
>>157
うん。121-122 の具体例の一つとして上げているだけだね。
>>160
もともと、相互参照が主題ではなくて、オブジェクト解放後
の参照(と解放動作による時間的ロスも?)を防ぐのが目的じゃないの?
相互参照してる相方が生きているかどうかは flag で判断できるし。
169153:01/11/03 02:06
前の >>153>>156 の間違い。
>>156
言ってる意味がわかった。
単純な flag だけじゃだめだね。もう少し工夫しないと。
170デフォルトの名無しさん:01/11/03 02:09
ついつい相方というのを忘れて、ボスキャラとボスの発射した
ミサイルとか考えてしまった>親子
171106:01/11/03 07:56
GameProgramingGemsに生ポインタでなく、ハンドルベースで
リソースにアクセスする方法がかいてあった。
よく読んでないのがバレバレだ。逝って来る・・・。
わはははは。まあまあ、面白いのでいいじゃん。
でもこーゆーネタ載ってるGame Programming Gems(・∀・)イイ!!
ガベコレ導入してるヒトいます?
175 :01/11/03 08:28
Flyweight使えば?
この場合にFlyweightが何の役に立つんだ。
177デフォルトの名無しさん:01/11/03 10:44
>>174
iアプリ開発者は皆一度は導入してみて、やっぱSOには効かないのであきらめて
gc消したりしてると思うのは俺だけ?
178iアプリ開発者:01/11/03 11:02
いったい何言うて万年。
ていうか、昨夜から致命的に的外れなカキコが散見されるのは何よ。
ここで話されているのはFlyweightのintrinsicな情報ではない。
extrinsicな情報を領域解放せずにどうやりくりするかである。
混乱するから止めれ、意味深な的外れは。
基地外出現してスレ沈む。
181106:01/11/03 22:20
もしかして俺のこと(; ´∀`)
(・∀・)ンナコターナイ
183sage:01/11/03 22:49
相方の状態問題は解決したのかな?
>>106 はとりあえず研究モードに入った。
ここでは・・・
なんか具体例が無いとこれ以上はやりにくい。
185デフォルトの名無しさん:01/11/03 22:55
ソースにコメント書かない奴、逝ってイイヨホント。
1つの関数に、それと同じくらいの(関数ソースと同程度、もしくはそれ以上の文字数の)
コメントは要るだろ。バグ出して速攻修正出せないゲームメーカーのプログラマは、
大抵このケースだな(コメント書いてない)。
ナイキスト曲線の計算もいいけど、ソース設計をもちっと勉強したほうがいいんじゃない?
って奴が、この業界たくさんいるからなぁ・・・

結論:
コメントがないソースは、自慰ソースという事で。
186デフォルトの名無しさん:01/11/03 23:01
>>185
のんきに馬鹿にも理解できるように大量のコメント書いてるほど
ゲームプログラムは暇じゃない。
187デフォルトの名無しさん:01/11/03 23:01
>>185の書いた半分以上がコメントで埋まってるソースを
見てみたい
int i; // 変数 i を整数型で宣言する(初期値は代入しない)
i = 5; // 変数 i に 5 を代入する


とか書いてあるんじゃないのかな
>>188
Mind 使えと言いたくなるね。
>189
なんすかなんすかそれ?
>>190
日常言語に近い言語。
みていて非常につかれる。

コメントってのはわかりづらいと思われる場所に書くべきものであって
みて明らかな部分にコメントをつけるのはナンセンスでしょ。
192185:01/11/03 23:25
ahh勘違いすんな、全部が全部実ソースの注釈ばっかって事じゃないぞ。

関数作ったなら、必ずインターフェイス(引数、返り値)のコメント
も作りなさい、って事だ。例えば、

/********************************************************************************
 矩形アルファブレンド処理

 BOOL AlphaBlendingRect( GRAPHICPLANE PlaneDst,
int PointXDst, int PointYDst
GRAPHICPLANE PlaneSrc1,
int PointXSrc1, int PointYSrc1,
int XSize, int YSize,
GRAPHICPLANE PlaneSrc2,
int PointXSrc2, int PointYSrc2,
int AlphaIn, int MMXFlg ){
 引数
GRAPHICPLANE PlaneDst : 出力先プレーン
int PointXDst : フェード開始X座標
int PointYDst : フェード開始Y座標
GRAPHICPLANE PlaneSrc1 : 入力プレーン1
int PointXSrc1 : フェード開始X座標
int PointYSrc1 : フェード開始Y座標
int XSize : 幅
int YSize : 高さ
GRAPHICPLANE PlaneSrc2 : 入力プレーン2
int PointXSrc2 : フェード開始X座標
int PointYSrc2 : フェード開始Y座標
int AlphaIn : アルファ値
int MMXFlg : MMXフラグ
 返り値
int 0 : 正常終了
1以上 : エラーコード(異常終了)

*********************************************************************************/

とかな。
最近見た他人のソースで、しっかり書いてる奴あまり見かけん。
まずは!バグ出したくなかったら綺麗にソース書け!
注釈は書いても損にならないし、逆にメリットタプーリだぞ?
っていうか、ある程度プロでやってるのならわかるっしょ?>186氏
(プロじゃなかったらスマソ)
193185:01/11/03 23:27
タブぶっ飛ばされてら・・・きたねえな(藁
イッテキマース
194デフォルトの名無しさん:01/11/03 23:32
>>193
おお!長い引数派発見!
同士よ! 
>>185 は >>185で自分で結論つけてるんで、もうこの話はおしまい。
196デフォルトの名無しさん:01/11/03 23:59
引数をたくさん渡すのなら構造体にしてそのポインタを渡すように
してみてはどうでしょう。
197長い引数派:01/11/04 00:03
>>196
それはDQNプログラムの見本のようなもの。
一見綺麗に見えるが、可読性はかえって悪くなる。
何を渡しているか見るときにいちいち構造体に置きに行く部分を
見に行かなければならないし、使わない構造体だから忘れる。

結論。引数を縮めるためだけの構造体はDQN。
PointやRectは構造体にしてもよさそうなもんだが。
199デフォルトの名無しさん:01/11/04 00:14
>>198
そういう場合もあるけど、定数いれて使う場合は不便。
200185:01/11/04 00:14
その関数を使うためだけに、POINT構造体やRECT構造体使うのは、
あまり得策ではないと考えたため、今に至る。
なぜなら、

void TestProg( POINT a );

のような関数の場合、引数に直接数値を入力する場合

{
POINT Test;
Test.x = 100;
Test.y = 100;
RectProg( Test );
}
と渡さなければいけないけど、構造体を使わずに引数を作成すると、

void TestProg( int x, int y );

の場合、

RectProg( 100, 100 );

の1行で済んでしまうわけDa!
201デフォルトの名無しさん:01/11/04 00:15
>>200
やはり同士は同じ考えのようだな。w
>>192
ってかプロさんよ。BOOLに対して
> 返り値
>int 0 : 正常終了
>1以上 : エラーコード(異常終了)
は、一応 int 0 と書いてあるからBOOLを int にキャストした場合の
値の事なんだろうけれども、いかがなものだろうか。
>>200
C++でPOINTが適切に定義されていれば
RectProg(POINT(100,100));
ですむがな。しかもわかりやすい。
204デフォルトの名無しさん:01/11/04 00:21
>>200
せめて、
POINT Test = {100,100};
RectProg( Test );
にしてくれよ。
Point *Test;
Test = (Point *)malloc(sizeof(Point));
SetPoint(Test, 100, 100);
RectProg(Test);
なぞはもってほかでしょうか。
206デフォルトの名無しさん:01/11/04 00:22
>>203
でも遅い。
>>203
まぁ、Cだったらそれは使えないし、
結局は全体としてどう体系化されているかだろうね。
自分だけがインタフェースこだわっても仕方なかろう、インタフェースなんだから。
208長い引数派:01/11/04 00:25
俺はBOOLなんか使わない。
エラーの種類増やしたい時不便、というのは言い訳で、単純な
構造を好むから扱う型は増やしたくない。

ついでにいうとINTは機種依存だから使わない。
209デフォルトの名無しさん:01/11/04 00:26
RECT渡ししたい場合はラップすれば済む事。
210デフォルトの名無しさん:01/11/04 00:28
同じ事やるのに、やたらにソース増やすのはDQN。
211デフォルトの名無しさん:01/11/04 00:30
>>208
俺は思った。
機種依存性なんて気にする方が馬鹿じゃないかと。
だってintが32bitのコードが16bit環境でまともに動くわけないじゃん。
結局全部書きなおす必要があるんだしね。
212185:01/11/04 00:30
INTで機種依存か・・・
今、Pieceちゅー奴のプログラムやっとるけど、RiscCPUは
WORDが32Bitなんだな。この前知った俺はやっぱヘボですか?
データ転送でなーんか失敗してたのよね(;´Д`)
>211
208の発言を好意的にみて、たぶんただのintは使わずに
typedefされたものをつかうぜ!という意味だと思う。
大文字でINTと書いてあるのが謎だけど。
>>211
> 結局全部書きなおす必要があるんだしね。
あんたが一般的なプログラマならば「全部」は言い過ぎだろ・・・
それとも全部書き直さなきゃいけないようなコードをいつも書いてるのか?
>>213
intだとちゃんと適正なビット長になってるかどうか判断できないってこと
じゃないの? 速度を極めるならレジスタ長なんかも気にするだろうし。
ま、普通はintは適正なビット長をとるもんだけど。
>>210
ソース量は関係ないだろう、
どっちかというと大事なのはコンパイル後のバイナリサイズだ。
217デフォルトの名無しさん:01/11/04 00:40
>>214
全部というか、変数の型に依存する部分の話ね。
例えtypedefでUint32とかUint16とか定義しても、
16bitCPUでのUint32演算の速度なんて比較にならないくらい遅いし。
ちなみに当方ゲームPGね。
218長い引数派:01/11/04 00:56
>>211
8-32ビットマシンのどれでも動く様に作ってます。

>>212
WORDってコンピュータの基礎知識的にはそのマシンのbit長。
>>185
暇なのでコメントを昔の俺流に書き換えてみた。
引数いちいちコピってると、うっかり不整合を出してしまったりして
メダパニになるのでこうなったのだ。

今はドキュメント生成ツールを使ってるからどうでもいいんだけどー。

//***************************************************************************
//*  矩形アルファブレンド
//*
//*  返り値
//*    0     : 正常終了
//*    1以上  : エラーコード
//***************************************************************************
int AlphaBlend(
  GraphicPlane dstPlane    // 出力先プレーン
  int dx,               // フェード開始X座標
  int dy,               // フェード開始Y座標
  int width,             // 幅
  int height,            // 高さ
  GraphicPlane srcPlane1, // 入力プレーン1
  int sx1,              // フェード開始X座標
  int sy1,              // フェード開始Y座標
  GraphicPlane srcPlane2, // 入力プレーン2
  int sx,               // フェード開始X座標
  int sy,               // フェード開始Y座標
  int alpha,             // アルファ値
  int mmxFlag)           // MMXフラグ
{
...
>>219
ふーん、ってかんじだけど、
192よりはこっちのほうがシンプルでいいと思う。コメントのつけかた。
221デフォルトの名無しさん:01/11/04 01:04
>>213
ちゃうよ。
char,short,long、+unsignedを使ってる。
intが機種依存なのはCの入門書に書いてあることだし、多機種扱う
PGが機種依存なコード書くのは間違い。
ちょい待ち。まさかchar,short,longが依存しないとか思ってる?
>>197
速度を求めるなら構造体のポインタ渡しなりにすべきだけどね。
保守性って意味ではそうなのかもね。
ケースバイケースってやつだよね。
ね。
224デフォルトの名無しさん:01/11/04 01:10
>>222
依存しないと思ってる。
>>224
では、K&Rでもお読みあれい。
226デフォルトの名無しさん:01/11/04 01:12
>>23
引数の数が2、3個なら値渡しにした方が高速な場合も多い。
RISC系はレジスタで渡すしね。
227デフォルトの名無しさん:01/11/04 01:12
ああ、そういやsignがデフォルトで違う奴があったな。
そういうのはsys/type.h(だったかな?)書き変える。
228デフォルトの名無しさん:01/11/04 01:13
>>225
いらない。問題起きたら自分で解決する。
charは8ビットとは限らないという衝撃の事実
>>224
依存します。知っておいた方がよい。
231デフォルトの名無しさん:01/11/04 01:16
Cで?
>>228
ってことはそのソースは永遠にあなたの手を放れなくて
永遠にあなたがメンテをおこなうってことね。
気楽でいいなあ
>231
そうだけどなにか?
234デフォルトの名無しさん:01/11/04 01:19
>>229
charが8bitでない可能性を考慮するより、
charが8bitでないコンパイラを使わないようにした方が
幸せになれると思うのだが。
235デフォルトの名無しさん:01/11/04 01:19
>>232
凄く勘違いしてる。
>>227
そういう勝手なことするのはいただけないなぁ。
せめてユーザー定義のtypedefにして欲しい。
あんたがプロジェクトの開発の最高責任者とかなら止めないけど。
>227
標準のヘッダファイル書き換えか・・・
綺麗じゃないが手っ取り早そうだ。
一緒に仕事はしたくない人種ではある(藁
>235
え、じゃあおしえてよ
自分のソースを自分がメンテしなきゃいけないってことじゃないの?
それともあなたのまわりはそういうソースをかく人間でいっぱい
ってこと?
まぁ俺の周りもそういうやつでいっぱいだけどさあ
>>238
自分で全部メンテできる範囲でしか仕事しないのか?
過去から未来にかけてあわせて。

他人に引き継げるようなソースを書いて仕様書書いて、
新たなプロジェクトに向かってゆくのがプログラマのあ
るべき姿だろ。
これは、分野関係ないぞ。
>>221
はい、タケコプ^H^H^H^HK&R第2版p.44から。

> char 1バイト、ローカルな文字セット内に1文字を保持しうる
> int 整数、通常ホスト計算機の自然な整数サイズ
(注:1バイト=8ビットとは限りません(マジで))

> (…)守るべき唯一の条件は、shortとintは少なくとも16ビット、
> longは少なくとも32ビット、shortはintより長くてはならず、
> intはlongより長くてはいけないということである。(…)

んで。やっぱり固定長な型が必要だってんで、
C99からはint16_t、int32_tなどが追加されております。
今後はこれを使いましょう。↓

プログラミング言語 C の新機能
ttp://seclan.s5.xrea.com/c99d/

あー疲れた。
>>239 すまん。
「 自分のソースを自分がメンテしなきゃいけないってこと」
ってのは、さすがにそれは俺も思ってない。228に対して
いってるんだよーん
242デフォルトの名無しさん:01/11/04 01:29
>>238
最終製品は特定機種でしか動きません。
ゲームにメンテなど有りません。(DL型ネットゲーを除く)
いいかげんというような意味ではなく、ゲームの品質検査は
出荷前にシステム系では考えられないような人員を動員して
行います。

問題が起きるとしたらそのソースを使った別機種での開発中のこと
なので、問題が起きてから解決しても問題無いです。
>>241
あ、誤爆したかな。だったらスマソ。
とりあえず、このageてるヤツとは絶対に仕事したくないな……。
245デフォルトの名無しさん:01/11/04 01:31
>>240
そんな例外を持ち出して得意になる方がどうかしてる。
>>244
ほんとだ、全然匿名になってない不思議(藁
>>242
もうしわけない、考えてるコンテキストがまったくちがったようだ
>>245 他人を攻撃する事なかれ 自分の無知をただせ
そうすると、今日現れた最初のギョウカイジンらしい>>185の意見とは
食い違ってるな>>242は。
♪オイオイキムチ♪オイキムチ〜
    ___
   |◎□◎|
ε≡⊂⌒~⊃`Д´>⊃<アイゴー!アイゴー!
   ◎ ̄ ̄◎
242
あんたのいってる「メンテはイラナイ」ってほうが
プログラミングの世界じゃ例外っぽいぜ。
そんな例外を持ち出して得意になる方がどうかしてる。
252249:01/11/04 01:39
いや、食い違ってないか。

他機種に移植しろともらったコードが>>249のような人間の書いたもんで、
それに怒って書いたのが>>185ってことか。納得だ。
253249:01/11/04 01:40
>>252
>>249じゃなく>>242
>>242
> ゲームにメンテなど有りません。(DL型ネットゲーを除く)
昔の小規模なプログラムだったら「毎回スクラッチから開発」でも良いけど、最近の規模になると
やってられません。確かにゲーム業界では、バグフィックスの意味のメンテナンスは存在しませ
んが、機能追加やソースの再利用という意味のメンテナンスは日常茶飯事です。

それに、ソフトウェアを別のプラットホームに移植することだってありますし。
255185:01/11/04 01:47
>242

うーん、いろいろゲーム作ったけど、発売後のお色直しは半分位アッタヨ。
その辺で稼動している1コイン物も然り。
それを世間様に公表してるかしてないかの差だな。俗に言うマイナーUPかな。
プレス初版と2版でデータ違うってのは良くあることカモネ。
256242:01/11/04 01:48
>>254
だーかーらー、文脈を読めつうの。
開発中にchar型が変わるなんてことないだろが。
257デフォルトの名無しさん:01/11/04 01:49
ふむ。
ここに居るやつらは単体テストという言葉を知らないらしい
コメントは関数の概要だけで詳細まで書く必要は無い。
詳細まで書いてるか?
259242:01/11/04 01:52
新しい機種が来たら最初に型を調べる。
もし、型が違ってたらソースを変更しなくて済む方法を考える。それだけ。
>>256
とりあえず sage ろ。話はそれからだ。
とりあえず俺は仕事に戻るよ(涙)。Have fun!
262デフォルトの名無しさん:01/11/04 01:55
>>261
機種依存じゃないコードを書いていれば日曜日のこんな時間に仕事しなくて
済むものを。
型の機種依存の件。約一名を除いて意見が一致したようなので、終了ということで、どうか?
これ以上やっても時間の無駄でしょ、お互いに。
>>263
賛成。機種依存がどうとかという以前の問題なのだが、賛成。
終わり。お休み。
265デフォルトの名無しさん:01/11/04 01:58
存在しない機種に対応しているほど暇なK&R(?)ヲタの
意見など気にしないようにしましょう。
266デフォルトの名無しさん:01/11/04 01:58
>>261

185>1つの関数に、それと同じくらいの(関数ソースと同程度、もしくはそれ以上の文字数の) コメントは要るだろ。

こんなにコメントがあったら逆に読みづらいと思わんか?
ってか、コメントに書いてあることと実処理が違うことがあるから鬱なんだが。
267185:01/11/04 02:00
漏れも仕事戻る、逝って来ます
移植マジ死ねる
268266:01/11/04 02:01
>>258だ・・
269デフォルトの名無しさん:01/11/04 02:04
俺はその関数の使用目的と使用法だけは書くな。
そして書いたら忘れる。
>265
とくに、型の機種依存性を回避するなんてのは
基本中の基本で、そんなのをやるのに「暇さ」が
もとめられるようじゃ終わってるんだが・・・
謎過ぎ
271デフォルトの名無しさん:01/11/04 02:24
>>270
だから文脈読めってば。
機種依存性を無くす話を最初にしたのは俺で、
K&R持ち出して存在しない機種への依存性を持ち出したのが居たの。
存在しない機種の型を気にしてchar型放棄するか?
>>271
一番文脈よめてないのはおまえだと思われ。
273デフォルトの名無しさん:01/11/04 02:35
たとえば>>232なんかはゲーム開発した事の無い奴の勘違いね。
274名無しサソ:01/11/04 02:36
 皆さん、話している前提条件が違っている気がするんだけど・・・。

 個人でWinのゲームを作る人は、そこまで互換性は気にしないし、
プロでコンシュマー機扱っている人は他機種への移植や、他の
プログラマとの連携も考えるだろうし。一人で組む場合は、効率を
考えると他の人に読ませるための手間をわざわざ掛けたくないという
意見もあると思うよ。それでも、最低限のコメントは必要だとは
思うけどね。自分のために。

 とりあえず、コードのメンテ性については状況によるのだから、
どっちが良いと言うことはないと思う。
>>270 >>272
相手にしちゃダメだって。放置、これに限る。
E-mail欄に「sage」と入力すると、そのスレッドは一覧のトップに上がら
なくなります。他のスレッドは上がってゆくので結果的にそのスレッドは
下がってゆくことになります。
277デフォルトの名無しさん:01/11/04 02:37
まあ、マニュアル君がそれを知らない人を見下すいつものパターンですな。
無視無視。
278デフォルトの名無しさん:01/11/04 02:38
煽り厨房は無視して下さい。
ちなみに、みんなが下げながら書き込みつづけることを俗に「sage進行」と
いいます。これは大事ですので知らない人は覚えておきましょう。
逆に off topic な話題や中身のない文章を sage ずに書く人を「age 荒らし」と呼びます。これはスレの住人の
みならず、板の住人全員に迷惑を掛け恨みを買う行為ですので避けましょう。
281デフォルトの名無しさん:01/11/04 02:42
みんなって誰だよ?デンパ?藁
 いかん無視無視。
282デフォルトの名無しさん:01/11/04 02:44
>>280
仕切り屋は嫌われます。恨みを買う行為ですので避けましょう。
283デフォルトの名無しさん:01/11/04 02:46
>>274
もちろん多機種に移植の可能性が無い場合はそれで良いと思うよ。
ゲームプログラミング相談室だろ。
個人のプログラムスタイルの話がしたい人はそれでスレ立ててそっちでやってくれ。
285デフォルトの名無しさん:01/11/04 03:04
ゲーム機での機種非依存プログラミングは常識。
それを「個人のプログラム(?)スタイル」という認識の方が
一般的でない。
いつもageて書き込むデムパがいるようだな
>>286
なんか age てるヤツは一人に見えてきたよ。主張はどうでも良くて、単に構って欲しい
だけちゃうんかと。

……寝よう。
電波君の書き込みは273で終わったかな?
289デフォルトの名無しさん:01/11/04 03:12
>>273ってなんだろか?
290デフォルトの名無しさん:01/11/04 03:14
俺のカキコじゃねえかよ!
>>288
文句があるなら具体的に言えや。でなきゃ荒らしだ。
だからデムパ君の書き込みだよ。あといい加減にE-mail蘭に
sage
と書くこともやってみたらどうだい
電波加減が増して泣けてくるよ
文句などないのですが何か?
なんでsageなのか説明せよ。
お、sageを覚えたか
でもだれだかわかっちまうところがおもしろい
俺の方がスゲェ
296261:01/11/04 12:09
おはよう、諸君。今日もいい天気だ。
結局age荒らしだったのかも知れんな。おつかれさん。
なんかage荒らし君、相当ショック受けたみたいね。

char shot long が機種依存すると言うことに。
担当者だけがわかってればよいソースを書くことは時代遅れであるということに。
それらが常識であることに。
>>185 が最初は反論うけまくってたのに、いつのまにかイイヤツになってるのが
笑える。
>>185(ネタか)以降の流れを冷ややかな視線で眺めていた。
天然でageてるオッサンもオッサンだったが、それに執拗に
粘着して悦に浸ってるタチの悪い人間の存在も見逃せない。

ジサクジエン等の常套手段で狡猾に話題をそらし、fjチックな
湿り気たっぷりの論調で因縁を付ける。


      なんとファンタスティックな
俯瞰して悦に浸るやつも約一名いるようだ
テヘ。
>>300
(・∀・)ユルシテヨ
許す
304185:01/11/04 14:54
メモリモデルで厳しく制限食らうような移植は、制限されている関数関連のコンテナ
ごと俺なら入れ替えてしまう。それが一等早い。

愚痴:
何人でProg組むにしてもコーデックだけはキチンと決めなきゃダメね。
引継ぎのとき大変なんだぞゴルァ>○▲□の村×!見てるかオイ!


ここ、ゲームプログラミング『相談室』だよね・・・。

 
>>305
書き込み無いよりいいんじゃない。最近全然、賑わって無かったし
賑わうったってこの有様じゃあ説得力ねーっぺさ。
お祭り好きはマ板とかゲハ板とかゲロ板に逝けば
幾らでもエンジョイできるしな。

http://pc.2ch.net/prog/
http://game.2ch.net/ghard/
http://game.2ch.net/gsaloon/
祭りがキライだから、ゲハ板やゲロ板へ行ってないくらいなのに、
こちらに持ち込まないでほしい
あげようぜ
  ∧∧
 (´ー`)  話題ネーヨ
  \ \
goto >>97
lol
313100:01/11/04 23:19
ちなみに第2版でも直ってませんでした。
ゲームスレは荒らされる運命なのか・・・。
315デフォルトの名無しさん:01/11/05 02:16
質問があります。

bioのとこにも書いたんですけど、、
ttp://www.bio100.co.jp/cgi-bin2/3df/flashviw.cgi?no=5092&reno=no

もしかしたら、訳わかんないことを言ってるのかもしれないんですけど…。
よかったらレスください。。
316デフォルトの名無しさん:01/11/05 02:22
ライティングって光源処理のこと?
317名無しサソ:01/11/05 03:57
>315
 マルチポストよりは良いかも知れないけど、なんだかなぁ・・・。
DirectX関連のスレは
http://pc.2ch.net/test/read.cgi/tech/991795568/
だから、ちゃんと探してそっちに書こう。

 3Dのライティングは、モデル→ワールドに座標変換(正トランス
フォーム)をした法線・頂点座標を、さらにワールド→ライトに逆
座標変換(逆トランスフォーム)を行ってライト座標系にしてから
行う。何故ライトが逆かというと、ライト座標系もワールド座標系の
子に当たるから。スケーリングによってライティングの結果が
おかしくなるというのは、変換行列がちゃんと正規化されていないと、
変換された法線の大きさまで変わって、ライティング結果がおかしく
なる言う話。多分。

 この部分が理解できてないと言うのは、3Dについての知識が
足らない気がする。Direct3Dを本格的に勉強する前に3次元CG
について勉強した方が良いと思う。自分も人のこと言えるほど出来る
訳じゃないけど。
318名無しサソ:01/11/05 04:06
 あ、逆だ。ゴメソ。

 モデル→ワールド=ライト→ワールド

 ワールド→ライト=ワールド→モデル

 最終的にライト座標系で持たれているライトの緒元
(方位、範囲、位置)をモデル座標系に変換して計算
するという話。勘違い。

 自分も到らないね。吊ってくるよ・・・
>>314
荒らし屋のいる時に上げると、荒らされるみたいだね
経験則なんで、いつなのかはわからんケド
元々この手のスレをチェックしてる住人の2/3が
荒らし一歩手前のワナビー学生らしいんだけど
それは公然の秘密だから。
321デフォルトの名無しさん:01/11/05 21:11
なんだとおおーーー。
それでだまって引き下がるのはゆるせん!
徹底抗戦age!
>321
ヒー勘弁してぇ
>321-322
自作自演でした
>11
いいな俺らなんてHTMLタグ辞典だよ
325324:01/11/05 21:48
誤爆
326315:01/11/05 21:57
なんか上げちゃいけなかったようで、、ごめんなさい。
スレ違いも…

317さんありがとうございます。
スケーリングされるとおかしくなるのは分かりました。
”一様でない”とあったのでちょっとよく分からなくなってました。。
行列の正規化は…調べてみます。(汗
正規化すれば大丈夫なんですよね?

でもあと、、DXのドキュメントには
「ライトの位置座標と方向をモデル空間に
トランスフォームし、次に逆トランスフォームする」
ってあるんですが…。
ライトの座標を ライト→ワールド→モデル って変換するんですよね…?
327名無しサソ:01/11/06 00:20
>326
>正規化すれば大丈夫なんですよね?
 大丈夫だと思う。大きさが1の直交座標行列を
かけておけば心配ないはず。ただ、View行列には
最初から逆行列をセットしないと行けないので注意。

>ライトの座標を ライト→ワールド→モデル って変換するんですよね…?
 ライティングは元々D3Dに任せているから、実際にそうやって計算
している現場を見た訳じゃないけど、説明としてはそう書いてあるよ。
IDirect3DDevice8->SetTransformで指定すれば勝手にそうやって
くれるのだから、自前でライティングしない限りは意識する必要はないよ。
328名無しサソ:01/11/06 00:21
 というかここじゃスレ違いだ。>315これ以上続けるなら、
上に書いたDirectXスレで書いてね。

 ゴメソ。
329315:01/11/06 03:31
行ってきました。
スレ違い失礼しました。。
330デフォルトの名無しさん:01/11/06 18:16
http://game.2ch.net/gamedev/
いつ移転するのよ?
話題途切れてるし、すぐでもいいと思うんだけど。
あっちに移設しちゃっていい?
>>331
いいと思う。
本来あるべきスレは早々と向こうに立てるべきだと思う。
了解、立てときました。
http://game.2ch.net/test/read.cgi/gamedev/1005040025/

では皆様、今後はあちらにて。
334デフォルトの名無しさん:01/11/07 03:12
隔離ワナ警告age!
335デフォルトの名無しさん:01/11/07 03:21
http://game.2ch.net/gamedev/
よりによって、ゲーハー板の真下かよ。最悪だな。
336デフォルトの名無しさん:01/11/07 03:23
つうわけでゲームで皆がバラバラに再発明してるらしい車輪、
擬似スレッドの話題を振ってみます。
大人しく向こうで暮らしたまえ。
338デフォルトの名無しさん:01/11/07 09:37
移転の話はゲームプログラミングの話題を嫌っている奴の自作自演です。
引っかからないようにしましょう。
339プチ9627m:01/11/07 11:54
わざわざリンク切れになってるパート2の正しいURLを探してきてまで
そんなことすると思う?(;_;
340332:01/11/07 12:50
そんな言い方はひでぇよ。

でも確かに向こう今の状況じゃ、そういいたいのもうなづける
すこし、糞スレが沈殿してきた>ゲ術板
このまま安定してくれりゃいいんだが。
だいぶマータリしてきた>ゲー術板
343342:01/11/10 01:31
思い込みだった。まだまだ時間がかかりそう・・・
344ほげほげ:01/12/04 03:08
誰もやりたがらない作業を、進んでしてもらう方法って
皆さんどういう風に叱咤激励して、やってもらってます?
ちなみに私の場合、誰もやってくれないので、私がやる羽目に・・・
プログラマーにシナリヲ書けちゅうのはどうか・・・死にそう。
345デフォルトの名無しさん:01/12/04 03:09
それはダメすぎない?
脚本家にプログラミングさせるよりマシ
347Kusakabe Youichi:01/12/04 03:28
In article >>344, 344 デフォルトの名無しさん wrote:

> 誰もやりたがらない作業を、進んでしてもらう方法って

金か女を餌にすると効果的です。
348Kusakabe Youichi:01/12/04 03:30
>金か女を餌にすると効果的です。

アホですな。とっととしにませ。
>>347
> 女を餌にすると効果的です

クサカベさんとも思えない、女性蔑視の発言ですが。
350Kusakabe Youichi:01/12/04 05:33
In article >>347, 347 Kusakabe Youichi <[email protected]> wrote:

> In article >>344, 344 デフォルトの名無しさん wrote:
>
> > 誰もやりたがらない作業を、進んでしてもらう方法って
>
> 金か女を餌にすると効果的です。

わたしだったらこの場合の「エサ」はカタカナで書くでしょうね。
351デフォルトの名無しさん:01/12/04 05:41
ゲームを作るプログラミング言語ってどんなのがいいのですか?特にRPG(作りたいゲームはセガだから余り知ってる人いないかも知れないけど、シャイニングフォースっぽい奴)では。
352Kusakabe Youichi:01/12/04 05:50
わたしになりすました知能障害者の発言は無視してください。
>351
「RPG」というRPG専用言語があります。
IBMがサポートしていて安心感もあり、おすすめです。
354Kusakabe Youichi:01/12/04 07:21
In article >>352, 352 Kusakabe Youichi <[email protected]> wrote:

> わたしになりすました知能障害者の発言は無視してください。

「なりすました」とは言わないでしょうね。私なら。
355Kusakabe Youichi:01/12/04 07:22
In article >>353, 353 デフォルトの名無しさん wrote:

> >351
> 「RPG」というRPG専用言語があります。
> IBMがサポートしていて安心感もあり、おすすめです。
RPG IIは? ;)
Kusakabe 先生のスレ違い/意図不明な書き込みに対する苦情には専門のスレ
が用意されて いるので、このスレでは書かないようにお願いします。そのような
書き込みにコメント をつけるのは、彼と一緒に一緒になって荒らし行為をしてる
のと変わりません。

日下部 陽一先生の隔離スレッド void ***
http://pc.2ch.net/test/read.cgi/prog/1006918877/

#同意も反論も不要。なんかあったら↑のスレで言ってくれ。
357Kusakabe Youichi:01/12/04 07:40
In article >>356, 356 デフォルトの名無しさん wrote:

> Kusakabe 先生のスレ違い/意図不明な書き込みに対する苦情には専門のスレ
> が用意されて いるので、このスレでは書かないようにお願いします。そのような
> 書き込みにコメント をつけるのは、彼と一緒に一緒になって荒らし行為をしてる
> のと変わりません。

っていうか、問題なのは私じゃないでしょう。
こういうのをいちいち書く人間では? :)
358Kusakabe Youichi:01/12/04 07:43
In article >>357, 357 デフォルトの名無しさん wrote:

> っていうか、問題なのは私じゃないでしょう。

「っていうか」とは書かないでしょうね。私なら。
359デフォルトの名無しさん:01/12/04 07:44
>>357

あんたも相手にするな。
360Kusakabe Youichi:01/12/04 07:47
In article >>358, 358 Kusakabe Youichi <[email protected]> wrote:

> In article >>357, 357 デフォルトの名無しさん wrote:
>
> > っていうか、問題なのは私じゃないでしょう。
>
> 「っていうか」とは書かないでしょうね。私なら。

それははつみみですね。
Kusakabe 先生のスレ違い/意図不明な書き込みに対する苦情には専門のスレ
が用意されて いるので、このスレでは書かないようにお願いします。そのような
書き込みにコメント をつけるのは、彼と一緒に一緒になって荒らし行為をしてる
のと変わりません。

日下部 陽一先生の隔離スレッド void ***
http://pc.2ch.net/test/read.cgi/prog/1006918877/

#同意も反論も不要。なんかあったら↑のスレで言ってくれ。
362Kusakabe:01/12/04 07:52
In article >>360, 360 Kusakabe Youichi <[email protected]> wrote:

> それははつみみですね。

「それは」のあとに「、」をいれるでしょうね。私なら。
363Kusakabe Youichi:01/12/04 08:03
In article >>362, 362 Kusakabe <[email protected]> wrote:

> In article >>360, 360 Kusakabe Youichi <[email protected]> wrote:
>
> > それははつみみですね。
>
> 「それは」のあとに「、」をいれるでしょうね。私なら。

入れないって。
Kusakabe 先生のスレ違い/意図不明な書き込みに対する苦情には専門のスレ
が用意されて いるので、このスレでは書かないようにお願いします。そのような
書き込みにコメント をつけるのは、彼と一緒に一緒になって荒らし行為をしてる
のと変わりません。

日下部 陽一先生の隔離スレッド void ***
http://pc.2ch.net/test/read.cgi/prog/1006918877/

#同意も反論も不要。なんかあったら↑のスレで言ってくれ。
365ゆっけ
最近、deta scopetいう携帯を購入したのですが、いろいろプログラミング
などでできるようなのですが、情報が何もなく困ってはいないのですが、
どんなことでもいいので教えてください。現在使用している人いますか?