Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >想要制作沙盒游戏?那么这一款插件你一定不能错过(Unity3D)

想要制作沙盒游戏?那么这一款插件你一定不能错过(Unity3D)

作者头像
恬静的小魔龙
发布于 2022-08-07 01:16:12
发布于 2022-08-07 01:16:12
2.2K0
举报
文章被收录于专栏:Unity3DUnity3D

一、介绍

今天给大家介绍一款简单而又强大的多人沙盒游戏开发插件VOXL。

VOXL是一款简单且易于理解的多重体素沙盒游戏,使用Unity的UNET网络系统开发。

由于服务器和客户端是一体的,所以我们不用再费心搭建服务器,会大大提高我们的开发效率。

VOXL目前只包含大约2500行干净、优雅和易于理解的源代码。

效果图:

二、下载地址

官方下载地址(已经下架): https://assetstore.unity.com/packages/templates/systems/voxl-multiplayer-voxel-sandbox-75829

Github下载: https://github.com/764424567/Unity-plugin/tree/master/Menu/Unity3D-VOXL

三、快速启动

(1)安装并打开Unity

(2)导入插件包,并打开World场景文件。

(3)在编辑器中按Play键,选择Server & Play开始游戏。

(4)你也可以运行另一个版本,输入一个不同的用户名,然后按Login查看多人游戏的运行情况

四、体系结构概述

VOXL是为用户修改而设计的。下面是代码和架构的快速概述:

  • NetworkManagerSandbox服务器管理,存在于层次结构中。它用于登录/加入游戏,启动/停止服务器。
  • UI ,Canvas包含所有UI元素,每个元素都有一个脚本,比如获取当地玩家的生命值、魔法值等状态。
  • WorldGenerator,世界生成器存在于场景中并生成游戏最初的世界。它对每个位置采样,根据柏林噪声函数运行结构生成像素世界因为是伪随机的,这意味着相同的种子会产生每次都是同样的地形。
  • 有几个像素预制体,玩家摧毁像素预制体会掉落材料,玩家可以从上面走过去收集
  • VoxelDrops立体像素是掉落在地上的小立方体,玩家可以收集小立方体收集,这将添加一个立方体个数到玩家的背包中。
  • 玩家会生成一个实例,用来保存属性如冷却时间、数量等。
  • ItemTemplate数据模板通常存储在数据库中。多亏了Unity 脚本组件功能,我们可以在检查器中编辑它们。可以在“Resources”文件夹中找到和修改模板。
  • 玩家(以及后来的怪物和npc)都会继承实体。实体拥有普通属性,如生命值、法力、伤害、防御。
  • 为了提高性能,会把世界几个部分并根据周围的玩家隐藏/显示它们。

如果感兴趣的话,可以看代码的实现过程,代码中有很多的注释,可以用来学习。

五、理解无限世界生成原理

以下是无限世界生成的工作原理:

(1)使用柏林噪声函数产生二维噪声,类似于旧电视上的静电噪声。

(2)使用二维柏林噪音函数循环生成三维地形,在给定范围内遍历每一个x、z坐标,然后将预制体填充到这个范围内的所有方块。我们只计算当前坐标内的所有位置,而不进行无限生成,因为玩家在不奔跑的时候就没有比较生成无限的世界。

(3)柏林噪声本身是相当枯燥的地形。我们将几个不同频率和振幅的柏林噪声函数相加,得到更有趣的结果。这也被称为八度音阶。

(4)然后我们根据给定位置的八度音节结果决定使用哪种体素类型,例如如果 小于0.5,我们可以用水填充它,小于0.7用泥土填充它,大于0.7用石头填充或者其他更大的东西。这被称为阈值设定。

(5)同时产生一个无限的世界是不可能的。WorldGenerator组件只生成有用的部分。 我们创建了一个像素预测函数,它可以通过使用八度音节来预测任何给定3D位置的像素类型。 这个函数不会加载任何东西到游戏世界中。 我们还创建了一个像素生成函数,为给定的3D位置生成预测的体素。这个函数确实将体素加载到世界中。 然后也不能一直调用而不受限制,这个办法就是生成一层包围的区域,WorldGenerator组件将玩家周围的区域分割成块,然后每个块的每个位置调用VoxelGenerate,也就是生成像素块

(6)树木和建筑物不能产生柏林噪声,我们在生成所有像素后手动将它们生成到每个块中。 注意:世界生成是伪随机的。换句话说:它看起来是随机的,但它总是基于种子。我们永远会因为一粒种子而得到完全相同的世界。这真的很整洁,因为我们可以通过保存种子来拯救整个世界,而且我们可以很容易地通过询问用户他们的世界种子来调试故障。

六、脚本文件分析

Chunk.cs 将世界分为几个大块,将所有包含像素,设置为活跃/不活跃(如果它们不在玩家的范围内)的区域。我们需要分成块来极大地提高性能。 Database.cs 保存XML文件中的字符数据和二进制文件中的世界数据。位置在"Database/Account/Character"文件。 DefaultVelocity.cs 设置开始时刚体的速度。 DestroyAfter.cs 在一段时间后销毁游戏片段。 DetectFocus.cs 将此脚本添加到摄像机(或类似的)以检测游戏窗口焦点。 Entity.cs 实体类是所有像玩家一样的东西的基类,比如NPC,怪物。

七、功能介绍

  • 完全基于Unity + UNET环境部署为基础
  • 客户端和服务器的脚本在一起
  • 无限大的世界
  • 通过Perlin生成噪声过程
  • 结构产生:树木等。
  • 100%模仿随机
  • 第一人称运动
  • 玩家的生命值、伤害、防守等。
  • Voxel放置和销毁
  • 手动加工制作模式
  • 动态加载
  • 通过局部遮挡高度优化
  • 通过协同线进行平稳的世界(UN)装载
  • 数据库保存玩家和世界数据
  • 使用Unity的新UI系统
  • 美丽的纹理
  • 英语、语音、信息聊天
  • 物品及物品掉落
  • 只有2600行精心制作的C#代码
  • 服务器可以在Linux上以Headless模式运行
  • 登录面板
  • 以主机/玩家/特殊身份开始游戏
  • 网络时间同步
  • 平台独立
  • 没有矛盾和竞争对手
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一键完成对话需求?这款插件你不能错过(Unity3D)
Dialogue System是一个分支式的统一会话系统。它不需要任何脚本,但它是设计为易于由程序员扩展。
恬静的小魔龙
2022/08/07
5.7K0
一键完成对话需求?这款插件你不能错过(Unity3D)
【Unity3D】自动寻路系统Navigation实现人物上楼梯、走斜坡、攀爬、跳跃
Radius:烘培的半径,也就是物体的烘培的半径。这个值影响物体能通过的路径的大小
恬静的小魔龙
2020/03/11
11.7K1
【Unity3D】自动寻路系统Navigation实现人物上楼梯、走斜坡、攀爬、跳跃
Unity3D制作3维立体小游戏
Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化的多平台综合游戏开发工具,是一个全面整合的专业的游戏引擎,Unity类似Director,Blender game engine,Virtools或Torque Game Builder等利用交互的图形化开发环境为首要方式的软件。下面通过Unity做这2件事:
全栈程序员站长
2022/08/24
8540
Unity3D制作3维立体小游戏
如何用python制作3d游戏_【教程】12个步骤让你快速学会制作3D游戏
Unity3D不仅是一款功能强大且易于上手的游戏引擎,更重要的是,它还可以被免费下载(它还有一个功能更强大的付费版,但其实你可以使用免费版本完成绝大部分工作)。
全栈程序员站长
2022/09/02
4.1K0
Unity3d场景快速烘焙【2020】
很多刚刚接触Unity3d的童鞋花了大量的时间自学,可总是把握不好Unity3d的烘焙,刚从一个坑里爬出来,又陷入另一个新的坑,每次烘焙一个场景少则几个小时,多则几十个小时,机器总是处于假死机状态,半天看不到结果,好不容易烘焙完了,黑斑、撕裂、硬边、漏光或漏阴影等缺陷遍布,惨不忍睹,整体效果暗无层次,或者苍白无力,灯光该亮的亮不起来,该暗的暗不下去,更谈不上有什么意境,痛苦的折磨,近乎失去了信心,一个团队从建模到程序,都没什么问题,可一到烘焙这一关,就堵得心塞,怎么也搞不出好的视觉效果,作品没法及时向用户交付,小姐姐在这里分享一些自己的经验,希望能帮到受此痛苦折磨的朋友,话不多说,开工!
全栈程序员站长
2022/07/01
4.6K0
Unity3d场景快速烘焙【2020】
Unity3D-网络(一)高级开发-网络解决方案
Unity5.1为开发者发布全新的多玩家在线工具、技术和服务。该技术的内部项目名称为 UNET,全称为 Unity Networking。 第一阶段是多玩家在线技术基础。 第二阶段基于第一阶段,借助模拟服务器引入服务器权威游戏 (server authoritative gaming) 概念。 第三阶段是最后阶段,我们想通过主模拟服务器赋予协调多个模拟服务器的能力。
孙寅
2020/06/02
3.4K0
【Unity】手把手入门2D游戏开发教程——小狐狸的冒险(上)
‍前言:本文章教程,结合Unity官方教程和网上其他资源教程进行整合,目的是让大家可以更快速地上手,减少大家观看比较理论的教程或者视频时长偏长的教程的时间。‍‍‍‍‍
Wesky
2024/09/19
1K0
【Unity】手把手入门2D游戏开发教程——小狐狸的冒险(上)
Unity基础系列(二)——构建一个视图(可视化数学)
在本章教程中,我们将使用游戏对象来构建一个图形,这样我们就可以把数学公式用图像展示出来。然后再把函数和时间关联起来,从而产生一个运动的图像。
放牛的星星
2020/07/16
3K1
游戏开发初级之游戏对象和组件关系(Unity3D)
在Unity中, GameObject几乎就是一个空对象。这是其他一切的基础。它只是一个有组件空间的原始对象。除非我们向GameObject添加组件,否则GameObject本身什么也不做。
恬静的小魔龙
2022/08/07
1.5K0
游戏开发初级之游戏对象和组件关系(Unity3D)
Unity通用渲染管线(URP)系列(七)——LOD和反射(Adding Details)
这是有关创建自定义脚本渲染管道的系列教程的第七部分。它涵盖了详细的层次结构(LOD)和简单的反射,可以为场景添加细节。
放牛的星星
2020/12/24
4.9K0
Unity3D学习笔记(四)分别使用IMGUI和UGUI实现血条的预制设计
思路:用HorizontalScrollbar(水平滚动条)的宽度作为血条的显示值。 直接上代码:
梦飞
2022/06/23
1.2K0
Unity3D | 经典小游戏Pacman
在学习的过程中,几个比较重要的知识点就是:预制体、克隆体、精灵渲染器、渲染层级、脚本、碰撞检测、触发检测、AI设计、UI设计、固定物理帧…
全栈程序员站长
2022/08/30
8980
Unity3D | 经典小游戏Pacman
“对不起,我选择摸鱼”—《扫雷》小游戏开发实战,算法、源代码,基于Unity3D开发
大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。
恬静的小魔龙
2022/08/07
1.4K0
“对不起,我选择摸鱼”—《扫雷》小游戏开发实战,算法、源代码,基于Unity3D开发
从零开始制作Roll-a-ball tutoria滚动的小游戏(Unity3D)
  大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧。
恬静的小魔龙
2022/08/07
1.8K0
从零开始制作Roll-a-ball tutoria滚动的小游戏(Unity3D)
DeepSeek开启游戏AI开发新纪元:实战攻略与创新应用(7/18)
摘要:本文介绍了如何使用DeepSeek强化学习框架进行游戏AI开发,重点包括非对称多智能体对战训练、蒙特卡洛树搜索(MCTS)优化以及Unity/Unreal引擎集成方案。文章首先概述了非对称多智能体对战训练的流程,包括数据采集、模型训练和策略优化,并通过实际案例展示了其在游戏开发中的应用。接着,详细介绍了MCTS的具体实现步骤及其在游戏AI中的应用,优化了智能体的决策能力。最后,探讨了DeepSeek与Unity/Unreal引擎的集成方法,包括模型导入、环境搭建和参数调整,并通过实际案例展示了其高效性和实用性。文章总结了DeepSeek在游戏AI开发中的优势和未来展望,为游戏开发者提供了有价值的参考。
正在走向自律
2025/02/17
3530
DeepSeek开启游戏AI开发新纪元:实战攻略与创新应用(7/18)
Unity3D游戏开发初探—1.跨平台的游戏引擎让.NET程序员新生
  Unity是由Unity Technologies开发的一个让轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone、Windows Phone 8和Android平台。也可以利用Unity web player插件发布网页游戏,支持Mac 和Windows的网页浏览。它的网页播放器也被Mac widgets所支持。
Edison Zhou
2018/08/20
2.3K0
Unity3D游戏开发初探—1.跨平台的游戏引擎让.NET程序员新生
Unity3D游戏开发初探—4.开发一个“疯狂击箱子”游戏
  (1)如何在游戏脚本程序中创建对象而不是一开始就创建好对象?->使用GameObject的静态方法:CreatePrimitive()
Edison Zhou
2018/08/20
1.8K0
Unity3D游戏开发初探—4.开发一个“疯狂击箱子”游戏
Unity基础教程系列(新)(二)——构建视图(Visualizing Math)
这是关于学习使用Unity的基础知识的系列教程中的第二篇。这次,我们将使用游戏对象来构建视图,从而可以显示数学公式。我们还将让函数与时间相关,从而创建动画视图。
放牛的星星
2021/02/12
3.1K0
Unity基础教程系列(新)(二)——构建视图(Visualizing Math)
unity3d的入门教程_3D网课
一、Unity下载与安装 参考博客:Unity Hub、unity、PlasticSCM安装
全栈程序员站长
2022/09/22
4.6K0
unity3d自学教程_3D技巧
Unity3D软件是由Unity Technologies公司提供的综合开发环境,主要面向游戏开发人员、虚拟现实设计师等,可用于创建诸如三维视频游戏、建筑可视化、实时三维动画等类型的多媒体内容,并支持这些内容在Windows、iOS、Android等多种平台的发布,功能非常强大。
全栈程序员站长
2022/09/22
3.9K0
unity3d自学教程_3D技巧
推荐阅读
相关推荐
一键完成对话需求?这款插件你不能错过(Unity3D)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档