自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 双链表运用于SLG游戏领土删减性能优化

公司的SLG项目上线运行挺久的,军团领土这一块一直没大问题,大概玩法就是玩家可以创建军团,军团长可以在世界上创建军团基地,玩家可以占领相邻的格子,变为军团领土,增加所有军团成员的收益。如果放弃某个格子,或者由于被其他军团抢夺而失去,则会检查不与基地相连的领土,全部失去。直到去年一月份一个大版本的更新:军团领土上限变多了很多,并且由于奖励的机制,玩家原本块状的军团领土变成了线条性。更新后玩家群反馈是不是无法操作,类似断网的体验。问题来了,那就开查根据服务器日志,很快定位到卡顿点:但军团失去领土,服务器会因

2021-05-19 21:12:32 351 3

原创 洪水填充算法用于slg类型游戏的自动寻路

先上总结:为啥不用A*用这个洪水填充,是因为这次的需求是确定终点,不确定起点(可能有多个,找最优解),于是从终点出发,找到最近的起点,就选择用这个洪水填充算法了。首先介绍下前提:slg世界地图上有各种对象,并且有玩家的军团的军团领土 玩家可以手动派遣部队前往占领与已有的军团领土相邻的地块变为自己的军团领土,也可以抢夺其他军团的军团领土 部分对象占用的格子不可以占领然后再介绍下需求:当玩家点击某个与已有的军团领土不相邻的地块时,需要支持玩家自动把军团领土铺过去(简称自动铺路) 自动铺路遵循

2021-05-18 13:04:31 1510 7

原创 可定制xml2lua

先总结一波:这次介绍的xml2lua是使用tinyxml的C++开源代码,加上自己定制的内容,再一起封装成exe可执行文件。通过编写一个bat文件,我们可以实现在实行exe的时候把读取路径、生成路径传进程序。定制部分是核心优化点,下面详细介绍下思路:首先基础功能是后序遍历读取路径下的所有文件内的xml文件,逐个打开并访问第一个sheet的所有内容,由第二行内容决定使用何种解释器(例如i对应数值解释器,s对应字符串解释器,t对应列表解释器),由第一行决定key名,生成具有key-value的lu...

2021-05-17 21:42:41 363

原创 Error: Unable to connect to a repository at URL搭建svn服务器解决方案

Error: Unable to connect to a repository at URL搭建svn服务器解决方案这个问题是在搭建svn服务器的时候遇到的,如果是客户端遇到该问题,请跳过这周末在家装了VisualSVN Server,打算在本地建个代码库。装服务器,启动,很简单,跟着网上教程走半小时内就下好装好,并且可以使用svn客户端本地检出了。下一步,用第二台电脑检出下,结果遇到了上述报错,具体如下:在网上找了挺久的解决方案,无果。后来想起公司的svn是用id的形式访问的,于是将

2021-05-16 23:17:09 564

原创 python协议传输时的类型报错

想起之前遇到一个有趣的bug,非常值得记录下来。项目使用的协议需要指定参数类型,出错协议的某个参数设为int,传参时该参数默认为(1<<32 - 1),大部分时候不会用到默认数值,但万一的情况出现了,然后就报错了。分析:(1<<32 - 1)这个运算过程中,优先计算(1<<32),这时超出int的范围,python源码将此变量自动转换为long,再减去1...

2018-10-19 11:21:40 144

转载 网游的跨服玩法是如何实现的?“跨域体系”架构设计思路

虽然游戏市场竞争激烈,产品格局变动较大,但游戏产业一直处于稳步增长阶段,无论是在端游,页游,手游还是已经初露端倪的HTML5游戏。可以预见,游戏类型中,MMOARPG游戏仍然会是引领市场的主流趋势,贡献着大部分流水,市场上也仍然在不断涌现精品。研发团队对MMO游戏的探索从来未间断过,从付费模式的改变,到题材多元化,次时代的视觉效果,更成熟的玩法及数值体系,本文主要针对跨服玩法上的探索和实现做一些思...

2018-10-14 21:57:20 1214

原创 python使用protobuf

当然首先你得安装好python和protobuf,之前的一篇博客有介绍:https://blog.csdn.net/monkeycat520/article/details/81592905接下来需要定义一个.proto文件。例如testProtobuf.proto:syntax = "proto2";message Person{ required int32 nID = 1...

2018-10-04 18:31:43 208

转载 客户端主循环的几种方案

游戏主循环是每个游戏的心跳,输送着整个游戏需要的养分。不幸的是没有任何一篇好的文章来指导一个菜鸟游戏程序员如何为自己的程序供养。不过不用担心,因为你刚好不小心看到了这篇,也是唯一一篇给予这个话题足够重视的文章。由于我身为游戏程序员,我见过许许多多的手机小游戏的代码。这些代码给我展示了五彩缤纷的游戏主循环实现方法。你可能要问:“这么简单的一个小玩意还能做到千奇百怪?” 事实就是这样,我就会在此文...

2018-10-03 23:38:42 186

转载 StarUML——一款在MAC上的UML软件

直接上链接:https://blog.csdn.net/yangmingqian/article/details/50126907建各种图的选项在这,建几个新图玩下基本就能上手。 

2018-10-03 23:19:50 2263

转载 lua os.clock可能会返回负数

上周在客户端里增加了一个os.clock对按钮进行控制,防止短时间内连续点击,结果出现了不能点击的情况,后来才知道os.clock可能会返回负数(溢出的情况),需要在获取之后再作处理才能使用。附上一篇介绍的非常详细的文章:https://www.jianshu.com/p/46e0d70746cc...

2018-09-25 16:21:59 554

原创 赛车类游戏的计时问题

最近在线上项目增加了一个赛车类小游戏,三条赛道,除了敌对的物品还有宝箱和buff。昨天开启之后今天就发现了一个严重的刷成绩的问题——玩家将客户端退到后台,过数分钟重新打开游戏,发现已经跑出很长的距离,并且没结束(一般很难跑到这么远的距离),玩家通过这样的方式一直刷游戏一直解释不了。这个bug出现的原因有两个:一是游戏做了一个后台恢复机制,客户端退到后台之后游戏的定时器都会中止,等到重新打开客户...

2018-09-11 17:47:58 591

原创 lua函数之搜寻变量

 lua中的每个函数会被lua虚拟机解析保存在FuncState结构体中(一个lua文件本身也会对应一个FuncState结构),每个FuncState有一个prev指针指向它的父函数(最高层是某个lua文件,即全局环境,改层的prev指针为NULL)。lua的变量分三种类型:全局变量、局部变量和UpValue。有了以上的认识之后,我们来看看lua函数是怎么获取它需要用到的变量,以一下代码...

2018-09-08 23:19:50 725

原创 lua元表实现原理读后感

lua虚拟机从一个表中查询数据的过程:如果查询对象是表,则尝试根据key在表中查询数据,若有则返回结果;若结果为空,且无__index成员,则返回空结果;若结果为空且有__index,则设查询对象为__index,进行下一层深度的查找; 若查询对象不是表,则尝试获取对象的metatale["__index"](usedata可能有此成员),设为查询对象并进行下一层深度的查找; 逐层深度向下...

2018-08-31 21:49:16 1032

原创 有违开闭原则的功能实现

先简单说说开闭原则的定义: 开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。 上周我实现一个功能扩展时就违反了这条原则,具体是我通过修改部队行军的类型达到自己的扩展需求。在打包前审代码的时候,一老人发现,立马把我添加的代码屏蔽,然后再让我改。在功能扩展的需求中,策划...

2018-08-27 11:19:59 747

原创 带新人上路有感

去年就试过在职场带新人,不过和这次带一个零基础的家伙入门,感觉还是很不同。职场带新人,往往是告知下需要去看哪些模块,搁下一句有什么问题找我,然后继续做自己事情。到了熟悉项目之后试手修bug做小功能,工作流程规范点的,就需要走下审代码和提出修改方向的流程。毕竟大家在同个项目,大家写出来的代码风格一致,遵循某种命名规范,能提高不少看代码的效率和沟通成本。不一一细说。而带一个零基础的家伙(全过程...

2018-08-20 00:20:09 1729

转载 虚拟机初认识

一般的编译型语言,经过编译后生成的都是与当前硬件环境相匹配的汇编代码;而脚本语言经过编译器处理生成字节码,而后在对应的虚拟机中执行。每个脚本语言都有自己的一套字节码,与硬件平台无关(差异都由虚拟机解决),实现了跨平台 字节码不能像汇编代码那样直接有极其执行,所以运行速度相对较慢虚拟机需要完成的工作:将源代码编译成虚拟机可以识别执行的字节码 为函数调用准备调用栈 内部维持一个指令指针...

2018-08-19 23:27:42 138

原创 Mac安装protobuf,并配置python的protobuf扩展包

1.下载对应的版本https://github.com/google/protobuf2.终端进入下载好的protobuf文件,开始编译./autogen.sh./configuremakemake install此时我们已经编译好protoc下面是第二步的参考文章,里面有几个步骤的说明:https://www.cnblogs.com/cyzhou/p/6860...

2018-08-12 01:43:32 1413

转载 leveldb原理及应用

直接上链接:https://blog.csdn.net/qq_26499321/article/details/78063856使用方面,leveldb直接支持C++,python和java,使用其他语言的就要做些额外工作了。本人用python,直接pip install leveldb,之后就可以用了,非常方便。...

2018-08-11 23:50:30 217

原创 《冰气时代》--游戏老鸟体验后有感(剧透慎点)

《冰气时代》一、初体验说实话好久没玩到一个能让我热血沸腾满身冒汗的游戏了!没有战争,只有满屏的冰雪。在《这是我的战争》之后,11 bit studios再次把人们推向末日深渊,让我们质问自己——你的底线在哪里?为了生存你是否可以不择手段?想起我的战争,我试探性地去打扰那对老夫妇,老妇人跪地求饶让我懊恼到不得不回档。这次体验冰气时代我体验一波之后没选择让儿童去工作,出人意料的是可以让...

2018-08-09 00:55:06 782

原创 lua表取长度操作

在5.1上运行这个例子,尝试解释下这里的神奇现象:30行代码我直接让nil夹在数组的非空值之间,按照lua5.1的手册描述,如果数组有一个“空洞”(夹在非空值之间的nil),那么#t可能是指向任何一个nil值前一个位置的下标。这是因为取长度操作的具体代码,并不会遍历数组的每一个元素,而是跳跃着检查,于是出现不可控的结果。而31-36行,表a是逐步插入元素的,这涉及lua表的插入元素算法...

2018-07-30 16:09:38 5421 2

原创 lua实现类

今天再看一遍项目实现lua类的方式,终于看明白了,做下记录,主要思想如下:1.首先lua中的类肯定也是table,在类中用一个__tbl_Baseclass__的表有序存起父类(有序很关键,函数重写(覆盖)在这里给出支持),在table下增加一个元表,在原表中用__index增加对__tbl_Baseclass__的元素的访问2.要让对实例对象的访问都转到类的定义上其中用到的一些lua...

2018-07-24 16:41:24 615

转载 如何编写高效的Lua代码

直接上链接:http://eric-gao.iteye.com/blog/1739887以下是总结(部分暂时没看懂的,例如协程就不总结了):1.local > upvalue > global2.使用闭包来避免动态编译3.table申请空间的算法:    重用table,减少小table的创建,初始化时定下table大小4.优化字符串处理工作(例如table.con...

2018-07-23 18:09:57 297

转载 关于调试的一些反思

直接上云凤大神的链接:https://blog.codingnow.com/2018/05/ineffective_debugger.html再反思自己,确实在调试过程中过分依赖日志、打印之类的可视化信息,而缺少训练自己大脑运行代码的能力。立下一个flag,增加对大脑运行代码的训练。...

2018-07-22 16:17:14 192

转载 sublime 配置python插件

二话不说直接上链接:https://www.cnblogs.com/waising/articles/3466120.html 其中SublimeCodeIntel可以使sublime可以跳转至定义,非常方便。当然我在win系统下惯用的eclipse(py)和vs(lua)也能实现。强大的插件,谢谢实现插件的前辈们!...

2018-07-21 22:03:58 451

原创 python pip报错Could not fetch URL

网上例子不少,例如最多的解决方案就是:pip --trusted-host pypi.python.org install xxx试了下依然提示报错,进而选用另外一种方式,下面直接发链接:http://www.mamicode.com/info-detail-2288373.html终端窗口的一些操作,例如cd,ls之类的,可以自行搜索功能,进入vim编辑模式之后,vim的一些操作...

2018-07-21 13:02:44 5253

原创 python读写excel

昨晚有需求写一个处理excel的小脚本,不属于游戏范畴,想了下没用lua实现,拾起老朋友python撸了一通。首先介绍下python超实用的工具pip:这工具可以很方便的线上安装依赖库。这次操作excel使用了xlrd和xlwt两个扩展包,用pip安装之,考虑到需求方没有python环境,需要将脚本制作成可运行exe,需要再安装pyinstaller。下面直接上代码:#-*- cod...

2018-07-20 15:09:47 115

转载 tolua

tolua#是Unity静态绑定lua的一个解决方案,它通过C#提供的反射信息分析代码并生成包装的类。它是一个用来简化在C#中集成lua的插件,可以自动生成用于在lua中访问Unity的绑定代码,并把C#中的常量、变量、函数、属性、类以及枚举暴露给lua。它是从cstolua衍变而来。从它的名字可以看出,它是集成了原来的tolua代码通过二次封装写了一个C#与tolua(c)的一个中间层。A...

2018-07-16 16:53:01 843

原创 excel导出为lua文件

周末想在家弄一个excel导出为lua文件的lua脚本,于是开始动手查资料。网上多是python实现,而lua实现的代码示例几乎没有,而最后我也是没能用lua实现一个示例,只好借用其他码友的Python示例了。整个过程分为两个步骤:一是遍历指定的文件夹,将下属的所有excel文件找出来;二是读excel文件,并写到lua文件中。网上很多例子是lfs+luacom实现,win下安装这两个扩展包挺方便...

2018-07-16 10:51:07 1347

原创 稳定加班和按需求加班对个人的影响

尝试过一年半的9106,终于是忍不住离开那种环境,现在的环境相对没那么压抑,有需求则加班,没有则6.回家都没问题。我选择离开前者环境,完全是个人问题,一是住的地方离公司远(并不是图便宜,只是想多陪家人而已),通勤时间每天两小时,再者公司要求晚上至早9.走,项目组10.通常都没几个人动身的,这就导致没有个人时间,或者牺牲休息时间成全下班后的一两个小时的个人时间了。这是个人问题,也有同事住的很近,每晚...

2018-07-08 23:52:53 599

原创 2018.7.1

一年半的游戏后端开发经历,让我确定自己是想做前端,或者前后端一起来也是可以的,朝着独立游戏的方向前进。今年三月份换了家公司,成为双端开发的程序,算是朝着目标前进了一步。目前跟进已上线的2d项目的功能需求,希望尽快进入公司的3d项目,入门u3d之后业余时间也可以投入到开发中。转前端之后,再去体验游戏,发现自己之前比较少关注的界面ui和特效,现在都会去关注以及感叹其他人做出来的效果。两年开发的...

2018-07-01 23:08:17 131

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除