ECS初探

开始之前先说两句题外话。 GAMES202的作业4是白炉测试,但是我到目前为止还没有做. 其主要原因是,关于GGX BRDF我有点迷惑了. 本来按照LearnOpengl和其他参考书里面讲的, 一般光照计算会分为两部分. 一部分为Diffuse, 一部分为Specular. Diffuse又可以看作是次表面散射的一种简化。这样我们可以用菲涅尔反射, 来计算一束光线有多少反射出去(BRDF项),有多少进入物体内部进行次表面散射(Diffuse项), 然后把两部分加起来就行了。 但是闫神讲课时说:由于已经采用了微表面模型,就不能……

2020

写年终总结前,照例翻了一下今年以来的blog, 意外的发现2019去年的年终总结同样拖到很晚。不过今年之所以拖这么晚,大部分原因是今年特别冷。坐到电脑前只顾着瑟瑟发抖了,哪还有心情写年终总结。 翻了一下去年的目标: 《概率论及其应用·卷1》 《具体数学》 《计算机程序设计艺术》 重新温习一下以往学习过的知识,看看能不能再次打破一下这几年形成的思维定式 总的来讲 有部分完成。 《概率论及其应用·卷1》看了一大半,该看正态分布了,不过现在应该差不多忘光了。 《具体数学》……

再谈性能优化

版本开发终于接近尾声了,最近在做一些扫尾(性能优化)工作。老实说,这是我第一次细致的测量业务逻辑的性能。 我曾一度以为游戏服务器是io密集型程序,cpu其实很轻,至少对于一般的卡牌游戏应当如此。 虽然天天跟策划㗏㗏性能,但是那仅仅只是为了追求更好性能而已。 我们的服务器程序有10w+的echo能力,再加上我写逻辑从来都是按我知道的性能最高的方式写,所以我从不认为有一天会有处理请求过慢的问题,也从来没有思考过这个问题。 这次测试深深的给我上了一课。 在最初的版本中……

2019

终于还是赶在农历年之前抽时间来写年终总结了。 2019对我而言其实技术上并没有实质性进展,而去年定下的目标,一个也没有完成。 这无疑是一个令人沮丧的事情。虽然前几个月时间在忙其他事情,但根本原因是我的技术进入到了一个瓶颈。 几年前我就已经发现,随着时间的增长,我的技术提高量越来越低。 但像今年这种技术再无一丝实质性进展的情况确实是第一次出现。 仔细反思了一下,技术增长量的降低可能和我自己的学习模式有关。 大部分人学习方向都是向上的,比如学了编程语言,去……

历史之2018

2018年已经成为历史,当我想总结一下过去一年的所得时,却发现什么都想不起来。借着过去一年的blog和github,总算可以粗略回溯一下历史。 去年的今天,我定下三个目标: 1. 阅读lua源码,并实现虚拟机 2. 阅读《计算机程序设计艺术》 3. 实现一个软件光栅器 到今天为止,lua源码只完整阅读了GC部分,计算机程序设计艺术几乎等于没看,只有软件光栅器做了个七七八八(但其实连光照都没做完)。 下面来说一说流水帐。 过完农历年后,我先挑了“软件光栅器”来做。 一方面是因为《计算机程……

再见2017

2017年过的格外的快,似乎2016年元旦刚过去没多久,2017年的元旦又来了。 大致回溯了一下2017,好像什么也想不起来了。只好重新扒了一下Blog,才慢慢回想起这一年到底干了些什么。 仿佛是为了印证“计划赶不上变化”这句话。2016年定下的目标,依然没有全部完成。这几乎是一个惯例,每年初定下的目标,到了第二年去看时,一定没有100%完成。而我也已经习惯了这个规律。 2016年目标进度如下: luaVM的源码并没有读完,只是其中断断续续的读了一部分。到目前为止,已读代码包括:string……

回首2016

16年初我又辞职了,即使在满足我的薪资要求的情况下。主要原因就在于,我的技术路线图受阻。 原本按我的打算,在有了少许高并发和socket经验之后,我需要进一下积累数据库使用实战经验。 然而在上家公司中,数据库部分操作是单独剥离出来,由java实现的。 而我所维护的C++部分仅仅处理高并发和正常的战斗逻辑并不涉及任何数据库部分。 因此,为了顺利继续我的技术路线图,我违反了自己的约定。 如果要找一个词来概括我2016年的大部分内容,那就是lua。 是的,正是由于这门语言,让我……

2015

眨眼间2015年已经过去了, 也许是我最近记忆力变差了, 总感觉好像昨天才辞职的样子。 在2015年年初辞职时, 其实我的内心非常的纠结,一方面是安逸,一方面是未知, 很难下定决定到底何去何从。 终于还是求知欲战胜了懒惰。因为我发现如果再干着同样的工作,我的技术不太可能提高太多。所以最终我还是选择了辞职,由于上一份工作的原因,相比前端程序来讲,我对于后端的兴趣更大。因此在找工作方面,我更着重于找服务器编程方面的工作。因此后来就找了一份游戏服务器工作. 现在想想……

lua编码风格

最近都是在看lua代码, 并在其基础上进行修改和增加功能. 在代码中看到了不少个人感觉很不好的现象, 就忍不住吐槽一下. lua做为一门动态语言, 其弱类型及灵活性, 的确大大加快了开发和修改的效率. 但是这种自由有时不加以限制的使用, 有时候可能会造成很严重的后果. 先以我有限的理解说一下lua语言对于访问控制的有限支持. 定义变量或函数只有加上local才代表局部变量或函数, 否则只要这个模块被加载就可以被其他模块访问. require代表要去加载某个模块, 如果两次调用require去调……

入职一周

经过了大半个月的折腾, 总算是换到纯软件公司了。 有时不能不感叹天意弄人, 这次依然没能如愿做纯逻辑的后端, 不小心做了客户端。 以前对于游戏开发领域几乎没了解, 所以其实这一周几乎都是在代码和百度中度过的。 在上一份工作中, 由于工作内容的特殊性,软件需求一直变化和增加, 所以一直通过研究软件工程来做到更合理的模块划分和接口定义, 以便代码对于未知需求有一定的应变能力。 虽然需求多变, 但是其实现难度变不高,几乎不会用到算法, 惟一一次用到的一个算法(快……