ゲーム開発

プロおよび独立系ゲーム開発者向けのQ&A

6
Unityで特定のオブジェクトに向かって重力を変更する方法は?
Unityには2つの球体があります。1つはサイズが1000倍、もう1つはサイズが1倍です。だから私は、より小さな球体をより大きな球体に引き付けたいと思っています。それではどうすればいいですか。リジッドボディを使用すると、重力によってダウンする可能性があることを知っています。しかし、重力の角度を大きな球体に向けて変更するにはどうすればよいですか?
14 c#  unity  sphere 

2
ゲームでドップラー効果をシミュレートするにはどうすればよいですか?
ゲーム(カーレースゲーム)でドップラー効果をシミュレートしようとしています。エフェクトをシミュレートする特定のサウンドライブラリを使用していません。データをミックスするコールバック関数しかありません。 ミキサー機能でサンプルの周波数を変更する方法はすでにわかっています。 私が知らないのは、プレイヤーとエミッターの位置と速度に応じて周波数がどれだけ変化するかです。 ここに私がゲームに持っているものがあります: //player vec3 p.pos; vec3 p.vel; //emitter vec3 e.pos; vec3 e.vel; 1)ウィキペディアによると、放射周波数と観測周波数の関係は次のように与えられます。 float f = (c + vr) / (c + vs) * fo ここで、Cは定数、媒体の速度(典型的には大きい数)であり、 対と vrは媒体に対するソースとレシーバーの速度です。 だから私は推測する: float vr = p.vel.length; //player speed float vs = e.vel.length; //emitter speed しかし、私はその間違ったが、それは例えばのために、周波数の変化をもたらす文句を言わないと思う:場合vr = 0(プレイヤーいけない移動)とエミッタと、一定の速度を持っているし、vrそしてvs文句を言わないの変更(彼らが必要しばらく)。 多分、エミッタの速度に対して相対的にプレーヤーの速度を計算する必要がありますか? このような : relative_speed …

2
LuaとLÖVEの良いチュートリアル[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 3年前に閉店しました。 私は非常に単純な2Dのゲームを作りたい、との良いことをたくさん読んでてきた愛を、私はそれを試してみたいので、。しかし、良いチュートリアルを見つけることができないようです。LÖVEページにあるものは構造化されておらず、Mathew Caspersonが見つけたもう1つはあまり有用ではありません。誰もがより良いチュートリアルを知っていますか?
13 lua  love2d 

2
AndroidのOS /ユーザーによるゲームのクラッシュ/キルでのファイル操作の失敗
私のゲームは、ゲーム/アプリの内部ストレージのファイルに一定の間隔で状態を保存します。ゲームがユーザーまたはOSによってそれぞれ強制終了またはクラッシュした場合、そのファイルに現在のゲーム状態を書き込みます。修正間隔後のファイル書き込みは正常に機能していますが、ゲームがOSまたはユーザーによってクラッシュまたは強制終了された場合、ファイル書き込み操作は失敗します。操作が失敗すると、不完全なゲーム状態または空のゲーム状態、つまりファイルにデータがまったく書き込まれません。私は、Androidサービスを使用して複数のソリューションを試しました。サービスがNON STICKYの場合は、アプリで強制終了されます。一方、サービスがSTICKYの場合、サービスは再起動されますが、最初にサービスでアタッチされたインテントはnullまたは新しいものです。 問題は、ゲーム/アプリがユーザー/ OSによって強制終了されたときに、内部ストレージのファイルにデータを完全に保存するにはどうすればよいですか(最大2〜3MB)。
13 unity  android 

3
モバイルゲームに複数の広告プロバイダーを使用する理由は何ですか?
複数のビデオおよびバナー広告プロバイダーを使用したゲームを見てきました。Adsenseはバナー広告に使用される傾向がありますが、画面を引き継ぐもの(フルスクリーン)は通常、複数の広告プロバイダーの形で(私の経験では)冗長性があります。 なぜ私もこれをしたいのですか?

1
「Life is Strange」のようなアウトラインシェーダーを作成するにはどうすればよいですか?
人生のようなスケッチシェーダーを奇妙にしたい。 シェーダーには2つの部分があります。 1.アニメーションの破線 2.騒々しい輪郭 ノイズの多いアウトラインを作成する方法を知りたいですか? オブジェクトの概要を見る 最初に、入ってくる頂点データをコピーしてアウトラインを作成し、法線方向に合わせてスケーリングしてからカルバックしましたが、アウトラインはオブジェクトの内部で移動することがあるため、イメージ効果のようなものだと思います。とにかく、誰かがこのシェーダーを実装するのを手伝ってくれれば感謝します:) 私が試したもの エッジ検出を使用し、頂点シェーダーでアニメーション化しましたが、これは上記のgifのようには良くありません。
13 unity  shaders  hlsl 

3
ゲームデザイナーはどのように振動パターンを作成しますか?
コンソールコントローラーの振動パターンを作成して実装することに興味があります(PS4コントローラーの場合、違いがある場合)。 遅延とモーター速度のパラメーターは正しいですか?しかし、左のモーターから右にフェードすることも、一緒に機能させることもできます。 これらのパターンを作成する標準化された方法はありますか? たとえば、オーディオエディターでステレオwavオーディオを使用してそれらを作成し、コード内のwavファイルを読み取って遅延と速度に変換することを考えました。 これはゲーム業界でどのように行われていますか?

1
ボクセル地形に応力/ひずみ力学を実装する方法は?
私は地形がボクセルに分割されるMinecraftのような世界を開発している最中です。しかし、風景の不安定な構成が予想どおりに崩壊することも望んでいます。たとえば、オーバーハングが大きすぎると、「高応力」ボクセルで破壊されて破損し、非対称に侵食された基部を持つピラー構造が破損します。私は、地形の各ボクセルに「応力ベクトル」フィールドを追加し、次のことを行うことを考えていました(擬似コード): foreach voxel in terrain foreach neighbor in voxel.neighbor_voxels() if magnitude(voxel.stress - neighbor.stress) > stressThreshold detach_voxels(voxel, neighbor) しかし、問題は、これらの個々のストレスをどのように計算するかわからないことです。ボクセル単位で応力を計算するために使用できる、ボクセル離散化に特化したFEAベースのアルゴリズムはありますか?または、私はこれにすべて間違っていますが、これを行う他の方法がありますか?

3
P2Pネットワークの隠れ位置?
私は安全なゲームのためにP2Pアーキテクチャに取り組んでおり、問題を5つのサブ問題に分けました。 送信されたゲーム状態の違法な変更 不正行為者を正確にドロップする ゲームの状態に同意する 「先読み」チートの回避 相手から機密情報を隠す 最初の4つはほとんどすべて解決しましたが、最後の1つが問題を抱えています。 詳細に入る前に、「チートプルーフ」p2pネットワークの作成リストに見落としているものがあるかどうかを尋ねたいだけです。私はエイムボットの使用などのチートには興味がありません。p2pネットワークを集中サーバーと同じくらい安全にすることにだけ興味があります。 そのため、これまでの機密情報の非表示の努力では、対戦相手の位置が常に知られるべきではないゲームのプレイヤーの位置に焦点を当ててきました。問題は、対戦相手の位置を知らずに自分の位置を対戦相手に送信するかどうかを決定する方法になります。 相手があなたのポジションを比較するために複数の間違ったポジションを送信するなどの方法を除外しました。なぜなら、相手はそのようなシステムを簡単に乱用できるからです。 私は、相手から「視野」を受け取り、それによって自分の位置を送信するかどうかを決定できる方法に焦点を合わせてきました。ただし、これは、League of Legendsなどのゲームでは、対戦相手の視野も非常に機密情報であるという問題です。特異行列を使用して視野を変換することでこれを解決しようとしましたが、つまり、視野の変換バージョンから元のバージョンに戻すことはできませんが、それは線形変換であるため、位置が内部にあるかどうかを把握することができます視野かどうか。 ただし、これは完全には機能せず、変換後に正確な視覚フィールドを復元することはできませんが、視覚フィールドの「勾配」に関する情報(視野は複数の線で構成され、各線の勾配を決定できます)元の視野を比較的安価に再構築するために使用できます。 本質的に、私が必要とするのは、位置が「見える」かどうかを判断できる関数であり、この関数/視野の再構築は、視野の再構築が完了するともはや関連しないように計算的に要求する必要がありますアクションのゲーム。そのような方法を偶然知っている超賢い人はいますか? 編集 人々は「ビジョンフィールド」全体について混乱しているので、ここでより詳細な説明を行うことを目指します。ビジョンフィールドは一連の線のグループで構成されます。位置が線のどちら側にあるかを確認するだけで、位置がこれらのグループのいずれか内にあるかどうかを簡単に確認できます。それはそのグループ内にあり、したがって視野内にあります。 ただし、送信される情報はこの行ではなく、行と変換(2 x 2の特異な行列)の変換であり、受け取った変換を使用して最初に変換することにより、行のどちら側にあるかを確認できます。その値を変換された線と比較します。ここで重要なのは、変換が特異であるということです。つまり、元の行に戻る逆行列を見つけることは不可能です。しかし、線の原点を正確に特定するまで、変換された線のどちらの側に多くの点があるかをチェックするだけで、線の再構築を行う線の勾配を決定することができます線の勾配。 私が探しているのは、ポイントがエリア内にあるかどうかを判断するための方法です。エリアからメソッドを再構築することは不可能であるか(いつでもブルートフォースをかけることができるため、存在するのではないか)、または計算量が非常に多くなります。


1
ゲームのテストを自動化する方法は?
私はこのテスト分野に初めて参加しました。ユニティエンジンを使用して基本的なゲームを開発しましたが、テストしたいと思います。 私はセレンで確認しましたが、ゲームで実行されているアクションの情報を含む返される値を取得する方法がわかりません。値を取得できれば、それに応じて必要なアクションを実行できます。
13 unity  testing 

3
完全なピクセル間隔でカメラを移動するにはどうすればよいですか?
基本的には、カメラがサブピクセル単位で移動するのを止めたいと思います。これにより、スプライトの寸法がほんのわずかでも視覚的に変化することになります。(より良い用語はありますか?)これは、鮮明なピクセル化されたグラフィックスを持ちたいピクセルアートゲームです。問題を示すgifは次のとおりです。 今私が試したのはこれです:カメラを移動し、現在の位置を投影して(画面座標になるように)、丸めまたは整数にキャストします。その後、ワールド座標に変換し直し、それを新しいカメラ位置として使用します。私の知る限り、これはカメラを実際の画面座標にロックするものであり、その一部ではありません。 ただし、何らかの理由yで、新しいポジションの価値は爆発的に増加します。数秒でそれはのように増加します334756315000。 LibGDX wikiのコードに基づいたSSCCE(またはMCVE)は次のとおりです。 import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.utils.viewport.ExtendViewport; import com.badlogic.gdx.utils.viewport.Viewport; public class PixelMoveCameraTest implements ApplicationListener { static final int WORLD_WIDTH = 100; static final int WORLD_HEIGHT = …
13 libgdx  pixel 

2
Time.deltaTimeを使用しているにもかかわらず、動きはフレームレートに依存しているように見える
Unityでゲームオブジェクトを移動するために必要な変換を計算する次のコードがありますLateUpdate。これはで呼び出されます。私が理解していることから、私の使用はTime.deltaTime最終的な翻訳フレームレートを独立させるべきCollisionDetection.Move()です(ただレイキャストを実行することに注意してください)。 public IMovementModel Move(IMovementModel model) { this.model = model; targetSpeed = (model.HorizontalInput + model.VerticalInput) * model.Speed; model.CurrentSpeed = accelerateSpeed(model.CurrentSpeed, targetSpeed, model.Accel); if (model.IsJumping) { model.AmountToMove = new Vector3(model.AmountToMove.x, model.AmountToMove.y); } else if (CollisionDetection.OnGround) { model.AmountToMove = new Vector3(model.AmountToMove.x, 0); } model.FlipAnim = flipAnimation(targetSpeed); // If we're ignoring gravity, then just …

1
アニメーションにブレンドツリーとステートマシンを使用する場合
3Dアニメーションキャラクター(Unity)で初めてゲームを作成した経験豊富なゲーム開発者の趣味で、ブレンドツリーとアニメーションステートマシンを使用するタイミングを判断するのに苦労しています。概念的には両方を理解していますが、Unityと他のソースの両方のチュートリアルで、キャラクターのアニメーションに使用されるブレンドツリーとアニメーションステートマシンの両方を見てきました。誰かが私を正しい方向に向けることができることを望んでいるのに、いつ/なぜ他の人よりも優れているのか分かりません。 私のゲームは3人称アクションRPG a'la WoWまたはKOTORまたはMass Effectです(私が知っている異なるシステムですが、視点と戦闘スタイルは高レベルでちょっと近いです)。攻撃、ブロック、偽装、死亡、ウォーキング、ランニング、ジャンプ、射撃などのアニメーションが大量にありますが、それらを自然にシーケンスする方法はわかりません。 移動に使用されるブレンドツリーを見たことがありますが、これはキャラクターの動きを滑らかにしようとするときに理にかなっていますが、そのブレンドツリーから攻撃状態に移行する方法がわかりません。等)。攻撃/死/回避の状態にモーション状態からブレンドツリーを作成する必要がありますか?ステートマシンだけを使用して、さらに制御できますか?ステートマシンには非常に注意が必要です。移行の肥大化は非常に一般的であり、ブレンドせずにジャンキーアニメーションシーケンスを作成する可能性が大きいと思われるためです。 Unityキャラクターコントローラーを使用し、独自のロジックスクリプトを記述してそれを駆動する予定です。AIには、組み込みのnavメッシュエージェントを使用します。キャラクターコントローラーアニメーションはAIアニメーションとは異なる方法で処理されますか? 洞察は大歓迎です! ありがとう

1
Skyrimで動物をプレイ可能にする方法
Skyrim Creation Kitを使用した経験があり、小さな改造を行っています。私は新しい種族を作成することに本当に興味があり、プレイヤーが老人、子供、またはドリモラを作成できるようにするMODをすでに作成しています。これを達成するために、私は単にエディターでそれらのIDを見つけ、「再生可能」ボックスをオンにしました(そして「子」をオフにしました)。オオカミ、馬、ドラゴンなどの非人間の種族でこれを試みると、キャラクター作成画面でその種族を選択するとすぐにゲームがクラッシュします。 私の質問は次のとおりです。なぜゲームが即座にクラッシュし、動物/モンスターのレースをかなり簡単にプレイできるようにする方法がありますか(スクリプトの作成やメッシュの作成に関する知識があまりありません)。ありがとう。

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