![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
游戏
文章平均质量分 80
narlon
这个作者很懒,什么都没留下…
展开
-
grafana+influxdb数据可视化
日常我们会有一些记录历史性能数据并进行分析观察的需求,一般简单地做法是通过日志记录下数据,然后整个文档(高级一点存到db里),后面自己通过工具来维护查看。通过grafana+influxdb其实也可以简单的实现这个需求(轻量级的elk)可以使用http post的方式将数据存储到influxdb中curl -i -XPOST 'http://10.246.47.160:8086/write?db=testDb' --data-binary 'cpu_load_short,host=se原创 2022-01-05 09:50:16 · 2729 阅读 · 0 评论 -
面向对象的导表程序
不清楚啥是导表,可以参考之前的文档《如何让你的程序加载Excel配置文件》我们之前的思路类似于面向过程,比如先读数据,再处理数据,最后导出数据。那么,在工具功能能够保持单一时,这么做也ok。随着功能迭代,导表工具要接受各种高级特性时,面向过程的逻辑,往往就很受伤。比如,我们需要添加数据差异导表功能,或者需要做不同的数据源和导表先后依赖,或者要改成多线程,或多进程导表?所有的这些优化,都需要动流程或是流程的一部分。于是我们想到能不能使用一种各面向对象的方式来实现这个过程,后期用多态+组件的方式来扩原创 2022-01-04 17:11:18 · 262 阅读 · 0 评论 -
C#使用protobuf简述
编译依赖项首先,创建一个C#4.5以上project,因为最新的protobuf依赖于C#5.0的语言特性。然后,我们通过nuget,为项目添加对protobuf的引用,搜索protobuf就可以开始安装了。安装完成后,可以编译一次工程,在bin/debug目录下就可以拿到Google.Protobuf.dll了。然后,我们就可以卸磨杀驴了,在nuget里卸载掉这个安装项(因为,我...原创 2019-04-19 14:25:20 · 1524 阅读 · 0 评论 -
pickle, flatbuffer与protobuffer对比
测试方法网上的一些性能测试都比较久远了,还是自己动手丰衣足食吧。测试环境python3.7.1 + protobuffer3.7.1 + flatbuffer1.10.0测试方式,对一个样本对象,压缩/解压 1000次。这个对象其实是flatbuffer的官方样例。// Example IDL file for our monster's schema.namespace...原创 2019-04-16 20:07:44 · 3060 阅读 · 0 评论 -
通过ENV来控制资源文件的读取路径
ENV的读取可以参考之前的文章https://blog.csdn.net/narlon/article/details/86676894在开发过程中,读取资源/配置文件往往很头疼。如果通过args参数传递给程序的话,会有一些缺点。首先,args参数数量如果多了,很容易出错。其次,无法永久绑定一个目录关系,必须每次传args参数(如果读取一个配置文件,那么这个配置文件在哪里,又是一样的问题了)...原创 2019-03-27 11:29:52 · 1010 阅读 · 0 评论 -
nlua的基本配置使用
近来想测试服务器增加热更新能力,考虑加入lua热更新。目前鹅厂的xlua也是基于nlua的早期版本开发的,黑历史可以参考(https://www.oschina.net/news/80638/c-net-lua-unity3d)nlua官网(http://nlua.org/)nlua的前身是LuaInterface,2.0.3版后改名为nluaLuaInterface只具有简单的函...原创 2019-01-09 17:01:16 · 8081 阅读 · 0 评论 -
如何实现一个游戏地图编辑器
参与的一个项目,策划使用类似csv的格式进行配置数据填写。csv数据格式相比于excel格式虽然有可以merge,读写简单的优点,但也有不少缺点(不支持公式存储,不支持注释,添加图片等等)。于是,我们觉得需要一个地图编辑器,来协助策划完成数据的填写工作,以提高数据填写的效率和正确率。读书时,接触过一些网游私服的编辑器,但印象最深的还是war3地图编辑器。所以,我的直觉就是是不是可以实现一个...原创 2018-12-26 16:09:47 · 7300 阅读 · 0 评论 -
多个游戏进程服务器的管理
多进程VS多线程在之前的文章中,已经提到了目前服务器的主流框架是多进程或者多线程的架构(游戏服务器的中心节点)。多进程服务器可以分布式部署,总体会更加灵活。此外,多进程的情况下,我们可以更加肆无忌惮的使用静态数据;但多线程情况下,静态数据访问要么加锁,要么就只能尽量避免。另外,多进程如果发生异常崩溃等突发情况,不至于整个服务器组玉石俱焚。所以,一般我还是推荐使用多进程的架构。但是多进程...原创 2018-11-02 19:12:48 · 607 阅读 · 0 评论 -
游戏数据表的数据驱动
前言之前博文介绍过了,一种代码导出的工作方式《如何让你的程序加载Excel配置文件》。但这种方式存在一些弊端,比如如果想在运行时替换数据(Reload),就会比较困难(解释执行语言例外)。但在目前的游戏架构中,不论是客户端还是服务器,都强烈的具有这种需求。主要思想此时,我们的思路是,分离类定义和数据本身,类定义必须生成为导出语言的代码,以方便IDE识别。数据导出成自动生成类型可以识别的...原创 2018-11-09 19:25:49 · 674 阅读 · 0 评论 -
把组合(树)模式集成到游戏服务器引擎中去!
什么是组合模式?组合模式是一种设计模式,和对象组合的概念是不同的。对象组合是相对于对象派生而言的一种对象间协作的关系。而组合模式是将对象组合成树形结构以表示整体-部分的层次结构,使得用户对单个对象和组合对象的使用更加一致的一种设计模式。( compose objects into tree structures to represent part-whole hierarchies. Comp...原创 2018-10-21 15:29:50 · 185 阅读 · 0 评论 -
游戏db服务器设计的相关问题
存档的简单历史单机游戏都会把存档以文件的形式保存在本地,于是最早的一片网游也是这么干的,他们把存档以二进制的形式存储为本地的文件。到了21世纪,mysql等开源数据库引擎的性能和安全性逐渐获得认可,于是主流的网游开始以数据库作为媒介存储玩家存档。但当时的用法和用文件存储实际并没有本质的区别,所有的数据会打包存成blob的形式,然后丢给mysql。随着网络游戏的复杂化,这种结构并不能适应新的...原创 2018-10-27 16:58:13 · 1194 阅读 · 0 评论 -
口水游戏主循环和组件
游戏主循环和是否是单机游戏并没有多少关系。因为单机游戏只不过是同时拥有服务器和客户端逻辑。那么客户端主循环和服务端主循环的差别也仅仅是设备的差别,客户端需要支持输入设备的读取,屏幕的渲染(Render);服务端需要支持写日志文件,处理来自客户端的远程访问。对于一个服务端来说,他多的或者说擅长的就是轮询,每秒百亿次的计算可以把所有事情都照顾的妥妥的。那么,在一个无限while循环的帮助下,游戏服...原创 2018-10-09 16:30:08 · 283 阅读 · 0 评论 -
游戏服务器架构中的中心节点
议会制 Vs 君主制分布式的服务器架构有点像议会制度,每一个节点都可以参与制定管理策略,进行一部分工作(征税,作战或是处理游戏逻辑,存储)。中心集中式的服务器(比如比较古老的单进程服务器架构),则把所有工作集于一身,自己爱干嘛就干嘛,毫无约束。他们的缺点也很明显,对于议会制,关键时刻谁说了算,会不会出现僵持;对于君主制,君主会不会玩火,万一君主仙逝了,会不会出现黑暗时代。于是,我们发现了一种更...原创 2018-09-25 11:09:59 · 1288 阅读 · 0 评论 -
序列化在游戏开发中的运用
为什么需要序列化?在服务器内部,大部分数据都是以对象的形式存储的,那么如果可以直接发一个对象发送给客户端或是其他进程来完成通信,既会非常直观方便,也不同意出现不一致等问题。序列化和反序列化直观上就完成了对象->字节流以及字节流->对象的转化过程。一般情况下,以下几种情况下,需要用到序列化跨设备/跨进程,比如服务器和客户端之间的通信,服务器组内部的通信服务器和存储进程...原创 2018-08-12 15:08:21 · 549 阅读 · 0 评论 -
委托的作用和性能讨论delegate
委托绝对算是C#中一个非常重要和新颖的概念。可以直观的理解成一个安全的函数指针。delegate实际是如何工作的呢?delegate int MyDelegate(int x, int y);//生成自动化的类代码如下sealed class MyDelegate : System.MulticastDelegate{ public int Invoke(int x,i...原创 2018-07-29 10:58:03 · 4736 阅读 · 0 评论 -
如何让你的程序加载Excel配置文件
游戏公司很多都会把Excel作为游戏数据的配置工具,已经很少有公司会针对性的开发一款地图编辑器。这么做的优点也很明显:技能互通,不需要新的学习过程。excel的功能已经足够强大,便捷程度往往高于一款粗糙的编辑器。先来说说xlsx文件格式xlsx文件实际上是一种压缩文件,在重命名成zip后就可以通过压缩软件打开。有点类似于一个VFS,其中的文本信息,图片都按照一定的目录结构存放。而其中表格的信息被以...原创 2018-06-20 15:11:26 · 832 阅读 · 0 评论