- 博客(24)
- 资源 (3)
- 收藏
- 关注

原创 游戏框架设计与重要模块详解
1:先做好最基础的框架:世界中心服务器:相当于一个总控制室,所有的服务都要连接器连接到中心服。各服务间通信,web的GM请求都要通过中心服。数据服务器:游戏服与数据库(mysql或者MongoDb)之间的一个纽带。数据的中转中心,读写与存储数据,同时缓解大数据下数据库的压力游戏服务器:主逻辑服务,包括玩家的上线,城建、运兵、战斗各种逻辑。主要的大系统一般使用C++来写,lua写各种比较...
2019-07-17 17:33:36
2406

原创 深入技术的理解
数据库八大优化:索引,合适属性字段,join,union,事物,锁表,外键,数据库语句优化C++与lua通信:C++与lua通过堆栈通信,c++调用lua,通过压栈数据,lua取到数据进行运算,再把数据返回栈顶,c++再通过api调用栈顶数据。lua调用c++,c先编写函数,再注册到lua的解释器里面,lua在table里面通过全局变量调用c++函数线程间生产者消费者模式:生产者消费者模式间主要利...
2018-06-04 17:52:35
314

原创 检测内存泄漏的方法
重载new和delete来检测内存泄漏1. 简述 内存泄漏属于资源泄漏的一种,百度百科将内存泄漏分为四种:常发性内存泄漏、偶发性内存泄漏、一次性内存泄漏和隐式内存泄漏。 常发性指:内存泄漏的代码会被多次执行到。偶发性指:内存泄漏的代码只有在特定的条件下才会执行到。一次性指:内存泄漏的代码只会被执行到一次。隐式指:程序在运行中不断的开辟内存,知道程序结束时才释放内存,本质上虽然没有内存泄...
2018-05-16 12:44:31
2328

原创 linux进程间通信-内存共享
一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到
2017-11-07 16:33:32
186

原创 服务器主逻辑行列
LogicDef.h 定义了功能系统的系统IDLogicServerCmd.h 定义了与客户端通讯的消息协议。实体对象处理消息函数:CAnimal::ProcessEntityMsg(const CEntityMsg &msg)服务器启动 CLogicServer::StartServer()
2017-07-03 11:53:40
268

原创 搭建游戏服务器的问题笔记
1:FTBserver进行数据的传输,FTP服务器可以设置匿名登录或者账号登录,8uftp。需要服务器然后客户端连接2 : 数据库的建立注意不要占用接口,一般使用3306,在连接其它机器数据库的时候注意不要开着防火墙3:APMServer服务器,通过配置找到FireWeb下的程序,IP和端口再转到客户端目录,然后进行游戏登入4 : 架设私服步骤:1,架好APMSer
2017-07-03 11:41:02
1057

原创 操作系统位数与数据字节数的关系
各类型的数据长度是由编译器决定的:发现 数据类型占内存的位数实际上与操作系统的位数和编译器(不同编译器支持的位数可能有所不同)都有关,具体某种数据类型占字节数得编译器根据操作系统位数两者之间进行协调好后分配内存大小。具体在使用的时候如想知道具体占内存的位数通过sizeof(int)可以得到准确的答案。 C类型 32
2017-07-03 11:24:43
1746

原创 网络编程中最简单的TCP通信(CS模型)
************************Tcp_client.cpp************************----------------------------------------------------------------------------#include #include "WinSock2.h"#pragma comment(lib,
2017-06-27 17:57:07
2944

原创 SQL求平均值以及总和的写法
select 科目,MAX(分数) from 表名 where group by 科目select Customer, Sum(OrderPrice) from 表名 where group by Customer
2017-06-27 17:53:58
8245
原创 cmake命令集合
1)project 命令命令语法:project(<projectname> [languageName1 languageName2 … ] )命令简述:用于指定项目的名称使用范例:project(Main)2)cmake_minimum_required命令命令语法:cmake_minimum_required(VERSION major[.minor[.patch[.tweak]...
2018-06-01 10:33:31
213
原创 epoll
epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生变化时才会通知,而采用LT模式类似于原来的select/poll操作,只要还有没有处理的事件就会一直通知.以代码来说明问题: 首先给出server的代码,需要说明的是每次accept的连接,加入可读集的时候采用的都是ET模式...
2018-05-29 16:48:34
158
原创 linux下预处理、编译、汇编并生成可执行文件
一、预编译 1.将所有的#define删除,并展开所有的宏定义; 2.处理所有的预编译指令,例如:#if,#elif,#else,#endif; 3.处理#include预编译指令,将被包含的文件插入到预编译指令的位置; 4.添加行号信息文件名信息,便于调试; 5.删除所有的注释:// /**/; 6.保留所有的#pragma编译指令,因为在编写程序的时候,我们经常要用到#pragma指令来设定编...
2018-05-24 11:43:16
2616
原创 服务端中C++/lua的交互
一.lua堆栈要理解lua和c++交互,首先要理解lua堆栈。简单来说,Lua和C/c++语言通信的主要方法是一个无处不在的虚拟栈。栈的特点是先进后出。在lua中,lua堆栈就是一个struct,堆栈索引的方式可是是正数也可以是负数,区别是:正数索引1永远表示栈底,负数索引-1永远表示栈顶。如图:二.堆栈的操作因为lua与c/c++是通过栈来通信,lua提供了C API对栈进行操作。我们先来看一个...
2018-05-23 16:01:11
1147
原创 Apache的游戏应用
APMServ:http://192.168.10.250/game/game.html?srv=3通过这样的访问,连接到APNfunction connectSrv(id, user, pwd)。APMServ再读取相应客户端资源,连接到服务器...当然这一种的话也可以通过架设APq来实现.apache(Web服务器):[1] Apache是世界使用排名
2017-07-03 11:57:53
481
原创 PHP对接笔记
以360平台为例。游戏链接目录为fireweb,平台上面是从webgame的login360.php进入的,包括了用户,md5的加密。再转到game.php../configuration/config.inc360.php 杂乱的配置GameConfigwan.xml 这是进游戏的配置再转到s1.php最终进入的游戏dat
2017-07-03 11:56:54
273
原创 游戏网关的作用
游戏gate起到的作用是转发客户端数据一般就是玩家登陆和关闭会话//接收数据的线程VOID STDCALL CRunDataProcesser::RecvDataProcessRoutine(CRunDataProcesser *pRunData)//收到用户的数据包VOID CRunDataProcesser::ProcessUserRecvPacket(PRUNGATE
2017-07-03 11:56:15
2274
原创 游戏人物逻辑
脚本处理:主函数,commonQuestNpcMain(sysarg,func)当人物身上只有一个任务的时候就只返回任务内容引擎格式化任务状态:local mission,qc,qid,state = Actor.formatQuestState( sysarg,qc,qid,state ) mission(任务描述),qc(任务数量),qid(当前任务ID),state(任务状态,0为可接,
2017-07-03 11:52:33
477
原创 BUFF系统
BUFF系统即为人物状态系统。根据不同的类型对人物进行一些属性值上的变更或者对其他系统的影响。 BUFF 系统设计为有时间限制的系统。比如道士的毒对实体的作用是有次数以及时间长度的。过了时间就失去效果。 BUFF 系统在实体LogicRun 内进行每一秒的检测。即buff 的最小单位时间为1秒。比如当策划想要一个每500毫秒减少血量的buff 这个就无法实现。因为至
2017-07-03 11:51:01
734
原创 技能系统
技能系统有等级所区分。为了做到通用性单个技能系统设计为多个等级表构成,而每个等级表又由多个坐标作用表构成。每一个坐标作用表包含作用条件表( 所有条件都通过此作用才生效) 以及作用结果表(此结果对怪物或者玩家会造成哪些结果)。 当执行的时候会遍历这些坐标作用表检查作用条件并且执行作用结果。 具体的配置说明可以查看 LogicServer/data/conf
2017-07-03 11:48:21
353
原创 游戏服务端之间内部通讯数的据包解析
DB的包发送结构:CDataPacket& retPack = allocProtoPacket(dcQuery); (1):CDataPacket& CLogicDBReqestHandler::allocProtoPacket(const jxSrvDef::INTERSRVCMD nCmd){ return m_pHost->AllocDataPacket
2017-07-03 11:46:27
775
原创 游戏服务器内存管理笔记
1:C++中对应数组越界的处理是。越界不报错也不提示。但是访问数组时出现野指针会报内存错误。也就是其它程序访问到了这段内存的话因为不对才报错2:玩家离线数据保存于加载;从DB那边得到数据,DB发给引擎数据.引擎给进行装载处理。放进离线指针中离线信息:@CallTimers UpdateRankData 刷新了排行榜以后DB会发送引擎数据,重新更新排行榜。这是最新
2017-07-03 11:44:19
515
VASSISTX破解工具
2018-07-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人