標籤:
現在無論是端遊還是手遊(基於cocos2d)的開發, 基本模式都是c++核心 + lua邏輯的路線。對於c++的開發和調試, vs已經能很好的滿足開發人員的需求, 微軟這方面真是值得稱頌。不幸的是, lua的開發和調試,還沒有一個統一的,方便的開發調試環境,這也給廣大的luaer和項目造成了極大的困擾。目前通常的做法大致有如下幾種:
1、純粹意義上的lua編輯器, 如Sublime Text 2 + 外掛程式的模式,解決了代碼提示和補齊問題。
2、編輯器的基礎上加入調試功能, 通常是直接在vs上開發一個相應外掛程式(如 babe lua), 或者是一個獨立的第三方程式(如decoda、lua studio)。
這些方案基本上都存在lua調試不方便, 沒有一個統一的規則來定製自己的lua api的問題, 因此如何構建一個好的lua開發調試環境對於項目極為重要。
筆者因為對於代碼提示、補齊、如何調試lua、外掛程式開發的原理不懂, 並且也沒有精力去研究這方面的內容, 想到了一個偷懶的辦法, 也是考慮到目前cocos2d發展的良好趨勢, 何不直接利用cocos2d環境下lua的開發方式來構造一套自己的lua開發和調試環境。在cocos2d環境下, 開發人員通常會利用cocos code ide進行lua的代碼編寫和調試。cocos code ide是基於eclipse的(eclipse真是強大啊, 可以根據需要進行任意定製, 包括adobe的flash builder也是基於這套環境), 較好的解決了lua代碼的編輯問題, 如提示、補齊等。如果要調試lua代碼的話, 則需要指定一個可以稱之為第三方exe的獨立程式, 其實就是一個c++核心程式, 也就是lua的宿主程式, 用於解釋執行lua代碼。至於這個宿主程式, 你可以使用cocos2d預先提供的PrebuiltRuntimeLua.exe,也可以利用cocos2d提供的模板來構建自己獨特的宿主程式。這個宿主程式是如何和cocos code ide進行互動呢(這裡互動指的是可以在vs下調試宿主程式的c++代碼, 在cocos code ide裡調試lua), 筆者簡單的跟蹤了一下宿主程式的運行, 無論是本地調試還是遠端偵錯, 大概原理和流程如下:
1、宿主程式啟動, 顯示等待視窗, 並開啟socket監聽(這個是不是很贊, 意味著可以遠端偵錯)等待cocos code ide進行串連和指令。
2、cocos code ide啟動, 串連socket, 發送指令到宿主程式。
3、宿主程式分析指令, 如果是sendrequest這條指令,則執行一個lua入口指令碼(src\main.lua,可以在程式裡定製), c++和lua的眉來眼去就正式開始鳥。
至於cocos code ide是如何在eclipse的基礎上實現lua代碼編輯相關和調試相關的功能, 筆者不懂, 也基本上不會花時間去研究。筆者要做的是在以上分析的原理基礎上, 在cocos code ide的基礎上定製自己的lua開發調試環境。
本方案的優勢是建立在一個較好的基礎上, 可以比較方便快速的實現。由於cocos2d發展的良好趨勢和廣泛的應用, 相信cocos2d開發小組, 會不斷加強並完善cocos code ide的功能。因此,可以說是一個相對強大的團隊在背後支援這套方案。
那麼如何?這個方案呢, 筆者認為主要有以下幾個問題需要解決:
1、如何讓cocos code ide認可定製的宿主程式。
2、如何定義自己的lua api讓cocos code ide可以識別。
定製宿主程式
這個可以參考一個用cocos2d的模組建立的lua項目對應的runtime工程, 或者quick cocos中的player工程。
定義自己的lua api
這個問題又可以細分為兩個方面:
1、lua指令碼中的api
這個cocos code ide本身已經支援, 只要是ide可以檢索到的lua指令碼, ide就可以識別出裡面定義的api。
2、c++註冊到lua中的api
這個可以參考cocos code ide是如何識別出lua庫,cocos2d庫,quick cocos庫中的api。
補充和願景:
1、lua的調試原理。
2、vs外掛程式的開發原理(如何直接在vs環境下實現lua開發調試)。
3、eclipse中如何?某種語言的代碼編輯功能和調試功能。
3、microsoft或許有一天會將lua視作c++指定的官方指令碼, 直接在vs中整合lua的開發調試功能, 那可真是廣大luaer的福音。
在cocos code ide的基礎上構建自己的lua開發調試環境