owned this note changed a year ago
Linked with GitHub

復活一個 Browser Game - Unlight 開源事件 - 蒼時弦也

由於場地問題,第二天我們移動到另一棟大樓啦!議程教室變動請見網站上的議程表

歡迎來到 https://hackmd.io/@coscup/2019 共筆

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

點擊本頁上方的 開始用 Markdown 一起寫筆記!
手機版請點選上方 按鈕展開議程列表。

請從這裡開始

遊戲網址:https://unlight.app/

噗浪: https://www.plurk.com/unlightapp
粉絲專頁:https://www.facebook.com/OpenUnlight/
【已知Bug】Bug清單
簡報:https://speakerdeck.com/elct9620/2019-coscup-fu-huo-ge-browser-game-unlight-kai-yuan-shi-jian

專案開源的時間大概8月初,到現在大概兩個禮拜。

  1. 了解 micro service

裡面大概有五到六種不同的service彼此互相溝通。

  1. 日本遊戲產業發達

遊戲業真是一個血汗的地方,所以就跑去做web。

Ruby + ActionScript 3 <- 被 賈伯斯 判死的東西
Flash <- 自從賈伯斯讓他死掉後,所有人都要他死掉

不意外,只要是來自日本,幾乎都會是ruby。
它是 Ruby 但不是 Ruby on Rails。工程師在沒有框架的情況下自己搞出來。

工程師沒有用 IDE 直接寫 ActionScript。

Adobe Flash IDE is unavailable。
你在外面找不到一個會動的 flash IDE。
官方一開始忘記把src檔案放出來。
例如 mxmlc src/Unlight.mxml

它寫了一個 script 把這個語言所有的對話用到的文字找出來,就知道只需要把這些unicode的font內嵌。

使用 Flex SDK 3.0 編譯前端。

整個專案的重建就是和遺失檔案奮鬥的過程。

compiler 太麻煩了,用 Docker 打包起來

它每次 compile 都一定會把你的 source code 弄髒。

它有很多個語言,中文版只需要 compile 中文的東西。所以它又寫了一個 script 把檔案名稱改掉。然後 git 就會告訴你檔案髒掉了。

為了自訂伺服器需求,寫了三個 compose 檔案

我 server 跑起來,client 跑起來,然後很高興的跑起來。就登入失敗。因為 as3crypto 版本錯誤。

Unlight 使用 Secure Remote Password 協定加密。但是和現行標準(RFC)不太一致。
RFC是server把salt之類的各種東西給client,才開始算public key。
論文則沒有要求這件事。
Unlight 的實作是論文實作不是RFC實作。

「為什麼我的帳號被別人登入了?」因為我從來沒有檢查過密碼。

好朋友 Poka 贊助了一台伺服器 -> 有 24 GB Ram。

發現 24 GB Ram 給 500 人居然卡住。

單一 SQL Query 跑 0.2 sec <- 同樣的 query 跑太多次,對於遊戲來說會讓玩家覺得慢

它真的沒上 index !!!

SELECT * FROM card_inventories WHERE chara_card_deck = ....

加了 index 後速度快 100 倍 <- 有人說:「當初遊戲公司會倒掉,是不是因為這個原因」
現在可以給千人遊玩了。可能可以到三千。

有些 table 資料成長速度飛快,一週 10M ~ 20M rows

How to Hosting?
加上 Amazon Cloudwatch 監控。

就有玩家問一個問題。以前遊戲有課金商店,那我可不可以課金?

  • 沒有接金流
  • 另外開 api 去做課金商店,直接用 rack 寫。

SmartLook <- 錄製 user 的畫面協助 debug

以後會整理看看正常狀況要花多少錢。
我們現在是不正常狀況,像是有人家裡有閒置 server。

目前主要與原版相比的更動:TCP socket -> WebSocket
不過要 javascript 固定 packet size 語法很難懂
索性用 Golang 寫客戶端 websocket。

你可以學到如何用 Ruby 學習 C 的思考。

現在遊戲裡面是無差別課金格鬥。
畢竟是女性向收集角色遊戲,課金第一名是冥府的印章。

tags: COSCUP2019 Ruby
Select a repo