[過去ログ] ゲームプログラミング相談室【Part5】 (970レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
758: 03/12/24 16:16 ID:j0JfsxS8(2/2) AAS
>>742
レスが遅くなりましたが。
> 移動ベクトルとの交点を求めればいいだけなのに、
> なんでわざわざ判定を細かくする必要があるの?
衝突によるリアクションで移動ベクトルが変化し、
元の移動ベクトルでは発生しなかった衝突が発生したり、
元の移動ベクトルでは発生していたはずの衝突が発生しなかったりするからです。
759: 03/12/24 16:39 ID:AfYGS6+9(2/4) AAS
ベクトルが分からない
二次連立方程式も解けない
そんなあなたに ハードコーディング
760: 03/12/24 16:52 ID:TlaAffnt(1/2) AAS
背伸びせずに自分の知識で実現できる物を作れ
761(2): 729 03/12/24 16:58 ID:URj7Zjll(4/4) AAS
本当に、ベクトルが分からないとアクションゲーム作れないのですか?
マリオとか、普通のアクションゲームはおづいう処理やっているのですか。
762: 03/12/24 17:18 ID:wvuHL31/(2/2) AAS
>>729
もう少し前提条件を書きなよ。
マリオタイプなら背景の判定がセル単位になるからセルの位置にまで戻す。
不定形なら、
>当たらなくなるまで逆方向にちょっとづつ戻す
これでできないかい?
ベクトルは知らなくても、概念はいつの間にか使っているはず。
省1
763: 03/12/24 17:19 ID:JEYstVzG(1/2) AAS
>>761
別に無理じゃないかもしんないけど。
ベクトルだってわざわざ難しくするためにあるんじゃなくて
ベクトルとして表すと楽だから存在するわけだからベクトルを使わないで
やるっていったらそれだけの手間がいるよ。
2Dにしても3Dにしてもマリオは結構難しいかもよ。
(色々とフリーでマリオをパクッたようなゲームが落ちてるけどそのどれもが動きを表現しきれてないじゃん。)
省2
764: 03/12/24 17:22 ID:AfYGS6+9(3/4) AAS
知るかアホ
テメーはテメーの靴でも磨いてろ
765(4): [ひおjぉいgjsx] 03/12/24 17:23 ID:kLqAWE7R(1) AAS
RPGの会話は1個1個関数にしておくのがベストなのかね
いちいちメインで書くとややこしくなるし
アドバイスお願いしますよ
766: 03/12/24 17:38 ID:JEYstVzG(2/2) AAS
>>765
スクリプトエンジンみたいなもの作れば楽にできるんじゃないですかね?
外部リンク[html]:white.sakura.ne.jp
外部リンク:www.epics.jp
767: 03/12/24 17:45 ID:43TGeIPz(5/5) AAS
メッセージはファイルなりリソースなりから読み出すようにする。
ごく小規模なプログラムでないのなら、プログラム中に直接記述すべきではない。
768: 脳内開発0.1% 03/12/24 17:48 ID:TlaAffnt(2/2) AAS
>>765
プログラミング言語を理解していてもシステムが組めるワケではない
正直ゲームを作るとか以前のレベルと思われ
デザパタ本でも買えばどうよ?
769(1): 03/12/24 18:19 ID:viWWNVza(1) AAS
>>761
ベクトルを知らなくても作れるよ。
昔のベーマガの投稿で小学生や中学生はいたしね。
とりえあずベクトルを使わずに工夫してやってみれば?
770(2): RPG開発中 03/12/24 20:43 ID:RGjm/FAD(1) AAS
>>765
私はイベント処理用にバイトコードベースの仮想マシン作って
会話もその中で処理しているよ。たとえば、1番のメッセージ
を表示、というイベントを作るなら
0x40 01
(0x40は後続1バイトをメッセージ番号とみなすメッセージ表示コード)
というバイト列をイベントコードとして持たせておく。
省10
771(1): 03/12/24 23:37 ID:AfYGS6+9(4/4) AAS
>>770
会話の内容の部分はどこにある?
また別に コードと対応する配列を用意してるとか?
772(2): RPG開発中 03/12/25 19:57 ID:NmX/fLFn(1) AAS
>>771
会話などの文字列データは、文字列テーブル(65536バイトのバッファ
を256分割して割り当て)に配置。イベントでは他にグラフィックも
出そうかと思っているけど、これはどうしたものか・・・。
773: 03/12/26 02:29 ID:rER+QHNY(1/2) AAS
>>772
すまん、まったく理解不能
774: 03/12/26 03:17 ID:4yV1zVt6(1) AAS
>>772
256byte(半角255文字)のストックが256個あるってこと?
俺もよー分からん。
775(1): RPG開発中 03/12/26 07:04 ID:xfqL31qs(1/2) AAS
いや、だから65536バイトのバッファを取っておいてそれを
256分割してポインタに分配しているということ
/* 文字列テーブル用バッファ確保 */
g_lpStringTable = (char *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 256 * 256);
/* 文字列テーブル用バッファを分配 */
for (i = 0;i < 256;i++) {
g_alpszString[i] = g_lpStringTable + i * 256;
省2
776(1): 03/12/26 07:40 ID:/X8b3kq4(1) AAS
>>775
文字通りバッファ(シーン毎にファイルから読み込んでスプールしておく?)
なのは置いておいて、>>770が聞いてるのは実データの格納場所じゃなかろうか。
かなり好意的な解釈だが。
777: RPG開発中 03/12/26 08:09 ID:xfqL31qs(2/2) AAS
>>776
今は実データの場所は、各種グラフィックやマップ・文字列、
イベント、敵などの各種データなどを収めたシナリオファイル
内だね。最初にこのシナリオファイルを読み込んで、その中の
文字列をバッファに格納しておく。
まあ、文字列はプログラムの実行中にバッファにあればよい
から、別にコードで設定しようが、ネットから読み込もうが
省1
778(1): 03/12/26 11:30 ID:FaDIMQyf(1/2) AAS
質問 (。・_・。)ノ
DirectPlayの利点が良くわからん。Socketで独自AP層実装するのに比べて何が良いの?
779(1): 03/12/26 13:09 ID:UokTH8Xi(1) AAS
それがサクっとできる人には無用の長物かと。
780: 03/12/26 13:39 ID:FaDIMQyf(2/2) AAS
>>779
ありがd
781: 03/12/26 14:10 ID:rER+QHNY(2/2) AAS
>>RPG開発中
で、それが >>765 に対するアドバイスなのか?
782: 03/12/26 18:45 ID:njogeIUI(1) AAS
>>778
WindowsやUnixに強度に依存させないために用意されてるんじゃないの?
DirectXにさえ対応していれば、BSDソケットをサポートしてない環境でも開発できるように。
もちろん、事実上そんなプラットフォームは存在しないんだけど
783: 03/12/27 09:57 ID:otsUTq2D(1) AAS
ワロタ
784: 03/12/27 10:07 ID:bl7gErOG(1) AAS
XBOX...
785: 03/12/27 11:10 ID:xG/hPzox(1) AAS
>>769
小学生でもベクトルと言う言葉を知らなくても概念的なものは
カンのようなもので理解してたと思う
そのあたりは算数、数学のセンスなのかもしれない
ちょうど方程式と概念的には変わらない「○+3=5 さて○には何が入る?」
っていう問題が小学校の算数ですでに出るような、そんな感じ
786: [hこpれkごpkspzkj] 03/12/27 14:04 ID:/LeFILZK(1) AAS
みなさん聞いてください
ロールプレイングで敵と味方が戦って敵か味方のHPが0になったら
終了させたいのだが これはクラスを使って処理させたほうが賢明なのだろうか?
皆さんのこういったときどんなことをするのですか? ぜひ極意を教えてくれたらなぁ
と思います
駄文ですまん
787: 03/12/27 14:10 ID:3jGoR22p(1) AAS
あああああああああはやめたの?
786 名前:名前は開発中のものです。[hこpれkごpkspzkj] 投稿日:03/12/27 14:04 ID:/LeFILZK
みなさん聞いてください
788(4): 03/12/28 17:40 ID:bDUHUyQ0(1/2) AAS
dairectinputでキーを押している間○○の処理をする・・
ってなことできるんでしょうかもしあるんだったら教えてください。
おねがいします。
789(1): 03/12/28 19:17 ID:xJqaw/Og(1) AAS
もう少し質問をわかりやすくお願いします。
790(1): 03/12/28 19:53 ID:VT+x31QU(1) AAS
>>788
メインループで
キーチェック()
if(キーが押されている) 処理()
791(2): 03/12/28 21:02 ID:bDUHUyQ0(2/2) AAS
>>789
>>790
すいませんわかりにくくて、
例えば
キーチェック()
if(キーが押されている)処理()だと
キーを連打してるみたいになると思うんですが
省7
792: 03/12/28 21:42 ID:cQ9iWriQ(1) AAS
スレッドを作ればいくらでもできるだろ。
793: 03/12/28 22:12 ID:HAEX+AYe(1) AAS
>>791
while(キーチェック() == 押されてる){
やりたい処理()
}
これだとそれっぽいけど、
キーをチェックする間隔がやりたい処理に依存するよ。
794(3): 03/12/29 00:31 ID:FUYmq8vt(1/2) AAS
ゲームならメインループをまわしておくんだろうから
前回のキー状態を保存しておいて、押された・押されたまま・離されたを
チェックするのがいいと思う。
char key押された;
char key押されっぱなし;
キーチェック() {
if (key押された = キー状態)
省2
795: 794 03/12/29 00:36 ID:FUYmq8vt(2/2) AAS
途中で書き込んでしまった・・・。
char key押された;
char key押されっぱなし;
キーチェック() {
if (key押された == キー状態) {
key押されっぱなし = キー状態;
} else {
省13
796: 788 03/12/29 00:49 ID:EhxFp05R(1/3) AAS
>>794
参考になります。ありがとうございました。
797(1): 788 03/12/29 01:09 ID:EhxFp05R(2/3) AAS
>>794
またまたすみません。
上のプログラム参考にして考えてみたのですが
キーが離れたときの判定の仕方はどうすればいいのでしょうか?
798: 03/12/29 02:10 ID:hxW8tM+Y(1) AAS
//宣言
BOOL PushKey[256];
//Set
WM_KEYDOWN:PushKey[wParam]=TRUE;break;
WM_KEYUP:PushKey[wParam]=FALSE;break;
//条件
if(PushKey[VK_何たら]){
省2
799: 03/12/29 02:11 ID:9w54kjof(1) AAS
一つ前の状態を覚えておいて前回が押しで今回が離しなら条件成立。
でいいんでないかい?
っていうかこの状態ですでに聞きまくりだと、後で困るよ。
聞く前にまず何通りかの方法を自分で考えてみたほうがいい。
800: 788 03/12/29 02:40 ID:EhxFp05R(3/3) AAS
そういうやり方があったんですか。さっそくやってみますね。
色々ご指導ありがとうございましたー。
801: 03/12/29 10:35 ID:Vxcs8OWB(1) AAS
ON
___| ̄ ̄ ̄|__
OFF
てな感じで、紙に書いてどんなタイミングだと、
「押した瞬間」や「離した瞬間」と判断できるか、シミュレートしてみるといいよ
802(1): 03/12/29 11:56 ID:7K1ivY4a(1/2) AAS
状態用意しなくても
GetAsyncKeyStateでいいやん
803(1): 03/12/29 17:02 ID:18lQqtmb(1) AAS
>802
え?状態用意しなくても過去のキー情報か離した瞬間を検知するものがあるん?
804: 03/12/29 17:12 ID:gqFMSN3K(1/2) AAS
GetKeyboardStateもいいよね〜
805(1): 03/12/29 17:40 ID:7K1ivY4a(2/2) AAS
>>803
要件は「押している間」だけだろ?
その瞬間を検知する必要があるわけではない。
さらに>>791とか見てもキー押下イベントを受け取りたいわけじゃなくて
状態をポーリングしてるんだからKeyState系のAPIだけで十分。
806: 03/12/29 18:31 ID:YOFpqX8j(1) AAS
>>805
>>797
807(1): 03/12/29 20:18 ID:byuoOUNe(1) AAS
新米プログラマ「キーが押されている状態をチェックする方法は分かったんだ。
だけど、今度はキーが押されていない状態のチェックする方法がないんだ!」
新日プログラマ「キーが押されている状態の逆をやればいいんだよ」
新米プログラマ「逆?」
808(1): 03/12/29 20:32 ID:gqFMSN3K(2/2) AAS
押されているならば、その状態を変数に記録、
押されていないならば、変数を調べて押されていたか知ればいい
こんな感じで
bool key;
...
if(GetKeyCheck() == true){ // GetSKeyCheck() : キーが押されているか? 押されているならtrue、押されていないならfalseを返す
key = true;
省8
809: 03/12/29 20:56 ID:R24Z9q+x(1) AAS
>>807
BlackBoxキタ━━━━━━(゚∀゚)━━━━━━ !!!!!
810(1): 03/12/29 21:25 ID:LZHqhzbl(1) AAS
キーボードは大気にふれている限り、気圧によって圧されているのだよ。
811: 03/12/29 21:29 ID:TqzRIVhA(1) AAS
>>810
IDがlzh
812: 03/12/30 08:54 ID:cbrmbjiy(1) AAS
IDまで圧されたかw
813(2): 03/12/30 19:03 ID:8NY1Jixm(1) AAS
質問させて下さい!
javaapplet でうまくキーが取れない… というか同時押しを認知してくれないんで、とても使いづらいんで、キャラクターがバリバリ動いてくれないんで、なにか妙案はないでしょうか?
814: 03/12/30 19:08 ID:89Usy+84(1) AAS
んでんでんで
815: 03/12/30 19:34 ID:riQ5Bg3Y(1) AAS
いんで、いんで、いんで
816(1): 03/12/30 20:12 ID:0/qWWE1o(1) AAS
>>813
3年前に組んだコードで残ってた。動くか覚えてないけど、
こんな感じでやってみたら?
publicclassC_Keyboardimplements KeyListener{
publicstaticfinalintMAX_KEY= 256;
publicbooleankey[] = new boolean[MAX_KEY];
publicvoidClear(){
省17
817(2): 03/12/31 02:12 ID:Fl7cRe53(1) AAS
ゲームなどで使われている独自文字入力欄[日本語対応]を作りたいのですが、、
どうやって実現してるのか謎です。DirectXでできるのかな?
誰か情報お持ちの方、些細なことでもけっこうですので教えて下さい。
818: 03/12/31 02:51 ID:9cxCAb2/(1) AAS
>>817
Immなんたらっていう名前のIMEを制御するAPIあった気がするけど、それが役に立つんじゃないのか?
819: 03/12/31 09:54 ID:zUm4t1iL(1) AAS
>>817
ふざけんなお前
検索すればすぐ出てくるだろう
820: 03/12/31 10:08 ID:lLGxR34f(1) AAS
ワロタ
821: 03/12/31 12:09 ID:gCPPzIqu(1) AAS
>>808
おいおい
GetKeyCheck() != true
なんじゃないのか?
822: 813 03/12/31 13:10 ID:S0g1wDUS(1) AAS
>>816
遅くなってゴメンナサイ、おかげさまでキャラクターがバリバリ動きます!
ありがとうございました。
追記、"key[VK_SPACE]" と書くとエラーみたいでした。
823: 03/12/31 18:56 ID:d+s4Rpq7(1) AAS
MIDIを使ってキーマニみたいなの作りたいんだけど、
何か参考になるページとかない?
824: 03/12/31 20:06 ID:6efuChc2(1) AAS
外部リンク[asp]:www.microsoft.com
825: 04/01/03 14:56 ID:UZ7OEUkf(1) AAS
よくタイマースレッドって言葉を聞くんですが、
これってビジーループしてタイマーを監視しつづけ、
変化があればメインスレッドに通知するスレッドのことですか?
これだとCPU使用率が100%になる気もするんですが、
それでいいもんでしょうか?
826(1): 04/01/03 15:13 ID:YFxdCNxD(1) AAS
100%で構わない。
Nスク作者もその方法を薦めている。
827: 04/01/03 16:54 ID:zrdxHy1T(1) AAS
そいや、smfを解析するための公開ソースって無かったっけ?
828(2): 04/01/03 20:47 ID:GciE0Bqf(1) AAS
>>826
おまえはアホか
829: 04/01/04 00:42 ID:3jP9OI5L(1) AAS
>>828
なんか困ることあるの?
830(1): 04/01/04 01:19 ID:QijQXGlg(1/3) AAS
>>828
Nスクの作者にたてつくつもり?
やめといたほうがいいよ、その道の権威なんだからさ。
ボコボコにされちゃうのが見えてる(藁
831: 04/01/04 01:27 ID:Rr6GNz9Q(1/2) AAS
Nスクって何ですか?
832: 04/01/04 01:58 ID:HVBGttSC(1) AAS
Nステなら知ってるよ
833: 04/01/04 01:58 ID:a27RA1XL(1/5) AAS
>>830
それは怖いですねー (棒読み)
834: 04/01/04 02:28 ID:ttqUyCpj(1/2) AAS
突然申し訳ありません
レスを読んできたところ、WIN32API環境において、
標準のキースキャンの方法は、いまだ分かりません。
directxを用いた方法は多分有効だと思いますが、
WIN32APを用いて、Iもしくはそれに準じた形の標準的なキースキャンの方法はあるのでしょうか?
私はMS-DOS時代、割込禁止設定、割込ベクタトラップ、MS-DOSキーバッファ潰し、
で生き延びてきました。
省1
835(1): 04/01/04 02:34 ID:Rr6GNz9Q(2/2) AAS
コールバック関数でWindowsメッセージが送られてくるので、
そのうちWM_KEYDOWNとかそんな感じのメッセージを処理すれば
良かったんだと思う。
所謂標準のSDKでは。
836: 04/01/04 03:24 ID:ttqUyCpj(2/2) AAS
>>835
レスありがとうございます。
でもそれでは、左矢印キーを押しながら、右矢印キーを短時間押すだけで
停止する処理系になってしまうと思います。
PORT 9 (PC98)監視に準じたWIN32APIの処理系を再現したいと考えております。
何か良いアイデアは無いでしょうか?
837(1): 04/01/04 04:14 ID:Ct0gv1Hf(1/2) AAS
いや停止はいないでしょ。
なんでそんな処理系になってしまうかわからん。
普通にキーの状態を取得するAPIとしては
GetAsyncKeyStateとかがあるけど。
838(1): 04/01/04 05:14 ID:vNXDyGpd(1) AAS
>>837
再びレスありがとうございます。
GetAsyncKeyStateの関数は以前から目を付けていくつかテストしておりましたが、
winmm.libとの絡みの問題と踏んでおりました。
while(1){}内のタイマ関数を少し見直してキースキャンプログラムを組みなおしてみます。
レス上の指摘どおり処理系の停止は無いとの前提で、
メインループの時間優先のコーディングと、
省2
上下前次1-新書関写板覧索設栞歴
あと 132 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.020s