問題タブ [mud]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ゲームアイテムのクラス階層に関するアドバイス
私は MUD エンジンを作成しており、拡張可能である必要があるゲーム オブジェクト モデルを開始したばかりです。
主に私がやったことは面倒だと感じているので助けが必要ですが、よりうまく機能する別の解決策が思いつきません.
というクラスと というMudObject
別のクラスContainer
があります。コンテナには複数の を含めることができますMudObjects
が、MudObject
それ自体ですが、MudObject
コンテナが何に含まれているかを知る必要があります。
したがって、それらは次のようになります。
(これらは単なる例であり、一部の修飾子とアクセス修飾子、プロパティなどが見落とされていることに注意してください)
これだけでも面倒に思えますが、何か他のものをミックスに追加しましょう。
Item
は、MudObject
すべてのビジュアル アイテム (武器など) が継承されるものですが、これらの一部はコンテナ (チェストなど) である必要もあります。しかし、C#には多重継承などはありません。したがって、インターフェースに行き着きます。最良の選択は、コンテナーをインターフェースにすることです(私が見る限り)しかし、そうしたくない理由がありました。つまり、コンテナに を追加するMudObject
と、コンテナがMudObject
s.containedBy
値を更新します。
これを機能させるアイデアはありますか、それとも物事を複雑にしすぎるという罠に陥っていますか?
もしそうなら、他に何を提案できますか?
client - クロス OS telnet クライアントの Telnet lib と言語の選択?
telnet サーバーでホストされている MUD に接続するMUD クライアントアプリケーションを開始しようとしています。私にとって唯一重要なことは、どの OS でも問題なく効率的に動作することです。その要件を除けば、私は実際にどの言語でも販売されているわけではありません。
そこで、アプリケーションのベースとなる、無料で入手できる telnet クライアント ライブラリを探しているので、プロトコルの詳細にあまり対処する必要はありません。
mud - MUD を開発するために共有できる有用なリソースやヒントはありますか?
趣味のプロジェクトとして、ROM (Diku-Merc ベース) の派生物を作成しようとしています。(現在は廃止されています)誰かが同様のことを行い、共有するのに役立つリソースや提供するヒントがあれば幸いです. メーリング リストなどの多くのリソースがアクティブではなくなり、多くのリンクが無効になっていることがわかりました。
私が ROM を選んだのは、私がプレイヤーとして慣れ親しんでいるものだからですが、ソースは私が出会った何よりも複雑であり、理解しやすいコード ベースを選んでもかまいません。本格的に飛び込む前の推奨事項もいただければ幸いです。
マッド コミュニティ全般については、マッド コネクタ以外のことはあまり知りません。なぜなら、私は常に開発者というよりはユーザー/プレーヤーの役割を担ってきたからです。私が最も大切にしているのは、質問に対する答えを得ることができる寛容で活動的な場所です。
c# - C# Telnet プロキシ
C# で拡張可能な MUD/ORPG ゲーム サーバー フレームワークの開発に取り組んでいます。パッケージの一部として、ユーザーのマシンにインストールできる SOCKS5 プロキシ クライアントを含めたいと考えています。このプロキシ クライアントは、ユーザーの標準的な telnet クライアント (zMUD、GMUD、MUSHclient、または単純な telnet) と MUD ゲーム サーバーの間に位置し、特定のパケットを探します。これらのパケットは、従来テキストベースの telnet クライアントでは利用できなかった別のウィンドウと情報を表示するようにクライアントに指示します。ゲームアプリなので、世界地図や装備一覧などを表示することができます。
プロキシ開発がどのように機能するか、およびこれを作成し始めることができる場所に関する情報/ガイダンスを探しています。私は現在、基本的な C# telnet クライアントを持っており、サーバー自体にはマルチスレッドの telnet リスナーがあり、すべてがうまくいっています。そのため、システムを完全にテストすることができます。仲介者 (プロキシ) を作成するために何をすべきかを知る必要があるだけです。 . どんな提案でも大歓迎です。
database - データベースのセットアップについてアドバイスをいただけますか?
私はPythonでMUD(Multi User Dungeon)に取り組んでおり、部屋、敵、アイテムなどを追加する必要があるところまで来ています。これをすべてハードコードすることもできますが、これはデータベースの仕事の多く。
しかし、これまでデータベースを実際に扱ったことがないので、これを設定する方法について何かアドバイスがあれば教えてください。
- データはどの形式で保存すればよいですか?
- 各エンティティのデータベースに Dictionary オブジェクトを格納することを考えていました。このようにして、データベースの列を変更することなく、その場でデータベースに新しい属性を簡単に追加することができました。それは合理的に聞こえますか?
すべての情報を同じデータベースに保存する必要がありますが、異なるデータベースの異なるテーブルまたは異なるエンティティ (敵と部屋) に格納する必要があります。
これがワームの缶詰になることはわかっていますが、優れたデータベースの提案は何ですか? MySQL は良い選択ですか?
networking - MUD プログラミングに関する質問
Smaug Codebaseに基づいた MUD をプレイしていました。高度にカスタマイズされていましたが、コアは同じでした。私はこの MUD のソース コードを持っており、自分で作成することに興味があります (楽しいプロジェクトのためだけに)。いくつか質問がありますが、主にデザインの側面についてです。多分誰かが私に手を差し伸べることができますか?
- どの言語を使用すればよいですか? 解釈またはコンパイル?違いはありますか?SMAUG は C で書かれています。私は多くの言語に慣れており、さらに学習することに問題はありません。
- パフォーマンスを妨げないようにするために従うべき特定のアプローチはありますか? オブジェクト指向、関数型など?
- データの保存にはどの媒体を使用すればよいですか? フラットファイル (これは SMAUG が使用するものです)、または SQLite のようなものです。両方のパフォーマンスの長所と短所は何ですか?
- このようなプロジェクトを開始する方法について、誰もが知っているガイドはありますか?
パフォーマンスを低下させずに、一度に 50 人のプレイヤーがオンラインにできるように拡張したいと考えています。Ruby 1.8 (非常に遅い) を使用した場合、Python 3.1 (より高速) やコンパイル済みの C/C++ を使用した場合と比べて違いはありますか?
誰かが手を貸して情報やアドバイスを与えることができれば、私は永遠に感謝します.
java - Java MUDで永続性をどのように処理する必要がありますか?OptimisticLockExceptionの処理
元の開発者の許可を得て、Javaで古いBBSMUDゲームを再実装しています。現在、ゲームロジックにはEJBセッションファサード、永続性にはJPAを備えたJavaEE6を使用しています。セッションBeanを選んだ大きな理由はJTAです。
私は、OptimisticLockExceptionが発生した場合にそれをキャッチして、データが古く、再適用/再送信する必要があることをユーザーに通知するWebアプリの経験が豊富です。マルチユーザーゲームで常に「再試行」と応答すると、ひどい経験になります。戦闘中に複数の人が1つのモンスターをターゲットにすることを期待していることを考えると、OptimisticLockExceptionの可能性は高いと思います。
telnet CLIを提示する部分である私のビューコードは、EJBクライアントです。PersistenceExceptionsとTransactionRolledbackLocalExceptionsをキャッチして、再試行する必要がありますか?いつ停止するかをどのように決定しますか?
悲観的なロックに切り替える必要がありますか?
すべてのユーザーコマンドが過剰に殺された後も持続していますか?全世界をRAMにロードし、数分ごとに状態をダンプする必要がありますか?
セッションファサードをチョークポイントとして機能するEJB3.1シングルトンにして、あらゆるタイプのJPAロックを実行する必要をなくしますか?EJB 3.1シングルトンは、マルチリーダー/シングルライターデザインとして機能します(メソッドにリーダーおよびライターとして注釈を付けます)。
基本的に、再送信/再試行のプロンプトをユーザーに提示することが受け入れられないアプリケーションで、データの同時変更に最適な設計とJavaPersistenceAPIは何ですか?
multithreading - 複数のスレッドを実現するためのClojureの最良の方法は?
私はClojureで書かれたMUDクライアントに取り組んでいます。今、私は2つの異なるスレッドが必要です。1つはユーザーからの入力を受け取り、それを(単純なソケットを介して)MUDに送信し、もう1つはMUDからの出力を読み取ってユーザーに表示します。
Javaスレッドだけを使用する必要がありますか、それとも、Clojure固有の機能を使用する必要がありますか?
python - 複数のプレイヤーが自分の MUD に接続できるようにするにはどうすればよいですか?
最近、短くてシンプルなマルチユーザー ダンジョンを作成しました。私が作ったのはゲームのエンジンと実際の MUD そのものなので、ファイルをクリックすると MUD が再生されます。私が抱えている問題は、複数のプレイヤーがプレイできるように接続する方法がわからないことです。サーバーなどに接続していますか?Python と MUD は初めてなので、どうすればよいかわかりません。コードと、このゲームを接続して実行する方法について、いくつかの例を挙げて助けてもらえますか?
python - MUD (ゲーム) のデザイン コンセプトの時限イベントに関する質問
MUD (マルチプレイヤー インタラクティブ フィクション ゲーム) を作成しようとしています。
私は設計/概念化の段階にあり、解決策を思い付くことができない問題に遭遇しました。より経験豊富なプログラマーがアドバイスをくれることを願っています。
これが私が説明できる限りの問題です。プレイヤーがアクションを実行することを決定すると、サーバーにコマンドが送信されます。次に、サーバーはコマンドを処理し、アクションを実行できるかどうかを判断し、アクションを実行するか、実行できなかった理由について応答します。アクションが失敗する理由の 1 つは、プレーヤーが何か他のことをするのに忙しいことです。たとえば、プレイヤーが戦闘中に巨大なブロードソードを振った場合、このアクションを繰り返すまでに 3 秒かかることがあります。プレーヤーがすぐにもう一度スイングしようとすると、ゲームは応答して、それを行う前に x 秒待つ必要があることを示します。これで、おそらく問題なく設計できます。私が抱えている問題は、AI クリーチャーからこの動作をどのように再現できるかということです。サーバーが独自に実行しているすべてのイベント、プレーヤーが行ったことに対する即時の反応としてではなく、時間に敏感である必要があります。邪悪なモンスターがあなたに呪文を唱えましたが、もう一度それを行うには 30 秒待たなければなりません...おそらくこれらすべてのイベントをある種のイベント キューに追加することになると思いますが、そのイベント キューを時間に敏感にするにはどうすればよいでしょうか?