8

Smaug Codebaseに基づいた MUD をプレイしていました。高度にカスタマイズされていましたが、コアは同じでした。私はこの MUD のソース コードを持っており、自分で作成することに興味があります (楽しいプロジェクトのためだけに)。いくつか質問がありますが、主にデザインの側面についてです。多分誰かが私に手を差し伸べることができますか?

  1. どの言語を使用すればよいですか? 解釈またはコンパイル?違いはありますか?SMAUG は C で書かれています。私は多くの言語に慣れており、さらに学習することに問題はありません。
  2. パフォーマンスを妨げないようにするために従うべき特定のアプローチはありますか? オブジェクト指向、関数型など?
  3. データの保存にはどの媒体を使用すればよいですか? フラットファイル (これは SMAUG が使用するものです)、または SQLite のようなものです。両方のパフォーマンスの長所と短所は何ですか?
  4. このようなプロジェクトを開始する方法について、誰もが知っているガイドはありますか?

パフォーマンスを低下させずに、一度に 50 人のプレイヤーがオンラインにできるように拡張したいと考えています。Ruby 1.8 (非常に遅い) を使用した場合、Python 3.1 (より高速) やコンパイル済みの C/C++ を使用した場合と比べて違いはありますか?

誰かが手を貸して情報やアドバイスを与えることができれば、私は永遠に感謝します.

4

2 に答える 2

11

私はこれを試してみます:

  1. 2009 年の 50 人用のゲームでは、それは問題ではありません。さらに成長させたい場合は、プロファイリングツールに精通している言語を選択することをお勧めしますが、最近の RAM は非常に安価であるため、初期の LPMUD (私が経験した) と DikuMUD (これはあなたの Smaug の派生元) は適用しないでください。(LPMUD は、8MB RAM のマシンで最大 10 ~ 15 人のプレーヤーを処理できます)
  2. プログラミング スタイルが必ずしもパフォーマンスの問題につながるわけではありません。Amazon の「obidos」ウェブサーバーのような大規模なサイトは C で記述されていますが、元の Yahoo ストアのような大規模なサイトは Lisp で記述されており、StackOverflow は ASP.NET で記述されています。私は /個人的には C を使いますが、多くの人は私をサディストと呼んでいます。
  3. フラット ファイルは、多くのデータ ストレージが必要な今日の時代では意味がありません。特定のケースの例外があります (たとえば、大規模なメール サーバーでは、構造化されたフラット ファイルである「maildir」を使用することがあります)。ゲームのサイズは、データ取得の遅延による大幅な速度低下が発生しないことを意味している可能性がありますが、クラッシュした場合のデータの整合性はおそらく最も説得力のある議論になるでしょう.
  4. ガイドについては知りませんが、私がすることは、ダムチャットサーバーとしてゲームを開始して、ユーザーがログインして何かを実行できることを確認することです (入力を取得して、他のすべてのユーザーにダンプします) 、次にそれを特定のログインを許可するように構築するため、ユーザー名/パスワードの処理、およびユーザーオプションの設定/保存/取得の課題に直面し始めます...次に、ゲームドライバー要素の追加を開始します(ゲームで三目並べゲームを動作させる) )、次にもう少し複雑にします(5部屋のセットアップで、拾い上げたり、ドロップしたり、お互いにぶつけたりできるオブジェクトを使用します)、ノンプレイヤーキャラクターをいくつか追加し、Diku由来のスマウグを丸呑みする心配城などと一緒に働いています。:)

これはちょっと的外れで、反対意見もあると思います。:) 幸運を!

于 2009-12-04T21:11:03.620 に答える
1

これはテキストベースのゲームですよね?その場合、現在のハードウェアでは、誤って O(n**2) アルゴリズムを作成することだけを心配する必要があるようです。それでも、50 人のユーザーがいる場合は、おそらくそれほど悪くはありません。

于 2009-12-04T21:16:56.930 に答える