日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python开发3D游戏技术探索

發布時間:2023/12/31 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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模型,展示如下,當時一度覺得就是他了,可以是后面還是遇到了一些很難解決的問題。

  • 跨平臺效果不好:我在我自己的電腦、Mac上執行,效果還可以,沒有什么不一樣的,當我到實驗室的電腦上執行相同的代碼時,出現了很大的偏差,顯示效果很差。
  • 一些配套項目停止維護:比如其官方文檔上推薦的3D圖形渲染引擎RatCave,已經停止了維護了,也沒有找到很好地替代的渲染引擎。在開發過程中,Pyglet加載找到的obj模型文件,報錯問題始終無法解決(可能是我技術問題),只能加載其提供的一些模型。。。
  • 文檔過少:在開發過程中,遇到問題,很難找到解決方案,百度搜索的結果基本全是Pyglet入門介紹。簡直要崩潰到大哭。
  • ? 參考文檔: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游戏技术探索的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。