2010-10-23 49 views
3

我想知道什麼是遊戲開發的最佳做法爲動作3. 我目前正在創建一個基於圖塊的遊戲的進展,但我已經有一些麻煩,使用單獨的類。AS3面向對象遊戲開發結構

這是目前的情況:

主類

  • 生成磚
  • 添加播放器類
  • 添加接口類

接口類包含所有界面元素。例如,有一個選項可以在遊戲中產生一個對象。該對象可以放置在選定的圖塊上。

現在問題出現了:生成的對象被放置在接口類中,生成的對象應該如何與tile進行通信? 同樣的問題出現在遊戲中的其他幾個部分。就像玩家應該如何與生成的對象進行交互?一切都在不同的階級之間,使得所有這些事情之間的溝通如此困難。

有沒有關於遊戲開發的標準程序來處理這個問題?我正在考慮製作一個「世界」類,每個對象都應該放在哪裏。但我很難用我對這種結構的一點知識來實現​​這一點。 這對我來說都是新鮮事物,所以如果解釋儘可能不太可能,我將不勝感激。 在此先感謝!

回答

1

您可以使用事件派發爲您的對象相互溝通,有幾種方法可用,其中一種更簡單的方法是創建一個控制器類,其唯一的責任是調度&監聽事件,以便通知您的遊戲中發生的事情的相關類別

更好的方法是使用Robotlegs等框架,學習曲線有點陡峭但值得額外付出。
http://www.robotlegs.org/

您應該很容易找到示例& Robotlegs的教程。

+0

根據遊戲的大小(一次的對象數量),調度如此多的事件可能會顯着降低性能。 – Marty 2011-12-07 06:34:09

1

嘗試用稍微不同的方式想象你的遊戲部分的組織。首先你提到的這個World類可以包含Map對象還包含生成的玩家或生物的Unit對象。 Map對象也包含Tile對象,每個對象都有自己的信息作爲地形和屬性。此外,Unit對象將包含與每個spawn相關的信息。對於與玩家的互動,您可以有一個包含World和玩家表示的Game對象,即Player對象,並且此對象會將玩家的指令傳遞給World以使事情發生。正如你所看到的每個對象都包含其他更精細細節的對象,World包含Map,其中包含Tile's,這種方式使得較高級的對象使用較低級的對象並使它們之間能夠進行通信。

這可能是一種快速啓動或在實驗中學習的好方法。更復雜的情況需要其他方式來安排遊戲的所有信息,例如模型 - 視圖 - 控制器結構,但是在獲得足夠的知識以瞭解您需要更好的解決方案之前,您可能不應該太擔心。

0

我會建議閱讀一些關於設計模式。一個單獨的Dispatcher類可以幫助你解決這個問題,你只需要將所有的東西都綁定到它,並將事件從一個實體發送到另一個實體。

不使用內置事件的原因是您需要將對象放在顯示列表中。