Daily Record 面向Cocos面試者的面試官準備 (非深入) - 2020 12.28
只要有面試,我就連載,我,一個Web前端仔~
mvc的開發模式:
MVC模式是軟體工程的一種軟體架構模式,把軟體系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)
- M 模型:封裝應用程式狀態、回應狀態查詢、處理業務流程、通知視圖業務狀態更新,
- V 視圖:解釋模型、接受資料更新請求、發送用戶輸入給控制器、允許控制器選擇視圖
- C 控制器:接受用戶請求、呼叫模型回應用戶請求、選擇視圖顯示相應結果
目的: M和V實作代碼分離,V定義比較清晰(用戶界面)
前端方言:
- V = html頁面,
- M = 處理邏輯,
- C = 接受用戶的輸入,呼叫 M和C去完成用戶需求,不輸出任何東西,不做任何處理,只是接受請求決定呼叫哪個模型構件去處理請求,確定哪個視圖顯示回傳資料,有點像路由?
后臺CICS端?
客戶資訊控制系統,是一系列為應用提供聯機事務處理和事務管理的產品,為商業應用提供一個事務處理環境,
幫助客戶建立三層次結構的聯機事務處理應用,CICS 有效地區分應用系統中的表述邏輯層、業務邏輯層和資料邏輯層,
lua+cocos-2dx? c#+unity? c++ +js+cocos-2dx?
lua+cocos2dx & js+cocos2dx:
1、lua比js效率快(密集計算才會感覺到),其余日常游戲邏輯速度幾乎沒區別,即使有也可以放到C++去做,到目前未知還沒有,
2、安全性:js混淆后再進行bytecode轉換最大程度保證代碼的安全性,
3、面向物件,js一切皆為物件,唯一缺點是沒有繼承,呼叫父類方法等原生方法,需要原型鏈來模擬實作, cocos2d-jsbinding幫忙實作繼承功能,實際用的時候完全可以去實作類的繼承,多載,重寫,父類呼叫等功能.
4、除錯:網頁除錯可以debug,打斷點,看當前域資料,可以引入腳本作智能提示,
5、網頁版:手機app,同事可以在手機瀏覽器運行,
6、下載體積非常小,lua一般大于1M
cocos-2dx?cocos-creator
cocos2d & cocos2dx
【開發語言】:Cocos2d是Object-C寫的,Cocos2dx是C++寫的,支持使用 C++、Lua 或 Java 進行開發,
【運行平臺】:Cocos2d只能在IOS下運行,Cocos2dx是跨平臺的,適配 iOS、Android、HTML5、Windows 和 Mac 系統,功能側重于原生移動平臺,
【國籍】:Cocos2d是外國人搞的,Cocos2dx是中國人搞的,
Cocos2dx是Cocos2d的C++寫法,但是游戲架構是一樣的,都包含了精靈、導演、場景、動作等概念,他們是一脈相承的東西,你可以直接研究Cocos2dx,沒有什么障礙,
雖然是有了Cocos2d才有的Cocos2dx,但是Cocos2dx包含了Cocos2d的主要思想,因此可以直接研究Cocos2dx,
平時說的Cocos,指的是Cocos 2DX
cocoscreator & cocos2dx
Cocos Creator是借用Unity 3D的操作方式,開發的另一個引擎(號稱中國版的Unity),雖然名字里也帶Cocos,但和Cocos 2DX是兩個不同的引擎,
簡單概括,它們是觸控科技,開發的兩個不同的引擎,唯一的共同點,就是名字里都帶Cocos,
相比之下,Cocos 2DX可控性更強一些,使用C++開發,所以性能非常好,可以做一些比較大型的游戲,缺點是學習起來比較費勁,
Cocos Creator界面更簡潔,學習更簡單一些,套用Unity 的操作方式,也更符合趨勢,但由于使用JS作為開發語言,所以性能比較渣,以小游戲為主,不太適合做太大型的游戲,
總結起來,就是引擎不同、性能不同、用途不同,
unity & ue4
不分彼此, unity: 絕地求生、堡壘之夜、和平精英、黎明殺機; ue4: 王者榮耀、爐石傳說、紀念碑谷、PokemonGo
多執行緒 多行程
1、行程是由多個執行緒構成的,是執行緒的集合,
2、執行緒是作業系統進行運算調度的最小單位,
3、多執行緒優點: 提高程式效率,將耗時任務放在后臺繼續執行的同時,同時執行其他操作,(異步,系統不斷在各個執行緒之間來回的切換-極快速)
4、多執行緒缺點:很耗系統資源,因為執行緒需要開辟記憶體,需要更多記憶體,影響系統性能,作業系統要在執行緒之間來回切換,
5、計算機同時執行多個行程,一般是同時運行多個軟體,
- 單行程單執行緒:一個人在一個桌子上吃菜
- 單行程多執行緒:多個人在同一個桌子上一起吃菜
- 多行程單執行緒:多個人每個人在自己的桌子上吃菜
多執行緒的問題是多個人同時吃一道菜的時候容易發生爭搶,也就是順澩共享就會發生沖突爭搶,
1> Windows : 開桌子的開銷很大,因此 Windows 鼓勵大家在一個桌子上吃菜,因此 Windows 多執行緒學習重點是要大量面對資源爭搶與同步方面的問題,
2> Linux :開桌子的開銷很小,因此 Linux 鼓勵大家盡量每個人都開自己的桌子吃菜,這帶來新的問題是:坐在兩張不同的桌子上,說話不方便,因此,Linux 下的學習重點大家要學習行程間通訊的方法,
【開桌子】 -> 創建行程, 【開銷】 -> 時間開銷
Windows 編程中不建議你創建行程
1> 并行:多個CPU實體或多臺機器同時執行一段處理邏輯,是真正的同時,
2> 并發:通過CPU調度演算法,讓用戶看上去同時執行,實際上CPU操作層面不是真正的同時,
并發時如果操作了公用資源,有可能產生安全問題
3> 高并發:短時間內大量操作請求, 主要是web系統集中大量訪問或者socket埠集中性收到大量請求,可能導致系統宕機,嚴重的甚至導致OOM例外,系統停止作業等,
解決高并發,從硬體、網路、系統架構、開發語言的選取、資料結構的運營、演算法優化、資料庫優化… 不詳細說
4> 多執行緒和高并發的關系: 多執行緒只是在 同/異步 角度上解決高并發問題的其中一個方法手段,是在同一時刻利用計算機閑置資源的一種方式,
cocos常用優化技巧
1、資源包體大小優化: 資源x,代碼模塊x,壓縮png,壓縮聲音資料(多聲道-單聲道,降低采樣率),降低圖片精度(1920x1080->960x540),不要帶字體檔案用美術字來替代
2、圖集打包:散圖->圖集,注意不要把不同場景會用到的圖片放到圖集里,放公共的
3、影片優化:記憶體大小優化(幀影片、骨骼影片代替幀影片); 運行性能優化:骨骼影片替換掉,
避免影片中系結代碼,影片編輯器影片時,盡量不要使用影片事件來呼叫代碼,避免不必要的代碼管理麻煩,
4、資源管理: 場景切換時候,不用的資源,可以卸載掉; 預加載; 使用節點池進行快取
5、代碼優化:
1> 地圖資料、路點資料,能離線生成的最好離線生成出來;
2> 在update中避免使用節點查找等,可以考慮初始化的時候把常用節點,組件保存起來,
3> 盡量少用大型框架庫,例如物理引擎,能不用就不用,
4> 復雜演算法,用空間換時間;
5> 不要做過多的代碼系結;
6、setting.js優化:資源放在resources下,會導致setting.js變大,不用代碼加載的資源別放到resources檔案夾下,
7、運行時記憶體優化:分析記憶體占用情況, 例如節點數目、資源,等等,
手游專案打包流程
目前可以選擇的原生平臺包括 Android、iOS、Mac、Windows 四個,其中發布到 iOS、Mac 和 Windows 的選項只能在相應的作業系統中才會出現,
其中 Mac/Windows 平臺直接在桌面運行預覽,iOS 平臺會呼叫模擬器運行預覽,Android 平臺必須通過 USB 連接真機,并且在真機上開啟 USB 除錯后才可以運行預覽,
分開作業系統打包,
排序演算法
太長,請看大佬解說,
點我點我點我!干貨,十大經典排序!
遞回演算法
通過重復將問題分解為同類的子問題而解決問題的方法,函式可以通過呼叫自身來進行遞回,計算理論可以證明遞回的作用可以完全取代回圈,因此在很多函式編程語言(如Scheme)中習慣用遞回來實作回圈,
遞回演算法 和回圈演算法總結:
1> 一般遞回呼叫可以處理的演算法,也通過回圈去解決常需要額外的低效處理 ,
2> 現在的編譯器在優化后,對于多次呼叫的函式處理會有非常好的效率優化,效率未必低于回圈,
<script type="text/javascript">
// 需求: 在body中列印出1-3,用遞回解決
function console1_3(n){
document.write(n + "<br />")
n++
if(n<=3){
print1_3(n)
}
}
console1_3(1)
</script>
游戲專案螢屏適配
從我們準備的解析度資源目錄中查找到與實際螢屏解析度的寬高比最為接近的一個目錄,然后將該目錄添加到專案的資源目錄容器中,
代碼省略,自行度度,
常見的SDK接入
微信SDK、支付寶SDK、友盟/百度SDK、其他SDK
如何選擇?
有Java基礎 ? 選擇Cocos Creator入門是最佳選擇,上手快,入門容易,開發速度快,成本低,
之前從事Unity開發,想業余時間開發微信小游戲上線 ? 選擇Cocos Creator幾乎無縫銜接,因為Cocos Creator就是中國版的Unity,
之前有C++開發基礎 ? 選擇Cocos 2dx是較好選擇,
IOS開發人員(Object-C) ? Cocos 2d是不錯的選擇,
開發3D微信小游戲 ? 建議選擇Laya或Cocos Creator 3D,PC端3D游戲建議選擇Unity,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/241919.html
標籤:其他
