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

プラットフォームベースの動きに重点を置いたアクションゲームのジャンル。これは、2Dと3Dの両方のゲームの世界に等しく存在します。


7
2D Platformer AABBの衝突問題
AABBの衝突解決に問題があります。 最初にX軸を解決し、次にY軸を解決して、AABB交差を解決します。これは、このバグを防ぐために行われます:http : //i.stack.imgur.com/NLg4j.png 現在のメソッドは、オブジェクトがプレーヤーに移動し、プレーヤーを水平方向に押す必要がある場合に正常に機能します。.gifでわかるように、水平スパイクはプレーヤーを正しく押します。 ただし、垂直スパイクがプレーヤーに移動しても、X軸が最初に解決されます。これにより、「スパイクをリフトとして使用する」ことができなくなります。 プレーヤーが垂直スパイクに移動すると(重力の影響を受けて落下します)、最初はX軸にオーバーラップがなかったため、Y軸に押し込まれます。 私が試したのは、このリンクの最初の回答で説明した方法でした:2D長方形オブジェクト衝突検出 ただし、スパイクと移動オブジェクトは、速度ではなく位置を変更することで移動します。Update()メソッドが呼び出されるまで、次の予測位置を計算しません。言うまでもなく、このソリューションも機能しませんでした。:( 上記の両方のケースが意図したとおりに機能するように、AABBの衝突を解決する必要があります。 これは私の現在の衝突ソースコードです:http : //pastebin.com/MiCi3nA1 このバグは最初からずっとエンジンに存在していたので、誰かがこれを調べることができれば本当に感謝しています。これは真剣に衝突コードを見て夜を過ごし、「楽しい部分」に到達してゲームロジックをコーディングするのを妨げています:( XNA AppHubプラットフォーマーデモと同じ衝突システムを実装しようとしました(ほとんどのものをコピーアンドペーストします)。ただし、私のゲームでは「ジャンプ」バグが発生しますが、AppHubデモでは発生しません。[ジャンプバグ:http : //i.stack.imgur.com/NLg4j.png ] ジャンプするには、プレーヤーが「onGround」であるかどうかを確認し、Velocity.Yに-5を追加します。 プレーヤーのVelocity.XはVelocity.Yよりも高いため(図の4番目のパネルを参照)、onGroundは本来あるべきではないときにtrueに設定され、プレーヤーを空中でジャンプさせます。 プレーヤーのVelocity.XがVelocity.Yよりも高くなることはないので、AppHubデモではこれは起こらないと思いますが、間違っている可能性があります。 これを解決する前に、まずX軸で解決し、次にY軸で解決しました。しかし、それは私が上で述べたようにスパイクとの衝突を台無しにします。

6
潜在的に無限の2Dマップデータを保存する方法は?
現在、100 x 100タイルのチャンクを処理できる2Dプラットフォーマーがあり、チャンク座標はlongとして格納されているため、これがマップの唯一の制限です(maxlong * maxlong)。エンティティの位置などはすべてチャンク関連であるため、制限はありません。 私が抱えている問題は、何千ものファイルを持たずにこれらのチャンクを保存してアクセスする方法です。すぐにすべてを開く必要のない、できればすばやく低コストのアーカイブ形式のアイデアはありますか?
29 xna  2d  c#  maps  platformer 

2
メガマンスタイルの画面スクロールデザイン
NESの古典的なMega Manシリーズでは、非常に特殊なスクロール手法を使用しており、実装に頭を悩ませています。基本的に、レベルはすべて同じサイズの「画面」に分割されます。いくつかの画面は互いにスムーズにスクロールし、より広い遊び場のように見えます。一部の画面では、プレーヤーが画面の端に到達するまでカメラのスクロールが停止します。画面の端に遷移すると、次の画面が表示されます。1つの画面に複数のトランジションを設定することもできます。たとえば、1つの画面に移動するラダーがありますが、別の画面に進むこともできます。 これらの画面遷移はどのようにモデル化できますか? 画面0は、プレーヤーが開始する開始画面です。 画面0〜3は水平方向に滑らかにスクロールし、プレーヤーには1つの連続したフィールドとして表示されます。 画面3とそれに隣接する画面4と5の間には遷移があるため、カメラが画面3の右端または上端を超えて進むことはありません。 プレーヤーがトランジションエッジのいずれかに移動すると、ユーザー入力は一時的に無効になり、カメラは新しい領域に移行し、その後ユーザー入力が復元されます。 ブルースクリーン(画面5)では、水平方向のスクロールのみが無効になっているため、垂直方向の遷移のみが可能です。 緑色の画面(画面6)には画面5に戻る垂直方向の遷移がありますが、画面7への水平方向のスムーズスクロールも可能です。 編集:部屋の観点からトランジションを実装すると、これにつながります: 矢印付きの小さなノッチは、遷移が発生する可能性のある領域です。各領域には「方向」があり、部屋の可視領域のすぐ外側にあります。プレーヤーがリージョンにヒットするとすぐに、トランジションが開始されます。
25 2d  camera  platformer 

6
楽しくてやりがいのあるマリオスタイルのプラットフォーマーレベルを設計するためのテクニックは何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 8か月前に閉鎖されました。 マリオタイプのゲームを作るのに必要なものはすべて揃っています。挑戦的で楽しいレベルにするために、レベルをどのように設計するのか、私にはわかりません。任意のヒント? 敵を殺す唯一の方法は、敵に飛び乗ることです。そのため、ボスを作るのは難しいと思いました。最後のレベルを長くするつもりだった。これは悪い考えですか?

7
2Dプラットフォーマーでプレイヤーが押しつぶされていることを検出するにはどうすればよいですか?
#1に示すように、プラットフォーマーキャラクターの衝突をチェックしています。赤い点はチェックされるピクセルで、灰色の線はそれらが関係する軸を示します。この方法で衝突をチェックすることで得られる結果が気に入っています(たとえば、バウンディングボックスに対して)。クラッシュ検出という1つの問題を除いて、すべてが希望どおりに機能します。 次の画像では、水色のボックスは地面を表し、オレンジ色のボックスはオブジェクトを表し、矢印は移動の方向を示します。 プレイヤーが押しつぶされたときを検出する簡単な解決策は、反対側の衝突ポイントが両方ともトリガーしているかどうかを確認することです。もしそうなら、プレイヤーは粉砕されています。#2では、通常のクラッシュシナリオを見ることができます。プレーヤーは接地され、上部の衝突点は落下オブジェクトと交差します。これはクラッシュを引き起こします。 #3、4、および5は、問題のあるシナリオを示しています。#3では、プレーヤーはオブジェクトに向かって移動し、オブジェクトは上に移動します。右側の衝突点がオブジェクトに当たり、衝突を引き起こしてプレイヤーを停止させます。 これで、オブジェクトが上に移動し続け、プレイヤーが右に移動し続けると(#4に示すように)、オブジェクトはプレイヤーの右側の衝突点をクリアし、プレイヤーは右に移動します。しかし、今では、オブジェクトが上部の衝突点と交差しているため、不要な垂直クラッシュが発生しています。 同様のシナリオを#5に示します。2つのオブジェクトは、下部の衝突点をクリアするのに十分離れているため、プレーヤーは落下できますが、側面の衝突点がクリアされるまではできず、不要な水平クラッシュが発生します。 私は解決策に頭を悩ませてきましたが、私が思いついたものは何も特にうまくいきませんでした。 混乱を解消するために、赤い衝突点はスプライト内にあり、灰色の線は各衝突点に関連する軸を示すためにのみ使用されていました。たとえば、キャラクターのスプライトが単純な緑の正方形の場合、衝突点は次のようになります。

13
探索ゲームでヒーリングを面白くする方法
探求に重点を置いたゲームを作成していますが、治癒には少し困っています。 問題は、敵がランダムにヘルスを落とすという考えが好きではないということです。これは通常、ヘルスが低く、ヒーリングステーション(Metroid、Axiom Verge)の近くにいないときに粉砕するため、魂をコピーしたくないHollow Knightの/ Focusシステム(戦闘システムはすでに私に盗まれています:3)が、Hollow Knightは、ヒーリングを面白くするために探索に焦点を当ててプレイした唯一のゲームです。 私は自動再生についても考えましたが、それはプレイヤーが治癒中のボスの戦い中にplayer病者に簡単につながる可能性があり、それはゲームプレイの流れを壊します。 私は敵がヘルスポイントの1/8を回復するようなことも考えましたが、これはプレイヤーが1/8のゲインを得た後の緊張を和らげるので、再びヒットしても死ぬことはありません。ゲームをそのすべての攻撃と少しの防御のように感じさせます。 プレイヤーが癒すために何かを食べたり飲み物を飲まなければならないアイテムのアプローチについても考えていますが、アイテムを使い果たすと、それ以上回復するまで癒すことはできなくなります(レジェンドゼルダの)。 私は癒しについてもまったく知りませんでしたが、探索すると、ハードボスの前にダムヒットするか、ボスが難しくなる前にダムヒットする(咳カップヘッド咳)をと、プレイヤーはコミットするだけです自殺するか、ヒーリングステーションに戻ります。 ゲームプレイの流れを壊さずに、癒しを面白くするにはどうすればよいですか? これは2Dプラットフォーマーであり、戦闘ではジャンプが非常に重要です。

1
意図的な不正確さでレトロ/ NESスタイルの物理を再現
バックグラウンド: 私のレトロなプラットフォーマーのリメイクプロジェクトのジャンプ曲線を正しく取得するのに問題があります。元のゲームはNES用であり、プレイヤーのベロシティは2つの別々の部分に保存されます。1バイトが整数で、もう1バイトが小数部分です。 重力はプレーヤーのY速度に0.25 /フレームの割合で追加されます。 プレイヤーがジャンプすると、彼のY速度は-4.64453125に設定されます。ジャンプ曲線の残りの部分は重力に任されています。 プレーヤーが上昇すると、垂直速度は0.25 /フレームの割合で0に収束します。ただし、プレーヤーの速度がゼロ未満の値に達すると、速度は異なるパターンに従って変化します。フレームごとに0.25ずつ着実に減少するのではなく、次のパターンに従います。 [1.75, -0.25, -0.25, -0.25, 1.75, -0.25, -0.25, -0.25, 1.75, ...] 整数オーバーフローと関係があるようです。 データ: 元のデータのダンプを次に示します。速度の表です。 Jump Curve Y-Hi Y-Lo Decimal Change/Frame 4 165 4.64453125 ? 4 101 4.39453125 -0.25 4 37 4.14453125 -0.25 3 229 3.89453125 -0.25 3 165 3.64453125 -0.25 3 101 3.39453125 -0.25 …

3
プラットフォームゲームで動くプラットフォームをどのように処理しますか?
私はbox2dなどを使用したくありません。単純な移動プラットフォーム(上下、左右、斜め、円形のパス)が必要です。私の質問は、プレーヤーがバウンスしたり揺れたりすることなく、プラットフォームにしっかりと固定されるように、更新順序/制御階層を処理することですか?

1
プラットフォーマーゲームでは、「地面の穴」の障害とは何ですか?
ほとんどのジャンプアンドランゲームでは、地面の穴が一般的な障害です。それらを飛び越える必要があります。そうしないと、転倒して命を失います。 ドキュメンテーション、変数の命名、および議論のために知っておくと役立ちます:それらの穴は何と呼ばれていますか?


4
プレイヤーにプレイ方法をエレガントに教えるにはどうすればよいですか?
パズルプラットフォーマーがプレイヤーにプレイ方法を教える方法について考えてきました。 私はスーパーミートボーイ、特に教えられていることに気付かずに教える方法が好きです。それは私を興奮させ続けました。単純でレベル設計によって明確に強制されている場合でも、自分で何かを理解することに満足があります。 それぞれの新しいスキルやルールを教えるための「チュートリアルレベル」以外に、他の方法はありますか?それぞれのメリットとコストは何ですか?

3
2Dゲームのコリジョンレスポンス:特定の軸に沿ったSATと最小変位?
作成中の2Dゲームに衝突システムを実装しようとしています。分離軸定理(metanetのコリジョンチュートリアルで説明されている)は、衝突検出を処理する効率的で堅牢な方法のように見えますが、私は彼らが使用するコリジョンレスポンスメソッドがあまり好きではありません。オーバーラップが最小の軸に沿って盲目的に移動することにより、アルゴリズムは移動するオブジェクトの前の位置を単純に無視します。つまり、静止オブジェクトに進入して跳ね返るまで静止オブジェクトと衝突しません。 これが重要な状況の例を次に示します。 上記のSATメソッドによれば、長方形は斜辺に垂直な三角形から単純に飛び出します。 ただし、現実的には、長方形は三角形の右下隅で停止する必要があります。これは、変位ベクトルに沿って連続して移動している場合の最初の衝突点になるためです。 さて、これは実際にゲームプレイ中は重要ではないかもしれませんが、この方法で正確かつ一般的に正確な変位を達成する方法があるかどうかを知りたいです。私は過去数日間、頭を悩ませてきましたが、まだあきらめたくありません! (StackOverflowからクロスポストされ、ルールに反しないことを願っています!)

3
リアルタイムマルチプレイヤープラットフォーマーゲームの作成には何が関係しますか?
ネットワーク/インターネットを介して作業したい「協力」機能を備えたプラットフォーマーゲームを作成しています。 今、私はすべてのプログラマーがゲームネットワーキングについて知っておくべきことなどの記事を含むネットワークゲームプログラミングを読み上げたので、ピアツーピアロックステップとサーバークライアント予測アーキテクチャのようなテクニックの違いを理解しています: インターネット上でプレイされるリアルタイムゲームでは、ピアツーピアロックステップは単にオプションではないと結論付けました。 また、プラットフォーマーにとっても、単純なクライアントサーバーアーキテクチャ(何らかのクライアント予測のない)でも、サーバーへのラウンドトリップによって引き起こされるアクションとリアクションの間の遅延により、ゲームプレイが低下することを心配しています。(私は中央サーバーの必要性を排除したいと言ったので、プレーヤーの1人、クライアントだけが実際にこの遅れを経験します)。 これはクライアントの予測を残しますが、プラットフォーマーのような単純なゲームでさえ、これはまだかなり複雑に聞こえます。 マルチプレイヤープラットフォーマーゲーム用の有効なクライアント予測システムを作成するにはどうすればよいですか?

3
衝撃ジャンプ
私を困惑させていることが1つあります。それは、プラットフォーマーで「フェイクインパルス」ジャンプを実装する方法です。私が何を話しているのかわからない場合は、マリオ、カービー、Cave Storyからの引用のジャンプを考えてください。彼らの共通点は何がありますか?さて、ジャンプの高さは、ジャンプボタンを押し続けている時間によって決まります。 これらのキャラクターの「インパルス」は、実際の物理学のようにジャンプする前ではなく、空中で構築されていることを知っています-つまり、最大高さの途中で指を非常にうまく持ち上げることができ、それとフルストップの間の減速。ホップをタップして長押しするだけでいいのは、そのためです。彼らが軌道をアークとして保持していることに魅了されます。 私の現在の実装は次のように機能します: ジャンプボタンを押している間、重力はオフになり、アバターのY座標は重力の一定値だけ減少します。たとえば、物がティックごとにZ単位で落ちる場合、ティックごとにZ単位上昇します。 ボタンを放すか、制限に達すると、アバターは、速度が0に達するまでXユニットをカバーする量で減速します。一度、速度が重力に一致するまで加速します-例に固執すると、Xユニットをカバーしながら0からZユニット/ティックまで加速すると言えます。 ただし、この実装では、ジャンプが対角線になりすぎ、アバターの速度が重力よりも速くない限り、現在のプロジェクトでは速度が速すぎます(ティックごとに約4ピクセルで移動し、重力はティックごとに10ピクセルです) 40FPSのフレームレート)、水平よりも垂直になります。プラットフォーマーに精通している人は、ゲームの重力ほど速くなくても、キャラクターのアークジャンプはほとんど常に彼らがさらにジャンプすることを可能にし、それが正しくプレイされない場合、それ自体が証明されることに気付くでしょう非常に直感に反します。私の実装が非常に迷惑であることを証明できたので、私はこれを知っています。 誰かが同様のメカニズムを試したことはありますか?この種のプラットフォーマージャンプの背後にあるものを知りたいです。事前にこれを経験したことがなく、試してみたい場合は、説明された実装を修正または強化しようとしないでください、私が正しい方法でなかった場合-から解決策を作ってみてくださいスクラッチ。これらの擬似インパルスがどのように機能するかを示している限り、重力、物理学、その他を使用するかどうかは気にしません。 また、言語固有のコーディングを避けるためにそのプレゼンテーションが欲しいです。たとえば、C ++の例を共有したり、Delphiを使用したりします。プロジェクトにXNAフレームワークを使用していて、C#のことを気にしない限り、他のコードを読むのに忍耐はありません。他の言語の特定のゲーム開発者はここで達成することに興味があるので、擬似コードにこだわる必要はありません。 よろしくお願いします。

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