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

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

5
タイルベースの2Dプラットフォーマーでの45°の傾斜
タイルベースのプラットフォーマーに単純な45°の傾斜を持たせたいのですが、アルゴリズムをダウンさせることはできません。コードとビデオを見てください、多分私は明らかを見逃していますか? //collisionRectangle is the collision rectangle of the player with //origin at the top left and width and height //wantedPosition is the new position the player will be set to. //this is determined elsewhere by checking the bottom center point of the players rect if(_leftSlope || _rightSlope) { //Test bottom …
12 xna  c#  xna-4.0  platformer 

4
プレーヤーをスムーズに階段に登らせる
私は2Dプラットフォームのゲームを持っています。プレイヤーは常に右側に走りますが、地形は常に水平ではありません。例: プレイヤーボックスと他のブロックとの交差をチェックするだけで境界ボックス衝突システムを実装しました。大きなブロックに遭遇した場合にプレイヤーが実行されないようにして、ジャンプする必要がありますが、階段を置くときは、水平な地面と同じようにスムーズに走ります。衝突システムでは、階段を飛び越えて通過する必要があります。 階段の端の間に線を引いて、その線にプレイヤーの動きを課すことを考えました…どう思いますか?もっと賢いことはありますか?

2
2Dプラットフォーマーでキャラクターを凹凸のある壁の上を歩くにはどうすればよいですか?
私は、横向きや逆さまなど、あらゆる角度で有機的な表面を「歩く」ことができるプレイアブルキャラクターを作りたいです。90度の角度の直線ではなく、傾斜したカーブしたフィーチャを持つ「オーガニック」レベル。 私は現在AS3(中程度のアマチュア経験)で作業しており、基本的な重力ベースの物理学にNape(かなり初心者)を使用しています。この歩行のメカニズムは明らかに例外です。 おそらくネープ拘束を使用して、この種の歩行のメカニズムを実行する手続き的な方法はありますか?または、レベルサーフェスの輪郭に沿って明確な歩行「パス」を作成し、それらを使用して歩行の動きを制限するのが最善でしょうか。

2
Microsoft XNA Platformerの例、衝突検出は正確に実装されていますか?
Microsoftが提供する例では、衝突の検出(私が確認できることから)に小さなエラーがあるようです。ユーザーが通過不可能なタイルと衝突すると、交差の深さが計算されます。奥行き値XとYの小さい方を使用してユーザーの位置を固定し、タイルと衝突しないようにします。しかし、ユーザーが斜めに移動している場合、これにより、ユーザーが最初にタイルと最初に衝突するポイントに正確に到達しない可能性がありますか? 私はおそらく間違っているが、それは私がそれを見る方法に過ぎない。 private void HandleCollisions() { // Get the player's bounding rectangle and find neighboring tiles. Rectangle bounds = BoundingRectangle; int leftTile = (int)Math.Floor((float)bounds.Left / Tile.Width); int rightTile = (int)Math.Ceiling(((float)bounds.Right / Tile.Width)) - 1; int topTile = (int)Math.Floor((float)bounds.Top / Tile.Height); int bottomTile = (int)Math.Ceiling(((float)bounds.Bottom / Tile.Height)) - 1; // Reset …

4
上に移動するプレーヤー、彼はジャンプしていますか、それとも登っていますか?
はしごを含む2D物理ベースのプラットフォーマーゲームで、上に移動するプレーヤーがジャンプによって発生したのか、はしごを登って発生したのかをどのように判断して、どのアニメーションを再生するかを知っていますか? そして一般的に、明らかに方向ベクトルは再生するアニメーションを決定するのに十分ではありません。どのようにして動きの原因も決定するのですか(使用する正しいスプライトを知っているので)?

1
マルチプレイヤープラットフォーマー-サーバー上の単一のクライアントでサーバーの修正が通常必要ですか?
私は現在、かなりシンプルなマルチプレイヤープラットフォーマーに取り組んでいます。私は待ち時間を隠すために使用される手法に関する記事をかなり読みましたが、それでも特定の概念を理解することができません。私はこのトピックが非常に興味深く、自分でアイデアを試したいと思っていますが、私の質問にはgamedev stackexchangeに尋ねる方が効率的だと思います。私の現在の状況と、その過程でどんな質問が生じたかを説明するために最善を尽くします。 現時点では、サーバーと同期するプレーヤーを1つだけにしたいと思っています。理論的には、クライアント側の予測を使用するプレイヤーは、自分の動きに影響を与える外部要因がないため、サーバーの修正は不要であると想定しました。したがって、私のプロトタイプでは現在、サーバー修正を送信せずにサーバーと同期しているプレーヤーは1つだけです。 ゲームネットワーキングに精通している場合は、コンテキストセクションをスキップすることもできますが、途中で問題が発生した可能性もあります。 クライアントループ(フレームごとに1回、〜16.67msごとに1回) 単純化されたクライアントループは次のようになります。 ローカル入力(WASD)を確認し、アクション(例:)としてパッケージ化しますType=MoveLeft, Time=132.0902, ID=15。後で送信するために、パッケージ化されたアクションを保持します。また、目的のアクションをゲームのローカルの物理シミュレーションに直接適用します。たとえば、MoveLeftアクションがある場合、プレーヤーの速度を左に向けて力を加えます。 チェックしてアクションを送信します。クライアントの帯域幅を乱用しないようにするには、パッケージ化されたアクションを特定の間隔(30msなど)でのみ送信します。 サーバーの変更を適用します。ある時点で、これはサーバーが受け取ったデルタと修正を処理し、それらをゲームのローカルシミュレーションに適用します。この特定の質問では、これは使用されません。 ローカル物理学を更新します。メインプレーヤーで物理ループを実行します。基本的に、これはプレイヤーの動きのクライアント側の予測を行います。これにより、プレーヤーの速度に重力が追加され、プレーヤーの速度が位置に適用され、途中で衝突が修正されます。物理シミュレーションは常に固定デルタ秒で実行されることを指定する必要があります(実際のデルタ秒に応じて複数回呼び出されます)。 。 物理学およびその他のセクションについては、質問には必要ないと感じたため、いくつかの具体的な詳細はスキップしますが、質問に関連するかどうかは、遠慮なくお知らせください。 サーバーループ(15msごと) 単純化されたサーバーループは次のようになります。 アクションを処理します。クライアントから受け取ったアクションパッケージを確認し、サーバーの物理シミュレーションに適用します。たとえば、5つのMoveLeftアクションを受け取ることができ、力を速度に5回適用します。アクションパッケージ全体が1つの「フレーム」で実行されることに注意してください。これは、アクションが発生するとすぐに適用されるクライアントではなく、 ゲームのロジックを更新します。ゲームの物理演算、プレーヤーの移動、衝突の修正などを更新します。また、後でプレーヤーに送信された重要なイベント(プレーヤーのヘルスの低下、プレーヤーの死亡など)もパッケージ化します。 修正を送信します。私たちは定期的に(たとえば、35ミリ秒ごとに)デルタを他のプレーヤー(たとえば、プレーヤーの位置、ヘルスなど)に最近変更した場合に送信します。この部分は現在実装されていません。クライアント側の予測が適切に機能することを確認するために、単一のプレーヤーのシミュレーションで修正なしでクライアントとサーバーで同じ結果が得られるようにしたいのです。 問題 現在のシステムは単純な状況では問題なく機能し、単純な水平移動でも非常によく似た結果が得られたことを嬉しく思います(この不正確さは浮動小数点の精度エラーが原因であると思います)。 プロトタイプのグラフィックは無視してください。白い長方形=プレーヤー、赤い長方形=障害物、青い=背景 しかし、ジャンプしたり、孤立した障害物に近づいたりするなど、時間に敏感な動きをした後、同期エラーが発生します。 理論的には、クライアントの立場に影響を与える外部要因がないため、どちらも常に同じ結果になると予想します。しかし実際には、問題は理解できたと思います。 そのような障害物の周りをジャンプすることは、プレーヤーのタイミングに大きく依存するため、速度がその位置に適用されたときの小さな変動は、結果に繰り返し実行されます(たとえば、クライアントは、サーバーは後でアクションパッケージ全体を受け取り、障害物にしばらく留まり、最終結果を変更するため、サーバーはそれを行います)。クライアントとサーバーがそれを処理する方法の違いは、サーバーがそれらを受信するときに、サーバーがそれらをすべて一括して実行するのに対し、クライアントはそれらが発生するとすべてのアクションを実行することです。 質問 この長いコンテキストは最終的に私の質問につながります(ここまで読んでいただきありがとうございます):サーバーと同期しているプレーヤーが1人だけの場合でもサーバーの修正が必要ですか、それとも特定の手法を使用して時間に敏感な状況での非同期を回避する必要がありますか? 私はいくつかの可能な解決策を考えましたが、そのいくつかは私にはあまり満足できません: サーバー修正を実装します。これが正常な動作であると単純に想定し、発生したエラーを修正してください。とにかくそれを実装したかったのですが、これまでに行ったことを受け入れられるようにしたかっただけです。 提供されたクライアント時間を使用して、目的のアクションを適用します。これはラグ補償と似ていると思います。「時間をさかのぼって」動きをチェックする必要があります。サーバーの修正を適用するようなもので、時間を遡り、その後の次のアクションを再適用します。本当に嫌いです。それは複雑でリソースが高価に見え、クライアントの指定された時間を信頼する必要があります(ただし、時間がかなり合法に見えることを実際に確認する予定ですが)。 GameDevelopment StackExchangeに、私のすべての問題を解決する優れた新しいアイデアを求めてください。 私はゲームネットワーキングの世界を始めたばかりなので、上記のコンセプトを修正、批判、侮辱したり、ワンダフルワールドオブネットワーキングの旅に役立つアイデアやリソースを提供したりしてください。他の場所で自分の答えを見つけることができたとしたら、失礼します。 貴重なお時間をありがとうございました。

1
gluLookAtはどのように機能しますか?
私の理解から、 gluLookAt( eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z ); 以下と同等です。 glRotatef(B, 0.0, 0.0, 1.0); glRotatef(A, wx, wy, wz); glTranslatef(-eye_x, -eye_y, -eye_z); しかし、ModelViewマトリックスを出力すると、への呼び出しがglTranslatef()正しく機能していないようです。コードスニペットは次のとおりです。 #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> #include <iomanip> #include <iostream> #include <string> using namespace std; static const int Rx = 0; static const int Ry …

8
プラットフォーマーのキャラクターが壁のタイルでクリッピングしないようにするにはどうすればよいですか?
現在、私は地形のタイル(Cave Storyから借りたグラフィック)を備えたプラットフォーマーを持っています。ゲームはXNAを使用してゼロから作成されているため、既存のエンジンや物理エンジンは使用していません。 タイルの衝突はこの回答で説明されているとおりに正確に説明され(長方形と円の単純なSATを使用)、すべてが正常に機能します。 落下/ジャンプ中にプレーヤーが壁にぶつかった場合を除きます。その場合、彼らはタイルに引っ掛かり、実際にはない床や天井にぶつかったと思い始めます。 このスクリーンショットでは、プレーヤーは右に移動しており、下に落ちています。したがって、移動後、衝突がチェックされます-そして最初に、プレイヤーキャラクターが床から3番目のタイルに衝突し、上に押し出されていることがわかります。第二に、彼は自分の隣のタイルと衝突して横に押されていることがわかりました-最終的にプレイヤーキャラクターは自分が地面にいて落下していないと考え、タイルに走っている限り「キャッチ」します。 。 タイルを上から下に定義することでこれを解決でき、スムーズに落下しますが、逆のケースが発生し、壁に上向きにジャンプすると、そこにない天井にぶつかります。 これを解決して、プレイヤーキャラクターが壁に沿って落下するようにするにはどうすればよいですか?

2
タイルサイズと比較したヒーロー/キャラクタースプライトサイズ?
だから私はこのシンプルなプラットフォーマーを作っています。ヒーローはサイズが16x16ですが、タイルのサイズも16x16です。どちらがいいですか?しかし、私のゲームウィンドウ/世界は800x416であり、これによりヒーローは比較すると本当に非常に小さくなります。これは私を本当に驚かせました、しかしそれがまた新しい発見である前に私がプラットフォーマーを作ったことがないので。 プラットフォーマーゲームのスケールのルールセットはありますか? ゲームウィンドウのサイズ(800x416)を維持したいのですが、これはゲームに大きなレベルが含まれるためです。しかし、私のヒーローはどのくらいの大きさでなければなりませんか? 質問がはっきりしているといいのですが、洞察に感謝します。 ありがとう


5
プラットフォーマーゲームでスイングを簡単に実装するにはどうすればよいですか?
プレイヤーがロープを使ってスイングできるゲームを開発していて(スパイダーマンやバイオニックコマンドーのように)、この動作の実装に問題があります。誰かが私にこれを行う方法を手伝ってくれる?物理学の公式などを意味します。これまで、私は3つのアイデアを考え出しました。1つは春を使用していますが、それは多くの時間を消費し、時々びくびくしています。他の2つは次のステップを計算しようとしています(1つはポテンシャルエネルギーの計算によるもので、もう1つはトルクの計算によるものです)。両方とも、俳優がスイングしようとするたびにほとんどクラッシュします。 トルクを計算するために私が書いたコードは次のとおりです。 float dx = Runner->getPosition().x - ancher.x; float dy = Runner->getPosition().y - ancher.y; float t0 = atan2(dy,dx); //my current angle float k = ((dy) *vx - (dx) * vy) / (dx * dx+dy * dy); //previus angular velocity k -= gravity * cos(t0) *dt; // new angular velocity (gravity …

2
C ++ / SDLで2Dプラットフォーマーを作成する。チュートリアル/例/リソースを探しています[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 昨年休業。 C ++の経験は豊富ですが、ゲームプログラミングの経験はありません。この夏、私は学習体験のためにC ++ / SDLを使用して最初から2Dプラットフォーマーを作成する予定です。私は、始めるのに役立つできるだけ多くのリソースを探しています。良いソースコード、チュートリアル、なんでも。 私が見つけた最高のチュートリアルの1つは、故フロリアンハフスキーによる非アクティブなJump 'n' Run Devチュートリアルです。同様のチュートリアルはありますか?
9 c++  2d  sdl  platformer 

1
プラットフォーマーで動くプラットフォームの物理をどのように扱うのですか?
したがって、インターネットで数時間検索した後も、2Dプラットフォームゲームで移動するプラットフォームを処理する方法について、満足のいく答えが見つかりません。そこで、垂直方向と水平方向に動く2つの異なるプラットフォームを操作する単純なプロトタイプを作成することにしました。何が機能しておらず、どのように修正するのかを分析して確認するための助けが欲しいです。以下の.flaファイルと.asファイルを、再生可能な.swfへのリンクと共に提出しました。 目標は、ヒーローがプラットフォームの上に立って、一緒に押したり、ジャンプしたり、下にジャンプしたりできる固体のオブジェクトであるかのようにプラットフォームと相互作用することです。 私のプロトタイプの問題はこれらです: 水平に動くプラットフォーム上に立って、移動せずに(キーに触れずに)、ヒーローはプラットフォームに沿って移動しますが、少し遅れてヒーローが少し後退します。 水平方向に動くプラットフォームの上に立ってジャンプすると、空中のプラットフォームに沿って動きます(一部のゲームはこのようにすることを好みますが、自然に感じられず、ここでは望まれません)。これは、ヒーローがプラットフォームからX軸の速度を保持していることが原因である可能性があります。 垂直方向に移動するプラットフォームの底部にジャンプするとき、プラットフォームが下に移動しているときに、プラットフォームの中に少し沈みます。主人公は一瞬衝突がなかったかのように貫通します。 垂直方向に移動するプラットフォームにジャンプすると、Y軸の速度が保持されるため、プラットフォームから降りると、より高速で落下します。保持された速度の速度で、+重力が追加されます(これは主に、プレイヤーが空中で凍結せずにプラットフォームに着地したときに、Y軸の速度を0にリセットする方法を理解できないためです)。 私は初心者のプログラマーなので、これを行うためのより良い方法があると確信しています。それらをすべて聞いてみたいと思います。タイルベースのゲームに移動プラットフォームを実装できるコードやその他の方法を改善する方法についてのアイデアは大歓迎です。結局、私は2Dプラットフォーマーで動くプラットフォームを処理するための確かな方法を見つけようとしています。 再生可能なSWF:http : //dl.dropbox.com/u/28271061/PlatformerhowtoFLA.html(矢印キーで移動、Xキーでジャンプ、Zキーで実行) ソースコードASファイル:http ://dl.dropbox.com/u/28271061/Platformerhowto.as SourcefileFLA:http : //dl.dropbox.com/u/28271061/PlatformerhowtoFLA.fla オンラインでパスティーを通してコードを読みたいだけなら:http : //pastie.org/2266764

5
2D手続き型地形生成-接続性を保証しますか?
XNAで2Dプラットフォーマーを開発しています。主なデザイン特性になりたいことの1つは、手続き型コンテンツの生成です。その最初のステップは、地形を手続き的に生成することです。だから、私はPerlinノイズを生成し、それを滑らかにし、パラメーターとすべてのジャズをいかにプレイするかについて、たくさんの研究をしました。pcg.wikidot.comにも多くの時間を費やしました。私が抱えている問題は、100%接続されているレベルを生成することです。つまり、キャラクターがレベルの左側から右側に到達する可能性があります。 現在、パーリンノイズを使用して、そのポイントのノイズ値が<0のときにスプライトを生成しています。 これは私が抱えている問題のビデオです(クレイジーなバックグラウンドの問題と、新しいレベルを生成するときにキャラクターが動かなくなるという事実を許してください)。 http://screencast.com/t/uWJsIGLoih ビデオでわかるように、地形は十分に興味深いように見えますが、Perlinノイズがレベルを小さなランダムなチャンバーに区分化しているため、それほど多くのことはできません。 ランダムウォークを実行し、その上にパーリンノイズを重ねようとしたので、左から右へのパスを保証します。その問題を以下に示します。http: //screencast.com/t/ilLvxdp3 だから私の質問は、プレーヤーがレベルの左側から右側に行くことができるようにするには、どうすればよいですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.