關於 web service, unity, blogger 等軟體工程筆記

台北開發者論壇 (TGDF 2017, Taipei Game Developers Forum) 會後感想雜談

Edit icon 沒有留言
台北開發者論壇 2017,  Taipei Game Developers Forum

想要從論壇中獲得些什麼

這次是第一次參加台北遊戲開發者論壇,想看看論壇中到底有什麼,事前也沒有特別查看議程以及講者,就報名了這場遊戲論壇,結束後的反省是,應該要意識自己想從論壇中獲得些什麼,在報名前就應該先查清楚論壇的目標受眾是哪些人,想清楚想從議程中獲得些什麼,不然會像這次一樣,感覺沒有什麼很大的收穫呢。

隨著年紀增長,覺得自己越來越不熱衷玩遊戲了,且玩遊戲的過程中,也不會特別會想拆解遊戲的元素,或是看看遊戲中有什麼亮點,思考怎麼實作遊戲的功能,因此論壇的獨立開發者遊戲展示,Indle space,也只是在會場晃一圈逛逛,沒有花太多時間與注意力在裡頭。

這次參加論壇感覺比較是社交場,能與各式開發前輩交流經驗訊息,與之前 Unity 運用領域所認識的開發者交換議程心得,跟前同事聊聊天交換情報,到各個贊助商的公司攤位走走看看,與 HRs 聊天交換訊息,與論壇工作人員聊天談論八卦(原來贊助攤位不需要很高的預算),與其他遊戲開發者認識交流,大概是這樣吧。

雖然議程中有些能接觸平時不常接觸的設計資訊,能轉換腦袋裡頭的程式人思維,受到一些創意資訊的衝擊好似也不錯,但身為一位軟體工程師,沒有聽到能立即運用的技術場,還是會覺得有點失望。也許是會不經意會與前一天參與的 Gopher day 做比較吧,都是技術的程式語言論壇,技術萬歲!

以下紀錄這次比較有印象的議程筆記,不得不提到有些參與議程場次,不知道是講者表達能力的不足,還是內容本身就沒有什麼料,亦或是都是含糊帶過沒聽到最關鍵的內容,感覺實在是很糟糕啊。

台北開發者論壇手冊以及識別證

台北開發者論壇手冊以及識別證

專業遊戲測試跟你想的不一樣

原本期待的是可能是引入許多自動化測試,分享自動化測試的經驗等等,但聽完好像不是這樣,感覺應該是人工測試為主軸的經驗分享……。

這次沒有能 catch 到太多的重點,有點令人粗淺的帶過測試員的基本功:

  • 黑箱與白箱測試
  • 根據文件規格測試
  • 撰寫好的錯誤描述
  • 測試員的心態
    • 印象中這個關鍵字被提到許多

這議程印象最深的是 QA 時間,與會者很直白的問,如何在測試領域晉升,能夠領到美元薪水而不是新台幣,剛剛內容都沒有提及介紹。記得講者是含糊其辭,提到要提升基本功啦,改變測試心態啦等等。但最後有提到一個關鍵字,博弈業,有概念大概就知道是怎麼回事,台灣遊戲業目前 (2017年) 最有機會領高薪賺大錢的,莫過於是外資博弈業公司了,由於台灣人才便宜又好用,許多外資紛紛在台北設立研發辦公室,所以薪水實在是很敢開。

從零開始的遊戲開發框架

這場非常技術場,作者透過 Ruby 建置一個遊戲開發框架,分享在開發過程中遇到的種種困難,另如 C++ 與 Ruby 記憶體的管理等等。

但對於 Ruby 完全不熟悉,只能跳著了解看看而已,但最後是茫掉,進一步可參考作者分享的簡報

AWS 讓您專注於設計遊戲,而非營運遊戲

感覺是 AWS 官方宣傳場,相當新手向的議程,介紹 AWS 提供哪些雲端基礎工具以及功能,方便讓開發者在上頭架設遊戲伺服器。

  • Region 選擇:看目標遊戲客群
  • 流量負載平衡:Load balance
  • 遊戲資料存放:S3 storage
  • 內容傳遞網路:CDN, Couldfront
    • 安全性,保護資料伺服器
    • 支援 HTTPS 加密
    • 全球提供多個靠近使用者快取節點
  • 防火牆以及安全性:Security group & ALCs (Access Control Lists)
  • 應用程式防火牆:AWS Shield & WAF (Web application firewall)
    • 保護伺服器
    • 防止惡意流量處理 (DDoS)
  • 伺服器自動擴展 (Auto scale group)
    • 遊戲伺服器設計就要考慮,例如 Session 應該放哪裡…?
  • 快取服務:ElastiCache
    • Memcache & Redis
    • 迴避依賴資料庫交易的瓶頸,使用記憶體快取 (例如訂票系統的選位 Lock)
  • 大量遊戲資料分析:Metrics
    • EMR
    • Redshift
    • Athena
    • Mobile analytics (也許可以研究這個的 SDKs)
    • QuickSight (商業分析工具)

如何用 Google App Engine 一個人寫好遊戲 Server

分享者帶來如何使用 GAE (Google Application Engine) 以及其 Database 來架設遊戲伺服器,從分享者帶來的 Demo 看起來,似乎是相當簡單易用,不用特別像 AWS 要自己設定 EC2 以及部署服務程式。也許小遊戲的伺服器很適合直接架在 GAE,而不用自己客製化,建置管理整個服務系統。

特別注意到 GAE 可以使用 Golang 來開發呢,這應該要找時間註冊 Google Cloud Platform 來嘗試看看。

遊戲軟體工程師生存守則

這場議程聽完,自己認為就是強調一個重點:軟體工程師必須持續學習新知識。我想這是在這資訊時代,是人人必須必備的特質之一啊,科技進步十分快速,唯有不斷學習才有可能跟上這個時代。

當然也有提到一些程式設計的應該要注意的事項,例如最重要組件 (components) 的相依性問題 (dependency problem),在一個良好設計的系統中,組件間的相互依賴不應該像是義大利麵條那樣,互相交纏在一起,我依賴你,你依賴我。想辦法降低耦合性 (coupling) 就對了!

為了達到上述的目的,就得知道什麼是介面 (interface) 與實作 (interface),如何將函數實作抽象化 (abstraction),不再只是單純程式設計實作,而是設計介面 (programming to interface)。然後就會重新了解物件導向程式設計 (object oriented programming)函數式程式設計 (functional programming) 等等⋯⋯。

為了處理優化問題,便會開始重新了解資訊工程的背景知識,例如 GC (Garbage collection) 機制,什麼是 Heap,什麼是 Boxing,什麼是 Stack,什麼是 Value type,什麼是 Reference type 等等,不管是從書籍抑或是網站資訊,甚至是工作前輩,還是社群開發者介紹,永遠停止不了學習。

軟體工程師,永遠都在發現新知,享受這充滿混亂的這條路吧。

相關資源

沒有留言: