ネットワーク世界シミュレーション/AI サンドボックス用 3D ゲーム エンジン [終了]
-
20-09-2019 - |
質問
5 年以上前、私は DirectSound と Direct3D を使って遊んでいたのですが、C++ で良い結果を得るにはかなりの時間がかかりましたが、非常にエキサイティングであると感じました。当時私は大学生でした。現在、私は主に C# と PHP によるエンタープライズ開発の経験があり、それを生業としています。私たちの国では本格的なゲーム開発でお金を稼ぐチャンスは実際にはありません。毎日、何かを見逃していることにますます気づきます。そこで、毎日 1 時間ほどかけて、楽しみながらプログラミングをすることにしました。
そこで私のアイデアは、世界シミュレーションを構築することです。シンプルなものから始めたいと思っています - 自分たちの人生を生きる人間に似た生き物たち - シムズ 3 のようなものですが、もっとシンプルで、基本的なニーズ、基本的なアニメーション、最小限のグラフィック アセットだけです - それは都市ではなく単なる都市になると思いますまずは大きな家。そのアイデアは、MySQL データベースに世界データを保存するある種のサーバー アプリケーションと、動きや世界と相互の相互作用をシミュレートする体のない AI ボットなどのいくつかのクライアント アプリケーションを用意することです。でも3Dじゃないと面白くない。3D クライアントもあります。その仮想世界に入り、AI ボットが生きているのを見ることができます。ボットが可視領域に入るとマテリアルになり、メッシュとアニメーションが読み込まれるので、それを見ることができます。私が去ると、ボットは再び 3D メッシュ ボディを失いますが、仮想生活はまだ続きます。
時間が経てば、さまざまな AI アルゴリズムなどを実験できる、拡張可能なスクリプト可能なサンドボックスのようなものにしたいと考えています。しかし、私は本格的な MMORPG を作成するつもりはありません :D
必要になる可能性のあるもの (無料およびオープンソース) をたくさん探しましたが、次の選択をする必要があります。
OGRE3D + enet (または RakNet)。古き良きC++。でも、あまりにも遅くなりすぎて楽しめなくなってしまわないでしょうか?
クリスタルスペース。正式にはゲームエンジンではありませんが、それに非常に近いものです。またC++。
MOgre (.NET 用の OGRE3D ラッパー) + lidgren (一部のゲーム プロジェクトですでに使用されているネットワーク ライブラリ)。良いです - 私は C# が好きです。高速プログラミングに適しており、スクリプト作成にも使用できます。
XNA はエンジンではなく、単なるフレームワークのようです。本当に疑問があります。XNA Game Studio を見るべきでしょうか :(
Panda3D - 肯定的なフィードバックを備えた完全なゲーム エンジン。すべてのツールセットを 1 つのパッケージにまとめたというアイデアがとても気に入っています。Python を知っていれば、初心者に優しいエンジンとして良いレビューを得ています。C++ 側では、Panda3D にはドキュメントがほとんど存在しません。私は Python の経験はありませんが、習得は簡単だと聞いています。それが楽しくてやりがいのあるものであれば、もう 1 つプログラミング言語の経験が役立つと思います。
高度な機能や優れたプラットフォームのサポートのためではなく、主に楽しくて簡単なワークフローと拡張性のため、必要なすべてのコンポーネント (データベースを備えたサーバー、AI ボット、3D など) を作成して統合できるようにするため、次のうちどれをお勧めしますか?クライアントアプリケーション?
解決
、鬼のバインディングがあります。 のpython-鬼にチェックしてください。私はそれを少し使用している、それが使用されるのに十分安定して見えました。ユーザーベースがその大きくはありませんしかし、あなたは時折バグが発生します。
私は私が多くを使用して楽しむ無地C ++鬼、とのより多くの経験を持っています。私は多くのことを、それはあなたを遅くするとは思いません。あなたのプロジェクトは非常に大きなレベルにまで拡張できように見えます、そしてあなたはそれを行うには、パフォーマンスの多くが必要になります。この場合、C ++は悪い選択になることはありません。
エンジンが完了すると、はとにかく、それはほとんどすべてのスクリプトについてです。あなたが望むならば、あなたは、高レベル言語でそれを行うことができます。
他のヒント
私はXNAを使用しましたので、私は本当にあなたが他の人に良い比較を与えることはできません。私は、XNAがちょうどフレームワークでありながら、 TorqueX 3D には、エンジンであることを言うだろう。あなたはXNAのために($ 100 /年)を開発するためにサインアップするときは、TorqueX 2Dおよび3Dエンジンのバイナリへのアクセスを取得します。
私は、3Dエンジンで働いていないが、私は、2Dエンジンを使用していました。私は、APIのドキュメントは少しまばらなことができることを言うだろうが、彼らはいくつかの本当に良い入門チュートリアルやチュートリアルで回答されていない質問のためにかなり役立つとアクティブなフォーラムを持っています。
のC#でのあなたの経験は明らかに非常に便利になるだろう。あなたはネットワークスタック(またはデータベース)にアクセスすることはできませんので、あなたは、Xbox 360で、しかし、Windowsの開発に固執する必要があります。
私はチュートリアルを働いたとトルクのスタイルに慣れたら、、私はで動作するように、かなり楽しいことが判明しました。これは、オブジェクト/動作を追加することは非常に簡単です。サウンドのサポートが改善され、XNAフレームワークの最新リリースの一部と本当に簡単行われています。これは、2Dのための良いエディタを持っており、私は、3Dエディタを使用して、レベルを作成し始めるのに役立つだけでなく(実際にそれを試していない)まともだと思います。私はそれがネットワーク/データベース部門に欠けている、あなたは標準の.NETのものを使用するかで動作するように他のライブラリに持参する必要があるだろうと思います。
私はとにかくそれを見て、他の人にそれを比較するために、あなたの時間の価値があると思います。私はあなたがそれで遊んしたい場合でもXNAにサインアップすることなく、自由に(30日)の試用版をダウンロードすることができます信じています。幸運!
Panda3Dはあなたがで記録された対話型のクライアントサイドのメッシュの変化のために必要なものだろうそれは(多くの3Dエンジンで使用するには、この機能が欠けている、バギーあるいは困難な)実行時にメッシュを変更する方法を持っているので、約束を持つように見えます一般的なサーバー。データベースでは、あなたがそれが変更されたときに、更新メッシュ情報を取得するには、クライアント用のパッチを生成するために、適切なクエリを実行できるように変更にタイムスタンプを含めるようにしてくださいます。
あなたが私のSQLのようなテーブルの何かが、おそらくオフになっているが、これはアイデアを提供します作ることができるのInnoDBを使用して
create table `vertex` (
`id` bigint(15) not null auto_increment,
`when` timestamp default now() not null,
`x` number not null,
`y` number not null,
`z` number not null,
`cR` number default 0.0 not null,
`cG` number default 0.0 not null,
`cB` number default 0.0 not null,
`cA` number default 1.0 not null,
`u` number default 0.5 not null,
`v` number default 0.5 not null
) primary key (id) ENGINE=InnoDB;
create table triangles (
`p1` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
`p2` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
`p3` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
`when` timestamp default now() not null
) primary key (p1,p2,p3) ENGINE=InnoDB;
のidは、タイムスタンプを使用すると、アップデートパッチを作成することができますされた頂点IDがあります X、Y、Zは、3D頂点であります CR、CG、CB、CAはRGBA頂点色であります U、Vは頂点テクスチャ座標であります P1、P2、P3、これらの外部キー参照によって示されるように三角形を形成するために、頂点テーブルに頂点を参照してください... InnoDBは私たちが未定義の頂点を防ぐことができます(例:一貫性)関連の問題はとても同様にそれを使用することができます。あなたの状況の変化が削除された頂点にすべての三角形を削除するために許容されている場合は、
(制限がそれを使用する三角形と頂点を削除するとエラーになります)「カスケード」に「制限」ボットメッシュアルゴリズムについては、基本的にあなたがいないビューでのボットのためのLODカリングをimplemententingています。多くのエンジンはすでに、すでにあなたのためにこれを行うことができます。例えば、すべてのボットのスキニング/アニメーションメッシュはPanda3Dにボットの外側のオブジェクトに子を作ることができ、ボットの外側のオブジェクトは、子供のどれもまったく参照されていない。目に見える範囲の外に選別されている場合