# DreeWar.io
哈嘍各位安安,我是睿ヽ(•ω•ゞ)
歡迎來觀看由睿開發ㄉ**多人線上即時卡牌戰爭遊戲**
這是一款結合卡牌 即時對戰 佔領 建築 謀策 的對稱性戰爭遊戲
-------------------
## **遊戲背景**
夢都大陸,一塊充滿夢想與無限可能性的大陸!
一直以來,這塊地上有兩個勢力不斷的在爭奪這裡主宰,也就是紅派與藍派
他們利用這裡出產的BP建築堅固的堡壘,利用魔法MP向對方發起了魔法攻擊,為了是佔領這款大陸的中央 世界之樹
世界之樹旁有四座大樹守護者 噴蛙
噴蛙會阻止任何人佔領這塊地!
與你的夥伴巧妙運用每一張手牌,不論是蓋起防禦工事還是施展魔法,將敵人逐出這塊地吧!
----------
## **遊戲玩法**
### **概述**
遊戲分成兩隊,遊戲的目標是佔領地圖中央的世界之樹獲得積分以贏得勝利,你也可以利用樹旁的噴蛙來對佔領方進行反制,遊戲中你能夠打出手牌來發動技能或建築有利工事
### **操作**
以下操作皆為默認設定
**WSAD**前後左右移動
**滾輪**更改欲施放的牌組
滑鼠**左鍵**施放牌組
滑鼠**右鍵**開啟表情介面,將鼠標移至上頭並放開右鍵施放表情
**Tab**顯示玩家列表
### **建築**
**世界之樹**(位於地圖中央)
遊戲的核心目標,佔領後可以為自己隊伍加分
佔領時間為5秒

**噴蛙**(共四個,圍繞在世界之樹旁)
佔領後,可以對世界之樹內部的敵方守軍產生打擊
每秒向世界樹散彈打出2顆傷害5點的蛙彈
佔領時間為3秒

**隊伍重生點**(藍隊點位於最左方 紅隊點位於最右方)
玩家死後重生之地,各自駐紮有兩個砲台防禦 ,砲台無敵,攻擊為40血量

**遊戲目標是佔領世界之樹,每隔1秒加1分
300分即勝利**
### **屬性**
遊戲中玩家有三種屬性點數
* BP
* BP能用來興建建築
* 最大值:3
* 回復速度:基礎回復速度x花園數量x0.8(獲得一點)
* MP
* MP能用魔法攻擊使用
* 最大值:10
* 回復速度:基礎回復速度x花園數量x蜜蜂園數量x0.8(獲得一點)
* 生命值HP
* 生命值代表玩家血量,一旦歸零則玩家死亡回到原點!
* 最大值:100
### **卡牌**
整個遊戲從攻擊到建築都是圍繞著卡牌,遊戲中你會獲得四張完全隨機的卡牌.
透過消耗MP或者BP來進行施放,遊戲中有三種種類的卡牌
* **建築牌組**
* 消耗BP以施放,能夠用來興建建築來給我方提供更大的優勢,目前共有五大建築牌
|**名稱**|蜂之園|磚牆|砲台|花園|工蜂哨|
|--------| -------- | -------- | -------- | -------- | -------- |
|消耗|3|1|2|3|3|
|功能|能加速生成BP產量!每多一個蜜蜂園能使生產時間減少20%|能夠阻擋子彈或者是技能攻擊(不論敵我)|能夠遠程攻擊附近的敵人|能加速生成MP產量!每多一個花園能使生產時間減少20%|在附近的玩家(不論敵我)能回復每秒0.5點的血量|
|血量|20|100|50|20|50|
|其他|||傷害:10射速為三秒一發|||
|卡牌|||||
|
* **普攻牌組**
| 普通攻擊 |
| -------- |
|消耗1點MP以打擊出一個砲彈<br>能對命中的敵人造成20點的傷害<br>砲彈移動速度是16<br>砲彈的移動距離是80<br>最左方的手牌永久常駐為普攻牌|
||
* **技能牌組**
* 消耗MP以施放,技能牌組能用來提供攻擊、防禦、Buff加成、迷幻敵人等等的效果!目前遊戲中有三種種族**狂戰族**、**輕靈族**、**術靈族**,各種種族有各自完全獨立的技能牌組,有關於各種族的特色,詳情請見下方
### **種族**
技能部分又下分三種門派 每種門派有各自的技能牌 以及普攻牌
* **狂戰族**
狂暴猛衝一直以來都是狂暴族的最佳寫照!左拿狂酒右舉雙刀,手起刀落!
對於剛入門的玩家來說比較推薦,能夠單打獨鬥也能夠團隊行動
移動速度15
基礎傷害20
* **輕靈族**
輕功在下,輕弓在上,輕靈族本身擁有較高的移動速度與機動性和較高的傷害值,但是其操控難度較高!
移動速度20
基礎傷害20
* **術靈族**
術魂之間,能夠讓敵人陷入無境,讓我方全體昇華,主要用於多體強化或傷害,主要常在團戰中出現
移動速度16
基礎傷害20
#### **狂戰士牌組**
| **狂暴** | **地裂** | 猛擒 |
| -------- | -------- | -------- |
| 能提高自身傷害並減慢附近敵人的移動速度|打出一道地上斷層攻擊敵人,受攻擊玩家會有極短暫的無法移動|飛撲向最近的玩家(無距離限制),並使得他受到大幅傷害並提升我方攻擊,不過移動速度會減慢|
| |||
### **設置**
面對不同操縱習慣的玩家,遊戲能自訂義你所擅長的操作方式
也能自訂義鍵位
目前牌組施放有兩種方式進行施放
1. QE更換卡牌 Space施放
2. QERF對應四張卡牌,點擊直接施放
你可以根據你的需求進行設定喔
-------------------
## **遊戲技術**
### **遊戲開源**
https://github.com/SR0725/DreeWar.Io
### **命令集**
在遊戲中你能在聊天欄輸入指令來控制遊戲局勢
指令的前綴詞為/
你必須是管理員才能使用指令
成為管理員的指令是/login dreamcity(這串密碼請勿外流)
**常用指令集**
* /start
* 開始遊戲
* /gamerule gameStartingJoin true/false
* 玩家是否可以再遊戲開始後進入遊戲?
* /gamerule friendlyFire true/false
* 是否開啟同隊傷害?
* /data get [id] [index]
* 獲取特定玩家資料([index]為空表示獲取全部資料,[id]為@a則代表所有人)
* /data set [id] [index] [value]
* 設定特定玩家資料([index]不得為空,[id]為@a則代表所有人)
* [index]參數如下(*表示該參數為唯讀)
* id : 前端辨識用ID 與指令用的[id]無關 如果你不知道你在做什麼,請勿變更
* name : 玩家名稱
* health : 玩家生命
* team : 玩家隊伍
* mp : 玩家魔力值
* speed : 玩家速度
* damage: 玩家傷害
----唯獨----
* *x : 玩家x軸座標(目前x座標更動是沒有用的)
* *y : 玩家y軸座標(目前y座標更動是沒有用的)
* *motion_x : 玩家x軸向量(目前x向量更動是沒有用的)
* *motion_y : 玩家y軸向量(目前y向量更動是沒有用的)
* *flip : 玩家是否看著右方(更動此值無作用)
* *animation : 玩家當前顯示的動畫 0表示靜止 1為移動 2為施放技能
* /gameval set [index] [value]
* 調整遊戲參數
* [index]
* mpBasicRegVal 初始mp回復速度
* bpBasicRegVal 初始bp回復速度
* /gameval get [index] [value]
* 調整遊戲參數
* [index]
* mpBasicRegVal 初始mp回復速度
* bpBasicRegVal 初始bp回復速度
* /passwordchange [password]
* 更改管理員密碼
* /oplist
* 查詢管理員名單
### **程式參數說明**
對於有興趣修改我開發的程式者,你可以研究以下參數來幫助你更好的製作遊戲
遊戲開發上
後端採用NodeJs,使用Socket.Io通訊
前端則是Bootstrap框架
遊戲中以JSON來進行數據傳輸,主要傳輸五大數據
**PlayerData**
* 主要紀錄每個人的完整玩家資料(各資料說明)
每個Tick(20ms)伺服端會傳輸一次到客戶端
客戶端會回傳他個人的x y motion_x motion_y flip animation
* SocketId(該玩家的SocketID 也是後端辨識用ID,由於指令系統是後端再做處理,所以指令系統指定玩家的[ID]辨識用此SocketId)
* id
* 前端辨識用ID,主要是前端辨識用(不過後端也是會使用前端ID處理的),如果更動可能會導致該玩家資料作廢
同時使用前端跟後端可能會導致開發者困惑,基本上如果該數據是純後端處理則是使用後端ID,如果是純前端或者資料來於前端便是使用前端ID
* name
* 玩家名稱
* health
* 玩家血量 初始值為100
* team
* 玩家隊伍 1為藍隊 2為紅隊
* mp
* 魔力值 初始值為10
* bp
* 建築點數 初始值為3
* speed
* 玩家X軸動量
* damage
* 玩家傷害 初始值為20
* x
* 玩家X座標 *客戶端計算 伺服端僅作外掛測試
* y
* 玩家Y座標 *客戶端計算 伺服端僅作外掛測試
* motion_x
* 玩家X軸動量 *客戶端計算
* motion_y
* 玩家X軸動量 *客戶端計算
* flip
* 玩家圖片是否翻轉(玩家向左邊走時翻轉) *客戶端計算
* animation
* 玩家當前動畫 *客戶端計算
**SkillData**
* 主要傳輸玩家的**技能物件**也就是會有實際形體的存在,可以進行移動或者傷害
* 每個Tick(20ms)伺服端會傳輸一次到客戶端
* id
* 施放者的前端id
* name
* 施放者的遊戲名稱
* x
* 該技能的施放位置x
* y
* 該技能的施放位置y
* motion_x
* 該技能的移動向量x
* motion_y
* 該技能的移動向量y
* team
* 施放者隊伍
* skill
* 技能的類型
* race
* 技能的種族
* damage
* 技能的傷害
* time
* 技能生命(距離施放已經過了多久)
* maintime
* 技能壽命(施放多久後會被刪除)
**EffectData**
* 主要傳輸玩家的**效果物件**不會有實際形體,但會有效果的UI顯示,不可以進行移動
施放當下由伺服端傳輸一次
* id
* 施放者的前端id
* name
* 施放者的遊戲名稱
* team
* 施放者隊伍
* x
* 效果施放位置x
* y
* 效果施放位置y
* effected
* 施加隊伍 or 人(如果是1或者2代表針對隊伍 如果是後端ID代表是單名玩家)
* distance
* 效果有效距離(單位是PX)
* type
* 效果
* 1傷害加乘
* 2移動速度加乘
* 3立即傷害
* 4立即治療
* level
* 強度(如果是0.8則代表該玩家屬性乘上0.8)
* time
* 效果生命(距離施放已經過了多久)
* maintime
* 效果壽命(施放多久後會被刪除)
**ParticleData**
* 主要傳輸玩家的**粒子物件**會有實際形體,不可以進行移動(也就是純粹顯示在遊戲中)
施放當下由伺服端傳輸一次
* particle
* 粒子效果類別
* 0是普通攻擊效果
* 1是爆炸效果
* 2是建築破壞粒子效果
* 3地板裂開的效果
* xy是種族x技能y施放粒子(xy數值為11~99)
* 101 是建築範圍施展效果(400m)
* 101 是建築範圍施展效果(800m)
* x
* 粒子的X軸
* y
* 粒子的Y軸
* time
* 粒子生命(距離施放已經過了多久)
* maintime
* 粒子壽命(施放多久後會被刪除)
**BuildingData**
* 主要傳輸玩家的**粒子物件**會有實際形體,不可以進行移動(也就是純粹顯示在遊戲中)
建築當下或建築受or建築被破壞各由伺服端傳輸一次
* name
* 施放者玩家名稱
* type
* 建築類別
1. 蜂之園
2. 磚牆
3. 食蝕獸
4. 花園
5. 工蜂哨
* health
* 建築血量 初始值為100
* team
* 建築所屬隊伍 1為藍隊 2為紅隊
* x
* 建築X座標
* y
* 建築Y座標