自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

骑砍战团&霸主MOD开发

骑砍战团&霸主MOD开发

  • 博客(91)
  • 收藏
  • 关注

原创 游戏引擎中的粒子系统

本文摘要:文章系统介绍了粒子系统的核心要素,包括发射盒(长方体或球形边界)、物理参数(重力、粘滞力、空气阻尼)、发射参数(随机坐标生成)、粒子数量与生命周期管理,最后提及代码实现方案。重点阐述了不同场景下重力方向的应用差异,如瀑布与火焰粒子的重力表现。

2025-08-19 01:19:17 213

原创 游戏引擎中的Billboard技术

文章摘要:Billboard技术通过将3D物体替换为2D平面网格来解决场景面数过多问题,常用于植被、树叶和粒子系统等场景。其着色器实现需要输入摄像机坐标、网格坐标和观察方向等参数,输出保持视角不变的2D平面效果。该技术能有效优化渲染性能。

2025-08-19 01:13:08 435

原创 游戏引擎中GPU渲染管线

摘要:GPU渲染管线将3D数据转换为2D图像,包含顶点着色器和像素着色器两个核心单元。顶点着色器处理3D到2D的坐标转换,输入包含顶点数据、灵活顶点(含法线/UV等)和面数据,输出2D坐标及相关属性。像素着色器负责计算像素颜色,输入2D坐标和纹理等,输出最终像素点阵。文中详细定义了vertex、vertex_fvf和face三种数据结构,描述了GPU渲染的基本流程。

2025-07-06 02:46:59 386

原创 C#-Type&Assembly

C#反射编程基础:Type与Assembly应用 摘要:本文介绍了C#反射编程中的两个核心概念:Type和Assembly。Type类用于获取类成员信息,示例展示了如何获取string类的所有字段(包括私有/公有/静态)和方法信息。Assembly类代表加载的DLL程序集,演示了如何通过程序集名称和完整类名来获取特定类型。这些反射技术为动态类型检查和运行时类型操作提供了基础支持,适用于插件系统开发、动态代码分析等场景。

2025-07-05 15:13:16 234

原创 骑砍Ⅱ霸主MOD开发(29)-Blow伤害打击

物理系统(Agent与Agent,Agent与地形,Agent与Item之间物理碰撞)BlowFlag.CanKnockDown:受到伤害后是否播放骨骼动画。伤害系统(Agent受到Blow后的处理,击倒/击退,血量扣除)BlowFlag.NoSound:受到伤害后是否产生语音。BlowFlag.MakesRear 受到伤害后是否停马。力学系统(武器,碰撞类型,碰撞参数计算伤害Blow)

2025-06-28 16:51:05 121

原创 骑砍Ⅱ霸主MOD开发(28)-定制化ScriptComponentBehavior- MissionObject

Mission.MeleeHitCallback(近战攻击) & Mission.MissileHitCallback(远程武器攻击)1.继承MissionObject,覆写OnInit,OnPreInit,OnRemove等被重写过的方法。Mission.OnEntityHit(判断是否有MissionObject)MissionObject.OnHit(回调攻击方位,伤害,角度等信息)游戏中可被攻击的游戏实例,例如挡箭板,城门。2.实现自定义OnHit回调。

2025-04-03 15:11:49 160

原创 C#-使用VisualStudio创建C#工程

csproj文件可配置PropertyGroup(编译,平台等参数),ItemGroup(外部DLL引用)。csproj:VisualStudio项目配置文件,会根据csproj中配置加载外部依赖,调整编译环境。将C#依赖的外部库整体打包至一个文件夹即为发布,通过发布得到的exe不需依赖.NET运行时环境。通过csproj文件可实现控制台应用,窗体应用,Web应用等不同编译环境的工程创建。2.工具->选项->项目解决方案->生成并运行,调整日志输出级别。obj:存放编译流程中的中间文件和缓存文件。

2025-03-14 16:29:29 1224

原创 C#-委托Delegate

定义了输入和返回的delegate,例如Func<int, string>表示输入为int,输出为string。定义了输入的delegate,例如Action<int, string>表示输入为int,string。C#中委托即C++中函数指针,通过delegate关键字可声明一个代理.代理可像指针一样作为参数传递和调用.<2.Action(不具有返回值的委托)<1.Func(具有返回值的委托)<4.目标方法赋值代理变量。<1.声明一个代理类型。<5.代理变量传参&调用。

2025-03-14 15:45:18 356

原创 骑砍Ⅱ霸主MOD开发(27)-定制化GameEntity-MissionWeapon

游戏中近战武器,石头,油罐等在战场上等与人物Agent绑定的GameEntity即为MissionWeapon。当武器对应Item物品配置有多个WeaponComponent时,战场上按下X键可触发形态切换.战场上按下G键可将武器进行丢弃,丢弃后会在场景中生成SpawnedGameEntity游戏实例。武器的使用,挥舞,丢弃,切换形态均为定制化GameEntity实现。双手长枪与骑枪之间相互切换。2.物理碰撞检测结果处理。飞斧与单手斧之间相互切换。1.物理碰撞检测回调。

2025-03-09 15:15:09 143

原创 骑砍Ⅱ霸主MOD开发(11)-可编程渲染管线Shader编程

《骑马与砍杀II》Shader开发指南摘要:文章介绍了游戏中的渲染管线机制,包括固定管线与可编程管线的区别。重点解析了CoreShader(核心材质渲染)和TerrainShader(地形渲染)的源码与编译路径,提供创建自定义Shader的完整流程:从创建TPAC资产、编写.rs文件到编译sack缓存文件。特别说明TerrainShader由场景编辑器自动生成,并解释了动态Shader编译的必要性——因硬件差异需在引擎启动时实时编译。编译结果默认存储在系统ProgramData目录下。

2025-01-18 03:25:46 848

原创 C#-使用StbSharp库读写图片

StbSharp是基于C++/Stb图形处理库封装的C#接口,支持多种格式PNG/JPG等图片的处理.创建一张500*500的高度图PNG图片。

2024-12-27 18:20:18 395

原创 骑砍Ⅱ霸主MOD开发(26)-本体域&托管域&外部DLL库

文章摘要: 本文详细分析了《骑马与砍杀2》游戏引擎的启动流程和运行机制。启动过程分为Launcher启动器和Application主进程两个阶段,通过Mono运行时环境创建系统资源。系统架构包含应用进程、本地域(C++ RGL引擎)、托管域(C#脚本)和外部DLL库。重点阐述了NativeObject和DotNetObject两种对象类型的管理机制,以及C++与C#之间的互操作接口实现方式,包括通过MonoPInvokeCallback实现的C++调用C#接口,和使用MonoNativeFunctionWr

2024-12-25 17:47:44 411

原创 C#-调用C++接口

C#应用程序在编译为可执行exe时将外部DLL装载至本应用中,例如在CSC编译指令中添加相关参数可实现DLL引用.C#应用程序在运行时通过调用kernel32.dll中LoadLibrary完成外部DLL的装载.C++中接口通过编译为DLL对外提供调用,C#需要将DLL加载至本应用才可实现C++接口调用.实现C++方法MYFunction,将接口编译为MyClass.dll。

2024-12-25 13:45:11 481

原创 骑砍2霸主MOD开发(25)-顶点动画

3.实现自定义顶点动画播放ScriptComponentBehavior(VertexAnimator)1.创建MorphAnimation对应静态资源morph_animation.tpac。1.创建MetaMesh顶点动画,生成静态顶点动画资源meta_mesh.tpac。2.获取MetaMesh(从静态资源中获取/从GameEntity中获取)2.Agent设置对应MorphAnimation。定制化顶点动画用于人物Agent的面部表情.

2024-11-24 20:24:21 172

原创 游戏引擎中LOD渲染技术

为了降低GPU渲染压力,根据摄像机距离模型距离将面数较高的模型替换为面数较低的模型.故通常引擎中MetaMesh是由一个或多个LOD模型构成.精简修改器-塌陷/反细分/平坦手段进行LOD模型制作。

2024-11-11 20:21:41 698

原创 游戏引擎中Static,Kinematic,Dynamic三种刚体属性

包括常用的RayCast检测,BoxCast检测,AABB包围盒检测。Dynamic:实际游戏中具有重力和速度的物体,飞石,钢球等。在每一帧刷新时进行Collider刷新。Static:实际游戏中不可能发生移动的房子,树木,建筑物等。Kinematic:实际游戏中奇特的物体,传送门,陷阱等, 每一帧刷新时进行Collider刷新。Kinematic-Dynamic 穿模,会产生引擎回调OnCollisionStart。Static-Kinematic 穿模,会产生引擎回调OnCollisionStart。

2024-10-28 08:22:45 763

原创 游戏引擎中ECS架构及内存布局

E:Entity-游戏世界中的人,房子等实际物体,这些物体可能由不同的MetaMesh,ParticleSys组成。4.创建对应Entity下的Component,人具备技能,人具备盔甲,人具备AI三种不同的Component。C:Component-组成实际物体的MetaMesh,ParticleSys,也可以是一个实际物体。S:System-游戏引擎,负责完成实际物体的初始化,内存管理,帧同步,线程同步等核心功能。2.创建GameSystem引擎回调接口,帧渲染回调,实例创建回调,物理检测回调等。

2024-10-21 08:54:19 810

原创 骑砍Ⅱ霸主MOD开发(24)-定制化GameEntity-Missile

游戏中弩箭/弓箭/飞石/炮弹等在场景中沿抛物线飞行实例GameEntity即为Missile.Missile的发射,飞行,物理碰撞等都是定制化GameEntity实现。Missile的飞行抛物线是二次曲线,Missile相对于发射点的X/Y轴偏移与角度关系如下。不同Missile碰撞后可能会出现爆炸(燃油罐),附着(弩矢),消失(落水)等。抛物线方程y = x/tan(α) + k * x^2/cos(α)^2。2.根据落地点相对发射点相对坐标(X,Y)和α确定常量k。<4.飞行时粒子系统(火箭,飞石)

2024-10-08 11:20:18 450

原创 骑砍Ⅱ霸主MOD开发(23)-定制化GameEntity-Agent

本文摘要:文章详细介绍了游戏AI角色(Agent)的初始化与行为控制机制。内容包括Agent的初始化流程(属性、装备、物理参数等设置),以及移动、跳跃、坠落、骑乘、武器使用等行为的实现方式。重点阐述了通过XML配置文件(item_usage_sets.xml等)定义各种动作状态,以及通过控制标志位(EventControlFlags等)来触发特定行为。同时说明了左右手武器状态对动作选择的影响机制,展示了游戏AI角色的完整行为控制系统架构。

2024-09-29 13:27:14 413

原创 骑砍Ⅱ霸主MOD开发(22)-Game&GameManager&GameType&GameState

文章摘要:本文详细描述了游戏引擎的初始化流程,分为五个主要阶段:1)应用初始化阶段,完成核心资源(TPAC、Shader等)和系统(骨骼动画、音频)的加载;2)主菜单初始化;3)游戏类型选择;4)游戏初始化,包括GameStateManager管理加载页面、GameType处理不同模式的数据初始化、GameModel实现游戏模式差异;5)游戏内屏幕切换,通过GameState的Push/Pop操作实现不同界面的切换。整个过程展示了从引擎启动到游戏运行的完整初始化流程。

2024-09-11 04:03:41 441

原创 骑砍Ⅱ霸主MOD开发(21)-定制化AgentComponent- MissionMainAgentInteractionComponent

>Agent.HandleStartUsingAction //使用投石车。SpawnedItemEntity //捡起&丢弃已有的武器,捡起弩矢。UsableMachine //弩炮,投石车等武器使用。Agent //玩家上马&下马,与领主对话。通过玩家位置&摄像机位置发射射线,获取命中游戏实例,实现交互机制.->Agent.OnUse //上马&下马。<4.与可使用GameEntity交互:使用冲车,投石车,弩炮。<1.与Agent交互:上马/下马,与人对话等功能。

2024-08-28 08:34:38 361

原创 骑砍2霸主MOD开发(20)-系统资源Resource

本文介绍了游戏开发中的系统资源管理框架,主要包括: Resource系统:分为预制资源(存储在TPAC文件中)和动态资源,提供Mesh、Material、Texture等资源的创建与获取方法。 MetaMesh:支持从静态资源复制和动态创建,详细说明了构建长方形Mesh及修改顶点、UV等操作流程。 Material和Texture:介绍从资源获取和动态创建的方法,包括从PNG创建纹理和Tableau技术转换。 PhysicsShape:提供静态声明和动态创建方式,展示如何配置刚体参数和物理材质。 该系统实现

2024-08-15 09:50:54 556

原创 骑砍Ⅱ霸主MOD开发(19)-定制化Shader

本文介绍了六种游戏特效的实现方法:1)Tableau图标通过3D转2D映射实现角色标识;2)Decal贴花用于动态场景元素如血迹;3)Contour描边突出人物轮廓;4)海洋模拟通过计算着色器实现动态水面;5)布料模拟实现飘动物体效果;6)弓弦动画基于顶点颜色控制形变。每种特效都包含实际应用场景、着色器实现原理和使用方法,涉及材质参数设置、顶点着色处理等技术要点。这些特效共同提升了游戏场景的表现力和互动性。

2024-08-15 09:31:09 495

原创 骑砍Ⅱ霸主MOD开发(18)-存档

在类上添加SaveableProperty注解,声明字段的saveID,例如要将学生Student的年龄Age和身高Height进行存储。构造GameData:GameData.CreateFrom(byte[][])通过将游戏中Party状态,坐标等字段进行序列化后保存至sav文件,即游戏存档。写入sav文件:SaveContext.save()

2024-08-08 17:14:44 1141

原创 骑砍Ⅱ霸主MOD开发(17)-使用XSLT文件合并覆写XML文件

k</test> <test id = '78'>k</test>开发MOD:NativeTest/ModuleData/a.xml <test id = '12'>k</test> <test id = '78'>k

2024-07-27 11:02:41 882

原创 骑砍Ⅱ霸主MOD开发(16)-FaceKey&BannerKey

文章摘要:本文介绍了FaceKey脸部模型生成流程,包括参数获取、添加、解析和模型组装步骤,详细说明了FaceKey参数解析方法和头部模型的XML配置方式。同时阐述了BannerKey的编辑修改方法,包括游戏内操作、XML配置替换和算法实现,涉及BannerIconMeshId创建、BannerData构建及BannerKey生成过程。内容涵盖了游戏中角色面部建模和旗帜系统的技术实现细节。

2024-07-24 23:47:48 1942

原创 骑砍2霸主MOD开发(15)-AI系统

本文介绍了游戏AI系统中的两类行为控制:AgentAI和MobilePartyAI。AgentAI控制单个单位的战斗行为,包括设置团队属性、战斗强度参数、状态标志(攻击/防守/巡逻)以及路径导航功能。MobilePartyAI则管理大地图中部队的整体移动策略,提供多种预设行为模式(追击/防御/逃跑等),并通过导航网格动态计算和更新部队位置坐标。两类AI系统共同构建了游戏中从个体到群体的智能行为体系。

2024-07-24 22:57:18 688

原创 骑砍2霸主MOD开发(14)-多人联机模式开发环境搭建

Token文件路径:C:\Users\taohu\Documents\Mount and Blade II Bannerlord\Tokens。发起Http请求:HttpClient.PostAsync(string requestUri, HttpContent content)发起TCP连接请求:TcpSocket.Connect(string address, int port)UDP收包:UdpClient.receive()UDP发包:UdpClient.send()Port:专用服务器端口号。

2024-07-22 09:54:30 863

原创 骑砍战团MOD开发(33)-使用BrfExporter&Blender制作BRF文件

【代码】骑砍战团MOD开发(33)-使用BrfExporter&Blender制作BRF文件。

2024-07-19 07:45:46 589

原创 骑砍Ⅱ霸主MOD开发(13)-物理系统

远程武器箭矢,弩炮与人物Agent,地形的物理碰撞,回调Mission.MissileHitCallback。Agent在梯子,台阶,平地,攻城塔上时由BodyFlag确定,不同BodyFlag决定了Agent的动作。四向攻击时,会进行武器与敌军的物理碰撞,回调Mission.MeleeHitCallback。火焰范围性伤害,魔法伤害等使用AABB包围盒,射线检测法实现。Agent从高处落下时的物理碰撞。马匹与Agent之间的冲撞。<2.AABB包围盒检测法。武器掉落,尘埃掉落实现。

2024-06-18 00:18:59 738

原创 骑砍2霸主MOD开发(12)-常用本体功能C#-Harmony替换

【代码】骑砍2霸主MOD开发(12)-常用本体功能C#-Harmony替换。

2024-06-13 05:41:08 551

原创 骑砍2霸主MOD开发(10)-游戏实例GameEntity

梯子,椅子,攻城云梯,战车,武器,人物等定义为GameEntity,一个GameEntity若干子GameEntiy或Component组成.例如攻城云梯的轮子,梯子,支架等都是GameEntity或Component组成.引擎在渲染每个GameEntity时,会在每一帧进行位置同步,物理碰撞检测,时序同步等,通过注册该ScriptComponentBehavior实现事件通知.例如物理碰撞事件,实例化事件,移除事件.物理形体通常由碰撞体,刚体组成,使得这个物体具有一定的物理属性。

2024-06-07 08:52:48 822

原创 骑砍2霸主MOD开发(9)-游戏大地图(MapScene)

Settlement类型由town,castle,castle_village,village,hideout五种类型组成,通过对GameEntity中添加tag实现类型的加载.大地图中军团(MobileParty)的移动速度,AI寻路,食物消耗等均和当前MobileParty所处地形有关,地形统一被定义为TerrainType,类型有森林,荒漠等.MapScene.Read("Main_map", ref sceneInitializationData, "") 装载Main_map大地图。

2024-05-30 09:07:49 1461

原创 游戏引擎中DDS纹理图片

摘要:DDS是为游戏优化的纹理格式,与PNG/BMP等2D图片不同。它支持MipMap技术,通过多级LOD纹理降低GPU负载。常见格式包括:DXT1(1:8压缩比,无alpha)、DXT3/DXT5(均1:4压缩比),后两者适合高光纹理和动态渲染场景。DDS格式特性使其成为游戏纹理存储的理想选择。(98字)

2024-05-07 08:10:19 713

原创 骑砍Ⅱ霸主MOD开发(8)-骨骼动画

TPAC资源文件包含骨骼动画(skel_animation)和动画切片(anim_clip)两种资源类型,通过起始帧截取、动作混合等处理形成最终动画。动画切片支持定制化参数,包括物理碰撞检测、循环播放等标志位。系统通过ActionSet和ActionType为不同实体配置动画,GameEntity直接调用动画切片索引播放,Agent则需通过ActionSet获取对应动画后播放,支持全身/局部动画通道设置。整个动画系统包含资源定义、参数配置和播放控制三个主要环节。

2024-04-24 10:31:37 991

原创 骑砍Ⅱ霸主MOD开发(7)-坐标&坐标系转化&摄像机

本文总结了游戏开发中坐标系统与视角控制的关键技术,主要包括:1)GameEntity坐标使用MatrixFrame描述,包含位置向量和旋转矩阵;2)相对/绝对坐标转换方法;3)世界坐标与屏幕坐标互转;4)Camera创建与参数设置;5)第三人称/第一人称视角实现原理,包括视角切换、视野缩放和视角跟随;6)鼠标射线检测实现点选功能。这些技术为游戏中的物体定位、视角控制和交互操作提供了完整的解决方案。

2024-04-24 10:12:36 519

原创 骑砍2霸主MOD开发(6)-使用C#-Harmony修改本体游戏逻辑

2.实现Prefix,Postfix前置后置插桩,实现对本体代码的修改,例如游戏菜单的加载调用前插入一个对话框MsgBox。

2024-04-21 17:58:44 1423

原创 C#-使用Harmony重写Dll文件

通过C#运行时CIR环境中,通过动态反射创建目标类的代理类delegate,在原方法调用时调用delegate指定的方法.利用C#运行时Runtime的反射机制,动态加载dll中的方法,字段,属性,实现对DLL方法的重写和代码注入。通过反射创建目标类的代理,可实现对方法调用前,方法调用后,方法异常等进行拦截。2.调用实例方法&字段内置Setter/Getter方法。使用AccessTool访问类的私有/受保护的字段&方法。使用Traverse访问类的私有/受保护的字段&方法。入参类型: object。

2024-04-20 12:05:20 2358

原创 骑砍Ⅱ霸主MOD开发(5)-2D界面

本文介绍了2D界面开发的技术框架,主要包括以下内容: 2D界面架构:由多个GauntletLayer(菜单/对话框/定制页面)和SceneLayer(3D页面)组成,支持屏幕切换和管理。 GauntletLayer实现:采用Movie(HTML页面)+ViewModel(动态数据)模式,支持优先级管理、焦点控制和事件响应。 2D控件系统:包括颜色字体、坐标布局、背景图(Sprite/Texture)等配置方式,支持自定义控件开发。 定制化页面开发:详细说明了游戏菜单和对话框的实现方法,包括状态管理、事件回调

2024-04-19 16:26:17 983

原创 骑砍Ⅱ霸主MOD开发(4)-游戏场景Scene

本文详细介绍了3D游戏场景(Mission)的组成架构与技术实现。Mission由MissionLogic、MissionView和Scene三部分组成,其中Scene包含地形系统、天气系统、游戏实例、导航网格等核心模块。地形系统采用网格化设计,通过节点组合实现多样化地形,支持材质分层和植被系统;天气系统整合天空盒、光照和粒子效果;导航网格为AI寻路提供支持。文章还阐述了场景边界设定、出生点配置等游戏实例的实现方法,以及Mission的初始化和退出流程,最后简要说明了使用ModdingKit进行场景编辑的准

2024-04-19 16:06:07 1124

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除