【MultiplayerCourse】创建多人联机插件
此博客为学习油管DruidMech大佬的广域网多人射击游戏的笔记 附上项目GitHub源码地址https://github.com/DruidMech/MultiplayerCourseMenuSystem 新建项目 首先使用引擎(5.0及以上)创建一个基于第三人称模板的.cpp项目,我这里将其命名为MenuSystem. Subsystem插件配置 一、在编辑器-插件中打开Oline Subsystem Steam插件,然后重启项目。 二、在项目的Build.cs下找到一个PublicDependencyModuleNames,把插件的配置项OnlineSubsystemSteam、OnlineSubsystem添加到其中然后编译 1PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore",...
C++语法基础-复数类与字符串类
C++ programs 代码的基本形式(以Complex class为例) 头文件与类声明 在写C++项目时,一般将类声明和实现分为两部分存储,即.h和.cpp文件中..cpp文件中要包含#inlcude他的声明头文件 ⚠注意: 在.cpp文件中,自己的头文件一般用引号,而引用标准库文件则用尖括号: 12#include<iostream.h>#inlcude'complex.h' 头文件的防御性声明 在大型项目中,一个写好的类声明文件可能会被引用到程序的各个部分,而有一种规范安全的写法可以解决程序四处引用导致类重复声明的问题 示例: 1234#ifndef _COMPLEX_#define _COMPLEX_...#endif namespace命名空间 namesapce主要的用途是免去每个函数之前都加一个类名,举个栗子: 123456789101112131415161718192021222324252627//使用命名空间#include<iostram>using namespace std;int...
虚幻引擎中的委托(Delegates)与回调(Callbacks)
Unreal Engine 中的 Delegates(委托)详解 Delegates(委托)是 Unreal Engine 中一种强大的事件通知机制,它允许开发者在不直接引用类的情况下调用成员函数。本质上,委托是一种类型安全的函数指针,特别适合用于实现观察者模式、事件系统和回调机制。 基本概念 核心特点 类型安全:编译时会检查函数签名匹配 动态绑定:可以在运行时绑定/解绑函数 多播能力:可以同时通知多个接收者(Multicast Delegates) 序列化支持:部分委托类型支持蓝图序列化 委托类型 Unreal Engine 提供了几种主要的委托类型: 1. 单播委托 (Singlecast Delegates) 123DECLARE_DELEGATE(MyDelegate); // 无参数DECLARE_DELEGATE_OneParam(MyParamDelegate, FString); // 单参数DECLARE_DELEGATE_TwoParams(MyTwoParamDelegate, int32, bool); // 双参数 2. 多播委托...
UC++的宏定义语法详解
Unreal Engine中宏定义语法的使用 示例代码: 123456789101112131415161718192021222324// 类声明宏:使类被纳入Unreal反射系统// - Blueprintable:允许在蓝图中创建该类的子类// - meta=(DisplayName="My Object"):在编辑器中显示的自定义名称UCLASS(Blueprintable, meta=(DisplayName="My Object"))class UMyObject : public UObject // 必须继承UObject或其子类{ // 代码生成宏:必须出现在类体内第一个位置 // - 展开后会包含类型信息、反射数据等引擎所需的内容 GENERATED_BODY() // 属性声明宏:将成员变量暴露给反射系统 // - EditAnywhere:可在编辑器的任意位置(如蓝图、细节面板)编辑此属性 // -...
游戏开发中AI
文章的思路来源于Voidmatrix大神视频总结,以及一些本人开发BossAI的感悟所写。 附上大神原视频链接:【游戏开发秘籍】状态机?行为树?一个视频速通游戏开发中的AI!#06 游戏AI是什么 **游戏开发领域中,AI通常指的是对非玩家角色行为的设计与研究,让他们能够感知周围的环境,并且做出相应的动作表现。**例如和玩家交互聊天的NPC、按照特定规则巡逻的怪物或是直接与玩家进行对抗的人机等等,一个能与我们的游戏玩法相匹配,逻辑自洽的角色,除去策划上的工作,在开发技术上也是大有研究的。 游戏AI的核心目标 增强体验:通过智能的NPC行为、动态难度调整等提升游戏趣味性。 创造挑战:让敌人或对手具备合理的策略,避免过于简单或作弊。 模拟世界:构建逼真的生态系统(如《荒野之息》中的动物行为)。 状态机(FSM) 最经典最简单的AI实现技术便是状态机,我们可以把NPC的每一个具体的行动都拆分成一个独立的状态。 接下来我们只需要设计好状态间的挑战条件就可以了,譬如...
C++中::|->|.|*这些特殊字符的意义和用法区分
在 C++ 中,::、-> 、. 和*是四种不同的运算符,分别用于不同的上下文场景。它们的详细解释和用法对比: 1. 作用域解析运算符 :: 用途 访问 命名空间、类、结构体或枚举 的成员 调用 静态成员(变量或函数) 区分同名的全局变量和局部变量 示例 1234567891011121314151617181920212223242526#include <iostream>namespace MyNamespace { int value = 42;}class MyClass {public: static int staticValue; static void staticMethod() { std::cout << "Static method called!" << std::endl; }};int MyClass::staticValue = 100; // 静态成员变量定义int main()...
JavaWeb(四)前端工程化
Ajax 的缺点: 浏览器兼容性:不同浏览器对 XMLHttpRequest 的实现可能不同。 SEO 不友好:动态加载的内容可能无法被搜索引擎抓取。 调试复杂:异步通信的调试相对复杂。 Axios Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js。它简化了与服务器的 HTTP 请求,并提供了强大的功能,如拦截请求和响应、自动转换 JSON 数据等。 Axios 的特点 基于 Promise:支持异步操作,代码更简洁。 跨平台:适用于浏览器和 Node.js。 自动转换数据:自动将请求和响应的数据转换为 JSON。 拦截器:可以拦截请求和响应,添加全局处理逻辑。 取消请求:支持取消未完成的请求。 错误处理:提供统一的错误处理机制。 基本使用: 安装axios: 1npm install axios 导入axios 1import axios 'axios' 使用Axios发送请求,并获取响应结果,官方提供的api很多,此处给出2种,如下 发送 get 请求 123456axios({ ...
UnrealEngine C++ 与标准 C++ 的区别
1. 类声明与反射系统 1.1 类定义语法 Unreal C++ 1234567891011// 必须继承UObject且使用反射宏UCLASS(Blueprintable, meta=(DisplayName="My Object"))class UMyObject : public UObject { GENERATED_BODY() // 必须包含 UPROPERTY(EditAnywhere, Category="Stats") float Health = 100.0f; UFUNCTION(BlueprintCallable) void Heal(float Amount);}; 标准 C++ 12345678class MyObject {public: float Health = 100.0f; void Heal(float Amount) { Health += Amount; ...
游戏开发中的跳跃设计
文章的思路来源于VoidmatrixUP的B站视频总结,以及一些本人游戏开发的感悟所写。 附上原视频链接:【游戏开发秘籍】二段跳?土狼跳?跳跃还有这么多骚操作!游戏角色跳跃功能实现 #01 游戏的跳跃设计往往决定了这个游戏的上手手感,对于开发者来说,好的游戏跳跃的设计(以及优化)基本要遵循以下原则: 物理模拟与心理预期的平衡 既需要遵循基础物理规律(如自由落体)满足玩家直觉,但也要适配游戏的合理放大能力(如2.5米跳跃高度)。 跳跃高度控制的插值过度 当角色达到预设高度限制时强制速度归零(直接下落或平滑减速),但是直接将角色的速度取为0会导致手感上很生硬(就好像撞到了空气墙),所以现代游戏设计一般会在高度限制上做一个速度插值平滑过渡(如接近上限时渐衰减). 跳跃缓冲(Jump Buffering) 存储提前输入的跳跃指令(如连续跳跃落地前几帧按键),在满足条件时自动触发。这点比较类似于游戏连招系统中的按键缓存. 跳跃宽限期(Coyote...