一個遊戲專案的誕生
🎲 這是我的第一篇文章,記錄一下開發遊戲心路歷程~
前言#
不知道大家小時候有沒有設計遊戲的想法,還記得小學的一堂課,老師讓我們設計一個桌遊,那時候應該還沒有這個名詞 XD,我設計了大富翁結合炸彈超人的遊戲,因為那時候很流行爆爆王,自己也非常迷,於是做了大富翁地圖、道具、卡片等等,同學們玩過之後評價還不錯,所以我當時就在想,等我有能力的時候一定要把這個遊戲做出來,放在網路上,這個想法一直在我腦海裡,而現在我有能力把它實現。
開發工具#
俗話說:「工欲善其事,必先利其器」,要開發一個網站或是應用程式,決定開發工具是很重要的,本身我是前端工程師,所以先以開發網站為主,前端選擇使用 React,後端就是一個困難的選擇,畢竟不是自己擅長的領域。
一開始嘗試著用 Node.js 開發,因為寫 javascript 比較上手,然後搭配 socket.io,開發起來很順利,不過我想要寫其他的後端語言,當時有 Java、C#、Python、Go 等等可以選,後來選擇了 Go,沒有什麼特別的原因,就只是想學而已。之後就開始看官網的範例、基本語法、部落格文章等等自學,東拼西湊總算有點樣子,成就感大爆發,這樣慢慢從零開始建置的感覺真不錯。
再來就是資料庫的部分,以前有碰過 MSSQL 但很淺,會基本的查詢語法增刪改查,考慮了 NoSQL 的 MongoDB,還有關聯式資料庫的 MySQL,最後選擇了 Postgres,因為找的教學範例是用這個資料庫 XD。
最後剛剛說到前端用 React 開發,考慮到未來上架的 SEO 問題,選擇使用 Next.js 也是使用 React 的 SSR 框架,採取前後端分離的方式,資料透過 API 來傳遞,之後如果要開發 App 那麼 WebAPI Server 就不用動,反正只要透過 API 接口來取得資料就可以。
製作設計圖#
因為是一人團隊所以什麼都要自己來 😭,繪圖的工具選擇 Adobe XD,因為它免費,然後使用起來還蠻簡單的,推 👍
首頁#

遊戲列表頁#

房間列表頁#

房間頁#

專案架構#
一個龐大的系統需要一個好的架構,而這個架構需要有易測試、易擴充、易維護的特性,前端使用 Redux 來做狀態管理,Component 透過 Action Creator 來決定執行哪一個 Action 並由 Reducer 修改 State,Component 再透過 Selector 讀取 Store 的值,這樣單向流的資料傳遞,可以清楚的知道每一個環節的定位,另外一個好處就是方便測試,這之後再來寫文章分享。
因為在公司接觸了 Clean Architecture 的架構,這個架構是 Clean Code 的作者提出來的, 越外層越容易改變,越內層越不可被變動,是架構的核心。
圖片來源: https://miro.medium.com/max/880/1*O4pMWCi5kZi20SNOR6V33Q.png
- Entity 結構體,例如:User 就會有 ID 跟 Name 等等屬性。
- UseCase 就是一個情境,例如:加入房間、離開房間等等。
- Presenter 或 Controller 層會決定使用哪個 UseCase 來回傳給最外層 View,而 API 或是 WebSocket 服務就是寫在這一層。
這樣的好處當然是易維護、易測試,還有比較好擴充,彼此的層級不影響彼此,比較詳細的架構介紹會放在之後的文章。
總結#
這是我的第一篇文章,寫得有點抖抖得 😂,來分享一下心得,這個專案已經開發一年多了,從一開始的摸索重構,無限循環到現在穩定的開發,所以我決定要開始記錄每一次的開發過程以及遇到的坑,還有一些好用工具的分享,為了讓專案順利的進行開發,使用了 Trello 專案管理工具,把每一個階段的要做的事情列出來,怕自己會忘記還有什麼還沒做,每天都進步一點,感謝讀完這篇文章,在我寫扣卡住的時候就會上來寫文章紓壓一下,更新的越頻繁就表示又卡關了。