---
# System prepended metadata

title: 可水平擴展之遊戲伺服器框架
tags: [Go, Diagram, Framework]

---

---
title: 可水平擴展之遊戲伺服器框架
tags: Framework,Diagram,Go
description: 以Golang開發附載平衡之模組化遊戲伺服器框架
---

# 可水平擴展之遊戲伺服器框架概念



---

此篇文章為遊戲後端框架設計之解說

---

## 關於作者

<!-- Put the link to this slide here so people can follow -->
- Author Github: https://github.com/z9905080
- Author Name: Shouting
- Back-end developer
- Program Leaguage: golang
- IDE:Goland

---

## 架構組織圖


![](https://i.imgur.com/7ABfIPm.png)

---

### 整體後端系統架構

- 使用相關技術：
    - MySQL
    - CDN
    - Load Balance
    - MongoDB
    - MySQL
    - Redis Cluster
    - InfluxDB+Grafana
    - Golang
    - WebSocket/Tcp
- 使用相關概念：
    - 服務容器化
    - 訂閱者模式
    - 模組化程式設計
- 可水平擴展之服務：
    - Game Service
    - GRPC Service
    - GameLogic Service

![](https://i.imgur.com/LzYXMhZ.png)


---

### 對戰類型遊戲設計

- Game Logic為各遊戲模組(可水平擴展)
- Match Logic為配桌模組(可水平擴展)
- Bot Logic為機器人陪打模組(可水平擴展)
- 玩家登入後進行遊戲配桌，並至指定的Game底下開始執行遊戲，若開啟機器人陪打
    則機器人模組也會從配桌模組中加入至遊戲模組進行遊戲

![](https://i.imgur.com/tNyStZ9.png)

---

### 流程類型遊戲設計

- Game Logic為遊戲核心(單一執行)
- CMD Logic為指令模組，將指令傳遞至Game Logic進行控制
- Game Logic將流程發布至Redis/NSQ等消息隊列的Server，
    Game Service則訂閱指定的Topic來處理時程上傳遞過來的Event
    玩家進行遊戲只需在Game Service接收Event並遊玩
![](https://i.imgur.com/xAz1wWc.png)


