Python腳本在游戲中尋找自己的知音
Python腳本在游戲中的使用時很廣泛的,但是有些游戲玩家對這個有些抵觸。其實這是一個非常有用的技術。下面我們就來詳細的看看如何用Python腳本進行游戲輔助。
為什么在游戲中使用Python腳本
在早期的一些游戲中,大部分的游戲邏輯都直接寫入游戲代碼,例如計算公式、游戲流程等。但隨著游戲產業的不斷發展,游戲開發本身也變得越來越復雜,游戲企劃需要更多的時間來對游戲進行調整,如果游戲邏輯還寫在代碼中,則企劃對游戲的每次修改都要通過程序進行,而且還需要重新編譯以及重啟程序,這樣工作效率就大大降低了。
在游戲中使用Python腳本,就正好能解決上述問題,小到一些計算公式,大到游戲的控制流程都可以通過腳本完成,而且目前的腳本系統大多是解釋執行的,因此都可以支持運行時動態修改,這樣一來可以立即看到修改結果,非常方便。#t#
如何使用Python腳本
在游戲中使用Python腳本主要有兩種方式。一種方式是主程序使用一門高級語言,比如C++進行編寫,然后對其嵌入一個腳本解釋器,在運行時動態執行一些腳本函數;另一種方式則是整個程序全部使用腳本編寫,例如一些泥巴游戲就是直接用LPC腳本編寫的。
本文主要研究嵌入式Python腳本使用方法,因為目前大部分的腳本都不能提供如VC++那樣方便的調試環境,如果程序全部用腳本編寫,當腳本多達幾萬行甚至十幾萬行的時候,調試會成為一件非常痛苦的事。而且嵌入式使用時可以將一些非常耗時的代碼用C++編寫,以保持較好的運行效率。
程序從C++的main( )函數開始啟動,然后進入主循環,在一些C++函數中會直接調用腳本函數,在腳本函數的運行過程中,又可能調用C++的擴展函數。C++擴展函數的主要功能有兩個:一是用來增加Python腳本無法直接編寫的功能,二是用來替換腳本中運行速度過慢的函數。
上述過程的關鍵點就在于C++和腳本如何相互調用函數,以及如何傳遞參數與結果。一般的解決方法是在程序啟動時利用腳本的API向腳本注冊C++的擴展函數,將函數指針傳遞給Python腳本系統以便將來調用,調用腳本函數則使用腳本系統的API將調用參數壓進棧,取得運行結果也要通過API進行。