有誰知道在哪裏可以找到RP遊戲開發的類圖示例?類似於here的東西會非常有用。我不是在尋找我可以大肆複製的東西,而是針對不同的例子,這些例子對我在嘗試和下課時自己發現的問題繪製了各種解決方案。角色扮演遊戲的類圖示例
26
A
回答
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>
4
怎麼樣之類的東西:
alt text http://img217.imageshack.us/img217/4886/classwo0.png
下面是其他一些圖:
- http://www.russelldare.net/media/2dgame/uml.jpg
- http://dirkkok.files.wordpress.com/2007/12/domainmodel1.jpg?w=505&h=573
- http://members.gamedev.net/emmanuel_deloget/images/text_rpg_rule_system.png
- http://theworldofdan.co.uk/wp-content/uploads/2009/05/classdiagram1.jpg
- http://www.c-sharpcorner.com/UploadFile/mgold/SpaceInvaders06292005005618AM/Images/SpaceInvadersUML.jpg
- http://blog.xlandersoftware.com/wp-content/uploads/2008/08/tankrushuml.png
3
看JADE's Javadoc一個複雜的遊戲:)
11
您可能需要考慮組件實體系統而不是傳統的繼承層次結構;他們傾向於對某些類型的變化更加靈活,使工具(例如,世界編輯器)的開發更容易,並且提供並行化的機會,否則這些並不明顯或容易。
很多現代遊戲引擎正在遠離「單片類對象」(或實體類,等等),並朝着「袋組件」的做法。
周圍有很多書籍和文章。一般:
- 的Game Programming Gems系列(顯然是兩個音量5,6的分量的文章,我覺得2可能有一個爲好)
- 的Game Developers Conference網站經常有鏈接到前幾年的演示,並對於這樣的事情一個金礦 - 你甚至可以平時買的CDS /爲前幾年的DVD便宜(尤其是如果你參加)
- Gamasutra's feature article archives和Game Developer Magazine backissues
具體(某些noteworth ÿ的,谷歌 「組件」 和以各種組合 「實體」 以上):
- Evolve Your Hierarchy,米克西
- Entity Systems are the future of MMOG development;也對天然氣part 2和part 3
- Introduction to Dungeon Siege Architecture Powered Games公司維基
- A Data-Driven Game Object System,斯科特Bilas的(GDC 2002)
- 的Nocturnal Initiative,庫和工具由Insomniac的遊戲一個公開許可的集合(他們有一個最大的從我看到的)工業努力
這些文章中的每一個鏈接到一些更多。
嘗試庫爾急救,你可能會喜歡它。 =)
4
甲very different approach由史蒂夫·耶格。
1
要勇敢,你的遊戲不應該是黑客的克隆和斜線廢話。 你的演員應該能夠切換雙方,自己主動 徵募其他演員等。否則,什麼是重點?
+-----------------------------+
V |
[Actor] ------- [Allegiance] ----+
- risk comfort - weight
- temerity
相關問題
- 1. Java角色扮演遊戲
- 2. 如何製作角色扮演遊戲角色
- 3. Flash SWF角色扮演遊戲的替代保存方法
- 4. 設計角色扮演遊戲中的典型角色的階級層次
- 5. 策略/角色扮演遊戲源代碼Android/Java
- 6. Java角色扮演遊戲庫存教程
- 7. 玩角色扮演框架
- 8. 沒有服務器的多人角色扮演遊戲存檔的P2P加密
- 9. 「DirectX第2版編程角色扮演遊戲」和更新的DirectX api
- 10. 是否有任何複雜的角色扮演遊戲框架可用?
- 11. 如何在角色扮演遊戲中讓生物互相追蹤對方
- 12. 這是一個用於iPhone的遊戲,適用於3D或2D角色扮演遊戲?
- 13. 在角色扮演庫中將角色與地圖分離
- 14. infiniDB中的角色扮演維度?
- 15. 我應該使用什麼樣的數據結構來捕獲角色扮演遊戲中的角色屬性
- 16. 按角色扮演ASP.NET模擬
- 17. Em.Controller在Ember.js中扮演什麼角色
- 18. 標籤在h2o.randomforest中扮演角色嗎?
- 19. 如何在yii中扮演角色
- 20. Azure/SSL在生產中扮演殺死角色的角色
- 21. 演示遊戲賽車遊戲crashs(GamerServicesNotAvailableException)
- 22. Java的面向對象 - 角色扮演類一般
- 23. YouTube的意圖過濾器正在扮演愚蠢的角色
- 24. C#代表和接口如何在此示例中扮演角色
- 25. 編寫蛇遊戲演示
- 26. 什麼是一個有經驗的程序員最好的Java RPG(角色扮演遊戲)引擎?
- 27. 如何同庫存物品在一個基於文本的角色扮演遊戲結合起來,一行
- 28. N遊戲角色物理
- 29. 由虛擬機扮演的AWS-VPC中的路由器角色?
- 30. 遊戲Api示例
我愛你鏈接到一個。我發誓我們大多數程序員,特別是日常工作中的程序員,只能爲編寫像`bool isLivingDead()`這樣的函數的爽快體驗做RPG。 – Gavin 2009-08-05 15:48:57
if(creature.isLivingDead()&& hero.isSlayer())hero.slay(creature); – 2009-08-06 13:05:03