code style

9/03/2015

How to induce low memory warnings on iOS device?

It's difficult to test game function in low memory scenario.

Someone suggests using iOS simulator to do the test.

Someone says write codes to allocate large chunk of memory to induce that, or call private method
[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];

Rather than writing code in the project, you could use Xcode debugger to execute the private function.

Edit the action of breakpoint and enter
expr (void)[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];
Voilà, mission completed.

By the way, my indie game "Nimble Jump" Android version is in beta testing now.
Please try it and give some feedback. Thank you!
play.google.com/apps/testing/com.jbyu.ninja.





1/12/2015

也來寫卡牌遊戲好了(二)

沒想到我也學富堅一樣拖稿拖超久!


咳! 好Der~ 今天我們來繼續談談怎麼寫卡牌遊戲。

什麼?! 你說卡牌遊戲已經過時了?!?! 現在都是什麼刀什麼塔的!

咳! 好Der~ 今天我們就來談談中國手遊什麼的如何砸錢買廣告。(喂)


呃....那今天要說什麼? (翻翻筆記、抓抓頭)

我覺得是這樣啦,我相信台北市民的智慧,應該是不會在乎要講什麼,這一路走來,不管面對再多的劣勢,我們始終堅持打一場正面的遊戲開發。(喂!!!!)



咳! 好Der~ 今天我們來討論做遊戲的時候要用什麼工具來管理數據資料。 對!就是SQLite、SQLite、SQLite,很重要,所以要講三次。


SQLite就是專門用於獨立單機架構的資料庫系統。輕便短小、沒有負擔、讓人幾乎忘了它的存在。你還在用csv檔案來儲存角色數值嗎?你還在為了資料排序而寫了一堆sorting algorithm嗎?


用了SQLite,馬上就能解決您過去的困擾 (然後多了更多要如何好好利用SQLite的煩惱)(登愣)

首先,效率問題!SQLite是將資料儲存在檔案系統,所以File IO可能會是個問題。幸好,SQLite有提供memory function,可以將SQLite搬到RAM上面做操作,因為現在記憶體夠大,小小的遊戲數值應該是佔不了多少空間。可以參考這邊的作法 link

通常遊戲中的動態數據,例如玩家資料、關卡進度、道具數量,是從遊戲server傳回client儲存。而靜態數據,例如卡片設定、關卡設定、道具設定...等等,往往變動幅度不大,如果每次玩家進行遊戲都得重複下載這些數據,就有點浪費大家的時間與頻寬。比較偷懶的作法就是在更新數據的時候讓server自動產生靜態數據db,然後再通知client下載這個db。
這邊提供一個mysql轉換成sqlite的script

因為靜態數據db會存在client,相信很多人不想讓別人看到你db裡面放了什麼鬼東西,所以我們就得加密db。免費的SQLite雖然有提供加密的界面,但是並沒有實作;官方的實作版本得花錢購買。幸好,wxSQLite3有提供加密的功能,省去我們自己DIY的功夫。

SQLite CLI的加密方式如下
$~/sqlite3secure source.sqlite
.backup /tmp/temp.txt
attach database "encrypted.sqlite" as x key "password";
.restore x /tmp/temp.txt
.quit

好了,到這邊SQLite的基礎建設差不多都搞定了。接下來就是讓開發人員開開心心地在client裡面下SQL指令去查詢遊戲數據囉~ 可喜可賀!
(真的有這麼輕鬆寫意嗎?  噓~~~ 不要傷了皇「城之內」的和氣)

至於用ORM方便物件導向操作什麼的,我只能說「真男人都是直接下SQL指令抓raw data來用Der」
(其實是我沒空研究啦)


時間也差不多了, 咱們下回再見 (天線寶寶說掰掰)