亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為什么在游戲開發中不使用MVC

發布時間:2021-12-27 14:15:00 來源:億速云 閱讀:207 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關為什么在游戲開發中不使用MVC,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

首先,我是用MVC的,在畢業早期開發應用軟件類程序,對不同數據的不同展示方式MVC是很好的設計。或者說,一個M(數據),多種V(展示),是應用軟件的常見展示方式,很適用MVC。大家在看Design pattern介紹MVC的時候,常用的例子,就是一個數據,即要餅狀圖展示,又要柱狀圖展示。

后來,轉行做頁游,覺得當時的項目,完全沒有什么設計,胡亂堆砌,亂成一團,想起了MVC等設計模式,并且,還有很多人推薦的PureMVC,Robotleg等類MVC框架,并使用了依賴注入等模式,學習了demo之后,覺得很好地解決了游戲設計問題。在跳槽后,在新的項目中,已經使用了robotleg,我進去后就很開心,開心地使用。真實地開發一段時間以后,我開始感覺到MVC或者說這類框架的問題(在和同事的討論中,也得到了牛逼同事很多提點),或者說,是使用者帶來的問題:

1,代碼繁冗,當你閱讀別人的代碼,一個很簡單的邏輯,被封裝了多次,需要在多個代碼文件中索引,閱讀效率極低。代碼文件分散,一些很簡單的邏輯,例如按鈕點擊,都做了多層封裝。

2,不太專業的某些程序的惰性,導致他們并不是真正理解MVC或者說這些框架的原理,他們的目標只是,把功能搞出來。他們要么繞過框架,穿插了很多調用,要么整體copy別人的一個功能,去掉邏輯,留下骨架,然后填充自己的邏輯,也不管這個骨架是否適用。這樣的人,大大增加了項目的混亂,leader要做到充分的代碼review,去除這些問題,在開發進度吃緊,每周都要出版本的情況下,是不可能的。這些快速堆出功能的程序員,反而得到策劃等非技術人員的贊賞。而認真處理,把每一塊都做好,但是慢一點的程序,反而不受夸獎,這導致了劣幣驅逐良幣。我相信,除了極少數精英團隊,很多團隊都有這樣的問題。

3,這些設計和框架,被濫用。比如MVC也許適用于UI部分的設計,但是,他是否適用一個戰斗模塊呢?他是否適用一個劇情模塊呢?有些團隊,機械地運用某些框架,并不根據需求去思考,認為某個東西是好的,就到處使用。

當一個項目規模增長,人員難以保證精英,積累了大量的需求變更,運營期間,需要快速的迭代。這種繁雜冗余的框架式設計,會導致代碼難以維護。有時候,并不是某個框架不夠好,更多的是,我們沒有仔細理清它的適用范圍,也難以保證規范從頭到尾的堅定執行。并留下大量過分設計的繁雜代碼,一個一百行,幾個funtion就能解決的問題,被包裝成了多個class,層層調用,寫了幾大百行,邏輯處處分散。

那么,到底是某個框架,或者設計模式不行,還是我們使用得不夠好呢?

我們回到最初,仔細考慮,MVC解決的核心問題是,一個M,多個V,那么,在游戲領域,這樣的需求多嗎?是強需求嗎?我們到底應該根據需求來設計框架,還是應該根據框架來填充需求?一個框架,一套設計,適用不同的游戲,不同的邏輯嗎?

我認真地考慮這塊問題,發現很多教程,文章,他們介紹MVC,MVVM,介紹各種框架,包括uframe,StrangeIoC等,都缺少了思考和提問:

  • 這個框架適用什么需求?解決了什么問題?

  • 在什么情況下我該用,什么情況不該用?他帶來了什么問題?

  • 是否適合我的項目,我的團隊?

  • 我是應該項目整體使用,還是某些局部的需求使用呢?

等等問題,才是我們該問的關鍵。

我們游戲領域的技術,特別是游戲的框架,受到了太多應用軟件,web開發,app開發的影響,但是,這些模式并不適用我們啊!正式因為web,app這些領域的通用性,需求的固定性(相對游戲開發而言),他們才會誕生出如此多的框架,模式,并且在技術領域,發出了更多的聲音。出現了看似高級的設計方式。并且,web,app的項目周期,以及后續的維護周期是很長的,少則三兩年,多則十幾年,確實必須要謹慎設計。但是,我們游戲,特別是現在手游的生命周期又有多長呢?當需求不同,考慮問題的方式,解決問題的方式,應該做些改變。

游戲開發,和web,app開發,能歸為同一個隱喻嗎? 那么我們問問自己:

  • TDD適用我們游戲前端開發嗎?

  • WinForm的數據綁定,是適合我們游戲開發的嗎?

  • 幾十個設計模式,有幾個能適用我們游戲開發的呢?分別對應什么應用場景呢?

  • 用Design pattern的目的,到底是design,還是去解決具體的問題?

當我們去追逐更新的設計,更酷的框架,我們有了解他們解決的問題嗎?我們有自己了解過他的原理嗎?到底在我們自己的項目中,他能解決什么問題?我們有仔細思考過他在我們游戲開發的整個生命周期,會給我們帶來什么嗎?

最近,因為守望先鋒的一個分享,ECS開始火了起來。有個群里看到說,我們下個項目要上ECS了,問是什么類型,答不知道,但是ECS這種先進框架,肯定要用。我只能說汗~~~

靜下心來,我也追求過最新的技術,最新的框架。但是,當我們真心開始做一個項目,去解決一些問題的時候,我們需要審慎。

最終,我們要回到需求和問題,ECS,核心是為了解決網絡同步中預測和預測失效的狀態回滾問題。如果你不是需要解決這類問題,你確定需要上ECS?一個回合制游戲,確定需要ECS?UI寫法從MVC改ECS?

關于為什么在游戲開發中不使用MVC就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

mvc
AI

柳河县| 平江县| 临湘市| 米脂县| 五指山市| 耿马| 咸宁市| 汾西县| 田东县| 平泉县| 连城县| 清镇市| 乡宁县| 鄂州市| 达州市| 渭南市| 娄烦县| 穆棱市| 阳江市| 东明县| 三门县| 谷城县| 锦州市| 长兴县| 乌拉特中旗| 五峰| 巴南区| 琼海市| 清流县| 宝清县| 石景山区| 丹巴县| 进贤县| 无极县| 西充县| 阳新县| 民和| 图木舒克市| 麻江县| 祁东县| 彭阳县|