2018年7月30日 星期一

Cocos2dx require

最近工作上遇到一個問題
公司目前使用的遊戲引擎是 Cocos2dx 2.2.6
別問我為啥不升級,這個牽扯到超多問題,沒辦法動

最近在建立一個小型的專案
專案中用到 Git 的 Submodule 引入別人寫的 Library
問題在別寫的 Lua Code 中有 require

當這個專案被其他人引入并執行時
原本 require 的位置變成了其他專案的根目錄了

執行的時候就會報錯,表示找不到 XXX module

原本我直覺使用 Cocos2dx 提供的 CCFileUtils
裡面有一個函數 addSearchPath
但是呼叫并傳入 search path 卻是沒有用的,還是會出錯

仔細看一下 Cocos2dx 底層的 C++
發現 Cocos2dx 有改寫 Lua 尋找檔案的方式,請見 Cocos2dxLuaLoader.cpp
它在找檔案的時候還是依靠 Lua 的 package.path(http://lua-users.org/wiki/PackagePath)
所以我一直呼叫 C++ 的 addSearchPath 是叫心酸的!!

最后修改的方法如下
local function addSearchPath(searchPath)
return string.format(
"%s;%s?.lua;%s?/init.lua",
package.path, searchPath, searchPath);
end
package.path = addSearchPath("Libs/");
這樣才解決我的問題
Cocos2dx 你還我 30 分鐘啊啊啊!

Git Client 工具

Git Client

上一間公司開始使用 Git 來管理程式碼
除了下 Git 指令之外
我覺得要有良好的 Git Client 來操作
不然每天下指令碼也是嗎蠻累人的
再加上找會使用 Client 的人比會打指令碼的人好找啊

新公司一開始我使用 SourceTree 這套老牌的工具
不過最近看見很多人開始使用 GitKraken
再加上不知道為啥我的 GitLab 網址常常 403
網管人員是說我有兩個 Git 賬號造成的???

總之,一堆事情讓我想換一個 Git Client
GitKraken 安裝完成之後,目前使用上還算滿意
等我使用大概一個月之後再來分享心得
看和 SourceTree 有什麼不同

Git書籍

Git 書籍

線上學系 Git 的資料很多
之前我也分享了一個網站
最近看見有線上 Git 書籍
Learn Git in 30 days
聽名字就超厲害,30天就可出師(誤)
免費的資訊當然不可錯過啊!!!!

2018年7月29日 星期日

Git Learning

Git 學習資源

雖然我有 Git 的書籍可以看
不過網絡上的資源實在太多,看見好多資源我都會看一下
最近我們公司的老大分享了一個學習 Git 指令的網站
我個人非常推薦
Learn Git branching
因為一般的網站都是靜態教學,也就是學習的資料
我們只是單純的將信息消化,然後自己開程式碼來練習
這個網站可以自己輸入Git指令直接再網頁上模擬Git的流程
很有趣
它將課程分成很多等級,我們只要一關一關的就可以學會 Git
比如:
 $git branch bugFix;
 $git chekout bugFix;
 $git commit;
 $git reset bugFix;

像是這類的指令網站中都有教學,建議有興趣的可以參考一下

2018年7月28日 星期六

MarKDowm寫Blog

--- ---

新工具

寫Blog的工具很多
不過我常常寫MarkDowm
利用這個方式寫東西比較習慣
最近會利用 StackEdit 來發表文章看看
如果好用的話,應該會持續用下去
順道一提
這篇文章就是用 StackEdit 纂寫並發表的
有興趣的可以玩看看

新公司,舊語言

最近換新工作,由原本的 Unity 轉成 Cocos2dx
我私下還是會持續的關注 Unity 這個遊戲引擎
因為我覺得Shader寫起來很輕鬆
透過簡單的工具來學習 Shader,何樂而不為呢?

目前公司是 C++ 和 Lua
我上一次寫 Lua 已經是 2年前,好險 Script 語言要注意的東西都差不多
轉換上沒有遇到太大的問題
再加上遊戲引擎是 Cocos2dx
倒是沒有甚麼挑戰

目前到了大叔的年紀
越來越多事情需要處理,不論是公司或是私人事務
希望將寫 Blog 變成習慣
記錄在遊戲開發生涯的點點滴滴

Lua 5.1 __gc

__gc lua 5.2 開始有 __gc 這個元函數可以知道什麼時候被釋放掉 當 table 被回收時會呼叫這個函數 我們可以在這個函數中處理資源釋放等操作 不過 lua 5.1 中對於 table 并不支援,我們先看一下在 lua 5.2 中 這個 __gc 怎...