理論上有可能用flask和pygame寫出網頁遊戲嗎?
01-30
有人這麼干過嗎?如果不行,那問題是什麼呢?
--------------------------------
理論上?可以,前提是有瀏覽器支持內嵌Python代替Javascript。
由於目前沒有任何通用瀏覽器這麼干,那麼你就需要自己寫個瀏覽器了。寫瀏覽器不如做個專用客戶端。
於是這玩意成了端游……
另一個思路是用Py去生成JS來完成前端,據我所知有一些試驗性的項目,但是效果並不好。PyGame是沒有個JS端端似乎,因此無論如何是沒PyGame什麼事的。
此外Flask貌似至今沒有可靠的非同步方案,畢竟依賴wsgi。而大多數遊戲都需要保持連接(部分傻乎乎的卡牌除外),於是你的一台伺服器可能也就能接入幾十個百來個客戶端。
所以務實一點,用python做後端可行,但不是flask;前端就別想python了,目前連個py生成js的玩意都沒幾個靠譜的,因此想做頁游還是老老實實用js寫前端部分比較好。
這倆都是做 UI/前端的。
當然這裡的前端不是 B/S 意義上的前端。整個架構裡邊,處理 UI、UX 這些直面用戶的就是前端,處理數據、業務邏輯的就是後端。當然你業務邏輯簡單可以直接寫 Flask 裡邊。但 Flask 你當然得加上瀏覽器來展現界面,反正它和 UI 跑不掉關係,除了這麼用,其它用法都是另類了。
然後 pygame 也是個類似的東西,自帶 SDL 的 UI 支持,跟 Flask + 瀏覽器一樣的。你讓它們倆怎麼相處呢?
那個說 pygame 做客戶端的,請問你拿 pygame 做客戶端之後,瀏覽器在邊上看著嗎?那還叫頁游嗎?如果你的目標是做網頁遊戲,那麼你應該去學JavaScript(和HTML5 Canvas)或是Java等等。如果你堅持要實現它(要麻煩得多),有一些庫可以把Python編譯成JavaScript,你可以試試:
- WebBrowserProgramming - Python Wiki
- Pyjsdl
- Pyjs
這兩個都跑在後端,前端什麼都看不到就GG了。
你可以找找py2js的編譯器,用py寫canvas,但是用的 API 仍然不是 pygame 那套。
另外,我認為這種東西應該採用長連接的websocket。推薦閱讀: