過年這段時間,無聊就開始練習作遊戲開發,因爲經驗不足,並且本身規定限制在20天以內完成,所以只能瞎子摸象,一步步摸索。沒有遊戲代碼樣本、沒有H5遊戲經驗、沒有前端開發知識。前端
練習目標:作個棋牌遊戲玩玩。python
1:選擇遊戲引擎,這個開源的有不少選擇,好比egret、Phaser、cocos2d-JS、layaair等,能夠根據本身的選擇,我這裏選擇layaair,開發語言是typescript。web
2:遊戲服務器,H5遊戲通常用websocket作主要的協議,能夠的話在websocket中用protobuf協議來和服務器通訊,我這裏選擇了python作服務器。typescript
先說明一下,涉及到了網絡傳輸和數據庫等操做,python不會比其餘語言慢,由於服務器不是用來密集型計算的,而是在於IO,服務器主要耗時在於讀寫數據庫和網絡傳輸。此外目前python在手遊中作爲服務器的比例愈來愈高。數據庫
遊戲服務器設計:服務器
遊戲服務器 table,play類等:websocket
table類主要屬性包含:網絡
tableCase#目前房間狀態,空閒 搶莊,準備,投注,結算等等 tablePlays#遊戲玩家 tableZhuangjia#莊家 tableforbiddener#黑名單 tableRoomer #房主 tableModel #房間模式 ,搶莊或者指定莊家 tableroomCard#當前牌桌的總局數,超過局數就結束 tableCurrent#當前牌局的局數 .........................#等等 tableMaxpeople#房間最大人數
table類主要方法包含:socket
def currentTablecase()#當前桌的遊戲狀態 def rwqueue()#當前讀寫隊列 def exeEvent()#服務器間隔10幀執行的隊列 def register(self, newer)#當前牌桌加入新成員 def createRoomIni(self,user,message):#遊戲玩家建立房間初始化參數設置等等 def ready(self,user):#玩家準備 def qiangzhuang(self,user):#玩家搶莊 def getzHuangjia(self,user): #獲得當前牌桌的莊家 ..........................#等等 def putQueue()#隊列,客戶端發送的數據保存在table的隊列
等等,還有不少的方法不一一列舉了,動畫
play類主要屬性包含有:
userId,username,token#等等 LastRequestDate#上次請求時間 NetBroken#網絡中斷時間,是否重連 selfcase #當前玩家空閒 搶莊,準備,投注,結算等狀態 touzhuData#投注數據等等 ..........................#等等 socre#玩家分數
等等,還有不少的屬性不一一列舉了,
客戶端的設置:包含界面、動畫、緩動、濾鏡等動畫。
1:server.ts//主要是處理鏈接服務器,接受等處理
2:sound.ts//聲音的播放處理
3:tween://主要是一些元素的緩動處理
4:ani//一些動畫的播放處理
5:work.ts//遊戲邏輯的處理