自定义博客皮肤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开发

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

原创 骑砍Ⅱ霸主MOD开发(30)-光照系统

2.镜面反射(材质镜面反射贴图)1.漫反射(材质漫反射贴图)

2026-05-16 07:59:50 9

原创 Blender-Python脚本(数学函数篇)

本文展示了Blender中数学工具mathutils的常用旋转转换方法,包括四元数转欧拉角/旋转矩阵、欧拉角转旋转矩阵/四元数等6种转换方式。通过代码示例演示了如何使用Quaternion对象的to_euler()和to_matrix()方法实现不同旋转表示形式之间的转换,为3D图形编程提供了实用的参考实现。这些转换方法适用于Blender Python脚本开发中的空间变换计算需求。

2026-03-05 04:56:11 75

原创 Blender-Python脚本(材质篇)

【代码】Blender-Python脚本(材质篇)

2026-03-04 06:00:23 60

原创 游戏引擎中网格的顶点格式/顶点FVF格式

本文介绍了立方体的两种顶点数据结构:1)基础顶点格式包含x、y、z坐标;2)扩展的FVF顶点格式包含顶点索引、颜色值和法向量。立方体需要8个基础顶点和36个FVF顶点(12个三角面×3个顶点)。这两种格式分别用于存储几何位置和渲染所需的附加属性。

2026-03-01 11:57:14 327

原创 Blender-Python脚本(面篇)

摘要 该代码片段展示了如何翻转3D对象的面法线方向。通过遍历目标对象的所有多边形面(polygons),对每个面调用flip()方法来反转其法线方向。这种方法常用于修正3D建模过程中出现的法线方向错误问题,确保模型表面的光照和渲染效果正确。代码简洁明了,适用于需要批量修改面法线的场景。

2026-03-01 11:24:50 108

原创 Blender-Python脚本(点篇)

一.复制点二.删除点三.连接点

2026-03-01 11:23:09 89

原创 C#-使用OpenTK渲染3D模型

本文介绍了使用OpenTK和GLControl进行3D图形渲染的基本方法。OpenTK是OpenGL的封装库,用于3D数据加载和初始化;GLControl则是将OpenGL渲染结果映射到Winform控件的组件。文中演示了立方体网格的初始化过程,通过GL.Begin和GL.Vertex3定义顶点坐标,并展示了在GLControl中调用RenderCube方法进行渲染绘制的实现方式。最后通过SwapBuffers方法完成渲染结果的显示。

2026-02-16 10:09:57 137

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

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

2025-08-19 01:19:17 237

原创 游戏引擎中的Billboard技术

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

2025-08-19 01:13:08 481

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

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

2025-07-06 02:46:59 452

原创 C#-Type&Assembly

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

2025-07-05 15:13:16 261

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

文章摘要:Blow Agent系统实现了游戏中的受击反馈机制,包含击倒、击退等效果。其工作流程为:物理系统获取攻击参数后计算伤害值,Agent处理Blow数据,结合monster_usage.xml配置确定骨骼动画(如头部受击后退动作),最后执行动画播放、粒子效果和生命值更新。该系统通过参数化配置实现了多样化的受击表现。

2025-06-28 16:51:05 188

原创 骑砍Ⅱ霸主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 194

原创 C#-控制台程序基础环境搭建

本文介绍了.NET项目的创建步骤:首先创建一个csproj项目文件,指定SDK为Microsoft.NET.Sdk,输出类型为可执行文件,目标框架为.NET 8.0;然后创建包含Main方法的Test类,输出"Test"字符串。这两个步骤完成了最基本的.NET控制台应用程序搭建。

2025-03-14 16:29:29 1317

原创 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 375

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

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

2025-03-09 15:15:09 184

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

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

2025-01-18 03:25:46 958

原创 C#-使用StbSharp处理PNG图片

该代码展示了使用StbSharp库进行PNG图片的生成和读取操作。第一部分演示了如何创建一个500x500像素的RGBA格式图片,在右下角(250,250)区域填充红色,其余部分为白色,并保存为"test.png"。第二部分简要提及了使用StbSharp读取PNG图片的功能,但未展示具体实现代码。整个示例展示了基本的图像创建和处理流程。

2024-12-27 18:20:18 429

原创 骑砍Ⅱ霸主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 466

原创 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 542

原创 骑砍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 195

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

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

2024-11-11 20:21:41 767

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

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

2024-10-28 08:22:45 832

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

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

2024-10-21 08:54:19 874

原创 骑砍Ⅱ霸主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 490

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

本文详细介绍了游戏Agent的初始化与行为控制系统。在初始化部分,阐述了Agent的组成架构及各组件功能,包括物理系统、AI系统、骨骼模型等,以及人类和动物Agent的不同初始化流程。在行为控制方面,系统说明了Agent的移动、跳跃、坠落、骑乘、武器使用等动作的实现机制,重点解析了四向攻击/格挡和远程武器攻击的逻辑实现。文章通过XML配置文件和组件协作的方式,展现了游戏Agent从初始化到各类行为控制的完整技术实现方案。

2024-09-29 13:27:14 482

原创 骑砍Ⅱ霸主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 487

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

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

2024-08-28 08:34:38 404

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

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

2024-08-15 09:50:54 646

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

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

2024-08-15 09:31:09 577

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

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

2024-08-08 17:14:44 1315

原创 骑砍Ⅱ霸主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 990

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

摘要:本文介绍了FaceKey人物模型和BannerKey旗帜模型的生成流程。FaceKey通过序列化参数生成人物模型,包括头部(脸部、嘴、睫毛、眼睛)、眉毛、头发、身体和躯干等组件,每个部分通过特定标签和骨骼绑定实现。BannerKey则通过解析参数生成旗帜模型,包括模型、贴图和颜色等元素。两种模型都采用参数化设计和XML配置文件实现模型生成与定制。

2024-07-24 23:47:48 2131

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

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

2024-07-24 22:57:18 838

原创 骑砍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 937

原创 骑砍Ⅰ战团MOD开发(33)-场景AI网格

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

2024-07-19 07:45:46 661

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

静态的树木,墙壁采用Static类型GameEntity实现.碰撞检测通过PhysicsShape实现.定制化GameEntity-Agent(人类/马匹),通过RGL内置代码和逻辑实现物理碰撞。定制化GameEntity-Missile(箭矢),通过RGL内置代码和逻辑实现物理碰撞。根据Static类型GameEntity对应BodyFlag确定物理碰撞参数和机制。<1.根据攻击时的Action参数确定物理碰撞参数和机制。<2.RGL内部实现胶囊体物理碰撞计算和参数处理。<3.接口回调获取物理碰撞结果。

2024-06-18 00:18:59 834

原创 骑砍Ⅱ霸主MOD开发(12)-布料系统

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

2024-06-13 05:41:08 608

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

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

2024-06-07 08:52:48 879

原创 骑砍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 1533

空空如也

空空如也

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

TA关注的人

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