2011-11-22 32 views
1

我最近開始做一些愛好遊戲編程。當我第一次開始時,我傾向於試圖設計抽象。即使我有一個特定的遊戲,我會問自己如何在多種遊戲和類型的遊戲中使用每個元素。我開始意識到,這實際上是帶來了一個具體的遊戲存在的不合。因此,我從頭開始寫代碼,以滿足我所想的遊戲(只有那個遊戲)的要求。我仍然創造了抽象,但只有當這個遊戲本身需要它時。我對這種做事方式很滿意。我覺得代碼只處於所討論的遊戲所需的正確抽象層次。過早抽象與YAGNI在多個類似項目中的對比

我的問題是,當有多個類似的項目時,這種方法如何適用?比方說,我已經創建了一個以太空爲主題的側面滾動遊戲。完成後,我決定製作一個以太空爲主題的twinstick射擊遊戲。這兩場比賽肯定會有共同點。根據以前編寫的代碼,最好的方法是什麼?我可以想到幾種可能性:

  1. 忽略舊的代碼。再次從頭開始。
  2. 允許我自己複製並粘貼一些舊代碼並修改它以適應當前遊戲和當前遊戲。
  3. 拿舊的代碼並將其推廣到它可以適應這兩種遊戲的程度。

想過這個之後,如果場景稍微改變了一下,它不是一款新遊戲。如果我決定我的橫滾比賽會有一些twinstick水平呢?看來在這種情況下,選項3將是一條路。這意味着選項3即使是新遊戲也是一種方式嗎?

再次略微改變場景,如果他們是兩個截然不同的遊戲,但我同時在兩個項目上工作?我不可避免地會開始看到抽象的相似性和機會。我是否應該抵制這種抽象,並保持代碼與每個遊戲截然不同?

回答

1

你的問題是假設的,所以它很難給出具體的答案,因爲它很多取決於特定的情況。

如果新遊戲足夠不同,那麼你會從頭開始。

如果複製粘貼代碼非常簡單,那麼你可以這樣做。這取決於舊遊戲的維護。如果您在一段時間內需要維護兩種遊戲的情況下,複製粘貼是一個糟糕的主意,因爲您需要記住在兩個地方進行修復。在這種情況下,選項3可能更可取 - 推廣到平臺,以便您可以修復平臺。

遊戲一般不會維持很長時間,所以爲此製作平臺可能不值得。如果你的遊戲像MMORPG那樣具有很長的維護壽命,那麼情況就不同了。

最後一個因素是啓動時間。複製粘貼可能會很慢並且很麻煩。如果您只打算製作一款遊戲,這可能不是問題。一些公司專門從事遊戲「產品線」,每隔幾個月發佈一款新遊戲(Telltale就是一個很好的例子)。在這些情況下,最好開發一個「引擎」,並通過簡單地插入新內容來製作新遊戲。

現在,你提到你是做這個愛好的。在這種情況下,這些都不重要,因爲90%的決定來自商業模式,而僅有10%來自技術因素。

此外,許多公司只是許可由第三方開發的引擎,並在此基礎上構建遊戲。即使對於業餘愛好節目,也有許多引擎可以從第1天開始直接使用,並在此基礎上構建遊戲,所以問題的關鍵在於構建vs購買。