2010-11-27 50 views
2

我在寫一個非常簡單的Java遊戲。讓我簡單描述一下:如何有效地設計和編寫遊戲?

  • 地圖中有4名玩家。
  • 該圖是一個二維矩陣,其值爲「高度」
  • 2個節點之間的高度是該邊緣的成本。
  • 使用Dijkstra算法來幫助玩家從源游到目的地。
  • 四名球員輪流前進。總的動作是8(左上,上,右上...)
  • 如果他們見面,爭奪黃金價值,否則移動到他們的目標。
  • 隨着他們移動,他們的力量減少兩個節點之間的高度差異。
  • ...等

.... ,我現在遇到的問題是,源代碼是越來越長和日趨複雜。而且我認爲我以某種方式使用了錯誤的方法,因爲不斷改變實施方式,我感到非常疲倦。這是我的方法:

  1. 寫出所有要求。
  2. 使用所有getter和setter創建所需的所有對象。
  3. 創建一個靜態類測試
  4. 創建單元測試,而把邏輯一起
  5. 添加一些更多的代碼,然後修改代碼以適應測試
  6. 編寫運行一個大的方法,然後休息邏輯把它變成更小的方法,然後再寫單元測試。
  7. 如果一切正常,請添加更多要求,添加更多代碼
  8. 然後,事情變得越來越複雜,因爲我添加的代碼越多,複雜度就越高。由於創建測試用例現在需要做太多的工作,因此再也沒有時間寫單元測試。
  9. 重新設計,然後更改實現,再次轉到步驟1。

我來自C++的背景,我只能寫'靜態'庫,如:堆棧,隊列,鏈接列表,樹... ...對我來說真的是一個很大的挑戰,尤其是我必須使用Java。我明白核心編程是一樣的,所以選擇Java並不是那麼糟糕。但是,查找Java API的時間不算少。此外,遊戲邏輯真的很難寫。當這個對象移動時,其他對象受到影響...,因此爲方法創建測試取決於許多其他方法...等。 我真的需要一個建議。任何人都可以分享一些關於如何給我寫遊戲的經驗嗎?我只剩兩週時間完成這項任務。我目前有45類,現在,我覺得這樣失去了,因爲我越寫它變得複雜:(越!

最好的問候,陳 阮

+8

這可能更適合http://gamedev.stackexchange .com – Frank 2010-11-27 11:15:48

+0

@Frank:謝謝!該網站是驚人的;) – Chan 2010-12-30 10:39:32

回答

1

首先開始思考像一個Java程序員。想像成遊戲中的每一件事物都像對象一樣,考慮它的屬性和方法,它的接口,以及它如何與其他對象交互。 如果你需要幫助入門,這裏是一個很好的教程,可以引導你一步一步來做一個簡單的java遊戲,這可能會讓你在正確的思維框架中開始編程。我強烈建議您遵循tutorial.http://www.cokeandcode.com/asteroidstutorial並使用它們用於在那裏開發interfaz的庫。

0

我認爲遊戲代碼架構師相對於:遊戲是在運行時具有突發屬性的複雜系統,異常強烈的交互需求(UI,控件),這使得大量的OOP理論值得懷疑。重複使用遊戲代碼可能很困難。而且,很多前期規劃工作都浪費時間。

我認識的大多數遊戲編碼人員,從開始到老練,都以「只要做」迭代過程取得成功。例如

1)寫一個最小原型。使用你能想到的最簡單,最明顯的架構來獲得一個非常基本的系統。 (我的傢伙可以在屏幕上運行)。最多5或10個物品。

2)添加功能(點,規則,陷阱,NPC行爲等)和playtest,一遍又一遍。這種黑客攻擊可能會導致代碼結構不佳,但大多數編碼人員可以使其工作。

3)重寫。程序員在他們不得不在(2)中進行的一些黑客攻擊中咬牙切齒,並且會想把它全部拋出並重寫。抵制這種衝動直到遊戲成爲可測試的(例如,plyaers有時可以享受它),或者需要重新編寫新功能。然後,從零開始重寫所有的東西。這種方式比你期望的要快,並且結果是堅實的,結構良好的代碼。

遊戲編碼器測試,但所有代碼的全面測試是罕見的。兩個原因:出現和文化。遊戲在運行時具有緊急屬性(「是的,但是當NPC被殺時,點可能消極......」)。由於遊戲通常用於娛樂目的,因此存在快速和鬆散測試的文化。遊戲並不像導彈控制代碼那麼重要。

我希望有更多編碼經驗的人回答這個問題。 (我已經寫了一段代碼,但是我傾向於快速和骯髒的腳本類型編碼風格 - 我知道很多代碼編寫者比我更好)。