ゲーム開発

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

7
ブラウザーベースのゲームを構築する際に、キャンバスにするか、キャンバスにしないか?
背景:私は広範な開発の背景を持っていますが、ゲームをコーディングしたのは何年も前です。私のJavascriptスキルは非常に限られており、テトリス、パックマン、またはその複雑さレベルの単純なゲームを構築することにより、それらを改善するつもりです。 質問:私がしなければならない基本的な選択は、<canvas>要素にレンダリングするかどうかです。 キャンバスには、ポイント、ライン、さらに複雑なものをレンダリングするための基本的なツールがあります。おそらく、これを支援するためのさまざまなフレームワークがあります。 キャンバスがなければ、オブジェクトをDOMツリーに保持できます。通常のWebページのように、非常に複雑で、多くの要素が重複しています。 1つのアプローチは他のアプローチよりも優れていますか?それらは相互に排他的ですか?どれを選ぶべきかをどうやって知るのですか?

4
ゲームから抽出された一部のPNGファイルが正しく表示されないのはなぜですか?
一部のゲームファイルからPNGを抽出すると、画像が途中で歪んでいることに気付きました。たとえば、SkyrimのTexturesファイルから抽出されたいくつかのPNGを次に示します。 これはPNG形式の異常なバリエーションですか?このようなPNGを適切に表示するには、どのような修正が必要ですか?

1
デスクトップ用のターンベースのゲームサービス(iOSのGKTurnBasedMatchなど)はありますか?
Game CenterのGKTurnBasedMatchは、ターンベースのゲームを処理するための非常に堅牢なサービスを提供しているようであり、OpenFeintも同様の機能を備えているようです。問題は、デスクトップ用にこのようなものが欲しいのです。私は自分のRESTベースのサービスをRailsで展開することを考えていましたが、GameKitのドキュメントを見た後、それを安定させるのに時間がかかることに気付きました。私の検索で見逃したこのようなものがすでに存在するとは思わない?

2
高速オブジェクトが壁を通過できないように衝突検出を処理するにはどうすればよいですか?
2D横スクロールシューティングゲームを作成していますが、弾丸の衝突検出に少し問題があります。箇条書きを含むすべてのものは、独自のポリゴン/更新メソッドを持つオブジェクトです。 問題は、弾丸が速くなり、60フレーム/秒(ゲームの実行速度)で弾丸が壁をすぐにスキップすることです(更新間隔中に壁の幅を超えて移動するため)。ポリゴンが実際に重複することは決してないので、順調に進んでください。 これについて何ができますか?私が思いついた唯一のことは、古い位置から新しい位置に線を引き、その上で衝突検出を行うことですが、衝突検出のための線描画はslick2dのドキュメントでは推奨されていません。どうすれば解決できますか?

3
ソケットを介してn個のクライアントと通信するターンベースのサーバーを記述するパターンはありますか?
私は、ゲームをプレイするTCPソケットネットワーククライアントの任意の数のゲームを管理する汎用ゲームサーバーで作業しています。ダクトテープでハッキングされた「デザイン」が動作していますが、壊れやすく柔軟性に欠けています。堅牢で柔軟性のあるクライアント/サーバー通信を作成するための確立されたパターンはありますか?(そうでない場合、私が下にあるものをどのように改善しますか?) 大体これがあります: ゲームのセットアップ中、サーバーには、クライアントからの同期リクエストとサーバーからの応答を処理するプレーヤーソケットごとに1つのスレッドがあります。 ただし、ゲームが開始されると、1つのスリープを除くすべてのスレッドと、そのスレッドが(逆の要求と応答で)移動について通信しながらすべてのプレイヤーを1つずつ循環します。 ここに私が現在持っているものの図があります。クリックして拡大/読み取り可能なバージョン、または66kB PDFをクリックします。 問題点: プレイヤーは、正確に正しいメッセージで順番に応答する必要があります。(私は各プレイヤーにランダムながらくたに応答させ、彼らが有効な動きを与えてから先に進むことができると思います。) 順番が来ない限り、プレイヤーがサーバーと会話することはできません。(サーバーに他のプレーヤーに関する更新を送信するように指示することはできますが、非同期要求は処理しません。) 最終要件: パフォーマンスは最優先事項ではありません。これは、主に非リアルタイムゲームに使用され、主にAIを相互にピッチングするために使用され、けいれん的な人間には使用されません。 ゲームプレイは常に(非常に高い解像度であっても)ターンベースになります。他のすべてのプレイヤーがターンを取得する前に、各プレイヤーは常に1つの動きを処理します。 サーバーの実装はたまたまRubyで行われます(違いがある場合)。

3
クォータニオンベースのカメラを実装するにはどうすればよいですか?
更新ここでのエラーは非常に単純なものでした。ラジアンから度への変換を見逃しました。他の問題がある場合は、すべてを読む必要はありません。 私はこれについていくつかのチュートリアルを見て、四元数ベースのカメラを実装しようと思って理解したと思いました。問題は、約1分間回転させた後、正しく動作しないことです。10度戻ると-10度に戻ります。何が悪いのか分かりません。私はopenTKを使用していますが、すでにクォータニオンクラスがあります。私はopenglの初心者であり、楽しみのためだけにこれをやっており、四元数を本当に理解していないので、おそらくここで愚かなことをしているでしょう。ここにいくつかのコードがあります:(実際には、vboを​​ロードおよび描画するメソッドを除くほとんどすべてのコード(vbo-sを示すOpenTKサンプルから取得されます)) vboにキューブをロードし、カメラのクォータニオンを初期化します protected override void OnLoad(EventArgs e) { base.OnLoad(e); cameraPos = new Vector3(0, 0, 7); cameraRot = Quaternion.FromAxisAngle(new Vector3(0,0,-1), 0); GL.ClearColor(System.Drawing.Color.MidnightBlue); GL.Enable(EnableCap.DepthTest); vbo = LoadVBO(CubeVertices, CubeElements); } ここに透視投影をロードします。これは、最初とウィンドウのサイズを変更するたびにロードされます。 protected override void OnResize(EventArgs e) { base.OnResize(e); GL.Viewport(0, 0, Width, Height); float aspect_ratio = Width / (float)Height; Matrix4 perpective = Matrix4.CreatePerspectiveFieldOfView(MathHelper.PiOver4, …

3
個人のゲームプロジェクトをスピードコーディングすることによる具体的なメリット
通常、「タイプXのゲームをY時間で書く」または「X時間のゲームをそれぞれX時間だけ書く」という分野で、数人のプログラマーが時間に敏感な課題を設定していることに気付きました。この方法でワークフローを設定して、しばらくの間コードを高速化することの具体的なメリットは何ですか?何かを迅速に行うには、効率的なコードをトレードオフする必要があるように感じます。そして、これらの課題において、最終的な磨きの層を追加することは大きな優先事項ではないと思うので、プログラマを使用してもかまいません。 数年前に簡単な2Dスクロールシューティングゲームとパズルゲームをいくつか作成しましたが、愚かさからコードのほとんどを削除しました。だから今、私はスピードコーディングアプローチを使用して、いくつかの簡単なことをやり直し、ゲームロジックをもっと理解することに興味があります。

3
環境を33%拡大するための経験則はありますか?
私はGamasutraで「ゲームトラックデザインのレースへの合理的なアプローチ」という記事を読んでいて、次のことがわかりました。 第三者のゲームで一般的に認められているルールは、環境を約33%の規模で拡大することです(2ページ) 私はただ好奇心が強いです:他の誰かがそのようなルールを聞いたことがありますか?そうだとすれば、どこへの参照を見つけることができますか?

4
3Dの前に2Dのゲーム開発を学ぶべきですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 3年前に閉店しました。 私はiPhoneアプリ開発者です。iOSのゲームに興味があります。問題は、Unityのような3Dゲームを学ぶ前に、Cocos 2DやCorona SDKのような2Dを学ぶことから始めるべきですか?3Dゲームにもっと興味がありますが、2Dゲームを知ることが3D開発を学ぶための前提条件だと思いますか?
14 2d  3d  ios 

3
PCゲームアップデートシステム[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 6年前に閉鎖されました。 PCゲームをほぼ終了しました(1〜2日でリリースします)。リリース直後にゲームのバグを見つけた場合や、後で機能を追加したい場合に備えて、簡単にネット上でパッチをリリースする方法が欲しいです。 InstallJammerをインストールシステムとして使用しています。インターネット経由でプレーヤーの更新を確認して送信できる優れた更新/パッチプログラム(できれば無料)はありますか? たとえば、プレーヤーが私のゲームを開いた場合、ゲームは最初に更新プログラムをチェックする更新プログラムを開始します。更新が利用可能な場合は、ユーザーに更新の入手先を通知します。自分が所有するゲームエンジンのソースコードを変更することはできますが、車輪を再発明したくないのです。

2
これは、MMORPGモバイルゲームに適したアーキテクチャですか?
最近、私は会社のために新しいMMORPGモバイルゲームのアーキテクチャを設計しようとしています。このゲームは、マフィア戦争、iMobsters、またはリスクに似ています。基本的な考え方は、敵(オンラインユーザー)と戦うために軍隊を準備することです。 以前は複数のモバイルアプリに取り組んできましたが、これは私にとって新しいことです。多くの苦労の末、高レベルのフロー図を使用して説明するアーキテクチャを思いつきました。 クライアントサーバーモデルを使用することにしました。サーバーに集中データベースがあります。各クライアントには、サーバーとの同期を維持する独自のローカルデータベースがあります。このデータベースは、マップ、製品、在庫など、頻繁に変更されないものを保存するためのキャッシュとして機能します。 このモデルが適切に配置されているため、次の問題に取り組む方法がわかりません。 サーバーとクライアントのデータベースを同期する最良の方法は何でしょうか? イベントをサーバーに更新する前に、ローカルDBに保存する必要がありますか?集中DBに変更を保存する前に、何らかの理由でアプリが終了した場合はどうなりますか? 単純なHTTP要求は同期の目的を果たしますか? 現在ログインしているユーザーを知る方法は?(1つの方法は、クライアントがアクティブであることを通知するためにx分ごとにサーバーにリクエストを送信し続けることです。 クライアント側の検証は十分ですか?そうでない場合、サーバーが何かを検証しない場合にアクションを元に戻す方法は? これが効率的なソリューションであるかどうか、およびどのように拡張されるかはわかりません。すでにそのようなアプリに取り組んでいる人々が自分の経験を共有できれば、もっと良いものを思い付くのに役立つかもしれません。前もって感謝します。 追加情報: クライアント側は、マーマレードと呼ばれるC ++ゲームエンジンに実装されています。これは、すべての主要なモバイルOSでアプリを実行できることを意味するクロスプラットフォームゲームエンジンです。私たちは確かにスレッド化を達成することができ、それは私のフロー図にも示されています。サーバーにMySQLを、クライアントにSQLiteを使用する予定です。 これはターンベースのゲームではないため、他のプレイヤーとのやり取りはあまりありません。サーバーはオンラインプレーヤーのリストを提供し、バトルボタンをクリックしてバトルを行うことができます。いくつかのアニメーションの後、結果がアナウンスされます。 データベースの同期には、2つのソリューションがあります。 各レコードのタイムスタンプを保存します。また、ローカルDBが最後に更新された日時を追跡します。同期するときは、タイムスタンプの大きい行のみを選択して、ローカルDBに送信します。削除された行にはisDeletedフラグを保持して、すべての削除が更新として動作するようにします。しかし、すべての同期要求について、完全なDBをスキャンし、更新された行を探す必要があるため、パフォーマンスに関して深刻な疑問があります。 別の手法として、ユーザーに対して行われた各挿入または更新のログを保持することもできます。クライアントアプリが同期を要求したら、このテーブルに移動して、どのテーブルのどの行が更新または挿入されたかを見つけます。これらの行がクライアントに正常に転送されたら、このログを削除します。しかし、ユーザーが別のデバイスを使用するとどうなるかを考えます。ログテーブルによると、すべての更新はそのユーザーに転送されましたが、実際には別のデバイスで行われました。そのため、デバイスも追跡する必要があります。この手法の実装には時間がかかりますが、最初の手法が実行されるかどうかはわかりません。


1
XNA / Blenderを使用して3Dキャラクターモデルに機器を追加するにはどうすればよいですか?
私はかなりの数のBlenderチュートリアルを見てきましたが、サブモデルを交換する方法の例をまだ見ていません。私の質問は、キャラクターモデルの装備をどのように交換するのですか?具体的には、XNAのキャラクターモデルが保持している衣服やアイテムを動的に追加/交換できるようにしたいと考えています。理想的には、アイテムはキャラクターモデルの骨構造に沿っているでしょう。 例えば; XNAの裸のキャラクターから始めて、キャラクターにaを持たせ、キャラクターのアニメーションに続くチェーンメールを身に付けさせたいと思います。また、ゲーム中いつでもこの装備を剣とプレートメールに切り替えられるようになりたいです。機器の組み合わせごとにモデルを作成するのは避けたいです。骨(剣の骨など)と1つのモデルのメッシュを別のモデルの骨(右手の骨など)に追加する方法はありますか? ありがとう…
14 xna-4.0  blender 

1
ボロノイ粉砕の長所と短所は何ですか?
Youtubeでボロノイ粉砕ビデオを見ました。 それについてのあなたの経験は何ですか? 時間の複雑さ、リソースの複雑さ、実装の難しさの長所と短所は何ですか? 実際の素材がどのように反応するかをエミュレートしますか?
14 algorithm 

4
2Dタワーディフェンス-敵への弾丸
敵に弾丸を打つための良い解決策を見つけようとしています。ゲームは2Dタワーディフェンスです。タワーは弾丸を撃ち、保証された敵を攻撃することになっています。 私はこの解決策を試しました-http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/ 弾丸の起源と敵を同様に差し引くために言及されたリンク(ベクトル減算)。私はそれを試してみましたが、敵の周りに弾丸がついてきます。 float diffX = enemy.position.x - position.x; float diffY = enemy.position.y - position.y; velocity.x = diffX; velocity.y = diffY; position.add(velocity.x * deltaTime, velocity.y * deltaTime); 私はベクトルに精通していますが、このソリューションを機能させるためにどのステップ(ベクトル演算)を行うべきかはわかりません。

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