- 博客(34)
- 收藏
- 关注
原创 UE5 崩溃问题汇总!!!
在你遇到这种极奇崩溃的BUG ,难以解决的时候。尝试了N种方法,都不行的解决方法。在你查看了环境,安装配置都没问题的时候,就是无法编译生成文件,导致一直项目打不开。把所有项目重新构建一遍,相当于在VS内部拉起来生成工具,这样差不多就基本解决了。找一个之前完好的无损的项目,正常打开ta。在VS里面进行生成编译。主要问题还是在VS的生成工具抽风。也就可以回去打开原来有问题的项目了。
2024-12-25 00:27:10
983
1
原创 Matching——网络游戏大厅匹配 第三章(终章)
每种匹配算法都有自己的优势与劣势。但,给玩家都留下了很深的诟病!公平吗?并不!只是能匹配到相对实力的队友或者队友。愉快吗?也有,也就前两把,玩多了就想卸载游戏,就像吃泡面一样,也就第一口有味道。坐牢吗?是真特码坐牢!一但开启了坐牢模式就是无限期!现在如今,拳头公司,正常考虑更换TrueSkill,更换为TrueSkill2匹配系统。当然,还需要大量的考虑时间。moba类游戏匹配就到此为止。暴雪游戏匹配机制我们简单来看下暴雪游戏的匹配模式。作为一个玩了20年游戏的我来说,不得不提ta。
2024-10-30 00:38:52
803
原创 Matching——网络游戏大厅匹配设计
至于,后来的游戏,暂时就不用提了。这里要考虑的是,单对单,多对多的问题,组队可能具有很大的优势,因为他们的团队合作能力可能会更好。理想的匹配需要大量的玩家,如果你的匹配是假设会有这么多玩家,那么你可能会做出一些对更现实的数字来说效果很差的东西。如果,是在后期,浑身乏力,无力回天,没有足够技术能力,来解决此事情,那基本就是眼看这产品一步步慢慢的死去,最终消亡,然后,淹死在玩家谩骂的粪坑里!有一半的玩家是可以进行匹配的,当然随着后期,玩的等级都达到了,我们就只需要考虑同段位匹配的人数了,人数也就变多了。
2024-10-19 10:09:52
846
原创 Lobby——网络游戏大厅设计与参考建议!!!
点击匹配之后就进入了队列开始等待, 服务器开始检索玩家,查找足够的玩家,进入匹配队列,检索大厅,查看谁在匹配,检索房间,查看房间状态,有没有房间,能否加入,能否创建新房间,等这一系列的操作完成后,把玩家拉进房间里,开始选择英雄,专业术语叫 Ban/Pick!社交,算是一个游戏中除了玩法,最重要的一环了,比如,我要挂机与对面互喷!这里要启登录服务器了,玩家要与登录服务器连接完成账号的注册,登录请求, 只有登录成功才能继续下一步,服务器会专门有一个登录服务器用来执行玩家的登录,注册,注销,等等一系列的操作。
2024-10-17 00:25:53
585
原创 std::vector 小问题记录,使用注意事项!!
push_back是放到元素的最后一个位置,使用push_back()远没emplace_back()来的高效!vector是可扩容容器,会根据元素数量的大小,自动的进行扩容!这里在内存上占用的空间起码是原来空间的1.5倍。28行,泛型for 在C++11之后有了泛型,这里又触发了,重复复制元素的问题。泛型给了很多的方便之处,但,还是没明白其中的所以然。27行,又创建了一个新的容器,没有给出具体大小。解决方法:声明 &tiles 引用tiles 前缀const, 加const 只是让你引用的更加正确一点。
2024-10-14 23:11:53
176
原创 聊聊《晶核》的网络服务器架构——看看人家是怎么用UE的
最近一直再找关于UE5 DS服务器架构方面的文章,找来找去发现真没有!!如果,按官方文章那点案例来做,那真是不知道有多少坑要踩。首先, DS服务器,是一个损耗很大的服务器。里面各种内存上的消耗,CPU占用,都是一个很大的问题。按官方文档来说,只有个开头案例,就说了怎么用,编译一下,却没告诉你怎么优化,文章也是少的可怜。不过,有源码,有能力的可以去看看。里面实现了各种各样的细节,你甚至可以用ta做任何事情。 但是,损耗的事,就看你自己了。是否能财大气粗的承受住这么大的损耗。
2024-08-21 06:13:08
1050
1
原创 总结一下使用UE5中Nanite与Lumen 的一点注意事项
这个算法功能的实现,有很多讨巧地方,只会渲染我们视线所能看到的模型,并且会自动加减优化模型的面数。正常情况下, 在场景使用了大量的,高质量的模型,重复资源,场景会变的越来越卡,一动不动,只能重启。打光一直在布景的过程中,也是门技术活,lumen做到了全局的动态实时光照,打起来更加的方便,切目前效率上来看也是最快的。不管是FFSR还是DLSS,都是有一定损耗的,当然,肉眼可能无法观察出来,两家算法也是各有特色,都说自己是无损耗的。值得高兴的,最新的Lumen 在UE5.4中已经开始实验性的在移动端应用了。
2024-08-08 18:46:46
2023
原创 C++高级优化,你应该多使用关键字与引用
weak_ptr可以用于解决循环引用的问题,当两个对象相互引用时,如果使用shared_ptr来管理引用,会导致引用计数无法归零,从而导致内存泄漏。weak_ptr可以从一个shared_ptr或另一个weak_ptr对象构造,它不会改变引用计数的值,也不会对所指向的对象产生拥有权。使用weak_ptr时,需要通过lock()函数获取一个shared_ptr对象来访问原始对象,如果原始对象已经被销毁,则lock()函数将返回一个空shared_ptr对象。move操作的背后,是一大段的长篇大论!
2024-04-11 09:55:57
878
原创 老生常谈C++, 又是充满BUG的一天
按照欧美那边的习惯与标准,添加足够的注释,会使得代码的更加的具体与明确,使得你调试起来,可以尽快的定位问题,看起来一目了然。比如,我们在C++里面会做各种类型的强制转换与隐式转换,某些时候,在你不知道的情况下,C++帮你做了隐式转换,你也没意识到,或者你做了强制转换,但,并没有标记ta。所以,一旦出现了问题。这里,我解释一下,指针之间的相互操作,访问内存,是一直存在的一种操作,即便不用ta我也可以直接转换,访问另一块内存,详见古老的C语言。的机制,好的,这差不多就是四种cast 的一些简单使用注意事项了。
2024-03-22 21:07:36
848
原创 C++<Vector>实现!!最新C++ 11标准特性版
C++ 11特性基础容器实现,包含迭代器实现!(备注:代码里面包含很多新奇地方,切勿乱动,否则内存问题自负)
2024-03-21 00:34:46
153
原创 UE5.2发布会总结——一个只有电脑受伤的世界
ue4在长达四年的时间里,经历了的疫情,各种乱七八糟的版本迭代,从ue4适配到ue5。从中看到了, 多数开发者,在开发过程所遇到的困境。并进行了这次实质性的提升。所带来的前所未有的改变。就比如,我们上面所说的《动态场景》埋下的答案,在这里揭晓。为什么会需要动态场景?ue5 开发团队在多年的总结中看出,开发者只能简单的一步步的布置好场景,启动,关闭再修改,这中间耗费了大量的时间。单纯的准备素材,就已经耗费了多年。提供这次实时的动态场景,开发者就可以边跑游戏边修改场景。
2023-04-07 02:32:08
1584
原创 Malloc源码解读三——Bins与Arena
define bin_index(sz) //首先宏定义,这里表示了替换 bin_index(sz) 申请的内存大小 ,函数体 unsigned long (sz) 意思就是,不管传进来的数值为多少,都会被替换为 无符号的long类型,然后右移>>9 == 0?这里关键点,在于对释放内存的处理,作者是这样想的,在对一个刚刚释放的内存块,并没有对ta进行立即的回收,而是把ta留在了与ta相同大小的内存块中。那就如上所说,省略的这一次合并节省了合并,再分裂,再搜索的时间,这样一步换三步的策略。
2023-04-01 02:18:30
541
原创 《Malloc源码解读二》——语言的背后,全是算法
当我看到这里的时候,原来malloc的设计是如此的巧妙。用了一个双链表结构,表示内存中的chunk(块的意思)。语句中提到的Knuth 是一位算法大师,不过ta 的成就可远不止这些,学习过计算机算法的童鞋大概多少都会知道;只是没想到,人会用一个如此简单的数据结构,来管理内存的分配方式,此乃拙见。值得注意的是,所谓堆内存,其实就是一块长度可变的连续虚拟内存,详细可见《Linux-UNIX系统编程手册》第七章。其中,chunk,mem,nextchunk 是三个指针,分别指向不同的内容。就如上面所展示的样子。
2023-03-09 13:09:19
456
原创 《C++23》——起草
官方已经发布了C++23的修改更新意见!只不过只有草案,还没有实装进标准官方文档中。不过快了,整理好之后马上就会有了。#elifdef。
2023-01-31 01:21:29
2003
原创 游戏场景服务器搭建——(SenceServer)
今天来写一下游戏中服务端,场景服务器的实现思路,游戏场景服务器在服务端后端,一直都是必不可少的一项。一般像稍微重度的游戏,手游都少不了一个场景服。当然,除了那些乱七八糟的棋牌,斗地主什么的不需要场景,直接就进房间了。SenceServer在后端中一直都是一个大项,名字不用一样,用法都是一样的。当你看到差不多类似的实现,可以暂时把ta当成是一个场景服务器来理解,等你具体的搞明白了,再具体的细分。在MMOAPG里面所有的表现几乎都在场景上实现。玩家的上线,下线,各种乱七八糟的消息广播都要在这里表现。
2022-10-24 00:30:47
1632
原创 记录一下最近的小问题——vs许可证无法下载问题解决
点到这里的时候,尽量什么都别选,选好安装路径就行了。系统会自动选好需要的文件。点修改,等待安装完成。重新打开Vs就行了。我这里有个两个版本在用, 所以把两个版本的install都下下来。这个样子差不多就解决 许可证问题了。由于没外网的链接和重装过之后的文件皆都丢失了。所以用这install,补全这些功能,许可证。适用于 账号登陆之后无法下载,没有效果。点外部链接登录无效的和重新装过系统的用户。
2022-09-06 16:07:20
5482
2
原创 SQL——shell命令
8.0之后的sql毛病是真鸡多,把这些常用的命令的都记录下来。里面包含了从安装到使用,远程登录,密码,redis,等等乱七八糟的问题。
2022-09-02 18:51:07
1956
原创 守望先锋世界观架构 ——(一款好的游戏是怎么来的)
这两天人被隔离了。去玩了ow2。只能说,让人大失所望,那个经典可能再也回不去了。曾经的那批人早已物是人非了。可能因为内部人员频繁的变动,这几年的各种问题。导致了这帮人早已不知所踪了。那个曾经为追求卓越,而存在的暴雪。真是让人感慨。OW世界观,如何做到的?前身:在ow之前,暴雪有一款叫做“泰坦计划”的项目,投入了很大。结果不幸夭折了。这个让暴雪的人打击很大。游戏公司中,一般,一款项目的直接砍掉,人员也会跟着变动。可能会全部裁光,只留下核心的人员。所以,前期的大量资金投入,人员............
2022-05-31 12:42:00
1685
原创 蓝图 之 守望先锋
什么是蓝图???蓝图在哪? 老早就听说过UE4的蓝图了。但,从没用过。第一用蓝图竟然是在守望先锋里。。。某天的晚上,我闲的p慌。点开了自定义的地图工坊。点开的一瞬间,好像走进了魔法殿堂。卧槽! 可视化编程脚本。 If, Action 条件,动作。再一想,卧槽,这不是蓝图吗?守望先锋什么时候不知不觉的在里面塞了张蓝图? 我一直没发现。其实,自定义游戏工坊,一直都有玩过。但,就是没往深的点过。某天的我,点开一看,豁,原来这里面还藏了一个我一直不知道的背后宫殿。N...
2022-04-10 21:16:19
3055
原创 Go游戏框架初探《一》
这两天去看了一下go, 总结一下,目前的go开源游戏框架。不得不说,如今的大趋所势。go语言转变如此之快。go开源游戏端应用的框架,已经多到数不胜数。这才两年的世界里,就发生了如此多的转变。cpp所带来的痛苦,真让人非常印象深刻吗?在快捷开发,简单类型游戏中,比如卡牌类,回合制这种类型游戏,cpp可能确实不占优势。因为累啊!人都想快捷开发,避免更多的问题。人不想因为一个内存问题。纠结半天。稍微不注意,服务器就宕机了。解决起来又非常的棘手。单调试错误 ,可能一星期就过去了。边调试边骂N的呢种。...
2022-02-21 13:42:10
9097
1
原创 《STL容器概括成员方法》——这份表格真是解决了我的长篇大论
迭代器非法使用注意事项:容器成员方法:官网:https://zh.cppreference.com/w/cpp/container
2022-02-08 15:29:01
488
原创 C++ --《Sort》
今天把几个无聊的算法上传一下。都是N年前写过的小玩意,没什么很强的复杂度。实用就好。template<typename T>class Sort{public: void Bubblesort(T* arr, int len);//冒泡排序(改进) void BucketSort(T* arr,int len);//桶排序 void selectSort(T* arr, int len);//选择排序 void Insertsort(T* arr, in...
2022-01-28 11:01:44
1588
原创 C++ 单例
众所周知,网上一直流传着,不知道叫什么的单例,乱七八糟写啥的都有。不是报错就是内存泄露的,没一点实用的。 那么今天就写一个。单例始终就保持一个实例。 在C++ 中我们就只要注意两点。哪里两点? 拷贝构造,拷贝复制 C++ 默认类中,会包含六个构造函数。我们只要把上面这两个禁用掉就没问题了。 怎么禁用?用新特性(=delete)。别跟我扯什么,这哪的。class Singleton{ public: static Singleton* GetInstan...
2021-12-27 16:25:34
775
原创 C++——进阶之路
我一直想是不是拜师,学学艺。有着大佬的庇佑,那岂不是轻车熟路,畅通无阻。后来,我又想了想。完全不用!按如今的环境,以及各种情况,综合因素,不可抗力,等等数不清的原因——不可能。那么,究竟该如何在C++的道路上进阶。如果你是从娘胎里就开始编程的,有着这一个会编程的爹。那真是——如获至宝(苦命的孩子)。那么,我们半路出身的,野生的,该如何学习。又没有这么厉害的爹,考上大学都已经是自求多福了。选了计算机专业,希望以后出来能挣大钱。结果却是没日没夜的996。说了这么多,你还教人家...
2021-12-26 01:53:57
2687
1
原创 架构篇《一》:我会什么?能完成一个什么样的架构
开篇一:我一直觉得国产游戏,要上升一个梯度。不再是那些,一天到晚648的氪金,圈钱跟时间。某讯的楼已经盖到40层那么高了。覆盖面积,可以算半个皇宫了。从技术角度和人才上,都是绰绰有余的, 可还是在做着648氪金,骗小孩子的钱。 国产游戏起步在, 03年左右。03x讯代理某游戏,上架了国区。那个时候的网游,初步还都是2D,大话西游,传奇这些类似暴力的东西。那个黑暗的年代里,烧钱如烧纸,倾家荡产打装备备。到我们这个年代,这些东西默默的退场了。给我们现在的00后怕是,根本不...
2021-12-04 22:18:07
2877
原创 总结下,这几天的一个面试(你咋没直接干ta呢)
初面,我就不说公司了。给ta留点脸。当时,我就想你咋没一套军体拳给ta干过去,打的ta满地找牙!教教ta做人。这家公司很奇怪,啥尿性就不说了。起初,以为四点中到,还以为啥呢!人多的踩破门了。结果没有,我就提前去了。在前台登记了下, 那张表开始填,还有面试题。我第一眼就看了面试题。觉得没啥,好像比较基础,就开始填了。写完之后我就开始看那些题了。三页纸,没多少东西。其实很就答完了。然后,我没急的交。想看看ta葫芦里卖的什么药。里面有些题,明显知道怎么解,有思路。写出来多少有些不满足的地方。所以就没写。在哪里
2021-12-01 01:58:26
179
原创 UDP重传,似牛非马。。。
问,为什么要udp重传???答:不为什么,只有不断的需求,没有写完的代码?只要有需求,ta就会存在。可能会有各种ADP,BDP,RUDP(这个真有,已经写好了git地址),QUIC(Google,快速传输协议,2016发布出来,在一次无意的抓包的时候,看到了这个协议。总结就是很牛批。脑瓜子不好的,尽量不要看。)为了,看这个协议, 我又重新翻看了《TCP/IP卷一》。看看有什么落下的。。。看了一圈结果就是没有。TCP的强悍之处,远远超出了UDP。现在在UDP基础上做重传,相当于给UDP实现重传机制。T
2021-11-13 22:26:17
4765
原创 今天教大家一个这个玩意,怎么写mysql_to_redis的一个批量脚本。
应用:平常在使用redis 跟mysql做数据同步的时候, 难免会用到这些东西。从mysql里面查询数据,然后塞入到redis里面。适用在大数据预加载数据,批量导入。算是间接的一种调用方法。启动之前,就直接把msql数据,同步到了redis里面。其实就是个sql文件,不过这样写,我还是觉得沙雕了点。完全可以用一些批量转换的工具,找了一圈发现没有。或者好用的,总是有各种欠缺。所以最后我还是用回了这个。git上有一个用go写的(go-mysql-transfer),用了一下,感觉还是差强人意。...
2021-11-07 14:50:01
167
原创 lua闭包,什么是lua的闭包。闭包又是什么用来干什么。和lua的面向对象又是什么lua 元表又是什么 东西。。
初次看到闭包还是n年以前的时候, 那时候懵懵懂懂的就用了lua。对lua也是 一知半解下面我们来看下这个东西。。
2021-09-01 23:48:01
187
原创 无缝大地图世界构建!!!为什么选择无缝大世界地图构造????
MMO 魔兽世界。。等诸多的开放世界游戏都用到了无缝大世界构建。不一一列举了。下面开始我们的大地图世界构建,和会遇到什么样的问题难点。 通常,都是先把游戏世界分成小块,然后在相邻的小块间加入一些服务器间的通讯,每个服务器都可以自主地作出反应。服务器互相通知那些与边界接近的对象,这样来,每个服务器都可以通过它们的本地代理来对远程对象(在某种程度上)进行控制。问题1:分割游戏世界怎样才能最好地划分游戏世界?这个问题往往依赖于特定的游戏。在一个由玩家控制游戏人物的基于地形(t...
2021-08-29 17:13:58
2787
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人