HowToWriteAdventureGamesUsingArianne

出自gamedev
跳至導覽 跳至搜尋




備註:本教程介紹創建探險遊戲的早期步驟。Stendhal已經運行好幾年了,從創建以來發生了很多事情。然而,如果你打算開始自己的探險遊戲,那麼這個文檔仍然是一個有趣的讀物。



介紹[編輯]

本文檔是一個教程,它將幫助您使用Arianne系統和Java2D開發多人在線遊戲。

編寫遊戲是一個包含若干階段的過程:

  • 規格說明
  • 設計
  • 實施
  • 評估
  • 部署

Arianne是一個多人在線遊戲框架和引擎,用於開發基於回合的實時遊戲。它提供了一種在可移植和健壯的伺服器架構上創建遊戲的簡單方法。伺服器Marauroa是用Java編寫的,可以使用Java或Python來描述遊戲。它還提供了一個SQL後端,並使用TCP傳輸通道與客戶機通信。 為了實現最大的可移植性,我們的參考客戶機使用Java(過去是C)進行編碼。

Arianne引擎的設計使您可以集中精力設計實際的遊戲,而忽略複雜系統的所有詳細實現方面,例如多人在線遊戲內容伺服器中的實現。因此,您不必關心線程、資料庫和網絡處理的問題。

從一開始,阿里安發展的核心概念就是KISS:Keep it simple, stupid! (保持簡單,愚蠢!)

Arianne一直是一個開源項目,根據GNU GPL許可證編寫和發布。我們相信正確的方法是開源的,我們希望您能夠在客戶機和伺服器中更改、編輯和配置您想要的任何內容。Arianne始終歡迎您對代碼的貢獻和修改,以便為遊戲內容提供商創建儘可能最好的開源參考平台。

我們所有的努力都得到了Arianne的引擎——Marauroa的支持。Marauroa完全用Java編寫,使用多線程伺服器體系結構、面向TCP的網絡協議、基於SQL的持久性引擎和靈活的遊戲系統。Marauroa完全是遊戲無關的,對你所要做的幾乎沒有任何假設,因此在創建遊戲時允許了極大的自由。遊戲系統是完全可擴展和修改,以滿足您的遊戲的需要。它能夠運行定義遊戲規則的Python腳本,提供了一種指定遊戲行為的簡單方法。

Marauroa基於一種設計理念,我們稱之為動作/感知。感知是每個回合發送給客戶的數據集合,向他們解釋他們當前在遊戲環境中的感知。動作從客戶端發送到伺服器,用於要求伺服器為它們執行操作。


Stendhal遊戲示例[編輯]

在本文中,我將以一個遊戲的開發為例,展示stendhal遊戲的開發。

在文件的最後,我將提供更多的指導和模板,以幫助你開始自己的遊戲。但請首先閱讀stendhal的例子。通過一個真正的遊戲工作的例子,可以充分了解Arianne系統。

預先準備[編輯]

開發多人在線遊戲是一項非常複雜的任務。事實上,我想說這是你能想像到的最複雜的軟體開發任務。Arianne把複雜度降低了幾個數量級!但是,要成功理解這個遊戲設計示例,您還需要了解以下幾點:

  • Java:本例中的所有內容都是用Java編寫的。
  • 客戶機/伺服器概念:這些概念將幫助您理解為什麼事情應該那樣做。
  • 遊戲設計:了解遊戲設計可以簡化對整個文檔的理解。

只需確保你了解基本知識,即你能夠編寫Java代碼,並且你對遊戲設計過程略知一二。

記住,Arianne提供了一個客戶機/伺服器中間件,需要擴展和修改以適應您的遊戲,因此您需要考慮伺服器和客戶機兩方面:

  • 伺服器:這類似於所有在線玩家的裁判。它告訴每個玩家他/她看到了什麼,他/她能做什麼。它還決定了玩家所做動作的結果。
  • 客戶端:它們類似於電視,它們使用來自伺服器的信息來提供遊戲的視圖。客戶端還從玩家獲取輸入並將其發送到伺服器。

使用Arianne技術沒有其他先決條件,您應該會發現,本文檔將解釋您所需的幾乎所有其他內容。我們開始吧!

規格說明[編輯]

在開始做任何事情之前,想想你想實現的遊戲。
決定你的遊戲是關於什麼,它將有什麼功能,什麼將使它不同於其他類似的遊戲,什麼技術會用在裡面,等等。。。先把你的設計計劃好,以免日後出現問題。

在我們的例子中,我們將編寫一個名為stendhal的遊戲。

基本描述[編輯]

Stendhal是一款成熟的多人在線冒險遊戲(MMORPG),使用Arianne遊戲開發系統開發。 Stendhal擁有一個新的、豐富的和不斷擴展的世界,在這個世界上你可以探索城鎮、建築、平原、洞穴和地下城。 你將遇到NPC,並從任務中獲得有價值的經驗和金錢。 你的角色會發展和成長,隨著每一個新的水平的提高變得越來越強和更好。用你獲得的錢,你可以購買新的物品,提高你的盔甲和武器。 你要在世界上漫遊,尋找邪惡的怪物,以滿足你們的killing欲望!

遊戲世界的初稿如下:

File:Stendhal Map.jpg


遊戲看起來應該是這樣:

http://arianne.sourceforge.net/wiki_images/Stendhal_GUI_detailed.jpg

GFX不是真正的ingame外觀

多人遊戲[編輯]

多人模式是基於玩家之間的合作和競爭:

  • 玩家可以合作讓綿羊更安全、更快地成長
  • 玩家可以合作殺死強壯的生物
  • 玩家可以互相競爭殺死其他玩家的綿羊。
  • 玩家可以通過引誘怪物進入其他玩家來相互競爭。

也有可能把這看作是一個新手區,訓練玩家真正在更大的區域玩更多的怪物、問題和新任務。

為什麼要玩塞爾達遊戲?[編輯]

Stendhal是一個使用Arianne進行代碼對遊戲的好例子,因為它暴露了與更複雜遊戲類似的問題,如:

  • 世界上有很多東西
  • 對象具有與其關聯的觸發器
  • 遊戲中有角色發展
  • 世界是永恆的
  • 人工智慧(NPC,綿羊和狼)是複雜的,因為它將是一個更複雜的RPG遊戲
  • 然而,一切都是概念上的簡單
  • 滯後確實很重要

如你所見,Stendhal是一款小型遊戲,它試圖推動與RPG相關的一切:

  • 玩家需要分幾個步驟完成的任務
  • 在基於上下文的情況下玩家可以執行的操作
  • 玩家需要探索的幾個領域
  • 合作與競爭的角色扮演

細節[編輯]

我們需要考慮遊戲中發生或出現的情況,並構建一些詳細的「用例」來指出遊戲中存在的實體和動作。 一旦我們知道遊戲中會出現什麼,我們就可以對遊戲的每個實體分別進行詳細的描述。如果你覺得這聽起來像OOP方法,那就拍拍自己的背,因為你是對的!Arianne使用基於對象的設計方法。 在遊戲中,我們有以下實體:

  • 區域
    1. 城市
    2. 村莊
    3. 平原
    4. 森林
    5. 地牢
  • 生物
    1. 綿羊
    2. 老鼠
    3. 山洞鼠
  • 玩家
  • NPC
  • 任務

目標[編輯]

因為許多多人遊戲Stendhal沒有明確的目標。
目標可能是:

  • 成為世界上最好的玩家
  • 從最深的地牢裡得到最奇怪的東西
  • 探索整個世界
  • 讓自己成為傳奇:)

很難解釋目標,但一旦你開始比賽,你就會上鉤:)

遊戲整體外觀[編輯]

在前進之前我們需要知道比賽會是什麼樣子。我們使用標準的pacman遊戲作為參考:
http://arianne.sourceforge.net/wiki_images/StendhalLook.jpg

設計[編輯]

使用的技術[編輯]

為了實現mapacman,我們將使用我們的多人在線遊戲引擎Arianne。所以在設計遊戲之前,我們必須了解阿里安的主要概念和思想。我們需要使設計符合一些簡單的規則,以獲得最簡單的設計和最好的性能。 Arianne使用UDP傳輸協議,這是可用的最快、最低的ping傳輸。然而,它的代價是應用程式無法檢測丟失的數據包。如果你的連接真的很糟糕,你將經常失去與伺服器的同步,因為如此多的數據發送將丟失。但是,沒有傳輸方法可以幫助您進行這種連接! 阿里安的系統基於感知/動作/感知方案。這涉及到伺服器向客戶機發送一個Perception,它是一個RPObjects列表(Arianne中的對象是RPObject類型),其中包含了相應的修改、添加和刪除。客戶端接受感知並處理它以更新他們對遊戲環境的看法,然後如果他們想執行一個動作,他們會將一個RPAction(Arianne中的動作類型為RPAction)發送回伺服器。在下一個回合,伺服器發送一個新的感知消息,該消息將包含操作的結果(即受操作影響的對象的更改)。 這種方案有幾個優點:

  • 與基於回合和實時的遊戲完美結合
  • 在每個時間點上都有一個連貫的博弈狀態
  • 低ping時間的玩家不會獲得瘋狂的優勢
  • 可以修改輪換時間以提高帶寬/性能
  • 支持比其他系統多幾個數量級的玩家。

另一方面,它也有一系列明顯的缺點:

  • 結果只有在回合實際發生時才有效(即,動作結果只在下一回合出現)
  • 不是製作第一人稱射擊類遊戲的最佳/最簡單方法

然而,這個簡單的系統功能強大,幾乎可以輕鬆地編寫所有遊戲:實時遊戲和基於回合的遊戲。

File:PerceptionActionPerception.png

遊戲設計中的一個主要問題是為伺服器選擇一個轉換時間。它應該基於我們正在做的遊戲類型。例如,一個實時策略遊戲需要大約300毫秒的轉彎時間,而基於轉彎的策略遊戲則需要1000-1500毫秒的轉彎時間。回合制遊戲比非回合制遊戲節省了很多帶寬,但是請注意,回合時間越短,帶寬使用率就越高。還要記住,轉動時間越短,CPU使用率就越高。 感知由一系列對象組成。RPObject由以下幾種屬性組成:

 attribute=value

這些屬性允許在對象中存儲字符串、int和float。 RPObject也由插槽構成。槽是一個物品的容器,很像一個口袋、一個袋子、一個盒子或一隻手。關鍵是,如果我們的對象需要有對象在其中,或附加到它們,您需要使用插槽。

File:RPObjectER.png

世界上所有的動態變化都是通過行動來實現的。RPAction也由屬性組成。您必須重新定義動作對象的默認屬性,以便該動作特定於您的遊戲。 每個播放器都使用MySQL資料庫系統存儲在關係資料庫中。你不需要知道這是怎麼做到的,但你可以相信我,它的工作!所有東西都存儲在資料庫中,從而使整個世界永久不變。這取決於您決定哪些程度的東西需要存儲在資料庫中,何時以及多久提交(存儲)一次。資料庫是Arianne在撰寫本文時的主要瓶頸。

世界設計[編輯]

整個遊戲區域看起來像:

File:Stendhal Map.jpg

它被分成5個不同的區域來使用Arianne的多區域功能。
玩家需要改變區域來完成他們的任務和在遊戲中的進步。

城市[編輯]

這座城市由兩個區域組成:一個是綿羊買家工作的地方,另一個是裝滿老鼠的地方,以輕鬆贏得XP。

http://arianne.sourceforge.net/wiki_images/city.jpg

http://arianne.sourceforge.net/wiki_images/city_underground.jpg

你可以用樹附近的洞從一個移動到另一個。 此外,這個區域還有一些買家的羊圈和一些NPC喜歡:卡門,威爾斯人和迪奧根尼斯,一個不誠實的乞丐。

村莊[編輯]

村里住著賣羊肉的小販:長瀨,他會把羊肉賣給你,讓你養大。

http://arianne.sourceforge.net/wiki_images/village.jpg

平原[編輯]

你在哪裡能找到更好的地方種綿羊?但綿羊是狼的食物。這個區域有幾隻狼和幾隻老鼠。

http://arianne.sourceforge.net/wiki_images/plains.jpg

森林[編輯]

http://arianne.sourceforge.net/wiki_images/forest.png

實體設計[編輯]

為了讓這個世界看起來是活的,我們添加了下一個實體。

  • 綿羊
  • 賣羊的
  • 買羊人
  • 老鼠
  • 山洞鼠
  • 玩家
  • 食物
  • 盔甲
  • 武器
  • 治療藥劑

用例[編輯]

這些用戶案例描述了實體的行為。這有助於我們在編碼階段明確目標的實現。

玩家的用戶案例[編輯]

玩家是一個玩遊戲的實體,它可以移動,聊天,攻擊,治療。

  Player enter village in entry point
  Player moves to Farm zone

  Player talks with Sheep seller
    Player: Hi
    Seller: Greetings! How may I help you?
    Player: buy Sheep
    Seller: Do you want to buy a Sheep for 50 coins?
    Player: yes
    Seller: Thank you! Bye

  Player moves. Sheep follows Player.
  Player moves to plains
  Player moves around looking for food
  Player protect Sheep of wolves attacks

  When Sheep is big enough Player moves to Village
  Player talks with Sheep buyer
    Player: Hi
    Buyer: Greetings! How may I help you?
    Player: sell Sheep
    Buyer: Do you want to sell this Sheep for 73 coins?
    Player: yes
    Buyer: Thank you! Bye

  Player spend money in new Sheep and equipment
  * Armor
  * Weapon
  * Healing potions

綿羊賣家的用例[編輯]

這個賣家是一個NPC實體,會賣給我們一隻羊,讓它長大賺錢。

FOREVER do:
  Listen to Player

  If listen "Hi":
    Seller says "Greetings <Player>!"

  If listen "Buy Sheep" from Player:
    Seller says "Do you want to buy a Sheep for 50 coins?"

  If listen "yes" from Player:
    If Player money - 50 > 0:
      set Player money=Player money - 50
      Duplicate Sheep
      Make Sheep follows Player
  Say bye to Player
DONE

綿羊買家的用例[編輯]

這個買家是一個NPC實體,它會給我們買羊。

FOREVER do:
  Listen to Player

  If listen "Hi":
    Seller says "Greetings <Player>!"

  If listen "Sell Sheep" from Player:
    Estimate Sheep value related to Sheep weight
    Seller says "Do you want to sell your Sheep for <estimated price> coins?"
  
  If listen "yes" from Player:
    set Player money=Player money + <estimated price>
    set Player XP=Player XP + 100 * Sheep Weight / 100
    Destroy Sheep
  
  Say bye to Player
DONE

綿羊的用戶案例[編輯]

綿羊是我們的關鍵遊戲概念。玩家必須牧羊他們的羔羊,保護他們的狼等,直到他們值得出售。

  Sheep is in Farm
  Player buys Sheep
  Sheep seller duplicates Sheep
  Sheep follows Player

  If Sheep finds food:
    Sheep moves to food
    Sheep eats food
    Sheep gains weight

  Player sells Sheep
  Sheep dissappear

狼的用例[編輯]

狼是Stendhal的競爭實體。他們一起攻擊綿羊,也經常是玩家。他們能很快殺死一隻羊。

  Wolf moves
  If Wolf sees Sheep:
    Wolf attacks Sheep
  
  If Wolf is attacked:
    Wolf attacks Attacker

老鼠的用例[編輯]

老鼠和山洞裡的老鼠會攻擊玩家,使羊更難長大。

  Rat moves
  If Rat sees Player:
    Rat attacks Player
  
  If Rat is attacked:
    Rat attacks Attacker

讓我們描述每個實體及其屬性和操作。

綿羊[編輯]

綿羊具有以下屬性:

  • x是綿羊的x位置
  • y是綿羊的y位置
  • dx是綿羊的x速度
  • dy是綿羊的y速度
  • hp是綿羊的生命指標,當它達到0時,綿羊死亡。
  • atk是RP攻擊值。見速遞簽名規則
  • def是RP防禦值。見速遞簽名規則
  • xp是RP經驗值。見 RP rules
  • 體重是綿羊的體重指標,體重越重,價格越貴。

綿羊的任務應該是:

  • 跟隨

綿羊的行為主要是跟隨主人尋找食物。
如果羊找到食物,它就會吃。
羊被攻擊就會逃跑。

生物:狼、鼠、洞鼠[編輯]

狼、老鼠和山洞鼠具有以下屬性:

  • x是狼的x位置
  • y是狼的y位置
  • dx是狼的x速度
  • dy是狼的y速度
  • hp是狼的生命指標,當它達到0時狼就會死亡。
  • atk是RP攻擊值。見 RP rules
  • def是RP防禦值。見 RP rules
  • xp是RP經驗值。見 RP rules

狼(鼠和洞鼠)的任務應該是:

  • 跟隨意味著狼用最短的方法跟隨一個物體到達它。
  • 攻擊意味著狼會試圖傷害被攻擊的目標,直到其血量達到0
    另一個動作將取消攻擊任務。
  • 巡邏意味著狼會沿著指定的路徑移動。
  • 聊天意味著狼會開始喊「auuuuuuu!」。狼通常會把這理解為一種召喚。

狼(老鼠和山洞鼠)的行為包括在指定區域巡邏。
如果狼找到一隻羊,它就會攻擊羊。
如果狼找到一個玩家,它就會攻擊玩家。
如果狼被攻擊了,狼就會返回攻擊。
如果狼受了重傷,狼就會逃跑。

賣羊人、買羊人、乞丐[編輯]

買賣雙方具有以下屬性:

  • x是NPC的x位置
  • y是NPC的y位置
  • dx是NPC的x速度
  • dy是NPC的y速度
  • hp是NPC的壽命指示器,當它達到0時,它將重置為滿。
  • atk是RP攻擊值。見 RP rules
  • def是RP防禦值。見 RP rules
  • xp是RP經驗值。見 RP rules
  • 參加是實際參加的玩家的對象id。

賣家、買家和乞丐的任務是:

  • 巡邏意味著NPC將繞指定路徑移動。

NPC的行為包括傾聽身邊的人。
如果對方說「嗨」,NPC將面對對方並進行對話。

玩家[編輯]

玩家擁有以下屬性集:

  • x是播放器的x位置
  • y是播放器的y位置
  • dx是播放器的x速度
  • dy是播放器的y速度
  • hp是玩家的生命指示器,當它達到0時,玩家死亡。見
  • atk是RP攻擊值。見 RP rules
  • def是RP防禦值。見 RP rules
  • xp是RP經驗值。見 RP rules
  • money是玩家擁有的金錢數量。

它有三個插槽:

  • 盔甲
  • 左手
  • 右手
  • 背包

玩家任務應該是:

  • 移動表示播放器將其dx,dy參數更改為移動。
  • 攻擊表示玩家將嘗試傷害被攻擊對象,直到其生命值達到0。
    另一個操作將取消攻擊任務。
  • 聊天表示玩家向其他玩家或NPC寫入文本

食物[編輯]

食物具有以下屬性:

  • x是播放器的x位置
  • y是播放器的y位置
  • 數量是可用的食物量

食物每X個單位的時間就會再生一次。

裝甲[編輯]

盔甲是玩家可以「穿戴」的物品:

  • x是玩家不穿盔甲時盔甲的x位置。
  • y是玩家不穿盔甲時盔甲的y位置。
  • def是RP防禦值。見 RP rules
  • 重量是裝甲的重量。

屏蔽[編輯]

盾牌是玩家可以「佩戴」的物品:

  • x是玩家不戴盾牌時盾牌的x位置。
  • y是玩家不戴盾牌時盾牌的y位置。
  • def是RP防禦值。見 RP rules
  • weight是防護罩的重量。

武器[編輯]

武器是玩家可以「佩戴」的物品:

  • x是玩家不佩戴武器時武器的x位置。
  • y是玩家不佩戴武器時武器的y位置。
  • atk是RP攻擊值。見 RP rules
  • weight是武器的重量。

治療藥劑[編輯]

療傷藥水是玩家可以在背包中「佩戴」的物品:

  • x是當玩家不戴藥水時藥水的x位置。
  • y是當玩家不戴藥水時藥水的y位置。
  • 治療是藥水將治療的血量。

RP設計[編輯]

角色扮演遊戲基於一套規則。有很多規則:廣告與開發,專家,戰錘,…
Stendhal定義了一組新的「典型」規則,它們具有共同的簡單性和易計算性。 該系統基於三個理念:

  • 使用1D6的隨機性
  • 風險評估
  • 創造力

風險評估使數據挖掘有權權衡玩家希望執行的動作,比如玩家在該類動作中的經驗和所處的情況。 DM代表「地牢主人」。在Stendhal中,我們的任務是設計DM,因為它是遊戲的規則。

屬性[編輯]

每個玩家都有一組屬性:

  • attack-此值用於解決攻擊情況。
  • defense-此值用於解決玩家受到攻擊的情況。
  • hp-此值存儲可用的活動點。
  • level-創建角色時,該級別從零開始,並將隨著經驗的增加而增加
  • experience-這是在當前級別獲得的經驗量

任何RP最困難的部分是平衡不同實體的值。 我們需要將RP(atk、def和hp)值提供給:

玩家[編輯]

玩家有以下屬性:

  • ATK-2
  • DEF-2
  • HP-100

這些值是隨機設置的。

綿羊[編輯]

羊不能攻擊,所以它必須比玩家弱。

  • ATK-0
  • DEF-1
  • HP-30

這些值也是根據玩家值隨機設置的。 殺羊不會給你任何經驗。

老鼠=[編輯]

老鼠是你能在司湯達找到的最簡單的敵人,所以一級玩家要殺死它必須非常簡單。

  • ATK - 3
  • DEF - 2
  • XP - 5
  • HP - 10

為了設置這些值,我們運行了一個模擬,直到在圖中找到正確的外觀。
File:Rat Fight.gif

洞穴鼠=[編輯]

山洞老鼠是老鼠的一個更強大的版本,所以2-3級玩家要殺死它必須非常簡單。

  • ATK - 6
  • DEF - 2
  • XP - 10
  • HP - 20

為了設置這些值,我們運行了一個模擬,直到在圖中找到正確的外觀。
File:Caverat Fight.gif

狼=[編輯]

狼是平原和森林中常見的生物,它必須簡單到足以讓4-5級玩家殺死。

  • ATK - 6
  • DEF - 4
  • XP - 18
  • HP - 35

為了設置這些值,我們運行了一個模擬,直到在圖中找到正確的外觀。
File:Wolf Fight.gif

經驗和水平=[編輯]

所有的屬性都可以在遊戲中通過獲得經驗和等級來增加。 DM授予經驗的原因如下:

  • 良好的角色扮演
  • 技能的使用
  • 戰鬥

經驗不能通過訓練獲得。 當你獲得一個等級時,你可以增加一個屬性。 要達到一個水平,你需要達到下一個經驗點:

LevelExperience neededHP value
00100
1100110
2128120
3384130
4768140
51408150
62432160
73712170
85504180
97808190
1010624200

正如你可以推斷的那樣,每升一級的生命值以10的速度增長,並且每升一級,ATK和DEF值都會增加一個。 計算XP的公式是:

 exp = (10*level+5*level^2+10*level^3+80)

戰鬥[編輯]

戰鬥是兩個或多個玩家之間的戰鬥。 戰鬥是以回合為基礎的。每輪5圈。 攻擊玩家的風險可以寫為:

  Attacker.attack VS Defender.defense/6 + 1D6

如果玩家被擊中,我們需要計算已經造成的傷害:

  result = Attacker.attack/6 + 1D6 VS Defender.defense
  if result > 0:
    Defender.hp = Defender.hp - result
  end if

當生命值達到0時死亡。 當兩個骰子都是6時,會發生致命一擊。損失等於攻擊者.攻擊

防護罩[編輯]

盾牌等級增加你的防禦技能:

ShieldRating
Buckler shield+1
Small shield+2
Medium shield+3
Tower shield+5

裝甲[編輯]

盔甲幫助你吸收傷害。

ArmourRating
Leather armour+1
Studded leather armour+2
Scale mail armour+3
Chain mail armour+4
Plate mail armour+5
Field plate armour+6
Full plate armour+7

武器[編輯]

武器幫你殺人:)

WeaponRating
Knife+2
Club+3
Spear+4
Axe+5
Long sword+6
Two hand sword+7

死亡[編輯]

戰鬥的結果通常是死亡。 當你殺死一個生物時會出現一具屍體。如果你打開它,你就能得到裡面的東西,通常是食物、黃金、武器、盾牌或盔甲。
每次你殺死一個怪物你都會獲得經驗值。 當你被殺的時候,你又出現在城市裡,如果你有羊的話,你就會失去你的羊。
同樣為了懲罰死亡,你將移除10%的經驗值,如果是這樣的話,你將移除生命值,ATK和防禦值會因為等級提升而增加。


邏輯設計[編輯]

使Stendhal移動的關鍵是添加操作。 正如我們所看到的,每個實體都有一個可以執行的操作列表。讓我們看看它們,研究它們之間的相互作用。

移動[編輯]

移動動作可以理解為兩個動作: 向下鍵時向左、向右、向上或向下移動
這個動作允許控制玩家的頭像使用我們的鍵盤,這是街機/冒險遊戲風格,如任天堂塞爾達。

此操作應具有下一組屬性:

  • dir 化身移動的方向。
  • speed 阿凡達的速度

我們想幹什麼就幹什麼。最後執行的動作將是唯一一個真正改變方向和速度的動作。 我們將讓我們的頭像以完整的單位在世界上移動,客戶將平滑它,使它看起來頭像移動了一點。我們也希望我們的頭像只移動N,W,S和E方向,所以我們禁用對角線移動。 我們的世界將有物體,如果玩家與物體碰撞,它將停止。
一般來說,玩家、生物和其他物體是不可移植的。

移動到一個位置[編輯]

這個動作允許用滑鼠控制遊戲的頭像,所以我們可以點擊(或雙擊)移動到滑鼠點擊的位置。這種模式是偉大的一個更輕鬆的冒險遊戲風格,如生物製品巴爾杜爾之門。 此操作應具有下一組屬性:

  • x avatar所需的x坐標
  • y avatar所需的y坐標

我們只能有一個此類操作,只有最新的操作才被視為有效。這個動作被任何其他動作取消,比如移動,攻擊,面對。。。 這兩個移動動作都將在每一個回合結束時,移動化身,如果可能的話,在x軸上移動dx單位,在y軸上移動dy單位。 如果阿凡達在移動時與某物碰撞,dx和dy將變為0。

面對[編輯]

這個動作對於遊戲的社交方面來說是很有用的;當你說話的時候,面對你說話的人通常也是很好的。所以面部動作可以讓我們的角色看到我們告訴它的方向:左,右,上或下。

聊天[編輯]

這個動作是任何像MORPG這樣的社交遊戲的基礎。 此操作應具有下一組屬性:

  • text 玩家要說的文字

由於Arianne框架不可能創建一個叫喊或低語動作,當你說話時,你為區域內的每個人說話,這就是為什麼區域設計對於實現良好的遊戲性是非常重要的。

攻擊[編輯]

這個動作是遊戲的核心,很多玩家都會考慮到遊戲的樂趣。所有的戰鬥都是由RP遊戲系統控制的,在本頁的RP部分有詳細說明。 現在戰鬥有一些限制:

  • 無PvP(玩家對玩家)
  • 不能攻擊自己
  • 不能攻擊NPC

我們想保留一個良好的遊戲體驗,所以我們已經刪除了玩家對玩家的戰鬥。
我們只能有一個攻擊行動,所以明智地選擇你的目標,這個行動被任何其他行動取消,除了 ChatHeal.

此操作應具有下一組屬性:

  • target 我們攻擊的玩家的object.ID 。

這個動作要求動作的目標是「接近」我們的化身。接近意味著目標的化身必須與我們的化身相撞。 攻擊動作具有跟蹤目標的隱含含義。

評估[編輯]

從Sourceforge下載文件[編輯]

使用CVS訪問[編輯]

部署[編輯]

客戶端[編輯]

伺服器[編輯]

{{#breadcrumbs: Marauroa | Using | How to write games}}