本篇核心知识点:自定义 Protobuf 协议新增流程、TCP 分包 / 粘包底层完整处理逻辑、数据库 MySql 连接框架、数据库实体与表映射、用户登录注册业务设计、第三方登录底层原理、验证码 / 防沉迷 / 苹果税 / 渠道流量行业拓展知识
一、前后端统一新增 Protobuf 协议完整流程
1 概念
CS/SC 成对协议两端完全同步定义,客户端与服务端新建一模一样 Protobuf 实体类,通过协议名匹配消息回调,新增业务无需修改底层收发框架,仅新增协议、注册监听即可使用。
2 特性 / 规则
-
CS=Client 请求,SC=Server 回执,请求与应答一一对应;
-
协议类必须继承统一 MessageBase 基类,重写 ProtoName 协议名字符串;
-
实体字段使用 ProtoMember 标记,序号前后端保持一致;
-
客户端、服务端两份协议代码完全复制,不能出现字段、名称差异;
-
客户端通过 RegisterProto 注册回调函数,收到对应消息自动执行业务逻辑。
3 语法 & 代码片段
// 客户端请求协议
[ProtoContract]
public class CSTest : MessageBase{
[ProtoMember(1)]
public string MsgContent;
public override string ProtoName => "CSTest";
}
// 服务回执协议
[ProtoContract]
public class SCTest : MessageBase{
[ProtoMember(1)]
string RetMsg;
public override string ProtoName => "SCTest";
}
// 发送+注册回调
NetManager.Instance.SendMessage(new CSTest(){MsgContent = "测试消息"});
NetManager.Instance.RegisterProto("SCTest", RecvTestMsg);
void RecvTestMsg(MessageBase msg){
SCTest data = msg as SCTest;
Debug.Log("服务端返回:" + data.RetMsg);
}
4 相关知识点对比
硬编码底层分发 VS 标准化协议新增流程
硬编码:每新增消息修改解析核心代码,极易引入 Bug; 标准化流程:底层 IO、解析逻辑完全固定,仅新增业务实体与回调,拓展零侵入。
5 模块拓展
大型项目统一协议文档,前后端开发同步更新,联调时快速核对字段序号、协议名称。
二、TCP 分包、粘包底层完整处理逻辑
1 概念
TCP 是流式无边界协议,单次接收字节可能小于一条完整消息(分包)、多条消息合并接收(粘包),缓冲区双指针 + 2 倍自动扩容 + 循环解析实现兼容两种场景。
2 特性 / 规则
-
缓冲区默认容量 1024 字节,剩余空间不足时循环二倍扩容,不一次性超大分配节省内存;
-
每次接收数据写入 writeIndex,通过包头总长度判断数据是否完整;
-
单缓冲区多条完整消息循环递归解析,避免粘包残留;
-
消息处理完毕 Compact 前移有效数据,释放前端空闲内存,减少扩容触发次数。
3 语法 & 代码片段
// 缓冲区扩容逻辑
public void Expand(int needSize){
int cap = 1024;
while (cap < DataLen + needSize) cap *= 2;
byte[] newBuf = new byte[cap];
Array.Copy(buffer, readIndex, newBuf, 0, DataLen);
buffer = newBuf;
writeIndex = DataLen;
readIndex = 0;
}
// 循环解析处理粘包分包
void ParseBuffer(){
while(DataLen >= 8){
int totalLen = ReadHeadLen();
if(DataLen < totalLen) break;
// 解析完整消息
DecodeOneMsg();
Compact();
}
}
4 相关知识点对比
固定超大缓冲区 VS 动态二倍扩容
固定大数组:闲置时刻大量内存占用,上千连接内存溢出; 动态扩容:按需增长,小包维持低内存占用,大数据逐步扩容平衡性能与内存。
5 模块拓展
线上服务可自定义扩容基准,高频短消息场景调低扩容倍数优化内存。
三、MySql 数据库连接框架使用
1 概念
服务端引入成熟 MySql 操作类库,封装全局数据库管理器,统一建立连接、增删改查,客户端禁止直连数据库,所有数据校验、持久化交由服务端处理防作弊。
2 特性 / 规则
-
客户端不能直接访问数据库,所有数据请求通过 Socket 转发服务端校验;
-
数据库连接参数:IP、账号、密码、库名统一封装配置;
-
可视化工具(Navicat 等)快速建表,替代手写 CMD 命令;
-
ORM 实体类与数据表字段一一对应,自动映射读写数据。
3 语法 & 代码片段
// 数据库管理器核心连接
public class MysqlManager{
private MySqlConnection conn;
public void Connect(){
string connStr = "server=127.0.0.1;uid=root;pwd=123456;database=GameDB";
conn = new MySqlConnection(conn);
conn.Open();
}
}
4 相关知识点对比
客户端直连数据库 VS 服务中转读写
客户端直连:玩家可篡改本地数据、破解库账号,外挂作弊泛滥; 服务中转:所有数据修改服务校验,杜绝本地篡改,游戏数据安全。
5 模块拓展
数据库连接池优化,避免频繁创建销毁连接消耗性能。
四、数据库表设计与实体映射
1 概念
服务端创建用户表存储账号、密码、登录时间等玩家数据,C# 实体类字段名、类型与数据表完全匹配,ORM 框架自动映射实现增删改查。
2 特性 / 规则
-
数据表主键 ID 设置自增、非空、唯一约束;
-
用户名、密码字段非空,登录时间 DateTime 类型记录上线记录;
-
实体类添加表名特性标记,类名与数据表名不一致时手动指定;
-
实体字段与库列名大小写、拼写必须完全一致,否则映射失败。
3 语法 & 代码片段
[Table("user")]
public class UserEntity{
public int Id;
public string UserName;
public string Password;
public DateTime LoginTime;
}
4 相关知识点对比
手写 SQL 字符串 VS ORM 实体映射
手写 SQL:拼接字符串易出现注入漏洞,维护繁琐; ORM 映射:面向对象操作,自动生成语句,安全易维护。
5 模块拓展
新增背包、道具、角色属性数据表,配套对应实体类管理游戏业务数据。
五、登录注册业务协议与结果枚举
1 概念
定义注册、登录专用 CS/SC 协议,使用枚举区分业务返回结果(成功、账号已存在、密码错误、用户不存在等),服务端查表校验后下发回执给客户端。
2 特性 / 规则
-
注册枚举:注册成功、账号重复、非法参数;
-
登录枚举:登录成功、账号不存在、密码错误、登录超时;
-
服务端收到注册消息查表,无重复账号插入数据库;
-
登录时比对库内密码,匹配下发登录成功消息。
3 语法 & 代码片段
public enum RegisterResult{
Success,
AccountExist,
IllegalParam
}
[ProtoContract]
public class CSRegister : MessageBase{
[ProtoMember(1)] public string UserName;
[ProtoMember(2)] public string Pwd;
public override string ProtoName => "CSRegister";
}
4 相关知识点对比
纯字符串返回状态 VS 枚举统一结果码
字符串返回:拼写易出错,前后端文本不匹配导致判断异常; 枚举数字码:统一规范,联调无文字歧义,便于判断分支。
5 模块拓展
增加注册类型枚举(手机号 / 邮箱注册),区分不同注册渠道。
六、行业底层拓展知识(验证码 / 第三方登录 / 渠道规则)
1 概念
游戏项目上线配套登录、支付、渠道 SDK 底层原理,面试高频拓展业务知识点。
2 特性 / 规则
(1)短信验证码机制
-
客户端请求验证码→游戏服务转发短信服务商→运营商下发短信;
-
服务端缓存验证码,用户提交时比对校验;
-
单账号每日获取次数限制,控制第三方短信成本。
(2)第三方 QQ / 微信登录
-
接入腾讯 SDK,跳转授权获取唯一 UID;
-
UID 作为账号存入数据库,无需用户重复输入账号密码;
-
渠道分成规则:平台抽取 9 成,游戏厂商仅留存一成流水。
(3)苹果税与渠道差异
-
iOS 内购充值苹果抽取 30% 分成,商品定价高于安卓;
-
iOS 生态封闭,只能 AppStore 分发;安卓开源多渠道,付费转化率更低。
(4)防沉迷与实名制
-
未成年人账号限时游玩,通过身份证 KYC 校验实现;
-
未完成实名账号限制充值、游戏时长。
(5)渠道投流与广告变现
-
抖音、应用商店投放按下载 / 付费结算流量费用;
-
广告变现游戏通过观看广告发放道具,广告平台结算收益。
3 相关知识点对比
账号密码原生登录 VS 第三方一键登录
原生登录:用户需手动注册,转化低; 第三方登录:依托平台流量,用户一键进入,新增玩家效率更高。
5 模块拓展
面试高频业务场景提问,简历项目可写入登录、防沉迷、渠道 SDK 相关拓展功能。
综合拓展
1 完整业务开发流水线
1)前后端同步新增 CS/SC 协议;2)客户端按钮发送请求;3)服务接收解析;4)MySql 查表校验;5)生成回执消息下发;6)客户端回调更新 UI 界面。
2 高频 Bug 排查清单
协议解析失败:前后端 ProtoMember 序号、字段名不一致;
数据库查询无数据:实体与表字段不匹配、连接账号密码错误;
分包粘包消息丢失:缓冲区 Compact 复用逻辑缺失;
客户端无法登录:服务未做账号查重校验。
3 核心点
TCP 分包粘包解决方案、MySql ORM 实体映射、客户端禁止直连数据库原因、第三方登录底层流程、短信验证码成本机制、苹果税渠道分成规则。
4 进阶拓展学习方向
数据库连接池、玩家数据异步存档、RSA 登录加密、断线重连、多渠道 SDK 整合。
5 实战落地要求
独立完成账号注册、登录完整前后端业务,包含数据库建表、协议定义、消息收发、结果弹窗展示,作为简历核心前后端一体化项目。