2009-07-31 32 views
26

有誰知道在哪裏可以找到RP遊戲開發的類圖示例?類似於here的東西會非常有用。我不是在尋找我可以大肆複製的東西,而是針對不同的例子,這些例子對我在嘗試和下課時自己發現的問題繪製了各種解決方案。角色扮演遊戲的類圖示例

+7

我愛你鏈接到一個。我發誓我們大多數程序員,特別是日常工作中的程序員,只能爲編寫像`bool isLivingDead()`這樣的函數的爽快體驗做RPG。 – Gavin 2009-08-05 15:48:57

+3

if(creature.isLivingDead()&& hero.isSlayer())hero.slay(creature); – 2009-08-06 13:05:03

回答

48

的一個很好的概述,我知道,從GameDev.net靈光Deloget但我不確定我會選擇使用層次結構他到了那裏!繼承太多,靈活性不夠。

如果我在寫一個基於文本的RPG(正如我在過去所做的那樣),它看起來有點像這樣(雖然我沒有時間來制定一個圖呢,黯然):

  • 生物,房間和物品衍生 從WorldEntity,與WorldEntity排列成複合 結構 對象,所以項目可以在其他 項目,通過生物攜帶, 存在客房內誰住。實施 WorldEntities 的訪問者模式可能運作良好。
  • CreatureType而itemtype類 包含用於 個體生物的「類」數據和Item 實例中,其是指回其 對應的「類型」的對象。 (例如前者中的基地 生命值和統計數據,後者中的當前生命值和 中的 )。我可以實現這些爲 原型的屬性列表,當 被創建時, 被複制到Creature或Item實例。您可以通過一個「父」財產執行財產 繼承,以便 特定妖精怪物實例可能涉及 「妖精戰士」 CreatureType,其中包含了 家長參考「通用妖精」 CreatureType。等等。
  • 其房間擁有的出口,單程爲 ,其中詳細說明了 的行駛方向,各種通行條件等。
  • 區域,其中包含由某個邏輯組織連接的 房間組。
  • 一個菌種類決定在其中創建生物 和項目實例(例如,哪個房間, 或在什麼座標),它們被創建時,並 什麼頻率,並從 其中CreatureTypes和ItemTypes。你可能在這裏有一些邏輯來使事情隨機化。
  • 咒語,技能,能力等 所有從基Action類 或接口來指定的先決條件 (例如當前位置,魔法點,一些 度的技術人員學習等)衍生的。普通 命令和動作可以在這裏過,因爲他們往往 都有某種要求太 (如「睡眠」命令要求,你是不是已經 睡覺。)
  • 一個FutureEvent類基本上是一個 回撥,您將推入未來執行的優先隊列 。你可以使用這些來到 時間表的戰鬥回合,拼寫冷靜時間, 夜間/星期循環,無論你喜歡什麼。
  • 玩家和物品統計信息的名稱 - >值對的哈希/地圖/字典。不是類型安全的,但是 稍後您會體會到靈活性。在我的 製作stats成員變量的經驗是 可行但不靈活,並有專門的 '屬性'類成爲一個令人費解的 調試時的噩夢。
  • 包含統計名稱 和修飾符值(例如+10,+ 15%)的修飾符類型。這些 被添加到您的動物,因爲它們被用來 (通過法術效果,或揮舞 的怡人武器如)並獲得由定時FutureEvent或某些其他事件後 剝離等 爲被執行的命令。
  • 遊戲特定的類,如PlayerClass或 PlayerRace,其每一個描述一個玩家的類 (例如戰士,嚮導,小偷)或種族(人,小精靈, 侏儒),並設置開始統計值和限制, 技能可用性列表,特殊能力等。
  • 基本玩家界面類將根據您的實際遊戲類型而變化 。你可能在有一個圖形遊戲的渲染類,或者在MUD中有 ,你可能有一個連接類 反映到玩家客戶端的TCP連接。 儘量保持所有遊戲邏輯不在這些。
  • 一個腳本界面。大多數命令,法術, 和生物AI可以通過 體面的腳本界面更快地實現,並且它也可以保持編譯時間減少 。它還允許在遊戲中進行一些很好的調試和診斷功能。

這將是我使用的基本高級結構。

5
<tongue_in_cheek_mode_because_it_is_friday> 

剛剛開始:

  ----------------     -------------- 
      | Creature |     | Item  | 
      |--------------|     |------------| 
      | Name   |     | Name  | 
      | Hp   |     | Value  | 
      | Abilities |--------------------| Weight  | 
      |--------------|     -------------- 
      | Attack  | 
      ---------------- 
       ^
       | 
     ---------------------- 
     |     | 
---------------- ---------------- 
| Hero  | | Monster  | 
|--------------| |--------------| 
| Level  | |    | 
|--------------| |--------------| 
| KillMonster | | AttackAndDie | 
| GrabTreasure | | DropTreasure | 
---------------- ---------------- 

</tongue_in_cheek_mode_because_it_is_friday> 
+0

它看起來非常熟悉我自己的設計,我不得不承認:) – Steerpike 2009-07-31 12:33:44

+1

大聲笑,它完全取決於你想要實現的系統。它可以很簡單,但像往常一樣,RPG系統非常複雜。但是,再次,遊戲還沒有完成,直到你找到hackmaster + 12 ;-)。 – 2009-07-31 12:36:55

+2

我想我的主要問題是,我不知道到底是什麼「帳篷」應該繼承... – Steerpike 2009-07-31 12:41:07

4
11

您可能需要考慮組件實體系統而不是傳統的繼承層次結構;他們傾向於對某些類型的變化更加靈活,使工具(例如,世界編輯器)的開發更容易,並且提供並行化的機會,否則這些並不明顯或容易。

很多現代遊戲引擎正在遠離「單片類對象」(或實體類,等等),並朝着「袋組件」的做法。

周圍有很多書籍和文章。一般:

具體(某些noteworth ÿ的,谷歌 「組件」 和以各種組合 「實體」 以上):

這些文章中的每一個鏈接到一些更多。

嘗試庫爾急救,你可能會喜歡它。 =)

1

要勇敢,你的遊戲不應該是黑客的克隆和斜線廢話。 你的演員應該能夠切換雙方,自己主動 徵募其他演員等。否則,什麼是重點?

+-----------------------------+ 
    V        | 
[Actor] ------- [Allegiance] ----+ 
- risk comfort - weight 
- temerity   
相關問題