游戏项目总结一

一、项目流程大概图:

在这里插入图片描述

二、添加servant流程

1.进入目录 “添加Servant模板” 选择对应进程目录

2.编写idl文件 对应目录下有example.idl
支持类型 uint8,uint16,uint32,uint64,string,vector(命名规则下面在总结)

3.运行 “添加Servant.bat” 如果只是修改协议体 运行 “添加Servant - NO.bat” 忽略以下步骤

4.vs对应工程添加上步骤新增的servant文件(也就是相应的.cpp和.h)

5.对应进程的main.cpp 注册协议servant类
g_DaServer->addServant();

三、命名规则

1.局部变量定义
int类型 nPlayerID(整型局部变量n开头)
string类型 strNickName(字符串型局部变量str开发)
char 类型 cName(字符型用c)
指针类型 pUser(指针用p)
vector 类型 vecMembers(vector容器用vec)
list 类型 listNews(list容器用list)
map<T,T> 类型 mapReward (map容器用map)
2.成员变量 m_
m_nPlayerID
3.全局变量
g_nServerID
3.宏定义,枚举 使用大写字母
4.类定义 class CPlayerInfo (类第一个字母大写)

四、建表指定

  1. 只用下面四种数据类型
    数值类: 大于255, bigint(20) unsigned
    数值类: 小于255, tinyint(4) unsigned
    日期类: datetime
    文本型: varchar(xxx)

每个表必须包含 status, created_date, last_modified_date 三个字段
2.表名规定
静态表(加载到内存) tb_table_
玩家表(部分加载到内存) tb_player_
历史表(不加载到内存) tb_his_ 每次insert都要remove

列子:

CREATE TABLE `tb_player_xxxx` (
  `id` bigint(20) unsigned NOT NULL,
  `player_id` bigint(20) unsigned NOT NULL,
  `status` tinyint(4) unsigned NOT NULL,
  `created_date` datetime NOT NULL,
  `last_modified_date` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

修改玩家名称按例:

1、先注册一个协议(每次增加1), 到gateway main.cpp
在这里插入图片描述

然后去geteway main.cpp 里面完成 execute的代码 进行(这个协议是客户端cliend_gateway.idl的)
在这里插入图片描述

去gwgmcodeservant.cpp

 /gmcode change_name test222

	if (vecParams[1] == "change_name" && vecParams.size() == 3)
	{
		CGWModnameRequestPtr pReq = CGWModnameRequestPtr::createInstance();
		pReq->m_strName = vecParams[2];
		g_DaServer->callServant(GW_MODNAME_OPT,pReq.get(),NULL,0,NULL,NULL,Player->getSessionID());
	}
	

dbservermain.cpp //里面完成 execute的代码
//修改用户名称
在这里插入图片描述

execute的代码
在这里插入图片描述

同步到场景已经完成,代码后序补上。

猜你喜欢

转载自blog.csdn.net/qq_35433716/article/details/88932717