0

それで、私はこのゲームを約 3 か月作成しており、フレームワークの準備はほぼ整っていますが、1 つ欠けているものがあります。ビジュアル部分です。ゲームのマップ システムは 3D 環境である必要がありますが、通常のマップ システムではありません。これは、他の種類のファイルをロードするのではなく、主にコードを使用してマップ自体を構築することが主な目的であるためです。コードは少し完成していますが、ここでの問題は、これをどのようにレンダリングして内部的にプログラムするかということです。

これが行うべきことは次のとおりです。

1- 主なアイデアは、環境の基本単位であるBlockと呼ばれるクラスを作成することです。すべてのブロックは 32x32x32 (またはおそらく 64x64x64) の立方体であり、そのすべての側面にテクスチャがあるか、別のまだ特定されていない方法で構築されたある種のポリゴンです。ブロックには、そのプロパティを決定する Opacity、Luminosity、HasGravity、IsMoveable/IsMovable/IsMobile、および IsEditable フィールドもあります。

2-マップには存在するがマップの一部ではないオブジェクトまたは生物のようなエンティティクラスがあります。これには、システムによって構築されていない実際の 3D モデルが必要になると思います。X、Y、Z の場所/サイズ フィールドもあります。それらには重力のようなものがありますが、現在は多くの物理が必要ではありません。プレーヤーはエンティティです。

3-フィールド X、Y、Z のサイズを持つMapクラスがあります。これは、マップが立方体のような方法で特定の量のブロックを構築することを目的としています。このクラスには、位置によってブロックにアクセスするために使用される、ブロックのトリプル配列もあります。ブール値の RenderSky や AllowTerrainEdit (プレイヤーによる) などの多くの設定フィールドがあります。マップの Y 制限ブロックが Void (ボイドを表す Block のクラス) で、マップの RenderSky ブール値が true に等しい場合、マップはある種の空のものをテクスチャとしてレンダリングするか、より良い方法で Sky をレンダリングする必要がありますか?

4- Cameraクラスは、何をレンダリングするかを決定するツールとして機能する特別なタイプのエンティティです。たとえば、プレーヤーが一人称モードを使用している場合、カメラは常にプレーヤーのすぐ近く (またはおそらくその内側) にあります。カメラは、固体ブロック内以外のどこにでも配置できます。カメラは見えません。

4- グラフィックスはまだそれほど良いものである必要はありませんが、このシステムの目的は、マップを完全に柔軟でコードに適したものにすることです (たとえば、プレイヤーがサンドボックス スタイルのアクションを試してみたいと思った場合など)。別のマテリアルのマップを作成する場合、コードはそれをすべて行うことができます. また、コードや 3D の知識を必要とせずに、開発者とユーザーの両方にとってマップの作成が非常に簡単になります)。世界をいくつかの立方体に分割して多数のフィールドを選択する以外のアイデアも有効です。

今はどうやって続けたらいいのかわからない。これは、ゲームに欠けている唯一の部分です。

有用な事実:

  • このゲームは、半現実世界を作成しようとする一種のシミュレーターです。つまり、素晴らしく現実的なもの (現実世界の時間システム、if(boolean) ステートメントに基づく AI を備えた NPC、物理学など) が計画されています。複数の update() void があるため、パフォーマンスで考えると良い結果になる場合があります

  • マップの高さは約 200 ブロック以上 (少なくともメイン マップの場合) で、長さと幅はほぼ無限のブロック数になるように設計されています。多分これは不可能でしょう。良い点は、パフォーマンスを低下させる可能性があるのはレンダリングされたコンテンツだけであり、すべてのレンダリングを計算する必要はなく、カメラのビューだけであるということです。

  • 現在、純粋に Java プログラミング言語で作成されています。

  • ここでOpenGL ツールを使用すると便利だと思います。

すべてを読んでくれてありがとう。あなたの助けに感謝します。

4

1 に答える 1

1

Lightweight Java Game Libraryはどうですか?

Lightweight Java Game Library (LWJGL) は、商用品質のゲームを Java で作成できるようにするための、プロおよびアマチュアの Java プログラマーを対象としたソリューションです。LWJGL は、OpenGL (Open Graphics Library)、OpenCL (Open Computing Language)、OpenAL (Open Audio Library) などの高性能クロスプラットフォーム ライブラリへのアクセスを開発者に提供し、最先端の 3D ゲームと 3D サウンドを可能にします。さらに、LWJGL は、ゲームパッド、ステアリング ホイール、ジョイスティックなどのコントローラーへのアクセスを提供します。すべてがシンプルでわかりやすい API です。

于 2013-06-05T02:19:06.193 に答える