(Mobile) App and Open Source: Kamigami Client on Various Platforms

(Mobile) App and Open Source: Kamigami Client on Various Platforms

One of two keynote for me on COSCUP 2013. In this presentation, I would share my experience for the implementation of Kamigami game engine client on iOS and Android (and something more :) )

7aa07e17cd90ec9fff21dd7a9fbcdff1?s=128

Hsiao-Ting Yu

August 03, 2013
Tweet

Transcript

  1. ⾏行動遊戲 App 開發與 Open Source: Kamigami 的雙平台經驗 笨笨的⼩小B (littlebtc) (C)

    2013 Briareus Network Technology. All Rights Reserved.
  2. ⾏行動遊戲 App 開發與 Open Source: Kamigami 的雙平台經驗 笨笨的⼩小B (littlebtc) +1

    (C) 2013 Briareus Network Technology. All Rights Reserved.
  3. 退伍 → 跟 QB 簽約 → 開始投⾝身 Startup 當⼯工程師 既是為了理想(好玩的

    Project) 也是為了現實(⼯工作) ⼩小B @ Briarues
  4. 有關我們 百臂網路科技(Briareus) 熱⾎血創業中! 努⼒力在錢燒完前⽣生出東⻄西 Kamigami 遊戲引擎是⺫⽬目前我們的主⼒力

  5. 跨平台遊戲⽅方案 初步以 AVG 為⺫⽬目標 ⼀一份腳本, 全平台通吃

  6. 不就 AVG,有很難嗎?

  7. 為了跨機種遊玩的複雜架構 Game Server: Store / Script / Data 機密 Kamigami

    App Protocol HTML5 Browser iOS Android Windows .NET
  8. 跨平台永遠是痛 iOS Android Windows with .NET 語⾔言 繪製 裝置 開發⼯工具

    上架 Objective-C Java C# UIKit / OpenGL ES Android View / OpenGL ES Windows Forms / WPF / DirectX iPhone ~ iPad 3吋~10吋通通有 PC 滿天飛 Xcode + 保護費 Android SDK Visual Studio ($) 囧 ^o^/ ^o^/
  9. 為什麼不⽤用已有⽅方案? Unity(跨平台 3D 遊戲引擎)? Titanium(跨平台 App 開發⽅方案 with JS)? PhoneGap(跨平台

    App 開發⽅方案 with Web)?
  10. 理由很多... 本⾝身已經是⼀一個跨平台服務 若再加上其他跨平台框架會增加複雜度 使⽤用 Titanium 之類的技術很難作複雜的訊息處理 或透過平⾏行 Thread 的最佳化

  11. 理由很多... 本⾝身已經是⼀一個跨平台服務 若再加上其他跨平台框架會增加複雜度 使⽤用 Titanium 之類的技術很難作複雜的訊息處理 或透過平⾏行 Thread 的最佳化 ⾃自⼰己寫⽐比較有成就感

  12. 代價就是:

  13. 代價就是: Kamigami ⽤用⼾戶端救⽕火⼤大隊

  14. 代價就是: Kamigami ⽤用⼾戶端救⽕火⼤大隊 業務: 功能實作和協定修正 閃退、當掉、低效能急救 ⽼老闆 Demo 爛掉緊急處置

  15. OPEN SOURCE! OPEN SAVES THE DAY!

  16. ⽤用⼾戶端架構 WebSocket MsgPack UI 元件控制 外觀 / 動畫 / 事件...

    Audio / Video Player 訊息解析 資源下載與管理 Timer
  17. ⽤用⼾戶端架構 WebSocket MsgPack UI 元件控制 外觀 / 動畫 / 事件...

    Audio / Video Player 訊息解析 資源下載與管理 Timer
  18. 最困難的是繪製 iOS:內建 UI 元素(UIKit)外 追加 GPUImage 處理需要 OpenGL Shader 運算的部份

    Android:LibGDX,第三⽅方 OpenGL ES 遊戲引擎 ⽂文件妥善,開發者有熱誠 .NET:SharpDX with Direct3D 9 為了 XP ⽀支援放棄 D3D11 可⽤用的資源 :(
  19. 使⽤用開源套件的問題 授權要對!!!(⾮非常重要) 參考⽩白名單:BSD / MIT / Apache2 / MS-PL 專案要對!!!(更加重要)

    ⽂文件很⿃鳥、程式碼很⿃鳥 Bug 解決狀況很⿃鳥、或跑起來很⿃鳥的情況下 要儘快 OUT 換另外⼀一個專案試試看
  20. 使⽤用開源套件的問題 2 ⼯工具有了,不知道怎麼寫 → 有的時候除了看⽂文件,也要下去看程式碼 任何專案都會有⾃自⼰己的 Bug → 丟去 StackOverflow

    問,或著⾃自⼒力救濟 翻閱引⽤用專案的原始碼經常可以解決問題
  21. 開源套件的管理 有很多⼈人實作了套件管理機制,避免升級套件要 更換原始碼的⿇麻煩 iOS:CocoaPods(需要 Ruby) Android:Maven .NET:NuGet(VS2012 附贈) 修改過專案的原始碼或專案沒上管理庫是主因

  22. 開源套件的管理 有很多⼈人實作了套件管理機制,避免升級套件要 更換原始碼的⿇麻煩 iOS:CocoaPods(需要 Ruby) Android:Maven .NET:NuGet(VS2012 附贈) 修改過專案的原始碼或專案沒上管理庫是主因 可是我們沒⽤用

  23. 開源套件的管理 有很多⼈人實作了套件管理機制,避免升級套件要 更換原始碼的⿇麻煩 iOS:CocoaPods(需要 Ruby) Android:Maven .NET:NuGet(VS2012 附贈) 修改過專案的原始碼或專案沒上管理庫是主因 可是我們沒⽤用

    我們還是沒⽤用
  24. 開源套件的管理 有很多⼈人實作了套件管理機制,避免升級套件要 更換原始碼的⿇麻煩 iOS:CocoaPods(需要 Ruby) Android:Maven .NET:NuGet(VS2012 附贈) 修改過專案的原始碼或專案沒上管理庫是主因 可是我們沒⽤用

    我們還是沒⽤用 這個有⽤用⼀一點
  25. 遊戲上通常會遇到的問題 多執⾏行序(a.k.a. 程式當掉 or 亂加 Lock 到死) e.x. Direct3D 9

    的 Device 預設為⾮非 Thread-Safe Deadlock 在某些平台⼜又很難 Debug → 請在腦袋清醒下做好同步處理機制 資源管理 Android App 退出 / 切換 / 鎖定螢幕後回來?(必要狀況下重建,LibGDX 會處理其中很多細節) Windows 視窗縮放怎麼辦?(GetDeviceStatus -> Effect.onLostDevice -> Device.Reset -> Effect.onResetDevice) Texture / ⽂文字繪製 / 記憶體管理 → 清楚了解 Framework 的⾏行為後好好寫
  26. None
  27. 作功課

  28. FEEDBACK? 對 LibGDX 以 Freetype 作⽂文字繪製的 Patch https://github.com/libgdx/libgdx/pull/263 但是我們太忙,所以沒有善終...... Still,

    We ὑ Open!
  29. 感謝清單 iOS Android .NET AFNetworking SocketRocket GPUImage LibGDX AutobahnAndroid Titanium

    / V8(未實⽤用) ActionBarSherlock SharpDX Websocket-sharp NAudio ClearScript / V8 Thanks for listening!!