トップページgamedev
986コメント314KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001プチ9627m01/11/06 18:47ID:G6Fk/ND/
ゲームプログラミング全般についての質問スレッド。
駄スレ立てる前にココで聞きましょう。

■旧スレ(プログラミング技術板より)
○パート1
http://piza.2ch.net/tech/kako/969/969984472.html
○パート2
http://pc.2ch.net/test/read.cgi/tech/985540361
○パート3
http://pc.2ch.net/test/read.cgi/tech/1002894129/
0064名無しさん@お腹いっぱい。01/11/08 23:20ID:3NmFL/A2
>>62
同感だけど、
コードを書かないといって実は書けない奴のなんと多いことか。

結論から言うと、
何でも自分で一から作ってきた奴と
ライブラリを使いまくって、ゲームにしたてた奴とでは、
前者の方が圧倒的に使えるんだけどね。

なぜなら前者は中級者だから上級者になれるけど、
後者は永遠に初心者だからね。
0065名無しさん@お腹いっぱい。01/11/08 23:22ID:???
>>60
ライブラリから作るのではなくて、作っていくうちにライブラリらしきものができてきて、
後でそれを自分が使いやすいようにライブラリ化。

アマチュアならこれが普通だと思うが。
00666401/11/08 23:23ID:3NmFL/A2
だから時間のあるアマチュアのうちは、
何でも自作することをお勧めするよ。

ライブラリに依存することはいつでもできるから。
0067名無しさん@お腹いっぱい。01/11/08 23:26ID:???
>65
60は59に対するツッコミです。
55と56を読んでミソ
0068_01/11/08 23:31ID:ZvJlUtz1
それでもD3DXクラスのライブラリをまた自分で作るのはバカらしいぞ。
作ってくうちに、どうしてもD3DXは超えられないことを悟り途中放棄するのがオチ。
0069名無しさん@お腹いっぱい。01/11/09 00:01ID:???
>>66
ま、逆にプロになる気とかなくて、趣味でゲームを作る手段として
プログラミングやるならライブラリに頼ってもいいわけで。
0070名無しさん@お腹いっぱい。01/11/09 00:27ID:QPURCFOq
>>58
遅レスですが、私も知りたいdeath
ソースと言わず、バイナリだけから判断できたりしないもんですかねー。
ちなみにAllegroはDirectX 3以降みたい。ClanLibのほうはちょっとわかりまへん。むう。
さらに発掘。

Simple DirectMedia Layer
http://www.devolution.com/~slouken/SDL/
0071名無しさん@お腹いっぱい。01/11/09 02:33ID:???
>>70
SDLみたいに一人じゃなかなか作れないようなライブラリこそ、
なんか使う価値があるように思った。すくなくともこれのいいところは、
よくある、プログラマ一人のヲナニーライブラリじゃないってところか。
0072名無しさん@お腹いっぱい。01/11/09 05:42ID:???
>>70
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やマルチメディアタイマを使わずにガンガン回すタイプもあるし、
メインループが寝てる間に別スレッドで思考ルーチンを動かしたり
データ読み込んだりするのもあるし。
00807901/11/09 21:22ID:???
あちゃー、無意識のうちにWindows前提になってた。
s/マルチメディアタイマ/割り込みタイマ/
0081名無しさん@お腹いっぱい。01/11/09 23:02ID:k863gV/O
>>78
トリプルバッファにすれば解決するするよん。
0082なまえ01/11/09 23:11ID:???
>>79
>「やることがない」ならばCPUを明け渡すのは、

これは全くその通りです。

ただ「描画時間がネック」みたいな発言をよく見かける割に、sleepしているので、
例えば次のフレームの背景くらい用意しておければと。

確かに、そこまでしなくても済むのなら寝ててもかまいませんが。
ちょっと先入観があったみたいです。それこそ作ってみれば解決した問題でしたね>>77

>>81
なるほど。勉強なります。

ゲーム作りって面白そうですね。
ヒマを見つけて少しずつ作ってみたいと思います。
0083名無しさん@お腹いっぱい。01/11/09 23:18ID:???
それってパソコンは速度が違うということを忘れてないか?
0084名無しさん@お腹いっぱい。01/11/09 23:19ID:???
>>83 いろんな意味に取れるので、もうちょい具体的に書いてちょ。
0085名無しさん@お腹いっぱい。01/11/10 06:31ID:???
>>82
>ただ「描画時間がネック」みたいな発言をよく見かける割に、sleepしているので、
>例えば次のフレームの背景くらい用意しておければと。
たぶんへぼいソース見ただけだと思う。ソースさらしキボン(荒れると思ったらせんでよろし)

FPS可変なら、資源を使うだけ使いたいのでフルで回す。

FPS固定なら、あまる時間はsleepすると。
もちろん、どちらにせよ別スレッドでサウンド流したりしてるかもしれんよ。
0086名無しさん@お腹いっぱい。01/11/10 10:02ID:???
>>85
FSP固定の場合は、こんな方法がありますね。

実行スレッド以外に、タイマースレッドを用意する。
CreateEventでイベントオブジェクトを作っておく
タイマースレッドは、Sleepで一定時間眠らせつつ、SetEventを実行する。
実行スレッドは、イベントオブジェクトをWaitForSingleObjectで待つ。
0087名無しさん@お腹いっぱい。01/11/10 10:59ID:Ci4ZgWPC
ageるっちゃ。
00887701/11/10 15:14ID:Pfrth29i
>ただ「描画時間がネック」みたいな発言をよく見かける割に、

なんか混乱しているような気もしますが。
描画処理のwaitと描画処理以外のwaitがごちゃ混ぜになっていませんか?
この当たりの実装はプラットフォームやアプリケーションによって違うので
一概に、こういうコーディングが良い、という例はないと思います。
0089名無しさん@お腹いっぱい。01/11/10 17:29ID:???
http://crystal.linuxgames.com/
Crystal Space どうよ。
0090名無しさん@お腹いっぱい。01/11/11 05:37ID:???
<通常のイベントドリブンなGUIアプリケーションでも同じことだと思いますが。
そっちの畑から来た身としては、どうも使えるだけ資源消費せよ、みたいな
コードがどうしても書けない(笑)向いてないのかもしれん。
0091名無しさん@お腹いっぱい。01/11/11 08:21ID:???
いやあ煽れも使えるだけ資源消費型のGUIツール(ゲーム用のな)作っちゃうからな。
そりゃ重いっていわれるよ(w
ゲーム本体のルーチン使いまわしてるから当然なんだけど
0092名無しさん@お腹いっぱい。01/11/11 09:24ID:54DZd3xv
>>90
メモリーの動的取得が上手く出来ない
って事かな?
0093名無しさん@お腹いっぱい。01/11/11 10:25ID:???
>>92
......ageでなにかいてんだか

>>90
アクション性が無いなら、それでもイイと思うけど。
0094名無しさん@お腹いっぱい。01/11/11 11:48ID:???
日曜日らしい>>92のカキコはほっとくとして、
バッテリ動作のノートPCとかギリギリで動いてるクロックアップ機とか想定するなら
資源使い切らない選択も悪くないと思ふ。
0095名無しさん@お腹いっぱい。01/11/11 16:57ID:???
>ギリギリで動いてるクロックアップ機
↑はベンチマークのために存在しているようなマシンなのだから、めいっぱい負荷をかけてあげると喜ばれると思われ。
00969401/11/11 20:12ID:???
なるほど、そういう考え方もあるか。
0097名無しさん@お腹いっぱい。01/11/12 07:32ID:???
>>95
むしろ熱暴走させてあげるくらいがよいと思われ。
「ああ、しまったクロックあげすぎかー」と反省。
00989001/11/13 02:28ID:???
>92
開いてる時間はOSに処理返しますから。
可能な限りフレームレート上げようという思考で
作業した事ないんで
>93
うーん、そこそこアニメーションさせねばならん時でも、
必要なFTS固定でやっちゃいます。
0099名無しさん@お腹いっぱい。01/11/20 07:14ID:xfX6epq/
なんか見捨てられてるこの伝統的スレ。一応age
0100名無しさん@お腹いっぱい。01/11/20 09:51ID:LstOLEvl
超亀レスですが、クイックスの領域内外判定は
クイックスの座標から適当な方向に線を伸ばしてみる
(というか単純にピクセルを走査してみる)といいと思った。
境界ピクセルと交わる回数が奇数なら領域内、偶数なら領域外。
あとはクイックスがいない側をペイント。これで6502でも安心。

ほんとに超亀レス。
0101名前は開発中のものです。01/12/10 01:54ID:vuNiN/Ut
初心者に毛が生えた程度なんで
テーブル処理についてよくわからないので教えてください。
言語はVC++です。
検索して探しましたがHTMLばっかりなんで・・
0102名前は開発中のものです。01/12/10 02:07ID:???
言語がVC++とか言ってる時点で逝ってますね。

まずは、C言語から始めましょう。
VB厨にはとっつきにくいかも…?
0103名前は開発中のものです。01/12/10 02:56ID:9KJkp3pd
>>101

「テーブル」「ルックアップ」とかで試してみたほうがいいかも。
あと、英語で検索したほうが引っかかる予感がする。

>>102

ストレス過多は胃に悪いので牛乳でも飲みなされ。
0104名前は開発中のものです。01/12/11 11:07ID:???
>>101
テーブルで何やりたい?
そこから説明してくれ。
0105 01/12/11 23:47ID:8empnFet
カコイイ稲妻とかってどうやってプログラムすれば良いの?
0106名前は開発中のものです。01/12/12 00:22ID:???
>>105
まずは試しにカコワルイ稲妻を作ってみるのがよいと思われ。
0107名前は開発中のものです。01/12/12 00:31ID:???
カコイイかカコワルイかは知らんが日高徹さんのプログラミング本に
ずばり稲妻を表示するサンプルが載ってたと思う。
VB用とDelphi用だったかな。
0108名前は開発中のものです。01/12/12 01:11ID:T2PuoAFH
>>105
http://www.art-science.org/pdf/2000/lightning.pdf
この論文は参考にならんかね。
0109名前は開発中のものです。01/12/12 02:30ID:d7VfLUCO
        ∧_∧
       ( ´Д`) <これのことか?
      /    \       
   _  | |    | |_..∬     
  |\ ̄ ̄ ̄ ̄ ̄ ̄ 旦.\
 ./..\\            \
/   \|=================|
\    ノ    こたつ     \
0110一人暮し。01/12/12 06:51ID:???
>>109
それ欲しい。
0111名前は開発中のものです。01/12/12 09:46ID:???
カコイイ暴風雨ってどうやってプログラムすれば良いの?
河川の氾濫も含めて教えてください。
0112名前は開発中のものです。01/12/12 11:31ID:???
>>101
テーブルをどんな場面で使うのかが解からんのか?
それとも、配列の概念がわからないのか?どっちだ?

>>108 おお!こんな論文があるとわ。
参考になるッす。サンキュー!!
0113名前は開発中のものです。01/12/14 03:59ID:???
いいね
0114名前は開発中のものです。01/12/14 06:41ID:???
いろんな機能をクラス化すると遅いYO!
なんとかなりませんか?
011511401/12/14 06:43ID:e7GMQ3b8
あ、すいません。
あと参照使うのとポインタでは速度に違いありますか?
0116名前は開発中のものです。01/12/14 08:04ID:???
参照は小粒でピリリと辛い
0117名前は開発中のものです。01/12/14 08:09ID:???
>>116
?ちょっと重いってことですか?ありがとうです。
0118名前は開発中のものです。01/12/14 09:51ID:???
62 :無責任な名無しさん :01/11/18 00:49 ID:doqdaWjA
掲示板の運営者のすることは管理することなんだから、全部に
目を通せないなら運営すべきじゃない。また削除依頼を公開する
必要もないしなかなか削除しない理由もない。
つまり確信犯で不法行為に荷担しようとしてるとしか思えない。
金儲けはする気はないといっていたが、だったらやっぱり
彼は子供というか、人が困るのが好きなのかもしれない。

63 :無責任な名無しさん :01/11/18 07:00 ID:VZdC2q47
>人が困るのが好きなのかもしれない

俺にもそういう人間にしか見えないよ
違法性の程度は違うが
放火犯のような愉快犯と同じような
気味悪さを感じる

64 :無責任な名無しさん :01/11/18 12:59 ID:OxVkCF27
>>62,63
同意。
知人の警官もひろゆきを気味悪い程の女性気質と評していた。
ガキの頃のひろゆきを想うと、面と向かって喧嘩は出来ないが、上履きを隠したり
して喜んでたタイプだと思う。
どうでもいいけど、ひろゆきの笑った黒目がちな焦点のない目が守大介と似てるの
が妙に気になる。
0119名前は開発中のものです。01/12/14 23:07ID:???
116の半分は勝利感でできています(バファリン風に)。

残り半分は気まずさであると信じたい。
0120名前は開発中のものです。01/12/15 06:23ID:???
117タン・・・ハァハァ
0121名前は開発中のものです。01/12/15 17:02ID:9eQ/pH5V
>>115
クラスのインターフェースとかなら、
生成されるコードに基本的に違いはないんじゃない?
ただ、安全面から、使えるならできるだけ参照を使うべき。
この辺がCプログラマとC++プログラマの差でもある。ニヤーリ
0122名前は開発中のものです。01/12/15 17:06ID:???
>>121
デスマーチ真っ只中でもそういうコード書いてくださる先輩が
いる。まったく持って激しく尊敬。おれも精進せねば。
0123名前は開発中のものです。01/12/15 18:41ID:???
>>121
でも参照って配列渡せないでしょ。違ったっけ?
ポインタも使いようだと。メンドイけど。
0124名前は開発中のものです。01/12/15 18:42ID:???
おれポインタ渡しなんて極力使わないようにしてるよ。できるかぎり参照ですませてる。
012511601/12/15 23:19ID:???
>>119
>残り半分は気まずさであると信じたい。

9割くらい気まずいです(笑
ただのダジャレだったのに。
0126名前は開発中のものです。01/12/15 23:43ID:zSSwxmsK
>>121
別に参照もポインタも安全性はかわらんよ。
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:???
>>123
>でも参照って配列渡せないでしょ。

じゃあ参照で何を渡すことができるのか小一時間問い詰めたい
0130名前は開発中のものです。01/12/16 01:41ID:???
関数の引数にしか参照使わないなぁ・・・。
しかも、
関数側がパラメータを書き換える場合はポインタ、
関数側がパラメータを書き換えない場合は const 参照、
みたいな、教科書的使い方しかしてない。
0131あぼーんNGNG
あぼーん
0132_01/12/16 02:36ID:Ar8VngeJ
まあ、山椒言うぐらいだから、山椒に使ってれば、いいんじゃ?
だから、constで。
俺は、ネストがうざくないなら、ポインタで済ますけどね。
0133名前は開発中のものです。01/12/16 03:58ID:???
>>126
そのコードは結局ポインタの問題であると思うがいかがであろう。
プログラム板向けな話題だが……。
0134名前は開発中のものです。01/12/16 07:07ID:???
>131
なんて書いてあったか気になる・・・
0135名前は開発中のものです。01/12/16 07:33ID:+KES3Ub0
windowsの画面の設定で大きいフォントにしていると
表示が破綻するのですが、なにか回避作はないのでしょうか。
0136名前は開発中のものです。01/12/16 11:55ID:???
山椒は結局ポインタでしょ。
0137名前は開発中のものです。01/12/16 12:45ID:???
>>135
フォントの大きさを固定する。
0138 01/12/16 16:46ID:???
FDDドライブにフロッピーが入ってなかったfalseを返すように
するにはどうしたらいいですかヽ(;´Д`)ノ?
0139名前は開発中のものです。01/12/16 17:25ID:???
>>138
nazo
0140名前は開発中のものです。01/12/16 17:42ID:aHuW4LrA
んー、FDDに特定のファイルがなかったら。でもいいのですが・・・
0141 01/12/16 18:19ID:???
>>140

割とFAQなんだがな。検索したか?
0142名前は開発中のものです。01/12/16 21:18ID:daAjOz/U
>>138
SetErrorMode(SEM_FAILCRITICALERRORS)して
GetVolumeInformation()すれば?
FD入ってなければエラーが返るよ。
0143名前は開発中のものです。01/12/24 16:40ID:TT6cQF5s
あがります。ドキドキ
0144名前は開発中のものです。01/12/24 23:02ID:q2IMbhtW
射影行列から視点って求められますかねぇ?
0145名前は開発中のものです。01/12/25 06:00ID:???
それは、コーヒーにミルクと砂糖を混ぜたあとで
砂糖だけ取り出すようなものではありますまいか。
0146名前は開発中のものです。01/12/25 21:55ID:???
>>145
つまり、かな〜り難しいということですね。
どうもありがとう。
視点は別でとっておきます。
0147名前は開発中のものです。01/12/26 11:46ID:???
行列の逆変換を行うんだっけ?
はっきり覚えていない
0148-02/01/08 23:20ID:yU2HT0bl
好き好きはあると思いますがゲームを作るのに最も適している言語って何だとおもいます?
0149名前は開発中のものです。02/01/08 23:28ID:???
>>148
英語
0150名前は開発中のものです。02/01/08 23:36ID:???
>>149
日本語使おうぜ。日本人なら。
0151名前は開発中のものです。02/01/09 00:10ID:???
10 カケ "コンニチハ"
0152名前は開発中のものです。02/01/09 00:28ID:???
>>148
C++使っておけば馬鹿にされない。
0153名前は開発中のものです。02/01/09 00:44ID:???
>>148
pygameは?
誰も使ったことなさそうだ。
0154名前は開発中のものです。02/01/09 08:37ID:???
>>153
それをもっとも適した言語というのはどうかと(w

まあ、くやしいがC/C++じゃないかな
0155-02/01/09 22:11ID:???
やっぱりC/C++ってことになるのかぁ
0156名前は開発中のものです。02/01/09 23:51ID:???
あと、アセンブラもたまに必要。
フルアセンブラでなくても、インラインアセンブラぐらい書けたら
たまーに重宝する事があるんだが…。
0157名前は開発中のものです。02/01/10 02:04ID:???
sinとcosの値が同時に欲しい時とか。
0158名前は開発中のものです。02/01/10 14:53ID:4z5AnKwA
BGMを作るのに使える簡単な作曲ソフト教えてくれませんか?
0159名前は開発中のものです。02/01/10 15:23ID:???
「簡単な」ものがあれば漏れも知りたい。
0160名前は開発中のものです。02/01/10 21:58ID:s/3jCGLI
>>158
http://hello.to/dtm/
自動作曲ツール
0161名前は開発中のものです。02/01/11 14:37ID:JxPmum3m
ブロックくずしの跳ね返る方向って
どうやって決まるんだろう。
止まっている時の跳ね返りはなんとなく
分かるんだけど…
0162名前は開発中のものです。02/01/11 15:08ID:???
>>148
C でしょ。ゲームによるけど C++ はあまりお薦めしないなぁ。アセンブラは
使い方が分かる程度に勉強しておくと役に立つかも。
0163名前は開発中のものです。02/01/12 00:44ID:qF5Awb+F
>>161
大雑把に処理するなら、停止時の弾の跳ね返り速度に、
ブロックの移動速度を足す。

つーか、摩擦やら跳ね返り係数やらを考慮しても良いのだが、
労力に見合うとは思えん。ま、ヒマならやってみ。
0164名前は開発中のものです。02/01/12 00:48ID:???
>>158
最近のシーケンスソフトについてくるオートバッキング機能は結構
便利だよ。漏れはYAMAHA派なのでXGWorksなんだが、てけとーなフ
レーズを打ち込んどいてオートアレンジャーで伴奏つけてから、元
のフレーズを消して、あらためてひらめいた音を入れる、というア
フォな手法を使ってます。
■ このスレッドは過去ログ倉庫に格納されています