加载中
关于游戏服务器的服务拆分

先阐明一下观点,可以使用单体(单线程)应用程序解决的问题,都不应该使用分布式系统来解决,因为分布式真的很复杂。 在游戏服务器中,我们做服务拆分,大部分情况下都是为了可伸缩,而不是为...

ECS的初步实现

从我开始研究ECS算起, 到现在已经将近20天了。 第一版ECS库终于实现完成了。先不论性能如何,基本功能都实现了。 在我的理解中,ECS中最复杂的地方是EC部分的管理和查询。而S部分的复杂度主要...

08/19 09:52
20
ECS初探

开始之前先说两句题外话。 GAMES202的作业4是白炉测试,但是我到目前为止还没有做. 其主要原因是,关于GGX BRDF我有点迷惑了. 本来按照LearnOpengl和其他参考书里面讲的, 一般光照计算会分为两...

屏幕空间(SreenSpace)的想象力

在写这篇文章时,我特意去Wiki上搜了一下ScreenSpace, 可能是由于太过直白的缘故,并没有找到标准的定义。 不过他的定义是显而易见的,屏幕空间的所有的信息都是与屏幕上的像素有关的,而不是...

06/30 18:40
0
更新一些GPU相关知识

在学完并实现路径追踪之后,即使增加了多线程渲染,在SPP=1024的情况下,依然需要30+分钟才能渲染一帧。 为了更快的渲染速度 ,我试图通过使用GPU的CUDA SDK来加速渲染。然而测下来竟然还没我...

03/14 12:00
7
地形渲染之爬过的坑

目前我们采用TiledMap的菱形模式来编辑地形,然后再导入到Unity, 将TiledMap的每一个菱形以Unity中的Quad为单位来拼出来。 以目前我的知识水平来看,这么做至少有4个问题。 Quad是以正方形为...

2020/12/28 07:30
37
实现一个数据库存储队列

大约在在两年前, 我就意识到定点存库的必要性,并在今年应用到实际项目中了。 从历史经验来看,将数据库存储行为收集并合并起来,确实可以极大的降低抽象代码过程中的心智负担。我们在写代码...

2020/11/18 23:59
154
再学计算机图形学入门

在网上查资料时,无意间发现了一门课叫《现代计算机图形学入门》。于是事隔将近3年后,我再一次尝试图形学入门。这次学习从8月20号开始,一直到10月11日,约持续了一个半月。 但是这次的学习...

xs
2020/10/12 09:00
81
再谈分布式服务架构

在两年前,我曾经设计过一版,高可伸缩服务器架构, 但只进行了理论推演,并没有使用具体业务逻辑验证过。以这两年的经验来看,这个架构不具备可实施性。 在之前的架构中,我只考虑了Gate和其...

setjmp的使用

以前对于C语言的setjmp和longjmp从来都是知道有这么个函数, 但是不知道什么情况下要使用, 甚至于不知道setjmp的实现机制是什么样子的. 这次在<a href="https://github.com/findstr/coroutine...

2017/02/28 20:45
17
C++的函数指针

看C++代码时看到了一段很新奇的用法, 回来剖析了一下, 感觉虽然原理很简单还是值得记录一下的。 代码大概是这个样子的: class test { public: void a1(){printf("test::a1\n");}; } int m...

2017/03/01 23:50
75
当class遇上union

声明:这是很久以前的文章。 今天同事又踩到一个以前设计时留下的坑,这次是关于union和class中的。 虽然这种设计我并不认同, 但是至少我觉得设计者对于c++的成员内存布局相当了解。 由于面...

c++
2017/03/02 07:55
25
bitfield数据类型的坑

声明:这是很久以前的文章 bitfield并不具有可移植性,因此实际使用中,我都是尽量使用bitand来代替。 然而代码中之前就已经使用了bitfield的定义方式,作为后续开发我没有理由去改掉这个数据...

gcc
2017/03/03 19:43
94
使用多态来做到open-close

自从看了设计模式了解到open-close原则后, 我在写代码时都是尽量遵循着open-close原则来进行编码。 而面向对象中的多态在做到open-close原则中起到不可忽略的作用。 一般在设计之初会先抽象...

2017/03/06 07:56
19
seqlock和rwlock

最近看《linux内核设计与实现》时看到一种叫seqlock的锁,其作用与rwlock有相仿的功能。 在读写频率不对等的情况下,使用普通的互斥锁显然并不是一个好主意。 由于读取内存中的数据并不会产生...

2017/03/06 22:10
21
seqlock和rwlock

最近看《linux内核设计与实现》时看到一种叫seqlock的锁,其作用与rwlock有相仿的功能。 在读写频率不对等的情况下,使用普通的互斥锁显然并不是一个好主意。 由于读取内存中的数据并不会产生...

2017/03/07 07:54
53
tcp使用的进一步了解

以前对socket的了解仅仅局限于listen/connect/epoll/select/close等这些API的表面使用。其具体语义以及一些状态都没有深究。总觉得这样写代码会出问题,今天咬咬牙把《tcp协议卷1》中的Tcp部...

2017/03/08 07:47
28
std::vector的错误使用

声明:这是很久以前的代码 上周五服务器线上出现了几次crash,拿回dump文件分析后发现代码是崩在了对一个引用的成员变量赋值上。 分析了半天也没看出来代码有什么不妥,就先搁置了。 今天同事...

c++
2017/03/10 08:23
158
lua gc的使用

主流的垃圾回收一般都是基于引用计数和标记清除算法. 从内存占用量上来讲, 引用计数无疑是有优势的, 当引用计数为0时, 直接就会将相应的对象清除, 典型的应用就是C++的智能指针. 但是基于引用...

2017/03/13 20:58
366
解耦

事情起源于昨天的一次讨论。模块A如何在不同的时期返回不一样的数据类型的值,供其他不同的模块使用。 我自行脑补了一下,其实这类问题可以归结为对数据类型的解耦。 考虑一种特殊情况,有m...

c++
2017/03/20 07:56
49

没有更多内容

加载失败,请刷新页面

返回顶部
顶部