Silverlight C# 遊戲開發:未寫代碼先設計

來源:互聯網
上載者:User

本文只有兩個主題:

1、遊戲設計清晰的必要

2、迴圈邏輯的代碼設計

 

遊戲設計:

未寫代碼先設計,這是一個非常重要的建議,如果在寫代碼前還不知道要開發一個什麼遊戲,那麼會遇上很多問題,這些問題包括:

  • 代碼編寫異常艱難
  • 半路重構
  • 工作量無法估計
  • 預算嚴重超支
  • ……

如果第一次開發遊戲,那麼就容易有兩種情況,第一,遊戲就那樣還用的著設計嗎,第二,無從下手,到底該怎麼設計,第一種肯定考慮不周全,這是大多數情況,第二種比第一種更悲慘,啟示無論那種情況,把問題羅列出來,到一起回答就可以解決很多,比如說,可以嘗試回答如下問題:

  • 遊戲主題是什嗎?
  • 是什麼類型的遊戲,RPG?SLG?FPS?MMO?
  • 有沒有劇情?
  • 是單機的還是網路的?
  • 單機的話,單人還是雙人的?
  • 網路的話,是區域網路還是互連網?
  • 遊戲風格是什麼樣的?
  • 如何操控?
  • 2D還是3D?
  • 打算讓玩家玩多久到頭?
  • 都是什麼玩家玩?
  • 應用技術是那些?
  • 目標終端是否可承載?
  • 能夠滿足玩家什麼需求?
  • ……

確切來說,以上的問題僅僅是遊戲設計的一個小部分,按照經驗,可能為一個或者多個問題要研究很久,舉例來說,遊戲類型將制約代碼的主要邏輯,比如說劇情類的遊戲就必須要需要一個劇情指令碼,而相應的策略遊戲相比劇情指令碼更加需要智能指令碼,這樣的情況下,你的代碼和處理就需要有很多的考慮。

比如以前我們在開發網路遊戲的時候,有一個項目地圖是一個整體,不需要獨立的地圖編輯器去編輯,只需要在3DMAX中將物體名稱起好,所有的行為對應到一張Excel表,如果是這樣的一種模式,地圖編輯工具就不需要花太大力氣……

可能所在的團隊有策劃的支援,可以省去很多力氣,然而最佳的情況下是開發人員就是策劃,哈,也許會著磚頭吧。

 

代碼設計

首先得瞭解遊戲啟動並執行機制,在考慮更加深層次的東西,任何遊戲都是一個迴圈體,就如所示:

      可能覺得,這和Silverlight遊戲開發有什麼關係呢,這不是用戶端遊戲的開發做法嗎?在遊戲誕生的那天起,它本身就是一個迴圈,在程式中更加是一個迴圈體,這個基礎理論是都適用,我們瞭解了迴圈機制,就可以依據這個流程設計代碼,上面就夠了嗎?讓我們展開來看看:

上面只是寫了一個大概,如果你打算開發一個遊戲的話,需要考慮的更多,如果轉換到最簡單的虛擬碼的話則是:

GameLoop

while( Game.State != emGameState.Exit)
{
    switch(Game.State) {
case emGameState.Init:
Game.Init();
break;
case emGameState.Loop:
Game.Loop();
break;
case emGameState.Exit:
Game.Exit();
break; }
}

上面是一個最簡單的代碼設計,只需要在Game類中執行相應的邏輯即可,但是是否想過這樣肯定不行,如果按照這個樣子寫下去,那麼就不是一個完整的遊戲,最多隻是一個展示品,要做成一個完整的遊戲,就得在主要迴圈裡加入更多的行為,最好的方法莫過於先構想流程:

按照上面的流程圖,那麼迴圈代碼可能是這樣的:

 

while( Game.State != emGameState.Exit)
{
switch(Game.State)
{
case emGameState.Init:
Game.Init();
break;
case emGameState.Menu:
Game.Menu();
break;
case emGameState.Starting:
Game.Starting();
break;
case emGameState.Loop:
Game.LoopLogic();
break;
case emGameState.Rest:
Game.Rest();
break;
case emGameState.Exit:
Game.Exit();
break;
}
}

 

可是問題又來了,無端的迴圈是不是造成了系統浪費,確實,無論在什麼技術上都是在考慮如何解決不必要的開銷,而且我們用的Silverlight來開發,c#又是這麼物件導向的語言,這麼寫太不進階,引入進階編程理論該如何做呢,這個部分以後再說,在這裡拋磚引玉,看看也許會有啟示:)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.