ゲーム開発

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

2
ロープを作成するには?
このゲームを再現したいのですが、ロープの作成方法や、ボールへの影響がわかりません。 基本的に、一方の端にマウスポインターに「取り付けられた」ロープがあり、もう一方の端には大きなボールに取り付けられたロープがあります。ユーザーがマウスを動かすと、まるで殻竿などを振るように、ロープとボールが動きます。 上記のゲームのようにロープを作成するにはどうすればよいですか? 既存のライブラリを使用してロープを作成する方法ではなく、そのようなロープの作成の背後にある基本的な概念と物理学を知る必要があります。ロープを最初から実装できるようにしたいので、どのように実行できるかを知る必要があります。 ありがとう!

2
ゲームメカニックとは何ですか?
私は、ゲームメカニックの定義、およびゲームプレイメカニックと同じかどうかを正確に理解しようとしています。これを定義しようとする多くのさまざまな情報源がオンラインにありますが、それらは非常に一貫していないようです。かなり深く掘り下げた2つを以下に示します。https: //en.wikipedia.org/wiki/Game_mechanics(ゲームコンテキスト) https://badgeville.com/wiki/Game_Mechanics(ゲーミフィケーションコンテキスト) 私はゲームの目的、課題、ルールの概念を理解していますが、ゲームのメカニズムはこれらにどのように結びついていますか?たとえば、ゲームの仕組みは単にユーザーを動機付ける抽象的な方法(ポイント、実績、発見など)ですか?それとも、カバーシステムや、キャラクターの動きやジャンプなど、ゲームのより実用的な側面ですか?

1
(Unity)多くの移動オブジェクト用に最適化されたネットワーキングソリューション
私は現在、かなり野心的なプロジェクトに取り組んでいます。要するに、それはバクテリアの力学を持つリアルタイムのマルチプレイヤー戦略ゲームです。 基本的に、私は環境内に2人のリモートプレイヤーがいて、彼らはバクテリアのようなユニットをスポーンさせて、お互いに攻撃して増殖し、リソース制限に達するまで自分自身を複製することができます。これにより、約200以上のゲームオブジェクトが画面にレンダリングされ、それぞれに独自の状態と動きがあります。これは悪いように聞こえますが、ボットに対するローカルのゲームプレイは実際には非常に優れており、私はそれを非常に高性能にすることができました。 ただし、このゲームをネットワーク化しようとすると問題が発生します。私はすでにこのガイドに従ってこの機能を実装しようとしました:http : //www.paladinstudios.com/2013/07/10/how-to-create-an-online-multiplayer-game-with-unity/ これにより、最高のレイテンシであっても、非常に遅く、不快なゲーム体験が生成されます。これはおそらく、数百のユニットの移動データを送信する必要があるために発生します。 私が提起している質問: 2つのクライアント間の多くの移動ユニットのネットワークと同期を最適化するにはどうすればよいですか? これを行う方法の1つはすでに考えました。ユニットをスポーンした後、何かに当たるまで一方向にのみ移動します-おそらく、ユニットがスポーンされたときと、別のオブジェクトと相互作用したときにのみ同期できますか?これには多くのメリットがありますか?これを実装する理想的な方法は何ですか? 回答ありがとうございます!

2
半直交半透視投影行列を作成する方法
私は、縦軸が正射投影される射影行列の式を作成しようとしましたが、横軸はそれに対して遠近法を持っています。 したがって、ビュー錐台は次のようになります。 私は、正投影と透視投影の公式と、それらがどのように達成されたかを研究しました。そして、それらを変更して、私が望む投影に到達しようと試みました。私には、1つの軸をZにスケーリングすることはできず、もう1つの軸をZにスケーリングすることは不可能であるように思われました(または、それらを異なる倍率でスケーリングさせることはできませんでした)。 私が望む視点に到達することは可能ですか?もしそうなら、射影行列はどのようになりますか?

1
quadrilinearテクスチャサンプリングハードウェアはサポートされていますか?
ミップマップを含むボリュームテクスチャがある場合、GL_LINEAR_MIPMAP_LINEARテクスチャサンプリングは四次線形テクスチャサンプリングを実行します。 バイリニアテクスチャサンプリングのようなハードウェアに実装されていますか?または、ドライバーは2つのトライリニアテクスチャサンプルを実行し、それらの結果を補間するだけですか? トリリニアサンプリングはハードウェアでもサポートされていますか?

2
大規模な反復設計
通常、ゲーム開発では、線形開発(ウォーターフォールモデル)には、プログラマーの正気を失わせる障害があります(ゲームは恐ろしいことが判明し、再設計できません)。反復設計を入力してください。反復設計により、遊び場でのさまざまな可能性のプロトタイピングが可能になります。残念ながら、これには大きな問題があります。プロジェクトのサイズが大きくなるとすぐに、繰り返しは退屈に長くなり、主な利点である迅速な結果が失われます。 大規模プロジェクトの設計反復をどのように短縮できますか?

1
奇妙なSSAO効果(ビュースペース内の位置/通常のテクスチャが間違っていますか?)
主にホセマリアメンデスのgamedev.netチュートリアルに基づいて、ゲームエンジン(DirectX 11、C ++)でSSAO効果を作成しようとしています。残念ながら、テクスチャ作成の問題(法線、位置)はカバーしていません。 最初のパスでは通常のテクスチャを作成し、次に深度バッファもテクスチャとして読み取ります(2番目のパスでシェーダーリソースビューを作成し、深度バッファのバインドを解除するため可能です)。どちらもビュースペースにある必要があります。 ぼかしはまだ実装していません(後で実行します)が、現在いくつかの問題があります。テクスチャの計算が間違っているか、テクスチャからデータを変換する方法が間違っているためではなく、数式やパラメータの値が間違っているためと考えられます。 何がうまくいかなかったかについての私の推測: (ビュー空間での)通常のテクスチャ計算-しかし、それは見えます[OK]を、 位置テクスチャの計算(ビュー空間で)と位置から深度への変換 逆投影行列計算、 何かが正規化も飽和もされていないはずですが、 パラメータ(ただし、出力にそのような影響を与えるべきではありません)? 私のテクスチャ 拡散(textures[0]、ここでは実際には使用されません、比較のためにのみ): 通常(textures[1]、ビュー空間にある必要があります): 私はそれらを最初のパスの頂点シェーダーで取得します(ピクセルシェーダーはちょうどですoutput.normal = input.normal): output.normal = float4(mul(input.normal, (float3x3)world), 1); output.normal = float4(mul(output.normal, (float3x3)view), 1); 深度バッファテクスチャ(textures[2]、値の差が小さいため何も見にくいですが、問題ないと思います): それを表示するために私は使用します: float depth = textures[2].Sample(ObjSamplerState, textureCoordinates).r; depth = (depth + 1.0f) / 2.0f; color.rgb = float3(depth, depth, depth); 外部プログラムでのコントラスト補正後(私はシェーダーを使用しませんが、目には良いです): 深度バッファーの説明: //create depth …
8 c++  directx  directx11  hlsl  ssao 

3
方向を変更すると、オブジェクトが遅くなり、新しい見出しで加速するはずです(2Dグリッドベース)。
私は2Dゲームにある種の偽の宇宙物理学を実装しようとしています。宇宙船を真上から見下ろしています。方向を変えて速度を最大に設定すると、船のエンジン加速量に応じてその方向に船が加速します。 船がゆっくりとその方向に動き始め、最高速度に達するまで速度を上げていくコードをうまく機能させています。 更新 答えは少し役に立ちましたが、それでも私の最終的な解決策にたどり着けません。理論を実用的なコードに変換することはできません。さらにいくつかのパラメータがあります: 2Dグリッドで作業しています 船のエンジンは1つで、出力を0から1に設定して、全出力を示すことができます。 エンジンに最高速度があります 偽の宇宙摩擦があり、船に電力を供給しなくなった場合、最終的に停止します。 問題 私が抱えている問題は、方向を変えるときです。300の速度で1つのヘディングで移動している場合、ヘディングを反対に変更すると、減速してその方向にその速度に戻るのではなく、設定された速度で瞬時に移動します。 望ましい状態 現在のコード public void Update(Consoles.Space space) { var GameTimeElapsedUpdate = (float)SadConsole.Engine.GameTimeElapsedUpdate; Graphic.PositionOffset = viewPortMaster.Position; // Update the engine ShipDetails.Engine.Update(); // Degrade the current velocity with friction?? if (velocity.Length() < 0f) { var accelerationFrame = ShipDetails.Engine.GetAccelerationFrame(); if (velocity.X > 0) velocity.X …
8 xna  c#  physics  monogame 

5
クライアント、中央サーバー、プレーヤー実行サーバー間の認証
私はMinecraftに似たクライアントサーバースキームを使用するオープンソースゲームを開発しています。プレイヤーが独自のサーバーを実行する一方で、アカウントが有効であることを確認する中央認証サーバーを制御します。 クライアントの認証は簡単ですが、サーバーは、資格情報やセッショントークンにアクセスすることなく、ユーザーが有効であることをどのようにして知ることができますか? 例えば: クライアント>認証サーバー:ユーザー資格情報を送信します。 認証サーバー>クライアント:有効なログインの場合、セッションIDで応答します。 その後、クライアントはサーバーに接続できますが、サーバーはクライアントが本人であることを確認する方法がありません。これらのサーバーはプレーヤーによって実行されるため、サーバーの変更とユーザーデータの収集が簡単になります。(信頼できるのは中央認証サーバーのみです) 認証サーバーはTCP接続を受け入れることができますが、この場合HTTPSの方が簡単でしょうか。応答を取得する方が、特に少数の要求に対してのみ、両側でリスナーを確立するより簡単です。

1
カスタムエディター-デフォルトの外観を維持しますが、さらに追加します
OnInspectorGUIを使用して、インスペクターを1つまたは2つの追加フィールドのみを含むものに置き換える簡単な方法があるかどうかを知りたいです(1つまたは2つの追加を除いて、非カスタムエディターと同じに見えるように)最後に2つのフィールド)。少しだけ追加したいのに、手動ですべてのフィールドを再作成するのは面倒なようです。 または、特定のタイプのフィールドのデフォルトの描画を行うように統一を簡単に指示する方法はありますか?以前これで遊んでいたとき、私は表示されるものに厳密にコミットする必要があり、手動で各フィールドを書き出す必要がありました---クラスのパブリックフィールドが変更されると面倒です-そしてそれらは開発中に頻繁に行います。 tl; dr-カスタムエディターでインスペクターのデフォルトの動作をシミュレートする方法はありますか?
8 unity  gui 

1
RPG Maker Auto Tilingの実装
私は現在Phaserと協力して、手続き的に生成されるゲームを作成しています。ゲームでRPGメーカーアートを使用したかった(参考として、RTPを使用している)。私はこの記事を偶然見つけました。自動タイルがどのように機能するかを分析しました。自動タイルについて説明している別の記事にリンクしているこの回答も偶然見つけました。 ここにあること、私はこのようなものをどのように実装するかわかりません。どのタイルセットが他のどのタイルセットに接続できるかを追跡する必要があると確信しています(つまり、一部のタイルは外側に草があり、内側に砂があります。そのため、この例では、「草"タイルは外側のタイルでした)。 私はマップジェネレーター(ここを参照)を作成しましたが、タイル領域間をシームレスに接続したいと考えました。たとえば、茶色の領域は「密な」領域(森、洞窟など)になります。紫色の領域は石の床で、緑色の領域は草です。このようなものに非常にうまく機能するタイルセットがあります: それで、左上の草と、草に接続する3番目のタイルセットである石を使用します。 これらの種類のタイルセットを使用して自動タイリングを実装する場合、どのようなことを考慮する必要がありますか?実装するために確認できるアルゴリズムはありますか?

1
パスファインディング:タイルベースのナビゲーションメッシュ
タイルベースのリアルタイムRTSを開発しています。これはマップの例です: このマップは、それぞれ256タイルの4つの領域で構成されています。青いタイルは障害物を表しています。ユニットは標準の8方向に移動できます。ユニットはタイルにバインドされています。1つのタイルで1つのユニットを保持できます。 これらは私が探している理想的な道のいくつかの例です。典型的なA *のもの: 私の質問は、ナビゲーションメッシュはタイルベースのRTSに適用可能ですか?私は、ユニットが自由に動き、タイルのグリッドにバインドされていないゲームで使用されるナビゲーションマップだけを見てきました。この特定のマップでは、ナビゲーションメッシュはどのように見えますか?サンプル画像は素晴らしいでしょう。

3
Unity2Dトールグラス
Unityを使用して2Dトップダウンゲームを作成しています。これまでのところすべてが順調ですが、適切に解決できない問題に直面しています。 キャラクターの一部が隠れてしまう「背の高い草地」を実装したい。 視覚的な例: 私は背の高い草をレイヤーごとに作成することを考えていましたが、それはゲームオブジェクトの多くを作成し、キャラクターが上に移動するときの遷移は十分に滑らかではありません。 私はこれにどのようにアプローチできますか?シェーダーを使用してこのようなことを達成できると思ったのですが、私のシェーダーに関する知識は非常に限られているため、そのようなことが可能かどうかさえわかりません。
8 unity  2d  sprites 

1
プログラムによるUnity 5 2D描画スプライト
Unity 5でスプライトをプログラムで描画するにはどうすればよいですか?spriteBatch.Draw()XNAに似たものを探しています。私がそれについて検索したときに得られる結果は、古いhttp://wiki.unity3d.com/index.php?title=SpriteManager(これは2012年に書かれた)であるか、ユニティインターフェイスを使用して行われています。私は見つけることができるすべてがあるSpriteUnityEngine.dllでクラス。これは私が必要なものですか?描画はどのように機能しますか?本当にわかりません。
8 c#  unity 

3
Unityで2つの2Dスプライトの間にUI画像を配置する
Unityで2Dゲームを開発しています。 を使用してレンダリングされた2つのスプライトオブジェクトがありますSpriteRenderer。 新しいUIシステムでは、それを使用して2つのスプライトの間に画像を表示します。つまり、最初のスプライトの並べ替え順序は100、次にUIイメージの並べ替え順序は200、2番目のスプライトの並べ替え順序は300です。 それは可能ですか? 並べ替えレイヤーを使用してみましたが、UIイメージが常に2つのスプライトをオーバーレイしているようです。
8 unity 

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