1 :
プチ9627m :
01/11/06 18:47 ID:G6Fk/ND/
そんなことよりちょっと聞いてくれ
>>2 よ
昨日、近所の吉野家行ったんです。吉野家。
そしたらなんか人がめちゃくちゃいっぱいで座れないんです。
で、よく見たらなんか垂れ幕下がってて、150円引き、とか書いてあるんです。
もうね、アホかと。馬鹿かと。
お前らな、150円引き如きで普段来てない吉野家に来てんじゃねーよ、ボケが。
150円だよ、150円。
なんか親子連れとかもいるし。一家4人で吉野家か。おめでてーな。
よーしパパ特盛頼んじゃうぞー、とか言ってるの。もう見てらんない。
お前らな、150円やるからその席空けろと。
吉野家ってのはな、もっと殺伐としてるべきなんだよ。
Uの字テーブルの向かいに座った奴といつ喧嘩が始まってもおかしくない、
刺すか刺されるか、そんな雰囲気がいいんじゃねーか。女子供は、すっこんでろ。
で、やっと座れたかと思ったら、隣の奴が、大盛つゆだくで、とか言ってるんです。
そこでまたぶち切れですよ。
あのな、つゆだくなんてきょうび流行んねーんだよ。ボケが。
得意げな顔して何が、つゆだくで、だ。
お前は本当につゆだくを食いたいのかと問いたい。問い詰めたい。小1時間問い詰めたい。
お前、つゆだくって言いたいだけちゃうんかと。
吉野家通の俺から言わせてもらえば今、吉野家通の間での最新流行はやっぱり、
ねぎだく、これだね。
大盛りねぎだくギョク。これが通の頼み方。
ねぎだくってのはねぎが多めに入ってる。そん代わり肉が少なめ。これ。
で、それに大盛りギョク(玉子)。これ最強。
しかしこれを頼むと次から店員にマークされるという危険も伴う、諸刃の剣。
素人にはお薦め出来ない。
まあお前らド素人は、牛鮭定食でも食ってなさいってこった。
============終了=============
4 :
名無しさん@お腹いっぱい。 :01/11/06 20:32 ID:tdDZ8XPO
DirectX話は別にスレ立てるの?
別がいいね
6 :
名無しさん@お腹いっぱい。 :01/11/06 20:53 ID:g4nNhikQ
メタルギアの主人公が透明になる処理ってどうやってるんでしょうか? あれ、やってみたいんすけど、アルゴリズムが思いつかん。 バカですみませんが、こういう風にやってるって言うの教えてくださいな。
7 :
名無しさん@お腹いっぱい。 :01/11/06 20:59 ID:2L5/MEoG
>6 アルファブレンド
8 :
名無しさん@お腹いっぱい。 :01/11/06 21:01 ID:Ubm7e8yT
9 :
名無しさん@お腹いっぱい。 :01/11/06 21:03 ID:qXJQuXdp
いきなりな始まり方だな(泣
10 :
名無しさん@お腹いっぱい。 :01/11/06 21:17 ID:Wy/vrzew
屈折・・・はちょっと違うな。 モデル抜きで描画したやつをテクスチャに使って モデルが描画されるはずの場所を適当に散らしてやるとか。
11 :
名無しさん@お腹いっぱい。 :01/11/06 21:31 ID:ffLcuzBF
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 〜′ ̄ ̄( ゚Д゚)< IDがFFだからレスしといてやる UU ̄ ̄ U U \_____________
12 :
名無しさん@お腹いっぱい。 :01/11/06 21:57 ID:zeMWPbvy
>6 考えんのめんどうだから 描画しなけりゃいいじゃん。 「透明人間だワショーイ!!」 描画ON/OFF繰り返せば偽半透明になるし。 フレームレート落ちると手抜きバレバレだがな。
13 :
名無しさん@お腹いっぱい。 :01/11/06 22:01 ID:Wy/vrzew
DirectX 8のwrapperライブラリで何かいいのありやす? もうみんな素で作ってるかなあ。
14 :
名無しさん@お腹いっぱい。 :01/11/06 22:04 ID:Ubm7e8yT
>>13 あれ以上ラップする必要なんてないっしょ。
DirectX8は以前に比べてかなり洗練されてる。
ラップしても結局アプリケーション依存になると思うぞ。
ここみて、さっそく、うちのエフェクトに光学迷彩機能を 追加させていただきましたにゃ けっこうカコイイ
17 :
名無しさん@お腹いっぱい。 :01/11/07 11:24 ID:yfpcm8il
18 :
名無しさん@お腹いっぱい。 :01/11/07 13:35 ID:G+bxpTdm
19 :
某はぐれ企画 ◆q3ckR4s2 :01/11/07 15:18 ID:aOMApkuV
ズラしかたを変えれば、結構色々な用途に使えそうだね。 氷とか、水晶とか、熱ブラーとか。
20 :
名無しさん@お腹いっぱい。 :01/11/07 16:48 ID:hmPs+GIX
ネット上で配布する向けのゲームのBGMの収録形式は どれがよいだろうか。 1 無圧縮WAV 2 MP3 3 MIDI 4 MOD 5 CD-DA
21 :
◆AyW.Rdbg :01/11/07 16:50 ID:FDbRJ4fk
MIDI がいちばん軽くて済むから良いのではないだろうか。
私もMIDIに1票!!
23 :
作曲家兼ゲープロ :01/11/07 16:56 ID:gG9EM5Mh
オンラインならやっぱMIDIかなあ。GM Level 1で。 市販や同人なら、MP3とかOgg Vorbisが嬉しそう。 無圧縮WAVのストリーム再生は、 轟音を鳴らす高速CD-ROMドライブにかかるとヤヴァイ感じ。
24 :
名無しさん@お腹いっぱい。 :01/11/07 17:03 ID:kWHcbxUW
光学迷彩age
オレはmodがいいと思うけどなぁ。 微妙なニュアンスをどこでも再現できるし
>>20 どうやってCD-DAを配布するのか知りたいw
MIDIだとプレイヤー側で違う音になる可能性があるのがなぁ。 ダウンロードする側としては50MBぐらいまでなら許容かな。 本体とあわせて200MBまでなら10数分だし。 MP3に1票。
いっそのことCDイメージで配布するのはどうだろう? ISOとかFCDとかでさ。
mp3で配布して自前でwaveに書きかえさせるに一票
>>27 ふざけるな。低速回線はまだそこら中にいるんだ
いっそのことストリーミングに1票 あとから差し替えたり違う曲を流すことができる。 常時接続が当たり前な今だからこそ誰か試してみるツワモノいない?
ネットワークアプリでもないのに、 ネットにアクセスするのは気持ち悪いなぁ
33 :
作曲家兼ゲープロ :01/11/07 17:45 ID:gG9EM5Mh
>MIDIだとプレイヤー側で違う音になる可能性があるのがなぁ。 DLS使えば音源依存はほとんど解消できると思うんだけど、 使ったことないから知らないや。調べてみよっと。 とりあえず、大抵の音源でそこそこまともに演奏されるMIDIデータを作るのも 音楽屋さんの技術力のうちではありますです。
FALCOMって平気でSC88用とか逝ってるよな。 他のメーカーでもGMのほかにGSだけ特別扱いだったり
>>33 DLS良いよ。DX8のDMusicならレゾナンス付きフィルタまで使える。
思うんだけど、modが候補に上がるような人間なら、modを使うべきだろ。
>>36 問題は作れる人がまわりにいない。(´д`;)
シクシク
38 :
名無しさん@お腹いっぱい。 :01/11/08 02:48 ID:yP+KbtrC
DLSのデータ作ってる人いないの? 俺は周りで見たことないぞ。
>>31 ああ、やってみたいね。
ネットゲーでもないとやる理由があるかわからんけど。
問題はどうやって安価にストリーミングサーバーを用意することか。
>>40 ゴメン。スクリプトはつかってないわ。
このスレの人でスクリプト使ってる人ってどのくらいいるのだろう。
ム板のころから考えると、ほとんどいないように見えるが。
HSP使いが多そうだけどどうよ?
ところでHSPって画面サイズかえれるの?
44 :
名無しさん@お腹いっぱい。 :01/11/08 08:59 ID:K/EXc4zs
>>40 どっちもクソ。フリーで手に入るコンパイラがあるんだからソレ使えよ。
YGS2k自体は悪くないと思うんだけどなぁ。 作者がねぇ
やねうらおイタイよマジで
48 :
名無しさん@お腹いっぱい。 :01/11/08 15:10 ID:kkpeg6xx
YGSはともかく、YaneSDKはどうよ? 参考なるかと思ってソース眺めたら、 パラメータが間違ってたりして激しく萎えた覚えがあるんだけど。
ClanLib Game SDK
http://www.clanlib.org/ ついでにこんなんも見つけた。
最近英語サイト行くようになって、情報量の多さにクラクラっす〜。
探せば何でもあるし。確かに「車輪の再生産はするな」になるわこりゃ。
51 :
50 :01/11/08 15:33 ID:???
s/再生産/再発明/ トホホ
YaneSDKはデザインがダサい 結局自分で手を加えないと使えない部分が多くて ライブラリとしての完成度は低い
じゃあどのライブラリ使えばええの?
>>53 どうせやるならDirectX直で使うのがいいんじゃないのか?
で、ライブラリ作成に労力を費やし、ゲームは一向に完成しないのであった。
>>55 そういう人は何してもゲームが完成しないということで。
>>46 激しくないけど、同感…。
いや自分も使ってるから。
58 :
名無しさん@お腹いっぱい。 :01/11/08 21:52 ID:z7W2ZNyK
ライブラリを使ったときに、そのソフトを実行するのに
DirectXのどのバージョンが必要ですってのはどうしたら分かるんだろう?
例えば
>>50 のはWin上ではDirectXを使用するみたいだけど、
どのバージョンが必要なのか書いてある場所は見つからなかった。
ソースを読んで、この機能はバージョンいくつで…って調べるしかないの?
>>56 禿同
他人のライブラリしか使えない人間はどっちにしろあまり
まともなゲームを作れない。
「お手軽に」と言いたいならば止めはしないが。
って言うか自前ライブラリの整備にかかりっきりで、いつまでたっても ゲームそのものの制作に取りかかれないってのはアイタタターだよって 話なんじゃないのか?
ライブラリの作成の話じゃなくて使用の話をしているんだと おもったんだが・・・ちがうのか?
初心者はコードを書けない。 中級者はコードを書ける。 上級者はコードを書くかどうかの判断ができる。
というわけで、ライブラリに頼る人種は初心者か上級者のどっちか。
64 :
名無しさん@お腹いっぱい。 :01/11/08 23:20 ID:3NmFL/A2
>>62 同感だけど、
コードを書かないといって実は書けない奴のなんと多いことか。
結論から言うと、
何でも自分で一から作ってきた奴と
ライブラリを使いまくって、ゲームにしたてた奴とでは、
前者の方が圧倒的に使えるんだけどね。
なぜなら前者は中級者だから上級者になれるけど、
後者は永遠に初心者だからね。
>>60 ライブラリから作るのではなくて、作っていくうちにライブラリらしきものができてきて、
後でそれを自分が使いやすいようにライブラリ化。
アマチュアならこれが普通だと思うが。
66 :
64 :01/11/08 23:23 ID:3NmFL/A2
だから時間のあるアマチュアのうちは、 何でも自作することをお勧めするよ。 ライブラリに依存することはいつでもできるから。
>65 60は59に対するツッコミです。 55と56を読んでミソ
68 :
_ :01/11/08 23:31 ID:ZvJlUtz1
それでもD3DXクラスのライブラリをまた自分で作るのはバカらしいぞ。 作ってくうちに、どうしてもD3DXは超えられないことを悟り途中放棄するのがオチ。
>>66 ま、逆にプロになる気とかなくて、趣味でゲームを作る手段として
プログラミングやるならライブラリに頼ってもいいわけで。
70 :
名無しさん@お腹いっぱい。 :01/11/09 00:27 ID:QPURCFOq
>>70 SDLみたいに一人じゃなかなか作れないようなライブラリこそ、
なんか使う価値があるように思った。すくなくともこれのいいところは、
よくある、プログラマ一人のヲナニーライブラリじゃないってところか。
>>70 SDL はマルチプラットフォームですよね。
linuxとwindowsで動作するゲームを作りたいので
これつかってみようかなって考えています。
これってソフトに含めて(実行プログラムのベースにして)
売ってもいいんですよね? Lesser GPL みたいだし…。
74 :
なまえ :01/11/09 14:22 ID:wBSGHdMW
プログラマで飯を食ってるんですが、今までゲームを作ったことありません。 メインループのwait処理なんですが、今まで見たいくつかのゲームのソース では、sleepしているだけでした。1ミリ秒でも空き時間があればそれなりの処 理ができる思うのです。 メインループは次々とフレーム(実際に表示する画面)を生成してそれをQueue にPush。別のThreadではQueueからPopして一定のタイミングで書き換えを行え ば良いのでは?と。 実装はそれほど難しくないけど、デバッグが困難そうですが・・・。 趣味の場合はやっぱりデバッグがネックになりますかね? ・・・あ〜、ダメかな?常に古いフレームが表示されることになるか・・・。 ご意見ください。
どうやって入力を予測するのか聞きたいところ。
76 :
なまえ :01/11/09 15:19 ID:???
え〜と、入力を予測するのではなくて、今現在の入力が未来の入力になってしまう。 『常に古いフレームが表示される』とはそういうことです。
利点が今一つわからんのですけど。 重たい処理が来たときに、スタックしていた分を消費してごまかすってことかな。 そんなことしなくても、できあがった画像はどんどん更新していったらいいと思いますが。 多分、重たい処理なんて1フレームで終わらないことが多いと思いますし。 どんどん、更新するのが嫌ならsleepさせてタイミングを合わせれば良のでは ないのでしょうか。 というか、聞いてみるより思いついたらやってみるのが一番ですよ。
78 :
なまえ :01/11/09 20:08 ID:???
結局俺が言いたいのは、何もせずスリープさせる時間を有効利用できないかな ということです。1ミリ秒あればいろんな計算ができるでしょ。角度とか。 そして誰もそれをやっていなかったようなので、どうしてだろう?と。 普段ゲーム作ってるわけじゃないので、その辺興味あって。 Thread云々は単なる例です。 文章下手でスマソ。
リアルタイムで動くゲームプログラムと言えど 毎秒30回とか60回とかでフレームの生成ができればそれで十分なわけで、 「やることがない」ならばCPUを明け渡すのは、 通常のイベントドリブンなGUIアプリケーションでも同じことだと思いますが。 まあ、その辺は作りによります。 sleepやマルチメディアタイマを使わずにガンガン回すタイプもあるし、 メインループが寝てる間に別スレッドで思考ルーチンを動かしたり データ読み込んだりするのもあるし。
80 :
79 :01/11/09 21:22 ID:???
あちゃー、無意識のうちにWindows前提になってた。 s/マルチメディアタイマ/割り込みタイマ/
81 :
名無しさん@お腹いっぱい。 :01/11/09 23:02 ID:k863gV/O
>>78 トリプルバッファにすれば解決するするよん。
82 :
なまえ :01/11/09 23:11 ID:???
>>79 >「やることがない」ならばCPUを明け渡すのは、
これは全くその通りです。
ただ「描画時間がネック」みたいな発言をよく見かける割に、sleepしているので、
例えば次のフレームの背景くらい用意しておければと。
確かに、そこまでしなくても済むのなら寝ててもかまいませんが。
ちょっと先入観があったみたいです。それこそ作ってみれば解決した問題でしたね
>>77 >>81 なるほど。勉強なります。
ゲーム作りって面白そうですね。
ヒマを見つけて少しずつ作ってみたいと思います。
それってパソコンは速度が違うということを忘れてないか?
>>83 いろんな意味に取れるので、もうちょい具体的に書いてちょ。
>>82 >ただ「描画時間がネック」みたいな発言をよく見かける割に、sleepしているので、
>例えば次のフレームの背景くらい用意しておければと。
たぶんへぼいソース見ただけだと思う。ソースさらしキボン(荒れると思ったらせんでよろし)
FPS可変なら、資源を使うだけ使いたいのでフルで回す。
FPS固定なら、あまる時間はsleepすると。
もちろん、どちらにせよ別スレッドでサウンド流したりしてるかもしれんよ。
>>85 FSP固定の場合は、こんな方法がありますね。
実行スレッド以外に、タイマースレッドを用意する。
CreateEventでイベントオブジェクトを作っておく
タイマースレッドは、Sleepで一定時間眠らせつつ、SetEventを実行する。
実行スレッドは、イベントオブジェクトをWaitForSingleObjectで待つ。
87 :
名無しさん@お腹いっぱい。 :01/11/10 10:59 ID:Ci4ZgWPC
ageるっちゃ。
88 :
77 :01/11/10 15:14 ID:Pfrth29i
>ただ「描画時間がネック」みたいな発言をよく見かける割に、 なんか混乱しているような気もしますが。 描画処理のwaitと描画処理以外のwaitがごちゃ混ぜになっていませんか? この当たりの実装はプラットフォームやアプリケーションによって違うので 一概に、こういうコーディングが良い、という例はないと思います。
<通常のイベントドリブンなGUIアプリケーションでも同じことだと思いますが。 そっちの畑から来た身としては、どうも使えるだけ資源消費せよ、みたいな コードがどうしても書けない(笑)向いてないのかもしれん。
いやあ煽れも使えるだけ資源消費型のGUIツール(ゲーム用のな)作っちゃうからな。 そりゃ重いっていわれるよ(w ゲーム本体のルーチン使いまわしてるから当然なんだけど
92 :
名無しさん@お腹いっぱい。 :01/11/11 09:24 ID:54DZd3xv
>>90 メモリーの動的取得が上手く出来ない
って事かな?
>>92 ......ageでなにかいてんだか
>>90 アクション性が無いなら、それでもイイと思うけど。
日曜日らしい
>>92 のカキコはほっとくとして、
バッテリ動作のノートPCとかギリギリで動いてるクロックアップ機とか想定するなら
資源使い切らない選択も悪くないと思ふ。
>ギリギリで動いてるクロックアップ機 ↑はベンチマークのために存在しているようなマシンなのだから、めいっぱい負荷をかけてあげると喜ばれると思われ。
96 :
94 :01/11/11 20:12 ID:???
なるほど、そういう考え方もあるか。
>>95 むしろ熱暴走させてあげるくらいがよいと思われ。
「ああ、しまったクロックあげすぎかー」と反省。
98 :
90 :01/11/13 02:28 ID:???
>92 開いてる時間はOSに処理返しますから。 可能な限りフレームレート上げようという思考で 作業した事ないんで >93 うーん、そこそこアニメーションさせねばならん時でも、 必要なFTS固定でやっちゃいます。
99 :
名無しさん@お腹いっぱい。 :01/11/20 07:14 ID:xfX6epq/
なんか見捨てられてるこの伝統的スレ。一応age
100 :
名無しさん@お腹いっぱい。 :01/11/20 09:51 ID:LstOLEvl
超亀レスですが、クイックスの領域内外判定は クイックスの座標から適当な方向に線を伸ばしてみる (というか単純にピクセルを走査してみる)といいと思った。 境界ピクセルと交わる回数が奇数なら領域内、偶数なら領域外。 あとはクイックスがいない側をペイント。これで6502でも安心。 ほんとに超亀レス。
101 :
名前は開発中のものです。 :01/12/10 01:54 ID:vuNiN/Ut
初心者に毛が生えた程度なんで テーブル処理についてよくわからないので教えてください。 言語はVC++です。 検索して探しましたがHTMLばっかりなんで・・
言語がVC++とか言ってる時点で逝ってますね。 まずは、C言語から始めましょう。 VB厨にはとっつきにくいかも…?
103 :
名前は開発中のものです。 :01/12/10 02:56 ID:9KJkp3pd
>>101 「テーブル」「ルックアップ」とかで試してみたほうがいいかも。
あと、英語で検索したほうが引っかかる予感がする。
>>102 ストレス過多は胃に悪いので牛乳でも飲みなされ。
>>101 テーブルで何やりたい?
そこから説明してくれ。
105 :
:01/12/11 23:47 ID:8empnFet
カコイイ稲妻とかってどうやってプログラムすれば良いの?
>>105 まずは試しにカコワルイ稲妻を作ってみるのがよいと思われ。
カコイイかカコワルイかは知らんが日高徹さんのプログラミング本に ずばり稲妻を表示するサンプルが載ってたと思う。 VB用とDelphi用だったかな。
108 :
名前は開発中のものです。 :01/12/12 01:11 ID:T2PuoAFH
109 :
名前は開発中のものです。 :01/12/12 02:30 ID:d7VfLUCO
∧_∧ ( ´Д`) <これのことか? / \ _ | | | |_..∬ |\ ̄ ̄ ̄ ̄ ̄ ̄ 旦.\ ./..\\ \ / \|=================| \ ノ こたつ \
カコイイ暴風雨ってどうやってプログラムすれば良いの? 河川の氾濫も含めて教えてください。
>>101 テーブルをどんな場面で使うのかが解からんのか?
それとも、配列の概念がわからないのか?どっちだ?
>>108 おお!こんな論文があるとわ。
参考になるッす。サンキュー!!
いいね
いろんな機能をクラス化すると遅いYO! なんとかなりませんか?
115 :
114 :01/12/14 06:43 ID:e7GMQ3b8
あ、すいません。 あと参照使うのとポインタでは速度に違いありますか?
参照は小粒でピリリと辛い
>>116 ?ちょっと重いってことですか?ありがとうです。
62 :無責任な名無しさん :01/11/18 00:49 ID:doqdaWjA
掲示板の運営者のすることは管理することなんだから、全部に
目を通せないなら運営すべきじゃない。また削除依頼を公開する
必要もないしなかなか削除しない理由もない。
つまり確信犯で不法行為に荷担しようとしてるとしか思えない。
金儲けはする気はないといっていたが、だったらやっぱり
彼は子供というか、人が困るのが好きなのかもしれない。
63 :無責任な名無しさん :01/11/18 07:00 ID:VZdC2q47
>人が困るのが好きなのかもしれない
俺にもそういう人間にしか見えないよ
違法性の程度は違うが
放火犯のような愉快犯と同じような
気味悪さを感じる
64 :無責任な名無しさん :01/11/18 12:59 ID:OxVkCF27
>>62 ,63
同意。
知人の警官もひろゆきを気味悪い程の女性気質と評していた。
ガキの頃のひろゆきを想うと、面と向かって喧嘩は出来ないが、上履きを隠したり
して喜んでたタイプだと思う。
どうでもいいけど、ひろゆきの笑った黒目がちな焦点のない目が守大介と似てるの
が妙に気になる。
116の半分は勝利感でできています(バファリン風に)。 残り半分は気まずさであると信じたい。
117タン・・・ハァハァ
121 :
名前は開発中のものです。 :01/12/15 17:02 ID:9eQ/pH5V
>>115 クラスのインターフェースとかなら、
生成されるコードに基本的に違いはないんじゃない?
ただ、安全面から、使えるならできるだけ参照を使うべき。
この辺がCプログラマとC++プログラマの差でもある。ニヤーリ
>>121 デスマーチ真っ只中でもそういうコード書いてくださる先輩が
いる。まったく持って激しく尊敬。おれも精進せねば。
>>121 でも参照って配列渡せないでしょ。違ったっけ?
ポインタも使いようだと。メンドイけど。
おれポインタ渡しなんて極力使わないようにしてるよ。できるかぎり参照ですませてる。
125 :
116 :01/12/15 23:19 ID:???
>>119 >残り半分は気まずさであると信じたい。
9割くらい気まずいです(笑
ただのダジャレだったのに。
126 :
名前は開発中のものです。 :01/12/15 23:43 ID:zSSwxmsK
>>121 別に参照もポインタも安全性はかわらんよ。
NULLポインタの可能性がないとしても、NULL参照の可能性はある。
int& GetRef()
{
int* n = NULL;
return *n;
}
こっちの方が余計厄介
どっちがよりありえる状況か? って問題でしょ。
よくあるのとたまにあるのはどっちが問題かは難しい。 個人的にはたまにあるほうがはまると思う。
>>123 >でも参照って配列渡せないでしょ。
じゃあ参照で何を渡すことができるのか小一時間問い詰めたい
関数の引数にしか参照使わないなぁ・・・。 しかも、 関数側がパラメータを書き換える場合はポインタ、 関数側がパラメータを書き換えない場合は const 参照、 みたいな、教科書的使い方しかしてない。
あぼーん
132 :
_ :01/12/16 02:36 ID:Ar8VngeJ
まあ、山椒言うぐらいだから、山椒に使ってれば、いいんじゃ? だから、constで。 俺は、ネストがうざくないなら、ポインタで済ますけどね。
>>126 そのコードは結局ポインタの問題であると思うがいかがであろう。
プログラム板向けな話題だが……。
>131 なんて書いてあったか気になる・・・
135 :
名前は開発中のものです。 :01/12/16 07:33 ID:+KES3Ub0
windowsの画面の設定で大きいフォントにしていると 表示が破綻するのですが、なにか回避作はないのでしょうか。
山椒は結局ポインタでしょ。
138 :
:01/12/16 16:46 ID:???
FDDドライブにフロッピーが入ってなかったfalseを返すように するにはどうしたらいいですかヽ(;´Д`)ノ?
140 :
名前は開発中のものです。 :01/12/16 17:42 ID:aHuW4LrA
んー、FDDに特定のファイルがなかったら。でもいいのですが・・・
141 :
:01/12/16 18:19 ID:???
142 :
名前は開発中のものです。 :01/12/16 21:18 ID:daAjOz/U
>>138 SetErrorMode(SEM_FAILCRITICALERRORS)して
GetVolumeInformation()すれば?
FD入ってなければエラーが返るよ。
143 :
名前は開発中のものです。 :01/12/24 16:40 ID:TT6cQF5s
あがります。ドキドキ
144 :
名前は開発中のものです。 :01/12/24 23:02 ID:q2IMbhtW
射影行列から視点って求められますかねぇ?
それは、コーヒーにミルクと砂糖を混ぜたあとで 砂糖だけ取り出すようなものではありますまいか。
>>145 つまり、かな〜り難しいということですね。
どうもありがとう。
視点は別でとっておきます。
行列の逆変換を行うんだっけ? はっきり覚えていない
148 :
- :02/01/08 23:20 ID:yU2HT0bl
好き好きはあると思いますがゲームを作るのに最も適している言語って何だとおもいます?
10 カケ "コンニチハ"
>>148 pygameは?
誰も使ったことなさそうだ。
>>153 それをもっとも適した言語というのはどうかと(w
まあ、くやしいがC/C++じゃないかな
155 :
- :02/01/09 22:11 ID:???
やっぱりC/C++ってことになるのかぁ
あと、アセンブラもたまに必要。 フルアセンブラでなくても、インラインアセンブラぐらい書けたら たまーに重宝する事があるんだが…。
sinとcosの値が同時に欲しい時とか。
158 :
名前は開発中のものです。 :02/01/10 14:53 ID:4z5AnKwA
BGMを作るのに使える簡単な作曲ソフト教えてくれませんか?
「簡単な」ものがあれば漏れも知りたい。
160 :
名前は開発中のものです。 :02/01/10 21:58 ID:s/3jCGLI
161 :
名前は開発中のものです。 :02/01/11 14:37 ID:JxPmum3m
ブロックくずしの跳ね返る方向って どうやって決まるんだろう。 止まっている時の跳ね返りはなんとなく 分かるんだけど…
>>148 C でしょ。ゲームによるけど C++ はあまりお薦めしないなぁ。アセンブラは
使い方が分かる程度に勉強しておくと役に立つかも。
163 :
名前は開発中のものです。 :02/01/12 00:44 ID:qF5Awb+F
>>161 大雑把に処理するなら、停止時の弾の跳ね返り速度に、
ブロックの移動速度を足す。
つーか、摩擦やら跳ね返り係数やらを考慮しても良いのだが、
労力に見合うとは思えん。ま、ヒマならやってみ。
>>158 最近のシーケンスソフトについてくるオートバッキング機能は結構
便利だよ。漏れはYAMAHA派なのでXGWorksなんだが、てけとーなフ
レーズを打ち込んどいてオートアレンジャーで伴奏つけてから、元
のフレーズを消して、あらためてひらめいた音を入れる、というア
フォな手法を使ってます。
165 :
名前は開発中のものです。 :02/01/12 11:50 ID:WQq5T0Hz
>>163 よく考えたら、摩擦は関係ないような・・・
166 :
名前は開発中のものです。 :02/01/12 12:58 ID:2GJZajHz
>>165 パドルの動きに対してどんだけボールが粘着するかの係数
167 :
名前は開発中のものです。 :02/01/13 00:33 ID:ssMqoitn
168 :
名前は開発中のものです。 :02/01/13 02:14 ID:LBqywreg
>>161 多少ランダムな要素も含まれている気がする。
>>166 キャラクタの材質の設定もあるわけでちゅかい?
そうでした
この手の joke がワカラン奴の「ゲーム屋」としての適正を少々 疑ってしまう俺。言い過ぎか?
173 :
名前は開発中のものです。 :02/01/13 04:10 ID:08Lp1+qJ
おれもジョークまじりなつもりだったのだがつまらなかったな
>640x480フルカラーのゲームを作るとする。60FPSのゲームを作る場合、1秒に転送するデータ量はどのくらいだろうか。 >52.7MB/sである。 にはついワロタ。世の中っていろんな人がいるんだなぁ。。。 ていうか読めば読むほど素晴らしい洞察に長けた文章が漫才なん だが(笑 筆者は相当なネタ師とお見受けする。
>175 DIB作って毎回転送してやればそのぐらいになるんでは? DirectDrawを解像度の切り替えぐらいしか使ってないけど まぁ、そんな事しているとは到底思えないんだが…
>>175 何が笑えるのかよくわからんのは俺だけかね?
# いやまあ、データ隠蔽のあたりは笑えなくはないが
暇だったら説明きぼんぬ。
俺も何が笑えるのか分からん。
>>175 に400字詰め原稿用紙10枚ほどで説明してもらいたい。
181 :
名前は開発中のものです。 :02/01/13 18:47 ID:Hyzb8Prh
161です。 レスありがとうございます。 何かヒントがつかめたような気がします。 しかし今時ブロック崩しもないよなぁ・・・
>>175 じゃないけど、「今時リフレッシュレート60ってあまりいないぞ」には疑問かも。
>>182 今時も何もFPS固定派には多いというか、それしかないような。
とりあえず 52.7MB/s ってどこから出たんだ? 3バイトとしても微妙に違わね?
>184 640(pix)*480(pix)*24(bpp)*60(fps)/1024(K)/1024(M)=421.875(Mbps) 8で割って52.734375MBytes/s。 なんか変か?
とりあえず、ごく最近この道に入った奴には、あの内容では笑う しかないのでは? ヴィデオメモリとメインメモリの違いも理解 してなさそうだし。
なんつーか、滅茶苦茶というか…強いて言うなら苦笑いか? とりあえず、メモリの違いとか全部転送するのかとかはおいておくとしても、 自分で60fpsで固定するなとか抜かしてるのに、計算式は60固定かよ、みたいな。 いくらでもつっこめそうですな。
>>187 8年位前のPCでDOSエクステンダが云々、VESA BIOSが云々、といってた時代なら正しいんだけどね。
実際にPCIの帯域がこれこれだから、理論値は…という話題も合ったし。
>186 ちげーよ。 >189 ああ、そういう意味か。まあ確かにAGPなら 55MB/s程度の風速は屁でもないわな。
>>161 アルカノイドだと、バウス(自機)にボールがあたったときの跳ね返り方向は、
バウスのどの部分に当たったかで決まってますが、
ブロック崩しってなんか特別なのがあるんでしょうか?
>>175 が書いてるやつってさ、
普通オフスクリーン間の転送の方がずっと大きいので
オフスクリーンからプライマリに転送するところだけ計算することに
何の意味があるのかよくわからないです。
>>191 それはアルカノイドが特殊なだけ、それに準ずるかどうかは設計者次第
193 :
名前は開発中のものです。 :02/01/19 11:20 ID:l0apz3Qd
要するにゲームデザインの問題と。 個人的には、律儀に正しく反射するだけのブロック崩しは なかなか最後の数ブロックに玉が当たらなかったりして クソゲー化してるのをよく見かける気がする。ついでにage
>>191 昔は画面への転送が遅かったからあながち>175のは意味が無かったわけじゃない。
>>185 175の人は
「1秒の転送量(MB) < ビデオカード(MB)じゃなきゃ駄目」
のようなこと質問者が考えてるか想像してワラタのかも。
全くのプログラム初心者でいきなりJavaとか不可能?
>>196 アメリカの情報系学部ではJavaからプログラムを始めさせるらしい。
Cでゲームを作る、って、どうやって? Windowsで出来る?
作っていますが、何か?
>>199 Cでもできます。
じゃんけんゲームとかなんでもできます。
グラフィカルな市販されているゲームをつくりたいのであればWin32APIを利用して作るのですよ。
Win32APIって、Cでも使えるんですか? 使うとしたら、どの処理系で? たとえば、マインスイーパー程度のゲームであれば、 Cだけで作れます?
処理系っていうのは、開発環境のことです。
>>202 >Win32APIって、Cでも使えるんですか?
使えます
>使うとしたら、どの処理系で?
VC++, Borland C++ (Builder), IntelC, cygwin, mingw32, digitalmars, watcom, lcc-win32 など
>たとえば、マインスイーパー程度のゲームであれば、
>Cだけで作れます?
作れます
>>202 Cだけで作れます? というが、むしろ
複数の言語を使ってゲームを組む方が難しくないか?
>>198 日本でも最初Javaっていうところは多いと思うよ。
>>204 簡単なゲームならCだけでいいけど、
がんばってC++で作った方がいいような気がするんだけど、
そんなことないですか?
>>204 まずCからやってみそ。いきなりC++やっても死ぬだけだ
209 :
名前は開発中のものです。 :02/01/25 18:01 ID:TpNdaRO3
シューティングで敵を出すプログラミングはどんなのがあるんですか?
こんなの bool Teki = true; プロの間じゃもう常識。
211 :
名前は開発中のものです。 :02/01/25 18:44 ID:TpNdaRO3
それだけ。 じゃ、一定の期間で敵を出すプログラムはどんなのがありますか?
212 :
名前は開発中のものです。 :02/01/25 19:00 ID:JabPi9JG
enum TekiStatus tekiIkimasu = GOGOGO; unsigned tekiNhun_gamubare = 3; これ常識。
sleep(1000); printf("(●`ー´●)");
while(1){ MessageBox(0,"敵","敵",0); Sleep(3000); } 一定間隔で敵がでます。
よかったネ
216 :
名前は開発中のものです。 :02/01/26 20:46 ID:BXZOAbm3
217 :
209 :02/01/26 22:16 ID:???
218 :
名前は開発中のものです。 :02/01/27 16:02 ID:nDy60XnE
m×nマスが定義されていてキャラAがb個のマスを移動する というアルゴリズムだれか作って!ちなみにVB。 b=3のとき、こんな感じ □=空きマス ◆=キャラA ■=移動可能マス ◇=障害物 □□□□■■■□□□ □□□■■■■■□□ □□□◇■◆■■■□ □□□■■■■■□□ □□□□■■■□□□ □□□□□■□□□□
>>218 初歩的すぎるが、暇なので擬似コード書いてみた。
すべてのマスに対応する移動可能残量ワークを用意。ゼロ初期化。
でスタート
関数(位置, 移動可能残量)
{
位置が障害物なら何もしないでリターン
移動可能残量でその位置に入れないのならリターン
移動可能残量 -= このマスに入るのに必要な消費量
その位置のワークにすでに移動可能残量以上の値が入っていたらリターン
その位置のワークに移動可能残量を記入
if ( 移動可能残量がまだある ) {
関数(上, 移動可能残量)
関数(下, 移動可能残量)
関数(左, 移動可能残量)
関数(右, 移動可能残量)
}
}
これで
関数(Aの位置, B)した結果のワークが0でないところが移動可能範囲として描画できる。
たどるべき最短ルートは、任意のポイントのワークの数字を読んで
その隣の数字が大きくなる方向をたどっていけばAまで到達できる。
足裏が臭くなってきたな、このスレも。
223 :
218 :02/01/27 17:24 ID:nDy60XnE
>>220 すべてのマスに対応する移動可能残量ワークってどういう意味ですか・・?
すいません、初心者で。
224 :
218 :02/01/27 17:43 ID:nDy60XnE
>>220 あ、できました。こんな簡単なコードでできるんですね。
ありがとうございました!いやー2chってすごいなー
>>222 それはつまり、足を洗えということか?(w
227 :
名前は開発中のものです。 :02/01/28 09:49 ID:/P/BMSWv
228 :
770 :02/01/28 11:56 ID:/P/BMSWv
>>209 ,
>>211 今でも区別が付かないのでトリップとか使ってちゃうだい。
名前欄に半角シャープに続けてパスワードを入れるやつ。
こんなん↓
209#パスワード
230 :
209 ◆jUZhK5lw :02/01/28 17:28 ID:/P/BMSWv
これでいいんですか?
DirectXSDKのサンプル“PointSprites”を見てみるのはどうよ。
とか茶々を入れてみたり(スマヌ
>>229
?
233 :
229 :02/01/28 20:12 ID:???
念のため書くけど、俺は216じゃないyo
234 :
209 ◆jUZhK5lw :02/01/29 13:54 ID:YY1S1IhK
敵を出す方法が分からない以前に、自機と自弾は出せるのか?(w
最初にシューティング作ったときに配列しらなかったから、 敵や弾が複数出せなかったりして困ってたが、そのレベルの質問か?(ワラ
237 :
209 ◆jUZhK5lw :02/01/29 18:53 ID:YY1S1IhK
>>235 ハイそれはなんとか。
自機と弾は、構造体を使って出しました。
(じゃあ、敵もだせよ・・・)
>238 warata.
240 :
209 ◆jUZhK5lw :02/01/30 10:08 ID:yLP42Smi
>>238 最初の1匹は出るんですが。一定の間隔での出し方が
ちょっとわかんないんです
int count = 0; /* gameloop */ while (1) { : if ((count%100)==0) { createNewEnemy(); } : count++; }
>>240 メインループ()
{
カウンター変数を+1
if(カウンター変数が10以上になったら)
{
敵発生処理()
カウンター変数=0
}
発生している敵の描画処理等()
}
いっぺんこうしてみ。メインループの中に織り交ぜれ。
243 :
209 ◆jUZhK5lw :02/01/30 15:34 ID:yLP42Smi
>>241 複数の場合は?あとcreateNewEnemy()だけで敵が出るんですか?
244 :
アマチュアの81 :02/01/30 16:26 ID:kJDn/Pfx
>>209 による一連の書き込みは、巧妙に仕組まれたワナということにみんな早く気付け!。
ほんまっすかw 堂々巡りを見かねて餌を投げたのですが。
247 :
209 ◆jUZhK5lw :02/01/30 18:07 ID:yLP42Smi
ただのウザイスレになったな。(ぁ
>>247 >複数の場合は?あとcreateNewEnemy()だけで敵が出るんですか?
出るわけねーだろ?
そんなこと聞くから罠だって言われるんだよ!。
あきまさが次スレたてるときに合流させるか(w
本気なら、HP立ち上げるなりで証拠を見せるのも手だね。 あきまさのように。
ご遠慮願います
痛い初心者を見てきたからプログラム板の住人 の対応が冷たくなるのかなぁ。 昨日の回答者はよく我慢したと思う。
心に余裕がないのよ。
>>243 とりあえず、プログラム自身をもっと勉強しない?
257 :
209 ◆jUZhK5lw :02/01/31 09:54 ID:3Vff08H8
>>251 あきまさって誰ですか
あと、文字をオブジェクトにしているんですけど
罠論が有力って気が…w 環境を詳しく書いてみると信用を取り戻せるかもしれません>209
259 :
209 ◆jUZhK5lw :02/01/31 10:54 ID:3Vff08H8
261 :
209 ◆jUZhK5lw :02/01/31 11:09 ID:3Vff08H8
>>260 めんどくせーから。アドレス貼ってください。
まじめに相手されてた方々ご愁傷様です。 260はまさに彼のような人にピッタリ。 しかし、、、直リン回避に文句入れたやつ始めてみたよ。 #コピペ一発をめんどくさがるなんて、TVでネットしてる方かな。
263 :
209 ◆jUZhK5lw :02/01/31 11:40 ID:3Vff08H8
>>262 そうなんですか。PC初心者で申し訳ありません。
265 :
209 ◆jUZhK5lw :02/01/31 12:20 ID:3Vff08H8
>>209 は、まずsageを覚えろ。
罠だと言われたくなかったら、書いたソースのひとつでも提示すれ。
捨てアカ取ってジオのHP晒すことくらいできるだろ?。
ていうか、罠でしょ?
>>265 君はそのまんまコピーすることしか考え付かないほど知恵遅れなのかね?
確かに罠としか思えんな。
270 :
209 ◆jUZhK5lw :02/01/31 13:55 ID:3Vff08H8
271 :
209 ◆jUZhK5lw :02/01/31 13:56 ID:3Vff08H8
sageってなによ
説明書(2ちゃんねるガイド)くらい読めよカス。 そんなことじゃあゲーサクなんて5万年たっても無理だぞ。
273 :
209 ◆jUZhK5lw :02/01/31 14:19 ID:3Vff08H8
5万年いきられませんよー せいぜいあと7,80年だ
あ
ワナだと知っていながらハマるワナ。
初心者を装い構ってもらおうとした
>>209 は結局放置されるのでした…チーン
>>274 の 209 ◆jUZhK5lw は煽りです。徹底放置の方向で。
>>278 どっちが煽ってんだヴぁかが。こっちはマジレスしてんだぞ。
てめ―見て―な心のせまいアフォーがレスすんな。
ここはゲープロ相談室じゃなかったのか?なぜ罠なんかやらなきゃいけないの
あんたらに何のメリットがあるというんだ。
280 :
名前は開発中のものです。 :02/01/31 20:01 ID:UuSbrdr9
ウィザードリィやダンジョンマスターみたいな ダンジョンRPGのアルゴリズム教えてください。
>>280 どの部分のアルゴリズムかはっきりしてください
>>280 古典的な4方向しか向けない奴なら、今のスペックなら素直に奥から重ね書きしてっても
十分速度出るから、適当にやれば良いんじゃない?
昔は…って、そういう話じゃないか。
>>279 はいはい、たのちかったでちゅかぁ〜
そろそろおうちにかえりまちょ〜ね〜
284 :
名前は開発中のものです。 :02/01/31 20:50 ID:FKv9pcui
喧嘩すんなage
皆様、透明あぼーんは完了しましたか?
はい艦長!完了いたしましたっ!
259 :209 ◆jUZhK5lw :02/01/31 10:54 ID:3Vff08H8
>>258 環境とは?
ゲープロ以前の問題。ここで質問する資格なし。
だから、こういうのは放置するに限るって・・・。 そりゃ、一言いいたくなる気も分かるけどさ・・・。 オレモナー
先生!この板の煽り耐性のなさが明らかになりました!
291 :
280 :02/02/01 00:21 ID:SWmTp9d0
すみません、280です。 以前こういった質問をプログラマーの方にさせて頂いたんですが どの部分のアルゴリズムかって同じこと聞かれました。 どの部分のっていう以前に、まずどういう風に作ればいいのかがわかりません(汗
292 :
名前は開発中のものです。 :02/02/01 00:26 ID:6mOXvhF8
>280 芸術の基本は模倣にあり
>>291 >まずどういう風に作ればいいのかがわかりません
多分それは違う。
君の現状はおそらく、作り方のアイデアは頭の中にあるが
それが最適解であるかどうかを気にするあまり、実際に手を動かして
作り始めようとしていないだけ。何もしないうちに悩み停滞し助言を
求めている。
「実際に作ってみたが○○の結果に満足しない。どうすればいいか。」
という段階になるまでネットの回線を切ることを薦める。
295 :
281 :02/02/01 01:27 ID:???
>>291 どの程度プログラムができるかによって返答が異なりますので
280が何がどの程度できるか簡単に自己紹介してください。
296 :
280 :02/02/01 01:33 ID:SWmTp9d0
>>281 さん
あああ…それを言われるとかなり辛いものが・・・(汗
HSPで簡単なRPGやアクション作れるぐらいです。
C言語をこれから触ろうという段階です。
なんか、板汚しちゃってすみません。
293さんが言うように、まだ僕は自分でやるべきことがたくさんあったようです。
皆様、ご親切にありがとうございました
297 :
名前は開発中のものです。 :02/02/01 01:50 ID:XFopPkPD
回転した矩形同士の当たり判定は、どう計算しますか?
>>297 ・各頂点が互いの矩形内にあるか?
・辺同士が交差しているか?
どれか一つが真なら重なってる。
って風に普通の2Dポリゴン同士のあたり判定で良いんじゃない?
>>296 それだけできれば、すぐ作れそうだね。
とりあえず、ここに思いついたアルゴリズムを書いてみるってのは?
どこが駄目そうと思ったかも書き添えて。
>>283 貴方頭大丈夫ですか。かわいそーに。知的後退が見られるようですが。みんなが見ている掲示板に
赤ちゃん言葉?プログラムしか勉強してこないとこうなるんですか?(憐
もしいいひとがいるなら、参考になるHPを教えてください。
>>302 はい。いじめられてます。
初心者だからっていじめるな
209も間抜けだけど、283のような連中もハッキリいってウザイ。
プログラマが高尚な仕事だと勘違いしてるタイプだな。
>132 :名前は開発中のものです。 :02/01/30 19:17 ID:???
>
>>127 >>俺らが引けば納まるんでしょ? 多分。
>はいそうです頼むから逝っちゃって下さいあんたの勝ちだよ、ヨカータね。
>あ〜ウゼェ・・・スレタイトル見えないのかよ・・・
そろそろ相談室に戻って欲しい。
307 :
名前は開発中のものです。 :02/02/01 14:11 ID:6mOXvhF8
じゃあ、某スレのマネで、、 ( ´ー`)y─┛~~~ はい、次の方どぉぞ
308 :
名前は開発中のものです。 :02/02/01 15:34 ID:3FgmOISv
ギミックについて教えてください。 検索したら車のギミックとプラモのギミックぐらいしかでてきませんでした。
ギミック [1] _gimmick_ (1)からくり。仕掛け。 (2)〔音〕 奇をてらった演奏。また,普通では出せないような音を用いた演奏。 ( ´ー`)y─┛~~~ はい、次の方どぉぞ
スプライト表示について教えてください。 ポリゴンキャラが拾ったアイテムを画面の奥から出てくるような感じで 画面端のアイテム欄に並べて行きたいんですけどスムーズに移動できません。 2D座標で計算すると、ポリゴンとの位置関係がおかしくなるし、 3Dにすると、最前面に表示していてもポリゴンが刺さって前面に来てしまいます。
311 :
名前は開発中のものです。 :02/02/01 15:46 ID:3FgmOISv
>>309 ゲームのギミックを処理してキャラを裸にしたいのですが可能なソフトはありますか?
服のデータだけ消して全身肌色にしたいのです。
Ztestをオフにしなされ。 ( ´ー`)y─┛~~~ はい、次の方どぉぞ
>>311 >ゲームのギミックを処理してキャラを裸にしたい
多分それは違う。
君の現状はおそらく、キャラの服のデータだけ消すことで
君自身の股間のギミックを処理することができるということに過ぎない。
( ´ー`)y─┛~~~ はい、次の方どぉぞ
316 :
名前は開発中のものです。 :02/02/01 16:42 ID:ilrgY29+
タスクに代わるもっとカコイイ方法ってありますか?
317 :
名前は開発中のものです。 :02/02/01 16:45 ID:3FgmOISv
>>314 >君自身の股間のギミックを処理することができるということに過ぎない。
最初は「はぁ?」と思いましたが考えたら激しく笑いました。
服のデータはどうやって消すのでしょうか?なにかソフトが必要なんですか?
209のパターンファイルは作りやすいなw
>>317 ここは「ゲームプログラミング相談室」なのよ。
頼むからもう他所に行ってくれ。返答もしないでくれ。な。
320 :
名前は開発中のものです。 :02/02/01 23:05 ID:yaKNvp5t
質問: こうゆう関数が作りたいんです。 Vector TurnVector(Vector source, Vector target, float percent); sourceベクトルをtargetベクトルにpercentの割合だけ近づけた(回転させた) ベクトルを返す関数です。なるべく高速なアルゴリズムにしたいのですが、 どうすればいいのでしょうか?
>>320 0<=percent<=1
[return vector] = (1 - percent) * [source] + percent * [target]
をSSEとか使って高速化したいって話か?
322 :
320 :02/02/01 23:21 ID:yaKNvp5t
>>321 説明不足だったので補足します。
sourceとtargetは長さ1の単位ベクトルで、戻り値も単位ベクトルに
したいんです。つまりsourceからtargetへ回転させる必要があり、
percentでその角度の割合を調整する感じです。
(Vectorはx、y、zのfloatの構造体です。)
>>322 普通に外積+内積+4元数使った方法は分かってて、それよりも
高速にしたいって事かな?
>>320 GameProgrammingGemsに載ってたやつだと駄目なの?
325 :
320 :02/02/01 23:45 ID:yaKNvp5t
>>323 自分で考えられる方法は、それぞれのベクトルのyawとpitchを求めて、
角度を計算してベクトルを割り出す、って感じです。
これより速い方法なら大歓迎です。
>>324 どんな内容でした?
326 :
324 :02/02/01 23:57 ID:???
327 :
320 :02/02/02 00:09 ID:???
>>326 その方法を知らないので具体的に教えてください。
328 :
323 :02/02/02 00:25 ID:???
329 :
320 :02/02/02 00:49 ID:???
>>328 情報どうもです。
4元数読んでみましたが、えらい深みにハマってしまいそうです…
330 :
名前は開発中のものです。 :02/02/02 00:57 ID:i49zbV6r
( ´ー`)y─┛~~~ はい、次の方どぉぞ
>>329 素直にGameProgrammingGems買っとけ。
タケェだろ…
>>332 12000円ぐらい学生でも何ヶ月か節約すれば十分たまるだろ。
それでも高いと思うなら半額の原書買っとけ。
英語が読めないならプログラマなんてやめとけ。
>>333 もし彼が中・高学生とかだったら、他にも使いたいこといっぱいあるし
そこまで要求するのは可愛そうってもんだよ。
#といいつつ俺は高校生の癖にGem2まで買っちまったがw
>>332 じゃあ本屋で、該当部分だけ立ち読みしとけ。
>>334 >#といいつつ俺は高校生の癖にGem2まで買っちまったがw
俺なんか高校生の癖に
「Game Programming Gems 1,2」
「Real-Time Rendering」
「Advanced Animation and Rendering Techniques」
「3D Game Engine Degine」
「Computer Graphics Principles and Practice」
とか買い漁ってます。(藁
洋書には素晴らしい本が多くて幸せです。
( ´ー`)y─┛~~~ はい、次の方どぉぞ
シューティングゲームを作ってるのですが、敵の出現タイミングと 敵の攻撃、移動パターンで悩んでいます。 特に移動パターンで悩んでいて、自分の思ったように動いてくれません・・・。 基本的な Z といったパターンはどのように動かしたらいいですか?
>>338 敵の動き用のツールを作って、そこで移動パターンを作るのはどうですか?
最初はスクリプトを作って動かそうと思ったのですが、 スクリプトを作る時間が無かったので埋め込み型にしようとしたのですが・・・。 あとFlipのタイミングが合わず、敵の残像が残ってしまう・・・鬱だ逝こう
( ´ー`)y─┛~~~ はい、次の方どぉぞ
>>338 今現在、
どういう実装にしていて、
その結果、どう思ったように動いていないのか
具体的に書いてみ。(ソース出せるなら、それでも良いけど)
醤油なら出せるけどね。
344 :
8945 :02/02/02 05:44 ID:4W2oJZ3g
http://www.puchiwara.com/hacking/ これなんかいいと思うのだが……‥‥・・
「いっせー」
/■\ /■\
( ・∀・) ( ´∀`)
⊂ つ⊂ つ
.人 Y 人 Y
し'(_) し'(_)
「のー」
/■\ /■\
(・∀・ ) (´∀` )
⊂、 つ⊂、 つ
Y 人 Y 人
(_)'J (_)'J
「で」
/■\ /■\
( ・∀・ ) ( ´∀` )
( つ⊂ ) ( つ⊂ )
ヽ ( ノ ヽ ( ノ
(_)し' (_)し'
「あげ!!」
/■\ /■\
∩ ・∀・)∩∩ ´∀`)∩
〉 _ノ 〉 _ノ
ノ ノ ノ ノ ノ ノ
し´(_) し´(_)
345 :
338 :02/02/02 15:31 ID:uCuDAOXO
>>342 今現在の状況は・・・。
まず、弾の出し方ですが弾構造体をTAMA_MAX(17)個つくり、その中に
x、y、bmpdata、Activeを作って、それをポインタ参照でActiveじゃない
方からActiveにしています。Activeがfalseになる時は
640+弾サイズになる時です。
そこまではよかったのですが、敵の動かし方で詰まってしましました。
敵キャラデータを構造体(x,y,bmp)にまとめてx,yを変化させていけば
いいと思ったのですが、、、うまく動かなくて・・・。
普通にfor文でまわしたらFlipのタイミングが合わなくて残像が残る。
といった状況です(汗
>>338 >Flipのタイミングが合わなくて残像が残る
よくわからん。 描画と敵の動きが別のスレッドなの?
適当にリンク
www.hh.iij4u.or.jp/~peto/Games/games_top.html
見当違いだったらすまん。
>>345 >>345 Zに移動だったら、まず変数を1個増やす(例:Stat)
右に移動(Stat==0)→適当なところでStat++
→左下に移動(Stat==1)→適当なところでStat++
→右に移動(Stat==2)→適当なところで殺す
以上、バータリー的に行け
348 :
338 :02/02/03 02:00 ID:???
>>346 ,347
アドバイスありがとうございました。
Flipの方は解決しました。
スクリプト指向
350 :
名前は開発中のものです。 :02/02/03 03:45 ID:WfOFv5LQ
すみません。 英語サイトのどっかでゲーム用デザインパターンをまとめてあった サイトがあったと思うのですがどこかわかる方いませんでしょうか? ブックマークがなくなったので…。
けど、結局、通せんぼしてたよね、彼。
( ◔ฺ_◔ฺ)/ 彼女が回り道したから、結局、無意味な通せんぼだったよ。
モナーRPGつくれよおまえら
ふっかーつ 敵を動かすのはどうしたらよいのでしょうか? 簡単な2DSTGでお願い致します。
読みましたけど、見たことがない関数が多少ありました(゜д゜)? タスクとかスプライトとか。
>>357 スプライト云々は DirectX Graphics のヘルプ読め、タスクなんかは tsk.cpp, h/tsk.h
に実装があるだろ。
>355=jUZhK5lw つーかマルチポストしてんじゃねぇよカスが
だから、209 ◆jUZhK5lw はもう放置しようよ・・・。
http://www.hh.iij4u.or.jp/~peto/Games/games_top.html を参考にしてC++でタスクを使っています。新しいタスクを作るときに
Cならば
TCB* t = task_make(pri,func)のようにすれば、
task_makeの実装によってあらかじめmallocしておいたヒープを渡せますが、
C++では
TCB_HOGE* t = new TCB_HOGE(パラメータ);
task->add(t)//TCB_HOGEは基本クラスTCB_BASEを継承しているので代入できる
のようになって毎回new を呼ぶことになってしまいます。
これを解決するにはどうすればいいでしょうか?
それとも気にするほどのことではないのでしょうか
>>360 あなたに指図される筋合いはありません。
何の権限があってそのような事を言うのですか?
>>361 1. placement new を使う
2. operator new を定義して、自前でメモリ管理をする
あと STL 使っている場合テンプレートパラメタで渡す allocator にも手を入れないと、
完全にはメモリを管理下にはおけない。ただ、そこまでやる意味があるかというと、
俺は無いと思う。
(仕事でメモリの制限が厳しいハードを対象にプログラミングしてる場合を除く)
>>361 そもそも C++ なら、タスク用の構造体を用意せずに
struct Task {
virtual void Update(unsgned tick) = 0;
};
とでもインターフェースを用意してやって、Task を継承したクラスを、自機/弾/敵機
など必要なだけ用意。あとはメインループの中で
using namespace boost;
using namespace std;
list<shared_ptr<Task> > taskList;
for_each(taskList.begin(), taskList.end(), bind(&Task::Update, _1, tick);
とループをまわせば終わりって気がする。
実際には
taskList への新規タスクの登録/削除のタイミングに関しては気をつける必要が
あるけど(特に for_each 使う場合には、ループの最中に削除すると iterator が不
正な値を指すことになる)
taskList への挿入削除時に動的なメモリ確保/開放処理が発生するので、メモ
リ不足が発生しては困る環境では allocator を自作するか、list の変わりになる
コンテナを自前で実装する。
タスクの新規作成/削除時に動的なメモリ確保/開放処理が入るので、ヒープの
断片化が気になる場合には Task::new, Task::delete を自前で用意する。
とか細かい注意点があるけど、そんなものでしょ。
うわーん
366 :
361 :02/02/08 13:50 ID:???
お答えしてくれてありがとうございました。
>>363 operator new はクラスごとに書かなくちゃいけないのかな?
とりあえず何回もnewされるクラスに使ってみて、パフォーマンス
を比べてから、効果が大きいようであれば他のクラスにも使ってみます。
>>364 うう、関数オブジェクトだとかそこら辺は勉強してないのであまりわからないです
もうしわけない。想像していた以上にSTL周りのことは重要になってきそうですね。
Effective STLでも読んでみることにします。
うおーん
368 :
名前は開発中のものです。 :02/02/10 11:26 ID:tpvVEAK8
ゲームのアルゴリズムを学ぶのに良い本知りませんか? みんなアルゴリズムってどうやって勉強してるんでしょうか?
とあるページでCPUの占有率が常に100%なゲーム(アプリ)はダメみたいな事を書かれていましたけど、 何か理由があるのでしょうか?
100%がダメというより マルチタスクOSでの行儀がなってないとだめということだよね。 無限ループみたいな組み方すると バックグラウンドのプロセスになかなか処理がいかなくなる。 そうするといろんな弊害が起きることが考えられる。
>>370 最初から他のアプリケーションと並行して動かすことを前提としないゲームなら、
それでも構わないと思うけどね。フルスクリーン表示なら全然問題ないでしょ。
ただ、ゲームをウィンドウモードで表示しながら Web で検索しようとか思うと、ちょっ
と嫌かも。
372 :
369 :02/02/10 20:12 ID:???
なるほど。理解できました。 ありがとうございます。
>368 ソフトバンクの「遊びのレシピ」って本は 各種ゲームのアルゴリズムとデータ構造を解説してる。 基礎的で単純なものばかりだけど,行き詰まってる人にはいいかも。 勉強法だけど,私は他のゲームを見てアルゴリズムを想像してるだけ。
おお。。あんたもそうか。 これがくせになってもう病気。。 GT3見ても何見てもだんだんフローチャートに頭の中になっていく…
>>361 ,366
ワシも同じページ見ながらC++でタスク作ったことがある。
そんときは363と全く同じやり方に行き着いたよ。
メモリ管理は手を抜いて固定サイズメモリ領域の配列に
したけど。
いちいち各クラスのoperatow newを用意する必要はなくて、
タスク基底クラスのoperator newだけ自前で用意して、継承
させてやればOKOK。
関数ポインタの扱いがC++だと厄介なので、TCBの内部では
statusだけ保持して、別途用意した関数ポインタテーブルを
引くようにした方が楽だと思う。
ttp://www.emit.jp/prog/prog_cpp0.html この辺参照。
普通は固定から切り出しじゃないのか??
>>375 > 関数ポインタの扱いがC++だと厄介
直接メンバ関数へのポインタを使わずに、多態を使えば良い。細かいことは
コンパイラが面倒見てくれるぞ。
図々しくてすみませんけど。 固定から切り出しのソースコードが乗っているホームページ有りましたらキボンヌ。
(>_<)ワーショイ
>>378 placement new (operator new())に関しては、
More Effective C++ を読むのが良いかと。
固定から切り出しについては、確保した固定メモリ領域内の
アドレスを引っ張ってきてキャストするだけでいいんだが・・・
(もちろん管理は自前でやる必要があるけど)
で、任意サイズのメモリを切り出せるようにするとフラグメン
テーションやらガベコレやらめんどくさくなるんで、手を抜くな
ら切り出すメモリのサイズを固定にしちゃう、と。
その場合、オブジェクトのサイズが切り出し単位のサイズを
超えないようにすることだけ注意するべし。
>>377 基底クラスのexec()は仮想関数にしといて、各クラスの関数
ポインタはstaticに定義したメンバ関数ポインタテーブルから
引く、と。
>>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();
}
};
って感じで作るのも良いかと考えてた。
384 :
382 :02/02/19 23:29 ID:???
>>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は使ってませんでしたが、基本的には
同じ方式です(よね?)
385 :
384 :02/02/19 23:33 ID:???
インデントが・・・。 鬱。 すまそ。
>>384 なるほど。各タスクの「中」で状態遷移させるのに、メンバ関数ポインタを使おうと
いう話ですね。理解しました。
みなさんは、どうやってプログラムの勉強したんですか?
>>387 1. 本を読む
2. コードを読む
3. プログラミングする
いじょ。
>>388 389
んなこと、だれでもしってるつーの
>392 この言葉かっこいいな・・・
別に387がそうだという訳じゃないけど、 プログラミングを「覚えよう」という発想が間違い。 プログラミングは「理解」するもんだよ。 まぁ、日本の学校教育が「覚える」主体で「理解」を 求めてないから、どうしようもないんだけどねぇ。
プログラミングに邪道はあるのだよ‥‥
>>387 まずはプログラムを書く。作りたいものならなお良し。作らなければならないもの
なら更に良し。
んで、わからないことにぶち当たったら、自分で悩んで調べて何とかする。
それでもどうにもならなかったら、予め質問内容をきちんと調べて、自分がどこまで
わかっていてどこがわかっていないかを明確にした上で先達に聞く。
そして、書きながら、もしくは書いた後で、より良いコードにするためにはどうすれ
ばいいのかを悩んで調べて改善していく。その積み重ねしかないよ。
「どうすればいいですか?」という、聞かれた方がYesかNoで答えられないような
質問をした時点で負け。
定期ageしとく
>>388 4.自分のコードを直す
つーか、糞コードを糞なままにしてると、上達せん。
>>398 でも、ゲームをつくることを最優先にしないと、
コードばっかいじって永遠に完成しなかったりする罠。
つくっては壊し、つくっては壊し...
>>399 で、そのうちに
1 行き当たりばったりで作るのではなく、事前に設計する
ことを覚える、と。ちなみに、その先は
2 設計ができるようになると、楽しくてはまり、過剰設計の罠に陥る。
3 リファクタリングを身に付ける。
と続く。
ゲームなら期限を決めて作る。 ちなみに俺は無期限だと完成できないタイプ。
>>399-400 この段階に入ってからが本番。学ぶべき事が格段に増える。
・モジュールやデータ構造といった、設計関連の知識
・ソートやサーチなどの、アルゴリズムに関する知識
・パーティクルや画像合成など、エフェクトに関わる知識
・UIやツール作りなどの、人間工学に関わる知識
>>394 に共感を覚えた。
プログラムに限らず数学とか頑張って手順を説明してるのに
「とりあえず答えは何?」と聞かれるとすげー腹立つ…。
(しかもそういう説明する奴は嫌われる、と(ワラ))
>>402 俺は特にプログラム初心者のゲームに欠けてるのはモジュールだと思うんだよね。
アルゴリズムとかエフェクトに関する知識がいくらあっても、
ソースが膨大化して何がなんだかわからなくなってはいお疲れみたいな。
結果がすべてだからな。
>>387-404 この辺り、すごく参考になりました。特に
>>402 辺り。
皆さん、ありがd
ほかには
・プロセス/スレッドやメモリ等、OS寄りのことについて
もやっておくと、頭スッキリして楽になるように感じます。
406 :
名前は開発中のものです。 :02/03/12 11:15 ID:3GjIfP2m
一応ageとこ。
==2==C==H====================================================== 2ちゃんねるのお勧めな話題と ネットでの面白い出来事を配送したいと思ってます。。。 ===============================読者数:95432人 発行日:2002/02/12 どもども、ひろゆきですー。 こないだお伝えしました「佐々木さん」の件ですが、実を言いますと佐々木さんだけが悪いってわけじゃないんですー。佐々木さんはなにもいきなりドアを蹴って騒いだりしたわけじゃないんですー。 佐々木さんは最初は極めて紳士的に接してきたんですけど、おいらがドア越しに生意気な態度をしちゃったもんだから佐々木さんはキレちゃったんですー。。。 ご承知のとおり、おいらってばメルマガでは自分の都合のいいことを、都合のいいようにしか報告しませんが、本当はおいらにもたくさん非があるんですよー、、、えぇえぇ。。。 INSIや谷澤動物病院が裁判に持ち込んだのも、実はおいらの態度に問題があったんですよねー。。 おいらはこれまで2Ch被害者の襲撃から逃れるために、キックボクシングをやっていたなんて嘘を吐いてきましたが、本当はキックボクシングどころか卓球すらやったことないんですー。 おまけに両親とお姉ちゃんにはさんざん甘やかされて育ってきたので、いまいち礼儀というものを学べなかったようなんですー。うぅ、、、 もしなにかスポーツにでも打ち込んで、ちゃんとした両親に育てられてれば、こんな陰湿な人間にはならなかったと思うし、こんなに歯糞もたまらなかっただろうと思う今日この頃ですー。。。 ところでおいらって平安貴族みたいな顔してますかねー? こないだ埼京線で女子高生の集団に「麻呂だー」「超キモイー」って言われちゃったんですけど。。。 んじゃ!
age
さみしすぎるんですが・・・
あげてみる
>>402 なんか、俺がいまそんな感じだ。。
興味が多方面に分散して、自分が手に負えなくなってきたよ。
これはこれで楽しいんだが(w
ミンナ、ソウナンダネ…
412 :
名前は開発中のものです。 :02/05/07 23:19 ID:R1rOQJWc
初心者用質問スレはageとかんとな。
これから Visual Studio 6.0 と DirectX8.1 SDK を初めてインストールするんですが、 どっちを先にインストールした方が良いとかってありますか? OS は Win2K です。
VS6→WinG DXは入れる必要ない
415 :
413 :02/05/08 17:26 ID:???
416 :
RE: :02/05/08 23:58 ID:y5yWHAGQ
コナミの音楽ゲームに 良く似た DanceDancerevolutionもどき 作りたいんですが 作る前に どんな知識と技術が必要ですか?
418 :
RE: :02/05/09 00:48 ID:???
>>417 法律の知識と裁判で戦う技術。
裁判で戦う技術は無いですが
知識だけなら
>>416 まず作り始めろ。
そのうちにどんなことが必要かわかってくるはずだ。
420 :
RE: :02/05/09 01:14 ID:???
>>419 分りました〜
メモ帳でがんばって見ます
422 :
ゲー作初挑戦@ ◆ByBD3yHE :02/05/09 21:49 ID:9rTAdl0c
初めてゲームを作る決意をしますた。 同人ゲーですが。 かと言って絵描きの自分では、プログラマーを集うしかなく、 絵描きのページで募集したところで集まらず。 落ち物ゲーム+(間のストーリー流れを)ADVで作りたいのですが、 何か良いスクリプトないでしょうか? ある程度までは勉強する覚悟はもちろん有りです。(C言語など一切触ったことありませんが) また、技術者を募る良い場所があれば指南していただきたいのですが…。 もちろん報酬はお礼程度ですが有りです。
424 :
ゲー作初挑戦@ ◆ByBD3yHE :02/05/09 22:15 ID:PutN4UaM
メンボスレ?
スマソ、ありがとうございます。 思いっきりスレ違いですたな。 頑張ってオモロイ技術者をゲットして楽しく作ってきまつ。
427 :
名前は開発中のものです。 :02/05/10 22:12 ID:lw3De0y2
すみません、DirectXが上手く動かないんですが… VBから使ってるんですが、 プライマリサーフェイスとバックサーフェイスの フリップが上手くいきません。 っていうか、概念がいまいち分かりません。 バックサーフェイスに画像転送 ↓ フリップ ↓ ループ させているんですが、バックサーフェイスに画像を書き込めていない見たいなんです。 どなたか分かる方いませんか?
430 :
名前は開発中のものです。 :02/05/11 17:31 ID:npO7xgR2
もう少し情報出してもらえないとわからないよー。 Windowモードでフリップしてないよね?
>429 >バックサーフェイスに画像を書き込めていない ならFlipとは別問題じゃない?
一応解決しました。
>>431 さんの言うとおり、フリップとは一応関係ありませんでした。
クリッパーの設定がおかしかったみたいです。
クリッパーを外したらちゃんと書き込めました。
で、結局クリッパーの使い方は分からず終いでした。
ついでに、320,240のフルスクリーンです。
っていうか、クリッパーの使い方教えてください(;´Д`)人
検索してみましたが、ページが一箇所しか見つからず、
しかも、そこに書いてある通りにやっても上手くいきませんでした。
ヘルプにはのっとらんのか?
ヘルプ!? って? DirectXの? あるの?
DirectXのヘルプはみんなの心の中にあります
わかりました、心を磨くため、しばらく旅に出ます。 探さないでください。
心配しなくても探しません。 安心してください。
DirectXができません、同じ症状の人いませんか? コンパイラ :Borland C++ SDK :DirextX 7,DirectX7a 症状 :プログラムを起動したら「このプログラムは不正な・・・」 MAINのエラーです。DDRAW.DLLなどのメッセージ。 プログラム :DirectDrawのオブジェクトを作る簡単なもの、 DirectDrawCreate,DirectDrawCreateEx共にエラー、戻り値も帰ってきてない模様 コンパイラに付いてきたライブラリ(DirctX3)なら動きました。 SDKのサンプルは動きました。 DirextX :DirextX8.0
440 :
名前は開発中のものです。 :02/05/12 01:38 ID:4YN9DEeo
>>439 DirectXができません、って・・・(sigh
COFFとかOMFとかでgoogle検索しる!
441 :
439 :02/05/12 01:41 ID:???
わかりました、探索してみます。
442 :
439 :02/05/12 01:51 ID:???
OMFで検索したら「オメコファイヤー」とでますた
443 :
439 :02/05/12 01:59 ID:???
オブジェクトファイルの種類についてでました。
>>439 implib.exeでddraw.libを作り直してください。
445 :
名前は開発中のものです。 :02/05/12 05:27 ID:rvy9Ukfg
いや、ルパンはとんでもないものを盗んでいきました。 それは貴女の心です。
446 :
名前は開発中のものです。 :02/05/12 09:53 ID:VspODHGo
最近プログラミングを勉強しはじめた厨房の質問なのですが c++buliderとWindows付属のツール(ペイントなど)だけでゲームの製作は可能ですか?
448 :
439 :02/05/12 09:59 ID:???
解決しました、 必要なのはIncludeFileだけで、 SDKの中のライブラリは使わなくていいんですか?
449 :
名前は開発中のものです。 :02/05/12 09:59 ID:VspODHGo
プログラミング以外にもさまざまな知識が必要ですか?
DirectX8SDKいれたらVCで「DirectX AppWizard」っていうのが追加されますよね。 それつかってゲーム作ってる人います?
抽象的な質問ばっかり
452 :
名前は開発中のものです。 :02/05/12 15:25 ID:W8mXt2BA
答えられないヤツばっかり。
なかなか返答が難しい質問だからな
企画屋撲滅スレに行けば優秀なプログラマが沢山いるんできっと質問に答えてくれるYO
456 :
440 :02/05/13 03:21 ID:???
>>448 どのように解決したのか、後続のためにtipsのまとめキボンヌ
457 :
448 :02/05/13 22:44 ID:???
えっと、 IMPDEF ddraw.def c:\windows\system\ddraw.dll でモジュール定義ファイル作って、 IMPLIB ddraw.lib ddraw.def c:\windows\system\ddraw.dll で作ったファイルをリンクしたら動いた。 けど、このファイルがDirextX7で動くか心配だ・・・
458 :
440 :02/05/14 01:21 ID:QkMxU4bA
>>457 THX!
ま、正直なところ、DirectXであれこれやるならVC++を使うことをお薦めするが・・・。
DirectXの機能を使うと楽になる部分もあるけど、ほとんど使わないで済む程度のゲーム だったらVC++とかDelphiのライブラリ内で作っちゃった方がいい。
>>460 そりゃそうだ。
マインスイーパ作るのにDirectXはいらないな。
適材適所。
462 :
名前は開発中のものです。 :02/05/14 21:31 ID:gp9yAFEg
463 :
名前は開発中のものです。 :02/05/18 20:47 ID:OvBslwUs
464 :
名前は開発中のものです。 :02/05/19 11:39 ID:l8bBGy5I
FF XIでのヘタレッぷりには大いに笑わせてもらった。 映画で懲りたかと思えばコレか、 おまえらゲームプログラマの質なんてたかが知れてる。 次はどんな手で笑わせてくれるんだ? サーバが重くてつながらないのにチョコボ大陸横断レースでもするのか?(藁
人間以外の生物は書き込みにこないで下さい。
プログラミングあるいはソフトウェア構築の話なら歓迎だぞう
468 :
名前は開発中のものです。 :02/05/19 16:38 ID:5QVs0KEU
構造設計スレに書いたんだけど、あっという間に閉鎖スレになっちゃったのでこっちで再送 すいません、STGを作るの初めてなんで疑似タスクで質問させてください。 疑似タスクの仕組みとしては LogicianLoad を参考にさせてもらっています。 ---------------- Q: 1フレームの中でタスクの優先順位を何回も変更する場合ってありますか? 優先順位を変更するならば、タスクをリストに登録する際どうやってその位置を見つけますか? リストの先頭からざーっとなめてるんですか? ---------------- とりあえず、私としては以下のようにしてるんですが、よくないところとかあったら教えてください。 ---------------- 固定長ワークの配列を作る。要素数 256個とか。 タスクは、ワークへのポインタを持つ。 いくつものタスクがおなじワークへの参照をすることがあるので、ワークには参照カウンタを持たせる。 タスクのリストへの登録は map<優先度, list<タスク *> > な優先度マップを用意して、 優先度マップ[優先度].push_back(&タスク); としてリストに登録。タスクの優先度変化とか、チェンジタスクとかは同じワークを参照するタスクを つくって対応。状況に応じて自殺。 ----------------
>>468 適切なソートアルゴリズムを選択すれば良い。
この場合、バケットソートが丁度良いかもしれない。
バケットソートについてはgoogleで検索して下さい。
優先順位別のバケット(リスト)を用意しているのだから 要素を追加する位置をサーチする場合、そのコストはゼロ。
リストは一つでも良い。 各優先順位の先頭(or最後尾)ノードへの参照テーブルを用意する。
「タスク」という言葉は最近は通じない場合が増えている。 外人相手には100%通じないので、その辺も気を付けて。
473 :
468 :02/05/19 20:33 ID:???
>各優先順位の〜 なるほどです。やってみます。
優先順位ってどうして必要なんですか? 1 移動 2 衝突判定 3 オブジェクトの生存チェック 4 描画 こういう風に順番を分ければ、処理順が重要になる事って あまりない気がするんですが・・・
476 :
名前は開発中のものです。 :02/05/21 01:09 ID:0jVRIemA
>>474 その1〜4の順番分けをすることが、まさに処理の優先順位をつけることだと思うのだが・・・。
もちろん、メインループ内でそれぞれの処理を行う関数を順に呼ぶようにしても作ることは
できるんだけど、その辺をフレキシブルに変更できるようにするための仕掛けがタスクな
わけじゃん。
>>476 優先順位と言えば優先順位みたいなモノだけど、
474で書いたように呼ばれる順番を保証しないと、
(好き勝手な優先順位で好き勝手に死んだり生まれたり)
安全と最適化を両立しづらくないですか?
だから、優先度は 決められたヘッダーとかで識別子を宣言するように チーム内で決めるのがふつうなんじゃないの?
479 :
名前は開発中のものです。 :02/05/21 14:08 ID:lOTv7vN.
DirectX8で、3Dモデルを使い、ようやく簡単なアニメーションが できる様になったのですが、ここではたと詰まってしまいました。 あるアニメーションセットから、別のアニメーションセットに移る時 一般にどのような補間がなされているのでしょうか? とりあえず自分でも色々試したのですが、一瞬で移行すると場合によっては 不自然だし、現在の位置から移行先の最初のフレーム位置まで 適当に補間をかけてみたら、なんとも奇妙な動きになってしまう始末で(- -; ……まさか、同じ座るという動作でも、移行前のものにあわせて 何パターンもアニメーションを作るのでしょうか((((; ゚Д゚))) なんとも手詰まりで…アドバイスいただければ幸いであります。
ケースバイケースで、つなぎのモーションをかませるとか、 つなぎの姿勢をかませるとか、 そこら辺はノウハウの問題なんじゃないかと思うんですけど 状態遷移図みたいなのを書いて検討してみるしか。
481 :
480 :02/05/21 15:06 ID:???
訂正。 しか。→とか。
D3DXVec4LerpでQuarternionに線形補完を掛けるとか
モーションA start<------+------>end モーションB start<------+------------------->end ^0.0 ^1.0 この0.0〜1.0の区間を補完すればいいんでない?
Σ0<= t <= 1.0 A * t + B * (1 - t)
485 :
479 :02/05/21 17:14 ID:???
レスありがとうございます。返事が遅くてすいません。
…勘違いして、ずっと別のスレを監視してました(;´Д`)
>>480 なるほど!後のパターンを増やすのではなく、つなぎを噛ませるのですか。
うー、しかし同じアニメーションからの遷移でも、どのコマから移るかによって
いろいろ考えなきゃなのかな…。しかし完璧を求めるなら、これをやるべきですよね。
>>482 線形補間でやると、組み合わせによっては突拍子もないのがでちゃうんです。。
たぶん私のモーションの作り方が悪いんですが…でもこれが手軽で良いですよね。
>>483-484 ややや、つまり移行時間を決め、その間のAとBを合成しつつ、
だんだんとAの影響を弱め、Bの方を顕在化させるわけですね!
むはー、プログラム的にも解決できるなんて(*´Д`)
皆様のレスに基づき、それぞれのアニメーションにあった方法をあてて
いきたいと思います。一人じゃ絶対思いつかない事ばかりで…本当に大感謝です〜。
486 :
名前は開発中のものです。 :02/05/22 01:58 ID:emKWkvCg
姿勢は QuaternionSlerp 位置は エルミート曲線で補間。 その他、キーワードは Catmull-Rom スプラインかな。 あとは自分で調べてくれ。
487 :
名前は開発中のものです。 :02/05/22 16:22 ID:wmr.hUOI
ネット対戦ゲームつくりたいのですが いいホームページ知りませんか? ちなみにVISUALBASICで作ろうとおもいます
488 :
99 :02/05/22 16:35 ID:???
-------風俗の総合商社・MTTどこでも-------
〇デリバリーヘルス〇デートクラブ〇女性専用ホストクラブ〇
〇ハードSM奴隷クラブ〇レズビアン倶楽部〇ホモ・オカマ倶楽部
〇変態痴女と遊ぶ会〇痴漢・覗き趣味の会〇変態同好会・各種!
●楽しく遊べます! 090-8002-8356番
-----------美男・美女会員など多数在籍中-----------
http://www.mttdocomo.jp/ -----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
-----レズビアン・スタッフ●ホモスタッフ●女性専用ホストスタッフ同募-----
http://www.mttdocomo.jp/ ------------------------------------------------
489 :
名前は開発中のものです。 :02/05/22 17:15 ID:DJLFFQIk
つーかモーションとモーションをブレンドしてるゲームって少ないと思うけど。 普通キャンセルだろ。
>>489 今時キャンセルなんてやってるのは時代遅れのメーカーぐらい。
GCマリオはキャンセルだったかな
ブレンドすると現実的にはありえない動きをしてしまう罠
ブレンドしなくても現実的にはあり得ない動きをしてしまう罠。
キャンセルした方が良いケースと補間した方が良いケースがある。 mouchottoatamatukaouze
基本的にすべての動作は補完で繋ぐべき 不自然になっちゃうなら補完式を考え直すべき
497 :
sage :02/05/23 22:57 ID:FUqKSSOQ
現実と照らし合わせれば。 補間もキャンセルとごまかすための手法の一種にすぎないのだが。 だから、どちらが優れているなどないと思われ。 case by case。 一つのことに凝り固まるのは、頭悪いぜ。
名前をsageちまった。 俺が頭悪かったようです。 逝ってきます。
>>497 あんまり、本当の事を言うと話が止まるので
わかっていてもしらんぷりしとけよ(ワラ
トルネコみたいなダンジョンではなく、女神転生シリーズに近い 通路ばかりのダンジョンをランダムで生成したいのですが、 唯一見つかったアルゴリズムでは綺麗なダンジョンが作れませんでした。 トンネルを掘るようにしてダンジョンを作るアルゴリズムを使うと 綺麗なダンジョンが作れる、と読んだのですが、参考になる 情報などがありましたら教えていただけないでしょうか? よろしくお願いします。
503 :
416(HSP) ◆HoSW/FCI :02/05/24 03:53 ID:btbuBamk
>>501 0が通路で1が壁だとすると、まず、n×mの広さを1で全部埋めます。一番外側だけ0にすると範囲チェックしなくて済むから楽かも。
で、親座標と子座標を用意して、親は左上から右下まで2ステップずつ捜査させます。子は親からランダムに4方向を選んで移動するわけですが、これも2ステップずつ移動させます。子の移動先が壁だったら掘って、またランダムに移動。
移動予定先が全部通路で選択肢が無い場合は、子の移動は終了して、親を1つ進めます。
そしてまたその親座標から子を移動させて動けなくなるまで掘っていく。これを最後まで繰り返すと解が1つだけの迷路ができます。
同様の方法で2つの接しない壁を作っていくという方法もありますが、上記のほうがシンプルかも。
上記の方法を発展させ、矩形を用いて自由な角度に掘り進んでいく方法も。 すでに掘った場所には移動しない、という判定自体は同じです。この場合の分岐方法は、掘り進んでいく過程で分岐点を複数置いていく(記憶していく)ことになります。 記憶しないで矩形の範囲単位で掘れるだけ掘るという方法もありますが、洞窟っぽくはならないでしょう。また、掘っていく過程で矩形の大きさを変えれば、より自然の洞窟に近い迷路ができます。
>>502 アルゴリズムを作れそうにはないけど
パズル的に楽しませていただきました。
>>503 そのアルゴリズムをベースに作ってみようかと思います。
ありがとうございました。
完全ランダムで無くて良いのなら n x n のサイズの小さい迷路を いくつか作っておいて、つながるように並べるのもあり
sage
510 :
オhル艦長 :02/06/25 14:18 ID:J1CGzihY
緊急浮上
VBで敵を誘導させて全滅させればクリア、というゲームを作っています。 敵の番になったら、自分のいるマスにむかって1歩(1マス)近づく、 という感じにしたいのですが、ちょっとなやんでいます。 敵のキャラと自分のキャラの座標を比較して、 敵のx座標が自分のx座標より大きければ1マス分増やす、 y座標が自分のy座標より小さければ1マス分減らす、というかんじです。 ifやSelect Case の入れ子でやってみたんですが、 行がながーくなってしまって、 どうもこれでは上手いやり方ではないような気がします。 もっと効率の良い考え方がありましたら教えていただければと思います。 説明がへたですみません。。
512 :
511 :02/07/24 12:49 ID:Ml.IF7uc
あげてみたり。。。。
>>511 どうして長くなったのかわかんないけど、行がなが〜くなったらそれぞれの処理を分割するしかないのでは?
ifの条件文が長い場合はあらかじめ比較するモノを変数に入れておくとか。
if〜endifはつかってるよね?
手法としては、移動する処理自体を1つの関数にしておいて後から高速化するのが望ましいかも。
とりあえず遅くてもゲーム自体はできるから。
>>511 >敵のx座標が自分のx座標より大きければ1マス分増やす、
>y座標が自分のy座標より小さければ1マス分減らす、というかんじです。
敵のx座標が自分のx座標より小さい場合や
y座標が自分のy座標より大きい場合は考えなくていいのか
俺ならとりあえず移動処理をブラックボックスにしてほっとく
あとからいくらでも高速化できる(かもしれない)からな。
516 :
511 :02/07/24 13:22 ID:Ml.IF7uc
レスありがとうございます。 >ifの条件文が長い場合はあらかじめ比較するモノを変数に入れておくとか。 んと、とりあえずこんな感じにしてみたんです。 select case Npc.x(敵のx座標) case is > Player.x(自分のx座標) if Npc.Y < player.Y then Npc.X = Npc.X - 32(32はひとますぶんです) Npc.Y = Npc.Y + 32 endif ...こんなかんじで、敵のいる位置のパターンが8こ(斜め4個に上下左右) もあるんで、どんどん入れ子じょうたいになってしまって。。。 >移動する処理自体を1つの関数にしておいて後から高速化するのが望ましいかも。 ふむふむ。上記の移動の処理をMoveNpc というPublic Subにしているんですが、 そのなかに自作の関数をいれるということでしょうか? >敵のx座標が自分のx座標より小さい場合や y座標が自分のy座標より大きい場合は考えなくていいのか そうなんです!パターンのぶんだけif −endif 文がふえてしまって ながくなっちゃってるんですよね。これをもっとどうにかして みじかくならないかなあと。。。 >俺ならとりあえず移動処理をブラックボックスにしてほっとく ふむふむ、さきにほかのところを完成させちゃえー、ということですね。 たしかに、、、ほかにも考えなきゃいけないとこがいっぱいあるんで そっちもがんばりたいとおもいます。
517 :
511 :02/07/24 14:00 ID:Ml.IF7uc
ここに書かせてもらってレスを拝見したおかげで、 ぱにくってた頭が少しすっきりしたみたいです。 移動処理のとこの致命的なミスを発見し、うまくなおせました! (行の長さは相変わらずながくなっちゃいましたが) 今は敵が死んだときの処理をがんばってます。
>>516 > そうなんです!パターンのぶんだけif −endif 文がふえてしまって
if 敵のx座標 < 自分のx座標 then 敵のx座標を増やす
if 敵のx座標 > 自分のx座標 then 敵のx座標を減らす
if 敵のy座標 < 自分のy座標 then 敵のy座標を増やす
if 敵のy座標 > 自分のy座標 then 敵のy座標を減らす
コレだけで済むと思うんだが。
ちなみに、
> Npc.X = Npc.X - 32(32はひとますぶんです)
今の状態では右へ1キャラ分移動するのに32を加えていると思うけど、
これはそういう風にするんじゃなくて、将棋の「マス」みたいに管理すべき。
そしてグラフィックを表示するときにx座標とy座標を32倍すればいい。
519 :
511 :02/07/24 19:40 ID:Ml.IF7uc
レスありがとうございます、書きこみ遅くなってすみません。
>>518 >今の状態では右へ1キャラ分移動するのに32を加えていると思うけど、
>これはそういう風にするんじゃなくて、将棋の「マス」みたいに管理すべき。
>そしてグラフィックを表示するときにx座標とy座標を32倍すればいい。
おお!ということは、移動処理のほうでNpc.X = Npc.X+1にして、線画処理で
BitBlt FrmMain.PicMain.hDC, Npc.X * 32, Npc.Y * 32, 32, 32, FrmMain.PicChara.hDC, 0, 32, vbSrcPaint
てなかんじでいいのでしょうか?
この方がのちのち管理もしやすそうですね。
今までは1個1個のマス目の番号を割り出すときに
intBlockNo = (8 * (Chara.Y / 32)) + (Chara.X / 32)
ってやってたんですが、この方法ならいちいち32で割らずにすむので
かなりすっきりできますね!!!
これからさっそくかきなおします。
>>516 absとsgn関数をうまく使え
if abs(敵のx座標-自分のx座標) < 1 then 敵のx座標にsgn(敵のx座標-自分のx座標)を加える
Y座標についても同じ
521 :
511 :02/07/25 02:23 ID:VlAcWhO2
レスありがとうございます。
>>520 >absとsgn関数をうまく使え
今 abs関数とsgn 関数調べてきました!
絶対値、、、中学のときに習ったような、、自分の不勉強さに身がちぢこまります。
理解できてないままソースにコピペではあまりにも恥ずかしいので
いまから紙にかいて考えてみます。
あれれ?と思うようなとこはたくさん有りますが
ゲームのおおまかなソースが書きあがったので、
明日は他の部分ももっと効率的な書きかたができないか考えてみます。
>>521 お前は効率的な書き方をマスターしたいのかゲームを完成させたいのかどちらだ?と
小一時間(以下略
慣れないうちはきっちり動くものを作り上げてから速度&効率のチューニングをやれYO!
とマジレスもしてみるテスト
とりあえず作りかける ↓ ちょっと効率のいいアルゴリズム発見 ↓ それにあわせて書き直す ↓ さらに効率のいいアルゴリズム発見 ↓ それにあわせて書き直す ↓ さらに効率のいいアルゴリズム発見 ↓ : :
524 :
511 :02/07/25 21:22 ID:???
レスありがとうございます。激しく反省中の511です。
>>522 >お前は効率的な書き方をマスターしたいのかゲームを完成させたいのかどちらだ?
ゲーム完成させたいです!
>慣れないうちはきっちり動くものを作り上げてから速度&効率のチューニングをやれYO!
そうですね、まだ直さなきゃ行けないとこがいぱーいあるのに
綺麗なソースをかきたいなんて100年早かったです。。反省。。。
>>523 うう、完成しないままループしてしまいますね。。。。。
きっちりさいごまで仕上げることに専念します。
今日は移動用の選択カーソルの不具合をなおします。
今、DirectX8で3Dのゲーム作っています。 カメラアングルは、女優(対象)を後ろから捉えています。 そこで質問なんですが、 イベント中とかにゲームの動きを止めて カメラだけを動かして女優(対象)を舐め回すように撮影したいんですが、 (取り合えず、女優を中心に球を想定して、常に女優の方を捉えつつ その球面上をカメラが移動って方向で) 何か良いカメラの動きのアルゴリズムとか知りませんか? やはり、監督自身(自分で)動く軌跡(座標)を切ってやらないといけませんかね?
>>526 ベジェ曲線みたいにすりゃいいんじゃない?
>>511 氏
検証もせずに、他人のコード採用してたら、それこそあぼーんだよ。
解決案が必要なのに、エゴに凝り固まって、他人のソース見ることも出来ないのは、もっと重傷だけどね。
まあ、ゲームに関して言えば、コーディング技術云々より、ゲーム全体としてのデザインの方が重要だから、
そんな小さなことにこだわるな、というのが正解かもね。
おまいらは、リソースの管理はどうしてますか? 基底クラスを書いて、音や絵やその他のデータなんかも まとめて管理してるんでしょうか?
>>530 PCの話で良い?
データのI/Oはインタフェースに肉付けしてく形で作ってる。
具象クラス側で生ファイル、圧縮ファイル、ネットワーク、リソース、
各I/O方法にあわせる事が出来るし、プロトタイプ作ってる途中は
生ファイルI/Oだけあればよいし。
532 :
530 :02/09/17 02:30 ID:???
>>531 私も同じようなもんですが、ネットワークは別にしてました。
参考になりました。
533 :
名前は開発中のものです。 :02/09/19 05:00 ID:N2qPvY6Q
スプライトを管理するクラスが作れません。C++ です。 今は、各々のキャラクタのクラスがサーフェスやアニメーションの情報も持っていて、 なんとなく不細工な感じがするので、見た目の情報を切り分ける事にしたんですが、 それを一元管理するクラスの設計が出来ません。 今動いてる物をいじるんだから、それなりに便利にしようと思い、 確保したサーフェスやアニメーションの情報や、今表示中のスプライトの情報を、 管理クラスの寿命と共に廃棄できるようにしようとしたり、 サーフェスやアニメーションの情報を削除しても、それをまだ使用してるスプライトがあったら、 そのスプライトが削除される時までは、保持されるような物を作ろうとしました。 けれど、実装してもうまくいかないし、 整理しようと紙に書いていても、頭が混乱してきました。 みなさんは、こんな場合にはどう設計されていましたか?
534 :
533 :02/09/19 05:03 ID:???
sage 忘れてました。 すみません。
普通にリファレンスカウンタ使う
俺の場合 ◆オブジェクトクラス スプライトへのポインタ(場合によってはテーブル) 各種パラメータ _______ ◆スプライトクラス 対象サーフェスへのポインタ サーフェス上のRECT 現在位置 アニメーションありの場合RECTのテーブル _______ ◆サーフェースクラス サーフェス実体 スプライトからの参照カウント という風に階層分けをしてうまく作った。
537 :
536 :02/09/19 05:18 ID:???
場合によっては、 スプライトクラスを ◆スプライトクラス 現在位置 スプライト定義クラスへのポインタ 表示しているRECTのindex ◆スプライト定義クラス 対象サーフェスへのポインタ RECTのテーブル と分ける。
キャラをオブジェクトと見立ててそれぞれで画像を管理するとめちゃくちゃにならない? 私がやったときは、各キャラのデータを保持するクラスを作って それとは別に「キャラのデータを元に画面を組み立てる」関数を作った。 ハードコーディングでキャラの外見を決める場当たり的な方法だけど、 小規模なら混乱を最小限に防げてプラクティカルだよ。
スプライトをリファレンスカウンタで管理するってどうよ。 シーン構築時に必要な物をすべて読み込んで、 終了時にまとめて削除する方が速いしスマートじゃね?
540 :
533 :02/09/19 05:42 ID:???
>>535-536 早朝からありがとうございます。
リファレンスカウンタは、調べていてる時に見つけて
>>536 さんのような感じにしていたんですが、
管理するクラスと、それに管理されるクラスとの関係を
上手くまとめられませんでした。
ゲーム開始前の時点で、管理クラスにサーフェスやアニメーションなんかの
描画に関係する物を登録して、終わった時には、使っていたほうは意識せずに、
管理クラスが、自動的に廃棄してくれるようにしようとしたんですが、
>>533 で書いたように、混乱して終わりました。
ここらへんの管理クラス回りの設計を質問したかったんですが、
文章が長い上に要点がボケてました。すみません。
541 :
533 :02/09/19 06:08 ID:???
>>540 を書き込む前に、その間の書き込みを確認してませんでした。
>>537 そうやって定義を分けておくと、同じ種類のキャラクタのスプライトで使いまわせますね。
参考になりました。
>>538 >「キャラのデータを元に画面を組み立てる」関数
が私が最初にとっていた方法だと思います。
その場合のキャラのデータとは、見た目やゲーム内での状態を一つにまとめて
表してる物の事ですよね?
違ってたら、すみません。
>>539 > シーン構築時に必要な物をすべて読み込んで、
> 終了時にまとめて削除する方が速いしスマートじゃね?
そうしたかったんですが、このへんが、よくわからなかったところなんです。
必要な物を管理するクラスの設計を、触りだけでも解説していただけませんか?
>>539 読み込み失敗時のエラー処理が繁雑になるから、ゲーム開始時点で
まとめて読んでしまった方が良いかも。データ量にも依るけど。
543 :
名前は開発中のものです。 :02/09/19 15:44 ID:0CTGoUX3
vertex-shaderってなんですか?
vertex-shader(頂点シェーダ)ってのは、 トランスフォームやライティングやテクスチャやブレンディングなどの頂点処理機能のこと。 プログラマブル頂点シェーダは、いままで処理系(Direct3Dなど)の 固定機能のみであったのに対して、これらの機能をプログラムできるってやつ。
545 :
名前は開発中のものです。 :02/09/19 16:04 ID:39QNxA7D
546 :
543 :02/09/19 16:38 ID:???
>>544 サンクス。
禿しくわかりました。
オレイデス(・∀・)つ旦~
ここはひどいインターネットでしたね
549 :
名前は開発中のものです。 :02/09/22 18:44 ID:lBYio+jt
画角を、視点からの距離に応じて自然に変化させる事はできますか? 普通の人間に近い画角を設定すると、至近距離での物の見え方が おかしいように感じます。
その問題は随分昔から色々言われてきて、 今のところ現実的な解決方法が見つかってないと思う。 至近距離のものは、目には歪んで見えているのに真っ直ぐのものを 真っ直ぐと認識できる。これは脳みそが補正しているからです。 至近のものをなんとかして正しくゆがめて表示すると、 それはそれで不自然に感じるはず。 なぜなら、脳が補正しないから。
もー少し書くと、 最大の問題は、目からディスプレイまでの距離が離れているから、 自然な映像は目からディスプレイよりも近い映像を表示し得ない のです。 ヘッドマウント式のディスプレイであれば、 正しくゆがめるとちゃんと認識できると思う。
>>551 HMDは焦点距離を1mくらいに設定してるので、
結局うまく認識できないと思う。
それは16Bitでの単色のグラデーションが汚いことより重大な問題なのか?
Virtual Realityとしては結構な問題。 グラデーションはbit数を上げれば解決するけど。
555 :
名前は開発中のものです。 :02/09/23 00:45 ID:ThYVC2el
dxfフォーマットの詳しい解説ページ教えて下さい 本は絶版みたいだし、お願いします
556 :
名前は開発中のものです。 :02/09/23 01:03 ID:v6pFfVCj
>>555 やめとけ。検索すればすぐでると思うが、情報がいい加減でひどい
フォーマットってうわさだ。何に使うん?
ちょっと調べたが酷いもんだったなあ 3D拡張もあるらしいが
558 :
名前は開発中のものです。 :02/09/23 01:13 ID:v6pFfVCj
560 :
549 :02/09/23 03:58 ID:???
>>550-554 単純な問題じゃないと言うわけですね。
自分の知識でまだまだ足りない部分があった事がわかりました。
ありがとうございました。
561 :
名前は開発中のものです。 :02/09/23 06:14 ID:FUH7SiPA
ゲーム作成用のC++クラスフレームワークいいのありませんか? DirectX8はWizardもついてだいぶよくなったみたいだけど 構造体がいっぱい残ってるのがうっとしいです。 やれることが限定されても、そのへんクラスで結構隠してくれてるのが あればいいんですが。
Wizardで作られたものを整理して、テンプレートとしてとって置く
elはごった煮だけど良い物だよ。 洗練されているという良い物ではないけど。
566 :
名前は開発中のものです。 :02/09/23 08:14 ID:FUH7SiPA
>>562-563 ありがとうございます。
ELLibちょっとヘッダ眺めてみました(眺めただけ)。
ほかにもあれば、情報収集しときたいのでお願いします。
>>566 やねうらおの奴使っておけ。
まー、完璧ではないかも知れないが普通に使う分には問題ない。
NxDrawが生きてたらそれが良いと思うんだけどね。
あとはゆきいるかの所かなぁ
リンクは面倒なのでぐぐってくれ。
ゲーム用のフレームワークが本格的なゲームエンジンを指す場合、
高い金払ってUTのエンジン使えるように契約したりしてくれ。
568 :
名前は開発中のものです。 :02/09/23 08:49 ID:FUH7SiPA
>>567 ふんふん、なかなか本格的ですね。
これはどうもありがとうございます。YTLには笑った。
趣味で使うつもりなので。
UTって何でしょう。
>>569 ありがとうございます。
ちょっと見ただけでは良く分かりませんでしたが
今度暇なときに見てみます。
>>571 その前に君は日本語を使いなさい。
「あれ」は何の指示代名詞なんだい。
573 :
571 :02/09/23 15:22 ID:???
>>572 571
<#`Д´>パ、パカニスルナ
「片手落ち」ってのは使わないほうがいいよ 厨に変なツッコミいれられるから
>厨に変なツッコミいれられるから 575=厨
なんかよく分からんのだが
とりあえず誰か
>>571 の解説を頼む。
正直、俺には読解不能。
>>577 やねうライブラリでは、2D しか対応してないって事では?
3Dやりたいなんて書いてないじゃん
580 :
578 :02/09/25 02:18 ID:???
>>579 今時の PC でゲーム作るって言ったら、
3D に対応してるライブラリのほうが、作るのが簡単で良いんじゃない?
無理に 2D に落として仕様を考えるよりも、素直にアイデアを出せるし、
三世代くらい前のカードでも、充分速かったと思うよ。
>>580 ん?
3Dの世界を構築するエンジンじゃなくて、
3Dハードを使うって事か?
3Dだと初心者で権威を失うから駄目なんだよ。
意味がわからない
3Dだと初心者で←教える人は2Dは得意だけど3Dは苦手 権威を失うから駄目なんだよ。←2Dなら深い質問も大丈夫です、かかってきなさい という意味と思われ
一つのファイルにバイナリとテキストを混在させるのは可能でしょうか? また可能ならどういった方法がありますか? テキストとバイナリを交互に書き込んでみたのですがテキストが化けました Delphi、Windowsです
>>585 テキストをバイナリとして扱えばいいんでねーの?
>>586 なるほど、その手がありましたか!!
ありがとうございました
アフォが増えたな・・・
やっぱりファイルヘッダはテキストのほうがかっこいいので
>>585 を再度質問させていただきます
よろしこ
>>589 ヘッダだけテキストにしてそれ以降をバイナリ
もしくは全部テキストにしたければバイナリをbase64にでも変換すれば?
>>591 >ヘッダだけテキストにしてそれ以降をバイナリ
Delphiでどうすればできるのか教えて欲しいです
Cではできますた
>>592 同じようにしる!!
その手の作業に関しては、
DelphiでできてCでできないのはわかる(VCL使っているとか)が、
CでできてDelphiでできないというのはよくわからない。
とりあえず、Cではどういやってたか言ってくれれば、 こたえられるかもしれんよ。
そういえば漏れはDelphiでパケット越しに テキストバイナリ混成データ送ろうとして 四苦八苦した思い出があるなぁ けど、もうどうやったのか忘れた(藁
Delphiを捨てればいいと思うんだけど、、、ダメ?
Delphiパカニスルナ!! Personalでやったから苦労したんだよ! ちなみにパケット越しじゃなくて パケットに詰めて、だな
パケットって言っても シリアライズとデシリアライズのコードを対になるように書けばそれで 終わりっしょ?DelphiもCも関係ないと思うんだが・・・
>598 アホですか? そのシリアライズがうまくいかないって話なんだけど? てか思い出したけど サーバC++/クライアントDelphiでやってて コネクションまで確認できたのに結局データのやりとりはうまくいかなくて クライアントもC++で組み直したんだった もちろんDirectPlay使ってたとかいうオチじゃなくてWinSockでやってた
>Personalでやったから苦労したんだよ! 非PersonalだとコンパイラやIDEが勝手にプログラマの無知を補間してくれるんですか?
Personalに欠けてるコンポーネントが ゲームアプリ開発に及ぼすってことなのかね。 あまり考えられないよな。 ・・・・DB関連のことなのか。
× に及ぼす ○ 影響を及ぼす
Indyがフリーで落とせることを知らなかったとか
Indyの日本語ヘルプが手に入るインターネットはどこですか?
(´-`).。oO(日本語ヘルプがDelphiPro以降に付属することをわかってて聞いているんだろうな)
IndyよりもActionManagerがほしい
>>599 > そのシリアライズがうまくいかないって話なんだけど?
自分がアホであることを晒してどうするよ?
599にはデータを扱うプログラムは早すぎるってことで。 ソケットもファイルも書き込んだ/送出したデータをありのままの姿で返すだけだし、 をれが言語によって変わることも*ありえない*と言うことが理解できてないようだから。 化けたとしたらそれは書き込んだデータと書き込んだつもりのデータが違うだけ
ファイルに対してシリアライズして内容をチェックするのが先だあな 素人は何でも一度にやりたがるからダメだ
駄スレ防止age
611 :
名前は開発中のものです。 :02/09/27 11:30 ID:u5LECmtB
C++でシューティングを作ろうと思っています。 敵キャラの抽象クラスを作って、キャラごとに派生クラスをつくりました。 そこで、出てくる敵キャラすべてを格納しておくキューを作りたいのですが、 Javaみたいな、すべてのクラスを格納できるキューが作れなくて困っています。 何か案はありませんか?
>>611 その抽象クラスのポインタを、コンテナに入れれば?
613 :
:02/09/27 15:01 ID:uiQG1iKW
Indyって何?(w
>>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);
>>613 Internet Direct。
主要なインターネットプロトコルに対応したオープンソース形式のライブラリ。
BSDライセンスとMPLのデュアルライセンスで都合のよい方を選ぶことができる。
Delphi, C++Builder, Kylix用。
http://www.nevrona.com/Indy/ # なぜか今つながらない。
>>614 C++をあまり知らないヤシに説明するのに
当然のごとくboostを使ってるお前がウザイと思うのは俺だけか
>>616 boost なんて、もう標準も同然じゃん。
>>616 ていうか、boost 無しでは生きていけません。
boostが標準ってお前らの中だけでの話だろ。 入門書ではまずboostを扱わないし、 ウチの会社も導入を許可してくれない。 初心者に説明するときは、極力非標準は排除して話すべきだと思うんだが。
boostなしで生きていけないなんて軟弱ぅ
>>620 かと言って、生ポインタでもかわいそうな気が……
623 :
622 :02/09/28 04:29 ID:???
既に話題がスレ違いな気がしてきたのね。
まぁ、なんつーか今はLokiすらも標準同然とか言い出す 頭に何か沸いてる人間も出ているわけで、 boostくらい見逃すのがいいのかもしれないな
概念の理解なしにboost等を使うのはまずいっしょ
>>611 がこの機にboost::shared_ptrを調べる程度の心がけがあれば
問題ない。
>>620 > ウチの会社も導入を許可してくれない。
lambda あたりはともかくとして、shared_ptr さえ使えないような会社なら
転職を考えた方が…。
そんなことぐらいで転職するもんなのか・・
java あがりの初心者には、ポインタを忘れさせてやれ。
>>627 導入したければ、自分のプライベートを裂いてコード検証をして、
各クラス毎の関連と、使用可不可のチェックリストを作らないと許可が下りない。
大体、まともなところならshared_ptrに変わる物はすでに作られてる筈だから
対して問題にならないと思うが。
631 :
名前は開発中のものです。 :02/09/28 20:30 ID:ThgTmq4W
オブジェクトの座標って、みんなどんな型を使ってる? 俺は不安なのでfloatとか使ってるんだけど、実はintでもいい?
ポインタって何の役にたつの?
>>631 なんかIDがカコイイから特別に教えてやる。
表現したい座標の性質により変える。
>>630 仕事に使う道具を検証するのに「プライベート」な時間を要求するのか。
終わっとるな。
>>631 意味不明。
「不安」、「いい?」とは具体的に何。
>>632 必要なければそれでいい。
気にすることはない。
すでに方法があって、それでうまくいってるなら 検証する時間を与えられるかどうか微妙だなあ。 検証する時間をクレとリーダーに交渉する時間は 仕事中であってもいいと思うが、そこでダメといわれたら プライベートでやるしかないな
637 :
631 :02/09/28 21:08 ID:???
>>635 スクリーンの左上を(0, 0)、右下を(800, 600)などとして
オブジェクトを配置していくわけです。
移動してくオブジェクトの座標には、今までfloat型を使って表現
していたのですが、これって意味のないことですか?
ぽいんた出来ないと仕事になりません
>>637 スクリーンに表示だけならint型だけでもいいんでないの。
ただし、その値を計算する時に、float型程度の精度が無いと
計算出来ないんじゃない?
計算様の別型の値を持って、それで計算、intにキャストして表示って馬鹿らしい。
だから、漏れは初めからfloat型でいっていますが。
>>637 オブジェクトが小数点以下の数値をとる可能性があるなら無駄じゃないよ。
>>637 アプリの内部変数の型の話をしてるなら
意味がないかどうかはアプリによるだろう。ちゃんと設計しる。
一方、一般的な3DAPIに渡される座標値の型指定がfloat値であることの
意味を問うているなら、それはちゃんと意味があるという答えになる。
試しに320x240程度の画面モードにすれば肉眼で確認できるだろう。
642 :
641 :02/09/28 21:40 ID:???
3Dなら 「ゲームの中のシーン座標」と「スクリーン座標」はそれぞれ別物として 定義するのが普通だぞ。2Dの場合は、依存関係を持たせないと苦しいケースも ある。
643 :
初心者 :02/09/29 00:07 ID:???
初めてパソゲーで曲を作るんですが、、 どうやったらいいんでしょうか? 実際にギターなどでは作ったことがあるんですが、、、 シンセサイザーに挑戦します。 友達とチームを組んで活動します。 シンセサイザーのことはまるで分からないので、アドバイスください。
>>643 MIDIデータを作ることから始めてみてはどうか
まったく知らなければDTM板でも覗いてみるとか
645 :
名前は開発中のものです。 :02/09/29 15:07 ID:RRwSPMiU
>>631 8ビットCPUのフルアセンブラでしか経験ないけど、16bit整数+8bit小数の24bit
で、管理してました。
0.5ドットの移動とかやりますし。
音楽ツクールかってみたら?
3D使わないなら、精度の変化が無い固定小数で扱う。
今、固定小数点を C++ で実装するなら、テンプレートかね?
ぶっちゃけ、RagnarokOnline の武器攻撃計算Javaスクリプトを作ってるのですが、Web制作版で聞くことでもないし、ゲームタイトル非依存の一般的な問題とおもうのでここで聞くことにしました。 あのゲームの場合、装備品にカードが刺せて、装備品やカードによっていろいろとパラメーターが変わります。あるカードを刺せば攻撃力 += 10; とか、あるカードをさすと敵の属性によって追加ダメージ15%等‥‥ で、私の頭ではいちいち、いちいち武器やカードの効果を攻撃力計算関数内に全部書き込む方法しかおもいつきません。 こんなの↓ func 攻撃力() { 全装備品のカードスロットを走査、カード枚数[カードID] の配列を作成 基本能力値読み込み if (カード枚数[100] > 0) { .. }. // 修正能力値の計算 if (カード枚数[200] > 0) { ... } 修正能力値による基本攻撃力の計算 if (カード枚数[150] > 0) { .. }. if (カード枚数[250] > 0) { ... } ほげほげほげほげ if (カード枚数[50] > 0) { ... } 以下繰り返し return 最終攻撃力 } でも、この方法は私としてはすごい汚いとおもうんですね。ミスを誘いやすいし、メンテもしにくい‥‥ というわけで、こういうのを効率よく処理する方法について教えてください。
>649 オブジェクト「思考」せよ なんのためにJava使ってるんだ(藁
とりあえず
>>650 に具体的に説明してみて欲しい。
他の者は解法を書くのをしばし待て。
652 :
649 :02/10/02 13:56 ID:???
>650 一応、考えてみたんですが、 function Card(〜〜〜, effect) { ... this.effect = (effect == null || effect == undefined) ? null : function () {}; return this; } function Equipe(〜〜〜, numcards, effect) { ... this.Cards = (numcards == 0 || numcards == null || numcards == undefined) ? null : new Array (numcards); this.effect = (effect == null || effect == undefined) ? null : function () {}; return this } function ComputeAttack() { 基本能力値読み込み for (e = 0; e < EquipSlot.length; e++) { E = EquipeSlot[e]; E.effect(); if (E.Cards == null) continue; for (c = 0; c < E.Cards.length; c++) { E.Cards[c].effect(); } } 繰り返し } というのを考えては見たのですが、(続く)
653 :
649 :02/10/02 14:02 ID:???
(652から続き) あ、上のコードで effect っていうのは、カード効果とか装備品の効果です。 で、上のように考えては見たんですが、 ものによって a += 5; --- @ とか、 a = 0; --- A とかあるんですね。 詳しく実装が解明されているわけではないのですが、Aの効果があったら@の効果はキャンセルされるし @A@@とか、配列にきてたらどうしよう?とか非常に困ってしまったのです。
C++でごめん class 武器 { public: int 攻撃力(); ステータス構造体 ステータス修正(); private: int 基本攻撃力; ステータス構造体 ステータス修正値; カード; //複数枚装着できるなら配列化 }; int 武器::攻撃力() { return 基本攻撃力 + カード->攻撃力修正(); } ステータス構造体 武器::ステータス修正() { return (*this)->ステータス修正値 + カード->ステータス修正値; } 入りきらないので次↓
class カード { public: int 攻撃力修正(); ステータス構造体 ステータス修正(); private: int 攻撃力修正値; ステータス構造体 ステータス修正値; }; あとは必要な武器とカードをデータベースからインスタンス化するだけだと思われ カードを複数枚装着できるなら、各計算関数内で繰り返してやるだけ ステータス構造体は、ゲームに出てくるステータスを静的メンバに持つクラスで実装して +演算子や+=演算子を定義してやる てか、攻撃力もステータス構造体に含めて問題なさそうだな 「全ての効果打ち消し」とかは配列をソートすれば良いだけでは?
計ったら倍くらい遅かったのに、STL や boost を使いまくってる漏れは、イッテヨシ でつか? エラー処理は例外に頼ってるのに、例外安全なんか知らんわボケっていうのも、イッテヨシ でつか? もまいら、どうしてますか?
>>656 > もまいら、どうしてますか?
case by case
っつかクリティカルな部分以外は速度なんか気にしないし、クリティカルな部分も
メモリアロケータに手を入れれば幸せになったりする。
ガチャポン戦士を作ろうと思うんだけど スレ立ててもかまわないですかね? ちなみにプログラミング経験は無しです・・・ 言語はHSPかDelphiのどっちかで勉強しながらやろうと思います。
659 :
658 :02/10/07 18:00 ID:???
age
>>685 まずはHSPかDelphiのスレで質問しながら作り、
最低限のモノを作ってからスレ立てれば、
叩かれる可能性はかなり減るかと。
>658 この板は「カタチの無い企画スレ」は徹底して終了厨に荒らされる傾向があるので まず一通りカタチにしてからスレ建てた方が良いでしょう
(´-`)。oO(荒らしの自己基準にあわせなきゃならんのか・・・・・・)
664 :
名前は開発中のものです。 :02/10/07 23:03 ID:WME4JpPc
荒らしと一般の人の価値観が一致している部分だと思うよ。 <形のない企画スレ禁止
あ、ごめん、ageちゃった。
この板じゃ「勉強しながらやろうと思います」で完成したためしがないからな。 出来る香具師ですら完成しねーんだからよ。
667 :
658 :02/10/07 23:12 ID:???
>>664 「形のない企画スレ」には3Dレースゲースレも含まれるのかい?
あれは【スレ独立で失敗】の典型例として この板の歴史に名を刻んでしまったね。
形があることは単に成功の必要条件に過ぎない (成功の十分条件ではない)ということを、あのスレは教えてくれた。
3Dレースゲースレ最大の敗因は作者サイドが煽りに過剰反応したとこだな 作者が名前伏せて反論してたから削除人も相手にしてくれなかった
ここは雑談スレじゃないからそろそろやめなされ
673 :
669 :02/10/07 23:38 ID:???
悪かった。雑談スレに移動するよ。
674 :
名前は開発中のものです。 :02/10/08 00:11 ID:tUlUNf/S
RPGの本体とシナリオデータってどうゆう風に分離させるんですか? どっかで「スクリプト」を使え見たいな話きいたけど。 例えば、 じいさんに話す。(シナリオ始まり) 洞窟でなにする。 じいさんに話す。(シナリオ終了) こんな感じの場合。
>>674 RPGツクールを一度触ってみ。
あんな感じで分離させればOK.
>>675 禿同。
RPGツクールは作られるモノはクソだがツール自体は優れている。
今擬似3Dのフィールドを歩くゲーム作ってるんですが (タクティクスオーガみたいな) あらかじめフィールドだけを最初に1回作っておいて、 キャラクタのみをメイン画面に転送すると、フィールドと キャラクタとの前後関係がおかしくなってしまいます。 かと言って全部を毎フレーム描画していると遅くて困っています (GDIのBitbltで処理しています) DirectX使ったら改善できるでしょうか。 またDirectX使わない場合はどうしたらよいでしょうか
うーん、ツクール買うのはつらい。 どんな感じ? 鍛冶屋のおやじとか、通常のNPCを絡ませるのとか難しそうなんだけど。 そのまま台詞も本体に突っ込んでしまうのはやっぱり無理かな。
NPCの属性決めて、(店か人か) 店の場合は汎用的な店の親父のメッセージ表示、 人だったらメッセージ文字列へのポインタ持っておいて そのポインタ参照したらメッセージ出てくる感じにしたらどうでしょ
>>677 その種のヘヴィな処理にGDIを使うのは狂気の沙汰です。
描画順序については「フィールド」「キャラ」といった
モジュール化的な分割を諦めて画面生成のみをモジュール化する形をとります。
えぇえぇ、ゲームのコードなんてスパゲティ作ってナンボですから。
他にも解決策はあるけどね。 ZバッファやZソートを使った陰面処理を行うとか 始めからDirect3Dで描画しそのへんの処理をハードウェアに任せる方法とか。 遅くなるけどね。
>>680 ご返事ありがとうございます。
やっぱGDIでは無理でしょうか…。
一応モジュール化的な事をしているんですが果たして
使いやすくなってるのかどうか藁
今んとこスパゲッティになりまくりです
>>681 3D空間にポリゴン一枚出す処理すらよく分かりません(;´Д`)
あ、読み間違えてた… 諦めて ですね藁
>>678 RPGツクールは体験版があるので、どんなものか見てみるだけなら
それで充分だと思うよ。
体験版のあるURLは、適当に検索してちょ。
お、体験版もあるのか。さがしてくるよ。
体験版ならエンターブレインのHPにないか? もしみつからないようならMXかなんかで拾って 参考にしたら破棄しちまいな。
>>677 素直に DirectX 使って 3D で描画しろ。CPU <-> バス <-> グラフィックカード
間を流れるデータの量、桁が違ってくる。
>>690 流れるデータ量の桁って変な知ったかするのヤメレ
この場合問題はバスに流れるデータ量ではなく
Zバッファがハード的に使えるか
CPU側で自前計算しなければならないかの差
>>691 前後関係無視して単純に全画面 BitBlt するだけでも、GDI だと
すぐにサチるぞ。
サチるってわけのわからないオナニー用語を使うのはヤメレ
律速といったほうがいい?
このスレはテンプレは無いの? それぞれの言語の長所・短所・難易度 BGMのそれぞれの記録形式の長所・短所・難易度 作りたいゲームを再現するにはどの言語がいいか こんなテンプレがあったらいいね。
>>695 無いのじゃなくて必要だと思った奴が自分で作れば良いだろ
あったらいいねじゃなくて言いだしっぺのお前が作れ
何でも人任せにするな
697 :
↑ :02/10/09 23:27 ID:s4kqpcbZ
初心者なので作れません。
698 :
名前は開発中のものです。 :02/10/09 23:33 ID:4GQZ2WlT
この手の話題はプログラミング板で盛ん。しかも最後は荒れる。 とりあえずJava。 実行速度が遅いんで、アクション・シューティング系は避けた方が良いかも。 ダンジョンマスターJavaは素晴らしかった。
>>697 初心者とそれを理由にする怠け者は違う
自分で初心者を名乗る奴は後者
>>693 ハードウェア屋さんとか物理屋さんなんかが良く使う用語だな>サチる
saturation (飽和) の略式表現
>>690 7のDirectDraw使うことにしますた。
3Dはムズイのでまたの機会にします
702 :
↑ :02/10/09 23:55 ID:???
>>701 確かに DirectDraw なら(ビデオメモリがある限りは)ビデオメモリ上に
サーフェイス作るから、BitBlt は速いやね。フレーム毎に全部書き直し
にしても、そこそこの fps が出せる。
パーツを動的に弄らないという前提なら
705 :
_ :02/10/10 02:32 ID:???
>>702 遅いのはJavaアプレット。
Javaアプリケーションといっしょにするな!ボゲェ!!
>>705 今現在Javaでゲーム作ってる漏れが言うのも何だが、
起動とGUIは非常に遅いっす。色々工夫しないと話にならんです。
707 :
要ブックマーク :02/10/10 11:15 ID:buBBvKiZ
>701 はぁ?DirectX8にスプライト関数(ラッパークラス)あるだろ? 非常に簡単に半透明使えるし、回転拡大縮小できるし、ポリゴンみたいなこと できるし、いいんじゃないの?エフェクトはかけられないけど・・・。 DirectDrawより簡単ではるかに便利。2Dならこれを使えや
>>701 はもうプログラム諦めたに1000マンセー
DirectX8以降だとWin95を切り捨てる事になる。
>>708 はID3DXSpriteまともに使った事無いに10万ペリカ
おまえら、相談室で煽りあうのは寄席。
煽りあいできるクソスレは他にいくらでもあるだろう
(´-`).。oO(くどい)
715 :
708 :02/10/10 16:41 ID:???
DX8のスプライト関数使うとよく叩かれるんだけど なんか理由あるの? drawPrimitiveUPと比較しても速度変わんないんだけど? 抜き色指定とかでDDS使わない分、楽でいいだろうに・・・。
716 :
708 :02/10/10 16:42 ID:???
アゲハチョウ
>>703 ためしに作ってみたら毎フレーム全部描画しても
GDIの時より軽くなりますた。
>>708 そういえばアルファブレンドができなくて悩みました
8のヘルプも読んでみようと思います
>>715 ID3DXSpriteを使うと叩かれるのか。謎だな。
それはどこでの話だ。
719 :
708 :02/10/10 17:43 ID:???
720 :
名前は開発中のものです。 :02/10/10 17:51 ID:tjuH/a8v
ID3DXSpriteで、scaleで拡大率変えてたんだけど、 他の環境で動かしたらscaleが有効になってなくてしょぼんだった。
721 :
718 :02/10/10 17:54 ID:???
>>719 スレのリンクを貼るほどの価値もない話題ということか。
それなら気にしねーほうがいいんじゃねーの。
どうせ具体的な指摘は何も無かったんだろ?
( ´,_ゝ`)プッ
708=722?
724 :
718 :02/10/10 19:15 ID:???
725 :
名前は開発中のものです。 :02/10/10 20:45 ID:pMa8asNt
ID3DXSpriteだと256*256以上の大きさのテクスチャを扱えないからじゃねーの?
そんな制限は無い
>>708 > DirectDrawより簡単ではるかに便利。
DirectDraw は初期化と、ロスト時の再初期化処理だけで意外と面倒。
>>727 無い
サイズの制限はハード依存であってID3DXSpriteそのものの制限とは関係ない
どのみち相対的な話である。
731 :
730 :02/10/11 00:46 ID:???
730は728へのレス。
>725 :名前は開発中のものです。 :02/10/10 20:45 ID:pMa8asNt
> ID3DXSpriteだと256*256以上の大きさのテクスチャを扱えないからじゃねーの?
>726 :名前は開発中のものです。 :02/10/10 20:50 ID:???
> そんな制限は無い
>727 :名前は開発中のものです。 :02/10/10 22:57 ID:???
>
>>726 > あるぞ。
>729 :名前は開発中のものです。 :02/10/11 00:28 ID:???
>
>>727 > 無い
> サイズの制限はハード依存であってID3DXSpriteそのものの制限とは関係ない
このやりとりは不毛だな。まず具体例書いてくれ。
Windows98SE + DirectX8.1(debug runtime)
GeForce256 (Detonatorドライバ 40.72)
D3DCAPS8.MaxTextureWidth = 2048
D3DCAPS8.MaxTextureHeight = 2048
Windows98SE + DirectX8.1(debug runtime)
ATI RADEON ALL-IN-WONDER (ドライバ 4.13.01.9039 7.72-020524M-004273C)
D3DCAPS8.MaxTextureWidth = 2048
D3DCAPS8.MaxTextureHeight = 2048
上記2つ例ではID3DXSprite固有のテクスチャサイズ制限(256x256)は確認できない。
チュートリアルの5だと多少の変更で実行できるので、とりあえずコード書いて動かしてみたが、 Drawだと左上から256×256の部分が表示されるだけだな。 GeForce2MXだからVoodooのような256×256の制限はない。 確かDirectX7の時にはこの制限がなかったと思うが。
Geforce3(32MB)で512*512テクスチャを試した。問題なく表示された。 ドライバは40.72 Beta
環境はWin2k+DirectX8.1SDK
736 :
734 :02/10/11 03:50 ID:???
>>733 2MXで問題が出るってことは結構メジャーな問題ぽいね。
HALドライバ依存の問題はいつも頭痛の種になるから欝。
テクスチャサイズが256x256に制限されるのは、 VooDoo系チップの場合じゃ、ホゲェェェ!! そういうハード特有の事情を知らんやつが、 Direct3D触るとろくなことがない。
>>737 だからハードウェアの制限とID3DXSpriteの制限を分けろよ(藁
>>737 おまいのまなこたんは、ふしあなさんでつか?
要点は256×256以上のテクスチャサイズを扱えるにも関わらず、 ID3DXSprite・Drawだと256×256以上のテクスチャは使えないだな。
741 :
名前は開発中のものです。 :02/10/18 08:11 ID:Zt+yBkdj
>>733 DirectX8.1bのランタイムと
nVidiaの最新ドライバを使ってみたか。
742 :
名前は開発中のものです。 :02/10/22 20:32 ID:cC1V2h4q
ゲームで、プログラム以外のファイルからデータを読み出したいのですが、 データを生で置きたくないのです。 他のゲームを見てみたら、結構暗号化(?)されてたりして読めないのがあるのですが、 あれはどうやっているのでしょうか。 セーブデータや環境設定。 jpeg画像。 midやwavファイル。 についてそれぞれ教えてください。
すいません、環境は VS.NET C++ DirectX8 です。
どうやるもなにも自分で好きなように変えれば良いだけ
>>742 初心者スレ向けの内容だね。
「普通に読めない」というのは、暗号化(スクランブル)の場合と
圧縮の場合がありますが、それぞれについて。
スクランブルに決まったやり方はありません。
なぜなら、決まった暗号化の手続きがあるのであれば、
決まった複号の手続きで簡単に戻されてしまい、暗号化の意味が無いからです。
ですが、全部1bitローテートするだけで普通に読めなくなるので
簡単なものでも問題なしかと。
圧縮については、辞書圧縮や動的ハフマン法、ランレングス法といった
有名なアルゴリズムがありますのでそういったものを利用する場合が多いようです。
具体的なアルゴリズムは文献を調べるなりネットで調べるなりしてください。
マップの書き方はどういうのがいいのやら
先頭に余分なものを追加するなり1ビットずつ反転するなり好きにするよろし 拡張子だけ変えて実はgifそのもの、なんてのもあったなー。すぐばれるけど。
>>746 どんなマップ?
平面なら二次元配列でいいと思うが。
749 :
名前は開発中のものです。 :02/10/23 00:55 ID:XrIoI0Co
逆汗すれば終わりだなー 名かには逆汗ブロックするものもあるけど
>>749 ん? 発想が逆だと思うよ。
「リバースエンジニアリングされたら終わり」じゃなくて、
「リバースエンジニアリングされなきゃ大丈夫」。
平文で読まれなきゃ読める人は大きく限定されるわけだからね。
でも、解析されても、個人製作のソフトにそこまで情熱を傾けてくれるのなら
それはそれで嬉しい気もする。
751 :
名前は開発中のものです。 :02/10/23 21:37 ID:rAqnFbe+
ゲーム製作者に質問です。 正直、Vectorにある数多くのフリーゲームで、何割くらい(または、いくつくらい)が 遊べるゲームだと思っていますか? 人によってかなり答えが異なると思いますが、みなさんの意見を聞かせてください。
プログラミングとの関係がないなら雑談スレでやろうよ・・・
タスクあるいはジョブコンと呼ばれるリアルタイム処理なプログラミング技法上で 再帰処理が必要な思考ルーチンを組まなければならない場合、どうやってますか?
製作中断
>>755 ageないと質問に答えてもらいにくいよ
急いでいないならいいが
758 :
755 :02/10/24 19:37 ID:???
>>755 ・マルチスレッド
・再帰処理をタスクシステムへ載る様に組み直す
パッと思いつくのはこれぐらい。
warata
ワロタ
こんな事で笑っていてはいけません。 もっとおかしい事はたくさんありマンコ。
765 :
755 :02/10/25 10:46 ID:???
>>759 2番目の奴の詳細解説キボン。
擬似スタックを作るんだっけ?
おまいらは、そんなにも擬似とつけたいのでつか? おまいらが、いまよんでいるのは 擬 似 文 字 でつか?
擬似じゃなくて仮想なら無問題?
いまここにある文字は おまいらにとっては 仮 想 文 字 なんでつね?
ごめん、virtualにしといて
770 :
755 :02/10/25 16:07 ID:???
仮性ホーケーは黙ってて欲しいな >768
771 :
759 :02/10/25 17:17 ID:???
>>765 そういうことです。配列にスタックを作って自前で管理し、ローカル変数を
そのスタック上に置きます。
再帰を単純なループに開いた上、タスクシステム上でまわす事になります。
DirectXフルスクリーン@C言語で、 ユーザーからの入力文字(漢字変換とかもアリ)をげっちゅーするには やっぱりInputBoxのAPIしかないのでしょうか?
773 :
名前は開発中のものです。 :02/10/26 01:01 ID:vJSal2rR
XindowsXP HomeEditionを使っているのですが、 自分のプログラムを実行するごとに重くなっていきます。 プロセス自体はちゃんと終了しています。 windowsって、プログラム終了時にメモリの解放って行ってくれないんですか? まぁ、自分がメモリリークをつぶさなければいけないのですが。 特に、大き目の画像を扱った後にそのような現象がおきるみたいです。 どうなんでしょう。
>>773 タスクマネージャに該当プロセスがないことは確認したかい?
はい、確認しました。
解放は自動的に行われることになってるし、XPはNT系だからさらに安全なはず。 ただしこれはドライバが正常に動作していればの話。 ディスプレイドライバを更新するとかしてみれば?
メモリ確保して開放せずに終了したら駄目じゃん。
>>777 プロセス終了時のメモリ解放は
OSの管轄ですが何か?
メモリリークが問題になるのは
長時間常駐するプロセスだけ
不正な処理で終了した場合も開放してくれる?
Win95のころはひどかったな。 一応OSが開放してくれるハズだが、 それを過度に期待したプログラムを組むのは避けた方が無難。
関係ないけど、windowsでプログラム書くんだったら 確保したメモリは必ず自分で解放しなくちゃダメだよ。 OSを信用する方が悪い。
OSが開放してくれるとしても、それはあくまでも開放ミスに対する 救済措置と思ったほうがいい。確保したメモリは必ず開放するのが鉄則。
またmalloc&freeネタか・・・飽きないねえ
>>783 > OSが開放してくれるとしても、それはあくまでも開放ミスに対する
> 救済措置と思ったほうがいい
そりゃ違うだろ。
そもそも仮想記憶を使ってる OS の場合、ページテーブルやら TLB (*1) やら
は OS 以外は触れない。そこにバグがあると疑い始めたら、もはやアプリケー
ション側でとれる対策は何もないよ。
(*1)
IA-32 だと TLB はソフトウェアからいじる必要はない(ページテーブルをハード
が勝手にコピーしてくれる)けど、MIPS などは TLB ミスが起きると例外を発生
して、OS が自前で埋める必要がある。
どんな環境でも開放しなかったメモリの後始末をしてくれる という保証は無いからメモリリークするようなプログラムは そもそも欠陥品と見ていい。だから開放しないと駄目。 それにOSが開放しなかったからといって、それはOSの 過失ではない。プログラム作った奴が悪い。
786でまとまりました。 では次の話題。 ↓
実験に使いたいのですがOSがリソースを開放できない終了方法を教えてください いくらやってもけしからんことに勝手に開放されてしまいます
>>788 Win98でRPCだか何だかを使うと起こりやすいそうだ
使ったことないけど
>>788 DOS環境とかゲーム専用機等ならたぶん開放しないのでは。
>>745 アルゴリズムが公開されている暗号もある。
>>755 タスクと再帰処理がなぜ両立できないのか分からん。
>>788 何の実験に使うのか知らんが。
ファイルや共有メモリ等、OSが勝手に解放することがないリソースは存在する。
存分に使え。
>>786 そもそも「どんな環境でも」なんて言い出したら、それこそ malloc/free がない
世界とか、あっても C 言語の規格書に従ってない環境まで出てくるから、議論
にならんよ。
規格書を行間まで読めば、C 言語の hosted environment を前提とする限り
malloc したメモリは OS に解放されるはず、が結論。
だいたいヒープの仕組みとか仮想記憶の仕組みを知っていれば、そんなに
ビクビクする必要はないと思うんだが。解放されないって、実際にどんな環境
を想定してるんだ?
(スタイルとして解放する方が良いかは別問題な)
つーか、解放しないと再利用できないじゃん? こまめに解放してメモリを開けたほうがいいと思うんだが。
794 :
名前は開発中のものです。 :02/10/27 01:52 ID:xQ8SKzdu
PS2のアルファブレンド設定を
DirectXでもやりたいのですが、 そういうことはできないのでしょうか?
たしか こんな計算式
C = (A+B)
>>7 +D
A: と B:
ソースのカラーか フレームバッファのカラー
D: ソースかフレームのアルファ値
>>794 IDirect3DDevice8::SetTextureStageState( )
>>793 ところが大抵の処理系では
freeは解放済みフラグが立つだけで
実際に解放されるのはプロセス終了時なんだな・・・
JAVAなんかはガベッジコレクションを行ってくれるけどね。
>>796 それじゃfree自体存在意義ねーじゃん
>>798 けど同じプロセスが再び○allocするときは
その解放済みの領域からメモリ確保するので
あながち無意味とも言えない
>>798 一種のキャッシュだよ。まっとーなメモリ保護のある環境下で OS を呼び出して
メモリを割り当ててもらうのは
ソフトウェア割り込みによる特権モード変更
割り込みハンドラでのレジスタの待避などの定型処理
(ここで OS のメモリ割り当て関係のコードに入って)
各種制限のチェック(たとえばユーザあたりのメモリ割り当て越えてないか、
とか)
仮想記憶のページテーブル、TLB の変更
OS の持つ仮想記憶レイヤーにおけるページエントリの変更
と、いろいろ手間がかかる。ユーザ空間で完結できれば、それに越したことはな
い。
このあたりは使ってるライブラリによっても変わってくるけど、昔の UNIX だと
一度 malloc したら二度と OS には返さないのが一般的で、最近でも条件 (*1)
が揃わない限りはまず返さない。
本当に OS からメモリを短時間・大量に借りたいなら malloc/free なんか使っ
ちゃダメです。mmap() とか VirtualAlloc() とか使いましょう。
(*1)
ヒープの端っこが free() されるとか、ページ単位で連続した空間が free される
とか。この条件を緩くして OS 側に返すチャンスを増やそうとすればするほど、
malloc/free が内部で管理・チェックするデータが増え、割り当て・解放に掛か
る時間もメモリ消費も大きくなるというトレードオフがある。
たとえば Solaris だと libc, libmalloc, libmapalloc あたりに実装が異なる
malloc/free がいくつかあるから、ソースを眺めながら処理速度を比べてみると
勉強になるよ。
検索で調べてみたが、実際メモリリークは問題になって るからメモリ開放しないプログラムを書くのは良くないと思う。
802 :
名前は開発中のものです。 :02/10/27 17:34 ID:PvYfeL9I
>>800 Win32の場合、mallocもVirtualAlloc呼び出してんじゃないの?
同様に、freeはVirtualFreeって感じで。
メモリマップはこれらとは違うだろうけど。
思い切り勘違いなら、ごめんな。
>Win32の場合、mallocもVirtualAlloc呼び出してんじゃないの? Win32じゃなくてCのランタイムライブラリの実装次第 >思い切り勘違いなら、ごめんな。 あやまるくらいなら最初からいい加減なことは書くな
>>802 malloc() したら毎回 VirutalAlloc(), free() したら毎回 VirtualFree() してると
思ってる? んなこたないって。ソース読めば明白なんだが、msvcrt.dll だと
1. VirutalAlloc() 系ではなく一つ抽象度が高いHeapAlloc() 系を使っていて、
こいつがユーザ空間でいろいろメンテナンスしていてる。
2. それに加え C Runtime Library 内部でも、小規模なメモリ割り当てに関して
毎回 HeapAlloc(), HeapFree() を呼ばないで良いようにキャッシュしている。
と、OS 直のメモリインターフェースから 2 枚の皮をかぶせてある。
あと OS が提供するメモリ割り当てのインターフェースは、基本的にページ単位 でしかメモリを割り当ててくれない。VM とか CPU アーキテクチャによるんだが、 たいてい 1 ページは 8192 バイト前後。 だから小さなメモリブロックを割り当てるときに毎回 OS を呼んでるとムダに なるメモリも莫大になるんで、 でっかいメモリブロックを OS からもらってきて そいつを小さく切り刻んだ上で malloc 呼び出してきた側に返す っつー仕組みにしてる面もある。 (あと昔の OS だと、そもそもメモリブロックを割り当てるような API を提供 してなかったりな。brk() とか sbrk() で検索してみ)
メ モ リ リ ー ク が イ ヤ な ら J a v a で も つ か っ て い ろ
>>804 2. はたしか廃止されたような気がする
今手元にないのでわからんが、どっかで見た
802だけどよ
malloc=VirtualAlloc呼び出しで解決されてるんじゃないか、
と思ったんで、質問の意味もあって書いてみたんだが。
それをいい加減とか決め付けてる
>>803 氏んどくように。
あと、HeapAllocは既に廃止されてるはず(MSDN libに載ってたと思う)
今のWin32では、HeapAllocは内部でVirtualAllocを呼び出してるんじゃなかったかな。
いろんなmallocの実装を紹介するスレはここですか?
>>808 HeapAlloc が内部で VirtualAlloc を呼び出してるのは確かだが、単なる
ラッパじゃない。内部で色々処理をしてる。
それと廃止されたのは GlobalAlloc(), LocalAlloc() だろうが。嘘八百を
並べるなよ……。
>>810 訂正さんくす。
HeapAllocが廃止されたってのは、勘違いだったよ。
廃止されたのはGlobalAlloc/Freeで、HeapAlloc/FreeはVirtualAllocで
確保したメモリをヒープ構造で管理してるってことなのね。
Win32APIで開発する時は、たいていHeapAllocと同じことを自前でしてるせいで、
よく知りませんですた。
ご指摘さんくす、と同時に、嘘八百とか書くなよ、ぼけ。
それじゃ今後は同様の事態を表現するときは嘘七百五十くらいで。
>>811 > HeapAlloc/FreeはVirtualAllocで
> 確保したメモリをヒープ構造で管理してるってことなのね。
全然違うぞ…。なんでそこでヒープ構造が出てくる?
>>802 ,808,811
いいかげん。うそはっぱく。よくしらないのにしったかぶり。
晒しsage
うーん、微妙に話題ズレてない? >799も言うとおり、解放済みマークのついた領域は再利用される。 (そのためのfreeだろ?) だから、mallocにラッパーが掛かってようが掛かってまいが、 >793が原則として正しいということでいいんでないの?
確保したら必ず開放しなくてはいけないと思ってたほうが無難だよ。 そのほうが余計なトラブルの心配しなくて済むじゃん。
>>817 俺は
free(p);
free(p);
とかやって、メモリ領域壊したことがある。実際にはこんな簡単なコードじゃ
なくて、サイクルのある複雑なデータ構造で、遠く離れた関数で実行されて
たんだが。
結局、そのデータ構造扱う部分は「でっかくメモリを取って中で使い回し、
使い終わったら丸ごと free する」っつー方針で書き換えました。
普通、 free(p); p=NULL; ってしない?
>>819 しない。そもそも p に相当するものが関数の引数として渡ってくる場合には、
それって無理だし。
free_something(void* p)
{
free(p);
p = NULL;
}
func()
{
free_something(p);
// p は相変わらず NULL じゃない
}
これは極端な例だけど。あとサイクルがあるデータ構造だと、解体する順番
やタイミングが非常に難しい。コンパイラを書くときに良く出てくる DAG 程度
のデータ構造でも、気を付けないとすぐ二重 free しちゃうよ。
>>821 絶対に答えが出るアルゴリズムだと A* とかかねぇ。
823 :
821 :02/10/28 22:50 ID:???
>822 検索してみましたが、適当なところが見つかりませんでした。 A*とはなんでしょうか?
824 :
名前は開発中のものです。 :02/10/28 23:11 ID:Y1mIhqb7
クォータビューのマップで当たりをとりたいんですけど 高速なやり方ってあります? 内部的にはトップビューというのではなく、 クォータビューそのままでマップとキャラの菱形の当たりをとりたいのですけど…。 動作環境はへちょいので浮動小数点とか線分の交点などを求めないような軽いのを考えているのですが。
その当たり判定で何をやりたいかによると思うんだが
>>821 とりあえず障害物で行き詰まったら、障害物の表面に沿って
目標に到達できそうな位置まで移動してみるというのはどうか。
827 :
824 :02/10/28 23:51 ID:Y1mIhqb7
>>825 クォータビューのマップを主人公が歩くとき、マップと当たりをとりたいのです。
高さがない似非クォータビューなので、それほど苦労しまい、と思っていたら
あまり芳しい結果になりませんでして。
マップが歩けるような当たりなので、常時判定するという方向性で軽くしたい、とそういうことなのです。
828 :
821 :02/10/28 23:55 ID:???
>>826 その障害物が岩とかだったら、どっち側に避けても目的地までいけるんですが、
___ ____■=キャラ ○=クリックした場所
/ \
■ | |○
\_/
この場合、上を周って行こうとすると当然ひっかかっていけませんが
下を通って避ければ目的地までいけますよね。
こういう風にケースバイケースでどっち側に避けるかどうやって
判断させればいいのかがわからないんです。
わかりにくかったらスミマセン…
829 :
821 :02/10/28 23:58 ID:???
ずれちゃった…なんとかわかってください(汗 <図 つまり、出っ張った障害物なんかをちゃんと キャラが通れるコースを歩いてくれるようにしたいのです
>>824 1)床だけの画像を描画する
2)キャラの足元付近のドットの有無で判定する
3)マップの残りとキャラを上書き描画する
>>828 ひっかかったら辿りかたを反転させれば?
832 :
824 :02/10/29 00:24 ID:UKOhyL2z
>>830 ワンダーウィッチなのでそうもいかないのですよ…。すみません。
833 :
821 :02/10/29 00:28 ID:???
>>831 やはりそれしかないですかねぇ…(汗
下手したら明らかに違う方向へ歩いていって、引っかかったら
今気付いたように遠回りをする…なんかスマートじゃなくないですか(・-・;;
>>833 それじゃ内部的に表示より先行して動かしておいて、未来の自分が
引き返してきたらその場で反転するようにすれば多少マシになるのでは。
835 :
821 :02/10/29 00:34 ID:???
あーなるほどぉ…それもそうですね どうもありがとうございます。試してみます。(_ _
>>824 マップの床が碁盤の目のようになっていて、床の升目が全て同じ大きさ
同じ形であるなら、床の升目と全く同じ形状のイメージデータを配列
などで用意して、升目の座標と判定点の座標からイメージ内に対応する
座標を求め、その座標の点がセット状態であれば当たりとする。
>>828 一番いいのは、袋小路にならないマップを作ることですが。
そうもいかない、というなのなら、下の図みたいにマップを
大きなブロック(エリア)に分けてやるとか。
(いつかこの板で公開された進路探索方法)
A1 A2 A3
___ ____
/ \
■ |B2 |○
B1 \_/ B3
C1 C2 C3
B1 → C1 → C2 → C3 → B3
838 :
837 :02/10/29 01:21 ID:???
うわー、直したはずが大きくずれた。 すまん。
>>821 1:現在位置から目的地までの直線を引く
2:その直線が障害物と交差していたら交差した点から
移動できる方向へ直線を引いてみる(左右どちらにも行けるならどちらも)
3:枝分かれした線分はできるかぎり目的地へ向かうように折り曲げていく
4:現在の走査位置と目的地とを結ぶ直線が
走査線の角度と同じになったら1へ戻る
N:先に目的地にたどり着いた方が正解ルート
折れ曲がった位置と角度を配列に保存しておけば
それをトレースするだけ
計算中も枝分かれする直前までの移動をしていけば
迷路にでも迷い込まない限りそれほど時間はかからない
図解するとこう ____________ /_,,. \-─●目的地 ☆-─''''''''│~ │ ↑\__/ 交差点 ____________ /_,,. \-─●目的地 ☆-─'''''''|.│~ │ iヽ\__/ : \ できるだけ目的地の方向へ : \→ ____________ /_,,. \-─●目的地 ☆-─'''''''|.│~ │ / iヽ\__/ / : \__/
>820 解放したポインタにNULL代入するのは作法でしょう。 どうしてもめんどうなら、ちょっと気持ち悪いけど free_something (void **p) { free(*p); *p=NULL; } func() { free_something(&p); //p=NULL } でいいのでは。 というか、そういうところで面倒くさがる人はC++を使うべきでは。
なんでややこしい方へ向かうかなぁ… _______■=キャラ ○=クリックした場所 / \ ■| |○ \_/ A ひっかかりそうなところにはポインタを作っておく。 ■から○へ行く時、間にポインタがあれば まずそこへ向かうようにする。 ■ | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | A | | | |________| ○ ポインタの捜索範囲はキャラ→クリック間の長方形。 以上!
843 :
821 :02/10/29 07:52 ID:???
ttp://isweb43.infoseek.co.jp/art/yn515/game2.gif 例えば、こういう場面でカーソルのあるところをクリックすると
池の周りを遠回りして歩いていきます。
ですが、このゲームのすごいところはカクカクした動きじゃなくて
ちゃんと池の形にぴったり沿って歩いていくということです。
もしよろしければ、実際にやってみていただけませんでしょうか?
見たほうが早いと思いますので…
isweb43.infoseek.co.jp/art/yn515/kyran.zip
pc9801です。
障害物のまわりにガイドラインのような情報をもたせて、 それに沿って移動するようにすれば?
今まで考えもしなかった方法がいろいろ出てくるんでおもろい。
________ |\_______\ | │ ___________ | | │|タマちゃん失踪?|│ | │| ,,,,,,,, ,,,,,,,,,、 |│ | │l (゚∀゚) ,jj゚ー゚jjj |│ | │|l´ lyl`l l´ : `i |│ | │` ̄ ̄ ̄ ̄ ̄ ̄ | │ | l ̄ ̄ ̄:l: ̄ ̄ ̄l | \| l___:l:___l |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ __________ ||\ \ ||\\ まずかったかな・・・ || \\ ────y──── \\ ____ ∧ ∧∧__\ ゚ 。 .゚ チャプ \||______ (゚ ≡;゚Д)_____|| ,. -‐/⌒ヽ ─- 、 チャプ || | ヽ. || (〜ミ(ω・` \〜 ,) || ヽ___) || | ` ー‐-ミU -─‐'´ | \ ヽ、..,,_ _,,.ノ  ̄ ̄
847 :
:02/10/29 13:09 ID:???
848 :
:02/10/29 13:10 ID:???
>>846 まずいと思う。
こっそりかえしてきな。
849 :
755 :02/10/29 13:58 ID:???
>>771 759さん、ありがd。
これをヒントにがんばってみます。
>>791 ターゲット&要件によっては両立できない場合もあるんでつよ。(つД`)
>>823 "A star algorithm" で再検索。
>>841 > 解放したポインタにNULL代入するのは作法でしょう。
気休めに過ぎない作法なんか、やめとけよ……。
だいたい複数のポインタが同一の領域を指している環境では、そんな手は
使えないし。
> どうしてもめんどうなら
その程度の「手間」で済むのは free_something() なんてオモチャみたいな
コードだから。現実に面倒なデータ構造を操作するコードだと、そんな単純
にはいかんよ。
特にデータ構造が複雑な場合には、そのデータを辿るのがクリティカルパス
になるケースが多い(逆にクリティカルじゃなければ、そんな頑張って面倒
なデータ構造をメンテナンスなんかしないで、単純配列を全部検索、とかで
済ませられる)。
そこで「すべての要素に pointer の pointer を持たせて、二回 dereference
しましょう」ってのはかなり厳しいよ。
> というか、そういうところで面倒くさがる人はC++を使うべきでは。
全部 boost::shared_ptr にするとか? それは性能上の問題に加えて、解放の
タイミングを計るのが難しくなる(解放したつもりが、余計なところで shared_ptr
が一つ生きてた、とか)という問題がある。
もちろん「ここで最後の筈」ってことで assert() 入れてチェックすることはでき
るんだが、assert() に引っかかったときに
じゃあ、いったいどこで参照が残ってるんだ?
っつーのは、やっぱり探すのが大変だよ。
>>852 >そこで「すべての要素に pointer の pointer を持たせて、二回 dereference
>しましょう」ってのはかなり厳しいよ。
PalmOSの開発環境では、ヒープメモリを確保するときにポインタのポインタしかくれない
(OS側でガベコレするため)のだけど、それでもなんとかなっているのは興味深い。
ポインタのポインタで生きていくための知恵が、Palm界では蓄積されてるのかもね。
>>853 それはコンパクションしたいからだろう。Win16 のグローバルヒープとか、昔の
MacOS とかもお仲間。
まっとーな MMU が使えない環境でもメモリの断片化が防げる代わりに、デ
バッグと処理速度に悪影響が出る。智恵というか、血と汗が蓄積されてると
思われ。
(俺も Win16 時代には泣いた覚えが)
>852 俺の場合、free後NULL代入してないだけで怒られたもんだが……。 二重ポインタっても、C言語に参照がないから代用してるだけだ。 参照で実装してもいいかもね。値渡しでfreeする関数に渡した つもりのfree後のポインタが実は参照渡しで暗黙でNULLに 書き換わっていたとして、なんら問題あるまい? むしろ、解放後のポインタにアクセスするという潜在的バグをつぶせる。
>>855 > 参照で実装してもいいかもね
C++ の参照のことを言ってるなら、初期化のタイミングの制約がキツいから、
完全にポインタの代用にはならんよ。
ポインタの実体を一つにして、常にポインタのポインタを使え主義が破綻す
るのは、「そのポインタの実体を解放してしまったら、やっぱり不正なメモリ
アクセスが検出できない」っつートコロなんだよな。そのための細工を積み
重ねると、結局 GC 実装した方が確実って話になる。
>856 いや、freeに一個ラッパーを掛けて、そこへ渡すポインタを 参照渡しにして関数内でNULLを代入しようってだけのことね。 実際はメモリをマネジメントするクラスなり関数郡なり作って GCをそこで実装したほうがいい、っていうのにはもちろん同意。
>>857 > いや、freeに一個ラッパーを掛けて、そこへ渡すポインタを
> 参照渡しにして関数内でNULLを代入しようってだけのことね。
それでは不正なメモリアクセスの問題は解決しないんだけど。実例が
想像つかない?
>858 もともと不正なメモリアクセスは別問題。それは単にバグ。 >818を読む限り、単に解放済みポインタとそうでないポインタで 条件分けしたくないだけなら、NULLを代入すればいい。 NULLは解放済みを示すマークで、free(NULL)が素通りという 仕様はそのためにある。 ループのある枝分かれリストみたいのを解放するケースを 考えてるんだろうけど、そこまで来ると各ノードを直接freeで 解放しにいくのは無理でしょう。削除マーク付けといて、 後でGCで一括解放するしかない。
正直、メモリ管理は人間がやるべき仕事ではないような気がしますた。 生産性低くなる原因の一端。
しかし明示的に開放する機能が無いとメモリが無駄になり、下手すると 足りなくなる罠。メモリ確保の機能がある限り人間が管理するしかない。
2重開放はエラー出たりしてすぐ発見できるからあまり問題にならない ような気がする。メモリリークは表面化しにくいから厄介なバグになるが。
863 :
846 :02/10/30 12:54 ID:???
素通り・・・
>>862 > 2重開放はエラー出たりしてすぐ発見できるからあまり問題にならない
そうでもない。
メモリ関係の問題はどれもそうなんだが、問題が出たときと原因が遙か彼方に
隔たってることが多い (二重 free なら一回目の free はどこで行ったんだ?)
から、原因を突き止めるのは大変だよ。特に微妙な条件でのみ発生するとか、
マルチスレッドや DMA が絡むと死ねる。
>>859 818 はそもそも「free() しなくても良いやん」つー例のような気がする。その
メモリ領域をプロセス内で再利用するなら free すべきだけど、コンパイラ
の型システムの情報なんかは、
コンパイルが終わった時点でプロセス終了させるから、ちまちま free せずに
投げ捨てろ
っつー情報だよな。
そこで労力をかけて free() したところで、
1. コンパイラのプロセスが終了するのを遅らせる
2. キャッシュを汚す
3. あまつさえ二重 free() なんてバグを埋め込んで SIGSEGV を食らった日には、
ただのバカ
だろう。
>864 一回目のfreeは、無効なデータを解放するつもりでやってるんだろ? それを問題が起こらないようにとただ消してしまうのは、 無効なデータへの不正なアクセスを隠してしまうだけだと思うが。 NULLポインタで明示的エラーを出させたほうが、安全。 落ちないバグの原因探すほうがよっぽどやっかいだろう。 こまめな解放はいらないとしても、一応プロセスの最後には明示的に 解放してやるべきだと思うが。 VC++だと、メモリリークが大量に警告されてうっとおしくない?
boost::shared_ptrとSTLのコンテナを使えばいいのに...
C#を使え
ません
か?
チョトマテ! ココハ、 ゲームプログラミング相談室 デツヨ!
>>865 状況によるだろう。アセンブラのラベル情報とか 864 が言ってるようなコンパイラ
の型情報とかは、free したところで直後にプロセスが終了するのが目に見えてる
ので、free せずに終わらせるのもアリだ。
そこで free しても単なる自己満足。ユーザにとっては、むしろ邪魔なだけ。
>871 ちょいまち、ユーザの「邪魔」って、具体的にはなんのことだ? ユーザには関係ない、というのなら分かるんだが。 あとでメンテナンスする人のこと考えたらメモリリークつぶすくらいは 常識だと思うがな。大量の警告メッセージに埋もれて、つぶすべき メモリリークが見えにくくなる。
>>872 > ちょいまち、ユーザの「邪魔」って、具体的にはなんのことだ?
キャッシュを汚すわ、終了に(本来不要なはずの)余計な時間を食うわ、
開発コストは上がるわ。
> あとでメンテナンスする人のこと考えたらメモリリークつぶすくらいは
> 常識だと思うがな。
プロセスの寿命とデータの寿命が一致してる場合にはメモリリークとは言わん
だろ。メモリリークというのはその名の通り「漏れ」であって、使えないメモリ領
域が増えることを指すわけで。
> 大量の警告メッセージに埋もれて
_CrtSetDbgFlag() なんかが実装してる「終了時に free してないメモリ領域の
一覧を表示する」機能のこと? あれはそれなりに便利だが、万能じゃない。
(っつか BoundsCheker 使え)
>873 OSに暗黙的に解放してもらったって時間は掛かるだろ。 開発コストったって、ただメモリ確保に一枚ラッパーかませて 最悪の場合でも終了処理で明示的に解放されるように作るだけだろ。 その「万能じゃない」機能をさらに使いにくくしてどうするのだ。 俺は引き継いだソースがメモリリーク放置していたら、 ちょっとウンザリするがな。
875 :
名前は開発中のものです。 :02/11/01 00:54 ID:26Va0gRH
この流れに便乗して質問させてください。 VC++でシューティングゲームを作っているのですが、敵や弾をたくさん表示させては 消すために、メモリをnew、deleteしまくっているのです。 ところが、実行しているとすぐに重くなってしまいます。 メモリリークに関しては、デバッグモードで _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF) を呼び出して確認したのですが、一つもありませんでした。 これって、ちゃんと解放していても、メモリの確保が原因で重くなることってあるのですか? ちなみに、表示させたオブジェクト(newしたインスタンス)の数に比例して 重くなっていくことは確認しました。
>>875 > 表示させたオブジェクト(newしたインスタンス)の数に比例して
それって、ふつうに処理量が増えてるんじゃないの?
>>875 敵や弾の画面表示だけしない場合も重くなるか?
> OSに暗黙的に解放してもらったって時間は掛かるだろ。 いわゆるunixあるいはwin32ならばかかりまへん
>>876 いえ、そういうのではありません。
キューに、敵だの弾だの詰め込んで、敵をやっつけ(deleteし)ます。
その後しばらく敵を出さなければ、キューがちゃんと空になっていることも
確認しました。
そして、その後また同じように敵を出して…と繰り返すと、だんだん重くなっていくのです。
プログラムを終了したときなんか、数秒フリーズしたように止まります。
>>877 画面表示をしないでやってみましたが、変わりませんでした。
>>875 たぶんソース見ないと原因は分からない。
>873はVBかJavaでもやってろってこった(藁
>>879 HDDにスワップしているから遅くなっているとかそういうのは?
メモリを解放しているから、メモリが足りなくなることはない →スワップはしない。 って考えるのは間違ってますか? スワップしてる気配はないのですが…
>>879 1個1個new/deleteせずに、最初に一定数一括確保して使い回すように
してみて、軽くなるようならnew/deleteで重くなっていると見る。
>>875 profilingしてみりゃいいだけじゃん?
ありがとうございました。わかりました、やってみます。 ところで、new/deleteで重くなるとしたら、どうしてなんでしょう。 deleteする瞬間に重くなるなら分かるけど、後々にも響くってのは 理解できませんよね。
あまりにも頻繁に確保・開放を繰り返すと、それを管理する ほうも大変なんじゃないの。確保・開放を繰り返すと割り当てた メモリが断片化するよね。そんな状態で効率よく領域を割り当てる ようにするにはどうすればいいんだろうね。
>>874 > OSに暗黙的に解放してもらったって時間は掛かるだろ。
free() のソースを読んで、どういう処理をしているのか調べてみ。OS の
方の処理とはまた別に、いろいろやってるから。
>>887 仮想記憶を採用している環境なら、気にしないのが正解だと思う。スワップは
喰うかもしれんが、実メモリの断片化はページングにお任せってことで。
仮想記憶がない環境だと、最初にメモリのレイアウトを決めてしまって、固定
長のメモリブロックを割りあてるのが常套手段。
>888 それが問題になるほど大きな処理なのか? もしそうなのだとしたら、最初にどんとメモリ取って、 それを小分けにして使って、最後にどんと解放したら いいじゃないか。だったら一回で済む。
>>890 そこまでして、わざわざヒープの解放に拘る意味があるのか?
だいたい使ったメモリ全部解放しろっつーなら、スタックやテキスト
はどうするんだか。
そこまでって言うほどの手間じゃねえだろ、と言っている。 最後にしか解放しないと割り切れば、簡単に実装できるだろ。
>>892 そんな丼勘定な実装に何の意味があるんだ? だいたい最初からサイズが
見積れるなら static でとれば良いだけだし。
メモリリークをつぶせるという意味がある。警告メッセージ潰し。 サイズ見積もれなんていってないじゃないか。 allocに一枚ラッパーかぶせて、ポインタを全部記録しておいて、 終了時に順にfreeするだけ。
ダイナミックに確保するならちゃんと開放しないとダメだよ。 メモリを再確保するたびに使用メモリ量が積もっていく。 ゲームの場合はメインの処理がループなので、たいしたことないと思っていても、 処理によっては1秒60回でメモリリークされたりしてちょっとまずいことになる。 開放しないメモリを確保するくらいなら初めからスタティックに確保した方がいい。
>894はループの中で確保するのを前提にした話ではないよ。 どうしても解放するのが面倒くさい場合の最後の手段で言ってるだけ。 シューティングゲームのバッファなんかはstaticでいい気が。 数の上限は知れてるし、容量もたいしたことないでしょう。
.NETのガベージコレクタを使え
boost::pool ダ! (ウソ
メモリ開放しないプログラムはそのまま再利用できないからクソ。
>>899 スレの内容を全く読んでいない馬鹿発見!
メモリ開放しないやつは開発者の姿勢としてクソ。
boost::poolって早いの?
>>902 そんな抽象的すぎる質問にどうやって答えろと(藁
突然ですみませんが当たり判定のアルゴリズムでOBBについて解説してある日本のサイトなどはないでしょうか?
メモリ開発しないやつは解放者の姿勢としてクソ。
>>904 日本のサイトは知らん。
海外ならいっぱいあるけど。
>>900 まんざらそうでもない。
javacなんかがそれで一時期ハマってたらしい。
>906 すみませんが、できたらそのサイトをおしえていただけないでしょうか?申し訳ないです。
日本語のサイトは皆無だよな・・・
>909 すみません、すみません。(´Д`;)
>>899 本当に、そのプログラムは再利用されるのか? 汎用性は諸刃の剣だぞ。
>>913 まあ、C/C++に限って言えば再利用なんて、ほとんど幻想に過ぎないんだが、
ここは希望的観測の意味も込めて、「安易な手法での再利用は諸刃の刃だぞ」にしとこうや。
んでも、普段からメモリを解放するクセをつけておかないと思わぬところで…ってこともあるかもね。 GCがサポートされてる言語なら別として。
・処理速度至上主義 ・プログラムコードは基本的に使い捨て ・激しく機種依存するプログラムばかり組む ゲームプログラマは特に価値観が偏っているから常識は通用しないよ。 偏りすぎていて他のジャンルでは通用しない気もするけど。
再利用ができない ↓ 生産性が上がらない ↓ 労働者が沢山必要 ↓ 1人あたりの賃金が安くなる ↓ 貧乏
>>917 再利用を念頭においた結果、過度に複雑なクラスライブラリができて、結局
使われずに封印ということもある。バランス感覚重要。
っつか、ゲーム業界に限っていえばプログラマの数はむしろ少ないと思うが。
ゲームばっか作ってると、変な癖がついてしまう面はあるんじゃないの。 パフォーマンスを追及するあまり、超複雑・可読性ゼロ・再利用性ゼロみたいな。 まあ、ゲームに限って言えばそれでいいのかもしれないけど。 資産が継承できないとしたら賽の河原状態かな。
> ゲームばっか作ってると、変な癖がついてしまう面はあるんじゃないの。 気のせい。ファミコン時代ならいざ知らず、今時はそんなコードでは通用しない 程度には開発の規模が大きくなってる。 プログラマ一人で三ヵ月の仕事と、プログラマ三人で十八ヵ月の仕事だと、最適 な仕事の進め方は変わってくるわな。(さらに SI みたくプログラマ何百人みた いな体制だと、また違ってくる)
今だと、プログラマ2〜3人ぐらいのプロジェクトが多いのかな。 平均的な話。
922 :
名前は開発中のものです。 :02/11/02 23:03 ID:rSTkonKP
>>916 > ・処理速度至上主義
ここはその通りだとおもうけど、下の2点は同意できないなぁ
特に機種依存コードを多用したりすると恐ろしく読みにくいコードになって、
デバッグ困難になったりするよね
もし担当が交通事故で急死したとしても、他のメンバーが問題無く引き継げるように
読みやすさ優先でコード書けって先輩にたたきこまれたクチなんだけど…
>>922 自己レス
916 は、ゲームプログラマはそういうのが多いって言ってるだけだね
勘違いしてた、もうしわけねぇ
多いって一般のプログラマとどうやって比較したのか出所提出を小一時間求めたい ありもしない妄想を根拠として抽象的な論理を展開するのが流行りか?
そこまであちこち顔を出してる人ってそんなにいるとも思えんのう
>>924 いちいち根拠になるデータを提示しないと話が進まないような話題とは
思えませんが?そういう不毛な煽りも流行なのですか?
まず、あなたのその「一般のプログラマ」の定義からお聞かせ願えませんか?
「〜という傾向がある」に対し「そうでもないんじゃない?」 という発言がきたら、論拠なり証拠なりを出さないと話が進みませんよ。
928 :
927 :02/11/02 23:51 ID:???
あ、煽り屋か・・・スマソ
>>927 それはそうなんですが、あまり度が過ぎるとどうかな?と
端的な例ですが、
「最近の若い者は礼儀が悪すぎる」
「そんな事はないでしょう。論拠を示してください」
という会話を見てどう感じますか?
感想レベルの話題に対しては無意味でしょ?
920が示しているように、規模やコード資産の量などの違いでもって
やりかたは変わってくるし、それが元で傾向に違いがでてきてもおかしくないと
思うのよ。
それを「ゲームプログラマだから」とかいう括りでやっちゃうのが間違いだろ?
という話にもってくなら分るけど、
>>924 ,926にあるようなつまんない指摘は
煽り屋と思われても仕方ないよ。
完成するころには次のハード
>>932 そうやって無理やり変な解釈するのもどうかと思うよ。煽り?
実際、でかいプロジェクトだと、そんな感じになるっしょ
933は一行目と二行目を書く間にトイレにでも行ったんだろうかね?
多重人格者でちょうど入れ替わったタイミングと見た
933 の2行目は、931 の事を言ってるのでは? 話の流れから言ってそうとらえたほうが自然かと
ゲームプログラムというのは基本となる技術が浅いのでは。 それで、高度な部分は激しく機種依存で数年おきにリセットされる。 熟年のベテランより体力のある若者のほうが有利な業界。
ラッパーライブラリで全部吸収…しきれないんだよねぇこれが
> 933 :名前は開発中のものです。 :02/11/03 10:28 ID:??? > 933は一行目と二行目を書く間にトイレにでも行ったんだろうかね? > 935 :名前は開発中のものです。 :02/11/03 10:54 ID:??? > 多重人格者でちょうど入れ替わったタイミングと見た 面白い。俺は違和感なかったが、そういう発想もあるのかと。
> ゲームプログラムというのは基本となる技術が浅いのでは。 SI と携帯電話業界には言われたくない…。
931-935の解説キボン
>>938 > ゲームプログラムというのは基本となる技術が浅いのでは。
その「基本となる技術」とは具体的にどういうものを指しますか?
> それで、高度な部分は激しく機種依存で数年おきにリセットされる。
ゲームコンソールに関して言えば、メーカ提供のライブラリが
ある程度吸収してくれていると思いますが
> 熟年のベテランより体力のある若者のほうが有利な業界。
そんなことはないでしょ
若い衆は体力はあっても場数を踏んでいない分、ちょっとした
トラブルに対処できずに途方に暮れる場面をよく見かけます
業界で生き残れている年寄りプログラマは、それなりに利用価値があります
この手の話題は抽象的でいい加減な話ばかりで何の意味の無い 知ったかの横行で痛いだけ 語る前にデータを出せ、出せなきゃ語るな だろうだろうでまともな話になるわけ無いだろう
>>943 > ゲームコンソールに関して言えば、メーカ提供のライブラリが
> ある程度吸収してくれていると思いますが
世の中そういう方向に進んでるとは思うけど、目下の最大勢力 PlayStation 2
に限って言うと、メーカ提供のライブラリはきわめて低レベル(ハード寄り)
で「メーカ提供のライブラリがある程度吸収」してくれません。
特に PlayStation 2 のアーキテクチャは特異で、VPU 用のアセンブラと DMA
の使い方が性能の鍵になるので、「CPU キャッシュって何ですか」みたいな
高レベルな世界に済んでいる人間は揃って逝きました。
>>938 > それで、高度な部分は激しく機種依存で数年おきにリセットされる。
リセットされるのは、高度な部分というより低レベルな部分だと思うけど。
衝突検出やら AI のアルゴリズムなんかは、別にハードにゃ依存しないし。
それにリセットというほどじゃないやね。新しいハードが出てきたときに
いち早く使いこなすのは、やっぱり蓄積のある人間だったりするので。
なんというか、特定ハード、特定環境でしかツカエネー奴って 本当に存在するのか謎だよ。 ここ数年でもめぐるましく環境変わってるよね。
>>946 ある程度のライブラリが整備されている PlayStation から参入したメーカー
が、PlayStation 2 時代になって
ライブラリはねーわ
開発コスト(特にグラフィック関係)はかさむわ
で撤退に追い込まれたという話は、何度か聞いた。せいぜい、その程度だろう。
瞬間最大風速だけのハードで付加機能が全然なく 出来たものはジャギーだらけのブツブツゲーム どのハードとは言わないけれど
ゲームの価値基準って「面白いかどうか」だから、技術力が高い だけでは評価されるとは限らない。しかも売れるものと売れない ものの格差が激しい。技術者としては遠慮したい業種。
>>949 そういうモチベの低い人は業界的にも願い下げです
せいぜいご自身の業界でがんばっていて下さい
>>949 そりゃゲーム業界に限らん。携帯電話業界だって FOMA は普及していないでしょ?
ただし、技術力があれば表現の幅や可能性が広がる。
FOMA が普及しないのは、技術力があるかどうか以前の問題だと思うが……
FOMAが売れないのは宇多田ヒカルが結婚したせい
>>953 そうに決まってる。
トオモワナ ヤッテケナヒ...
FOMAがヒットしなかったのは名前が悪い。 MONAにしろ。
互換性が無かった ただそれだけ
存在価値が無かった ただそれだけ
そういう話は携帯板でやれ
>>959 その両スレとは目的そのものが違うだろう。
立てられる人おながいします
立てられませんでした…
スレを立てられる数はIPアドレスが枯渇していくと共に失われていくものなり
こんな感じ↑(
>>965-966 )のテンプレを適当に作った。
なんかあったら修正したり手を加えてちょ。
で、もし暇な奴がいたら変わりに立ててくれると有難いなり。
立ててみます
う、だめでした。比較的マイナーなISPなので、立てれると思ったのだけど。
うらむならクソスレを連発している奴をうらめ
うーん、ここんとこ立ててないのにダメですた。なんじゃろう。
うーん、私でよければ立ててみますね。
たててみる
被った、待機
いえ、差し出がましいことをしてすみませんでした。
おお、立ってる
スレ立て乙カレー
980 :
名前は開発中のものです。 :02/11/05 23:32 ID:/7Ytk27p
ここ埋めないの?もったいない…
981 :
名前は開発中のものです。 :02/11/06 00:04 ID:ac3ggRZP
新しいのがたったんだ。 安心して糞レスできるぜ。
982 :
名前は開発中のものです。 :02/11/06 00:17 ID:5us9zX6n
>>981 知ってるけど、あっち誰も書きこまないし
なら、こっち埋めてからでもいいかな?…と
983 :
名前は開発中のものです。 :02/11/06 01:22 ID:5kObgyse
そうだ一度くらいはラストを飾ってみたいね。 ラストでメール欄に得ろ画像のリンクとか。やってみたいね
梅梅
985 :
名前は開発中のものです。 :02/11/06 18:55 ID:AbNkeWCY
このスレ一周年記念age
いいスレほど早く埋まっていく・・・・