這個問題問的有些模糊,是說製作一套腳本系統呢?還是說編寫指令碼呢?
但不管是那一種形式使用指令碼,都需要注意的是:遊戲中使用指令碼是為了更隨意的控制程序的發展,而不是用來替代程式的。程式程式碼由於直接由CPU解晰執行所以效能較高,而指令碼一般是需要由程式解晰再執行的,效能較差。所以不應該在指令碼中使用大量密集的計算,當出現密集計算需求的時候,需要和程式設計師溝通,提出直接在程式中實現。同理大量密集的資料訪問也不應該在指令碼中出現,因為這會嚴重影響整體的效能和安全性。出現這一類需求,同樣均需要和程式設計師溝通,由程式設計師提供技術分晰以及一定的加速手段,如多執行緒執行指令碼或是改變實現方式。
這個問題問的有些模糊,是說製作一套腳本系統呢?還是說編寫指令碼呢?
如果說製作一套腳本系統的話,國內實現這個的人並不多,我個人製作過一套。整體上第一步是先將指令碼程式碼按字元解晰,分離出連續的詞彙和符號等。第二步就是對這些語法的分晰並生成最終便於指令碼虛擬機器或是真機執行的程式碼。也有為省事生成彙編程式碼,再扔給彙編器生成最終執行程式碼的。如果是為某個遊戲編寫指令碼,這就要看遊戲程式與指令碼的配合方式。一種形式是龐大的指令碼主導方式,這種方式主要在歐美的單機遊戲中較多,整個遊戲的整體邏輯完全由指令碼主導控制,就像是程式一般。這種就需要指令碼的編寫者有程式設計師一樣的能力。一種形式屬於事件式,整個遊戲邏輯依然由程式主導。在各種事件產生時,呼叫相應的指令碼執行。這種由於影響面小,所以相對較為簡易,有簡單程式設計能力的人即可編寫。但不管是那一種形式使用指令碼,都需要注意的是:遊戲中使用指令碼是為了更隨意的控制程序的發展,而不是用來替代程式的。程式程式碼由於直接由CPU解晰執行所以效能較高,而指令碼一般是需要由程式解晰再執行的,效能較差。所以不應該在指令碼中使用大量密集的計算,當出現密集計算需求的時候,需要和程式設計師溝通,提出直接在程式中實現。同理大量密集的資料訪問也不應該在指令碼中出現,因為這會嚴重影響整體的效能和安全性。出現這一類需求,同樣均需要和程式設計師溝通,由程式設計師提供技術分晰以及一定的加速手段,如多執行緒執行指令碼或是改變實現方式。