- 博客(106)
- 资源 (6)
- 收藏
- 关注

原创 Unity人工智能之不断自我进化的五人足球赛
本文基于我前面发的两篇文章,需要对ML-Agents有一定的了解,详情请见:Unity强化学习之ML-Agents的使用、ML-Agents命令及配置大全。我前面的相关文章有:ML-Agents案例之CrawlerML-Agents案例之推箱子游戏ML-Agents案例之跳墙游戏ML-Agents案例之食物收集者ML-Agents案例之双人足球本案例为本文根据双人足球基础之上尝试改进的五人足球。本案例使用了Unity的ML-Agents组件开发而成,这里使用了多智能体强化学习的算法MA-POC
2021-11-24 22:03:59
6773
12
原创 node.js服务器基础
node.js是基于事件驱动的,通常在代码中注册想要等待的事件,设定好回调函数,当事件触发的时候就会调用回调函数。1: 在通讯的过程中,我们可能有发送多个数据包,数据包A,数据包B,数据包C,此时我们最好的期望是每次收到数据包A,数据包B,数据包C。但是TCP底层为了传送性能,可能会一次把ABC所有数据一起传过来,这个时候收到的是A+B+C,这个时候上层傻眼了,无法区分A,B,C这个叫做—粘包;这里我们规定了传输的数据包含三个部分,0:服务号,1:命令号,2:数据,下面的代码体现了这两种协议的封包和解包。
2024-10-12 18:28:41
1615
1
原创 Unity游戏通用框架——UI的管理和加载
需求:为了方便UI的管理,编写一个管理类,管理所有UI的加载、隐藏或销魂,每个UI都继承自一个UIWindow类,存放在Resource的指定目录下,通过UIManager进行管理。每个继承自UIWindow的UI天然有UI的打开关闭等基本功能。
2024-10-11 12:32:02
540
原创 hexo博客部署到云服务器
在宝塔的网站页面创建一个PHP项目,设置好域名,把网站的根目录设置为刚刚建立的hexo目录,在高级设置中选择默认站点为该站点。本教程基于宝塔,简单易上手,需要注意:使用宝塔之后,不要再用命令行来同时安装网站上已有的库了,否则会出现不知名的bug。首先拥有一套云服务器,安装宝塔,系统尽量采用最新的版本,Centos不要用8,可以用7或9。然后可以尝试hexo c,hexo g,hexo d,三连部署了。直接按照首次的提示安装即可,也可以在网站的页面上安装。本地的hexo配置脚本config,修改对应的配置。
2024-10-11 11:59:14
496
原创 Unity游戏通用框架——事件的订阅和发布(观察者模式)
在游戏开发的基本思想中,逻辑与表现的分离极为重要,相互之间并不关心具体实现,只注册对应的事件,有事件发生时才调用相应的函数。
2024-10-11 11:47:46
686
原创 Unity游戏通用框架——单例模式
Unity的单例可以分为两类,一类单例是C#中的纯单例,用于进行数据的管理(例如角色类管理器,房间类管理器,数据管理器等)。一类是基础与Unity的MonoBehavior的单例,用于跟Unity相关组件的游戏管理(例如声音管理器,游戏管理器,场景管理器等)用法:根据用法直接继承上面两个类的其中一个即可。
2024-10-11 11:44:30
618
原创 C/C++服务器基础(网络、协议、数据库)
包含Socket通信、Select和IOCP管理模型、文件异步、多线程、libuv使用、protobuf、TCP、UDP、Websocket、mysql、redis、Json和Base64编码解码、HTTP等
2024-07-08 10:29:00
1648
原创 protobuf的环境搭建及使用
(2)google::protobuf::Reflection 反射对象, 通过它 + FieldDescriptor, 能set/get filed对象的值;2: 每一个Message对象,可以通过统一的对象工厂来构建, 根据协议生成了代码后,只要传入Message的名字,就能构建出对应的Message的类的实例;(1)google::protobuf::Descriptor 描述对象,是Message所有Filed的一个集合,它又包含了。g: 在使用自动生成的代码反序列化(解码),生成数据对象使用;
2024-07-08 10:25:03
971
原创 服务器的Select管理模型和IOCP管理模型
1: IOCP: 是windows针对高性能服务器做的IO的管理模式,又叫完成端口;Linux平台有类似的机制叫epoll。用于监听所有Socket,在服务器监听连接端口的同时,能够接收所有客户端传过来的数据。1>提交一个监听请求,使用完成端口来等待这个请求到来;2>请求来了后,处理,继续提交请求;2>请求完成后,处理完后继续提交;1>提交一个读取数据的请求。1>提交一个发送数据的请求;2>请求完成后,继续处理;
2024-07-08 10:09:08
275
原创 Socket通信编程的最简单版本
Socket上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口。这两个部分的代码实现了客户端和服务器的最简单通信,先运行服务器程序监听端口,再打开客户端程序,客户端程序会与服务器建立TCP连接,并发送“Hello”字符串,服务器收到后会回复一个“Hello”给客户端。App通过Socket发送和接收数据,主要提供了TCP Socket和UDP Socket来收发数据,基于Socket对象操作系统提供了一系列接口来收发数据。
2024-07-02 17:40:09
428
原创 Unity在非继承自MonoBehaviour的脚本启动协程
在Unity中,协程通常是通过MonoBehaviour的StartCoroutine方法来启动的。很多时候,我们写逻辑层代码的时候也希望能够调用协程,例如网络通讯等功能,这就需要一个中介来帮你做这件事。这个中介通常是一个继承自MonoBehaviour的管理类,它可以提供启动和管理协程的方法。这个脚本使用时会自动生成一个空物体并完成挂载。
2024-06-22 00:04:36
719
原创 强化学习中的自我博弈(self-play)
但随着训练的进行,探索奖励应当逐渐衰减为0。第二是对手抽样,智能体在面对过强或过弱的对手时,训练都会难以取得成效,因此环境中需要存储对手不同时期的训练版本,让较弱的一方有机会获胜,较弱的一方策略提升的同时会反过来促进较强一方变得更强。为了判断智能体的强弱,使自我博弈使用水平相近的智能体进行对抗训练,根据ML-Agents中的做法,较好的解决方式是引入ELO评级系统,这是一种计算零和游戏中两个玩家之间相对水平的方法。也就是说,对方的智能体在己方训练的时候相当于环境的一部分,对手的策略也极大影响了自身的策略。
2024-06-21 23:47:13
2940
原创 Unity客户端的Http通讯实战
可以看到Http发起Get请求非常简单,把对应的参数包含在url中,把API-Key包含在请求头中即可,最后调用JsonConvert.DeserializeObject将得到的Json字符串转换成对象即可。这里以常用的Json格式数据为例,Unity中的对象数据转化为Json就是序列化的过程,反过来就是反序列化。如果要发送一个DELETE请求,不需要上传任何数据体(Body),因为DELETE请求通常不包含请求体。在Http协议中,客户端发送的请求有Get、Post、Put、Delete等。
2024-06-21 23:23:32
718
原创 多智能体强化学习算法MA-POCA
它在集中式训练,分布式执行的AC框架上提出了两个改进点:一是针对数量不确定的智能体组合,使用了注意力机制的特殊神经网络结构,可以处理不定量输入,并且代替了现有的COMA算法全耦合的吸收状态。但是,当单个代理的当前行为导致智能体本身的行为终止(例如自我牺牲)时,它已被排除在环境之外,它不能再观察到队伍获得奖励时的环境状态,也不再能够获得小组后来可能获得的奖励。它是经典的的中心化训练和非中心化执行的算法,即在训练的时候,Critic不仅需要知道该智能体的动作信息,还需要知道其他智能体的动作信息,才能做出评判。
2024-06-20 21:40:07
2033
原创 数据结构与算法:python栈和队列的用法
python的栈和队列其实都算作一个数组,栈从最后一个元素开始推出,队列从第一个元素开始推出。由于从第一个元素删除需要挪动数组,所以可以采用双向链表代替,时间复杂度大大降低。
2023-12-07 13:33:37
238
原创 数据结构与算法数组篇:O(1)插入删除元素
遇到需要逐个遍历判断并删除集合内元素的情况,可以逆序进行遍历,这样就能避免删除后元素减少而越界。注意del函数比较耗时,所以有更好的办法最好不用。
2023-12-07 13:27:38
250
原创 游戏配置表的导入使用
其中把第一行的Tables\改成自己存放Excel文件的文件夹,Data\改成存放Json文件的文件夹即可,第二行是复制Json文件的命令。在DataManager单例初始化后,调用Load函数读取json文件,就能使用配置表了。那么程序怎么把把这张配置表导入使用?生成的Json文件如下。
2023-12-03 21:49:20
792
原创 URP渲染管线简介
URP的设计目标是在保持高性能的同时,提供更多的渲染功能和自定义选项。与普通项目相比,会多出Presets文件夹,里面包含着一些设置,包括本色,声音,法线,贴图等设置。全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,主光源和附加光源在一次Pass中可以一起着色。URP:全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,一次Pass可以计算多个光源。可编程渲染管线:渲染策略是可以供程序员定制的,可以定制的有:光照计算和光源,深度测试,摄像机光照烘焙,后期处理策略等等。
2023-11-12 19:00:01
849
原创 Protobuf简介
优点:性能好效率高(存储和转化)、预生成代码(无需编写解析代码)、多语言支持(开源社区)、兼容性好。就能下载对应版本的Protobuf工具到该项目文件夹中,以后可以复制该文件夹到其他项目中使用。在项目中引用对应的头文件即可使用自己定义的协议。protobuf的数据要经过序列化转换为二进制数据才能在网上传输,对方收到后进行反序列化还原。反序列化:将序列化之后的数据转化为序列化之前的数据结构或对象。序列化:将数据结构和对象转换成能够存储和传输的格式。特点:语言无关,平台无关,高效,扩展性好。
2023-11-10 11:27:32
184
原创 致即将步入社会的朋友们
在漫漫的学习之路上,我偶有所感,综合某位大佬的话,我对目标与结果、努力与成就、自律与行动产生了更高的认识,在这里和大家分享
2022-11-19 18:29:40
463
3
python编程从入门到实践Django项目完整版
2021-01-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人