タグ付けされた質問 「c#」

C#は、Microsoftが.NETプラットフォームと組み合わせて作成した、マルチパラダイムで管理され、強く型付けされ、ガベージコレクションされたプログラミング言語です。

0
OpenFLを使用したSceneManagerの実装
OpenFLとHaxeを使用して基本的なSceneManagerを実装しようとしています。OpenFLとHaxeの使用経験はあまりないので、いくつか問題があります。 以下は、SceneManagerクラスの設計方法です。 package; import openfl.display.Sprite; import openfl.Lib; class SceneManager extends Sprite { private var currentScene: ...; public function new(rootScene: ...) { super(); currentScene = rootScene; Lib.current.addChild(currentScene); } public function changeScene(newScene: ...): Void { Lib.current.removeChild(currentScene); currentScene = newScene; Lib.current.addChild(SceneTwo); } } 「...」は、どのシーンでも保持できる一般的な「クラス」タイプに置き換える必要があります。 誰かがこれを解決するのを手伝ってくれるなら、私は本当に感謝するでしょう。

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

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

2
洞窟を生成する高度なセルラーオートマトン
Unityで洞窟を作ろうとしています。これを行うために、私はセルオートマトンを使用しようとしています。私が達成しようとしていることに似ている次の(洞窟のルージュ盆地セルラーオートマトン)を見つけました。 しかし、チュートリアルは完全に私が望んでいるものではありません。このWebサイト(Don Jon Caves)が「海綿」の設定で作成したもの(下の画像を参照)が欲しい。 画像でわかるように、すべてが接続されています。私は数多くの方法とライブラリを試しましたが、何もうまくいきませんでした。 私はしばらくの間この問題に取り組んできましたが、これまでにどんなガイダンスもありがたいと思います。 ありがとう

2
チェスのZobrist転置テーブルを備えたNegaScout
転置表をアルファベータスカウトに配置しようとしています。ゲームの途中または後半に向けて、速度が徐々に向上するのはわかりますが、テーブルサイズが1〜2 GBの場合でも、トランスポーズテーブルからまったく読み取らないよりも遅くなる場合と遅くならない場合があります。また、テーブルなしでまったく同じゲームをプレイする場合、効率的な移動よりも少ないことに気づきます。 私はZobristのキーハッシュをテストしましたが、移動を行って元に戻した後でも正しくハッシュされます。私はそれらが問題であるとは思わない。これらの記事のアドバイスに従って、アルファ/ベータ剪定を設計しようとしました。 http://web.archive.org/web/20070809015843/http://www.seanet.com/~brucemo/topics/hashing.htm http://mediocrechess.blogspot.com/2007/01/guide-transposition- tables.html 誰かが間違いを特定するのを手伝ってくれる?多分私はハッシュからアルファ対ベータをチェックする評価を理解していません。または、1〜2 GBは小さすぎて違いがありませんか。必要に応じて、転置表のコードをさらに投稿できます。 public int alphaBetaScout(Board board, int depth, int alpha, int beta, bool color, bool quiscence) { // !!!! With or without this specific section, and any other Transpose.Insert, doesn't make the game play or evaluate any faster. HashType type = HashType.AlphaPrune; HashEntry h …

1
正射投影カメラを使用して上と下からレンダリングされた画像が一致しない
正射投影カメラを使用して、モデルのスライスをレンダリングしています(ボクセル化するため)。各スライスの内部を確認するために、各スライスを上と下の両方からレンダリングします。 私がレンダリングするモデルは、2つの立方体から構成される単純な「T」字型です。立方体は同じ次元を持ち、同じY(高さ)座標を持っています。Blenderでのレンダリングは次のとおりです。 このモデルを一度上から直接レンダリングし、一度下から直接レンダリングします。私の期待は、まったく同じ画像を取得することでした(y軸でのミラーリングを除く)。ただし、非常に低い解像度のレンダリングターゲット(25x25)を使用してレンダリングする場合、「T」の位置(ピクセル単位)は、下からレンダリングするのではなく、上からレンダリングしたときと異なります。図2と3を参照してください。ピンクのブロックは元のレンダリングの一部ではありませんが、簡単に数えたり、違いを確認したりできるように追加しました。 上からレンダリング 下からレンダリング これはおそらく私が読んだことによるものです 、カメラから見て左上にバイアスされている可能性のあるピクセル座標とテクセル座標についてです。私は両方のカメラに同じ「上」ベクトルを使用しているため、バイアスはx軸にのみ表示されます。私はカメラの位置を変えようとしました、そして、それは私が思っていたように、半ピクセルであるはずだと見ています。1台のカメラと両方のカメラの両方をシフトしてみましたが、一部の効果が表示されているのに、両方のカメラからピクセル単位の完全なコピーを取得できません。 ここで私はカメラを初期化し、私が信じているもの、ハーフピクセルを計算します。boundsDimXとboundsDimZは、モデルの周囲をわずかに拡大した境界ボックスで、正射投影カメラのビューボリュームの幅と高さとしても使用します。 Matrix projection = Matrix.CreateOrthographic(boundsDimX, boundsDimZ, 0.5f, sliceHeight + 0.5f); Vector3 halfPixel = new Vector3(boundsDimX / (float)renderTarget.Width, 0, boundsDimY / (float)renderTarget.Height) * 0.5f; これは、カメラの位置とカメラの視点を設定するコードです // Position camera if (downwards) { float cameraHeight = bounds.Max.Y + 0.501f - (sliceHeight * i); Vector3 cameraPosition = …
8 xna  c#  directx  texel 

2
2D AABBと複数の衝突の解決
わかりました、これは私がかなり長い間理解しようとしてきた問題です。Mineは2Dプラットフォーマーゲームで、ワールドは(通常)不動のタイルとモバイルスプライトで構成され、どちらもAABBを使用してヒットボックスを表します。このゲームは、タイルのレイヤーの移動に伴う複雑さのため、グリッドベースではありません。 衝突を検出し、衝突の深さを簡単に把握できます。「最短軸メソッド」を使用して、スプライトとタイルの間の衝突を解決する方法を決定します。スプライトが垂直よりも水平に深い場合、解決する方向は上または下になります。スプライトが水平よりも垂直に深い場合、解決する方向は左または右です。 これは非常に単純で、かなりうまくいきます。つまり、スプライトが複数のタイルと衝突するまでです。その性質上、各衝突は個別にチェックする必要があるため、衝突が異なると解決する方向も異なる場合があります。たとえば、スプライトがタイルの行を横切って移動しようとしている場合、1つのフレームで次のタイルと交差します。水平深度が垂直深度よりも短いこと。衝突が「左に解決」と言っているので、それは押し戻され、コーナーにスタックします。 私はかなり長い間この問題を何度も何度も検討してきましたが、いくつかの解決策が思い付きましたが、すべてに欠陥があります。特定の側面を到達不能としてマークすることもできますが、グリッドベースのエンジンがないと、「到達不能」の判定は非常に複雑で、特にタイルのレイヤーの移動は常に可能です。 別の可能な方法は、衝突が発生する前に衝突を予測し、衝突のポイントまで移動を「ワークバック」することですが、私はその数学がどのように機能するのかわかりません。 特に80年代のゲームはすでにこの問題を解決しているので、私には信じられないほど明白なものが欠けているように感じます。

2
テキストベースのアドベンチャーゲームで部屋とそれに関連するアクションとインベントリを表すにはどうすればよいですか?
ゲームの作り方を学んでいます。ユーザーが部屋の間を歩き回り、各部屋のオブジェクトを操作できる単純なテキストベースのゲームを作成しました。しかし、私のアプローチが悪いスパゲッティコードの山につながったような気がします。このようなゲームを構築するための良い方法が何かはわかりません。 私のアプローチは、各部屋のメソッドを備えた1つのクラスと、その部屋で実行できるすべてのオブジェクトと相互作用を持つことでした。たとえば、これは調査の方法です。 public static void Study() { bool studyexited = false; while (!studyexited) { string usercommand = Console.ReadLine (); usercommand.ToLower (); switch (usercommand) { case "turn left": GameEventText.StudyLeft (); break; case "turn right": GameEventText.StudyRight (); break; case "go forward": Notes firstsetofclues = new Notes ("First Note"); GameEventText.StudyFront (); string firststudycommand …
8 c# 

3
再利用可能なトップダウン衝突クラス
私は最近、モノゲームを始めて、簡単なトップダウンゲームに取り組んでいます。 マウスを追跡するための動きと回転を整理しましたが、衝突に悩まされています。 私が知りたいのは、基本的に次の2つです。 衝突を処理する最良の方法は何でしょうか?Rectangle.Intersects(Rectangle1, Rectangle2)重なり合う四角形が返されることはわかっていますが、上から下への移動はx / y軸上にあるため、衝突が発生している場所を知りたいので、プレーヤーが取得しないような「壁のスライド」を作成できます壁で立ち往生。 プレーヤーのx / y座標をソリッドオブジェクトの座標と照合して確認し、ソリッドオブジェクトの境界に入る場合は、プレーヤーを以前の位置にスローしますか?あなたは何を提案しますか? すべてのソリッドやnpcなどに衝突を適用する最良の方法は何でしょうか?私は現在gameObject、すべてのオブジェクトが継承するクラスを作成し、そこで衝突を処理することを考えています。 読んでくれてありがとう、誰かが私にいくつかのヒントをくれることを願っています。

1
XNA 4.0ゲームへの水のエフェクト(スプラッシュ)の実装[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 6年前休業。 私は2D XNAゲームを作成していて、XNAゲームにウォーターエフェクト(スプラッシュ)を追加するチュートリアルに出会いましたが、それをゲームに実装した後、縮小することができません。現在、画面全体を占めています。 Waterクラスは次のようになります class Water { struct WaterColumn { public float TargetHeight; public float Height; public float Speed; public void Update(float dampening, float tension) { float x = TargetHeight - Height; Speed += tension * x - Speed * dampening; Height += Speed; } } PrimitiveBatch …
8 xna  c#  2d  xna-4.0  water 

2
UnityはC#をスクリプト言語としてどのように使用しますか?
私の知る限り、これまでのところ、C#はコンパイルされた言語であり、常にコンパイルされた言語であると思っていました。私は最近Unity3dの研究を始めましたが、APIを介してスクリプトを作成し、ゲームオブジェクトとやり取りするためのオプションとしてC#を提供していることに気付きました(JavaScriptといくつかの他の選択肢とともに)。 これはどのように行われますか?C#は実際に実行されていますか、それとも、抽象化されて、別のスクリプト言語に変換されていますか?この機能については、ある種の解釈が行われているようです。
8 c#  scripting  mono 

4
Unity3D Mobileでのスレッドとコルーチンの混合
Unity3Dにコルーチンがあり、サーバーからzipをダウンロードして永続データパスに抽出し、その内容をメモリにロードしました。フローは次のようになります。 IEnumerator LongCoroutine() { yield return StartCoroutine(DownloadZip()); ExtractZip(); yield return StartCoroutine(LoadZipContent()); } しかし、このExtractZip()方法(DotNetZipライブラリを使用)は同期的であり、時間がかかりすぎて、プロセス中に処理する場所がありません。 これにより、大きなzipを抽出しようとすると(モバイルデバイスで)アプリケーションが強制終了されました。これは、メインスレッドが長時間応答しなくなったことが原因と考えられます。 これはモバイルOSが行うことが知られていることですか(フレームに時間がかかりすぎる場合はアプリを終了します)? したがって、別のスレッドでzipを抽出すると問題が解決する可能性があると想定しましたが、うまくいったようです。私はこのクラスを作成しました: public class ThreadedAction { public ThreadedAction(Action action) { var thread = new Thread(() => { if(action != null) action(); _isDone = true; }); thread.Start(); } public IEnumerator WaitForComplete() { while (!_isDone) yield return null; …

1
マルチプレイヤーゲームのタイムステップ
サーバー/クライアントマルチプレーヤーエクスペリエンスを作成するというコンセプトに頭を悩ませています。 私の問題は主にタイムステップに関連しています。次のシナリオを検討してください。 クライアントはサーバーに接続します。クライアントは入力をサーバーに送信して、移動したいことを示します。サーバーは入力をシミュレートし、ゲームの世界におけるそのクライアントの位置を決定します。 クライアントとサーバーの両方が異なるタイムステップで実行されているため、すべてのクライアントがサーバーと同期するように正確にシミュレーションするにはどうすればよいですか?私のサーバーは現在30msのタイムステップに設定されています。クライアントの移動を処理するとき、潜在的に何百ものリクエストが処理されるのを待っていますが、各リクエスト間の時間を示す方法はありません。 すべてを同期させるために、時間に基づいてサーバー上で適切にシミュレートする方法を本当に理解していません。

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