过年这段时间,无聊就开始练习作游戏开发,因为经验不足,并且本身规定限制在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//游戏逻辑的处理