GDExtension的C示例 本文按照官方文档,进行C的GDExtension​插件开发,主要对文档进行复刻,同时对文档中未涉及步骤进行补充 什么是GDExtension 除了GDScript​和C​这两种脚本语言外,Godot​引擎可以执行其他编程语言编写的代码。目前有两种方式实现:C模块与GDExtension 简单的对这两种方式进行对比: 支持的语言 是否需要和引擎一起编译 C模块 C 是 GDExtension C,Go,D,Haxe,Rust,Swift 否 GDExtension官方明确维护C版本,同时目前没有别的语言的维护计划,上表所列出的其他语言均...

  FfAaAZqTae4N   2天前   6   0   0 游戏开发

目录 相关链接 前言 4:加速和减速 move_toward,加速移动 5:角色状态机 有限状态机 代码改动 改动前 改动后 如何写状态机 状态初始量 状态进入和退出 强制状态修改 熟练使用异步 6:滑墙 图片拼接 碰撞框对应 判断是否在墙上 7:蹬墙跳 优化跳跃手感 总结 相关链接 十分钟制作横版动作游戏|Godot4教程《勇者传说》0 GodotEngine4.2简体中文文档 GodotNet_LegendOfPaladinC重构项目地址 前言 这次来学习一下Godot的运动控制,Godot中内置了很多数据运算的函数,而且是使用C集成的,...

  TWYX9ldS9bqI   12天前   32   0   0 游戏开发

1、声道设置 (1)、不设置单声道音频大小为下图 (2)、设置单声道音频大小为下图 2、加载类型 (1)、DecompressOnLoad使用内存8.1M (2)、CompressedInMemory占用内存2.7M (3)、Streaming占用内存1.5M但是CPU暂用提升了 3、采样率和压缩格式设置 4、总结 简短音效小于200k使用默认DecompressOnLoadCPU开销少因本身占用不大所以内存占用不大 对于复杂音效大于200k长度小于5秒使用CompressedInMemory 对于背景音乐长度较长的音效使用Streaming但是会有CPU额外开销但是节省内存不卡顿...

  V6wYmmY0loaH   17天前   18   0   0 游戏开发

单个skynet进程,或者说单台机器的承载业务能力是有上限的,对于负责玩家主要业务的节点,横向扩展以提高游戏承载能力是必须的。 对于滚服架构,玩家角色与指定业务节点(单服)固定对应,连接游戏业务前通过中央后台获取到指定信息进行连接。承载能力通过新增单服完成,这里我们只对世界服架构做探讨。 我们将负责玩家主要业务逻辑的skynet节点类型称为user,将负责验证登入身份信息的skynet节点称为login,单个接入的玩家使用独立的lua虚拟机代理,称之为agent,玩家唯一id称为roleid。那么user必然需要是非单点且支持动态分配扩展的,现在探讨以下几个问题: user节点如何分配 即...

  HTNOaXY9Ey0C   29天前   19   0   0 游戏开发

MaterialEditorGUI重写的歪门邪道 序言 以前有人在群里问过怎么过滤掉unity里面的其他没有用的Shader,或者重新将工程里面的Shader列表重新排序,避免美术使用乱七八糟项目以外的Shader。 反编译 这个经过反编译代码,我找到了欺骗世界的方法。(其实也比较简单,找到绘制下拉窗口的GUI函数调用位置。然后修改过滤方法就行了。 然鹅,比较尴尬的问题是,有的函数是Internal的,需要用歪门邪道才能调用。 先用ILspy找到可以调用Editor里面Internal函数的dll,然后新建一个package,找一个不会用到的dll欺骗引擎,然后就可以在这个package里面调...

  S4DV99V7Yhtp   2024年03月27日   12   0   0 游戏开发

d3d12龙书阅读----绘制几何体(上) 本节主要介绍了构建一个简单的彩色立方体所需流程与重要的api下面主要结合立方体代码分析本节相关知识 顶点 输入装配器阶段的输入首先,我们需要定义立方体的八个顶点顶点结构体: structVertex { XMFLOAT3Pos; XMFLOAT4Color; }; 当然,对于更复杂的情况,我们不仅要定义顶点的位置与颜色,还要包括法线向量、纹理x坐标、纹理y坐标等等但在这里情形比较简单之后,我们还需要定义一个顶点结构体描述子数组,被称为输入布局描述数组中的每个成员与顶点结构体的成员一一对应,同时也与顶点着色器中的参数对应: std::vector&l...

  Ly5WKgqR6znz   2024年03月27日   28   0   0 游戏开发

ArrayList 1、Arraylist本质上是一个可以自动扩容的object数组2、由于用万物之父来存储数据,自然存在装箱拆箱3、当往其中进行值类型存储时就是在装箱,当将值类型对象取出来转换使用时,就存在拆箱。4、所以ArrayList尽量少用,之后我们会学习更好的数据容器(泛型)。 底层原理: 底层是通过数组实现的,每次容量不够的时候,声明一个容量翻倍的新数组,并且把原来的内容复制到新数组中。 Clear原理: 将数组的Count设为0,然后将所有元素的属性设为默认值(值类型为0,引用类型为null),Capacity不变,也就是说栈内存保持不变,释放的堆内存需要等下次GC时回收。 代码...

  oXKBKZoQY2lx   2024年03月23日   41   0   0 游戏开发

​ 前言: 上一篇文章我们主要介绍社交游戏化趋势,并分析了直播平台面临的买量贵、变现难等问题,探讨了小游戏作为新的运营变现玩法的优势。同时还列举了各大直播平台TOP5的小游戏。今天我们继续介绍小游戏系列内容,本文是该系列的第二篇文章-方案选型篇,接下来我们分享小游戏如何做技术选型,希望对需要选型的开发者和企业带来帮助。 一、社交小游戏的技术难点 社交小游戏的开发和落地面临着方案层面和技术层面的双重挑战。在技术上,主要难点包括实现高质量且低延迟的实时音视频通信。如何快速有效地集成多款游戏,同时确保这些游戏在不同平台上的兼容性;以及维护数据和货币交易的安全性。 而从方案角度来看,挑战包括寻找或开发...

  0AjUbZXRnuGw   2024年03月21日   26   0   0 游戏开发

内存分区 1、栈区:由编译器自动分配释放,存放值类型的对象本身,引用类型的引用地址(指针),静态区对象的引用地址(指针),常量区对象的引用地址(指针)等。其操作方式类似于数据结构中的栈。2、堆区(托管堆):用于存放引用类型对象本身,在c中由.net平台的垃圾回收机制(GC)管理。栈,堆都属于动态存储区,可以实现动态分配。3、静态区及常量区:用于存放静态类,静态成员(静态变量,静态方法),常量的对象本身。由于存在栈内的引用地址都在程序运行开始最先入栈,因此静态区和常量区内的对象的生命周期会持续到程序运行结束时,届时静态区内和常量区内对象才会被释放和回收(编译器自动释放)。应尽量限制使用静态类,静...

  oXKBKZoQY2lx   2024年03月19日   33   0   0 游戏开发

d3d12龙书阅读----d3d渲染流水线 输入装配器阶段 在输入装配器阶段,会从显存中读取顶点与索引这种几何数据,然后根据图形基元的类型,根据索引将顶点组装起来。 d3d中的图形基元 我们来看看几种常见的图形基元类型: typedef enumD3D12_PRIMITIVE_TOPOLOGY_TYPE { D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED =0, D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT =1, D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE =2, D3D12_PRIMITIVE_TOPOLO...

  Ly5WKgqR6znz   2024年03月16日   26   0   0 游戏开发

目录 思路 基础的RayMarching 获取深度图 重建世界空间 采样阴影图 RayMarching 当前效果 DualBlur优化块状感 DualBlur 叠加模糊后的体积光和原图 进化叭!RayMarching! 性能优化 最终效果 Reference 思路 观察下面这副图可以发现,在明亮处光很明显,暗处(阴影中)没有明显的光,且越暗光越不明显 为了还原这一现象,可以想到的是根据目标pixel的阴影值来计算亮度。但如何营造光的体积感呢?这就需要用到光线追踪!的思想rayMarching(光线步进)与光追不同的是,光追是每个pixel,在场景中发射一根射线并不断弹...

  398vzLiyyaJn   2024年03月13日   21   0   0 游戏开发

技术笔记(7)Unity导入人物和场景资源,出现的材质显示问题 一,如果两个人物拥有同名但内容不同的的材质shader error:Unity在导入的时候,识别到近似内容时,会用新的内容去替换同名shader的内容,而不是重新创建一个。这样就会导致第一个人物的材质显示异常,其本质是shader内容被替换了。 解决方案:尝试了多次各种导入资源的方式,最终选择了一个妥协折中的方法。在导入完第一个人物之后,就将所有冲突重名的shader重命名,且shader内部也需要重命名。前者是为了导入资源时,Unity能做出区分;后者是为了避免人物材质引用shader时出现错误。 ‍ 二,shader引...

  iaaW4rI4Gew3   2024年03月12日   14   0   0 游戏开发

d3d12龙书阅读----Direct3D的初始化 使用d3d我们可以对gpu进行控制与编程,以硬件加速的方式来完成3d场景的渲染,d3d层与硬件驱动会将相应的代码转换成gpu可以执行的机器指令,与之前的版本相比,d3d12大大减少了cpu的开销,同时也改进了对多线程的支持,但是使用的api也更加复杂。接下来,我们将先介绍在d3d初始化中一些重要的概念,之后通过具体的代码进行介绍。 组件对象模型(com) COM在D3D编程中提供了一种结构化和标准化的方式来处理对象和接口,有助于简化图形编程的复杂性,并提高代码的兼容性和可维护性在使用com对象时,com对象会统计其引用次数,因此,在使用完co...

  Ly5WKgqR6znz   2024年03月12日   41   0   0 游戏开发

本人才疏学浅,只是近期略看了一下Texture的内存,如有不对的地方,还望大佬指正。 参考文章: 你所需要了解的几种纹理压缩格式原理 1.说一说图片占用的内存 关于图片的内存,是怎么算的呢,就是图片的长乘以宽,乘以每个像素点占的byte大小。 MaxTextureSize,影响的就是基础的长和宽。 图片的压缩格式,影响的就是每个像素点占的byte大小。 就举一个最基础的例子,1024X1024大小,格式是RGBA32的图片。 那其内存就为1024x1024x32/8=4x(1024x1024)=4MB。 我们知道1024x1024就是1M(bit),除以8换算为M(Byte),乘以32则是RG...

  45dg0vCZiZUS   2024年03月11日   39   0   0 游戏开发

一、SHA算法的起源与演进 SHA(SecureHashAlgorithm)算法是一种哈希算法,最初由美国国家安全局(NSA)设计并由国家标准技术研究所(NIST)发布。SHA算法的目的是生成数据的哈希值,用于验证数据的完整性和真实性。最早的SHA-0版本于1993年发布,之后陆续发布了SHA-1、SHA-2和SHA-3等不同版本,不断提高了算法的安全性和效率。 SHA在线加密|一个覆盖广泛主题工具的高效在线平台(amd794.com) amd794.com/sha 二、SHA算法的优势与劣势 优势: 安全性高:SHA算法采用了不同的哈希函数和不同的输出长度,提高了抗碰撞能力和安全性。...

  YpHJ7ITmccOD   2024年03月10日   40   0   0 游戏开发

Lua中pair和ipair的区别? 二者都是Lua中内置的迭代器,可以对数组或table进行遍历。 在正常的数组或table的遍历中,二者没有区别。 tableNormal={"this","is","a","array"} --使用pairs遍历 forkey,valinpairs(tableNormal)do print(key,'',val) end 遍历结果: --使用ipairs遍历 forkey,valinipairs(tableNormal)do print(key,'',val) end 遍历结果: 二者没有任何差别! 之所以说是正常的数组,是因为索引是连续的,数值都...

  1wMBnbixARwC   2024年03月09日   59   0   0 游戏开发

EventListener和EventTrigger 控件自带组件的局限性 其实我们常见的复合控件只提供一些简单的事件监听,如按钮有点击抬起的监听,对长按等其他交互方式的事件监听不大支持。 NGUI的监听函数 给NGUI对象添加Collider,在其挂载的脚本中编写对应的NGUI的函数,在运行时候会通过反射来进行匹配调用函数。 usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; namespaceNGUILearn { publicclassNGUIPractice:MonoBehaviou...

  1wMBnbixARwC   2024年03月06日   25   0   0 游戏开发

三大基础组件 root 基本概念: 分辨率(常见的1920:1080) 像素(图片中的最小的色块) 屏幕尺寸(屏幕对角线长度) 屏幕比例(像素的密度,单位面积上有多少像素点,一般指一英寸有多少像素点) Root的适配模式 灵活模式: 约束模式 模式一二的综合模式 总结: 灵活模式适用于PC端,频繁拖动窗口的项目 约束模式适用于移动设备横屏勾选高fit竖屏勾选宽fit注意背景图要按照最大宽高比来做 panel panel的作用:panel面板对象管理子控件 EventSystem 作用:主要作用是让摄像机渲染出来的物体能够接收到NGUI的事件。大部分设置不需要我们...

  1wMBnbixARwC   2024年03月01日   41   0   0 游戏开发

OBJ文件格式是一种常见的3D模型文件格式,它包含了模型的几何形状、材质、纹理等信息。下面是OBJ文件格式的一些基本信息: OBJ文件由一系列文本行组成,每行以一个关键字开头,关键字后面跟着一些参数。OBJ文件中最常见的关键字有以下几个: v:定义一个顶点,后面跟着该顶点的x、y、z坐标。 vn:定义一个法向量,后面跟着该法向量的x、y、z分量。 vt:定义一个纹理坐标,后面跟着该纹理坐标的u、v分量。 f:定义一个面,后面跟着该面的顶点、法向量、纹理坐标等信息。 OBJ文件中还可以包含一些其他的关键字,如mtllib、usemtl等,用于定义材质信息。 下面是一个简单的OBJ文件的示例:...

  vWa2lMmTbsfJ   2024年02月29日   21   0   0 游戏开发

A搜索算法的更多内容 A算法,也许你会习惯称它为「A寻路算法」。许多人大概是因寻路——尤其是「网格地图」寻路认识它的,网上很多教程也是以网格地图为例讲解它的算法实现。这导致了许多人在遇到同样用了A算法的地方,例如GOAP或者基于八叉树的立体空间寻路时会一头雾水:A算法原来有这么多「变种」吗(⊙ˍ⊙)?其实A算法是没有变的,只是我们原先错误地将它与「网络地图」捆绑在了一起。A算法本身是一种搜索算法,这次我们从另一视角看看「A搜索算法」,并一起完成一个更泛用的「A搜索器」,最后再探讨一些常见的正确优化方式与错误优化方式。 注意:本文并不会详细将A算法的逻辑原理,希望你至少已了解用于网格地图的A寻路...

  PfEVswrG0sbF   2024年02月27日   46   0   0 游戏开发
推荐作者 更多

2023-11-08

2023-11-12

2023-11-21

2023-11-01

2023-11-02

2023-11-02

2023-11-02

2023-11-01

2023-11-02

2023-11-01