GameFramework篇:资源热更新讲解
资源热更新步骤 准备工作: StarForce dev/Update分支 https://github.com/EllanJiang/StarForce/tree/dev/Update 注意下载子库 ** HFS的下载,作为文件服务器 http://www.rejetto.com/hfs/?f=dl** 在这个分支里,E大已经写好了完整的更新流程 具体细节就是 ProcedureCheckVersion流程 声明更新版本更新配置表回调函数 订阅添加WebRequest任务请求的成功与失败事件 添加WebRequest任务请求 添加WebRequest任务请求成功,执行订阅的事件,反序列化为VersionInfo类(包含版本信息以及更新细节),如果为强制更新,就跳转到下载网页下载船新客户端(你没有体验过得船新版本),如果为热更新,就配置下载文件地址,校验本地客户端和下载到的版本资源列表版本号,如果一致,说明不用更新,直接进入下一流程,如果不一致,说明需要更新版本资源列表,更新成功后,进入下一流程。 ProcedureUpdateResource流程 初始化相关数据,...
GameFramework篇:Setting(存档模块)使用示例
存档模块 存档模块的简单使用 GF自带了Setting模块,以键值对的形式存储玩家数据,对 UnityEngine.PlayerPrefs 进行封装。 主要的API在DefaultSettingHelper里面 其中Load功能是个空方法,并没有写,需要大家自己去写,一想也是,每个项目数据结构都不一样 下面是个简单的例子 然后大家根据自己项目需要再对此模块进行封装即可
GameFramework篇:StarForce学习笔记
流程模块 StarForce流程讲解 环境:StarForce matser 3.1.7 之前我们就提到过流程贯穿游戏的始终,那么今天就来详细的说一下流程模块 ProcedureLauch为游戏入口流程,我们就来看他是什么,他做了什么 一眼看见他继承自ProcedureBase 我们一层层跟进,发现他和状态机有着不可分割的关系,每个流程都是一个状态 他们的关系大体上可以用这个UML图解释,当然这只是非常非常简略的版本,如果要把所有特性都列出来,那将会很庞大的。推荐大家仔细研读这部分代码,体会编程的乐趣与开发者的智慧。 我们需要知道,由基层的Fsm更新来驱动状态机状态的更新,状态机状态的切换也会传递到底层的Fsm上,即一切状态都被Fsm持有与维护 我们就以ProcedureChangeScene这个流程类来熟悉上面的流程图 进入流程时,订阅了一些事件,并且为切换场景做好了准备 流程状态更新,如果场景加载已经完成,就根据需要切换场景。其中的procedureOwner为流程持有者,为GameFramework.Fsm.IFsm<GameFramework.Procedur...
GameFramework篇:VFS详解
GF的VFS 简介 虚拟文件系统(VFS)使用类似磁盘的概念对零散文件进行集中管理,优化资源加载时产生的内存分配,甚至可以对资源进行局部片段加载,这些都将极大提升资源加载时的性能。 官方文档:https://gameframework.cn/document/filesystem/ 前置知识:计算机操作系统磁盘相关知识 原理 通过将许多小文件集合成一个大文件的方式来集中管理零散资源,减少物理磁盘寻址次数从而得以提高性能,并且这个过程是我们自定义的,可以进行加密操作,提高安全性。 学习方式 环境准备 先去下载最新的Starforce:https://github.com/EllanJiang/StarForce,以及Gamrframework:https://github.com/EllanJiang/GameFramework 然后使用我们下载的Gamrframework源码去替换Starforce中的Gameframework,传统艺能了,还不知道怎么操作的小伙伴可以去:https://www.bilibili.com/video/BV14E411a71o VFS只有在开启非编...
FEAR基于GOAP的AI系统GDC分享(中英双语)
前言 经过前一篇对于GitHub开源库ReGoap的介绍,想必大家都对GOAP这一AI方案有一定的了解了,那么今天,我们就来更加深入的了解一下,FEAR这款游戏是如何运用GOAP技术的吧。 注: 正文中的规划/计划系统字样一般都可以当做GOAP系统。 正文中的动作/行为/操作字样一般都可以当做Action。 正文中的效果/影响字样一般都可以当做Effect。 正文中的目标/目的字样一般都可以当做Goal。 正文中的记忆/内存字样一般都可以当做Memory。 资源链接 ReGoap开源库:https://link.zhihu.com/?target=https%3A//github.com/luxkun/ReGoap ReGoap开源库中文文档:https://link.zhihu.com/?target=https%3A//www.lfzxb.top/goal-oriented-action-planning-chinese-document/ PDF链接:https://link.zhihu.com/?target=http%3A//alumni.media.mit.edu...
ReGoap(目标导向的AI系统)中文文档
前言 昨天听群友提到了GOAP(Goal Oriented Action Planning)目标导向的AI系统,百度稍微了解了一下,看起来要比行为树高级一些,所以今天来好好研究一下,看看他的庐山真面目。 因为国内资料较少,所以就准备去Github找一下。就找到了这个库:https://github.com/luxkun/ReGoap。 本篇文档对于Goap本身介绍并不多,想要详细了解的可以去看FEAR在GDC做的分享:https://www.lfzxb.top/gdc-sharing-of-ai-system-based-on-goap-in-fear-simple-cn/ 或者去这个网站了解GOAP更多相关内容:http://alumni.media.mit.edu/~jorkin/goap.html 我的Goap开源库(多线程,JobSystem,路径规划算法优化):https://gitee.com/NKG_admin/NKGGOAP 出于学习的目的,我来翻译一下它的Readme。文章中的一些链接将省略。 注: 正文中的规划/计划系统字样一般都可以当做GOAP系统。 正文...
目标导向的AI系统(GOAP)技术分享
如果让大家设计一个AI框架的话,相信很多人都会选择FSM或者行为树之类的插件或框架。其实这两种方案都可以归类于我们提前写死AI逻辑然后运行时直接或间接遍历整个逻辑图/树来表现AI这一大类里,也正是因为他们这种特性,我们会被越来越复杂的AI逻辑折磨的痛不欲生,往往加入一个新的AI功能,整个AI逻辑都要发生巨大的变动。而GOAP则是我们只需要提前做好各个Action和Goal,不用考虑太多状态的切换,他会在运行时根据Goal来自动给出AI方案,是不是听起来很神奇?那接下来我来带领大家一点点揭开GOAP的神秘面纱。 GOAP的思想 GOAP思想受STRIPS启发,STRIPS是由斯坦福大学于1970年开发的,名称是斯坦福研究所问题解决者(Stanford Research Problem Solver)的首字母缩写。 一个Action只有在其所有前提条件都得到满足的情况下才能执行,并且每个动作都会以某种方式改变世界的状态。 GOAP的功能组件大致分为Action,Goal,Memory,Sensor,他们各司其职,构成整个GOAP框架。 Action:它由前提条件(PreCondi...
Google.Protobuf篇:官方案例AddressBook讲解
据我目前所知,ET使用的数据交换协议是Google.Protobuf,所以今天就来学习一下,但是网上许多人都是以高下立判的方式讲解的,对新手小白很不友好,所以我今天就以纯小白的视角和大家一起学习 学习环境: .NET Core2.2 .NET Framework 4.7.2 Rider protobuf-csharp-3.7.0-rc-2 Google.Protobuf简介 protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。 google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。 由于它是一种二进制的格式,比使用xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。 作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。 下载Google.Protobuf https://github.com/protocolbuffers/protobuf/releases 下...
Google.Protobuf篇:使用protoc.exe生成自己的类
正常生成 上次我们提到了一个比较特殊的类,Addressbook,然后他开头第二行有这末个东西 要编辑这个proto后缀的文件,需要用protoc来编辑 https://github.com/protocolbuffers/protobuf/releases 不要问我为什么不下载64位的,问就是64位的我不会搞 为.exe文件设置环境变量 这样做的好处是,在任何地方都可以运行.exe文件 此电脑-属性-高级系统设置-高级-环境变量-编辑用户变变量的Path变量-添加protoc.exe的所在目录. 比如我的目录是:D:\Protoc\protoc-3.7.0-rc-2-win32\bin 迁移include文件夹下的文件 如果没有include文件夹下的文件,在使用protoc.exe时会提示缺少google\protobuf\timestamp.proto 解决办法是将include/google文件夹移动到指定了环境变量的文件夹 然后就可以在cmd中输入protoc,他应该会像配置Java环境那样有一大长串 准备工作做好了,我们来找找这个万恶之源,address.p...
图形学篇:图形学基础知识汇总(中:多维变换与裁剪投影
二维变换与裁剪 图形几何变换基础 规范化齐次坐标 为了使图形几何变换表达为图形顶点集合矩阵与某一变化矩阵相乘的问题,引入了规范化齐次坐标。 所谓齐次坐标就是用n+1维矢量表示n维矢量。 例如在三维空间中点P(x,y,z)\mathrm P\left(\mathrm x,\mathrm y,\mathrm z\right)P(x,y,z)的齐次坐标表示为(wx,wy,wz,w)\left(wx,wy,wz,w\right)(wx,wy,wz,w),这里,w为任意不为0的比例系数,如果w=1就是规范化的齐次坐标。 定义了规范化其次坐标以后,图形的几何变换可以表示为图形顶点集合的规范换齐次坐标矩阵与某一变换矩阵相乘的形式。 矩阵相乘 矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑的集中到了一起,所以有时候可以简便地表示一些复杂的模型。 设A为m×p的矩阵,B为p×n的矩阵,那么称m×n的矩阵C为矩阵...







