C++的反思
游戏中角色变色如何实现?
还原被摄像机透视的纹理
再谈网游同步技术
实时动作游戏在近年来得到迅猛的发展。而游戏同步问题,成为大家继续解决的核心问题之一。早在 2004年,国内游戏开发还处于慢节奏 RPG满天飞的情况下,我就开始实时动作游戏研究,分别在 2005-2006期间写了一系列相关文章,被好多网站转载:
帧间同步模式:《帧锁定同步算法》(2007): http://www.skywind.me/blog/archives/131
玩法规避模式:《网络游戏同步法则》(2005): http://www.skywind.me/blog/archives/112
预测插值模式:《影子跟随算法》(2007): http://www.skywind.me/blog/archives/1145
如今十年过去,网上越来越多的人开始讨论游戏同步技术了,然而很多文章往往只针对某种特定的游戏情况,而观点又经常以偏概全。很多人并没有真正开发过实时动作游戏,更别说了解同步技术的前世今生了。转载别人的观点并加上自己理解的人很多,实际动过手的人很少。避免给更多人造成无谓的误导,我今天基于先前的实践和对欧美动作游戏,战网游戏,主机游戏(PSN,XBox Live等)网络技术的了解,来对这个问题做一个简单总结:
……游戏服务端架构发展史(下)
计算机图形算法中的光滑边缘算法经历了那些变迁?
主要有四种方法:
- wupixel:wu xiaolin提出的最早的绘制直线和圆的平滑方法,优点是简单快速,缺点是只有一个方向的像素偏移被考虑了,效果普通,而且只能绘制1个像素宽度的直线,超过一个像素后,两个端点就会非常不自然。
- supersampling:解析度扩大数倍绘制,四个或者多个像素合并平滑成一个像素,优点是效果好,缺点是计算量大,多用于显卡加速,cpu基本没发做,显卡负担也大:
当然小范围的ss可以用来改进界面字体效果,如windows字体长宽扩大两倍绘制后再平滑down sample成小尺寸,四个像素点均匀合并成一个像素点,会好看很多。
游戏服务端架构发展史(中)
《游戏服务端发展史》转载请著名出处:http://www.skywind.me/blog/archives/1301
类型4:第三代游戏服务器 2007
从魔兽世界开始无缝世界地图已经深入人心,比较以往游戏玩家走个几步还需要切换场景,每次切换就要等待 LOADING个几十秒是一件十分破坏游戏体验的事情。于是对于 2005年以后的大型 MMORPG来说,无缝地图已成为一个标准配置。比较以往按照地图来切割游戏而言,无缝世界并不存在一块地图上面的人有且只由一台服务器处理了:
每台 Node服务器用来管理一块地图区域,由 NodeMaster(NM)来为他们提供总体管理。更高层次的 World则提供大陆级别的管理服务。这里省略若干细节服务器,比如传统数据库前端,登录服务器,日志和监控等,统统用 ADMIN概括。在这样的结构下,玩家从一块区域走向另外一块区域需要简单处理一下:
……游戏服务端架构发展史(上)
手游页游和端游,本质上没有区别,区别的是游戏类型:
《游戏服务端架构发展史》转载请著名出处:http://www.skywind.me/blog/archives/1265
类型1:卡牌,跑酷等弱交互服务端
卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可,所以实现往往使用简单的 HTTP服务器:
登录时可以使用非对称加密(RSA, DH),服务器根据客户端uid,当前时间戳还有服务端私钥,计算哈希得到的加密 key 并发送给客户端。之后双方都用 HTTP通信,并用那个key进行RC4加密。客户端收到key和时间戳后保存在内存,用于之后通信,服务端不需要保存 key,因为每次都可以根据客户端传上来的 uid 和 时间戳 以及服务端自己的私钥计算得到。用模仿 TLS的行为,来保证多次 HTTP请求间的客户端身份,并通过时间戳保证同一人两次登录密钥不同。
每局开始时,访问一下,请求一下关卡数据,玩完了又提交一下,验算一下是否合法,获得什么奖励,数据库用单台 MySQL或者 MongoDB即可,后端的 Redis做缓存(可选)。如果要实现通知,那么让客户端定时15秒轮询一下服务器,如果有消息就取下来,如果没消息可以逐步放长轮询时间,比如30秒;如果有消息,就缩短轮询时间到10秒,5秒,即便两人聊天,延迟也能自适应。
此类服务器用来实现一款三国类策略或者卡牌及酷跑的游戏已经绰绰有余,这类游戏因为逻辑简单,玩家之间交互不强,使用 HTTP来开发的话,开发速度快,调试只需要一个浏览器就可以把逻辑调试清楚了。
……你为什么会离开游戏行业?
这个题目本来不想讨论,现实生活中我是一个尊重他人的人,而尊重他人最重要的是尊重他人的选择,尊重他人的价值观和梦想。但是身边太多惨痛的教训,让我有种不吐不快的想法,大家偶尔也该停下忙碌的脚步来想想自己要走的路,也是一件很有意义的事情,所以如果言语中我伤害了你的梦想,请你绕道而行:
下有地雷,玻璃们请小心绕路:
观点1:开宝箱
游戏更像一个项目,不是一个事业,研发个一两年产品上线,是死是活听天由命。游戏产品成功率已经1%了,很多项目是挂了,即便踩中宝箱了,游戏上线,盈利了,根据现在游戏周期,也就能挣一笔。这完全跟开宝箱一样,上线前对结果毫无把握,几年时间投入进去,宝箱一开所有人就阿弥陀佛。
即便火了,火完以后能保证下一款产品成的概率有多大?以大公司的5%的高成功率来算,一个团队同时成功两款游戏的数学概率是0.25%。即便你团队人员经验丰富,你能把这个概率提到多高?大部分的团队都是在:“加班 - 开宝箱 - 项目重组 - 加班 - 开宝箱” 这样一个死循环中,把自己一年又一年的青春给浪费了,身边太多人,十年前他们在开宝箱,十年后他们还在开宝箱。
某几个著名页游公司,产品开发一年周期,项目分成10%,听着挺诱人的,但是盈利后首先要偿还研发和推广成本,然后扣完渠道分成后剩下的才是项目组的,所以很多项目组为了控制成本,只会找一两个好的主策主程,主美,下面带着一堆刚入行的小弟,天天加班。时间一道,不能盈利,那么制作人走人,开发团队打散重新分配。
所以对于大部分普通员工,都是怀揣着一颗暴发户的心,过着猪狗不如的日子,在常年累月的日子里不断的在 加班和项目重组的死循环里折腾。公司呢?公司只要几十个项目成一个就够吃很长时间了。于是常用的管理手段就是造神运动,发车,发现金给老员工,给他们极高的待遇和荣誉,让所有新人都跟打了鸡血一样燃烧着自己的生命向前冲。
可以参考最近的文章:【败局】成都:手游第四城的泡沫与坍缩
PS,上面所说的概率很多人不相信有那么低,网上的数据到处都是,身边也有例子。比如,渠道每个月要接300+款产品是很正常的,渠道怎么筛选呢?先每个游戏玩五分钟,删除200款,留下100款,然后深度评测一下,再删除50款,剩下50款深度评测一下,给每个员工玩玩,给每个员工的小孩玩玩,如果小孩能玩懂,那证明这游戏还可以推一下,于是留下那么几十款打分ABCD,D基本没机会,C可以试一下,B可以推一推,A的 话可以多推一下。最后能成的也就那么3-5款,这不是1%么?这不就是开宝箱么?
……