タグ付けされた質問 「input」

入力は、プレーヤーの操作(マウス、キーボード、ゲームパッドなど)を介してゲームに提供されるデータです。

5
優れた2Dプラットフォーマー物理学[終了]
Box2Dで2Dプラットフォーマー用にセットアップされた基本的なキャラクターコントローラーがあり、気分を良くするために微調整を始めています。物理エンジンには微調整するための多くのノブがあり、物理エンジンで初めて書くのは私にはわかりません。ジャンプはいくつかのティックに力を加える必要がありますか?衝動?速度を直接設定しますか?アバターをすべての摩擦を取り除くことなく壁にくっつかないようにするにはどうすればよいですか(または、すべての摩擦を取り除きますが、空中でのみ)。カプセルとしてキャラクターをモデル化する必要がありますか?角の丸い箱?車輪が2つある箱?ただ一つの大きな車輪?誰かが前にこれをやったに違いないように感じます! 「赤ちゃんの最初の物理学」ではないウェブ上で利用可能なリソースは非常に少ないようです。これらはすべて、誰かがすでに問題を解決したいと思っている場所で途切れています。プラットフォーマー用の物理エンジンのほとんどの例には、浮遊感のあるコントロール、空中ジャンプ、または一時的な侵入が高すぎる場合の容易に悪用可能な動作などがあります。 私が意味するいくつかの例: ジャンプの短いタップは短い距離をジャンプします。長いタップは高くジャンプします。 高速で方向を停止または反転するときの短い横滑り。 傾斜の上に安定して立っている(ただし、ダッキングするときに傾斜を下る)。 アナログコントローラーを使用する場合のアナログ速度。 良いプラットフォーマーと悪いプラットフォーマーを区別する他のすべてのこと。 安定した移動プラットフォームをお勧めしますか? 「ほら、これをやる」を本当に探しているのではありません。明らかに、正しいことはゲームで何をしたいかによって異なります。しかし、誰かが可能性を経験して、「テクニックAはXをうまく機能し、テクニックBはYをうまく機能させるが、それはCでは機能しない」、または「if(key = =スペース)character.impulse(0、1) "
76 box2d  physics  input 

2
キャラクターをジャンプさせる方法は?
現在、Direct X 9.0を使用してC#でゲームを作成しています。ゲームのリメイクはドンキーコングNESです。私はほぼすべてを完了しましたが、マリオのジャンプの物理学に問題があります。YとXの調整用に宣言された変数があります。 これを行う簡単な方法があるかどうか疑問に思っていました。高いものと低いもので答えを探しましたが、見つかった答えは無関係であるか、XNAなどの別のプログラミング言語を使用しています。 現在、Wが押されたかどうかを確認するためにbool変数が設定されており、Wが押されると、コードをトリガーしてジャンプさせます。などをいじっています。 if (jump == true) { Playerypos -= vel; Playerxpos += vel; } うまくいきませんでした。私は答えを求めて高低を検索しましたが、今は誰かが簡単な解決策の正しい方向に私を向けることができれば、私は必死です。それは素晴らしいことです。どんな反応にも感謝します。
44 physics  input  jumping 


3
ゲームが100%CPUを使用するのは正常ですか?
ゲームエンジンにマルチスレッド入力処理を実装しました。OSをポーリングして入力を収集し、タイムスタンプを付けるコードは個別のスレッドにあり、メインスレッドの各フレームは、収集した入力を論理的なゲーム時間。それはすべて動作しますが、このセットアップではCPUの100%を使用しています。コアは2つあり、ゲームの実行中は100%になります。 他のゲームもチェックして、彼らもそうするかどうかを確認しました。たとえば、SkyrimとDoom 3は60%をわずかに超えるCPUで問題ないようです。 マルチスレッド入力を使用するゲームが100%CPUを使用することは許容されますか?そうでない場合、そのようなゲームが入力スレッドによるCPU使用率を下げるために使用するトリックは何ですか?

3
入力オブジェクトとゲームオブジェクトの懸念を分離しますか?
おそらくすべてのゲームで、開発者は何らかの方法で入力を処理する必要があります。それは、単純なキーボードイベントやマウスイベント、タッチイベント、または加速度計入力などです。この間接的な直接入力は、ゲーム内のオブジェクトに影響を与えます。同じ入力が異なるオブジェクトに影響する場合があります。今、私はこれをモデル化する方法について考えてきました。私がそれを見る方法には、2つの異なるアプローチがあります。 ゲームオブジェクト自体に処理させ、イベントをサブスクライブし、独自のメソッドを呼び出します。これには、ゲームオブジェクト自体が、どの入力がどのアクションを引き起こすかを決定できるという利点があります。欠点は、入力コードが「コア」ゲームオブジェクトコードで破損することです。また、ゲームオブジェクトはゲームの残りの状態を認識しないため、入力イベントに基づいて動作しない場合があります。これは正しくないようです。 一般的な入力コントローラーにすべての入力を処理させ、誰がどのイベントを処理するかを決定します。これは懸念をよりよく分離するように見えますが、入力コントローラークラスをゲームオブジェクトに緊密に結合します。誰がどのイベントをどの状態で受信したいかを知る必要があります。これも正しくないようです。 これを処理するためにどのような戦略を使用していますか?

3
ポーリングとイベント駆動入力
入力メソッドにポーリングを使用してゲームを開発しています。しかし、ゲームメニューやその他のUIコンポーネントをさらに深く掘り下げているので、おそらくイベントドリブンの入力が必要なことがわかりました。おそらく、UIにイベントドリブンを使用し、「world」入力をポーリングすることで、両方を持つこともできます。どうすればいいのか興味があります。 私はポーリングを次のように定義しています:更新ループごとに、どのキーが押されているか、マウスがどこにあるか、ボタンが押されているかを確認し、収集した情報に基づいてアクションを実行します。 イベント駆動型を定義しています:割り込みベースのイベント、イベントが発生し、割り込みがトリガーされ、イベントに基づいてコードブロックが実行される場合。 すべてのイベント駆動型、すべてのポーリングに行くのが最善だと思いますか、それとも両方の組み合わせが受け入れ可能ですか?どちらかの長所と短所がある場合は、それらをリストしてください。ありがとう。 編集 ゲームはJava / OpenGLベースであるため、Windows / Mac / Linuxにリリースされます。それをモバイルデバイスに拡張する可能性は低いです。ゲームはRTSスタイル、3人称3Dです。 編集2 私はこれを実装した方法にまだ完全に満足していませんが、私が向かっているのはUIでイベントをキャッチすることであり、イベントがUIコンポーネントのいずれかによって処理されない場合、イベントをピッキング/選択のための「世界」。何かのようなもの: @Override private boolean handleEvent(Event event) { if(hud.handleEvent(event)) { return true; } return WORLD.handleEvent(event); } この方法では、ボタンの背後にあるオブジェクトを選択するためにUIからクリックが漏れることはありません。 現在、私のカメラコントロールはまだポーリングに基づいており、今のところ機能しているようですが、後で更新する可能性があります。 すべての回答に感謝します。申し訳ありませんが、1つしか選択できません。
19 java  input  events  polling 

1
UnityでSurfaceペンをサポートする方法は?
私たちのゲームはタッチまたはマウスでうまく機能しますが、Surfaceペンはポインティングデバイスとしてまったく登録されていないようです。ネイティブビルドでUnityのペンをどのようにサポートできますか? Unity Answersサイトのこの質問は、UWPアプリとしてビルドできることを示唆していますが、それは、.NETフレームワークの非常に限られたサブセットに限定することを意味します(具体的には、多くのシリアル化ライブラリを失います)。
18 unity  input  surface 

2
大規模ゲームの入力管理手法
大規模なゲームで入力を管理するための標準的な手法はありますか。現在、私のプロジェクトでは、すべての入力処理は次のようにゲームループで行われます。 while(SDL_PollEvent(&event)){ switch(event.type){ case SDL_QUIT: exit = 1; break; case SDL_KEYDOWN: switch(event.key.keysym.sym){ case SDLK_c: //do stuff break; } break; case SDL_MOUSEBUTTONDOWN: switch(event.button.button){ case SDL_BUTTON_MIDDLE: //do stuff break; } } break; } (私はSDLを使用していますが、メインプラクティスではライブラリとフレームワークも適用されると考えています)。大規模なプロジェクトでは、これは最善の解決策ではないようです。ユーザーが何を押したかを知りたいオブジェクトがいくつかある場合があるため、それらのオブジェクトが入力を処理する方が理にかなっています。ただし、イベントを取得すると、イベントバッファからプッシュされるため、別のオブジェクトがその入力を受け取らないため、すべてが入力を処理することはできません。これに対抗するために最も一般的に使用される方法は何ですか?
16 c++  sdl  input  standards 

2
コンポーネントベースのエンティティシステムでのゲームの状態と入力の処理
私の質問は: ゲーム状態オブジェクトのスタックを保持することなく、エンティティシステムでゲーム状態を処理するにはどうすればよいですか? したがって、エンティティシステムの設計とは、たとえばエンティティが入力イベントに登録する必要がある場合、入力コンポーネントが入力システムを呼び出し、「このエンティティをこの入力に登録する」と言うことです。これはすべて問題ありませんが、これにゲーム状態の概念(たとえば、一時停止画面)を追加すると、エンティティが現在の状態にあり、入力を受け取る必要がある場合に解決することが問題になります。 「これらのゲーム状態にあるときにこのエンティティをこの入力に登録する」と言うように入力コンポーネント/システムを拡張できますが、これにはすべてのエンティティがどの状態で使用されるかを知る必要があり、それは明らかではないかもしれません。また、登録された入力(およびコールバックを使用する他のシステム)ごとにゲームの状態のリストを保持することは、あまり効率的ではありません。 私が持っていた別のアイデアは、ゲーム状態を表すエンティティがあり、無効になっていることをマークし、入力イベントを生成するときに、そのエンティティが無効なゲーム状態エンティティの子孫ではないことを確認することです。コールバックごとに親を解決するのは費用がかかるようです。 別のアイデアは、すべてのシステムに現在の状態に対してキー設定されたデータを保存させることです。そうすることで、入力を生成するときに、ターゲットエンティティは候補にさえなりません。しかし、これは異なる状態のエンティティ間の通信を許可する機能を本当に損ないます(一時停止画面ではそれほど問題ではありませんが、Oblivion / Skyrimでのロック選択を考えてください)。 私が持っていた唯一の他のアイデアは、すべてのコンポーネントが状態変更イベントを処理し、関連するシステムと通信して登録済みのものを無効にし、この状態に戻るときに再び有効にすることです。 2番目(オブジェクトを無効としてマークする)と4番目(各コンポーネントが状態の変更を処理する)は、私のアイデアの中で最高のように見えますが、特に素晴らしいと思うものはありません。 他の誰かがこれを行う方法について他のアイデアを持っていますか? 編集この質問では特に入力について説明しますが、衝突、タイマーイベントなど、エンティティにメッセージ/イベントを送信できるシステムを意味します。

5
タッチデバイスの2Dプラットフォーマーに使用するのに適した入力方法は何ですか?
スーパーミートボーイのような2Dプラットフォーマーゲームを作成しています。このゲームでは、リードキャラクターの動きの精度が重要です。libgdxを使用しています。PCのキーボードコントロールは正確に機能しますが、加速度計の処理に関しては、キャラクターを正確に処理するのは非常に困難です。これは、避難するための混雑した安全な経路がある段階で悪化します。入力を処理するために画面上のアナログボールを実装することを考えましたが、インターネット上でその結果の多くの悪い結果を読みました。 タッチデバイスのプラットフォーマーゲームに使用する直感的で正確な入力方法は何ですか?
16 2d  input  touch  multitouch 

7
テキストアドベンチャーゲームでユーザー入力をどのように解析すればよいですか?
テキストアドベンチャーでのユーザーコマンドの解析は、アドベンチャーの単純な「北へ」から、hhgttgでの気が遠くなるような巧妙なものまでさまざまです。 80年代にコンピューター雑誌で素敵なハウツーを読んだことを覚えているようですが、今はウィキペディアの簡単な参考資料を除いて、ネット上でほとんど何も見つかりません。 どうしますか? 更新:Ludum Dareエントリーで可能な限り単純なアプローチを使用しました。

1
Mac OSXでの入力にPS3コントローラーを使用する
OSXのPS3コントローラーに接続するUSBドライバーを見つけることができました。ここで報告されているように、Bluetooth経由でコントローラーに接続できます。 Snes9xを介して入力が適切に機能していることを確認しました。 とにかく、それは私の実際の質問の背景にすぎません。MacでC ++経由でPS3 HIDにアクセスする方法はありますか?XCodeを使用したMacでのC ++開発は比較的初心者であり、使用する可能性のあるライブラリの検索でインターネットは失望しています。 コードでコントローラーのボタン/軸の状態にアクセスする方法についてアイデアを持っている人はいますか?それらを入力マップに転送できますか?

6
PC以上のものをターゲットにする場合、マウスを念頭に置いて開発する必要がありますか?
かなり簡単な質問ですが、答えはわかりません。 マウスを使用するユーザーコントロールを開発するか、マウスを完全に無視してボタンコントロールのみを使用する必要があります。 例は次のとおりです。 アイテムをクリックしてピックアップするか、アイテムの近くに移動してボタンを押してピックアップします。 特にPC以外のプラットフォームをターゲットにしたい場合、これについてどう思いますか?


2
プレーヤーが停止したときに、ローカル入力予測によるプレーヤーのドリフトを停止するにはどうすればよいですか?
私は2Dサーバークライアントマルチプレイヤーゲームエンジンに取り組んでいます(こちらで試すことができます)。WebRTCを使用しDataChannelます。(接続はピアツーピアですが、ホストピアはサーバーとして機能します。) (接続性を除く)最大の問題は、ローカル入力の予測です。通常の操作:キーを押すと、プレイヤーは即座に移動し、どのキーが押されたかをホストに伝え、ホストからデータを受け取り、それを過去の位置と比較します。差異がある場合、位置は時間とともに修正されます。これは、pingが高い場合でも、低いパケット損失またはPDVでうまく機能します。 損失またはPDVがある場合、偏差は大きくなる可能性があります。これは、入力の変更を示す最初のパケットが遅延またはドロップされた場合、ホストが後で検出し、ローカル入力の予測よりも遅れてそのプレーヤーの変更を開始するためだと思います。 プレーヤーが動いている場合は、目立たないため、適用される修正の量を増やします。これは、移動を開始するときと移動しているときにギャップを埋めるようです。ただし、修正が突然停止した場合、修正はより顕著になります。その後、ホストが後で停止したとPDVまたは損失が意味する場合、ホストはオーバーシュートし、少し先に進んでいるというデータを送り返し、修正によりプレイヤーは少しドリフトします。不安定な接続では、プレイヤーはしばしば停止した後に顕著にドリフトします。 私は他のゲームでこれに気づいていません。これをどのように軽減できますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.