[Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
转自: http://www.9miao.com/thread-44603-1-1.html
本帖最后由 ddd33 于 2013-11-25 13:09 编辑 学习笔记一传送门 在此补充一下Socket的验证机制: socket登陆验证。会采用session会话超时的机制 做心跳接口验证 保持一个长连接 也为推送消息提供 ======这段是一个以前同事给我的JAVA Socket验证机制的例子=========== socket通信一般是找不到头这些的,要自定义封装通信消息类 如开源框架netty,消息进出都有自定义加密和选择性压缩的 socket不想http一样能找到某个方法,他就监听ip的某个端口 通过解析消息类中的主题方法,抽象接口实现的 消息接收: <ignore_js_op> ![]() 其他图就不上了,主要是一个概念的普及 =================================================== 前言: 如果你有仔细分析学习笔记一中的代码,那么相信你对python以及Firefly已经有了一个大致的认识,那么剩余的不认识的也就没关系了,官方提供了开发手册,所以就不逐步深入出笔记了,该有的,会有人发的。 开始准备工作: 【目标】 现在,我们的目标是一个卡牌游戏,我选择了传统的斗地主来进行开发。 【开发前的准备】 任何一款游戏都会有策划书的,策划书我们就免了,因为斗地主谁都会,而且也有前辈的开源作品,所以我们的准备工作是,清楚斗地主的游戏规则,和程序的实现方案。 于是,翻了翻互联网资料,找到一个参考资料: http://blog.csdn.net/cq361106306/article/details/7855582 虽然是JAVA版的,但是原理都是一样的,函数也差不多一样的,不一样的只是内置函数的写法和语法规范而已,要看懂肯定是没有问题的 【服务器架构】 首先,我们需要一个LoginServer,这是毋庸置疑的事情 然后,我们需要一个游戏主服务器mainGameServer (也许,你会需要一个排行服务器) 最后,我们则需要一个聊天服务器chatServer(既然是网游,没有聊天系统不等于单机么?) 本身这个游戏不复杂,所以我们就这样设定吧。 【服务器架构图】 <ignore_js_op> ![]() 题外话:不知道大家有没有做过私服,出名的如传奇,诛仙,QQ西游私服。里面的结构大概也是如此,不说它到底是有用还是无用,存在即是合理。这点,在我还是小白的时候就深以为然,以前老听人家说GS报错,GS未启动,感觉好牛X好高端的样子,后来渐渐明白,其实就是GameServer。 ![]() 好了,言归正传,既然架构图有了,游戏方案也有了,那么下一步就是数据建模了,数据结构一定要做好,因为这跟你服务器的性能和扩展息息相关。 在这里我用的工具是PowerDesigner这款软件进行建模,方便又实用,易管理,易查询 ![]() 首先我们确定几个核心的表 User -----userMain 用户主表,存放用户账号,密码,余额等重要信息 表类型:InnoDB,这么重要的表,你肯定要支持事务回滚来着。 -----userBase 用户基础表,存放一些只做查询用的字段,如头像,个人简介 Log -----loginLog 用户登陆日志 -----actionLog 用户操作日志 -----rfloat 用户资金流水 -----gameLog 游戏记录日志 Main //暂时只有两个,因为业务逻辑暂时不忙管,只管游戏 -----sysMsg 系统消息表 ----- userMsg 用户消息表//暂时弃用,因为还不涉及到用户短信,至于为什么要和系统消息分开,是因为消息表数据庞大 ============================持续更新============================ 度过了一个愉快的周末,继续更新 贴上数据模型的代码以及数据库模型文件 <ignore_js_op> ![]() ![]() ![]() yuan6785,如果您要查看本帖隐藏内容请回复
库建设完毕,现在开始一些基本模块的封装,在这里说一点,不是所有的模块都需要封装,看需求和维护而定,我个人需要封装是因为我封装后能让我开发效率提高,每个人情况不一样,底子也不一样,根据自身情况来。 在这里我把每个模块及其包含的内容列出来(持续更新):
好了,关于学习笔记二卡牌游戏开发模型的设计就告一段落了,学习笔记三将开始对各个模块进行逐个封装。现在模型有了,开发思路就越发的清晰,当模块封装完毕之后,就是服务器端的开发了,我们一步步走,不一口气吃成一个胖子,所以,学习笔记三将持续很长一段时间逐个更新,因为毕竟我只有晚上才有时间去鼓捣,所以耐心等待吧,我没有已有代码参考,不能复制粘贴,所以速度会稍微慢一点 |