熊毅aifreedom王垠云风Matrix67leadingyu阮一峰的网络日志似是而非依云卑鄙的t.k.遥远的街市考据癖zrong
从来没有这么郑重其事的打算写写一年的工作内容。原由是好友喻之前在微信上和我简单的聊了几句,感慨时间过的很快,一年转瞬过去了,时间是矢量,纵然有方向,也可以留下点痕迹来。中国教育下的人大多擅长做总结,我也是如此,如果用一条函数曲线来表达我整个2015年的心情走势的话,会是一条0到2派的图样。从年初决定离开渔女这座美丽的城市来到羊城,换了新的环境,接触到新的朋友,工作上我也能独当一面,带起一个小小的团
我兴高采烈的把我的架构图发给一个有经验的前辈看,他指出来,也许不需要这么多逻辑进程。听他这么说,我想到这么早就把逻辑强行拆开给设计带来了不必要的复杂度,也没有让架构更加优美,甚至这种拆分可能是不必要的,过早的逻辑拆分就跟提前优化代码一样,都应该避免。于是我去掉了 chat、mail 进程,打算把所有逻辑都放在 loc 进程进行处理,如果后期发现有拆分的必要再进行拆分。最开始的时候,我提到过,想要服
有了单进程的服务器之后,在我想加入第一个游戏功能的时候,我又纠结了,这货不是我最后想要的东西啊,我就算用单进程写完了整个游戏,也绝不该是这样的啊,我想要的是一个多进程的服务器,而且进程之间应该是可以通信的,进程还可以是动态增删的。这样才可以扛住我自认为会出现的压力啊。于是我开始思考,我的进程之间需要怎么去通信,数据该怎么去传输,服务器间的进程通信跟服务器与客户端的通信方式又不相同,跟客户端的通信,
半年前我参与了一个手游项目,第一次能够主导整个游戏的设计,这篇文章单说服务器的架构,客户端就不提了。对于服务端,我想从之前的端游服务器改过来肯定是走不通的(详见:),因为手游的开发周期比端游短很多,上面那一套架构开发了5年不止,当然,期间推翻重做了很多次。而这个手游项目只有快则6个月,慢则10个月的时间。既然决定不用端游的架构,一切从0开始,那么快速搭建起一个可用的服务器是我考虑的第一个原则,第二
机缘巧合的机会,我有幸能够从头开始设计一个游戏的服务器。中间遇到很多欢声笑语和悲伤泪水,这里分享一下。我之前所在项目组的游戏服务器架构如下图:这款游戏是一款MMO的端游,GateWay网关的任务是接受客户端的连接,然后通过分发策略,把玩家丢进GameSvr上去,之后玩家的所有请求都直接发给GameSvr,由GameSvr处理了。当然这里的分发策略跟一般的web服务器是不同的,web服务器一般会做成
最近项目需要打包,考虑可能会用到TexturePacker来压缩图片,于是去官网看了下,发现居然可以申请key,而且还真的申请成功了,Andreas Loew是一个很nice的人啊。这里推荐一下,申请链接在此:申请链接 SpriteSheets - TheMovie - Part 1 by CodeAndWeb SpriteSheets -
最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web 的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站。但真正大规模的使用 js 这还是第一次。我也是初生牛犊不怕虎,这次服务器居然抛弃 C++ 和 lua 的正统搭配,而尝试用 nodejs 来写游戏服务器,折腾的自己要死要活的我也是醉了。在给
工作的这两年内发生了很多让我无法把握的事情,这在上学那会没有出现过,也可能是我上学以来都顺风顺水,难怪我的大舅和母亲都曾经说过,我吃点苦头比较好。我也渐渐明白了这个道理,人这一辈子,无论怎么过都是一种经历,作为我的人生,我贪婪的希望见识更多的世界,包括那无底的深渊——写在2014年结尾。上个月去香港,临时兴起想买一双帆布板鞋的念头,路过Vans的店面,看到门口的展台上摆着一双高筒的暗红色板鞋,就是
最近要换地方办公了,发现windows7的C盘剩余空间真是越用越少了,根据我的经验来看,虽然C盘的文件极多,但占用大户应该是少数,于是我就写了个脚本,跑了一下C盘,把大于100M的文件夹找出来,生产了一个xmind图,果然跟我想的一样,删除掉几个大户,C盘一下就空出好多,也为C盘空间不足的朋友可以看看我的图,也许你跟我有相同的文件夹哦:)
cpp-empty-test是cocos2dx3.2自带的一个c++的最简单的例子,基本也是使用使用C++开发cocos2dx3.2程序的工程模板。在开始拆析游戏模块之前,让我来看看这个简单的工程有些什么。打开文件夹看到的是这个样子的:把以 proj 开头的文件夹除开后,其实只剩下 Classes 文件夹和 Resources 文件夹,那个json文件其实是一个配置说明,打开看看就知道它不过是记录
既然选定了cocos2dx+lua的原生方式来开发,首先要确定的是使用哪个版本的cocos2dx,先看看github上的changelog和releasenote,然后在google里搜索一下,参考了jacky的博客http://zengrong.net/post/2100.htm,最终选择了cocos2dx3.2,因为3.3还没有final版本,3.2是拥有final版本的最新版。有过之前对qu
经过将近1个月的分别摸索,最终还是选定了使用cocos2dx + lua的开发模式,虽然我最初的想法是由我和另一个程序分别研究下原生cocos2dx和quick,我是负责quick这块,最后我的结论也是推荐使用quick,但是由于最终客户端的开发可能不是由我主导,所以我尊重同伴的选择,采用cocos2dx+lua来开发客户端。虽然最后抛弃了quick,但是我还是把quick的一些特点简单罗列了下,
因为在和策划讨论的时候发现游戏需要一个战争迷雾的效果,本来想到一般rts游戏的那种,但是手游不需要那么好的效果,之前我玩过一款《热战联盟》,然后还看到一个《文明变革2》的手游,出现了战争迷雾的效果,猜测了一下制作的方法,应该是用不同的云雾图素随机覆盖,然后做边缘图素替换,另一种更加消耗的做法是直接减少边缘图素的alpha值,不过看起来应该不是这么做的。由于和项目经理之前讨论的是使用cocos2dx
今天下午 pk 和我讨论了一个问题,他看到在另一个项目组的 lua 代码里有一段使用线性同余产生随机数的代码,但是那个项目组的同事告诉他这个函数生成的随机数是分布不均的。于是他想到了我前两天给他讲的关于 lua 里 % 这个取余数的符号跟 c 语言里的差别。由此展开了讨论。首先铺陈背景,线性求余生成随机数的方式很普遍,对随机数要求不高的代码都可以使用这种方式,因为它实现简单,如果不知道原理的可以去
今天跟项目经理聊完天,正好不要再操心项目的事情了,闲来没事就去看了下leetcode,发现又多了一题:https://oj.leetcode.com/problems/maximum-product-subarray/因为朋友面试的时候正好遇到了这题,这里就当记录一下。英文题就不贴了,自己去看吧。意思就是求数组的最大子序列积。这个名字是如此的熟悉,最大子序列和是一道很经典的题目,网上可以搜到很多,
最近有朋友告诉我 gist 访问不了,让我把一些代码贴到博客里。以后我就挑一些代码放到这里吧。今天放的是打印 lua 中 table 结构的代码。代码参考了云风大哥的代码思路,但做了小的修改,一个是只支持字符串和数字作为 key,另外不处理自己包含自己的过程,这样代码更加简单,同时修改了输出格式,使得它更容易被人阅读。gist:https://gist.github.com/rangercyh/5
最近突然对 GIF 图片感兴趣了,然后简单研究了一下,颇有一番心得,不过这篇文章不谈 GIF 图片,而是要说一说 GIF 图片技术中用到的一种压缩算法,LZW 这种压缩算法属于无损压缩的一种,我看了好久在维基百科或者是百度百科上都没看明白,特别对一上来就只扑代码的介绍方式很反感。最后在【这个人的博客】里看懂了压缩方式,解压方式自己又摸索了下,好不容易理解了,分享给大家,看大家能不能在 15分钟 内
非礼勿视,非礼勿听
最近一直在思考一些关于游戏设计方面的问题。入行已经两年了,以前跟所有刚入行的朋友一样,一直想着怎么从自己设计的游戏中赚钱。怎么让玩家为我的劳动成果买单。当然,我并不是说这样不好,因为只要形成一个良性的循环,优秀的游戏才会持续不断的出现,君不见,几年前国内还是有很多优秀的单机游戏的,但是由于破解的存在,以及中国人在几年前还有着“我都花钱买了电脑了,难道软件还要钱吗?更别提
GoogleIO大会现在可以开始注册了,虽然比宣布的要晚一天,但是依然让人期待,虽然像我这样的中国大陆区的程序员无法前往旧金山一睹google的风采,但是我们还是可以瞻仰一下googleIO页面的嘛:https://www.google.com/events/io每年的googleIO大会的页面都做的非常好玩,不得不承认,我真是好喜欢google :)。今年的IO页面依然有各种各样有趣的东西,有兴
当然,这是从程序员推动去升级开发工具,如果从项目经理推动的话,就容易的多了,一句话“你们都给我用vs2013开发”,其他的事情自然有人去完成了,程序员要做的不过是安装一下vs2013罢了。但是有多少项目经理是真正关心程序员拿什么开发,又或者程序最后拿什么编译的呢?呵呵!其实只有程序员关心这些。我相信所有跟我一样的程序员都是喜欢尝试新鲜事物的,所以很多情况下,你虽然看到的程序是用vs2005编译的,实际上我很有可能是用着vs2013在做开发,只不过编译给你的是vs2005编译的罢了:)
前段时间,在给我们游戏服务器写lua的脚本的时候,发现了一个奇怪的现象,一段lua代码只要一执行就把服务器给搞挂了,仔细分析了一下,发现这段lua代码并没有执行什么特别的操作,甚至都没有跟我们服务器的C++层交互,仅仅只是使用lua自身的一些库函数,而且只对windows平台下的服务端会产生这个崩溃。初步认为是windows平台的原因。于是我在windows平台下编译了lua的源码,跟进去后发现原
已经拿Lua用了快两年的时间了,但是每次用到字符串的模式匹配的时候就总要去翻看Lua官网的说明,网上也没有一个比较详细的说明,也有好多朋友都向我询问这块的内容,其实这块的难点有三: 一个是对Lua的正则表达式不熟悉; 另一个是对Lua中string库提供的几个函数的用法不熟悉; 还有一点是Lua的string库提出了一个新的概念,叫做捕获,其实也不算什么新概念,只是和函数调用杂糅在一起行为就不好理解罢了。
作为一个游戏程序员通过这么长时间和策划打交道,看过了这么多设计并且亲自实现了各种各样的天马行空的想法之后,我终于忍不住谈一谈游戏设计的那点事了。首先,我并非是一个游戏策划,我是一名游戏开发人员,换句话说我是实现游戏逻辑的人。游戏中有怎么样的设定,我们就是把他们实现的人。经常听到玩家会这么抱怨,这“脑残设定”,这里所说的设定是指游戏中各种各样的设计,比如你的攻击力是多少、你的装备是怎么样的、你有没有
在灾难之后的市场哄抬价格不一定是一件坏事,比如水管坏了,大家去买瓶装水,在这种新的供求下会达到一个平衡,每个人都只会购买自己确实需要的水,因为水的价格很高,但是如果政府规定不允许提高水价,那么就会导致部分抢的水的人会购买大量的水进行囤积,而导致别的人买不到水,而且还会出现通过贿赂卖水者来获得水,卖水者也可以根据自己的爱好来决定把水卖给谁,反而是大量的人买不到水。税收会缩小市场的规模,无论是对买方还
最近这段时间虽然很忙,但是去年有很多想要说,想要写的东西都没有拿出来。一个考虑是自己思考不成熟的内容,拿出来会对大家产生误导,但是我发现越是深挖就越发觉自己理解的浅显和片面,就越不敢拿出来和大家交流了。后来我想通了,人非圣贤,怎么可能句句真言,做人嘛,开心就好。今年我会分享更多的内容给大家,也许哪天不在了,但是我的文字还能被人看到也是一种幸福。之前跟组内的小伙伴们做了一次关于 lua 的讲座,内容
首先我很庆幸又活了一年,活着真好。按照惯例先说说过去的2013年。刚过去的这年跟以往的每一年都不同,但又有很多相似的地方,先说说不同,这一年中我失去了一位亲人,我的大舅,也就是我妈妈的大哥因为肺癌转移,在十一月份的时候离开了这个纷扰的尘世,对于他来说尘世可能比纷扰更加不客气。按照六度人脉的理论,这位大舅属于我最亲近的那一个部分,这也是从我明晓事理以来第一位离我而去的亲人,以前我一直把大舅当爸爸的角
lua 源码中有很多巧妙的构思和设计,今天我又发现一处让我不禁拍案叫绝。作者把一个 8 位的整型数通过模仿浮点数的格式扩充了整数的表示范围。先来看这段巧妙的代码:/* ** converts an integer to a "floating point byte", represented as ** (eeeeexxx), where the real value is (1xxx) * 2^
接着阅读 lua 的源码,惊喜越来越多。比如今天看到了一个快速计算 log2(x) 的方法。代码如下:int luaO_log2 (unsigned int x) { static const lu_byte log_2[256] = { 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 6,6,6
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号