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