• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            戰(zhàn)魂小筑

            討論群:309800774 知乎關(guān)注:http://zhihu.com/people/sunicdavy 開源項目:https://github.com/davyxu

               :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              257 隨筆 :: 0 文章 :: 506 評論 :: 0 Trackbacks

            Cocos2dx的作者王哲來到公司給大家做了一場技術(shù)答疑會

            以下是我及我們項目組的一些Q&A

            1. Cocos2dx 3.0版本在引擎退出時, 會有內(nèi)存泄露

            我:本來以為這個在rc1版本中發(fā)現(xiàn)的問題會在final版本中解決, 但實際上還是沒有解決. 本人使用的是Windows下的VLD的內(nèi)存泄露檢測, 多年來這東西一直沒有誤報過, 雖然這個泄露不是很大, 但會干擾在這引擎上開發(fā)的邏輯的內(nèi)存泄露查找

            王哲:Cocos2dx的內(nèi)存泄露測試是在XCode下進行的, 借助mac平臺的工具來做的, 他說, 雖然操作系統(tǒng)會在進程結(jié)束時會自動回收, 但還是會在patch版本解決這個問題.

            2. Cocos2dx 3.0 中的getInstance設(shè)計問題

            我:3.0中的singleton是使用自動new的方式來實現(xiàn)的, 對象都是分配在堆上, 而不是棧上. 這種方式的特點就是在singleton為空時, 自動new出來, 從而讓上層保證使用簡單. 但是弊端就是前一個問題說過的, 如果處理不當(dāng)?shù)脑? 會導(dǎo)致內(nèi)存泄露.

            3.0中的Director在析構(gòu)時, 會先刪除Configurator的一個配置類, 但是, Renderer在析構(gòu)時, 又會使用到這個配置類, 調(diào)用配置類的單件, 從而導(dǎo)致配置類重新實例化. 之后, 就沒有管理配置類的析構(gòu), 所以發(fā)生內(nèi)存泄露. 我嘗試修復(fù)這個問題. 但是因為getInstance本身的設(shè)計弊端,導(dǎo)致拆東墻補西墻, 東墻又倒掉的問題.

            王哲: 已經(jīng)發(fā)現(xiàn)這個問題, 會在未來版本加以修正

            3. 為什么不自帶更新系統(tǒng)

            王哲: Cocos2dx引擎一開始設(shè)計是偏重于渲染器, 所以包括網(wǎng)絡(luò)及其他部分都是屬于附屬. 現(xiàn)在開發(fā)團隊只有10個人, 所以精力也是有限的

            另外, 每個公司和個人對更新系統(tǒng)的需求都不是一樣的. 不過引擎會在以后版本中的ResourceManager提供一些類似的功能

            4. 幀率控制器

            我: 游戲一般分為固定幀率和可變幀率兩種更新方式. 前者在早期的日本游戲中常見, 后者是3D游戲及后期的游戲中用的比較多. 在U3D中分別使用FixedUpdate和Update兩種方法來實現(xiàn)類似的功能. 但是在Cocos2dx中沒有實現(xiàn)類似的功能.

            王哲: Cocos2dx里因為要處理一些復(fù)雜的情況, 比如接聽電話之類的, 所以這里仍然使用可變幀率來做.

            我: 虛幻里有一套更新算法, 在幀率足時, 擊中處理一些垃圾回收, 內(nèi)存釋放等耗時操作. 但是超過預(yù)設(shè)的閥值后, 停止占用幀更新時間, 留給邏輯足夠的更新時間. 但是沒看到Cocos2dx內(nèi)使用這種算法

            (其實王哲應(yīng)該沒聽懂我說的意思)

            王哲: 我嘗試在3.0的渲染器中支持多線程, 但是在某些情況會出現(xiàn)crash, 而且這種技術(shù)的加入會提高引擎的門檻, 所以未來會根據(jù)實際需要加入.

            5. 為什么不統(tǒng)一setResourceRootPath/setResourceDirectory 的接口?

            這是我們項目的一個兄弟做下載更新時, 碰到的2.0中的一個問題. 王哲表示3.0已經(jīng)做了1年半, 2.0的東西都忘記了, 但是在3.0中是統(tǒng)一的接口.

            6. 如何看待云風(fēng)噴cocos2dx?

            這是我們項目的一知乎粉提的問題. 王哲說, 云風(fēng)對C++很反感, 所以自己的代碼及項目大部分都是C. 因此對cocos2dx這種C++引擎肯定會有些反感. 但是cocos2dx的使用率很高, 不能因為一兩個大佬的意見而改變cocos2dx本身的一些優(yōu)勢

            7. SpriteFrame和紋理的釋放問題, 為什么不使用智能指針?

            王哲: 我做過一個測試, 智能指針在移動設(shè)備上跑的速度肯定是要慢于retain/release這種手動方式, 所以依然在3.0中采用retain/release方式.

            我: 我們有某些資源需要常駐內(nèi)存, 但是全局方式的SpriteFrameCache和TextureCache會導(dǎo)致這個問題很難解決. 能否提供分組資源管理概念

            王哲: 這個修改其實沒什么難度, 論壇里也有很多建議, 我們會考慮在新版本支持這些功能

            8. Scene的接口不統(tǒng)一, 用錯還會crash

            王哲: 這個問題確實存在, 我們會加以修正

            9. 為什么要對STL進行一些包裝, 而不是直接使用?

            王哲: 因為要適用于retain/release模式( 此時, 我終于發(fā)現(xiàn)我們?yōu)槭裁磿霈F(xiàn)第七個問題了)

            10. string為什么需要一種垃圾回收機制來進行回收, 而不是直接用string?

            王哲: 這是一個歷史遺留問題, 為了兼容objc版本的移植及風(fēng)格

             

            其他的一些信息

            CocoStudio是使用WPF寫的, 底層使用P/Invoke與C++引擎層進行交互. 有人提出這個編輯器要開源么, 作者表示后期會考慮的, 但是因為代碼很亂, 所以一開始沒有考慮開源

            本人感受, 微軟的一切開發(fā)工具及代碼的東西都是按商業(yè)模式做的, 根本不考慮開發(fā)者的利益. DX7到DX11, 說好的COM兼容, 最后改的一塌糊涂. MFC那么老掉牙的東西, 到VS2013都還在更新, 這不是禍害群主么. XNA退不起來, Silverlight干不過Flash. 更別說亂的一塌糊涂的WP, WindowsRT, WinPhone. 對于VisualStudio來說, 這是地球上做的最好的編輯器, 保留這個足矣, 但是也別太依賴即可. 擁抱開源, 珍惜生命, 遠(yuǎn)離微軟

            WP版的Cocos2dx支持是微軟設(shè)在西雅圖的一個叫OpenTech的公司來做的, 并非王哲團隊做的. 而且DirectX現(xiàn)在變成小眾API, 因此這公司采用AngleProject來用OpenGL模擬DirectX的接口, 當(dāng)然性能上肯定有很大的損失

            最后附上王哲團隊的照片以鑒真?zhèn)?/p>

            image

            posted on 2014-04-25 18:35 戰(zhàn)魂小筑 閱讀(6738) 評論(5)  編輯 收藏 引用 所屬分類: 游戲產(chǎn)業(yè)隨感

            評論

            # re: 與Cocos2dx作者王哲及其團隊技術(shù)討論會的一些筆記 2014-04-26 09:45 楊世玲
            真的.哈哈哈哈啊哈哈啊  回復(fù)  更多評論
              

            # re: 與Cocos2dx作者王哲及其團隊技術(shù)討論會的一些筆記 2014-06-04 10:07 DelphiBoy2003
            為什么說DirectX現(xiàn)在是小眾API?因為大家都開始使用跨平臺的引擎開發(fā)游戲?并且主流開發(fā)者都轉(zhuǎn)移到web和手游上?PC端的已經(jīng)沒落?  回復(fù)  更多評論
              

            # re: 與Cocos2dx作者王哲及其團隊技術(shù)討論會的一些筆記 2015-04-16 13:08 avi9111
            2年cocos2dx皮毛,最近在搜王哲,才搜到你這里的
            對于最后幾句不是很認(rèn)同
            微軟沒考慮開發(fā)者利益?那是你公司沒交保護費而已,如果你買正版,技術(shù)支持那是多到你不信
            相對于微軟,蘋果,開源更是沒考慮開發(fā)者利益,連個文檔都沒有,根本連請人寫文檔的資源都沒有,人性是懶惰的。

            補充消息,
            1)有很多東西不是你自己寫的爽,然后出來的產(chǎn)品就是好的,也不是你寫的爽,別人就寫的和你一樣爽的

            2)我也是支持cocos2dx的,云風(fēng)說過,他根本都不會用2dx,因為他2個星期就能寫出一個一模一樣的引擎,或者是對的,但是現(xiàn)在整個開源的社區(qū),現(xiàn)在的開發(fā)環(huán)境,現(xiàn)在的商業(yè)環(huán)境,云風(fēng)老頭的說法是不是有點過時  回復(fù)  更多評論
              

            # re: 與Cocos2dx作者王哲及其團隊技術(shù)討論會的一些筆記 2015-04-16 13:26 戰(zhàn)魂小筑
            @avi9111
            那是很多年前寫的東西了, 現(xiàn)在看來, 由于鮑爾默是一個商人, 無法將微軟這個技術(shù)公司做的更好.
            納德拉上任后的開源,就是討好開發(fā)者的一步
            微軟的正版服務(wù)是耳聞的, 確實不錯

            云風(fēng)的能力沒必要用cocos2dx, 所以有了ejoy2d. 但cocos2dx能做到普及, 也是借cocos2d的東風(fēng).
            cocos2dx在2d的地位毋容置疑, 最近3.x版本的很多問題改進的還可以. 但是從整體架構(gòu)設(shè)計, 戰(zhàn)略規(guī)劃上就限制這個引擎的發(fā)展  回復(fù)  更多評論
              

            # re: 與Cocos2dx作者王哲及其團隊技術(shù)討論會的一些筆記 2015-07-09 20:19 mirchd
            最新版cocos2dx還是有內(nèi)存泄漏,pool內(nèi)存管理這里寫的有問題,  回復(fù)  更多評論
              

            亚洲国产精品无码久久一线| 久久99精品九九九久久婷婷| 久久久国产精华液| 久久婷婷五月综合97色直播| 久久久精品国产亚洲成人满18免费网站 | 久久中文字幕视频、最近更新| 色综合久久中文字幕综合网| 伊人久久精品无码av一区| 久久99久久99小草精品免视看 | 久久久久亚洲AV成人网| 亚洲国产精品高清久久久| 伊人丁香狠狠色综合久久| 国产成人久久精品一区二区三区| 久久99精品国产99久久| 2021最新久久久视精品爱| 亚洲国产精品久久久久婷婷软件 | 思思久久精品在热线热| 久久久久夜夜夜精品国产| 久久精品国产亚洲αv忘忧草 | 久久久不卡国产精品一区二区| 色综合久久中文字幕无码| 免费精品久久久久久中文字幕| 精品久久久无码人妻中文字幕豆芽| 久久久久噜噜噜亚洲熟女综合| 国内精品九九久久久精品| 伊人久久无码中文字幕| 女同久久| 一本久久综合亚洲鲁鲁五月天| 国内精品欧美久久精品| 欧美精品一区二区精品久久| 精品永久久福利一区二区| 污污内射久久一区二区欧美日韩 | jizzjizz国产精品久久| 人妻精品久久无码区| 久久久久久久波多野结衣高潮| 免费精品久久久久久中文字幕| 欧美午夜精品久久久久久浪潮| 91亚洲国产成人久久精品| 国产精品久久毛片完整版| 嫩草影院久久99| 久久精品亚洲福利|