UE4/5 C++网络服务器编程纪录【零】--准备篇

news2024/11/18 11:26:38

前言

之前利用业余时间重新复习UE4/5的C++开发,闲来无事做了个基于独立服务器的多人在线(目前限定客户数量是20人以内)DEMO,核心功能在我之前发的B站视频里面有,战斗、动作、交互以及场景演示都有了,有朋友看了视频之后要求我写文档复现,我也顺便纪录一下需要做的工作。方便以后自己遇到相关业务场景进行回顾知识点,顺便分享给各位朋友。

视频指路1-整点小活儿: 整点小活儿

视频指路2-研发中天气场景切换: 研发中天气场景切换

视频指路3-简单的敌人AI功能: 简单的敌人AI功能

准备工作:

游戏服务器:UE5游戏服务器应用 UE5.1

数据库服务器:mysql-8.0.32

服务器操作系统:Linux Ubuntu18.0LTS

WEB服务器:利用UE5进行集成,处理工作在游戏服务器内部完成

客户端:UE5开发完成的客户端

框架设计:

基于UE5的独立服务器功能开发的C/S框架,基本原理就是客户端只负责发起功能请求和渲染展示,游戏服务器负责进行运算数据同步、坐标信息同步、加密保护等功能。数据库服务器用于存储客户数据,客户行为模型,客户标签等功能。WEB服务器处理一部分WEB请求,并提供一切WEB能处理的功能。

重点!!!!

所有的操作和运算都在游戏服务器完成,不允许在客户端进行数值运算和用户数据更新!客户端只能渲染画面和进行数据同步。

服务器开发基础入门参考文档:UE5设置专用服务器

mysql数据库服务器开发基础安装参考文档:mysql官方安装包

一、下载UE5源码

GITHUB源码包:虚幻引擎官方GITHUB

小技巧:在下载完成的安装包Setup.bat里面修改如下配置,能够发动多线程下载,提升某些不可描述原因引起的1兆不到的网速。

set PROMPT_ARGUMENT=set PROMPT_ARGUMENT=--prompt --threads=30 --exclude=VS2012 --exclude=VS2013 --exclude=VS2017 --exclude=HTML5

然后再在hosts里添加unreal的CDN代理

13.226.17.97 cdn.unrealengine.com

通过一系列操作,可以提升在SetUp.bat完整拉取虚幻引擎的速度,但是因为某些不可描述的原因不会提升很高,总比28kb/s好

安装完成后利用VisualStudio打开UE5.sln看到如下图所示

二、安装MySql

基本需要的引擎已经安装好了,需要安装数据库服务器,我这里使用的是Mysql-8.0.32

安装步骤参考另一位大神的文档:MySQL安装配置教程(超级详细、保姆级)

这个过程中因为Windows10的部分管理员权限问题,导致mysqld初始化安装失败。

我们需要在C:\Windows\System32里面用管理员身份打开cmd命令行,然后使用如下命令进入mysql安装包,不能用简单的cd命令操作,要加上/d

cd /d H:\mysql-8.0.32-winx64\bin

最后结果如图

其他的参考大神的mysql安装步骤解决就行了。

三、安装DBeaver

开启了mysql服务之后,不习惯命令行操作的朋友可以利用DBeaver进行数据库内容管理操作,和同事讨论了用轻量级的navicat,总感觉差点意思,毕竟现在是做大数据的,要集成很多jdbc功能,用DBeaver更合适我,所以就安装了。

DBeaver下载地址:DBeaver官方下载链接

安装完成之后直接链接本地Mysql服务,如图所示

前期的准备工作就已经完成了,我们编译一下UE5的源码,弄个基于官方第三人称模板开发的DEMO,包含登录功能、登录服务器关卡等功能的DEMO看一下。

四、准备工作完成进行简单的DEMO

(1)设置UE5引擎编辑器为启动项目

选择engine->UE5,设为启动项目

选择debug editor,点击生成。根据机器配置不同,生成新的项目时间为几个小时到几天不等(实在太大了,狂吃我机器性能)

(2)生成项目的同时不能闲着,创建用户信息数据库,并进行数据插入

create database game_users;
create table if not exists game_users.user_base_info(
`id` INT  NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_name` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '用户名',
`pass_word` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '用户密码',
`user_state` int  NOT NULL DEFAULT 0 COMMENT '用户状态,0:不可用,1:可用',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间',
PRIMARY KEY (`id`)
)ENGINE = INNODB charset = utf8mb4 COMMENT '用户信息表';

建表完成插入测试语句,如图所示

insert into game_users.user_base_info (user_name,pass_word,user_state) values ('demo1','demo1',1);

到此为止,基础的测试数据执行完成,数据准备工作就绪。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/441912.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux使用:环境变量指南和CPU和GPU利用情况查看

Linux使用:环境变量指南和CPU和GPU利用情况查看 Linux环境变量初始化与对应文件的生效顺序Linux的变量种类设置环境变量直接运行export命令定义变量修改系统环境变量修改用户环境变量修改环境变量配置文件 环境配置文件的区别profile、 bashrc、.bash_profile、 .ba…

函数(有点难,要注重实战)

目录 1. 函数是什么2. C语言中函数的分类2.1 库函数2.1.1 如何学会使用库函数? 2.2 自定义函数 3. 函数的参数3.1 实际参数(实参):3.2 形式参数(形参): 4. 函数的调用:4.1 传值调用4…

Spark SQL实战(08)-整合Hive

1 整合原理及使用 Apache Spark 是一个快速、可扩展的分布式计算引擎,而 Hive 则是一个数据仓库工具,它提供了数据存储和查询功能。在 Spark 中使用 Hive 可以提高数据处理和查询的效率。 场景 历史原因积累下来的,很多数据原先是采用Hive…

Node内置模块 【url模块与queryString】

文章目录 🌟前言🌟url 模块🌟 URL各部分说明🌟 将URL字符串转换为对象🌟 将对象格式化为URL字符串:url.format(urlObj)🌟 URL路径处理:url.resolve(from, to) 🌟 querySt…

MySQL-四大类日志

目录 🍁MySQL日志分为4大类 🍁错误日志 🍃修改系统配置 🍁二进制日志 🍃查看二进制日志 🍃删除二进制日志 🍃暂时停止二进制日志的功能 🍁事务日志(或称redo日志) 🍁慢查…

SSM整合、环境配置以及详细综合测试(单表查询、多表查询和数据分页、前后端分离、Vue3)

SSM整合、环境配置以及基础综合测试 准备:创建maven项目以及项目框架准备 SSM整合简介 介绍: SSM(SpringSpringMVCMyBatis) 整合,就是三个框架协同开发。Spring整合Mybatis就是将Mybatis核心配置文件当中数据源的配置、事务处理、以及工厂的配置&…

OpenGL入门教程之 深入三角形

一、引言 本教程使用GLEW和GLFW库。  通过本教程,你能轻松的、深入的理解OpenGL如何绘制一个三角形。  如果你不了解OpenGL是什么,可以阅读OpenGL深入理解。 二、基本函数和语句介绍 通过阅读以下的函数,你的大脑里能留下关于OpenGL基本函…

通过CSIG—走进合合信息探讨生成式AI及文档图像处理的前景和价值

一、前言 最近有幸参加了由中国图象图形学学会(CSIG)主办,合合信息、CSIG文档图像分析与识别专业委员会联合承办的“CSIG企业行——走进合合信息”的分享会,这次活动以“图文智能处理与多场景应用技术展望”为主题,聚…

安全防御第四天:防病毒网关

一、恶意软件 1.按照传播方式分类 (1)病毒 病毒是一种基于硬件和操作系统的程序,具有感染和破坏能力,这与病毒程序的结构有关。病毒攻击的宿主程序是病毒的栖身地,它是病毒传播的目的地,又是下一次感染的出…

尚融宝21-整合springcloud

目录 一、整合注册中心nacos 二、整合openFeign (一)准备工作 (二)导入依赖 (三)接口的远程调用 (四)配置超时控制和日志打印 三、整合Sentinel 四、整合gateway服务网关 …

【Spring从成神到升仙系列 五】从根上剖析 Spring 循环依赖

👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主📕系列专栏:Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙…

基于SpringBoot+Vue家乡特色推荐系统

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…

【李老师云计算】HBase+Zookeeper部署及Maven访问(HBase集群实验)

索引 前言1. Zookeeper1.1 主机下载Zookeeper安装包1.2 主机解压Zookeeper1.3 ★解决解压后文件缺失1.4 主机配置Zookeeper文件1.4.1 配置zoo_sample.cfg文件1.4.2 配置/data/myid文件 1.5 主机传输Zookeeper文件到从机1.6 从机修改Zookeeper文件1.6.1 修改zoo.cfg文件1.6.2 修…

一文带你了解MySQL的前世今生,架构,组成部分,特点,适用场景

文章目录 一、MySQL的由来二、MySQL的架构2.1 客户端2.2 服务器 三、 MySQL的主要组成部分3.1 连接管理器3.2 查询缓存3.3 解析器3.4 查询优化器3.5 执行器3.6 存储引擎 四、MySQL的特点五、MySQL的应用场景六、总结 一、MySQL的由来 MySQL最初是由瑞典公司MySQL AB的Michael …

4年功能测试,我一进阶python接口自动化测试,跳槽拿了20k......

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 很多人在这求职市…

让ChatGPT告诉你Java的发展前景

Java版电商购物系统项目实战 最近很多人问我Java的发展前景怎么样?该怎么学Java基础?java这么卷还该不该学等等。那今天老王以电商场景为例,再结合ChatGPT的回答和大家聊的一下Java有哪些应用前景和技术层面的落地方案。(在收获干…

【Spring】-- 02 -- Spring中Bean的配置、作用域

一、Bean的配置 Spring用于生产和管理Spring容器中的Bean,需要开发者对Spring的配置文件进行配置。在实际开发中,最常采用XML格式的配置方式,即通过XML文件来注册并管理Bean之间的依赖关系。 在Spring中,XML配置文件的根元素是…

iOS问题记录 - Xcode 14.3版本运行项目报错

文章目录 前言开发环境问题描述问题分析解决方案最后 前言 看到Xcode有新版本,没忍住点了升级,然后问题来了。 开发环境 macOS 13.3Xcode: 14.3 问题描述 Xcode 14.2版本运行项目一切正常,升级到14.3版本后运行报错。 运行到模拟器的报…

【PWN刷题__ret2text】——CTFHub之 简单的 ret2text

萌新第一阶段自然是了解做题的套路、流程,简单题要多做滴 目录 前言 一、checksec查看 二、IDA反汇编 三、exp编写 前言 经典的ret2text流程 一、checksec查看 64位程序,什么保护都没有,No canary found——可以栈溢出控制返回 二、IDA反汇…

“MySQL5.6”、“索引优化”,其实都是索引下推

如果你在面试中,听到“MySQL5.6”、“索引优化” 之类的词语,你就要立马get到,这个问的是“索引下推”。 什么是索引下推 索引下推(Index Condition Pushdown,简称ICP),是MySQL5.6版本的新特性,它能减少回…