Skip to content

arssivka/Adventurer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Adventurer

Overview

This is game prototype in UE5. The game is designed as multiplayer voxel sandbox for roleplaying games like DnD where master can create anything right in the game like locations, objects and characters. Currently it can be used as a template for voxel based games with network replication.

This voxel generation algorithm is based on UE5VoxelTutorial source code and adapted for the project codestyle.

Implementation

  • FVoxelArray - storage of voxel data. It can compress data over network

  • AVoxelNetChunk - invisible actor which is responsible for storing voxel data and its replication over network from the server to clients. It uses fast replication to reduce load on the server. Lifetime of all chunks are controlled by UVoxelNetChunkSubsystem. Actor is designed to avoid size limitation of replicated variables in UE per actor.

  • UVoxelNetChunkSubsystem - storage of net chunks. All chunks are grouped by FVoxelNetChunkHandle (kinda chunk unique key), each handle stores array of net chunks (sections). It doesn't contain information about chunk positions in the world because different physical voxel meshes can reuse single chunk data. Also it provides voxel update delegates to notify about all changes on the server and on the clients after replication.

  • FVoxelGridNetCell - pair of chunk location and chunk handle

  • FVoxelGridNetCellArray - container of cells with fast and efficient network replication. It's resposible for holding information for mapping net chunks with physical objects. To reduce amount of data replicated over network in single actor it doesn't replicate sections (technically it's kinda 2d grid of chunk indexes). Amound of sections can be obtained from the UVoxelNetChunkSubsystem.

  • UVoxelGridMeshComponent - scene component for creating 3d meshes (UProceduralMeshComponent) based on data from FVoxelGridNetCellArray and AVoxelNetChunk. It automatically receives all updates and reconstruct mesh after each update

  • UVoxelCubeMeshComponent - mesh component for creating optimized simle big box mesh. For instance if you need create a voxel cube 128x128x128, it just creates plain cube with 8 vertices and scale UV coordinates on it. It's designed for drag'n'drop voxel painting

About

Prototype of voxel based multiplayer game in UE5

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages