ゲームプログラミング相談室
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001プチ9627m
01/11/06 18:47ID:G6Fk/ND/駄スレ立てる前にココで聞きましょう。
■旧スレ(プログラミング技術板より)
○パート1
http://piza.2ch.net/tech/kako/969/969984472.html
○パート2
http://pc.2ch.net/test/read.cgi/tech/985540361
○パート3
http://pc.2ch.net/test/read.cgi/tech/1002894129/
0002名無しさん@お腹いっぱい。
01/11/06 19:36ID:???昨日、近所の吉野家行ったんです。吉野家。
そしたらなんか人がめちゃくちゃいっぱいで座れないんです。
で、よく見たらなんか垂れ幕下がってて、150円引き、とか書いてあるんです。
もうね、アホかと。馬鹿かと。
お前らな、150円引き如きで普段来てない吉野家に来てんじゃねーよ、ボケが。
150円だよ、150円。
なんか親子連れとかもいるし。一家4人で吉野家か。おめでてーな。
よーしパパ特盛頼んじゃうぞー、とか言ってるの。もう見てらんない。
お前らな、150円やるからその席空けろと。
吉野家ってのはな、もっと殺伐としてるべきなんだよ。
Uの字テーブルの向かいに座った奴といつ喧嘩が始まってもおかしくない、
刺すか刺されるか、そんな雰囲気がいいんじゃねーか。女子供は、すっこんでろ。
で、やっと座れたかと思ったら、隣の奴が、大盛つゆだくで、とか言ってるんです。
そこでまたぶち切れですよ。
あのな、つゆだくなんてきょうび流行んねーんだよ。ボケが。
得意げな顔して何が、つゆだくで、だ。
お前は本当につゆだくを食いたいのかと問いたい。問い詰めたい。小1時間問い詰めたい。
お前、つゆだくって言いたいだけちゃうんかと。
吉野家通の俺から言わせてもらえば今、吉野家通の間での最新流行はやっぱり、
ねぎだく、これだね。
大盛りねぎだくギョク。これが通の頼み方。
ねぎだくってのはねぎが多めに入ってる。そん代わり肉が少なめ。これ。
で、それに大盛りギョク(玉子)。これ最強。
しかしこれを頼むと次から店員にマークされるという危険も伴う、諸刃の剣。
素人にはお薦め出来ない。
まあお前らド素人は、牛鮭定食でも食ってなさいってこった。
0003名無しさん@お腹いっぱい。
01/11/06 20:06ID:???0004名無しさん@お腹いっぱい。
01/11/06 20:32ID:tdDZ8XPO0005名無しさん@お腹いっぱい。
01/11/06 20:52ID:???0006名無しさん@お腹いっぱい。
01/11/06 20:53ID:g4nNhikQあれ、やってみたいんすけど、アルゴリズムが思いつかん。
バカですみませんが、こういう風にやってるって言うの教えてくださいな。
0007名無しさん@お腹いっぱい。
01/11/06 20:59ID:2L5/MEoGアルファブレンド
0008名無しさん@お腹いっぱい。
01/11/06 21:01ID:Ubm7e8yTBBXに光学迷彩のスレッドがあったぞ。
http://isweb8.infoseek.co.jp/computer/bbx/
0009名無しさん@お腹いっぱい。
01/11/06 21:03ID:qXJQuXdp0010名無しさん@お腹いっぱい。
01/11/06 21:17ID:Wy/vrzewモデル抜きで描画したやつをテクスチャに使って
モデルが描画されるはずの場所を適当に散らしてやるとか。
0011名無しさん@お腹いっぱい。
01/11/06 21:31ID:ffLcuzBF∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′ ̄ ̄( ゚Д゚)< IDがFFだからレスしといてやる
UU ̄ ̄ U U \_____________
0012名無しさん@お腹いっぱい。
01/11/06 21:57ID:zeMWPbvy考えんのめんどうだから
描画しなけりゃいいじゃん。
「透明人間だワショーイ!!」
描画ON/OFF繰り返せば偽半透明になるし。
フレームレート落ちると手抜きバレバレだがな。
0013名無しさん@お腹いっぱい。
01/11/06 22:01ID:Wy/vrzewもうみんな素で作ってるかなあ。
0014名無しさん@お腹いっぱい。
01/11/06 22:04ID:Ubm7e8yTあれ以上ラップする必要なんてないっしょ。
DirectX8は以前に比べてかなり洗練されてる。
ラップしても結局アプリケーション依存になると思うぞ。
0015にゃ ◆G4ogTrNQ
01/11/06 22:37ID:???追加させていただきましたにゃ
けっこうカコイイ
0016名無しさん@お腹いっぱい。
01/11/07 07:01ID:???http://homepage1.nifty.com/open-prog/java/tip04x.html
0017名無しさん@お腹いっぱい。
01/11/07 11:24ID:yfpcm8ilうむ。すげーいいじゃん。age
0018名無しさん@お腹いっぱい。
01/11/07 13:35ID:G+bxpTdmかっこいいage
0019某はぐれ企画 ◆q3ckR4s2
01/11/07 15:18ID:aOMApkuV氷とか、水晶とか、熱ブラーとか。
0020名無しさん@お腹いっぱい。
01/11/07 16:48ID:hmPs+GIXどれがよいだろうか。
1 無圧縮WAV
2 MP3
3 MIDI
4 MOD
5 CD-DA
0021 ◆AyW.Rdbg
01/11/07 16:50ID:FDbRJ4fk0022名無しさん@お腹いっぱい。
01/11/07 16:52ID:???0023作曲家兼ゲープロ
01/11/07 16:56ID:gG9EM5Mh市販や同人なら、MP3とかOgg Vorbisが嬉しそう。
無圧縮WAVのストリーム再生は、
轟音を鳴らす高速CD-ROMドライブにかかるとヤヴァイ感じ。
0024名無しさん@お腹いっぱい。
01/11/07 17:03ID:kWHcbxUW0025名無しさん@お腹いっぱい。
01/11/07 17:21ID:???微妙なニュアンスをどこでも再現できるし
0026名無しさん@お腹いっぱい。
01/11/07 17:21ID:???どうやってCD-DAを配布するのか知りたいw
0027名無しさん@お腹いっぱい。
01/11/07 17:24ID:???ダウンロードする側としては50MBぐらいまでなら許容かな。
本体とあわせて200MBまでなら10数分だし。
MP3に1票。
0028名無しさん@お腹いっぱい。
01/11/07 17:25ID:???ISOとかFCDとかでさ。
0029名無しさん@お腹いっぱい。
01/11/07 17:33ID:???0030名無しさん@お腹いっぱい。
01/11/07 17:39ID:???ふざけるな。低速回線はまだそこら中にいるんだ
0031名無しさん@お腹いっぱい。
01/11/07 17:40ID:???あとから差し替えたり違う曲を流すことができる。
常時接続が当たり前な今だからこそ誰か試してみるツワモノいない?
0032名無しさん@お腹いっぱい。
01/11/07 17:43ID:???ネットにアクセスするのは気持ち悪いなぁ
0033作曲家兼ゲープロ
01/11/07 17:45ID:gG9EM5MhDLS使えば音源依存はほとんど解消できると思うんだけど、
使ったことないから知らないや。調べてみよっと。
とりあえず、大抵の音源でそこそこまともに演奏されるMIDIデータを作るのも
音楽屋さんの技術力のうちではありますです。
0034名無しさん@お腹いっぱい。
01/11/07 17:53ID:???他のメーカーでもGMのほかにGSだけ特別扱いだったり
0035名無しさん@お腹いっぱい。
01/11/07 18:00ID:???DLS良いよ。DX8のDMusicならレゾナンス付きフィルタまで使える。
0036名無しさん@お腹いっぱい。
01/11/07 18:03ID:???0037名無しさん@お腹いっぱい。
01/11/07 18:11ID:???問題は作れる人がまわりにいない。(´д`;)
シクシク
0038名無しさん@お腹いっぱい。
01/11/08 02:48ID:yP+KbtrC俺は周りで見たことないぞ。
0039名無しさん@お腹いっぱい。
01/11/08 05:13ID:???ああ、やってみたいね。
ネットゲーでもないとやる理由があるかわからんけど。
問題はどうやって安価にストリーミングサーバーを用意することか。
0040名無しさん@お腹いっぱい。
01/11/08 05:20ID:???YGS2K「http://www.sun-inet.or.jp/~yaneurao/」だったら
どっちが作り易い?っていうか使ってる人いる?
0041名無しさん@お腹いっぱい。
01/11/08 05:35ID:???ゴメン。スクリプトはつかってないわ。
このスレの人でスクリプト使ってる人ってどのくらいいるのだろう。
ム板のころから考えると、ほとんどいないように見えるが。
0042名無しさん@お腹いっぱい。
01/11/08 06:27ID:???0043名無しさん@お腹いっぱい。
01/11/08 07:27ID:???0044名無しさん@お腹いっぱい。
01/11/08 08:59ID:K/EXc4zshttp://www.midi.org/
0045名無しさん@お腹いっぱい。
01/11/08 12:02ID:???どっちもクソ。フリーで手に入るコンパイラがあるんだからソレ使えよ。
0046名無しさん@お腹いっぱい。
01/11/08 13:40ID:???作者がねぇ
0047名無しさん@お腹いっぱい。
01/11/08 15:00ID:???0048名無しさん@お腹いっぱい。
01/11/08 15:10ID:kkpeg6xxhttp://alleg.sourceforge.net/
英語圏では結構メジャー&
某アーケードエミュレータとかでも使われてるらしいんだけど。
0049名無しさん@お腹いっぱい。
01/11/08 15:23ID:???参考なるかと思ってソース眺めたら、
パラメータが間違ってたりして激しく萎えた覚えがあるんだけど。
0050名無しさん@お腹いっぱい。
01/11/08 15:25ID:???http://www.clanlib.org/
ついでにこんなんも見つけた。
最近英語サイト行くようになって、情報量の多さにクラクラっす〜。
探せば何でもあるし。確かに「車輪の再生産はするな」になるわこりゃ。
005150
01/11/08 15:33ID:???0052名無しさん@お腹いっぱい。
01/11/08 17:27ID:???結局自分で手を加えないと使えない部分が多くて
ライブラリとしての完成度は低い
0053名無しさん@お腹いっぱい。
01/11/08 19:34ID:???0054名無しさん@お腹いっぱい。
01/11/08 20:17ID:???どうせやるならDirectX直で使うのがいいんじゃないのか?
0055名無しさん@お腹いっぱい。
01/11/08 20:32ID:???0056名無しさん@お腹いっぱい。
01/11/08 20:52ID:???そういう人は何してもゲームが完成しないということで。
0057名無しさん@お腹いっぱい。
01/11/08 21:21ID:???激しくないけど、同感…。
いや自分も使ってるから。
0058名無しさん@お腹いっぱい。
01/11/08 21:52ID:z7W2ZNyKDirectXのどのバージョンが必要ですってのはどうしたら分かるんだろう?
例えば>>50のはWin上ではDirectXを使用するみたいだけど、
どのバージョンが必要なのか書いてある場所は見つからなかった。
ソースを読んで、この機能はバージョンいくつで…って調べるしかないの?
0059名無しさん@お腹いっぱい。
01/11/08 22:42ID:???禿同
他人のライブラリしか使えない人間はどっちにしろあまり
まともなゲームを作れない。
「お手軽に」と言いたいならば止めはしないが。
0060名無しさん@お腹いっぱい。
01/11/08 22:49ID:???ゲームそのものの制作に取りかかれないってのはアイタタターだよって
話なんじゃないのか?
0061名無しさん@お腹いっぱい。
01/11/08 23:02ID:???おもったんだが・・・ちがうのか?
0062名無しさん@お腹いっぱい。
01/11/08 23:10ID:???中級者はコードを書ける。
上級者はコードを書くかどうかの判断ができる。
0063名無しさん@お腹いっぱい。
01/11/08 23:17ID:???0064名無しさん@お腹いっぱい。
01/11/08 23:20ID:3NmFL/A2同感だけど、
コードを書かないといって実は書けない奴のなんと多いことか。
結論から言うと、
何でも自分で一から作ってきた奴と
ライブラリを使いまくって、ゲームにしたてた奴とでは、
前者の方が圧倒的に使えるんだけどね。
なぜなら前者は中級者だから上級者になれるけど、
後者は永遠に初心者だからね。
0065名無しさん@お腹いっぱい。
01/11/08 23:22ID:???ライブラリから作るのではなくて、作っていくうちにライブラリらしきものができてきて、
後でそれを自分が使いやすいようにライブラリ化。
アマチュアならこれが普通だと思うが。
006664
01/11/08 23:23ID:3NmFL/A2何でも自作することをお勧めするよ。
ライブラリに依存することはいつでもできるから。
0067名無しさん@お腹いっぱい。
01/11/08 23:26ID:???60は59に対するツッコミです。
55と56を読んでミソ
0068_
01/11/08 23:31ID:ZvJlUtz1作ってくうちに、どうしてもD3DXは超えられないことを悟り途中放棄するのがオチ。
0069名無しさん@お腹いっぱい。
01/11/09 00:01ID:???ま、逆にプロになる気とかなくて、趣味でゲームを作る手段として
プログラミングやるならライブラリに頼ってもいいわけで。
0070名無しさん@お腹いっぱい。
01/11/09 00:27ID:QPURCFOq遅レスですが、私も知りたいdeath
ソースと言わず、バイナリだけから判断できたりしないもんですかねー。
ちなみにAllegroはDirectX 3以降みたい。ClanLibのほうはちょっとわかりまへん。むう。
さらに発掘。
Simple DirectMedia Layer
http://www.devolution.com/~slouken/SDL/
0071名無しさん@お腹いっぱい。
01/11/09 02:33ID:???SDLみたいに一人じゃなかなか作れないようなライブラリこそ、
なんか使う価値があるように思った。すくなくともこれのいいところは、
よくある、プログラマ一人のヲナニーライブラリじゃないってところか。
0072名無しさん@お腹いっぱい。
01/11/09 05:42ID:???SDL はマルチプラットフォームですよね。
linuxとwindowsで動作するゲームを作りたいので
これつかってみようかなって考えています。
これってソフトに含めて(実行プログラムのベースにして)
売ってもいいんですよね? Lesser GPL みたいだし…。
0073名無しさん@お腹いっぱい。
01/11/09 09:25ID:???こいつはDirectXのwrapperですな。中身はあまりよく見てないです。
CDX library
http://www.cdxlib.com/
0074なまえ
01/11/09 14:22ID:wBSGHdMWメインループのwait処理なんですが、今まで見たいくつかのゲームのソース
では、sleepしているだけでした。1ミリ秒でも空き時間があればそれなりの処
理ができる思うのです。
メインループは次々とフレーム(実際に表示する画面)を生成してそれをQueue
にPush。別のThreadではQueueからPopして一定のタイミングで書き換えを行え
ば良いのでは?と。
実装はそれほど難しくないけど、デバッグが困難そうですが・・・。
趣味の場合はやっぱりデバッグがネックになりますかね?
・・・あ〜、ダメかな?常に古いフレームが表示されることになるか・・・。
ご意見ください。
0075名無しさん@お腹いっぱい。
01/11/09 15:04ID:???0076なまえ
01/11/09 15:19ID:???『常に古いフレームが表示される』とはそういうことです。
0077名無しさん@お腹いっぱい。
01/11/09 19:22ID:???重たい処理が来たときに、スタックしていた分を消費してごまかすってことかな。
そんなことしなくても、できあがった画像はどんどん更新していったらいいと思いますが。
多分、重たい処理なんて1フレームで終わらないことが多いと思いますし。
どんどん、更新するのが嫌ならsleepさせてタイミングを合わせれば良のでは
ないのでしょうか。
というか、聞いてみるより思いついたらやってみるのが一番ですよ。
0078なまえ
01/11/09 20:08ID:???ということです。1ミリ秒あればいろんな計算ができるでしょ。角度とか。
そして誰もそれをやっていなかったようなので、どうしてだろう?と。
普段ゲーム作ってるわけじゃないので、その辺興味あって。
Thread云々は単なる例です。
文章下手でスマソ。
0079名無しさん@お腹いっぱい。
01/11/09 21:04ID:???毎秒30回とか60回とかでフレームの生成ができればそれで十分なわけで、
「やることがない」ならばCPUを明け渡すのは、
通常のイベントドリブンなGUIアプリケーションでも同じことだと思いますが。
まあ、その辺は作りによります。
sleepやマルチメディアタイマを使わずにガンガン回すタイプもあるし、
メインループが寝てる間に別スレッドで思考ルーチンを動かしたり
データ読み込んだりするのもあるし。
008079
01/11/09 21:22ID:???s/マルチメディアタイマ/割り込みタイマ/
0081名無しさん@お腹いっぱい。
01/11/09 23:02ID:k863gV/Oトリプルバッファにすれば解決するするよん。
0082なまえ
01/11/09 23:11ID:???>「やることがない」ならばCPUを明け渡すのは、
これは全くその通りです。
ただ「描画時間がネック」みたいな発言をよく見かける割に、sleepしているので、
例えば次のフレームの背景くらい用意しておければと。
確かに、そこまでしなくても済むのなら寝ててもかまいませんが。
ちょっと先入観があったみたいです。それこそ作ってみれば解決した問題でしたね>>77
>>81
なるほど。勉強なります。
ゲーム作りって面白そうですね。
ヒマを見つけて少しずつ作ってみたいと思います。
0083名無しさん@お腹いっぱい。
01/11/09 23:18ID:???0084名無しさん@お腹いっぱい。
01/11/09 23:19ID:???0085名無しさん@お腹いっぱい。
01/11/10 06:31ID:???>ただ「描画時間がネック」みたいな発言をよく見かける割に、sleepしているので、
>例えば次のフレームの背景くらい用意しておければと。
たぶんへぼいソース見ただけだと思う。ソースさらしキボン(荒れると思ったらせんでよろし)
FPS可変なら、資源を使うだけ使いたいのでフルで回す。
FPS固定なら、あまる時間はsleepすると。
もちろん、どちらにせよ別スレッドでサウンド流したりしてるかもしれんよ。
0086名無しさん@お腹いっぱい。
01/11/10 10:02ID:???FSP固定の場合は、こんな方法がありますね。
実行スレッド以外に、タイマースレッドを用意する。
CreateEventでイベントオブジェクトを作っておく
タイマースレッドは、Sleepで一定時間眠らせつつ、SetEventを実行する。
実行スレッドは、イベントオブジェクトをWaitForSingleObjectで待つ。
0087名無しさん@お腹いっぱい。
01/11/10 10:59ID:Ci4ZgWPC008877
01/11/10 15:14ID:Pfrth29iなんか混乱しているような気もしますが。
描画処理のwaitと描画処理以外のwaitがごちゃ混ぜになっていませんか?
この当たりの実装はプラットフォームやアプリケーションによって違うので
一概に、こういうコーディングが良い、という例はないと思います。
0089名無しさん@お腹いっぱい。
01/11/10 17:29ID:???Crystal Space どうよ。
0090名無しさん@お腹いっぱい。
01/11/11 05:37ID:???そっちの畑から来た身としては、どうも使えるだけ資源消費せよ、みたいな
コードがどうしても書けない(笑)向いてないのかもしれん。
0091名無しさん@お腹いっぱい。
01/11/11 08:21ID:???そりゃ重いっていわれるよ(w
ゲーム本体のルーチン使いまわしてるから当然なんだけど
0092名無しさん@お腹いっぱい。
01/11/11 09:24ID:54DZd3xvメモリーの動的取得が上手く出来ない
って事かな?
0093名無しさん@お腹いっぱい。
01/11/11 10:25ID:???......ageでなにかいてんだか
>>90
アクション性が無いなら、それでもイイと思うけど。
0094名無しさん@お腹いっぱい。
01/11/11 11:48ID:???バッテリ動作のノートPCとかギリギリで動いてるクロックアップ機とか想定するなら
資源使い切らない選択も悪くないと思ふ。
0095名無しさん@お腹いっぱい。
01/11/11 16:57ID:???↑はベンチマークのために存在しているようなマシンなのだから、めいっぱい負荷をかけてあげると喜ばれると思われ。
009694
01/11/11 20:12ID:???0097名無しさん@お腹いっぱい。
01/11/12 07:32ID:???むしろ熱暴走させてあげるくらいがよいと思われ。
「ああ、しまったクロックあげすぎかー」と反省。
009890
01/11/13 02:28ID:???開いてる時間はOSに処理返しますから。
可能な限りフレームレート上げようという思考で
作業した事ないんで
>93
うーん、そこそこアニメーションさせねばならん時でも、
必要なFTS固定でやっちゃいます。
0099名無しさん@お腹いっぱい。
01/11/20 07:14ID:xfX6epq/0100名無しさん@お腹いっぱい。
01/11/20 09:51ID:LstOLEvlクイックスの座標から適当な方向に線を伸ばしてみる
(というか単純にピクセルを走査してみる)といいと思った。
境界ピクセルと交わる回数が奇数なら領域内、偶数なら領域外。
あとはクイックスがいない側をペイント。これで6502でも安心。
ほんとに超亀レス。
0101名前は開発中のものです。
01/12/10 01:54ID:vuNiN/Utテーブル処理についてよくわからないので教えてください。
言語はVC++です。
検索して探しましたがHTMLばっかりなんで・・
0102名前は開発中のものです。
01/12/10 02:07ID:???まずは、C言語から始めましょう。
VB厨にはとっつきにくいかも…?
0103名前は開発中のものです。
01/12/10 02:56ID:9KJkp3pd「テーブル」「ルックアップ」とかで試してみたほうがいいかも。
あと、英語で検索したほうが引っかかる予感がする。
>>102
ストレス過多は胃に悪いので牛乳でも飲みなされ。
0104名前は開発中のものです。
01/12/11 11:07ID:???テーブルで何やりたい?
そこから説明してくれ。
0105
01/12/11 23:47ID:8empnFet0106名前は開発中のものです。
01/12/12 00:22ID:???まずは試しにカコワルイ稲妻を作ってみるのがよいと思われ。
0107名前は開発中のものです。
01/12/12 00:31ID:???ずばり稲妻を表示するサンプルが載ってたと思う。
VB用とDelphi用だったかな。
0108名前は開発中のものです。
01/12/12 01:11ID:T2PuoAFHhttp://www.art-science.org/pdf/2000/lightning.pdf
この論文は参考にならんかね。
0109名前は開発中のものです。
01/12/12 02:30ID:d7VfLUCO( ´Д`) <これのことか?
/ \
_ | | | |_..∬
|\ ̄ ̄ ̄ ̄ ̄ ̄ 旦.\
./..\\ \
/ \|=================|
\ ノ こたつ \
0111名前は開発中のものです。
01/12/12 09:46ID:???河川の氾濫も含めて教えてください。
0112名前は開発中のものです。
01/12/12 11:31ID:???テーブルをどんな場面で使うのかが解からんのか?
それとも、配列の概念がわからないのか?どっちだ?
>>108 おお!こんな論文があるとわ。
参考になるッす。サンキュー!!
0113名前は開発中のものです。
01/12/14 03:59ID:???0114名前は開発中のものです。
01/12/14 06:41ID:???なんとかなりませんか?
0115114
01/12/14 06:43ID:e7GMQ3b8あと参照使うのとポインタでは速度に違いありますか?
0116名前は開発中のものです。
01/12/14 08:04ID:???0117名前は開発中のものです。
01/12/14 08:09ID:????ちょっと重いってことですか?ありがとうです。
0118名前は開発中のものです。
01/12/14 09:51ID:???掲示板の運営者のすることは管理することなんだから、全部に
目を通せないなら運営すべきじゃない。また削除依頼を公開する
必要もないしなかなか削除しない理由もない。
つまり確信犯で不法行為に荷担しようとしてるとしか思えない。
金儲けはする気はないといっていたが、だったらやっぱり
彼は子供というか、人が困るのが好きなのかもしれない。
63 :無責任な名無しさん :01/11/18 07:00 ID:VZdC2q47
>人が困るのが好きなのかもしれない
俺にもそういう人間にしか見えないよ
違法性の程度は違うが
放火犯のような愉快犯と同じような
気味悪さを感じる
64 :無責任な名無しさん :01/11/18 12:59 ID:OxVkCF27
>>62,63
同意。
知人の警官もひろゆきを気味悪い程の女性気質と評していた。
ガキの頃のひろゆきを想うと、面と向かって喧嘩は出来ないが、上履きを隠したり
して喜んでたタイプだと思う。
どうでもいいけど、ひろゆきの笑った黒目がちな焦点のない目が守大介と似てるの
が妙に気になる。
0119名前は開発中のものです。
01/12/14 23:07ID:???残り半分は気まずさであると信じたい。
0120名前は開発中のものです。
01/12/15 06:23ID:???0121名前は開発中のものです。
01/12/15 17:02ID:9eQ/pH5Vクラスのインターフェースとかなら、
生成されるコードに基本的に違いはないんじゃない?
ただ、安全面から、使えるならできるだけ参照を使うべき。
この辺がCプログラマとC++プログラマの差でもある。ニヤーリ
0122名前は開発中のものです。
01/12/15 17:06ID:???デスマーチ真っ只中でもそういうコード書いてくださる先輩が
いる。まったく持って激しく尊敬。おれも精進せねば。
0123名前は開発中のものです。
01/12/15 18:41ID:???でも参照って配列渡せないでしょ。違ったっけ?
ポインタも使いようだと。メンドイけど。
0124名前は開発中のものです。
01/12/15 18:42ID:???0126名前は開発中のものです。
01/12/15 23:43ID:zSSwxmsK別に参照もポインタも安全性はかわらんよ。
NULLポインタの可能性がないとしても、NULL参照の可能性はある。
int& GetRef()
{
int* n = NULL;
return *n;
}
こっちの方が余計厄介
0127名前は開発中のものです。
01/12/15 23:54ID:???って問題でしょ。
0128名前は開発中のものです。
01/12/16 01:25ID:???個人的にはたまにあるほうがはまると思う。
0129名前は開発中のものです。
01/12/16 01:29ID:???>でも参照って配列渡せないでしょ。
じゃあ参照で何を渡すことができるのか小一時間問い詰めたい
0130名前は開発中のものです。
01/12/16 01:41ID:???しかも、
関数側がパラメータを書き換える場合はポインタ、
関数側がパラメータを書き換えない場合は const 参照、
みたいな、教科書的使い方しかしてない。
0131あぼーん
NGNG0132_
01/12/16 02:36ID:Ar8VngeJだから、constで。
俺は、ネストがうざくないなら、ポインタで済ますけどね。
0133名前は開発中のものです。
01/12/16 03:58ID:???そのコードは結局ポインタの問題であると思うがいかがであろう。
プログラム板向けな話題だが……。
0134名前は開発中のものです。
01/12/16 07:07ID:???なんて書いてあったか気になる・・・
0135名前は開発中のものです。
01/12/16 07:33ID:+KES3Ub0表示が破綻するのですが、なにか回避作はないのでしょうか。
0136名前は開発中のものです。
01/12/16 11:55ID:???0137名前は開発中のものです。
01/12/16 12:45ID:???フォントの大きさを固定する。
0139名前は開発中のものです。
01/12/16 17:25ID:???nazo
0140名前は開発中のものです。
01/12/16 17:42ID:aHuW4LrA割とFAQなんだがな。検索したか?
0142名前は開発中のものです。
01/12/16 21:18ID:daAjOz/USetErrorMode(SEM_FAILCRITICALERRORS)して
GetVolumeInformation()すれば?
FD入ってなければエラーが返るよ。
0143名前は開発中のものです。
01/12/24 16:40ID:TT6cQF5s0144名前は開発中のものです。
01/12/24 23:02ID:q2IMbhtW0145名前は開発中のものです。
01/12/25 06:00ID:???砂糖だけ取り出すようなものではありますまいか。
0146名前は開発中のものです。
01/12/25 21:55ID:???つまり、かな〜り難しいということですね。
どうもありがとう。
視点は別でとっておきます。
0147名前は開発中のものです。
01/12/26 11:46ID:???はっきり覚えていない
0148-
02/01/08 23:20ID:yU2HT0bl0149名前は開発中のものです。
02/01/08 23:28ID:???英語
0150名前は開発中のものです。
02/01/08 23:36ID:???日本語使おうぜ。日本人なら。
0151名前は開発中のものです。
02/01/09 00:10ID:???0152名前は開発中のものです。
02/01/09 00:28ID:???C++使っておけば馬鹿にされない。
0153名前は開発中のものです。
02/01/09 00:44ID:???pygameは?
誰も使ったことなさそうだ。
0154名前は開発中のものです。
02/01/09 08:37ID:???それをもっとも適した言語というのはどうかと(w
まあ、くやしいがC/C++じゃないかな
0155-
02/01/09 22:11ID:???0156名前は開発中のものです。
02/01/09 23:51ID:???フルアセンブラでなくても、インラインアセンブラぐらい書けたら
たまーに重宝する事があるんだが…。
0157名前は開発中のものです。
02/01/10 02:04ID:???0158名前は開発中のものです。
02/01/10 14:53ID:4z5AnKwA0159名前は開発中のものです。
02/01/10 15:23ID:???0160名前は開発中のものです。
02/01/10 21:58ID:s/3jCGLIhttp://hello.to/dtm/
自動作曲ツール
0161名前は開発中のものです。
02/01/11 14:37ID:JxPmum3mどうやって決まるんだろう。
止まっている時の跳ね返りはなんとなく
分かるんだけど…
0162名前は開発中のものです。
02/01/11 15:08ID:???C でしょ。ゲームによるけど C++ はあまりお薦めしないなぁ。アセンブラは
使い方が分かる程度に勉強しておくと役に立つかも。
0163名前は開発中のものです。
02/01/12 00:44ID:qF5Awb+F大雑把に処理するなら、停止時の弾の跳ね返り速度に、
ブロックの移動速度を足す。
つーか、摩擦やら跳ね返り係数やらを考慮しても良いのだが、
労力に見合うとは思えん。ま、ヒマならやってみ。
0164名前は開発中のものです。
02/01/12 00:48ID:???最近のシーケンスソフトについてくるオートバッキング機能は結構
便利だよ。漏れはYAMAHA派なのでXGWorksなんだが、てけとーなフ
レーズを打ち込んどいてオートアレンジャーで伴奏つけてから、元
のフレーズを消して、あらためてひらめいた音を入れる、というア
フォな手法を使ってます。
0165名前は開発中のものです。
02/01/12 11:50ID:WQq5T0Hzよく考えたら、摩擦は関係ないような・・・
0166名前は開発中のものです。
02/01/12 12:58ID:2GJZajHzパドルの動きに対してどんだけボールが粘着するかの係数
0167名前は開発中のものです。
02/01/13 00:33ID:ssMqoitnあと、慣性モーメントだな
0168名前は開発中のものです。
02/01/13 02:14ID:LBqywregcherryも使える。検索しよう!
0169名前は開発中のものです。
02/01/13 03:31ID:???多少ランダムな要素も含まれている気がする。
>>166
キャラクタの材質の設定もあるわけでちゅかい?
0170名前は開発中のものです。
02/01/13 03:54ID:???元々163が振ったネタだよ。
0171名前は開発中のものです。
02/01/13 03:56ID:???0172名前は開発中のものです。
02/01/13 03:59ID:???疑ってしまう俺。言い過ぎか?
0173名前は開発中のものです。
02/01/13 04:10ID:08Lp1+qJflip使っちゃいけませんか
0174名前は開発中のものです。
02/01/13 04:12ID:???0175名前は開発中のものです。
02/01/13 04:25ID:???>52.7MB/sである。
にはついワロタ。世の中っていろんな人がいるんだなぁ。。。
ていうか読めば読むほど素晴らしい洞察に長けた文章が漫才なん
だが(笑
筆者は相当なネタ師とお見受けする。
0176名前は開発中のものです。
02/01/13 04:34ID:???>>165-167あたり?
0177名前は開発中のものです。
02/01/13 10:34ID:???DIB作って毎回転送してやればそのぐらいになるんでは?
DirectDrawを解像度の切り替えぐらいしか使ってないけど
まぁ、そんな事しているとは到底思えないんだが…
0178名前は開発中のものです。
02/01/13 12:02ID:???それなら55Mくらいじゃないかな?
0179名前は開発中のものです。
02/01/13 14:34ID:???何が笑えるのかよくわからんのは俺だけかね?
# いやまあ、データ隠蔽のあたりは笑えなくはないが
暇だったら説明きぼんぬ。
0180名前は開発中のものです。
02/01/13 14:37ID:???>>175に400字詰め原稿用紙10枚ほどで説明してもらいたい。
0181名前は開発中のものです。
02/01/13 18:47ID:Hyzb8Prhレスありがとうございます。
何かヒントがつかめたような気がします。
しかし今時ブロック崩しもないよなぁ・・・
0182名前は開発中のものです。
02/01/13 19:07ID:???0183名前は開発中のものです。
02/01/13 19:38ID:???今時も何もFPS固定派には多いというか、それしかないような。
0184名前は開発中のものです。
02/01/13 21:12ID:???3バイトとしても微妙に違わね?
0185名前は開発中のものです。
02/01/13 21:22ID:???640(pix)*480(pix)*24(bpp)*60(fps)/1024(K)/1024(M)=421.875(Mbps)
8で割って52.734375MBytes/s。
なんか変か?
0186名前は開発中のものです。
02/01/13 21:23ID:???ひょっとして書いた本人か?w
0187名前は開発中のものです。
02/01/13 21:25ID:???しかないのでは? ヴィデオメモリとメインメモリの違いも理解
してなさそうだし。
0188名前は開発中のものです。
02/01/13 22:54ID:???とりあえず、メモリの違いとか全部転送するのかとかはおいておくとしても、
自分で60fpsで固定するなとか抜かしてるのに、計算式は60固定かよ、みたいな。
いくらでもつっこめそうですな。
0189名前は開発中のものです。
02/01/14 02:19ID:???8年位前のPCでDOSエクステンダが云々、VESA BIOSが云々、といってた時代なら正しいんだけどね。
実際にPCIの帯域がこれこれだから、理論値は…という話題も合ったし。
0190名前は開発中のものです。
02/01/14 02:40ID:???ちげーよ。
>189
ああ、そういう意味か。まあ確かにAGPなら
55MB/s程度の風速は屁でもないわな。
0191haruka
02/01/18 02:42ID:???アルカノイドだと、バウス(自機)にボールがあたったときの跳ね返り方向は、
バウスのどの部分に当たったかで決まってますが、
ブロック崩しってなんか特別なのがあるんでしょうか?
>>175が書いてるやつってさ、
普通オフスクリーン間の転送の方がずっと大きいので
オフスクリーンからプライマリに転送するところだけ計算することに
何の意味があるのかよくわからないです。
0192名前は開発中のものです。
02/01/18 13:15ID:???0193名前は開発中のものです。
02/01/19 11:20ID:l0apz3Qd個人的には、律儀に正しく反射するだけのブロック崩しは
なかなか最後の数ブロックに玉が当たらなかったりして
クソゲー化してるのをよく見かける気がする。ついでにage
0194名前は開発中のものです。
02/01/19 15:39ID:???昔は画面への転送が遅かったからあながち>175のは意味が無かったわけじゃない。
0195名前は開発中のものです。
02/01/19 16:42ID:???「1秒の転送量(MB) < ビデオカード(MB)じゃなきゃ駄目」
のようなこと質問者が考えてるか想像してワラタのかも。
0196名前は開発中のものです。
02/01/20 10:33ID:???0197名前は開発中のものです。
02/01/20 11:27ID:???0198名前は開発中のものです。
02/01/20 12:11ID:???アメリカの情報系学部ではJavaからプログラムを始めさせるらしい。
0199超怒級素人
02/01/20 14:30ID:???Windowsで出来る?
0200名前は開発中のものです。
02/01/20 14:34ID:???0201名前は開発中のものです。
02/01/20 14:49ID:???Cでもできます。
じゃんけんゲームとかなんでもできます。
グラフィカルな市販されているゲームをつくりたいのであればWin32APIを利用して作るのですよ。
0202超怒級素人
02/01/20 15:00ID:???使うとしたら、どの処理系で?
たとえば、マインスイーパー程度のゲームであれば、
Cだけで作れます?
0203超怒級素人
02/01/20 15:00ID:???0204名前は開発中のものです。
02/01/20 15:24ID:???>Win32APIって、Cでも使えるんですか?
使えます
>使うとしたら、どの処理系で?
VC++, Borland C++ (Builder), IntelC, cygwin, mingw32, digitalmars, watcom, lcc-win32 など
>たとえば、マインスイーパー程度のゲームであれば、
>Cだけで作れます?
作れます
0205名前は開発中のものです。
02/01/20 22:59ID:???Cだけで作れます? というが、むしろ
複数の言語を使ってゲームを組む方が難しくないか?
0206haruka
02/01/21 08:29ID:???日本でも最初Javaっていうところは多いと思うよ。
>>204
簡単なゲームならCだけでいいけど、
がんばってC++で作った方がいいような気がするんだけど、
そんなことないですか?
0207名前は開発中のものです。
02/01/21 10:57ID:???まずCからやってみそ。いきなりC++やっても死ぬだけだ
0208名前は開発中のものです。
02/01/21 10:57ID:???0209名前は開発中のものです。
02/01/25 18:01ID:TpNdaRO30210名前は開発中のものです。
02/01/25 18:11ID:???bool Teki = true;
プロの間じゃもう常識。
0211名前は開発中のものです。
02/01/25 18:44ID:TpNdaRO3じゃ、一定の期間で敵を出すプログラムはどんなのがありますか?
0212名前は開発中のものです。
02/01/25 19:00ID:JabPi9JGunsigned tekiNhun_gamubare = 3;
これ常識。
0213名前は開発中のものです。
02/01/26 00:05ID:???printf("(●`ー´●)");
0214名前は開発中のものです。
02/01/26 13:00ID:???MessageBox(0,"敵","敵",0);
Sleep(3000);
}
一定間隔で敵がでます。
0215名前は開発中のものです。
02/01/26 20:15ID:???0218名前は開発中のものです。
02/01/27 16:02ID:nDy60XnEというアルゴリズムだれか作って!ちなみにVB。
b=3のとき、こんな感じ
□=空きマス ◆=キャラA ■=移動可能マス ◇=障害物
□□□□■■■□□□
□□□■■■■■□□
□□□◇■◆■■■□
□□□■■■■■□□
□□□□■■■□□□
□□□□□■□□□□
0219名前は開発中のものです。
02/01/27 16:11ID:???っていうか全検索しる!
0220名前は開発中のものです。
02/01/27 16:39ID:???初歩的すぎるが、暇なので擬似コード書いてみた。
すべてのマスに対応する移動可能残量ワークを用意。ゼロ初期化。
でスタート
関数(位置, 移動可能残量)
{
位置が障害物なら何もしないでリターン
移動可能残量でその位置に入れないのならリターン
移動可能残量 -= このマスに入るのに必要な消費量
その位置のワークにすでに移動可能残量以上の値が入っていたらリターン
その位置のワークに移動可能残量を記入
if ( 移動可能残量がまだある ) {
関数(上, 移動可能残量)
関数(下, 移動可能残量)
関数(左, 移動可能残量)
関数(右, 移動可能残量)
}
}
これで
関数(Aの位置, B)した結果のワークが0でないところが移動可能範囲として描画できる。
たどるべき最短ルートは、任意のポイントのワークの数字を読んで
その隣の数字が大きくなる方向をたどっていけばAまで到達できる。
0221名前は開発中のものです。
02/01/27 16:40ID:???http://www.basicmagazine.net/
はい、次の人。
0222名前は開発中のものです。
02/01/27 17:02ID:???0223218
02/01/27 17:24ID:nDy60XnEすべてのマスに対応する移動可能残量ワークってどういう意味ですか・・?
すいません、初心者で。
0224218
02/01/27 17:43ID:nDy60XnEあ、できました。こんな簡単なコードでできるんですね。
ありがとうございました!いやー2chってすごいなー
0225名前は開発中のものです。
02/01/27 21:51ID:???それはつまり、足を洗えということか?(w
0226名前は開発中のものです。
02/01/27 23:45ID:???いや、足掻いてるってことかもよ(w
0227名前は開発中のものです。
02/01/28 09:49ID:/P/BMSWvいやお願いいたします。
0228770
02/01/28 11:56ID:/P/BMSWvは偽者です。
0229名前は開発中のものです。
02/01/28 16:20ID:???今でも区別が付かないのでトリップとか使ってちゃうだい。
名前欄に半角シャープに続けてパスワードを入れるやつ。
こんなん↓
209#パスワード
0230209 ◆jUZhK5lw
02/01/28 17:28ID:/P/BMSWv0231名前は開発中のものです。
02/01/28 17:45ID:???とか茶々を入れてみたり(スマヌ >>229
0232209 ◆2sDz/Rq6
02/01/28 20:09ID:???0233229
02/01/28 20:12ID:???0235名前は開発中のものです。
02/01/29 16:59ID:???0236名前は開発中のものです。
02/01/29 18:24ID:???敵や弾が複数出せなかったりして困ってたが、そのレベルの質問か?(ワラ
0237209 ◆jUZhK5lw
02/01/29 18:53ID:YY1S1IhKハイそれはなんとか。
自機と弾は、構造体を使って出しました。
0238209 ◆2sDz/Rq6
02/01/29 21:59ID:???0239名前は開発中のものです。
02/01/30 00:21ID:???warata.
0240209 ◆jUZhK5lw
02/01/30 10:08ID:yLP42Smi最初の1匹は出るんですが。一定の間隔での出し方が
ちょっとわかんないんです
0241一定間隔
02/01/30 10:13ID:???/* gameloop */
while (1) {
:
if ((count%100)==0) {
createNewEnemy();
}
:
count++;
}
0242名前は開発中のものです。
02/01/30 13:18ID:???メインループ()
{
カウンター変数を+1
if(カウンター変数が10以上になったら)
{
敵発生処理()
カウンター変数=0
}
発生している敵の描画処理等()
}
いっぺんこうしてみ。メインループの中に織り交ぜれ。
0243209 ◆jUZhK5lw
02/01/30 15:34ID:yLP42Smi複数の場合は?あとcreateNewEnemy()だけで敵が出るんですか?
0244アマチュアの81
02/01/30 16:26ID:kJDn/Pfxこんなの買ってみてはいかが?>209
俺は立ち読みでしか読んでないけど、確かスプライトやスクリプト
の説明まで載ってたと思う。
0245名前は開発中のものです。
02/01/30 17:00ID:???0246アマチュアの81
02/01/30 17:09ID:???堂々巡りを見かねて餌を投げたのですが。
0248名前は開発中のものです。
02/01/30 19:08ID:???0249名前は開発中のものです。
02/01/30 19:20ID:???>複数の場合は?あとcreateNewEnemy()だけで敵が出るんですか?
出るわけねーだろ?
そんなこと聞くから罠だって言われるんだよ!。
0250名前は開発中のものです。
02/01/30 20:46ID:???0251名前は開発中のものです。
02/01/30 21:07ID:???あきまさのように。
0252あきまさ後援会
02/01/30 21:09ID:???0253名前は開発中のものです。
02/01/30 21:43ID:???の対応が冷たくなるのかなぁ。
昨日の回答者はよく我慢したと思う。
0254名前は開発中のものです。
02/01/30 22:07ID:???0255名前は開発中のものです。
02/01/31 08:37ID:???とりあえず、プログラム自身をもっと勉強しない?
0256名前は開発中のものです。
02/01/31 08:39ID:???http://giggle.cside6.com/hotate/
これのシューティングのところのソースを落としてじっくり読め。
ちょっとつくりが古いけれど参考にはなる。
それでわからないところを質問しに来い。
0257209 ◆jUZhK5lw
02/01/31 09:54ID:3Vff08H8あきまさって誰ですか
あと、文字をオブジェクトにしているんですけど
0258ncurses?
02/01/31 10:45ID:???環境を詳しく書いてみると信用を取り戻せるかもしれません>209
0259209 ◆jUZhK5lw
02/01/31 10:54ID:3Vff08H8環境とは?
0260名前は開発中のものです。
02/01/31 11:05ID:???ttp://www.trc.co.jp/trc/book/book.idc?JLA=01020320
0261209 ◆jUZhK5lw
02/01/31 11:09ID:3Vff08H8めんどくせーから。アドレス貼ってください。
0262名前は開発中のものです。
02/01/31 11:28ID:???260はまさに彼のような人にピッタリ。
しかし、、、直リン回避に文句入れたやつ始めてみたよ。
#コピペ一発をめんどくさがるなんて、TVでネットしてる方かな。
0263209 ◆jUZhK5lw
02/01/31 11:40ID:3Vff08H8そうなんですか。PC初心者で申し訳ありません。
0264名前は開発中のものです。
02/01/31 11:54ID:???なら、まずPCを勉強してくだされ。
それだけじゃ可哀想なので、下記の本をすすめておく。
ttp://store.nikkeibp.co.jp/item/main/148222810190.html
0266名前は開発中のものです。
02/01/31 12:34ID:???おい。下げろヴォケ。
0267名前は開発中のものです。
02/01/31 12:55ID:???罠だと言われたくなかったら、書いたソースのひとつでも提示すれ。
捨てアカ取ってジオのHP晒すことくらいできるだろ?。
0268名前は開発中のものです。
02/01/31 13:21ID:???0269名前は開発中のものです。
02/01/31 13:48ID:???君はそのまんまコピーすることしか考え付かないほど知恵遅れなのかね?
確かに罠としか思えんな。
0270209 ◆jUZhK5lw
02/01/31 13:55ID:3Vff08H8その他に何がルンデスカ?
0271209 ◆jUZhK5lw
02/01/31 13:56ID:3Vff08H80272名前は開発中のものです。
02/01/31 14:11ID:???そんなことじゃあゲーサクなんて5万年たっても無理だぞ。
0273209 ◆jUZhK5lw
02/01/31 14:19ID:3Vff08H8せいぜいあと7,80年だ
0274209 ◆jUZhK5lw
02/01/31 14:22ID:???0275名前は開発中のものです。
02/01/31 14:50ID:???0276名前は開発中のものです。
02/01/31 16:09ID:???0277名前は開発中のものです。
02/01/31 17:00ID:???http://pc.2ch.net/test/read.cgi/prog/1011766220/
0278名前は開発中のものです。
02/01/31 17:03ID:???>>274 の 209 ◆jUZhK5lw は煽りです。徹底放置の方向で。
0279209 ◆jUZhK5lw
02/01/31 17:57ID:???どっちが煽ってんだヴぁかが。こっちはマジレスしてんだぞ。
てめ―見て―な心のせまいアフォーがレスすんな。
ここはゲープロ相談室じゃなかったのか?なぜ罠なんかやらなきゃいけないの
あんたらに何のメリットがあるというんだ。
0280名前は開発中のものです。
02/01/31 20:01ID:UuSbrdr9ダンジョンRPGのアルゴリズム教えてください。
0281名前は開発中のものです。
02/01/31 20:03ID:???どの部分のアルゴリズムかはっきりしてください
0282名前は開発中のものです。
02/01/31 20:09ID:???古典的な4方向しか向けない奴なら、今のスペックなら素直に奥から重ね書きしてっても
十分速度出るから、適当にやれば良いんじゃない?
昔は…って、そういう話じゃないか。
0283名前は開発中のものです。
02/01/31 20:32ID:???はいはい、たのちかったでちゅかぁ〜
そろそろおうちにかえりまちょ〜ね〜
0284名前は開発中のものです。
02/01/31 20:50ID:FKv9pcui0285名前は開発中のものです。
02/01/31 21:11ID:???0286名前は開発中のものです。
02/01/31 21:45ID:???0287名前は開発中のものです。
02/01/31 22:00ID:???>>258
環境とは?
ゲープロ以前の問題。ここで質問する資格なし。
0288209 ◆2sDz/Rq6
02/01/31 22:03ID:???そりゃ、一言いいたくなる気も分かるけどさ・・・。
オレモナー
0289名前は開発中のものです。
02/01/31 22:20ID:???0290名前は開発中のものです。
02/01/31 23:06ID:???0291280
02/02/01 00:21ID:SWmTp9d0以前こういった質問をプログラマーの方にさせて頂いたんですが
どの部分のアルゴリズムかって同じこと聞かれました。
どの部分のっていう以前に、まずどういう風に作ればいいのかがわかりません(汗
0292名前は開発中のものです。
02/02/01 00:26ID:6mOXvhF8芸術の基本は模倣にあり
0293名前は開発中のものです。
02/02/01 00:48ID:???>まずどういう風に作ればいいのかがわかりません
多分それは違う。
君の現状はおそらく、作り方のアイデアは頭の中にあるが
それが最適解であるかどうかを気にするあまり、実際に手を動かして
作り始めようとしていないだけ。何もしないうちに悩み停滞し助言を
求めている。
「実際に作ってみたが○○の結果に満足しない。どうすればいいか。」
という段階になるまでネットの回線を切ることを薦める。
0294名前は開発中のものです。
02/02/01 00:53ID:???単純なものから少しづつ作り始めてはどうか。
ttp://www.cmagazine.jp/books/recipe/
0296280
02/02/01 01:33ID:SWmTp9d0あああ…それを言われるとかなり辛いものが・・・(汗
HSPで簡単なRPGやアクション作れるぐらいです。
C言語をこれから触ろうという段階です。
なんか、板汚しちゃってすみません。
293さんが言うように、まだ僕は自分でやるべきことがたくさんあったようです。
皆様、ご親切にありがとうございました
0297名前は開発中のものです。
02/02/01 01:50ID:XFopPkPD0298名前は開発中のものです。
02/02/01 04:53ID:???0299名前は開発中のものです。
02/02/01 09:05ID:???・各頂点が互いの矩形内にあるか?
・辺同士が交差しているか?
どれか一つが真なら重なってる。
って風に普通の2Dポリゴン同士のあたり判定で良いんじゃない?
0300名前は開発中のものです。
02/02/01 10:23ID:???それだけできれば、すぐ作れそうだね。
とりあえず、ここに思いついたアルゴリズムを書いてみるってのは?
どこが駄目そうと思ったかも書き添えて。
0301209 ◆jUZhK5lw
02/02/01 11:23ID:???貴方頭大丈夫ですか。かわいそーに。知的後退が見られるようですが。みんなが見ている掲示板に
赤ちゃん言葉?プログラムしか勉強してこないとこうなるんですか?(憐
もしいいひとがいるなら、参考になるHPを教えてください。
0302名前は開発中のものです。
02/02/01 11:28ID:???0304名前は開発中のものです。
02/02/01 11:33ID:???そっとしておきなよ…
0305名前は開発中のものです。
02/02/01 13:45ID:???プログラマが高尚な仕事だと勘違いしてるタイプだな。
>132 :名前は開発中のものです。 :02/01/30 19:17 ID:???
>>>127
>>俺らが引けば納まるんでしょ? 多分。
>はいそうです頼むから逝っちゃって下さいあんたの勝ちだよ、ヨカータね。
>あ〜ウゼェ・・・スレタイトル見えないのかよ・・・
0306名前は開発中のものです。
02/02/01 13:56ID:???0307名前は開発中のものです。
02/02/01 14:11ID:6mOXvhF8( ´ー`)y─┛~~~
はい、次の方どぉぞ
0308名前は開発中のものです。
02/02/01 15:34ID:3FgmOISv検索したら車のギミックとプラモのギミックぐらいしかでてきませんでした。
0309名前は開発中のものです。
02/02/01 15:43ID:???(1)からくり。仕掛け。
(2)〔音〕 奇をてらった演奏。また,普通では出せないような音を用いた演奏。
( ´ー`)y─┛~~~
はい、次の方どぉぞ
0310名前は開発中のものです。
02/02/01 15:44ID:???ポリゴンキャラが拾ったアイテムを画面の奥から出てくるような感じで
画面端のアイテム欄に並べて行きたいんですけどスムーズに移動できません。
2D座標で計算すると、ポリゴンとの位置関係がおかしくなるし、
3Dにすると、最前面に表示していてもポリゴンが刺さって前面に来てしまいます。
0311名前は開発中のものです。
02/02/01 15:46ID:3FgmOISvゲームのギミックを処理してキャラを裸にしたいのですが可能なソフトはありますか?
服のデータだけ消して全身肌色にしたいのです。
0312名前は開発中のものです。
02/02/01 15:48ID:???( ´ー`)y─┛~~~
はい、次の方どぉぞ
0313名前は開発中のものです。
02/02/01 15:49ID:???0314名前は開発中のものです。
02/02/01 16:35ID:???>ゲームのギミックを処理してキャラを裸にしたい
多分それは違う。
君の現状はおそらく、キャラの服のデータだけ消すことで
君自身の股間のギミックを処理することができるということに過ぎない。
0315名前は開発中のものです。
02/02/01 16:39ID:???はい、次の方どぉぞ
0316名前は開発中のものです。
02/02/01 16:42ID:ilrgY29+0317名前は開発中のものです。
02/02/01 16:45ID:3FgmOISv>君自身の股間のギミックを処理することができるということに過ぎない。
最初は「はぁ?」と思いましたが考えたら激しく笑いました。
服のデータはどうやって消すのでしょうか?なにかソフトが必要なんですか?
0318名前は開発中のものです。
02/02/01 17:14ID:???0319名前は開発中のものです。
02/02/01 19:50ID:???ここは「ゲームプログラミング相談室」なのよ。
頼むからもう他所に行ってくれ。返答もしないでくれ。な。
0320名前は開発中のものです。
02/02/01 23:05ID:yaKNvp5tこうゆう関数が作りたいんです。
Vector TurnVector(Vector source, Vector target, float percent);
sourceベクトルをtargetベクトルにpercentの割合だけ近づけた(回転させた)
ベクトルを返す関数です。なるべく高速なアルゴリズムにしたいのですが、
どうすればいいのでしょうか?
0321名前は開発中のものです。
02/02/01 23:11ID:???0<=percent<=1
[return vector] = (1 - percent) * [source] + percent * [target]
をSSEとか使って高速化したいって話か?
0322320
02/02/01 23:21ID:yaKNvp5t説明不足だったので補足します。
sourceとtargetは長さ1の単位ベクトルで、戻り値も単位ベクトルに
したいんです。つまりsourceからtargetへ回転させる必要があり、
percentでその角度の割合を調整する感じです。
(Vectorはx、y、zのfloatの構造体です。)
0323名前は開発中のものです。
02/02/01 23:34ID:???普通に外積+内積+4元数使った方法は分かってて、それよりも
高速にしたいって事かな?
0324名前は開発中のものです。
02/02/01 23:40ID:???GameProgrammingGemsに載ってたやつだと駄目なの?
0325320
02/02/01 23:45ID:yaKNvp5t自分で考えられる方法は、それぞれのベクトルのyawとpitchを求めて、
角度を計算してベクトルを割り出す、って感じです。
これより速い方法なら大歓迎です。
>>324
どんな内容でした?
0328323
02/02/02 00:25ID:???(4元数)を作って回すってやつ。素のままやると誤差が結構大変な
ので324の言ってる記事みたいな方法が重要になってくる。
4元数についてここで全部説明するのは大変なので、
ttp://www.cc.rim.or.jp/~devilman/3dCoding/3dCoding.html
でもどうぞ。
あと、
ttp://www.satori.org/gamegems/files.htm
の Chapter 2: Mathematics の中の 10Melax フォルダに 324 の
言ってる記事のソースがある。
0330名前は開発中のものです。
02/02/02 00:57ID:i49zbV6rはい、次の方どぉぞ
0331名前は開発中のものです。
02/02/02 00:59ID:???素直にGameProgrammingGems買っとけ。
0332名前は開発中のものです。
02/02/02 01:10ID:???0333名前は開発中のものです。
02/02/02 01:19ID:???12000円ぐらい学生でも何ヶ月か節約すれば十分たまるだろ。
それでも高いと思うなら半額の原書買っとけ。
英語が読めないならプログラマなんてやめとけ。
0334332=323
02/02/02 01:31ID:???もし彼が中・高学生とかだったら、他にも使いたいこといっぱいあるし
そこまで要求するのは可愛そうってもんだよ。
#といいつつ俺は高校生の癖にGem2まで買っちまったがw
0335名前は開発中のものです。
02/02/02 02:01ID:???じゃあ本屋で、該当部分だけ立ち読みしとけ。
0336名前は開発中のものです。
02/02/02 02:12ID:???>#といいつつ俺は高校生の癖にGem2まで買っちまったがw
俺なんか高校生の癖に
「Game Programming Gems 1,2」
「Real-Time Rendering」
「Advanced Animation and Rendering Techniques」
「3D Game Engine Degine」
「Computer Graphics Principles and Practice」
とか買い漁ってます。(藁
洋書には素晴らしい本が多くて幸せです。
0337アフォクサ..
02/02/02 02:31ID:???はい、次の方どぉぞ
0338名前は開発中のものです。
02/02/02 03:25ID:???敵の攻撃、移動パターンで悩んでいます。
特に移動パターンで悩んでいて、自分の思ったように動いてくれません・・・。
基本的な Z といったパターンはどのように動かしたらいいですか?
0339名前は開発中のものです。
02/02/02 04:11ID:???敵の動き用のツールを作って、そこで移動パターンを作るのはどうですか?
0340名前は開発中のものです。
02/02/02 04:23ID:???スクリプトを作る時間が無かったので埋め込み型にしようとしたのですが・・・。
あとFlipのタイミングが合わず、敵の残像が残ってしまう・・・鬱だ逝こう
0341質問はもう少し煮詰めてからお願いします
02/02/02 04:28ID:???はい、次の方どぉぞ
0342名前は開発中のものです。
02/02/02 05:26ID:???今現在、
どういう実装にしていて、
その結果、どう思ったように動いていないのか
具体的に書いてみ。(ソース出せるなら、それでも良いけど)
0343名前は開発中のものです。
02/02/02 05:31ID:???03448945
02/02/02 05:44ID:4W2oJZ3gこれなんかいいと思うのだが……‥‥・・
「いっせー」
/■\ /■\
( ・∀・) ( ´∀`)
⊂ つ⊂ つ
.人 Y 人 Y
し'(_) し'(_)
「のー」
/■\ /■\
(・∀・ ) (´∀` )
⊂、 つ⊂、 つ
Y 人 Y 人
(_)'J (_)'J
「で」
/■\ /■\
( ・∀・ ) ( ´∀` )
( つ⊂ ) ( つ⊂ )
ヽ ( ノ ヽ ( ノ
(_)し' (_)し'
「あげ!!」
/■\ /■\
∩ ・∀・)∩∩ ´∀`)∩
〉 _ノ 〉 _ノ
ノ ノ ノ ノ ノ ノ
し´(_) し´(_)
0345338
02/02/02 15:31ID:uCuDAOXO今現在の状況は・・・。
まず、弾の出し方ですが弾構造体をTAMA_MAX(17)個つくり、その中に
x、y、bmpdata、Activeを作って、それをポインタ参照でActiveじゃない
方からActiveにしています。Activeがfalseになる時は
640+弾サイズになる時です。
そこまではよかったのですが、敵の動かし方で詰まってしましました。
敵キャラデータを構造体(x,y,bmp)にまとめてx,yを変化させていけば
いいと思ったのですが、、、うまく動かなくて・・・。
普通にfor文でまわしたらFlipのタイミングが合わなくて残像が残る。
といった状況です(汗
0346≠342
02/02/02 16:53ID:???>Flipのタイミングが合わなくて残像が残る
よくわからん。 描画と敵の動きが別のスレッドなの?
適当にリンク
www.hh.iij4u.or.jp/~peto/Games/games_top.html
見当違いだったらすまん。
0347名前は開発中のものです。
02/02/02 17:14ID:???>>345
Zに移動だったら、まず変数を1個増やす(例:Stat)
右に移動(Stat==0)→適当なところでStat++
→左下に移動(Stat==1)→適当なところでStat++
→右に移動(Stat==2)→適当なところで殺す
以上、バータリー的に行け
0349名前は開発中のものです。
02/02/03 02:06ID:???0350名前は開発中のものです。
02/02/03 03:45ID:WfOFv5LQ英語サイトのどっかでゲーム用デザインパターンをまとめてあった
サイトがあったと思うのですがどこかわかる方いませんでしょうか?
ブックマークがなくなったので…。
0351名前は開発中のものです。
02/02/03 06:22ID:???0352名前は開発中のものです。
02/02/03 09:52ID:???0353名前は開発中のものです。
02/02/03 11:14ID:???ここ?
0354妄想野郎
02/02/03 21:48ID:???0355209 ◆jUZhK5lw
02/02/05 14:01ID:???敵を動かすのはどうしたらよいのでしょうか?
簡単な2DSTGでお願い致します。
0356名前は開発中のものです。
02/02/05 14:19ID:???>>256 のリンク先のソースは読んだか?
0357209 ◆jUZhK5lw
02/02/05 15:02ID:???タスクとかスプライトとか。
0358名前は開発中のものです。
02/02/05 15:49ID:???スプライト云々は DirectX Graphics のヘルプ読め、タスクなんかは tsk.cpp, h/tsk.h
に実装があるだろ。
0359名前は開発中のものです。
02/02/05 19:25ID:???つーかマルチポストしてんじゃねぇよカスが
0360209 ◆2sDz/Rq6
02/02/06 00:46ID:???0361名前は開発中のものです。
02/02/07 15:26ID:???を参考にして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 を呼ぶことになってしまいます。
これを解決するにはどうすればいいでしょうか?
それとも気にするほどのことではないのでしょうか
0362名前は開発中のものです。
02/02/07 19:39ID:???あなたに指図される筋合いはありません。
何の権限があってそのような事を言うのですか?
0363名前は開発中のものです。
02/02/07 20:36ID:???1. placement new を使う
2. operator new を定義して、自前でメモリ管理をする
あと STL 使っている場合テンプレートパラメタで渡す allocator にも手を入れないと、
完全にはメモリを管理下にはおけない。ただ、そこまでやる意味があるかというと、
俺は無いと思う。
(仕事でメモリの制限が厳しいハードを対象にプログラミングしてる場合を除く)
0364名前は開発中のものです。
02/02/07 22:46ID:???そもそも 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 を自前で用意する。
とか細かい注意点があるけど、そんなものでしょ。
0365名前は開発中のものです。
02/02/08 10:27ID:???0366361
02/02/08 13:50ID:???>>363
operator new はクラスごとに書かなくちゃいけないのかな?
とりあえず何回もnewされるクラスに使ってみて、パフォーマンス
を比べてから、効果が大きいようであれば他のクラスにも使ってみます。
>>364
うう、関数オブジェクトだとかそこら辺は勉強してないのであまりわからないです
もうしわけない。想像していた以上にSTL周りのことは重要になってきそうですね。
Effective STLでも読んでみることにします。
0367209 ◆jUZhK5lw
02/02/08 15:11ID:???0368名前は開発中のものです。
02/02/10 11:26ID:tpvVEAK8みんなアルゴリズムってどうやって勉強してるんでしょうか?
0369名前は開発中のものです。
02/02/10 12:05ID:???何か理由があるのでしょうか?
0370名前は開発中のものです。
02/02/10 13:39ID:???マルチタスクOSでの行儀がなってないとだめということだよね。
無限ループみたいな組み方すると
バックグラウンドのプロセスになかなか処理がいかなくなる。
そうするといろんな弊害が起きることが考えられる。
0371名前は開発中のものです。
02/02/10 14:24ID:???最初から他のアプリケーションと並行して動かすことを前提としないゲームなら、
それでも構わないと思うけどね。フルスクリーン表示なら全然問題ないでしょ。
ただ、ゲームをウィンドウモードで表示しながら Web で検索しようとか思うと、ちょっ
と嫌かも。
0372369
02/02/10 20:12ID:???ありがとうございます。
0373名前は開発中のものです。
02/02/10 23:16ID:???ソフトバンクの「遊びのレシピ」って本は
各種ゲームのアルゴリズムとデータ構造を解説してる。
基礎的で単純なものばかりだけど,行き詰まってる人にはいいかも。
勉強法だけど,私は他のゲームを見てアルゴリズムを想像してるだけ。
0374名前は開発中のものです。
02/02/11 10:28ID:???これがくせになってもう病気。。
GT3見ても何見てもだんだんフローチャートに頭の中になっていく…
0375名前は開発中のものです。
02/02/16 14:06ID:???ワシも同じページ見ながらC++でタスク作ったことがある。
そんときは363と全く同じやり方に行き着いたよ。
メモリ管理は手を抜いて固定サイズメモリ領域の配列に
したけど。
いちいち各クラスのoperatow newを用意する必要はなくて、
タスク基底クラスのoperator newだけ自前で用意して、継承
させてやればOKOK。
関数ポインタの扱いがC++だと厄介なので、TCBの内部では
statusだけ保持して、別途用意した関数ポインタテーブルを
引くようにした方が楽だと思う。
ttp://www.emit.jp/prog/prog_cpp0.html
この辺参照。
0376名前は開発中のものです。
02/02/17 10:19ID:???0377名前は開発中のものです。
02/02/17 20:54ID:???> 関数ポインタの扱いがC++だと厄介
直接メンバ関数へのポインタを使わずに、多態を使えば良い。細かいことは
コンパイラが面倒見てくれるぞ。
0378名前は開発中のものです。
02/02/18 02:33ID:???固定から切り出しのソースコードが乗っているホームページ有りましたらキボンヌ。
0379名前は開発中のものです。
02/02/18 03:50ID:???operator new() の使い方が分からんの、それとも static なブロックからデータを
切り出す方法がわからない?
C++ chunk operator new あたりで検索かけて見つけたページ
http://www.relisoft.com/book/tech/9new.html
0380名前は開発中のものです。
02/02/18 10:32ID:???0381名前は開発中のものです。
02/02/19 01:23ID:???placement new (operator new())に関しては、
More Effective C++ を読むのが良いかと。
固定から切り出しについては、確保した固定メモリ領域内の
アドレスを引っ張ってきてキャストするだけでいいんだが・・・
(もちろん管理は自前でやる必要があるけど)
で、任意サイズのメモリを切り出せるようにするとフラグメン
テーションやらガベコレやらめんどくさくなるんで、手を抜くな
ら切り出すメモリのサイズを固定にしちゃう、と。
その場合、オブジェクトのサイズが切り出し単位のサイズを
超えないようにすることだけ注意するべし。
0382名前は開発中のものです。
02/02/19 01:44ID:???基底クラスのexec()は仮想関数にしといて、各クラスの関数
ポインタはstaticに定義したメンバ関数ポインタテーブルから
引く、と。
0383名前は開発中のものです。
02/02/19 03:22ID:???イメージがつかめんので、も少し詳しい解説を希望。
俺は
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();
}
};
って感じで作るのも良いかと考えてた。
0384382
02/02/19 23:29ID:???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は使ってませんでしたが、基本的には
同じ方式です(よね?)
0385384
02/02/19 23:33ID:???鬱。
すまそ。
0386名前は開発中のものです。
02/02/19 23:51ID:???なるほど。各タスクの「中」で状態遷移させるのに、メンバ関数ポインタを使おうと
いう話ですね。理解しました。
0387名前は開発中のものです。
02/02/20 11:45ID:???0388名前は開発中のものです。
02/02/20 18:02ID:???1. 本を読む
2. コードを読む
3. プログラミングする
いじょ。
0389名前は開発中のものです。
02/02/20 18:50ID:???作りたいものを作る
いじょ
0391名前は開発中のものです。
02/02/20 21:03ID:???じゃ、知らないことを書いてみれば?
0392名前は開発中のものです。
02/02/20 21:57ID:???プログラミングに王道はないんだよ…
0393名前は開発中のものです。
02/02/20 22:06ID:???この言葉かっこいいな・・・
0394名前は開発中のものです。
02/02/20 22:14ID:???プログラミングを「覚えよう」という発想が間違い。
プログラミングは「理解」するもんだよ。
まぁ、日本の学校教育が「覚える」主体で「理解」を
求めてないから、どうしようもないんだけどねぇ。
0395名前は開発中のものです。
02/02/21 01:07ID:???0396名前は開発中のものです。
02/02/21 02:02ID:???まずはプログラムを書く。作りたいものならなお良し。作らなければならないもの
なら更に良し。
んで、わからないことにぶち当たったら、自分で悩んで調べて何とかする。
それでもどうにもならなかったら、予め質問内容をきちんと調べて、自分がどこまで
わかっていてどこがわかっていないかを明確にした上で先達に聞く。
そして、書きながら、もしくは書いた後で、より良いコードにするためにはどうすれ
ばいいのかを悩んで調べて改善していく。その積み重ねしかないよ。
「どうすればいいですか?」という、聞かれた方がYesかNoで答えられないような
質問をした時点で負け。
0397名前は開発中のものです。
02/03/05 04:05ID:???0398名前は開発中のものです。
02/03/05 10:37ID:???4.自分のコードを直す
つーか、糞コードを糞なままにしてると、上達せん。
0399名前は開発中のものです。
02/03/05 20:05ID:???でも、ゲームをつくることを最優先にしないと、
コードばっかいじって永遠に完成しなかったりする罠。
つくっては壊し、つくっては壊し...
0400名前は開発中のものです。
02/03/06 01:47ID:???で、そのうちに
1 行き当たりばったりで作るのではなく、事前に設計する
ことを覚える、と。ちなみに、その先は
2 設計ができるようになると、楽しくてはまり、過剰設計の罠に陥る。
3 リファクタリングを身に付ける。
と続く。
0401名前は開発中のものです。
02/03/06 17:03ID:???ちなみに俺は無期限だと完成できないタイプ。
0402名前は開発中のものです。
02/03/07 09:55ID:???この段階に入ってからが本番。学ぶべき事が格段に増える。
・モジュールやデータ構造といった、設計関連の知識
・ソートやサーチなどの、アルゴリズムに関する知識
・パーティクルや画像合成など、エフェクトに関わる知識
・UIやツール作りなどの、人間工学に関わる知識
0403名前は開発中のものです。
02/03/10 15:29ID:???プログラムに限らず数学とか頑張って手順を説明してるのに
「とりあえず答えは何?」と聞かれるとすげー腹立つ…。
(しかもそういう説明する奴は嫌われる、と(ワラ))
>>402
俺は特にプログラム初心者のゲームに欠けてるのはモジュールだと思うんだよね。
アルゴリズムとかエフェクトに関する知識がいくらあっても、
ソースが膨大化して何がなんだかわからなくなってはいお疲れみたいな。
0404名前は開発中のものです。
02/03/10 17:25ID:???0405con tofu ◆iOTveYXw
02/03/10 21:40ID:???この辺り、すごく参考になりました。特に >>402 辺り。
皆さん、ありがd
ほかには
・プロセス/スレッドやメモリ等、OS寄りのことについて
もやっておくと、頭スッキリして楽になるように感じます。
0406名前は開発中のものです。
02/03/12 11:15ID:3GjIfP2m0407名前は開発中のものです。
02/03/12 11:20ID:???2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数:95432人 発行日:2002/02/12
どもども、ひろゆきですー。
こないだお伝えしました「佐々木さん」の件ですが、実を言いますと佐々木さんだけが悪いってわけじゃないんですー。佐々木さんはなにもいきなりドアを蹴って騒いだりしたわけじゃないんですー。
佐々木さんは最初は極めて紳士的に接してきたんですけど、おいらがドア越しに生意気な態度をしちゃったもんだから佐々木さんはキレちゃったんですー。。。
ご承知のとおり、おいらってばメルマガでは自分の都合のいいことを、都合のいいようにしか報告しませんが、本当はおいらにもたくさん非があるんですよー、、、えぇえぇ。。。
INSIや谷澤動物病院が裁判に持ち込んだのも、実はおいらの態度に問題があったんですよねー。。
おいらはこれまで2Ch被害者の襲撃から逃れるために、キックボクシングをやっていたなんて嘘を吐いてきましたが、本当はキックボクシングどころか卓球すらやったことないんですー。
おまけに両親とお姉ちゃんにはさんざん甘やかされて育ってきたので、いまいち礼儀というものを学べなかったようなんですー。うぅ、、、
もしなにかスポーツにでも打ち込んで、ちゃんとした両親に育てられてれば、こんな陰湿な人間にはならなかったと思うし、こんなに歯糞もたまらなかっただろうと思う今日この頃ですー。。。
ところでおいらって平安貴族みたいな顔してますかねー?
こないだ埼京線で女子高生の集団に「麻呂だー」「超キモイー」って言われちゃったんですけど。。。
んじゃ!
0408名前は開発中のものです。
02/03/14 19:41ID:???0409名前は開発中のものです。
02/03/29 13:45ID:???0410名前は開発中のものです。
02/04/13 11:43ID:???0411名前は開発中のものです。
02/04/13 11:56ID:???なんか、俺がいまそんな感じだ。。
興味が多方面に分散して、自分が手に負えなくなってきたよ。
これはこれで楽しいんだが(w
ミンナ、ソウナンダネ…
0412名前は開発中のものです。
02/05/07 23:19ID:R1rOQJWc0413名前は開発中のものです。
02/05/08 14:35ID:???どっちを先にインストールした方が良いとかってありますか?
OS は Win2K です。
0414名前は開発中のものです。
02/05/08 15:38ID:???DXは入れる必要ない
0416RE:
02/05/08 23:58ID:y5yWHAGQ良く似た
DanceDancerevolutionもどき
作りたいんですが
作る前に
どんな知識と技術が必要ですか?
0417名前は開発中のものです。
02/05/09 00:07ID:???法律の知識と裁判で戦う技術。
0419名前は開発中のものです。
02/05/09 00:55ID:???まず作り始めろ。
そのうちにどんなことが必要かわかってくるはずだ。
0421名前は開発中のものです。
02/05/09 07:50ID:???ちょっと笑った。
0422ゲー作初挑戦@ ◆ByBD3yHE
02/05/09 21:49ID:9rTAdl0c同人ゲーですが。
かと言って絵描きの自分では、プログラマーを集うしかなく、
絵描きのページで募集したところで集まらず。
落ち物ゲーム+(間のストーリー流れを)ADVで作りたいのですが、
何か良いスクリプトないでしょうか?
ある程度までは勉強する覚悟はもちろん有りです。(C言語など一切触ったことありませんが)
また、技術者を募る良い場所があれば指南していただきたいのですが…。
もちろん報酬はお礼程度ですが有りです。
0423名前は開発中のものです。
02/05/09 21:53ID:???メンボスレ
0424ゲー作初挑戦@ ◆ByBD3yHE
02/05/09 22:15ID:PutN4UaM0425名前は開発中のものです。
02/05/09 22:36ID:???おそらくこれだろ
☆メンボスレ☆(メンバーボシュースレッド)
http://game.2ch.net/test/read.cgi/gamedev/1005323011/
良いひとそうだし(スレ違いの質問してるが)、暇なら手伝いたいがのぉ。
とにかく同人作りは、相方選びが一番重要なりよ。…いやマジで(´・ω・`)
0426ゲー作初挑戦@ ◆ByBD3yHE
02/05/09 22:42ID:???思いっきりスレ違いですたな。
頑張ってオモロイ技術者をゲットして楽しく作ってきまつ。
0427名前は開発中のものです。
02/05/10 22:12ID:lw3De0y20428名前は開発中のものです。
02/05/11 01:00ID:???http://natto.2ch.net/test/read.cgi/2chbook/1020693668/
0429名前は開発中のものです。
02/05/11 13:22ID:???VBから使ってるんですが、
プライマリサーフェイスとバックサーフェイスの
フリップが上手くいきません。
っていうか、概念がいまいち分かりません。
バックサーフェイスに画像転送
↓
フリップ
↓
ループ
させているんですが、バックサーフェイスに画像を書き込めていない見たいなんです。
どなたか分かる方いませんか?
0430名前は開発中のものです。
02/05/11 17:31ID:npO7xgR2Windowモードでフリップしてないよね?
0431名前は開発中のものです。
02/05/11 20:40ID:???>バックサーフェイスに画像を書き込めていない
ならFlipとは別問題じゃない?
0432名前は開発中のものです。
02/05/11 21:24ID:???>>431さんの言うとおり、フリップとは一応関係ありませんでした。
クリッパーの設定がおかしかったみたいです。
クリッパーを外したらちゃんと書き込めました。
で、結局クリッパーの使い方は分からず終いでした。
ついでに、320,240のフルスクリーンです。
っていうか、クリッパーの使い方教えてください(;´Д`)人
検索してみましたが、ページが一箇所しか見つからず、
しかも、そこに書いてある通りにやっても上手くいきませんでした。
0433名前は開発中のものです。
02/05/11 22:04ID:???0434名前は開発中のものです。
02/05/11 22:06ID:???って?
DirectXの?
あるの?
0435名前は開発中のものです。
02/05/11 23:14ID:???0436名前は開発中のものです。
02/05/11 23:34ID:???探さないでください。
0437名前は開発中のものです。
02/05/12 00:21ID:???安心してください。
0439名前は開発中のものです。
02/05/12 01:13ID:???コンパイラ :Borland C++
SDK :DirextX 7,DirectX7a
症状 :プログラムを起動したら「このプログラムは不正な・・・」
MAINのエラーです。DDRAW.DLLなどのメッセージ。
プログラム :DirectDrawのオブジェクトを作る簡単なもの、
DirectDrawCreate,DirectDrawCreateEx共にエラー、戻り値も帰ってきてない模様
コンパイラに付いてきたライブラリ(DirctX3)なら動きました。
SDKのサンプルは動きました。
DirextX :DirextX8.0
0440名前は開発中のものです。
02/05/12 01:38ID:4YN9DEeoDirectXができません、って・・・(sigh
COFFとかOMFとかでgoogle検索しる!
0441439
02/05/12 01:41ID:???0442439
02/05/12 01:51ID:???0443439
02/05/12 01:59ID:???0444名前は開発中のものです。
02/05/12 04:15ID:???implib.exeでddraw.libを作り直してください。
0445名前は開発中のものです。
02/05/12 05:27ID:rvy9Ukfgそれは貴女の心です。
0446名前は開発中のものです。
02/05/12 09:53ID:VspODHGoc++buliderとWindows付属のツール(ペイントなど)だけでゲームの製作は可能ですか?
0447名前は開発中のものです。
02/05/12 09:55ID:???可能
0448439
02/05/12 09:59ID:???必要なのはIncludeFileだけで、
SDKの中のライブラリは使わなくていいんですか?
0449名前は開発中のものです。
02/05/12 09:59ID:VspODHGo0450名前は開発中のものです。
02/05/12 12:56ID:???それつかってゲーム作ってる人います?
0451名前は開発中のものです。
02/05/12 15:13ID:???0452名前は開発中のものです。
02/05/12 15:25ID:W8mXt2BA0453名前は開発中のものです。
02/05/12 16:56ID:???0454名前は開発中のものです。
02/05/12 17:40ID:???0455名前は開発中のものです。
02/05/12 17:56ID:???0457448
02/05/13 22:44ID:???IMPDEF ddraw.def c:\windows\system\ddraw.dll
でモジュール定義ファイル作って、
IMPLIB ddraw.lib ddraw.def c:\windows\system\ddraw.dll
で作ったファイルをリンクしたら動いた。
けど、このファイルがDirextX7で動くか心配だ・・・
0458440
02/05/14 01:21ID:QkMxU4bATHX!
ま、正直なところ、DirectXであれこれやるならVC++を使うことをお薦めするが・・・。
0459名前は開発中のものです。
02/05/14 06:42ID:???それでいいと思うよ。
0460名前は開発中のものです。
02/05/14 08:45ID:???だったらVC++とかDelphiのライブラリ内で作っちゃった方がいい。
0461名前は開発中のものです。
02/05/14 14:24ID:???そりゃそうだ。
マインスイーパ作るのにDirectXはいらないな。
適材適所。
0462名前は開発中のものです。
02/05/14 21:31ID:gp9yAFEg0463名前は開発中のものです。
02/05/18 20:47ID:OvBslwUs0464名前は開発中のものです。
02/05/19 11:39ID:l8bBGy5I映画で懲りたかと思えばコレか、
おまえらゲームプログラマの質なんてたかが知れてる。
次はどんな手で笑わせてくれるんだ?
サーバが重くてつながらないのにチョコボ大陸横断レースでもするのか?(藁
0465名前は開発中のものです。
02/05/19 11:41ID:???0466名前は開発中のものです。
02/05/19 14:58ID:???0467名前は開発中のものです。
02/05/19 15:25ID:???0468名前は開発中のものです。
02/05/19 16:38ID:5QVs0KEUすいません、STGを作るの初めてなんで疑似タスクで質問させてください。
疑似タスクの仕組みとしては LogicianLoad を参考にさせてもらっています。
----------------
Q: 1フレームの中でタスクの優先順位を何回も変更する場合ってありますか?
優先順位を変更するならば、タスクをリストに登録する際どうやってその位置を見つけますか?
リストの先頭からざーっとなめてるんですか?
----------------
とりあえず、私としては以下のようにしてるんですが、よくないところとかあったら教えてください。
----------------
固定長ワークの配列を作る。要素数 256個とか。
タスクは、ワークへのポインタを持つ。
いくつものタスクがおなじワークへの参照をすることがあるので、ワークには参照カウンタを持たせる。
タスクのリストへの登録は map<優先度, list<タスク *> > な優先度マップを用意して、
優先度マップ[優先度].push_back(&タスク);
としてリストに登録。タスクの優先度変化とか、チェンジタスクとかは同じワークを参照するタスクを
つくって対応。状況に応じて自殺。
----------------
0469名前は開発中のものです。
02/05/19 18:12ID:???適切なソートアルゴリズムを選択すれば良い。
この場合、バケットソートが丁度良いかもしれない。
バケットソートについてはgoogleで検索して下さい。
0470hosoku
02/05/19 18:16ID:???要素を追加する位置をサーチする場合、そのコストはゼロ。
0471hosoku
02/05/19 18:18ID:???各優先順位の先頭(or最後尾)ノードへの参照テーブルを用意する。
0472hosoku
02/05/19 18:25ID:???外人相手には100%通じないので、その辺も気を付けて。
0473468
02/05/19 20:33ID:???なるほどです。やってみます。
0474名前は開発中のものです。
02/05/20 03:37ID:???1 移動
2 衝突判定
3 オブジェクトの生存チェック
4 描画
こういう風に順番を分ければ、処理順が重要になる事って
あまりない気がするんですが・・・
0475名前は開発中のものです。
02/05/20 06:46ID:???外人相手だと何と言えばいい?
0476名前は開発中のものです。
02/05/21 01:09ID:0jVRIemAその1〜4の順番分けをすることが、まさに処理の優先順位をつけることだと思うのだが・・・。
もちろん、メインループ内でそれぞれの処理を行う関数を順に呼ぶようにしても作ることは
できるんだけど、その辺をフレキシブルに変更できるようにするための仕掛けがタスクな
わけじゃん。
0477名前は開発中のものです。
02/05/21 01:15ID:???優先順位と言えば優先順位みたいなモノだけど、
474で書いたように呼ばれる順番を保証しないと、
(好き勝手な優先順位で好き勝手に死んだり生まれたり)
安全と最適化を両立しづらくないですか?
0478名前は開発中のものです。
02/05/21 01:43ID:???チーム内で決めるのがふつうなんじゃないの?
0479名前は開発中のものです。
02/05/21 14:08ID:lOTv7vN.できる様になったのですが、ここではたと詰まってしまいました。
あるアニメーションセットから、別のアニメーションセットに移る時
一般にどのような補間がなされているのでしょうか?
とりあえず自分でも色々試したのですが、一瞬で移行すると場合によっては
不自然だし、現在の位置から移行先の最初のフレーム位置まで
適当に補間をかけてみたら、なんとも奇妙な動きになってしまう始末で(- -;
……まさか、同じ座るという動作でも、移行前のものにあわせて
何パターンもアニメーションを作るのでしょうか((((; ゚Д゚)))
なんとも手詰まりで…アドバイスいただければ幸いであります。
0480名前は開発中のものです。
02/05/21 15:05ID:???つなぎの姿勢をかませるとか、
そこら辺はノウハウの問題なんじゃないかと思うんですけど
状態遷移図みたいなのを書いて検討してみるしか。
0481480
02/05/21 15:06ID:???しか。→とか。
0482名前は開発中のものです。
02/05/21 15:58ID:???0483名前は開発中のものです。
02/05/21 16:02ID:???モーションB start<------+------------------->end
^0.0 ^1.0
この0.0〜1.0の区間を補完すればいいんでない?
0484名前は開発中のものです。
02/05/21 16:04ID:???0485479
02/05/21 17:14ID:???…勘違いして、ずっと別のスレを監視してました(;´Д`)
>>480
なるほど!後のパターンを増やすのではなく、つなぎを噛ませるのですか。
うー、しかし同じアニメーションからの遷移でも、どのコマから移るかによって
いろいろ考えなきゃなのかな…。しかし完璧を求めるなら、これをやるべきですよね。
>>482
線形補間でやると、組み合わせによっては突拍子もないのがでちゃうんです。。
たぶん私のモーションの作り方が悪いんですが…でもこれが手軽で良いですよね。
>>483-484
ややや、つまり移行時間を決め、その間のAとBを合成しつつ、
だんだんとAの影響を弱め、Bの方を顕在化させるわけですね!
むはー、プログラム的にも解決できるなんて(*´Д`)
皆様のレスに基づき、それぞれのアニメーションにあった方法をあてて
いきたいと思います。一人じゃ絶対思いつかない事ばかりで…本当に大感謝です〜。
0486名前は開発中のものです。
02/05/22 01:58ID:emKWkvCgその他、キーワードは Catmull-Rom スプラインかな。
あとは自分で調べてくれ。
0487名前は開発中のものです。
02/05/22 16:22ID:wmr.hUOIいいホームページ知りませんか?
ちなみにVISUALBASICで作ろうとおもいます
048899
02/05/22 16:35ID:???〇デリバリーヘルス〇デートクラブ〇女性専用ホストクラブ〇
〇ハードSM奴隷クラブ〇レズビアン倶楽部〇ホモ・オカマ倶楽部
〇変態痴女と遊ぶ会〇痴漢・覗き趣味の会〇変態同好会・各種!
●楽しく遊べます! 090-8002-8356番
-----------美男・美女会員など多数在籍中-----------
http://www.mttdocomo.jp/
-----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
-----レズビアン・スタッフ●ホモスタッフ●女性専用ホストスタッフ同募-----
http://www.mttdocomo.jp/
------------------------------------------------
0489名前は開発中のものです。
02/05/22 17:15ID:DJLFFQIk普通キャンセルだろ。
0490名前は開発中のものです。
02/05/22 17:46ID:???DOA3
0491名前は開発中のものです。
02/05/22 19:15ID:???今時キャンセルなんてやってるのは時代遅れのメーカーぐらい。
0492名前は開発中のものです。
02/05/22 23:37ID:???0493名前は開発中のものです。
02/05/23 14:44ID:???0494名前は開発中のものです。
02/05/23 16:55ID:???0495名前は開発中のものです。
02/05/23 18:38ID:???mouchottoatamatukaouze
0496名前は開発中のものです。
02/05/23 20:02ID:???不自然になっちゃうなら補完式を考え直すべき
0497sage
02/05/23 22:57ID:FUqKSSOQ補間もキャンセルとごまかすための手法の一種にすぎないのだが。
だから、どちらが優れているなどないと思われ。
case by case。
一つのことに凝り固まるのは、頭悪いぜ。
0498名前は開発中のものです。
02/05/23 22:58ID:???俺が頭悪かったようです。
逝ってきます。
0499名前は開発中のものです。
02/05/23 23:06ID:???0500名前は開発中のものです。
02/05/24 00:29ID:???あんまり、本当の事を言うと話が止まるので
わかっていてもしらんぷりしとけよ(ワラ
0501名前は開発中のものです。
02/05/24 01:21ID:???通路ばかりのダンジョンをランダムで生成したいのですが、
唯一見つかったアルゴリズムでは綺麗なダンジョンが作れませんでした。
トンネルを掘るようにしてダンジョンを作るアルゴリズムを使うと
綺麗なダンジョンが作れる、と読んだのですが、参考になる
情報などがありましたら教えていただけないでしょうか?
よろしくお願いします。
0502名前は開発中のものです。
02/05/24 01:54ID:???このページ見た?なんか凄そうだけど。
色々なパターンが紹介されているみたいだし。
0503416(HSP) ◆HoSW/FCI
02/05/24 03:53ID:btbuBamk0が通路で1が壁だとすると、まず、n×mの広さを1で全部埋めます。一番外側だけ0にすると範囲チェックしなくて済むから楽かも。
で、親座標と子座標を用意して、親は左上から右下まで2ステップずつ捜査させます。子は親からランダムに4方向を選んで移動するわけですが、これも2ステップずつ移動させます。子の移動先が壁だったら掘って、またランダムに移動。
移動予定先が全部通路で選択肢が無い場合は、子の移動は終了して、親を1つ進めます。
そしてまたその親座標から子を移動させて動けなくなるまで掘っていく。これを最後まで繰り返すと解が1つだけの迷路ができます。
同様の方法で2つの接しない壁を作っていくという方法もありますが、上記のほうがシンプルかも。
0504416(HSP) ◆HoSW/FCI
02/05/24 04:06ID:???すでに掘った場所には移動しない、という判定自体は同じです。この場合の分岐方法は、掘り進んでいく過程で分岐点を複数置いていく(記憶していく)ことになります。
記憶しないで矩形の範囲単位で掘れるだけ掘るという方法もありますが、洞窟っぽくはならないでしょう。また、掘っていく過程で矩形の大きさを変えれば、より自然の洞窟に近い迷路ができます。
0505名前は開発中のものです。
02/05/24 06:13ID:???アルゴリズムを作れそうにはないけど
パズル的に楽しませていただきました。
>>503
そのアルゴリズムをベースに作ってみようかと思います。
ありがとうございました。
0506名前は開発中のものです。
02/05/24 06:23ID:???いくつか作っておいて、つながるように並べるのもあり
0507やさしい
02/05/27 01:43ID:???プログラマを募集してます
われこそはと思うつわものは覗いてください
http://ex.2ch.net/test/read.cgi/shar/1022428219/
0508名前は開発中のものです。
02/05/27 22:56ID:???0509名前は開発中のものです。
02/06/25 01:31ID:???0510オhル艦長
02/06/25 14:18ID:J1CGzihY0511名前は開発中のものです。
02/07/24 12:32ID:???敵の番になったら、自分のいるマスにむかって1歩(1マス)近づく、
という感じにしたいのですが、ちょっとなやんでいます。
敵のキャラと自分のキャラの座標を比較して、
敵のx座標が自分のx座標より大きければ1マス分増やす、
y座標が自分のy座標より小さければ1マス分減らす、というかんじです。
ifやSelect Case の入れ子でやってみたんですが、
行がながーくなってしまって、
どうもこれでは上手いやり方ではないような気がします。
もっと効率の良い考え方がありましたら教えていただければと思います。
説明がへたですみません。。
0512511
02/07/24 12:49ID:Ml.IF7uc0513名前は開発中のものです。
02/07/24 12:54ID:???どうして長くなったのかわかんないけど、行がなが〜くなったらそれぞれの処理を分割するしかないのでは?
ifの条件文が長い場合はあらかじめ比較するモノを変数に入れておくとか。
if〜endifはつかってるよね?
手法としては、移動する処理自体を1つの関数にしておいて後から高速化するのが望ましいかも。
とりあえず遅くてもゲーム自体はできるから。
0514名前は開発中のものです。
02/07/24 12:56ID:???>敵のx座標が自分のx座標より大きければ1マス分増やす、
>y座標が自分のy座標より小さければ1マス分減らす、というかんじです。
敵のx座標が自分のx座標より小さい場合や
y座標が自分のy座標より大きい場合は考えなくていいのか
俺ならとりあえず移動処理をブラックボックスにしてほっとく
あとからいくらでも高速化できる(かもしれない)からな。
0515名前は開発中のものです。
02/07/24 13:08ID:???このスレどうよ
http://game.2ch.net/test/read.cgi/gamedev/1024902432/l50
0516511
02/07/24 13:22ID: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 文がふえてしまって
ながくなっちゃってるんですよね。これをもっとどうにかして
みじかくならないかなあと。。。
>俺ならとりあえず移動処理をブラックボックスにしてほっとく
ふむふむ、さきにほかのところを完成させちゃえー、ということですね。
たしかに、、、ほかにも考えなきゃいけないとこがいっぱいあるんで
そっちもがんばりたいとおもいます。
0517511
02/07/24 14:00ID:Ml.IF7ucぱにくってた頭が少しすっきりしたみたいです。
移動処理のとこの致命的なミスを発見し、うまくなおせました!
(行の長さは相変わらずながくなっちゃいましたが)
今は敵が死んだときの処理をがんばってます。
0518名前は開発中のものです。
02/07/24 17:42ID:???> そうなんです!パターンのぶんだけ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倍すればいい。
0519511
02/07/24 19:40ID: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で割らずにすむので
かなりすっきりできますね!!!
これからさっそくかきなおします。
0520名前は開発中のものです。
02/07/25 01:52ID:???absとsgn関数をうまく使え
if abs(敵のx座標-自分のx座標) < 1 then 敵のx座標にsgn(敵のx座標-自分のx座標)を加える
Y座標についても同じ
0521511
02/07/25 02:23ID:VlAcWhO2>>520
>absとsgn関数をうまく使え
今 abs関数とsgn 関数調べてきました!
絶対値、、、中学のときに習ったような、、自分の不勉強さに身がちぢこまります。
理解できてないままソースにコピペではあまりにも恥ずかしいので
いまから紙にかいて考えてみます。
あれれ?と思うようなとこはたくさん有りますが
ゲームのおおまかなソースが書きあがったので、
明日は他の部分ももっと効率的な書きかたができないか考えてみます。
0522名前は開発中のものです。
02/07/25 12:19ID:???お前は効率的な書き方をマスターしたいのかゲームを完成させたいのかどちらだ?と
小一時間(以下略
慣れないうちはきっちり動くものを作り上げてから速度&効率のチューニングをやれYO!
とマジレスもしてみるテスト
0523チューニングなんて後から
02/07/25 12:51ID:???↓
ちょっと効率のいいアルゴリズム発見
↓
それにあわせて書き直す
↓
さらに効率のいいアルゴリズム発見
↓
それにあわせて書き直す
↓
さらに効率のいいアルゴリズム発見
↓
:
:
0524511
02/07/25 21:22ID:???>>522
>お前は効率的な書き方をマスターしたいのかゲームを完成させたいのかどちらだ?
ゲーム完成させたいです!
>慣れないうちはきっちり動くものを作り上げてから速度&効率のチューニングをやれYO!
そうですね、まだ直さなきゃ行けないとこがいぱーいあるのに
綺麗なソースをかきたいなんて100年早かったです。。反省。。。
>>523
うう、完成しないままループしてしまいますね。。。。。
きっちりさいごまで仕上げることに専念します。
今日は移動用の選択カーソルの不具合をなおします。
0525名前は開発中のものです。
02/07/25 22:06ID:???報告ならここにしろ
■自主製作ゲーム:開発状況報告スレ■
http://game.2ch.net/test/read.cgi/gamedev/1005143186/l50
0526西村トオル、ナイスですね〜
02/07/26 20:35ID:???カメラアングルは、女優(対象)を後ろから捉えています。
そこで質問なんですが、
イベント中とかにゲームの動きを止めて
カメラだけを動かして女優(対象)を舐め回すように撮影したいんですが、
(取り合えず、女優を中心に球を想定して、常に女優の方を捉えつつ
その球面上をカメラが移動って方向で)
何か良いカメラの動きのアルゴリズムとか知りませんか?
やはり、監督自身(自分で)動く軌跡(座標)を切ってやらないといけませんかね?
0527名前は開発中のものです。
02/07/26 22:27ID:???ベジェ曲線みたいにすりゃいいんじゃない?
0528名前は開発中のものです。
02/07/28 03:47ID:???検証もせずに、他人のコード採用してたら、それこそあぼーんだよ。
解決案が必要なのに、エゴに凝り固まって、他人のソース見ることも出来ないのは、もっと重傷だけどね。
まあ、ゲームに関して言えば、コーディング技術云々より、ゲーム全体としてのデザインの方が重要だから、
そんな小さなことにこだわるな、というのが正解かもね。
0529名前は開発中のものです。
02/08/15 17:23ID:???んなこたーない
0530名前は開発中のものです。
02/09/15 11:53ID:???基底クラスを書いて、音や絵やその他のデータなんかも
まとめて管理してるんでしょうか?
0531名前は開発中のものです。
02/09/15 19:09ID:???PCの話で良い?
データのI/Oはインタフェースに肉付けしてく形で作ってる。
具象クラス側で生ファイル、圧縮ファイル、ネットワーク、リソース、
各I/O方法にあわせる事が出来るし、プロトタイプ作ってる途中は
生ファイルI/Oだけあればよいし。
0533名前は開発中のものです。
02/09/19 05:00ID:N2qPvY6Q今は、各々のキャラクタのクラスがサーフェスやアニメーションの情報も持っていて、
なんとなく不細工な感じがするので、見た目の情報を切り分ける事にしたんですが、
それを一元管理するクラスの設計が出来ません。
今動いてる物をいじるんだから、それなりに便利にしようと思い、
確保したサーフェスやアニメーションの情報や、今表示中のスプライトの情報を、
管理クラスの寿命と共に廃棄できるようにしようとしたり、
サーフェスやアニメーションの情報を削除しても、それをまだ使用してるスプライトがあったら、
そのスプライトが削除される時までは、保持されるような物を作ろうとしました。
けれど、実装してもうまくいかないし、
整理しようと紙に書いていても、頭が混乱してきました。
みなさんは、こんな場合にはどう設計されていましたか?
0534533
02/09/19 05:03ID:???すみません。
0535名前は開発中のものです。
02/09/19 05:10ID:???0536名前は開発中のものです。
02/09/19 05:14ID:???◆オブジェクトクラス
スプライトへのポインタ(場合によってはテーブル)
各種パラメータ
_______
◆スプライトクラス
対象サーフェスへのポインタ
サーフェス上のRECT
現在位置
アニメーションありの場合RECTのテーブル
_______
◆サーフェースクラス
サーフェス実体
スプライトからの参照カウント
という風に階層分けをしてうまく作った。
0537536
02/09/19 05:18ID:???スプライトクラスを
◆スプライトクラス
現在位置
スプライト定義クラスへのポインタ
表示しているRECTのindex
◆スプライト定義クラス
対象サーフェスへのポインタ
RECTのテーブル
と分ける。
0538名前は開発中のものです。
02/09/19 05:18ID:???私がやったときは、各キャラのデータを保持するクラスを作って
それとは別に「キャラのデータを元に画面を組み立てる」関数を作った。
ハードコーディングでキャラの外見を決める場当たり的な方法だけど、
小規模なら混乱を最小限に防げてプラクティカルだよ。
0539名前は開発中のものです。
02/09/19 05:35ID:???シーン構築時に必要な物をすべて読み込んで、
終了時にまとめて削除する方が速いしスマートじゃね?
0540533
02/09/19 05:42ID:???早朝からありがとうございます。
リファレンスカウンタは、調べていてる時に見つけて
>>536 さんのような感じにしていたんですが、
管理するクラスと、それに管理されるクラスとの関係を
上手くまとめられませんでした。
ゲーム開始前の時点で、管理クラスにサーフェスやアニメーションなんかの
描画に関係する物を登録して、終わった時には、使っていたほうは意識せずに、
管理クラスが、自動的に廃棄してくれるようにしようとしたんですが、
>>533 で書いたように、混乱して終わりました。
ここらへんの管理クラス回りの設計を質問したかったんですが、
文章が長い上に要点がボケてました。すみません。
0541533
02/09/19 06:08ID:???>>537
そうやって定義を分けておくと、同じ種類のキャラクタのスプライトで使いまわせますね。
参考になりました。
>>538
>「キャラのデータを元に画面を組み立てる」関数
が私が最初にとっていた方法だと思います。
その場合のキャラのデータとは、見た目やゲーム内での状態を一つにまとめて
表してる物の事ですよね?
違ってたら、すみません。
>>539
> シーン構築時に必要な物をすべて読み込んで、
> 終了時にまとめて削除する方が速いしスマートじゃね?
そうしたかったんですが、このへんが、よくわからなかったところなんです。
必要な物を管理するクラスの設計を、触りだけでも解説していただけませんか?
0542名前は開発中のものです。
02/09/19 12:33ID:???読み込み失敗時のエラー処理が繁雑になるから、ゲーム開始時点で
まとめて読んでしまった方が良いかも。データ量にも依るけど。
0543名前は開発中のものです。
02/09/19 15:44ID:0CTGoUX30544名前は開発中のものです。
02/09/19 15:57ID:???トランスフォームやライティングやテクスチャやブレンディングなどの頂点処理機能のこと。
プログラマブル頂点シェーダは、いままで処理系(Direct3Dなど)の
固定機能のみであったのに対して、これらの機能をプログラムできるってやつ。
0545名前は開発中のものです。
02/09/19 16:04ID:39QNxA7D0547名前は開発中のものです。
02/09/20 02:00ID:???イイ!
0548名前は開発中のものです。
02/09/20 04:38ID:???0549名前は開発中のものです。
02/09/22 18:44ID:lBYio+jt普通の人間に近い画角を設定すると、至近距離での物の見え方が
おかしいように感じます。
0550名前は開発中のものです。
02/09/22 19:54ID:???今のところ現実的な解決方法が見つかってないと思う。
至近距離のものは、目には歪んで見えているのに真っ直ぐのものを
真っ直ぐと認識できる。これは脳みそが補正しているからです。
至近のものをなんとかして正しくゆがめて表示すると、
それはそれで不自然に感じるはず。
なぜなら、脳が補正しないから。
0551名前は開発中のものです。
02/09/22 19:57ID:???最大の問題は、目からディスプレイまでの距離が離れているから、
自然な映像は目からディスプレイよりも近い映像を表示し得ない
のです。
ヘッドマウント式のディスプレイであれば、
正しくゆがめるとちゃんと認識できると思う。
0552名前は開発中のものです。
02/09/22 22:18ID:???HMDは焦点距離を1mくらいに設定してるので、
結局うまく認識できないと思う。
0553名前は開発中のものです。
02/09/22 22:28ID:???0554名前は開発中のものです。
02/09/22 22:52ID:???グラデーションはbit数を上げれば解決するけど。
0555名前は開発中のものです。
02/09/23 00:45ID:ThYVC2el本は絶版みたいだし、お願いします
0556名前は開発中のものです。
02/09/23 01:03ID:v6pFfVCjやめとけ。検索すればすぐでると思うが、情報がいい加減でひどい
フォーマットってうわさだ。何に使うん?
0557名前は開発中のものです。
02/09/23 01:11ID:???3D拡張もあるらしいが
0558名前は開発中のものです。
02/09/23 01:13ID:v6pFfVCj0559名前は開発中のものです。
02/09/23 01:53ID:???ありがとうございます。
3Dを扱う一般的なフォーマットは知っておかんといかんかな、と思いまして
0561名前は開発中のものです。
02/09/23 06:14ID:FUH7SiPADirectX8はWizardもついてだいぶよくなったみたいだけど
構造体がいっぱい残ってるのがうっとしいです。
やれることが限定されても、そのへんクラスで結構隠してくれてるのが
あればいいんですが。
0562名前は開発中のものです。
02/09/23 07:28ID:???0563名前は開発中のものです。
02/09/23 07:39ID:???http://www3.justnet.ne.jp/~botchy/el.htm
0564名前は開発中のものです。
02/09/23 07:57ID:???オイオイ
> いいの
ダヨ
0565名前は開発中のものです。
02/09/23 08:13ID:???洗練されているという良い物ではないけど。
0566名前は開発中のものです。
02/09/23 08:14ID:FUH7SiPAありがとうございます。
ELLibちょっとヘッダ眺めてみました(眺めただけ)。
ほかにもあれば、情報収集しときたいのでお願いします。
0567名前は開発中のものです。
02/09/23 08:34ID:???やねうらおの奴使っておけ。
まー、完璧ではないかも知れないが普通に使う分には問題ない。
NxDrawが生きてたらそれが良いと思うんだけどね。
あとはゆきいるかの所かなぁ
リンクは面倒なのでぐぐってくれ。
ゲーム用のフレームワークが本格的なゲームエンジンを指す場合、
高い金払ってUTのエンジン使えるように契約したりしてくれ。
0568名前は開発中のものです。
02/09/23 08:49ID:FUH7SiPAふんふん、なかなか本格的ですね。
これはどうもありがとうございます。YTLには笑った。
趣味で使うつもりなので。
UTって何でしょう。
0569名前は開発中のものです。
02/09/23 09:41ID:???この辺を嫁ばいい。
http://udn.epicgames.com/
0570名前は開発中のものです。
02/09/23 10:35ID:???ありがとうございます。
ちょっと見ただけでは良く分かりませんでしたが
今度暇なときに見てみます。
0571名前は開発中のものです。
02/09/23 14:39ID:???あれじゃあ、片手落ちじゃない?
0572名前は開発中のものです。
02/09/23 15:12ID:???その前に君は日本語を使いなさい。
「あれ」は何の指示代名詞なんだい。
0574名前は開発中のものです。
02/09/23 15:29ID:???571
<#`Д´>パ、パカニスルナ
0575名前は開発中のものです。
02/09/23 16:30ID:???厨に変なツッコミいれられるから
0576名前は開発中のものです。
02/09/23 16:52ID:???575=厨
0577名前は開発中のものです。
02/09/23 16:58ID:???とりあえず誰か>>571の解説を頼む。
正直、俺には読解不能。
0578名前は開発中のものです。
02/09/24 23:47ID:???やねうライブラリでは、2D しか対応してないって事では?
0579名前は開発中のものです。
02/09/25 00:30ID:???0580578
02/09/25 02:18ID:???今時の PC でゲーム作るって言ったら、
3D に対応してるライブラリのほうが、作るのが簡単で良いんじゃない?
無理に 2D に落として仕様を考えるよりも、素直にアイデアを出せるし、
三世代くらい前のカードでも、充分速かったと思うよ。
0581名前は開発中のものです。
02/09/25 02:31ID:???ん?
3Dの世界を構築するエンジンじゃなくて、
3Dハードを使うって事か?
0582名前は開発中のものです。
02/09/25 08:22ID:???0583名前は開発中のものです。
02/09/25 08:52ID:???0584名前は開発中のものです。
02/09/25 17:49ID:???権威を失うから駄目なんだよ。←2Dなら深い質問も大丈夫です、かかってきなさい
という意味と思われ
0585名前は開発中のものです。
02/09/25 20:08ID:???また可能ならどういった方法がありますか?
テキストとバイナリを交互に書き込んでみたのですがテキストが化けました
Delphi、Windowsです
0586名前は開発中のものです。
02/09/25 20:14ID:???テキストをバイナリとして扱えばいいんでねーの?
0587名前は開発中のものです。
02/09/25 20:39ID:???なるほど、その手がありましたか!!
ありがとうございました
0588名前は開発中のものです。
02/09/25 21:07ID:???0589名前は開発中のものです。
02/09/25 21:23ID:???>>585を再度質問させていただきます
よろしこ
0590名前は開発中のものです。
02/09/25 21:37ID:???漢文を訳すより難解なり
0591名前は開発中のものです。
02/09/25 21:40ID:???ヘッダだけテキストにしてそれ以降をバイナリ
もしくは全部テキストにしたければバイナリをbase64にでも変換すれば?
0592名前は開発中のものです。
02/09/25 21:54ID:???>ヘッダだけテキストにしてそれ以降をバイナリ
Delphiでどうすればできるのか教えて欲しいです
Cではできますた
0593名前は開発中のものです。
02/09/25 22:14ID:???同じようにしる!!
その手の作業に関しては、
DelphiでできてCでできないのはわかる(VCL使っているとか)が、
CでできてDelphiでできないというのはよくわからない。
0594名前は開発中のものです。
02/09/25 22:16ID:???こたえられるかもしれんよ。
0595名前は開発中のものです。
02/09/25 23:00ID:???テキストバイナリ混成データ送ろうとして
四苦八苦した思い出があるなぁ
けど、もうどうやったのか忘れた(藁
0596名前は開発中のものです。
02/09/25 23:38ID:???0597名前は開発中のものです。
02/09/25 23:41ID:???Personalでやったから苦労したんだよ!
ちなみにパケット越しじゃなくて
パケットに詰めて、だな
0598名前は開発中のものです。
02/09/25 23:57ID:???シリアライズとデシリアライズのコードを対になるように書けばそれで
終わりっしょ?DelphiもCも関係ないと思うんだが・・・
0599名前は開発中のものです。
02/09/26 01:34ID:???アホですか?
そのシリアライズがうまくいかないって話なんだけど?
てか思い出したけど
サーバC++/クライアントDelphiでやってて
コネクションまで確認できたのに結局データのやりとりはうまくいかなくて
クライアントもC++で組み直したんだった
もちろんDirectPlay使ってたとかいうオチじゃなくてWinSockでやってた
0600名前は開発中のものです。
02/09/26 01:36ID:???非PersonalだとコンパイラやIDEが勝手にプログラマの無知を補間してくれるんですか?
0601名前は開発中のものです。
02/09/26 06:31ID:???ゲームアプリ開発に及ぼすってことなのかね。
あまり考えられないよな。
・・・・DB関連のことなのか。
0602名前は開発中のものです。
02/09/26 06:32ID:???○ 影響を及ぼす
0603名前は開発中のものです。
02/09/26 06:57ID:???0604名前は開発中のものです。
02/09/26 12:44ID:???0605名前は開発中のものです。
02/09/26 15:00ID:???0606名前は開発中のものです。
02/09/26 15:20ID:???0607名前は開発中のものです。
02/09/26 22:13ID:???> そのシリアライズがうまくいかないって話なんだけど?
自分がアホであることを晒してどうするよ?
0608名前は開発中のものです。
02/09/26 22:33ID:???ソケットもファイルも書き込んだ/送出したデータをありのままの姿で返すだけだし、
をれが言語によって変わることも*ありえない*と言うことが理解できてないようだから。
化けたとしたらそれは書き込んだデータと書き込んだつもりのデータが違うだけ
0609名前は開発中のものです。
02/09/26 22:40ID:???素人は何でも一度にやりたがるからダメだ
0610名前は開発中のものです。
02/09/27 08:45ID:???0611名前は開発中のものです。
02/09/27 11:30ID:u5LECmtB敵キャラの抽象クラスを作って、キャラごとに派生クラスをつくりました。
そこで、出てくる敵キャラすべてを格納しておくキューを作りたいのですが、
Javaみたいな、すべてのクラスを格納できるキューが作れなくて困っています。
何か案はありませんか?
0612名前は開発中のものです。
02/09/27 12:38ID:???その抽象クラスのポインタを、コンテナに入れれば?
0613
02/09/27 15:01ID:uiQG1iKW0614名前は開発中のものです。
02/09/27 15:39ID:???… C++ の基本から勉強し直した方が良いような。
struct Base {
virtual ~Base() {}
...
};
class Deriv : public Base {...};
using boost::shared_ptr;
using std::queue;
queue<shared_ptr<Base> > q;
q.push(shared_ptr<Base>(new Deriv);
0615名前は開発中のものです。
02/09/27 18:07ID:???Internet Direct。
主要なインターネットプロトコルに対応したオープンソース形式のライブラリ。
BSDライセンスとMPLのデュアルライセンスで都合のよい方を選ぶことができる。
Delphi, C++Builder, Kylix用。
http://www.nevrona.com/Indy/
# なぜか今つながらない。
0616名前は開発中のものです。
02/09/27 21:17ID:???C++をあまり知らないヤシに説明するのに
当然のごとくboostを使ってるお前がウザイと思うのは俺だけか
0617名前は開発中のものです。
02/09/27 22:33ID:???きみだけ。
0618名前は開発中のものです。
02/09/28 03:01ID:???boost なんて、もう標準も同然じゃん。
0619名前は開発中のものです。
02/09/28 03:02ID:???ていうか、boost 無しでは生きていけません。
0620名前は開発中のものです。
02/09/28 03:07ID:???入門書ではまずboostを扱わないし、
ウチの会社も導入を許可してくれない。
初心者に説明するときは、極力非標準は排除して話すべきだと思うんだが。
0621名前は開発中のものです。
02/09/28 03:13ID:???0622名前は開発中のものです。
02/09/28 04:27ID:???かと言って、生ポインタでもかわいそうな気が……
0623622
02/09/28 04:29ID:???0624名前は開発中のものです。
02/09/28 04:31ID:???頭に何か沸いてる人間も出ているわけで、
boostくらい見逃すのがいいのかもしれないな
0625名前は開発中のものです。
02/09/28 09:03ID:???0626名前は開発中のものです。
02/09/28 16:00ID:???問題ない。
0627名前は開発中のものです。
02/09/28 18:02ID:???> ウチの会社も導入を許可してくれない。
lambda あたりはともかくとして、shared_ptr さえ使えないような会社なら
転職を考えた方が…。
0628名前は開発中のものです。
02/09/28 18:13ID:???0629名前は開発中のものです。
02/09/28 19:40ID:???0630名前は開発中のものです。
02/09/28 20:19ID:???導入したければ、自分のプライベートを裂いてコード検証をして、
各クラス毎の関連と、使用可不可のチェックリストを作らないと許可が下りない。
大体、まともなところならshared_ptrに変わる物はすでに作られてる筈だから
対して問題にならないと思うが。
0631名前は開発中のものです。
02/09/28 20:30ID:ThgTmq4W俺は不安なのでfloatとか使ってるんだけど、実はintでもいい?
0632名前は開発中のものです。
02/09/28 20:33ID:???0633名前は開発中のものです。
02/09/28 20:52ID:???なんかIDがカコイイから特別に教えてやる。
表現したい座標の性質により変える。
0634名前は開発中のものです。
02/09/28 21:01ID:???仕事に使う道具を検証するのに「プライベート」な時間を要求するのか。
終わっとるな。
0635名前は開発中のものです。
02/09/28 21:02ID:???意味不明。
「不安」、「いい?」とは具体的に何。
>>632
必要なければそれでいい。
気にすることはない。
0636名前は開発中のものです。
02/09/28 21:04ID:???検証する時間を与えられるかどうか微妙だなあ。
検証する時間をクレとリーダーに交渉する時間は
仕事中であってもいいと思うが、そこでダメといわれたら
プライベートでやるしかないな
0637631
02/09/28 21:08ID:???スクリーンの左上を(0, 0)、右下を(800, 600)などとして
オブジェクトを配置していくわけです。
移動してくオブジェクトの座標には、今までfloat型を使って表現
していたのですが、これって意味のないことですか?
0638名前は開発中のものです。
02/09/28 21:16ID:???0639名前は開発中のものです。
02/09/28 21:19ID:???スクリーンに表示だけならint型だけでもいいんでないの。
ただし、その値を計算する時に、float型程度の精度が無いと
計算出来ないんじゃない?
計算様の別型の値を持って、それで計算、intにキャストして表示って馬鹿らしい。
だから、漏れは初めからfloat型でいっていますが。
0640名前は開発中のものです。
02/09/28 21:25ID:???オブジェクトが小数点以下の数値をとる可能性があるなら無駄じゃないよ。
0641名前は開発中のものです。
02/09/28 21:35ID:???アプリの内部変数の型の話をしてるなら
意味がないかどうかはアプリによるだろう。ちゃんと設計しる。
一方、一般的な3DAPIに渡される座標値の型指定がfloat値であることの
意味を問うているなら、それはちゃんと意味があるという答えになる。
試しに320x240程度の画面モードにすれば肉眼で確認できるだろう。
0642641
02/09/28 21:40ID:???「ゲームの中のシーン座標」と「スクリーン座標」はそれぞれ別物として
定義するのが普通だぞ。2Dの場合は、依存関係を持たせないと苦しいケースも
ある。
0643初心者
02/09/29 00:07ID:???どうやったらいいんでしょうか?
実際にギターなどでは作ったことがあるんですが、、、
シンセサイザーに挑戦します。
友達とチームを組んで活動します。
シンセサイザーのことはまるで分からないので、アドバイスください。
0644名前は開発中のものです。
02/09/29 00:19ID:???MIDIデータを作ることから始めてみてはどうか
まったく知らなければDTM板でも覗いてみるとか
0645名前は開発中のものです。
02/09/29 15:07ID:RRwSPMiU8ビットCPUのフルアセンブラでしか経験ないけど、16bit整数+8bit小数の24bit
で、管理してました。
0.5ドットの移動とかやりますし。
0646名前は開発中のものです。
02/09/29 19:19ID:???0647名前は開発中のものです。
02/09/30 01:38ID:???0648名前は開発中のものです。
02/10/01 20:56ID:???0649名前は開発中のものです。
02/10/02 12:32ID:???あのゲームの場合、装備品にカードが刺せて、装備品やカードによっていろいろとパラメーターが変わります。あるカードを刺せば攻撃力 += 10; とか、あるカードをさすと敵の属性によって追加ダメージ15%等‥‥
で、私の頭ではいちいち、いちいち武器やカードの効果を攻撃力計算関数内に全部書き込む方法しかおもいつきません。
こんなの↓
func 攻撃力()
{
全装備品のカードスロットを走査、カード枚数[カードID] の配列を作成
基本能力値読み込み
if (カード枚数[100] > 0) { .. }. // 修正能力値の計算
if (カード枚数[200] > 0) { ... }
修正能力値による基本攻撃力の計算
if (カード枚数[150] > 0) { .. }.
if (カード枚数[250] > 0) { ... }
ほげほげほげほげ
if (カード枚数[50] > 0) { ... }
以下繰り返し
return 最終攻撃力
}
でも、この方法は私としてはすごい汚いとおもうんですね。ミスを誘いやすいし、メンテもしにくい‥‥
というわけで、こういうのを効率よく処理する方法について教えてください。
0650名前は開発中のものです。
02/10/02 13:27ID:???オブジェクト「思考」せよ
なんのためにJava使ってるんだ(藁
0651名前は開発中のものです。
02/10/02 13:33ID:???他の者は解法を書くのをしばし待て。
0652649
02/10/02 13:56ID:???一応、考えてみたんですが、
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();
}
}
繰り返し
}
というのを考えては見たのですが、(続く)
0653649
02/10/02 14:02ID:???あ、上のコードで effect っていうのは、カード効果とか装備品の効果です。
で、上のように考えては見たんですが、
ものによって
a += 5; --- @
とか、
a = 0; --- A
とかあるんですね。
詳しく実装が解明されているわけではないのですが、Aの効果があったら@の効果はキャンセルされるし
@A@@とか、配列にきてたらどうしよう?とか非常に困ってしまったのです。
0654名前は開発中のものです。
02/10/02 14:05ID:???class 武器 {
public:
int 攻撃力();
ステータス構造体 ステータス修正();
private:
int 基本攻撃力;
ステータス構造体 ステータス修正値;
カード; //複数枚装着できるなら配列化
};
int 武器::攻撃力() {
return 基本攻撃力 + カード->攻撃力修正();
}
ステータス構造体 武器::ステータス修正() {
return (*this)->ステータス修正値 + カード->ステータス修正値;
}
入りきらないので次↓
0655名前は開発中のものです。
02/10/02 14:05ID:???public:
int 攻撃力修正();
ステータス構造体 ステータス修正();
private:
int 攻撃力修正値;
ステータス構造体 ステータス修正値;
};
あとは必要な武器とカードをデータベースからインスタンス化するだけだと思われ
カードを複数枚装着できるなら、各計算関数内で繰り返してやるだけ
ステータス構造体は、ゲームに出てくるステータスを静的メンバに持つクラスで実装して
+演算子や+=演算子を定義してやる
てか、攻撃力もステータス構造体に含めて問題なさそうだな
「全ての効果打ち消し」とかは配列をソートすれば良いだけでは?
0656名前は開発中のものです。
02/10/05 04:23ID:???エラー処理は例外に頼ってるのに、例外安全なんか知らんわボケっていうのも、イッテヨシ でつか?
もまいら、どうしてますか?
0657名前は開発中のものです。
02/10/05 10:19ID:???> もまいら、どうしてますか?
case by case
っつかクリティカルな部分以外は速度なんか気にしないし、クリティカルな部分も
メモリアロケータに手を入れれば幸せになったりする。
0658名前は開発中のものです。
02/10/07 17:51ID:???スレ立ててもかまわないですかね?
ちなみにプログラミング経験は無しです・・・
言語はHSPかDelphiのどっちかで勉強しながらやろうと思います。
0659658
02/10/07 18:00ID:???0660名前は開発中のものです。
02/10/07 19:06ID:???作ってから立てた方が叩かれないかと。
0661名前は開発中のものです。
02/10/07 19:37ID:???まずはHSPかDelphiのスレで質問しながら作り、
最低限のモノを作ってからスレ立てれば、
叩かれる可能性はかなり減るかと。
0662名前は開発中のものです。
02/10/07 22:53ID:???この板は「カタチの無い企画スレ」は徹底して終了厨に荒らされる傾向があるので
まず一通りカタチにしてからスレ建てた方が良いでしょう
0663名前は開発中のものです。
02/10/07 23:02ID:???0664名前は開発中のものです。
02/10/07 23:03ID:WME4JpPc0665名前は開発中のものです。
02/10/07 23:03ID:???0666名前は開発中のものです。
02/10/07 23:09ID:???出来る香具師ですら完成しねーんだからよ。
0668名前は開発中のものです。
02/10/07 23:16ID:???「形のない企画スレ」には3Dレースゲースレも含まれるのかい?
0669名前は開発中のものです。
02/10/07 23:19ID:???この板の歴史に名を刻んでしまったね。
0670名前は開発中のものです。
02/10/07 23:23ID:???(成功の十分条件ではない)ということを、あのスレは教えてくれた。
0671名前は開発中のものです。
02/10/07 23:31ID:???作者が名前伏せて反論してたから削除人も相手にしてくれなかった
0672名前は開発中のものです。
02/10/07 23:32ID:???0673669
02/10/07 23:38ID:???0674名前は開発中のものです。
02/10/08 00:11ID:tUlUNf/Sどっかで「スクリプト」を使え見たいな話きいたけど。
例えば、
じいさんに話す。(シナリオ始まり)
洞窟でなにする。
じいさんに話す。(シナリオ終了)
こんな感じの場合。
0675名前は開発中のものです。
02/10/08 00:25ID:???RPGツクールを一度触ってみ。
あんな感じで分離させればOK.
0676名前は開発中のものです。
02/10/08 00:31ID:???禿同。
RPGツクールは作られるモノはクソだがツール自体は優れている。
0677ひきプロ ◆8fhky/PGis
02/10/08 00:47ID:???(タクティクスオーガみたいな)
あらかじめフィールドだけを最初に1回作っておいて、
キャラクタのみをメイン画面に転送すると、フィールドと
キャラクタとの前後関係がおかしくなってしまいます。
かと言って全部を毎フレーム描画していると遅くて困っています
(GDIのBitbltで処理しています)
DirectX使ったら改善できるでしょうか。
またDirectX使わない場合はどうしたらよいでしょうか
0678名前は開発中のものです。
02/10/08 00:51ID:???どんな感じ?
鍛冶屋のおやじとか、通常のNPCを絡ませるのとか難しそうなんだけど。
そのまま台詞も本体に突っ込んでしまうのはやっぱり無理かな。
0679ひきプロ ◆8fhky/PGis
02/10/08 00:55ID:???店の場合は汎用的な店の親父のメッセージ表示、
人だったらメッセージ文字列へのポインタ持っておいて
そのポインタ参照したらメッセージ出てくる感じにしたらどうでしょ
0680名前は開発中のものです。
02/10/08 00:56ID:???その種のヘヴィな処理にGDIを使うのは狂気の沙汰です。
描画順序については「フィールド」「キャラ」といった
モジュール化的な分割を諦めて画面生成のみをモジュール化する形をとります。
えぇえぇ、ゲームのコードなんてスパゲティ作ってナンボですから。
0681名前は開発中のものです。
02/10/08 00:58ID:???ZバッファやZソートを使った陰面処理を行うとか
始めからDirect3Dで描画しそのへんの処理をハードウェアに任せる方法とか。
遅くなるけどね。
0682ひきプロ ◆8fhky/PGis
02/10/08 01:00ID:???ご返事ありがとうございます。
やっぱGDIでは無理でしょうか…。
一応モジュール化的な事をしているんですが果たして
使いやすくなってるのかどうか藁
今んとこスパゲッティになりまくりです
0684ひきプロ ◆8fhky/PGis
02/10/08 01:05ID:???諦めて ですね藁
0685名前は開発中のものです。
02/10/08 01:06ID:???死ね
0686名前は開発中のものです。
02/10/08 01:15ID:???RPGツクールは体験版があるので、どんなものか見てみるだけなら
それで充分だと思うよ。
体験版のあるURLは、適当に検索してちょ。
0687名前は開発中のものです。
02/10/08 01:15ID:???とりあえずその考えでやってみる。
0688名前は開発中のものです。
02/10/08 01:16ID:???0689名前は開発中のものです。
02/10/08 03:06ID:???もしみつからないようならMXかなんかで拾って
参考にしたら破棄しちまいな。
0690名前は開発中のものです。
02/10/08 21:06ID:???素直に DirectX 使って 3D で描画しろ。CPU <-> バス <-> グラフィックカード
間を流れるデータの量、桁が違ってくる。
0691名前は開発中のものです。
02/10/08 22:12ID:???流れるデータ量の桁って変な知ったかするのヤメレ
この場合問題はバスに流れるデータ量ではなく
Zバッファがハード的に使えるか
CPU側で自前計算しなければならないかの差
0692名前は開発中のものです。
02/10/09 21:07ID:???前後関係無視して単純に全画面 BitBlt するだけでも、GDI だと
すぐにサチるぞ。
0693名前は開発中のものです。
02/10/09 21:14ID:???0694名前は開発中のものです。
02/10/09 21:16ID:???0695名前は開発中のものです。
02/10/09 21:51ID:???それぞれの言語の長所・短所・難易度
BGMのそれぞれの記録形式の長所・短所・難易度
作りたいゲームを再現するにはどの言語がいいか
こんなテンプレがあったらいいね。
0696名前は開発中のものです。
02/10/09 22:21ID:???無いのじゃなくて必要だと思った奴が自分で作れば良いだろ
あったらいいねじゃなくて言いだしっぺのお前が作れ
何でも人任せにするな
0697↑
02/10/09 23:27ID:s4kqpcbZ0698名前は開発中のものです。
02/10/09 23:33ID:4GQZ2WlTとりあえずJava。
実行速度が遅いんで、アクション・シューティング系は避けた方が良いかも。
ダンジョンマスターJavaは素晴らしかった。
0699名前は開発中のものです。
02/10/09 23:37ID:???初心者とそれを理由にする怠け者は違う
自分で初心者を名乗る奴は後者
0700名前は開発中のものです。
02/10/09 23:48ID:???ハードウェア屋さんとか物理屋さんなんかが良く使う用語だな>サチる
saturation (飽和) の略式表現
0702↑
02/10/09 23:55ID:???(ダンジョンマスターJavaは素晴らしかった)
公式サイトhttp://www.cs.pitt.edu/~alandale/dmjava/
ダンジョンマスターをやろう!http://home8.highway.ne.jp/galzo/game/danmasu.htm
0703名前は開発中のものです。
02/10/10 00:08ID:???確かに DirectDraw なら(ビデオメモリがある限りは)ビデオメモリ上に
サーフェイス作るから、BitBlt は速いやね。フレーム毎に全部書き直し
にしても、そこそこの fps が出せる。
0704名前は開発中のものです。
02/10/10 00:10ID:???0706名前は開発中のものです。
02/10/10 07:50ID:???今現在Javaでゲーム作ってる漏れが言うのも何だが、
起動とGUIは非常に遅いっす。色々工夫しないと話にならんです。
0707要ブックマーク
02/10/10 11:15ID:buBBvKiZhttp://www.realdigital.co.jp/densi2/progindex.html
>C言語・C++言語・WINDOWSプログラム・DirectX Draw・DirectX 3D・ソフトウェアライブラリー
>各言語の説明と、サンプルソース。
YaneuraoGameScript & SDK本体
http://www.sun-inet.or.jp/~yaneurao/links/ygs/
yaneuraoGameScript2000
http://isweb19.infoseek.co.jp/computer/yaneurao/ygs/
>初心者向けC言語によるゲーム制作指南
C言語初心者向けリンク集
http://www3.mahoroba.ne.jp/~seibi/gad_cgi/html/16_02.html
ヒューマンアカデミー
http://www.athuman.com/a/it/course.html
>3ヶ月コースなど
初心者向けゲーム制作講座"Delphi de GAME"TopPage
http://www.din.or.jp/~koudai/Delphi/Delphi.html
0708名前は開発中のものです。
02/10/10 12:07ID:???はぁ?DirectX8にスプライト関数(ラッパークラス)あるだろ?
非常に簡単に半透明使えるし、回転拡大縮小できるし、ポリゴンみたいなこと
できるし、いいんじゃないの?エフェクトはかけられないけど・・・。
DirectDrawより簡単ではるかに便利。2Dならこれを使えや
0709名前は開発中のものです。
02/10/10 12:11ID:???0710名前は開発中のものです。
02/10/10 12:28ID:???0711名前は開発中のものです。
02/10/10 13:02ID:???0712名前は開発中のものです。
02/10/10 13:45ID:???0713名前は開発中のものです。
02/10/10 16:22ID:???0714名前は開発中のものです。
02/10/10 16:37ID:???0715708
02/10/10 16:41ID:???なんか理由あるの?
drawPrimitiveUPと比較しても速度変わんないんだけど?
抜き色指定とかでDDS使わない分、楽でいいだろうに・・・。
0716708
02/10/10 16:42ID:???0717ひきプロ ◆8fhky/PGis
02/10/10 16:49ID:???ためしに作ってみたら毎フレーム全部描画しても
GDIの時より軽くなりますた。
>>708
そういえばアルファブレンドができなくて悩みました
8のヘルプも読んでみようと思います
0718名前は開発中のものです。
02/10/10 17:02ID:???ID3DXSpriteを使うと叩かれるのか。謎だな。
それはどこでの話だ。
0720名前は開発中のものです。
02/10/10 17:51ID:tjuH/a8v他の環境で動かしたらscaleが有効になってなくてしょぼんだった。
0721718
02/10/10 17:54ID:???スレのリンクを貼るほどの価値もない話題ということか。
それなら気にしねーほうがいいんじゃねーの。
どうせ具体的な指摘は何も無かったんだろ?
0722名前は開発中のものです。
02/10/10 18:08ID:???0723名前は開発中のものです。
02/10/10 19:04ID:???0725名前は開発中のものです。
02/10/10 20:45ID:pMa8asNt0726名前は開発中のものです。
02/10/10 20:50ID:???0727名前は開発中のものです。
02/10/10 22:57ID:???あるぞ。
0728名前は開発中のものです。
02/10/10 23:53ID:???> DirectDrawより簡単ではるかに便利。
DirectDraw は初期化と、ロスト時の再初期化処理だけで意外と面倒。
0729名前は開発中のものです。
02/10/11 00:28ID:???無い
サイズの制限はハード依存であってID3DXSpriteそのものの制限とは関係ない
0730名前は開発中のものです。
02/10/11 00:33ID:???0731730
02/10/11 00:46ID:???0732名前は開発中のものです。
02/10/11 02:21ID:???> 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)は確認できない。
0733名前は開発中のものです。
02/10/11 02:45ID:???Drawだと左上から256×256の部分が表示されるだけだな。
GeForce2MXだからVoodooのような256×256の制限はない。
確かDirectX7の時にはこの制限がなかったと思うが。
0734名前は開発中のものです。
02/10/11 03:43ID:???ドライバは40.72 Beta
0735734(補足)
02/10/11 03:44ID:???0737名前は開発中のものです。
02/10/12 08:41ID:???VooDoo系チップの場合じゃ、ホゲェェェ!!
そういうハード特有の事情を知らんやつが、
Direct3D触るとろくなことがない。
0738名前は開発中のものです。
02/10/13 01:22ID:???だからハードウェアの制限とID3DXSpriteの制限を分けろよ(藁
0739名前は開発中のものです。
02/10/13 03:02ID:???おまいのまなこたんは、ふしあなさんでつか?
0740名前は開発中のものです。
02/10/13 03:30ID:???ID3DXSprite・Drawだと256×256以上のテクスチャは使えないだな。
0741名前は開発中のものです。
02/10/18 08:11ID:Zt+yBkdjDirectX8.1bのランタイムと
nVidiaの最新ドライバを使ってみたか。
0742名前は開発中のものです。
02/10/22 20:32ID:cC1V2h4qデータを生で置きたくないのです。
他のゲームを見てみたら、結構暗号化(?)されてたりして読めないのがあるのですが、
あれはどうやっているのでしょうか。
セーブデータや環境設定。
jpeg画像。
midやwavファイル。
についてそれぞれ教えてください。
0743名前は開発中のものです。
02/10/22 20:33ID:???VS.NET
C++
DirectX8
です。
0744名前は開発中のものです。
02/10/22 20:41ID:???0745名前は開発中のものです。
02/10/22 20:43ID:???初心者スレ向けの内容だね。
「普通に読めない」というのは、暗号化(スクランブル)の場合と
圧縮の場合がありますが、それぞれについて。
スクランブルに決まったやり方はありません。
なぜなら、決まった暗号化の手続きがあるのであれば、
決まった複号の手続きで簡単に戻されてしまい、暗号化の意味が無いからです。
ですが、全部1bitローテートするだけで普通に読めなくなるので
簡単なものでも問題なしかと。
圧縮については、辞書圧縮や動的ハフマン法、ランレングス法といった
有名なアルゴリズムがありますのでそういったものを利用する場合が多いようです。
具体的なアルゴリズムは文献を調べるなりネットで調べるなりしてください。
0746名前は開発中のものです。
02/10/22 22:57ID:???0747名前は開発中のものです。
02/10/22 22:58ID:???拡張子だけ変えて実はgifそのもの、なんてのもあったなー。すぐばれるけど。
0748名前は開発中のものです。
02/10/22 23:38ID:???どんなマップ?
平面なら二次元配列でいいと思うが。
0749名前は開発中のものです。
02/10/23 00:55ID:XrIoI0Co名かには逆汗ブロックするものもあるけど
0750名前は開発中のものです。
02/10/23 01:44ID:???ん? 発想が逆だと思うよ。
「リバースエンジニアリングされたら終わり」じゃなくて、
「リバースエンジニアリングされなきゃ大丈夫」。
平文で読まれなきゃ読める人は大きく限定されるわけだからね。
でも、解析されても、個人製作のソフトにそこまで情熱を傾けてくれるのなら
それはそれで嬉しい気もする。
0751名前は開発中のものです。
02/10/23 21:37ID:rAqnFbe+正直、Vectorにある数多くのフリーゲームで、何割くらい(または、いくつくらい)が
遊べるゲームだと思っていますか?
人によってかなり答えが異なると思いますが、みなさんの意見を聞かせてください。
0752名前は開発中のものです。
02/10/23 21:50ID:???0753名前は開発中のものです。
02/10/23 23:47ID:???http://game.2ch.net/test/read.cgi/gamedev/1007129482/84n-
0754名前は開発中のものです。
02/10/24 16:35ID:???個人的にはゼロ。
ぜんぜん遊べん。
0755名前は開発中のものです。
02/10/24 17:51ID:???再帰処理が必要な思考ルーチンを組まなければならない場合、どうやってますか?
0756名前は開発中のものです。
02/10/24 17:57ID:???0757名前は開発中のものです。
02/10/24 19:21ID:???ageないと質問に答えてもらいにくいよ
急いでいないならいいが
0759名前は開発中のものです。
02/10/24 19:44ID:???・マルチスレッド
・再帰処理をタスクシステムへ載る様に組み直す
パッと思いつくのはこれぐらい。
0760名前は開発中のものです。
02/10/24 20:59ID:???そんなことはない。少なくともゼロではない。
>>760
必死だな(w
0761名前は開発中のものです。
02/10/24 21:41ID:???なんでそんなに必死なの
0762名前は開発中のものです。
02/10/24 22:06ID:???0763名前は開発中のものです。
02/10/24 22:50ID:???0764名前は開発中のものです。
02/10/25 02:42ID:???もっとおかしい事はたくさんありマンコ。
0766名前は開発中のものです。
02/10/25 11:11ID:???おまいらが、いまよんでいるのは 擬 似 文 字 でつか?
0767名前は開発中のものです。
02/10/25 14:59ID:???0768名前は開発中のものです。
02/10/25 15:06ID:???おまいらにとっては 仮 想 文 字 なんでつね?
0769名前は開発中のものです。
02/10/25 16:06ID:???0770755
02/10/25 16:07ID:???0771759
02/10/25 17:17ID:???そういうことです。配列にスタックを作って自前で管理し、ローカル変数を
そのスタック上に置きます。
再帰を単純なループに開いた上、タスクシステム上でまわす事になります。
0772名前は開発中のものです。
02/10/25 20:04ID:???ユーザーからの入力文字(漢字変換とかもアリ)をげっちゅーするには
やっぱりInputBoxのAPIしかないのでしょうか?
0773名前は開発中のものです。
02/10/26 01:01ID:vJSal2rR自分のプログラムを実行するごとに重くなっていきます。
プロセス自体はちゃんと終了しています。
windowsって、プログラム終了時にメモリの解放って行ってくれないんですか?
まぁ、自分がメモリリークをつぶさなければいけないのですが。
特に、大き目の画像を扱った後にそのような現象がおきるみたいです。
どうなんでしょう。
0774名前は開発中のものです。
02/10/26 01:14ID:???タスクマネージャに該当プロセスがないことは確認したかい?
0775名前は開発中のものです。
02/10/26 01:14ID:???0776名前は開発中のものです。
02/10/26 01:28ID:???ただしこれはドライバが正常に動作していればの話。
ディスプレイドライバを更新するとかしてみれば?
0777名前は開発中のものです。
02/10/26 01:46ID:???0778名前は開発中のものです。
02/10/26 02:48ID:???プロセス終了時のメモリ解放は
OSの管轄ですが何か?
メモリリークが問題になるのは
長時間常駐するプロセスだけ
0779名前は開発中のものです。
02/10/26 02:55ID:???0780名前は開発中のものです。
02/10/26 03:54ID:???まさか、しないと思ってるのか?
0781名前は開発中のものです。
02/10/26 04:37ID:???一応OSが開放してくれるハズだが、
それを過度に期待したプログラムを組むのは避けた方が無難。
0782名前は開発中のものです。
02/10/26 04:44ID:???確保したメモリは必ず自分で解放しなくちゃダメだよ。
OSを信用する方が悪い。
0783名前は開発中のものです。
02/10/26 07:46ID:???救済措置と思ったほうがいい。確保したメモリは必ず開放するのが鉄則。
0784名前は開発中のものです。
02/10/26 10:14ID:???0785名前は開発中のものです。
02/10/26 12:43ID:???> OSが開放してくれるとしても、それはあくまでも開放ミスに対する
> 救済措置と思ったほうがいい
そりゃ違うだろ。
そもそも仮想記憶を使ってる OS の場合、ページテーブルやら TLB (*1) やら
は OS 以外は触れない。そこにバグがあると疑い始めたら、もはやアプリケー
ション側でとれる対策は何もないよ。
(*1)
IA-32 だと TLB はソフトウェアからいじる必要はない(ページテーブルをハード
が勝手にコピーしてくれる)けど、MIPS などは TLB ミスが起きると例外を発生
して、OS が自前で埋める必要がある。
0786名前は開発中のものです。
02/10/26 14:26ID:???という保証は無いからメモリリークするようなプログラムは
そもそも欠陥品と見ていい。だから開放しないと駄目。
それにOSが開放しなかったからといって、それはOSの
過失ではない。プログラム作った奴が悪い。
0787名前は開発中のものです。
02/10/26 14:35ID:???では次の話題。
↓
0788名前は開発中のものです。
02/10/26 15:24ID:???いくらやってもけしからんことに勝手に開放されてしまいます
0789名前は開発中のものです。
02/10/26 16:18ID:???Win98でRPCだか何だかを使うと起こりやすいそうだ
使ったことないけど
0790名前は開発中のものです。
02/10/26 16:22ID:???DOS環境とかゲーム専用機等ならたぶん開放しないのでは。
0791名前は開発中のものです。
02/10/26 22:41ID:???アルゴリズムが公開されている暗号もある。
>>755
タスクと再帰処理がなぜ両立できないのか分からん。
>>788
何の実験に使うのか知らんが。
ファイルや共有メモリ等、OSが勝手に解放することがないリソースは存在する。
存分に使え。
0792名前は開発中のものです。
02/10/27 01:11ID:???そもそも「どんな環境でも」なんて言い出したら、それこそ malloc/free がない
世界とか、あっても C 言語の規格書に従ってない環境まで出てくるから、議論
にならんよ。
規格書を行間まで読めば、C 言語の hosted environment を前提とする限り
malloc したメモリは OS に解放されるはず、が結論。
だいたいヒープの仕組みとか仮想記憶の仕組みを知っていれば、そんなに
ビクビクする必要はないと思うんだが。解放されないって、実際にどんな環境
を想定してるんだ?
(スタイルとして解放する方が良いかは別問題な)
0793名前は開発中のものです。
02/10/27 01:28ID:???こまめに解放してメモリを開けたほうがいいと思うんだが。
0794名前は開発中のものです。
02/10/27 01:52ID:xQ8SKzduDirectXでもやりたいのですが、 そういうことはできないのでしょうか?
たしか こんな計算式
C = (A+B)>>7+D
A: と B:
ソースのカラーか フレームバッファのカラー
D: ソースかフレームのアルファ値
0795名前は開発中のものです。
02/10/27 03:45ID:???IDirect3DDevice8::SetTextureStageState( )
0796名前は開発中のものです。
02/10/27 05:52ID:???ところが大抵の処理系では
freeは解放済みフラグが立つだけで
実際に解放されるのはプロセス終了時なんだな・・・
0797名前は開発中のものです。
02/10/27 06:27ID:???0798名前は開発中のものです。
02/10/27 09:49ID:???それじゃfree自体存在意義ねーじゃん
0799名前は開発中のものです。
02/10/27 10:25ID:???けど同じプロセスが再び○allocするときは
その解放済みの領域からメモリ確保するので
あながち無意味とも言えない
0800名前は開発中のものです。
02/10/27 10:53ID:???一種のキャッシュだよ。まっとーなメモリ保護のある環境下で 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 がいくつかあるから、ソースを眺めながら処理速度を比べてみると
勉強になるよ。
0801名前は開発中のものです。
02/10/27 11:02ID:???るからメモリ開放しないプログラムを書くのは良くないと思う。
0802名前は開発中のものです。
02/10/27 17:34ID:PvYfeL9IWin32の場合、mallocもVirtualAlloc呼び出してんじゃないの?
同様に、freeはVirtualFreeって感じで。
メモリマップはこれらとは違うだろうけど。
思い切り勘違いなら、ごめんな。
0803名前は開発中のものです。
02/10/27 17:36ID:???Win32じゃなくてCのランタイムライブラリの実装次第
>思い切り勘違いなら、ごめんな。
あやまるくらいなら最初からいい加減なことは書くな
0804名前は開発中のものです。
02/10/27 17:49ID:???malloc() したら毎回 VirutalAlloc(), free() したら毎回 VirtualFree() してると
思ってる? んなこたないって。ソース読めば明白なんだが、msvcrt.dll だと
1. VirutalAlloc() 系ではなく一つ抽象度が高いHeapAlloc() 系を使っていて、
こいつがユーザ空間でいろいろメンテナンスしていてる。
2. それに加え C Runtime Library 内部でも、小規模なメモリ割り当てに関して
毎回 HeapAlloc(), HeapFree() を呼ばないで良いようにキャッシュしている。
と、OS 直のメモリインターフェースから 2 枚の皮をかぶせてある。
0805名前は開発中のものです。
02/10/27 17:57ID:???でしかメモリを割り当ててくれない。VM とか CPU アーキテクチャによるんだが、
たいてい 1 ページは 8192 バイト前後。
だから小さなメモリブロックを割り当てるときに毎回 OS を呼んでるとムダに
なるメモリも莫大になるんで、
でっかいメモリブロックを OS からもらってきて
そいつを小さく切り刻んだ上で malloc 呼び出してきた側に返す
っつー仕組みにしてる面もある。
(あと昔の OS だと、そもそもメモリブロックを割り当てるような API を提供
してなかったりな。brk() とか sbrk() で検索してみ)
0806名前は開発中のものです。
02/10/27 18:15ID:???J a v a で も つ か っ て い ろ
0807名前は開発中のものです。
02/10/27 19:01ID:???2. はたしか廃止されたような気がする
今手元にないのでわからんが、どっかで見た
0808名前は開発中のものです。
02/10/27 23:24ID:???malloc=VirtualAlloc呼び出しで解決されてるんじゃないか、
と思ったんで、質問の意味もあって書いてみたんだが。
それをいい加減とか決め付けてる>>803氏んどくように。
あと、HeapAllocは既に廃止されてるはず(MSDN libに載ってたと思う)
今のWin32では、HeapAllocは内部でVirtualAllocを呼び出してるんじゃなかったかな。
0809名前は開発中のものです。
02/10/27 23:34ID:???0810名前は開発中のものです。
02/10/27 23:47ID:???HeapAlloc が内部で VirtualAlloc を呼び出してるのは確かだが、単なる
ラッパじゃない。内部で色々処理をしてる。
それと廃止されたのは GlobalAlloc(), LocalAlloc() だろうが。嘘八百を
並べるなよ……。
0811名前は開発中のものです。
02/10/28 01:58ID:???訂正さんくす。
HeapAllocが廃止されたってのは、勘違いだったよ。
廃止されたのはGlobalAlloc/Freeで、HeapAlloc/FreeはVirtualAllocで
確保したメモリをヒープ構造で管理してるってことなのね。
Win32APIで開発する時は、たいていHeapAllocと同じことを自前でしてるせいで、
よく知りませんですた。
ご指摘さんくす、と同時に、嘘八百とか書くなよ、ぼけ。
0812名前は開発中のものです。
02/10/28 02:03ID:???0813名前は開発中のものです。
02/10/28 03:11ID:???> HeapAlloc/FreeはVirtualAllocで
> 確保したメモリをヒープ構造で管理してるってことなのね。
全然違うぞ…。なんでそこでヒープ構造が出てくる?
0814名前は開発中のものです。
02/10/28 09:40ID:???いいかげん。うそはっぱく。よくしらないのにしったかぶり。
晒しsage
0815名前は開発中のものです。
02/10/28 11:02ID:???JavaやC#がメモリリークないと思ってるヤツ発見
http://www-6.ibm.com/jp/developerworks/java/010824/j_j-leaks.html
0816名前は開発中のものです。
02/10/28 11:57ID:???>799も言うとおり、解放済みマークのついた領域は再利用される。
(そのためのfreeだろ?)
だから、mallocにラッパーが掛かってようが掛かってまいが、
>793が原則として正しいということでいいんでないの?
0817名前は開発中のものです。
02/10/28 12:05ID:???そのほうが余計なトラブルの心配しなくて済むじゃん。
0818名前は開発中のものです。
02/10/28 20:30ID:???俺は
free(p);
free(p);
とかやって、メモリ領域壊したことがある。実際にはこんな簡単なコードじゃ
なくて、サイクルのある複雑なデータ構造で、遠く離れた関数で実行されて
たんだが。
結局、そのデータ構造扱う部分は「でっかくメモリを取って中で使い回し、
使い終わったら丸ごと free する」っつー方針で書き換えました。
0819名前は開発中のものです。
02/10/28 20:38ID:???free(p);
p=NULL;
ってしない?
0820名前は開発中のものです。
02/10/28 20:49ID:???しない。そもそも p に相当するものが関数の引数として渡ってくる場合には、
それって無理だし。
free_something(void* p)
{
free(p);
p = NULL;
}
func()
{
free_something(p);
// p は相変わらず NULL じゃない
}
これは極端な例だけど。あとサイクルがあるデータ構造だと、解体する順番
やタイミングが非常に難しい。コンパイラを書くときに良く出てくる DAG 程度
のデータ構造でも、気を付けないとすぐ二重 free しちゃうよ。
0821名前は開発中のものです。
02/10/28 21:14ID:???こういった感じのゲームを作ろうと試みています。
フィールド上をクリックすると、キャラがそこへ歩いて行くような。
ですが、障害物なんかを遠回りして避けていくようにするにはどうすれば
いいのか見当もつきません。どうしても凹んでいるところでつっかかってしまいます。
皆様のお知恵をお貸しください。おながいします。
ちなみに言語はHSPです。
0822名前は開発中のものです。
02/10/28 22:37ID:???絶対に答えが出るアルゴリズムだと A* とかかねぇ。
0823821
02/10/28 22:50ID:???検索してみましたが、適当なところが見つかりませんでした。
A*とはなんでしょうか?
0824名前は開発中のものです。
02/10/28 23:11ID:Y1mIhqb7高速なやり方ってあります?
内部的にはトップビューというのではなく、
クォータビューそのままでマップとキャラの菱形の当たりをとりたいのですけど…。
動作環境はへちょいので浮動小数点とか線分の交点などを求めないような軽いのを考えているのですが。
0825名前は開発中のものです。
02/10/28 23:30ID:???0826名前は開発中のものです。
02/10/28 23:47ID:???とりあえず障害物で行き詰まったら、障害物の表面に沿って
目標に到達できそうな位置まで移動してみるというのはどうか。
0827824
02/10/28 23:51ID:Y1mIhqb7クォータビューのマップを主人公が歩くとき、マップと当たりをとりたいのです。
高さがない似非クォータビューなので、それほど苦労しまい、と思っていたら
あまり芳しい結果になりませんでして。
マップが歩けるような当たりなので、常時判定するという方向性で軽くしたい、とそういうことなのです。
0828821
02/10/28 23:55ID:???その障害物が岩とかだったら、どっち側に避けても目的地までいけるんですが、
___ ____■=キャラ ○=クリックした場所
/ \
■ | |○
\_/
この場合、上を周って行こうとすると当然ひっかかっていけませんが
下を通って避ければ目的地までいけますよね。
こういう風にケースバイケースでどっち側に避けるかどうやって
判断させればいいのかがわからないんです。
わかりにくかったらスミマセン…
0829821
02/10/28 23:58ID:???つまり、出っ張った障害物なんかをちゃんと
キャラが通れるコースを歩いてくれるようにしたいのです
0830名前は開発中のものです。
02/10/29 00:00ID:???1)床だけの画像を描画する
2)キャラの足元付近のドットの有無で判定する
3)マップの残りとキャラを上書き描画する
0831名前は開発中のものです。
02/10/29 00:05ID:???ひっかかったら辿りかたを反転させれば?
0832824
02/10/29 00:24ID:UKOhyL2zワンダーウィッチなのでそうもいかないのですよ…。すみません。
0833821
02/10/29 00:28ID:???やはりそれしかないですかねぇ…(汗
下手したら明らかに違う方向へ歩いていって、引っかかったら
今気付いたように遠回りをする…なんかスマートじゃなくないですか(・-・;;
0834名前は開発中のものです。
02/10/29 00:32ID:???それじゃ内部的に表示より先行して動かしておいて、未来の自分が
引き返してきたらその場で反転するようにすれば多少マシになるのでは。
0835821
02/10/29 00:34ID:???どうもありがとうございます。試してみます。(_ _
0836名前は開発中のものです。
02/10/29 01:11ID:???マップの床が碁盤の目のようになっていて、床の升目が全て同じ大きさ
同じ形であるなら、床の升目と全く同じ形状のイメージデータを配列
などで用意して、升目の座標と判定点の座標からイメージ内に対応する
座標を求め、その座標の点がセット状態であれば当たりとする。
0837名前は開発中のものです。
02/10/29 01:19ID:???一番いいのは、袋小路にならないマップを作ることですが。
そうもいかない、というなのなら、下の図みたいにマップを
大きなブロック(エリア)に分けてやるとか。
(いつかこの板で公開された進路探索方法)
A1 A2 A3
___ ____
/ \
■ |B2 |○
B1 \_/ B3
C1 C2 C3
B1 → C1 → C2 → C3 → B3
0838837
02/10/29 01:21ID:???0839名前は開発中のものです。
02/10/29 02:19ID:???1:現在位置から目的地までの直線を引く
2:その直線が障害物と交差していたら交差した点から
移動できる方向へ直線を引いてみる(左右どちらにも行けるならどちらも)
3:枝分かれした線分はできるかぎり目的地へ向かうように折り曲げていく
4:現在の走査位置と目的地とを結ぶ直線が
走査線の角度と同じになったら1へ戻る
N:先に目的地にたどり着いた方が正解ルート
折れ曲がった位置と角度を配列に保存しておけば
それをトレースするだけ
計算中も枝分かれする直前までの移動をしていけば
迷路にでも迷い込まない限りそれほど時間はかからない
0840名前は開発中のものです。
02/10/29 02:20ID:???____________
/_,,. \-─●目的地
☆-─''''''''│~ │
↑\__/
交差点
____________
/_,,. \-─●目的地
☆-─'''''''|.│~ │
iヽ\__/
: \ できるだけ目的地の方向へ
: \→
____________
/_,,. \-─●目的地
☆-─'''''''|.│~ │ /
iヽ\__/ /
: \__/
0841名前は開発中のものです。
02/10/29 06:41ID:???解放したポインタにNULL代入するのは作法でしょう。
どうしてもめんどうなら、ちょっと気持ち悪いけど
free_something (void **p) {
free(*p);
*p=NULL;
}
func() {
free_something(&p);
//p=NULL
}
でいいのでは。
というか、そういうところで面倒くさがる人はC++を使うべきでは。
0842名前は開発中のものです。
02/10/29 07:51ID:???_______■=キャラ ○=クリックした場所
/ \
■| |○
\_/
A
ひっかかりそうなところにはポインタを作っておく。
■から○へ行く時、間にポインタがあれば
まずそこへ向かうようにする。
■
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| A |
| |
|________|
○
ポインタの捜索範囲はキャラ→クリック間の長方形。
以上!
0843821
02/10/29 07:52ID:???例えば、こういう場面でカーソルのあるところをクリックすると
池の周りを遠回りして歩いていきます。
ですが、このゲームのすごいところはカクカクした動きじゃなくて
ちゃんと池の形にぴったり沿って歩いていくということです。
もしよろしければ、実際にやってみていただけませんでしょうか?
見たほうが早いと思いますので…
isweb43.infoseek.co.jp/art/yn515/kyran.zip
pc9801です。
0844名前は開発中のものです。
02/10/29 09:31ID:???それに沿って移動するようにすれば?
0845名前は開発中のものです。
02/10/29 11:30ID:???0846名前は開発中のものです。
02/10/29 12:45ID:???|\_______\
| │ ___________ |
| │|タマちゃん失踪?|│
| │| ,,,,,,,, ,,,,,,,,,、 |│
| │l (゚∀゚) ,jj゚ー゚jjj |│
| │|l´ lyl`l l´ : `i |│
| │` ̄ ̄ ̄ ̄ ̄ ̄ |
│ | l ̄ ̄ ̄:l: ̄ ̄ ̄l |
\| l___:l:___l |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
__________
||\ \
||\\ まずかったかな・・・
|| \\ ────y────
\\ ____ ∧ ∧∧__\ ゚ 。 .゚ チャプ
\||______ (゚ ≡;゚Д)_____|| ,. -‐/⌒ヽ ─- 、 チャプ
|| | ヽ. || (〜ミ(ω・` \〜 ,)
|| ヽ___) || | ` ー‐-ミU -─‐'´ |
\ ヽ、..,,_ _,,.ノ
 ̄ ̄
ttp://www.campus.ne.jp/~ishigami/CREATION/MAKING/index.html
を読むと多少はイメージできるかも。
2次元配列でマップを管理しているのなら,再帰関数っていうのを使って
考えていくんだけど(うまく言ったときのうれしさといったら・・・),
他の方法で管理しているとなると,上で書いているような方法しかないかな。
2次元配列を用意して,障害物のある座標に1とか入れて,再帰関数を使えばいいとは思うけど。
まずいと思う。
こっそりかえしてきな。
0849755
02/10/29 13:58ID:???759さん、ありがd。
これをヒントにがんばってみます。
>>791
ターゲット&要件によっては両立できない場合もあるんでつよ。(つД`)
0850名前は開発中のものです。
02/10/29 20:23ID:???"A star algorithm" で再検索。
0851名前は開発中のものです。
02/10/29 20:32ID:???0852名前は開発中のものです。
02/10/29 20:44ID:???> 解放したポインタにNULL代入するのは作法でしょう。
気休めに過ぎない作法なんか、やめとけよ……。
だいたい複数のポインタが同一の領域を指している環境では、そんな手は
使えないし。
> どうしてもめんどうなら
その程度の「手間」で済むのは free_something() なんてオモチャみたいな
コードだから。現実に面倒なデータ構造を操作するコードだと、そんな単純
にはいかんよ。
特にデータ構造が複雑な場合には、そのデータを辿るのがクリティカルパス
になるケースが多い(逆にクリティカルじゃなければ、そんな頑張って面倒
なデータ構造をメンテナンスなんかしないで、単純配列を全部検索、とかで
済ませられる)。
そこで「すべての要素に pointer の pointer を持たせて、二回 dereference
しましょう」ってのはかなり厳しいよ。
> というか、そういうところで面倒くさがる人はC++を使うべきでは。
全部 boost::shared_ptr にするとか? それは性能上の問題に加えて、解放の
タイミングを計るのが難しくなる(解放したつもりが、余計なところで shared_ptr
が一つ生きてた、とか)という問題がある。
もちろん「ここで最後の筈」ってことで assert() 入れてチェックすることはでき
るんだが、assert() に引っかかったときに
じゃあ、いったいどこで参照が残ってるんだ?
っつーのは、やっぱり探すのが大変だよ。
0853名前は開発中のものです。
02/10/30 00:06ID:???>そこで「すべての要素に pointer の pointer を持たせて、二回 dereference
>しましょう」ってのはかなり厳しいよ。
PalmOSの開発環境では、ヒープメモリを確保するときにポインタのポインタしかくれない
(OS側でガベコレするため)のだけど、それでもなんとかなっているのは興味深い。
ポインタのポインタで生きていくための知恵が、Palm界では蓄積されてるのかもね。
0854名前は開発中のものです。
02/10/30 00:13ID:???それはコンパクションしたいからだろう。Win16 のグローバルヒープとか、昔の
MacOS とかもお仲間。
まっとーな MMU が使えない環境でもメモリの断片化が防げる代わりに、デ
バッグと処理速度に悪影響が出る。智恵というか、血と汗が蓄積されてると
思われ。
(俺も Win16 時代には泣いた覚えが)
0855名前は開発中のものです。
02/10/30 00:33ID:???俺の場合、free後NULL代入してないだけで怒られたもんだが……。
二重ポインタっても、C言語に参照がないから代用してるだけだ。
参照で実装してもいいかもね。値渡しでfreeする関数に渡した
つもりのfree後のポインタが実は参照渡しで暗黙でNULLに
書き換わっていたとして、なんら問題あるまい?
むしろ、解放後のポインタにアクセスするという潜在的バグをつぶせる。
0856名前は開発中のものです。
02/10/30 00:49ID:???> 参照で実装してもいいかもね
C++ の参照のことを言ってるなら、初期化のタイミングの制約がキツいから、
完全にポインタの代用にはならんよ。
ポインタの実体を一つにして、常にポインタのポインタを使え主義が破綻す
るのは、「そのポインタの実体を解放してしまったら、やっぱり不正なメモリ
アクセスが検出できない」っつートコロなんだよな。そのための細工を積み
重ねると、結局 GC 実装した方が確実って話になる。
0857名前は開発中のものです。
02/10/30 01:01ID:???いや、freeに一個ラッパーを掛けて、そこへ渡すポインタを
参照渡しにして関数内でNULLを代入しようってだけのことね。
実際はメモリをマネジメントするクラスなり関数郡なり作って
GCをそこで実装したほうがいい、っていうのにはもちろん同意。
0858名前は開発中のものです。
02/10/30 01:49ID:???> いや、freeに一個ラッパーを掛けて、そこへ渡すポインタを
> 参照渡しにして関数内でNULLを代入しようってだけのことね。
それでは不正なメモリアクセスの問題は解決しないんだけど。実例が
想像つかない?
0859名前は開発中のものです。
02/10/30 02:18ID:???もともと不正なメモリアクセスは別問題。それは単にバグ。
>818を読む限り、単に解放済みポインタとそうでないポインタで
条件分けしたくないだけなら、NULLを代入すればいい。
NULLは解放済みを示すマークで、free(NULL)が素通りという
仕様はそのためにある。
ループのある枝分かれリストみたいのを解放するケースを
考えてるんだろうけど、そこまで来ると各ノードを直接freeで
解放しにいくのは無理でしょう。削除マーク付けといて、
後でGCで一括解放するしかない。
0860名前は開発中のものです。
02/10/30 07:39ID:???生産性低くなる原因の一端。
0861名前は開発中のものです。
02/10/30 08:46ID:???足りなくなる罠。メモリ確保の機能がある限り人間が管理するしかない。
0862名前は開発中のものです。
02/10/30 09:22ID:???ような気がする。メモリリークは表面化しにくいから厄介なバグになるが。
0863846
02/10/30 12:54ID:???0864名前は開発中のものです。
02/10/30 20:43ID:???> 2重開放はエラー出たりしてすぐ発見できるからあまり問題にならない
そうでもない。
メモリ関係の問題はどれもそうなんだが、問題が出たときと原因が遙か彼方に
隔たってることが多い (二重 free なら一回目の free はどこで行ったんだ?)
から、原因を突き止めるのは大変だよ。特に微妙な条件でのみ発生するとか、
マルチスレッドや DMA が絡むと死ねる。
>>859
818 はそもそも「free() しなくても良いやん」つー例のような気がする。その
メモリ領域をプロセス内で再利用するなら free すべきだけど、コンパイラ
の型システムの情報なんかは、
コンパイルが終わった時点でプロセス終了させるから、ちまちま free せずに
投げ捨てろ
っつー情報だよな。
そこで労力をかけて free() したところで、
1. コンパイラのプロセスが終了するのを遅らせる
2. キャッシュを汚す
3. あまつさえ二重 free() なんてバグを埋め込んで SIGSEGV を食らった日には、
ただのバカ
だろう。
0865名前は開発中のものです。
02/10/31 00:04ID:???一回目のfreeは、無効なデータを解放するつもりでやってるんだろ?
それを問題が起こらないようにとただ消してしまうのは、
無効なデータへの不正なアクセスを隠してしまうだけだと思うが。
NULLポインタで明示的エラーを出させたほうが、安全。
落ちないバグの原因探すほうがよっぽどやっかいだろう。
こまめな解放はいらないとしても、一応プロセスの最後には明示的に
解放してやるべきだと思うが。
VC++だと、メモリリークが大量に警告されてうっとおしくない?
0866名前は開発中のものです。
02/10/31 00:17ID:???0867名前は開発中のものです。
02/10/31 09:37ID:???0868名前は開発中のものです。
02/10/31 16:06ID:???0869名前は開発中のものです。
02/10/31 18:22ID:???0870名前は開発中のものです。
02/10/31 19:45ID:???ココハ、
ゲームプログラミング相談室
デツヨ!
0871名前は開発中のものです。
02/10/31 20:02ID:???状況によるだろう。アセンブラのラベル情報とか 864 が言ってるようなコンパイラ
の型情報とかは、free したところで直後にプロセスが終了するのが目に見えてる
ので、free せずに終わらせるのもアリだ。
そこで free しても単なる自己満足。ユーザにとっては、むしろ邪魔なだけ。
0872名前は開発中のものです。
02/11/01 00:07ID:???ちょいまち、ユーザの「邪魔」って、具体的にはなんのことだ?
ユーザには関係ない、というのなら分かるんだが。
あとでメンテナンスする人のこと考えたらメモリリークつぶすくらいは
常識だと思うがな。大量の警告メッセージに埋もれて、つぶすべき
メモリリークが見えにくくなる。
0873名前は開発中のものです。
02/11/01 00:32ID:???> ちょいまち、ユーザの「邪魔」って、具体的にはなんのことだ?
キャッシュを汚すわ、終了に(本来不要なはずの)余計な時間を食うわ、
開発コストは上がるわ。
> あとでメンテナンスする人のこと考えたらメモリリークつぶすくらいは
> 常識だと思うがな。
プロセスの寿命とデータの寿命が一致してる場合にはメモリリークとは言わん
だろ。メモリリークというのはその名の通り「漏れ」であって、使えないメモリ領
域が増えることを指すわけで。
> 大量の警告メッセージに埋もれて
_CrtSetDbgFlag() なんかが実装してる「終了時に free してないメモリ領域の
一覧を表示する」機能のこと? あれはそれなりに便利だが、万能じゃない。
(っつか BoundsCheker 使え)
0874名前は開発中のものです。
02/11/01 00:44ID:???OSに暗黙的に解放してもらったって時間は掛かるだろ。
開発コストったって、ただメモリ確保に一枚ラッパーかませて
最悪の場合でも終了処理で明示的に解放されるように作るだけだろ。
その「万能じゃない」機能をさらに使いにくくしてどうするのだ。
俺は引き継いだソースがメモリリーク放置していたら、
ちょっとウンザリするがな。
0875名前は開発中のものです。
02/11/01 00:54ID:26Va0gRHVC++でシューティングゲームを作っているのですが、敵や弾をたくさん表示させては
消すために、メモリをnew、deleteしまくっているのです。
ところが、実行しているとすぐに重くなってしまいます。
メモリリークに関しては、デバッグモードで
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF)
を呼び出して確認したのですが、一つもありませんでした。
これって、ちゃんと解放していても、メモリの確保が原因で重くなることってあるのですか?
ちなみに、表示させたオブジェクト(newしたインスタンス)の数に比例して
重くなっていくことは確認しました。
0876名前は開発中のものです。
02/11/01 01:02ID:???> 表示させたオブジェクト(newしたインスタンス)の数に比例して
それって、ふつうに処理量が増えてるんじゃないの?
0877名前は開発中のものです。
02/11/01 01:23ID:???敵や弾の画面表示だけしない場合も重くなるか?
0878名前は開発中のものです。
02/11/01 01:24ID:???いわゆるunixあるいはwin32ならばかかりまへん
0879名前は開発中のものです。
02/11/01 01:28ID:???いえ、そういうのではありません。
キューに、敵だの弾だの詰め込んで、敵をやっつけ(deleteし)ます。
その後しばらく敵を出さなければ、キューがちゃんと空になっていることも
確認しました。
そして、その後また同じように敵を出して…と繰り返すと、だんだん重くなっていくのです。
プログラムを終了したときなんか、数秒フリーズしたように止まります。
>>877
画面表示をしないでやってみましたが、変わりませんでした。
0880名前は開発中のものです。
02/11/01 01:34ID:???たぶんソース見ないと原因は分からない。
0881名前は開発中のものです。
02/11/01 01:39ID:???0882名前は開発中のものです。
02/11/01 01:39ID:???HDDにスワップしているから遅くなっているとかそういうのは?
0883名前は開発中のものです。
02/11/01 01:44ID:???→スワップはしない。
って考えるのは間違ってますか?
スワップしてる気配はないのですが…
0884名前は開発中のものです。
02/11/01 01:47ID:???1個1個new/deleteせずに、最初に一定数一括確保して使い回すように
してみて、軽くなるようならnew/deleteで重くなっていると見る。
0885名前は開発中のものです。
02/11/01 01:53ID:???profilingしてみりゃいいだけじゃん?
0886名前は開発中のものです。
02/11/01 01:53ID:???ところで、new/deleteで重くなるとしたら、どうしてなんでしょう。
deleteする瞬間に重くなるなら分かるけど、後々にも響くってのは
理解できませんよね。
0887名前は開発中のものです。
02/11/01 02:02ID:???ほうも大変なんじゃないの。確保・開放を繰り返すと割り当てた
メモリが断片化するよね。そんな状態で効率よく領域を割り当てる
ようにするにはどうすればいいんだろうね。
0888名前は開発中のものです。
02/11/01 02:03ID:???> OSに暗黙的に解放してもらったって時間は掛かるだろ。
free() のソースを読んで、どういう処理をしているのか調べてみ。OS の
方の処理とはまた別に、いろいろやってるから。
0889名前は開発中のものです。
02/11/01 02:07ID:???仮想記憶を採用している環境なら、気にしないのが正解だと思う。スワップは
喰うかもしれんが、実メモリの断片化はページングにお任せってことで。
仮想記憶がない環境だと、最初にメモリのレイアウトを決めてしまって、固定
長のメモリブロックを割りあてるのが常套手段。
0890名前は開発中のものです。
02/11/01 02:17ID:???それが問題になるほど大きな処理なのか?
もしそうなのだとしたら、最初にどんとメモリ取って、
それを小分けにして使って、最後にどんと解放したら
いいじゃないか。だったら一回で済む。
0891名前は開発中のものです。
02/11/01 02:34ID:???そこまでして、わざわざヒープの解放に拘る意味があるのか?
だいたい使ったメモリ全部解放しろっつーなら、スタックやテキスト
はどうするんだか。
0892名前は開発中のものです。
02/11/01 02:38ID:???最後にしか解放しないと割り切れば、簡単に実装できるだろ。
0893名前は開発中のものです。
02/11/01 02:42ID:???そんな丼勘定な実装に何の意味があるんだ? だいたい最初からサイズが
見積れるなら static でとれば良いだけだし。
0894名前は開発中のものです。
02/11/01 03:20ID:???サイズ見積もれなんていってないじゃないか。
allocに一枚ラッパーかぶせて、ポインタを全部記録しておいて、
終了時に順にfreeするだけ。
0895名前は開発中のものです。
02/11/01 03:35ID:???メモリを再確保するたびに使用メモリ量が積もっていく。
ゲームの場合はメインの処理がループなので、たいしたことないと思っていても、
処理によっては1秒60回でメモリリークされたりしてちょっとまずいことになる。
開放しないメモリを確保するくらいなら初めからスタティックに確保した方がいい。
0896名前は開発中のものです。
02/11/01 05:41ID:???どうしても解放するのが面倒くさい場合の最後の手段で言ってるだけ。
シューティングゲームのバッファなんかはstaticでいい気が。
数の上限は知れてるし、容量もたいしたことないでしょう。
0897名前は開発中のものです。
02/11/01 09:10ID:???0898名前は開発中のものです。
02/11/01 09:22ID:???0899名前は開発中のものです。
02/11/01 09:55ID:???0900名前は開発中のものです。
02/11/01 14:36ID:???スレの内容を全く読んでいない馬鹿発見!
0901名前は開発中のものです。
02/11/01 16:44ID:???0902名前は開発中のものです。
02/11/01 19:58ID:???0903名前は開発中のものです。
02/11/01 20:41ID:???そんな抽象的すぎる質問にどうやって答えろと(藁
0904名前は開発中のものです。
02/11/01 21:08ID:???0905名前は開発中のものです。
02/11/01 21:49ID:???0906名前は開発中のものです。
02/11/01 23:22ID:???日本のサイトは知らん。
海外ならいっぱいあるけど。
0907名前は開発中のものです。
02/11/01 23:58ID:???まんざらそうでもない。
javacなんかがそれで一時期ハマってたらしい。
0908名前は開発中のものです。
02/11/02 00:24ID:???すみませんが、できたらそのサイトをおしえていただけないでしょうか?申し訳ないです。
0909名前は開発中のものです。
02/11/02 00:29ID:???最近の厨房様は検索と言う言葉をご存知ないらしい。
http://www.google.com/search?num=50&q=OBB+collision
0910名前は開発中のものです。
02/11/02 00:46ID:???0911名前は開発中のものです。
02/11/02 01:01ID:???すみません、すみません。(´Д`;)
0912名前は開発中のものです。
02/11/02 02:32ID:???開発は、早くなり増田。
0913名前は開発中のものです。
02/11/02 15:33ID:???本当に、そのプログラムは再利用されるのか? 汎用性は諸刃の剣だぞ。
0914名前は開発中のものです。
02/11/02 16:06ID:???まあ、C/C++に限って言えば再利用なんて、ほとんど幻想に過ぎないんだが、
ここは希望的観測の意味も込めて、「安易な手法での再利用は諸刃の刃だぞ」にしとこうや。
0915名前は開発中のものです。
02/11/02 16:19ID:???GCがサポートされてる言語なら別として。
0916名前は開発中のものです。
02/11/02 16:23ID:???・プログラムコードは基本的に使い捨て
・激しく機種依存するプログラムばかり組む
ゲームプログラマは特に価値観が偏っているから常識は通用しないよ。
偏りすぎていて他のジャンルでは通用しない気もするけど。
0917ゲーム業界の真相
02/11/02 16:45ID:???↓
生産性が上がらない
↓
労働者が沢山必要
↓
1人あたりの賃金が安くなる
↓
貧乏
0918名前は開発中のものです。
02/11/02 18:52ID:???再利用を念頭においた結果、過度に複雑なクラスライブラリができて、結局
使われずに封印ということもある。バランス感覚重要。
っつか、ゲーム業界に限っていえばプログラマの数はむしろ少ないと思うが。
0919名前は開発中のものです。
02/11/02 20:59ID:???パフォーマンスを追及するあまり、超複雑・可読性ゼロ・再利用性ゼロみたいな。
まあ、ゲームに限って言えばそれでいいのかもしれないけど。
資産が継承できないとしたら賽の河原状態かな。
0920名前は開発中のものです。
02/11/02 21:41ID:???気のせい。ファミコン時代ならいざ知らず、今時はそんなコードでは通用しない
程度には開発の規模が大きくなってる。
プログラマ一人で三ヵ月の仕事と、プログラマ三人で十八ヵ月の仕事だと、最適
な仕事の進め方は変わってくるわな。(さらに SI みたくプログラマ何百人みた
いな体制だと、また違ってくる)
0921名前は開発中のものです。
02/11/02 22:36ID:???平均的な話。
0922名前は開発中のものです。
02/11/02 23:03ID:rSTkonKP> ・処理速度至上主義
ここはその通りだとおもうけど、下の2点は同意できないなぁ
特に機種依存コードを多用したりすると恐ろしく読みにくいコードになって、
デバッグ困難になったりするよね
もし担当が交通事故で急死したとしても、他のメンバーが問題無く引き継げるように
読みやすさ優先でコード書けって先輩にたたきこまれたクチなんだけど…
0923名前は開発中のものです。
02/11/02 23:10ID:???916 は、ゲームプログラマはそういうのが多いって言ってるだけだね
勘違いしてた、もうしわけねぇ
0924名前は開発中のものです。
02/11/02 23:18ID:???ありもしない妄想を根拠として抽象的な論理を展開するのが流行りか?
0925名前は開発中のものです。
02/11/02 23:31ID:???0926名前は開発中のものです。
02/11/02 23:32ID:???いちいち根拠になるデータを提示しないと話が進まないような話題とは
思えませんが?そういう不毛な煽りも流行なのですか?
まず、あなたのその「一般のプログラマ」の定義からお聞かせ願えませんか?
0927名前は開発中のものです。
02/11/02 23:50ID:???という発言がきたら、論拠なり証拠なりを出さないと話が進みませんよ。
0928927
02/11/02 23:51ID:???0929名前は開発中のものです。
02/11/03 00:33ID:???それはそうなんですが、あまり度が過ぎるとどうかな?と
端的な例ですが、
「最近の若い者は礼儀が悪すぎる」
「そんな事はないでしょう。論拠を示してください」
という会話を見てどう感じますか?
感想レベルの話題に対しては無意味でしょ?
0930名前は開発中のものです。
02/11/03 00:50ID:???やりかたは変わってくるし、それが元で傾向に違いがでてきてもおかしくないと
思うのよ。
それを「ゲームプログラマだから」とかいう括りでやっちゃうのが間違いだろ?
という話にもってくなら分るけど、>>924,926にあるようなつまんない指摘は
煽り屋と思われても仕方ないよ。
0931名前は開発中のものです。
02/11/03 01:28ID:???0932名前は開発中のものです。
02/11/03 09:43ID:???携帯電話プログラマも大変だねえ
0933名前は開発中のものです。
02/11/03 10:28ID:???そうやって無理やり変な解釈するのもどうかと思うよ。煽り?
実際、でかいプロジェクトだと、そんな感じになるっしょ
0934名前は開発中のものです。
02/11/03 10:39ID:???0935名前は開発中のものです。
02/11/03 10:54ID:???0936名前は開発中のものです。
02/11/03 11:46ID:???そうか?
俺は特に違和感なかったが。
0937名前は開発中のものです。
02/11/03 11:52ID:???話の流れから言ってそうとらえたほうが自然かと
0938名前は開発中のものです。
02/11/03 12:22ID:???それで、高度な部分は激しく機種依存で数年おきにリセットされる。
熟年のベテランより体力のある若者のほうが有利な業界。
0939名前は開発中のものです。
02/11/03 12:52ID:???0940名前は開発中のものです。
02/11/03 12:54ID:???> 933は一行目と二行目を書く間にトイレにでも行ったんだろうかね?
> 935 :名前は開発中のものです。 :02/11/03 10:54 ID:???
> 多重人格者でちょうど入れ替わったタイミングと見た
面白い。俺は違和感なかったが、そういう発想もあるのかと。
0941名前は開発中のものです。
02/11/03 14:02ID:???SI と携帯電話業界には言われたくない…。
0942名前は開発中のものです。
02/11/03 14:36ID:???0943名前は開発中のものです。
02/11/03 15:01ID:???> ゲームプログラムというのは基本となる技術が浅いのでは。
その「基本となる技術」とは具体的にどういうものを指しますか?
> それで、高度な部分は激しく機種依存で数年おきにリセットされる。
ゲームコンソールに関して言えば、メーカ提供のライブラリが
ある程度吸収してくれていると思いますが
> 熟年のベテランより体力のある若者のほうが有利な業界。
そんなことはないでしょ
若い衆は体力はあっても場数を踏んでいない分、ちょっとした
トラブルに対処できずに途方に暮れる場面をよく見かけます
業界で生き残れている年寄りプログラマは、それなりに利用価値があります
0944名前は開発中のものです。
02/11/03 15:28ID:???知ったかの横行で痛いだけ
語る前にデータを出せ、出せなきゃ語るな
だろうだろうでまともな話になるわけ無いだろう
0945名前は開発中のものです。
02/11/03 16:13ID:???> ゲームコンソールに関して言えば、メーカ提供のライブラリが
> ある程度吸収してくれていると思いますが
世の中そういう方向に進んでるとは思うけど、目下の最大勢力 PlayStation 2
に限って言うと、メーカ提供のライブラリはきわめて低レベル(ハード寄り)
で「メーカ提供のライブラリがある程度吸収」してくれません。
特に PlayStation 2 のアーキテクチャは特異で、VPU 用のアセンブラと DMA
の使い方が性能の鍵になるので、「CPU キャッシュって何ですか」みたいな
高レベルな世界に済んでいる人間は揃って逝きました。
>>938
> それで、高度な部分は激しく機種依存で数年おきにリセットされる。
リセットされるのは、高度な部分というより低レベルな部分だと思うけど。
衝突検出やら AI のアルゴリズムなんかは、別にハードにゃ依存しないし。
それにリセットというほどじゃないやね。新しいハードが出てきたときに
いち早く使いこなすのは、やっぱり蓄積のある人間だったりするので。
0946名前は開発中のものです。
02/11/03 17:34ID:???本当に存在するのか謎だよ。
ここ数年でもめぐるましく環境変わってるよね。
0947名前は開発中のものです。
02/11/03 18:42ID:???ある程度のライブラリが整備されている PlayStation から参入したメーカー
が、PlayStation 2 時代になって
ライブラリはねーわ
開発コスト(特にグラフィック関係)はかさむわ
で撤退に追い込まれたという話は、何度か聞いた。せいぜい、その程度だろう。
0948名前は開発中のものです。
02/11/03 18:51ID:???出来たものはジャギーだらけのブツブツゲーム
どのハードとは言わないけれど
0949名前は開発中のものです。
02/11/03 19:16ID:???だけでは評価されるとは限らない。しかも売れるものと売れない
ものの格差が激しい。技術者としては遠慮したい業種。
0950名前は開発中のものです。
02/11/03 19:23ID:???そういうモチベの低い人は業界的にも願い下げです
せいぜいご自身の業界でがんばっていて下さい
0951名前は開発中のものです。
02/11/03 19:48ID:???そりゃゲーム業界に限らん。携帯電話業界だって FOMA は普及していないでしょ?
ただし、技術力があれば表現の幅や可能性が広がる。
0952名前は開発中のものです。
02/11/03 22:52ID:???0953名前は開発中のものです。
02/11/04 00:04ID:???0954名前は開発中のものです。
02/11/04 05:19ID:???そうに決まってる。
トオモワナ ヤッテケナヒ...
0955名前は開発中のものです。
02/11/04 08:08ID:???MONAにしろ。
0956名前は開発中のものです。
02/11/04 10:40ID:???ただそれだけ
0957名前は開発中のものです。
02/11/04 11:04ID:???ただそれだけ
0958名前は開発中のものです。
02/11/04 11:28ID:???0959名前は開発中のものです。
02/11/04 12:01ID:???物凄い勢いで誰かが質問に答えるスレ@ゲ製板 4つめ
http://game.2ch.net/test/read.cgi/gamedev/1035601681/l50
【初心者歓迎】スレを立てる前にココで質問を【その3】
http://game.2ch.net/test/read.cgi/gamedev/1032814540/l50
これらがあるからいらない気もするけど。
0960名前は開発中のものです。
02/11/04 13:32ID:???その両スレとは目的そのものが違うだろう。
0961名前は開発中のものです。
02/11/04 14:19ID:???0962名前は開発中のものです。
02/11/04 17:10ID:???0963名前は開発中のものです。
02/11/04 17:12ID:???0964名前は開発中のものです。
02/11/04 17:54ID:???http://game.2ch.net/test/read.cgi/gamedev/1021735643/108-109
あと、漏れのISPはスレ立てらんないみたい。
他板で大暴れしたアラーシがうちのISP使ってたらしい。合掌。
0965ゲームプログラミング相談室【Part5】
02/11/04 17:55ID:???扱う話題のダイナミックレンジはやや広め。包容力高め。
他の初心者質問スレとの棲み分けを探りつつ
これからもマターリと活用しておくれ。
■前スレ
【Part4】http://game.2ch.net/test/read.cgi/gamedev/1005040025/
■旧スレ(プログラム技術板)
【Part1】http://piza.2ch.net/tech/kako/969/969984472.html
【Part2】http://pc.2ch.net/tech/kako/985/985540361.html
【Part3】http://pc.2ch.net/tech/kako/1002/10028/1002894129.html
■関連スレなど
>>2-5
0966名前は開発中のものです。
02/11/04 17:55ID:???○【初心者歓迎】スレを立てる前にココで質問を【その3】
http://game.2ch.net/test/read.cgi/gamedev/1032814540/
○物凄い勢いで誰かが質問に答えるスレ@ゲ製板 4つめ
(※第3スレ後半〜第4スレ前半は一時的な紛争地域)
http://game.2ch.net/test/read.cgi/gamedev/1035601681/
○鬱だ氏のう DirectX (DirectXに関する話題)
http://game.2ch.net/test/read.cgi/gamedev/1033920036/
0967964-966
02/11/04 17:58ID:???なんかあったら修正したり手を加えてちょ。
で、もし暇な奴がいたら変わりに立ててくれると有難いなり。
0968名前は開発中のものです。
02/11/04 18:13ID:???0969名前は開発中のものです。
02/11/04 18:15ID:???0970名前は開発中のものです。
02/11/04 18:40ID:???0971名前は開発中のものです。
02/11/04 20:31ID:???0972名前は開発中のものです。
02/11/04 20:39ID:???0975名前は開発中のものです。
02/11/04 20:43ID:???ごめん、ストップ!!
私が先に立てた。
http://game.2ch.net/test/read.cgi/gamedev/1036410116/
乙カレー
宣言があってよかった
0977名前は開発中のものです。
02/11/04 20:46ID:???0978名前は開発中のものです。
02/11/04 20:54ID:???0979964-966
02/11/04 20:58ID:???0980名前は開発中のものです。
02/11/05 23:32ID:/7Ytk27p0981名前は開発中のものです。
02/11/06 00:04ID:ac3ggRZP安心して糞レスできるぜ。
0982名前は開発中のものです。
02/11/06 00:17ID:5us9zX6n知ってるけど、あっち誰も書きこまないし
なら、こっち埋めてからでもいいかな?…と
0983名前は開発中のものです。
02/11/06 01:22ID:5kObgyseラストでメール欄に得ろ画像のリンクとか。やってみたいね
0984名前は開発中のものです。
02/11/06 09:05ID:???0985名前は開発中のものです。
02/11/06 18:55ID:AbNkeWCY0986名前は開発中のものです。
02/11/07 12:42ID:???レス数が950を超えています。1000を超えると書き込みができなくなります。