為什么Python不適合寫(xiě)游戲?
知乎上有個(gè)熱門(mén)問(wèn)題:Python 能寫(xiě)游戲嗎?有沒(méi)有什么開(kāi)源項(xiàng)目?

Python可以開(kāi)發(fā)游戲,但不是好的選擇
Python作為腳本語(yǔ)言,一般很少用來(lái)開(kāi)發(fā)游戲,但也有不少大型游戲有Python的身影,比如:
坦克世界大戰(zhàn)(作為用戶(hù)端腳本) 文明IV(作為地圖編輯器腳本) 戰(zhàn)場(chǎng)2(作為游戲玩法腳本) 模擬市民(作為mod腳本) 新戰(zhàn)前夜(作為服務(wù)器和客戶(hù)端語(yǔ)言) 迪士尼-卡通城(提供 Panda3D 引擎圖形) ...
雖然這些游戲支持python,但python扮演的角色大多作為腳本和插件,并非游戲開(kāi)發(fā)的主語(yǔ)言。
目前市場(chǎng)上多數(shù)游戲都是基于C++、Java等語(yǔ)言進(jìn)行開(kāi)發(fā),主要它們都是靜態(tài)語(yǔ)言,比較穩(wěn)定且速度快,能夠滿足游戲高性能的需求。
比如《絕地求生》、《巫師3》、《黑暗之魂》等都是用C++開(kāi)發(fā)的,《碟中諜III》、《Minecraft》、《FIFA 11》等都是用Java開(kāi)發(fā)的。
Python因?yàn)樽⒅鼐幋a效率而非計(jì)算性能,在速度和穩(wěn)定性上無(wú)法與其他語(yǔ)言媲美,幾乎很少有商業(yè)游戲是純Python開(kāi)發(fā)的。
但Python可以通過(guò)腳本和第三方引擎為大型游戲提供組件,比如上述提到的幾款游戲。
而且Python可以快速創(chuàng)建游戲原型,幫助開(kāi)發(fā)者進(jìn)行試驗(yàn)和debug,作為輔助工具還是不錯(cuò)的。
可以嘗試一些Python開(kāi)源小游戲
Github上有一些基于Python開(kāi)發(fā)的開(kāi)源小游戲,有興趣可以試試看。比如說(shuō)基于Python Pygame庫(kù)開(kāi)發(fā)植物大戰(zhàn)僵尸。
原項(xiàng)目:marblexu/PythonPlantsVsZombies

該游戲倉(cāng)庫(kù)主要包含三部分:游戲代碼、游戲素材、數(shù)據(jù)庫(kù)
游戲代碼就是Pygame庫(kù)提供框架,然后python搭建游戲規(guī)則,全部代碼將近3000行。
游戲素材主要包括僵尸、植物、背景等圖片,圖片會(huì)導(dǎo)入進(jìn)游戲界面,然后寫(xiě)動(dòng)態(tài)事件過(guò)程來(lái)實(shí)現(xiàn)游戲畫(huà)面。
數(shù)據(jù)庫(kù)是用json來(lái)存儲(chǔ)游戲過(guò)程數(shù)據(jù),這里包括了位置、時(shí)間、關(guān)卡等。
我專(zhuān)門(mén)錄了個(gè)視頻講解下如何去下載,并在本地電腦執(zhí)行。
還有很多小游戲可以用Python實(shí)現(xiàn),我覺(jué)得是非常有趣的過(guò)程,初學(xué)者可以玩玩。
比如這個(gè)github倉(cāng)庫(kù)提供了很多免費(fèi)小游戲的代碼和demo:
grantjenks/free-python-games

Python游戲開(kāi)發(fā)的主要框架
Python有很多游戲開(kāi)發(fā)框架,比如說(shuō)
PyGame:PyGame在優(yōu)秀的SDL庫(kù)之上添加了更多功能。允許使用python語(yǔ)言創(chuàng)建功能齊全的游戲和多媒體程序。具有高度的可移植性,幾乎可以在所有平臺(tái)和操作系統(tǒng)上運(yùn)行
PySoy:Python 3的高級(jí)3D游戲引擎,緊密結(jié)合了渲染,物理,動(dòng)畫(huà)和網(wǎng)絡(luò)
Pyglet:用于opengl的跨平臺(tái)窗口和Python的多媒體庫(kù),可在mods / bfheores / python文件夾中找到
Python-Ogre:用于OGRE 3D引擎的完整python包裝器,以及用于GUI,物理,特效,聲音等的15個(gè)其他圖形和游戲相關(guān)庫(kù)
Panda3d:專(zhuān)門(mén)用于python的全功能開(kāi)源3d引擎,但用c ++編寫(xiě)。功能:性能,多平臺(tái)支持,場(chǎng)景圖,導(dǎo)出/導(dǎo)入,3D音頻,碰撞檢測(cè),物理,瀏覽器插件,動(dòng)畫(huà)等
Blender3D:GNU GPL許可下的開(kāi)源游戲引擎器,動(dòng)畫(huà)師和3D渲染器。使用Python作為腳本語(yǔ)言
Python游戲可以幫助你學(xué)習(xí)語(yǔ)法
對(duì)于Python初學(xué)者來(lái)說(shuō),雖然不為了做游戲,但通過(guò)寫(xiě)游戲來(lái)學(xué)習(xí)語(yǔ)法是很好的方法,唯有多動(dòng)手才能掌握編程的真諦。
