2009-12-04 67 views
8

我曾經玩過基於Smaug Codebase的MUD。它是高度定製的,但核心是相同的。我有這個MUD的源代碼,並且有興趣編寫我自己的(只是爲了一個有趣的項目)。我有一些問題,主要是關於設計方面的問題。也許有人可以幫我一把嗎?MUD編程問題

  1. 我應該使用哪種語言?解釋還是編譯?這有什麼不同嗎? SMAUG是用C語言編寫的。我對很多語言感到滿意,並且學習得更多也沒有問題。
  2. 有沒有一種特殊的方法可以不妨礙性能?面向對象,功能等?
  3. 我應該使用什麼媒介來存儲數據?平面文件(這是什麼SMAUG使用),或SQLite的東西。兩者的性能優點/缺點是什麼?
  4. 有沒有人知道如何開始這樣的項目的任何指南?

我希望能夠擴展到50個玩家同時在線而不會降低性能。如果我使用Ruby 1.8(非常慢),與使用Python 3.1(更快)還是編譯C/C++相比,它會起什麼作用?

如果任何人都可以伸出援手並提供一些信息或建議,我會永遠感激。

回答

11

我給這一個鏡頭:

  1. 在2009年,一個50人遊戲,也沒關係。如果你想進一步發展,你可能需要選擇一種熟悉分析工具的語言,但是由於現在的內存非常便宜,驅動早期LPMUD(我有經驗的)和DikuMUD(它是你的史矛革來源於)不適用。 (LPMUD可以在8MB RAM的機器上處理〜10-15個玩家)
  2. 編程風格不一定會導致性能困難,大型網站(如Amazon's 'obidos' webserver)用C編寫,但像原始網站一樣大的網站Yahoo Stores是用Lisp編寫的,StackOverflow是用ASP.NET編寫的,我會/親自/使用C,但很多人會稱我爲虐待狂。
  3. 平面文件在今天的時代對於大量的數據存儲來說是沒有意義的,但有特定的例外情況(例如,大型郵件服務器有時使用'maildir',例如構造爲平面文件)。你的遊戲規模可能意味着你不會因爲數據檢索延遲而陷入巨大的緩慢時間,但在崩潰的情況下數據完整性可能會成爲最令人信服的論點。
  4. 不知道任何指南,但我會做的是試圖讓遊戲開始作爲一個愚蠢的聊天服務器啓動,確保用戶可以登錄並執行一些操作(將他們的輸入並將其轉儲給所有用戶其他用戶),然後建立起來,允許特定的登錄,所以你將開始面臨用戶名/密碼處理的挑戰,並且用戶選項設置/存儲/檢索...然後開始添加遊戲驅動程序元素(獲取井字棋遊戲在遊戲中工作),然後再稍微複雜一點(通過5個房間的設置來處理可以相互拾取/丟棄/打擊的物體),然後添加一些非玩家角色,然後擔心在Diku中sl sl - 來自smaug城堡/等,並與他們合作。 :)

這是一個關閉的袖口,我敢肯定有不同意見。 :) 祝你好運!

+0

啊,LPMUD ......帶回了很多回憶。 LPC實際上非常適合開發物品和生物。 – Fredrik

+0

非常穩固的答案喬恩!我會提到開始與異步通信愚蠢的聊天程序。這將是一個痛苦,回去並插入。 – 2009-12-04 21:16:36

1

這是一款基於文本的遊戲,對吧?在這種情況下,使用當前的硬件,似乎所有您不必擔心的是不會意外創建O(n ** 2)算法。即使這對50個用戶來說也不會太糟糕。