[Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

时间:2022-12-20 18:32:21

源地址:http://bbs.9miao.com/thread-44603-1-1.html

在此补充一下Socket的验证机制:
socket登陆验证。会采用session会话超时的机制
做心跳接口验证
保持一个长连接
也为推送消息提供

======这段是一个以前同事给我的JAVA Socket验证机制的例子===========
socket通信一般是找不到头这些的,要自定义封装通信消息类
如开源框架netty,消息进出都有自定义加密和选择性压缩的
socket不想http一样能找到某个方法,他就监听ip的某个端口
通过解析消息类中的主题方法,抽象接口实现的

消息接收:
<ignore_js_op>

[Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

其他图就不上了,主要是一个概念的普及
===================================================

前言:
        如果你有仔细分析学习笔记一中的代码,那么相信你对python以及Firefly已经有了一个大致的认识,那么剩余的不认识的也就没关系了,官方提供了开发手册,所以就不逐步深入出笔记了,该有的,会有人发的。

开始准备工作:
        【目标】
        现在,我们的目标是一个卡牌游戏,我选择了传统的斗地主来进行开发。
        
        【开发前的准备】
        任何一款游戏都会有策划书的,策划书我们就免了,因为斗地主谁都会,而且也有前辈的开源作品,所以我们的准备工作是,清楚斗地主的游戏规则,和程序的实现方案。
        于是,翻了翻互联网资料,找到一个参考资料:
        http://blog.csdn.net/cq361106306/article/details/7855582
        
        虽然是JAVA版的,但是原理都是一样的,函数也差不多一样的,不一样的只是内置函数的写法和语法规范而已,要看懂肯定是没有问题的

【服务器架构】
        首先,我们需要一个LoginServer,这是毋庸置疑的事情
        然后,我们需要一个游戏主服务器mainGameServer
        (也许,你会需要一个排行服务器)
        最后,我们则需要一个聊天服务器chatServer(既然是网游,没有聊天系统不等于单机么?)
        本身这个游戏不复杂,所以我们就这样设定吧。

【服务器架构图】
       <ignore_js_op>

[Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

题外话:不知道大家有没有做过私服,出名的如传奇,诛仙,QQ西游私服。里面的结构大概也是如此,不说它到底是有用还是无用,存在即是合理。这点,在我还是小白的时候就深以为然,以前老听人家说GS报错,GS未启动,感觉好牛X好高端的样子,后来渐渐明白,其实就是GameServer。[Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

好了,言归正传,既然架构图有了,游戏方案也有了,那么下一步就是数据建模了,数据结构一定要做好,因为这跟你服务器的性能和扩展息息相关。
        在这里我用的工具是PowerDesigner这款软件进行建模,方便又实用,易管理,易查询[Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计 
        首先我们确定几个核心的表
        User
        -----userMain   用户主表,存放用户账号,密码,余额等重要信息  表类型:InnoDB,这么重要的表,你肯定要支持事务回滚来着。
        -----userBase        用户基础表,存放一些只做查询用的字段,如头像,个人简介
        Log
        -----loginLog        用户登陆日志
        -----actionLog        用户操作日志
        -----rfloat                用户资金流水
        -----gameLog        游戏记录日志
        Main //暂时只有两个,因为业务逻辑暂时不忙管,只管游戏
        -----sysMsg        系统消息表
        -----        userMsg        用户消息表//暂时弃用,因为还不涉及到用户短信,至于为什么要和系统消息分开,是因为消息表数据庞大
        ============================持续更新============================
        度过了一个愉快的周末,继续更新
        贴上数据模型的代码以及数据库模型文件
       <ignore_js_op>

[Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

<ignore_js_op>

[Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

<ignore_js_op>

[Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
游客,如果您要查看本帖隐藏内容请回复

库建设完毕,现在开始一些基本模块的封装,在这里说一点,不是所有的模块都需要封装,看需求和维护而定,我个人需要封装是因为我封装后能让我开发效率提高,每个人情况不一样,底子也不一样,根据自身情况来。
        
        在这里我把每个模块及其包含的内容列出来(持续更新):

模块名 方法名 方法说明
用户基础模块
userModel
userLogin 用于用户登陆时的方法
regUser 注册用户的方法
loginCheck 检查用户登陆状态的方法
heartCheck 用户心跳检测的方法
fundsCheck 检查资金是否异常的方法
loginUpdate 登陆时更新用户登陆记录并写日志的方法
sendSysMsg 发送系统消息的方法
sendUserMsg 发送用户消息的方法
readSysMsg 读取系统消息并更新状态的方法
readUserMsg 读取用户消息并更新状态的方法
userTalk 用户在游戏中发言的方法
(这里我考虑是像QQ斗地主一样固定发言防止作弊,
还是不限制用户发言,个人觉得防作弊好一点)
日志模块
logModel
sysLog 系统日志的方法(保存log日志的方法)
userLoginLog 用户写登陆日志的方法
userActionLog 用户写操作日志的方法
gameResultLog 游戏结果日志的方法
rfloatLog 写资金流水的方法
游戏主模块
gameMainModel
showUserCount 在线用户统计的方法
pushMessage 推送消息的方法
joinGameQueue 加入游戏队列的方法
gameMatching 匹配玩家并生成游戏空间,随机用户顺序的方法
shufflingLicensing 洗牌发牌的方法,并整理排序
grabLandlord 抢地主的方法
landlordCards 地主牌分发及公示的方法
showCards 出牌的方法
doubledFunds 炸弹倍数翻倍计算的方法
cardAlarm 报警的方法
settleAccounts 结算并将用户清除队列的方法
系统模块
sysModel
mysqlObject 数据库模块,具体方法不再罗列,这里采取封装主从库
memcacheEx memcached封装的模块,用于分布式集群

好了,关于学习笔记二卡牌游戏开发模型的设计就告一段落了,学习笔记三将开始对各个模块进行逐个封装。现在模型有了,开发思路就越发的清晰,当模块封装完毕之后,就是服务器端的开发了,我们一步步走,不一口气吃成一个胖子,所以,学习笔记三将持续很长一段时间逐个更新,因为毕竟我只有晚上才有时间去鼓捣,所以耐心等待吧,我没有已有代码参考,不能复制粘贴,所以速度会稍微慢一点
        另外,诚请一枚AS攻城狮帮我完成笔记,有意思的圣兽请联系我QQ:251920948,跪谢[Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

[Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计的更多相关文章

  1. &lbrack;Firefly引擎&rsqb;&lbrack;学习笔记一&rsqb;&lbrack;已完结&rsqb;带用户验证的聊天室

    原地址:http://bbs.9miao.com/thread-44571-1-1.html 前言:早在群里看到大鸡蛋分享他们团队的Firefly引擎,但一直没有时间去仔细看看,恰好最近需要开发一个棋 ...

  2. &lbrack;Firefly引擎&rsqb;&lbrack;学习笔记四&rsqb;&lbrack;已完结&rsqb;服务器端与客户端的通讯

    原地址:http://www.9miao.com/question-15-54981.html 传送门:学习笔记一学习笔记二学习笔记三 前言:学习笔记三是模块封装,这个在持续开发中会不断更新, 因为写 ...

  3. &lbrack;Firefly引擎&rsqb;&lbrack;学习笔记三&rsqb;&lbrack;已完结&rsqb;所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  4. JavaScript权威设计--jQuery&comma;Ajax&period;animate&comma;SVG&lpar;简要学习笔记二十&rpar;&lbrack;完结篇&rsqb;

    1.$和jquery在全局命名空间中定义的唯一两个变量.   2.jquery是工厂函数,不是构造函数.他返回一个新创建的对象.   3.jquery的四种调用方式:     <1>传递C ...

  5. 吴裕雄--天生自然python学习笔记:python 用pygame模块游戏开发

    游戏开发在软件开发领域占据了非常重要的位直.游 戏开发需要用到的技术相当广泛,除了多媒体.图片.动 画的处理外,程序设计更是游戏开发的核心内容. Py game 是为了让 Python 能够进行游戏开 ...

  6. AJax 学习笔记二&lpar;onreadystatechange的作用&rpar;

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  7. java之jvm学习笔记二&lpar;类装载器的体系结构&rpar;

    java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...

  8. ES6学习笔记&lt&semi;二&gt&semi;arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

  9. muduo学习笔记&lpar;二&rpar;Reactor关键结构

    目录 muduo学习笔记(二)Reactor关键结构 Reactor简述 什么是Reactor Reactor模型的优缺点 poll简述 poll使用样例 muduo Reactor关键结构 Chan ...

随机推荐

  1. css3折叠效果

    在开发过程中,经常会遇到一些交互效果,今天所联系的便是一个类似折纸的折叠效果,查看效果. 说到折纸,我们先看下图 这是我第一时间想到的大体思路,如果能让这6个面连续的变化角度到0不就可以了吗,运用cs ...

  2. php webservice

    发请求客户端client.php <?php //需要到php.ini文件中打开extension=php_soap.dll try{ //wsdl方式调用web service //wsdl方 ...

  3. tab栏切换的特殊效果

    在实际的开发过程中,我们可能会遇到这种需求,如下图 左边是三个tab栏,右边是显示内容的div,当鼠标滑到坐标的tab上时,给它一个高亮显示,让它对应的内容在右边的div中显示出来,当鼠标移出的时候把 ...

  4. 如何使用ajax将json传入后台数据

    首先采用jquery内部封装好的方法是比较简单的,我们只需做的就是修改里面的一些配置: 对$.ajax()的解析: $.ajax({ type: "POST", //提交方式 co ...

  5. HTML5-布局的使用

    DIV布局: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...

  6. Moment&period;js 超棒Javascript日期处理类库

    Moment.js 不容错过的超棒Javascript日期处理类库 主要特性: 3.2kb超轻量级 独立类库,意味这你不需要倒入一堆js 日期处理支持UNIX 时间戳,String,指定格式的Date ...

  7. shell脚本编程-处理用户输入

    命令行参数 命令行参数:允许在运行脚本时向命令行添加数据值 如:$ ./addem 10 30 读取参数 bash shell会将一些称为位置参数的特殊变量分配给命令行输入的所有参数,甚至包括shel ...

  8. SharePoint咨询师之路:备份和恢复系列二 - 备份服务器场

    本系列包括: 备份服务器场和配置 备份web和服务应用程序 备份内容数据库 备份网站集 备份自定义项 根据“SharePoint咨询师之路:备份和恢复系列--制定备份计划”我们制定了一下备份计划如下: ...

  9. Mysql打开日志信息

    还可参考博客:http://pangge.blog.51cto.com/6013757/1319304 1)怎么查看mysql是否启用了日志 mysql>show variables like ...

  10. PHP学习笔记——PHP脚本和JAVA连接mysql数据库

    环境 开发包:appserv-win32-2.5.10 服务器:Apache2.2 数据库:phpMyAdmin 语言:php5,java 平台:windows 10 java驱动:mysql-con ...