Python开发3D游戏技术探索
? 前端時間導師安排開發一個3D的強化學習環境,其實也就等于開發一個特定場景的游戲。經過一段時間的調研與實踐,在這里分享下自己的經驗,希望能對你有所幫助。
? 其實最開始的時候,導師問,能做成3D的么,要是不行的話,2D的也行。TM,當時就是嘴賤,否則也不至于后面幾個月愁的頭發直掉😹。
? 廢話不多說,下面開始正文部分。
1.Python能否開發游戲
? 目前Python語言還是非常流行的,加上做機器學習,基本上也沒有別的開發語言的選擇,所以在語言的選型上是沒有糾結的空間的。
? 那Python能開發游戲么,答案是肯定的,并且python在開發游戲上,也有不少優秀的游戲的游戲引擎可以使用。首先就是PyGame,老牌的游戲引擎,開發文檔齊全,網上教程多,許多python游戲開發書籍都是以PyGame為主體的。還有就是cocos-2d,一款非常好用的游戲引擎,博主以前使用過JS版本的開發過一個游戲,使用其提供的IDE,非常方便,沒想到也提供了Python版本。當然還有其他比較流行的引擎,就不在一一贅述了。
? 我也找到了一個大佬使用python開發的游戲,大家可以參考下,github地址.
? 哎,上面兩款好用的引擎都是開發2D游戲的,心塞,只能繼續探索。
2.Python3D游戲引擎
? 經過調研,主要把目光發在了以下三款引擎上,OpenGL、Pyglet、Panda3D。
2.1 OpenGL
? OpenGL(Open Graphics Library),意為“開放式圖形庫”,是一個編寫2D和3D應用程序的跨平臺API。OpenGL 不是一個獨立的平臺,因此,它需要借助于一種編程語言才能被使用。C / C++ / Python / Java 都可以很好支持 OpengGL。Python版本的OpenGl模塊名為PyOpenGL
? 聽著是不是很厲害,也確實很厲害。但是太難了,學習成本過于高了。。在看了幾篇介紹文檔后,我就放棄了。
? 參考資料如下,有興趣的可以看下。
? 萬字長文詳解如何用Python玩轉OpenGL
2.2 PyGlet
? Pyglet 是一個易于使用但功能強大的庫,用于在 Windows、Mac OS 和 Linux 上開發視覺豐富的 GUI 應用程序,如游戲、多媒體等。這個庫完全是用 Python 創建的,它支持許多功能,如窗口、用戶界面事件處理、操縱桿、OpenGL 圖形、加載圖像和視頻以及播放聲音和音樂。
? 在剛一接觸PyGlet,就感覺很棒,很易用,當時也跟著文檔做了一個小行星游戲,頁面如下:
? 并且將這個小游戲和Gym進行了整合。
? 還嘗試了加載3D模型,展示如下,當時一度覺得就是他了,可以是后面還是遇到了一些很難解決的問題。
? 參考文檔:PyGlet官方文檔。
2.3 Panda3D
? 當時被Pyglet折磨了一段時間后,便動了換路線的想法。網上看了Panda3D的入門介紹(類似于編程學習中的HelleWorld😹),哦,這有點意思哦。跟著教程,十幾分鐘做了簡單的場景,截圖如下:
? 感覺很不錯,模型的加載、渲染、動畫的執行都很便捷,便進行了更深入的了解,開發了一個小Demo,當時心里就大呼:是他是他就是他。。。
? 在使用Panda3D的過程中,也遇到了相關內容過少的問題。Panda3D雖然技術很強,可以實現很多功能,但是其被設計給有豐富相關經驗的人使用的,對于剛入門的小白不是很友好,加上國內的用戶實在是少,所以相關的解決方案基本上也是很難找到。還好其開發文檔比較全(全英文😭),根據文檔,可以解決入門時的陣痛。
? 想去BiliBili上找找視頻教程,只找了一個博主從Yutubu上下載下來上傳的視頻,好難啊,英語聽力是在是不過關,最后也只能放棄。
? 不過Panda3D還是很強大的,至少可以解決我所有的需求,雖然過程很痛苦。
? 參考文檔:Panda3D官方文檔。
2.4 Unity 3D
? 沒想到吧,還有第四個選擇。這個是我在檢索信息的時候看到的,Unity 3D開放對Python的支持,并且官方提供了一組用于強化學習的3D環境,Github地址。
? 經驗主義害死人呀,做3D游戲,第一印象想到的就是Unity,但是其官方開發語言是C#,就一直沒想到使用他,后悔呀。但是我使用Panda3D已經開發過半,項目時間也很緊張,也就沒有時間在選擇換技術了。Unity3D for python我還沒有嘗試,也不知道效果如何,不過背靠Unity這個大樹,相信其功能、易用性上應該沒什么問題,后面使用過會在進行分享。
3.總結
? 本文到這就結束了,每個游戲引擎都有自己的優勢,我們也是根據不同的使用需求選擇合適的技術。后面會分享Panda3D的使用經驗,有需要的可以持續關注,有什么疑問,也可以在評論區留言。
總結
以上是生活随笔為你收集整理的Python开发3D游戏技术探索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手眼标定总结
- 下一篇: 广数928te_广数928TE系统说明书