整理常用linux命令
纯以记录为目的,以便日后翻查或者重新理解命令使用方法
linux
日志收集
在用grep筛选日志,上下相邻的几条日志会有可能对当时排查问题有另外的提示作用
选荐-n显示日志的行号,观察该行号附近的日志分析问题,如显示每条error的行号
grep -n "error" FILE_PATH
选项-A、-B和-C分别可向下、向上和同时上下,额外显示N行日志。如在error日志行上下再显示5行日志
grep -C5 "error" FILE_PATH
grep多条件筛选日志
与逻辑,如下搜索包含ERROR与指定角色123456的行
grep "error.*role_id:12...
Click to read more ...
数值程序化 lua中的load运用
[TOC]
数值条件
以下是游戏中常见条件达到逻辑
收集X个Y道具
角色达到Y级开启
任意一个装备升级到Y品质
…
如何在策划配置表中,定义以上规则?常见的办法就是预先定义事件类型X和事件值Y,代码中监听事件X,根据事件的具体逻辑计算相关当前值与事件Y比较,以得出是否满足配置项的条件。
目标类型
说明
1
获得道具
2
角色当前等级
3
升级装备
配置数值
说明
{1, X...
Click to read more ...
lua代码规范
[TOC]
命名
小写蛇形命名
文件和目录名
本地变量,全局变量g_开头
local my_var = 0
g_my_var = 0
大写蛇形命名
全局常量,以G_开头
G_SERVER_ID = 1
全局枚举,以E_开头且_TYPE结尾
E_SERVER_TYPE = {
LOGIN = 1,
GAME = 2,
GLOBAL = 3,
}
bool类型变量,使用正向命名
-- bad
local fail = false
if not fail then
-- do something
end
...
Click to read more ...
搭建centos基础开发环境的一些考虑
或许会有疑问,只要项目工程预编译好二进制文件,checkout下来就能跑了,几乎不需要再给centos安装些什么环境!因为开发过程还可能需要ssh远程,设置账号权限,设置网络端口规则,崩溃调试和性能采集等。作为技术人员可以很轻松地完成这些工作,但实际情况是非技术人员也有可能要搭自己的本地运行环境,尽管提供了搭建文档,但对他们来讲处理这些并不容易。
考虑各个项目的代码框架各有差异。此处不会涉及广泛的内容,仅以C/C++游戏后端开发基于Window主机+centos客机的搭建模式,其中只安装了必备的一些工具,你可能需要根据项目框架的实际情况另行安装。
开发环境配置的基础认知:
搭建本地运行环境有很好的隔离作用。使用项目任务得以尽可能并行开发而互不干扰。技术同事有着各自的前端/后...
Click to read more ...
计算平均值,复杂度O(1)
公会对象按以下形式缓存了所有成员的最新等级iLevel,要求实时刷新公会成员的【平均等级】,成员最多200人。
tMemberMap =
{
[角色ID1} = {iLevel=1, sPlayerName="xxx", ... }
[角色ID2} = {iLevel=2, sPlayerName="xxx2", ... }
...
}
当成员加入或离开公会或角色升级,触发重刷平均等级,简单的做法是遍历tMemberMap计算出【等级总和】,后除以【成员人数】。
公会成员最多只有200人,这样的做法绝对不会有性能问题。但这里我想发散一下,如果是海量数据呢?或者没有缓存信息tMemberMap呢?
我分析了一下,还是依据公式【平均等级】=【等级总和】/【成...
Click to read more ...
排行榜-排序
以下是lua版本二分插入排序
-- lua实现
function binary_insert(list, value)
local left = 1
local right = #list
local mid = -1
while left <= right do
mid = math.floor((left + right)/2)
if list[i] == value then
left = mid
right = mid
break
elseif list[i] < value then
lef...
Click to read more ...
游戏开发纲领
鉴于各个项目开发的游戏类型、开发规模和组织结构等有所差异,下文总结了大部分项目开发会涉及到的纲领性总结。有些内容,不便于详细展开,有需要会另开文章介绍。
本人亲身经历其中大部分事项以及流程改进,少部分内容是个人见解并有待验证。
本人能力有限,半刻之间未能想全,此后一旦想起要点,会逐渐添加和完善,如有不对欢迎指正。
[TOC]
框架开发
网络数据
数据格式
节点间通信。它不像与前端的通信变动频繁,框架定下来后基本不变,格式不需要较高灵活性。另外署上,这 些节点只在内网通信,理论上也不需要太高的安全性或去掉加密。
前端延时不敏感的业务。可以牺牲部分性能,来满足读写灵活,比如支持数组和嵌套类型。常见的高序列化库有 msgpack和proto...
Click to read more ...