VOXL - Unity Multiplayer Voxel Sandbox

2858132--209083--VOXL_forum.png

VOXL is the first UNET Multiplayer Voxel Sandbox for Unity!
(Store)(WebGL Demo) (Documentation)

About:
VOXL uses Noise functions to generate pseudo random infinite Voxel worlds. The asset was designed with simplicity in mind and has high quality networking code based on uMMORPG and uMOBA.

VOXL was designed with simplicity in mind. The code is as simple as possible, while still being able to handle an infinite world

Video:

Screenshots:




Features:

  • Fully Unity + UNET based
  • Same Scripts for Client & Server
  • Infinitely huge Worlds
  • Procedural Generation via Perlin Noise
  • Structure Generation: Trees, etc.
  • 100% Pseudo Random
  • First Person Movement
  • Player Health, Damage, Defense, etc.
  • Voxel placement and destruction
  • Crafting
  • Dynamically loaded Chunks
  • Highly optimized via Local Occlusion
  • Smooth World (Un)Loading via Coroutines
  • Database to save players and world
  • Uses Unity’s new UI system
  • Beautiful Textures
  • Local, Whisper, Info Chat
  • Items & Item Drops
  • Only 2600 lines of carefully crafted C# Code
  • Server can run on Linux in Headless mode
  • Login Panel
  • Start as Host/Client/Dedicated
  • Network Time Synchronization
  • Platform Independent
  • Mobile Support
  • Free of Deadlocks & Race Conditions
  • A Patcher is available separately

Roadmap:

  • V1.0 [released 2016-12-12]

  • First release with a whole lot of features.

  • V1.1 [released 2016-12-20]

  • Upgrade to Unity 5.5.0p1 for important bug fixes

  • item.template property added

  • Inventory adding helper functions added

  • Player item drop pickup uses InventoryAddAmount helper function now

  • ItemTemplate uses ?? operator for cache initialization now

  • NetworkTime.time added

  • Database CharacterLoad/Save settings simplified via object initializer

  • Database CharacterCreate simplified via ternary operator

  • Extensions.FindRecursively simplified by using Array.Find

  • Extensions.FindObserver removed because it’s not needed right now

  • PlayerChat syntax improved

  • TestMeshCopyText target renamed to source for consistency

  • TextMeshCopyName uses SerializeField instead of public now for consistency

  • Utils.AnyKeyup and Utils.AnyKeyDown use Linq.Any extension now

  • Utils.ClosestDistance simplified

  • Utils.GetAxisRaw syntax improved

  • GUIConsole improved

  • UIDragAndDropable syntax improved

  • NameOverlays made shaper

  • All NetworkMessage classes are public now

  • Entity.animator caching

  • UIChat isn’t shown in login scene anymore

  • UIToolbar isn’t shown in login scene anymore

  • UIChat.AutoScroll is faster now

  • UIChat.keepHistory added

  • ‘var’ is not used for simple types anymore

  • Utils.ClampLong/MinLong/MaxLong removed

  • Splash screen animation set to static

  • V1.2 [released 2016-12-25]

  • Bottom layer is undestroyable now. Fixes all kinds of issues.

  • NetworkManager.IsValidCharName fixed

  • V1.3 [2017-01-09]

  • Upgraded to Unity 5.5.0p3 for important bug fixes

  • NetworkManager configuration improved for sending huge amounts of messages

  • NetworkName uses unreliable channel now

  • All player commands use the unreliable channel now

  • PlayerChat component and all commands, targetrpcs and clientrpcs use the unreliable channel now

  • Entity.RpcShowDamagePopup uses the unreliable channel now

  • Removed UI Chat comment

  • Dedicated server fixed tick rate

  • V1.4 [in development]

  • Upgraded to Unity 5.5.1. Several variables were renamed, especially in the UI scripts. Make sure to properly assign each script’s variables in the Inspector when upgrading your custom projects.

  • Utils.IsNullOrWhitespace comment typo fixed

  • UI Popup text color set to black so that it’s always visible

  • Removed Networkmanager database header outdated comment

  • Utils.PrettyTime and ClosestPointOnBounds removed because they aren’t needed

  • GUIConsole smaller improvements

  • UIChat simplified. Using more literal variables now

  • UIDragAndDropable improvements

  • UIHearts entry renamed to slot

  • UIInventory simplified. Uses UIInventorySlot script for easier component access now

  • UIKeepInScreen r is now rect

  • UILogin simplified

  • UIPopup simplified

  • UIToolbar simplified

  • Player: simplified some array initializers

  • Utils.IsPointerOverGameObject now works on mobile too

  • NetworkManager simplified

  • PlayerChat simplified and renamed to Chat

  • Item, ItemTemplate use more literal variable names now (boostsHp is now boostsHealth etc.)

  • Entity, Player use more literal variables now (hp is now health etc.)

  • Voxel hp renamed to health

  • Database idx renamed to index

  • PlayerChat OnStartLocalPlayer Client tag removed

  • PlayerEquipmentLocation renamed to EquipmentLocation

  • V1.5 [released 2017-08-23]

  • Upgraded to Unity 2017.1.0p1

  • PlayerDndHandling moved into Player class

  • Item.ToolTip uses StringBuilder for performance

  • Login button rapid clicking bug fixed

  • Player.onlinePlayers dict added for performance

  • NetworkManager initialization moved from Awake to Start

  • Inventory moved from Player to Entity

  • Entity components made public to be assigned in the Inspector. Reassign them in the Inspector when updating.

  • NetworkManager GlobalConfig threadpoolsize increased from 1 to 3

  • NetworkManager ConnectionConfig optimized

  • Entity.InventorySlotsFree improved

  • FaceCamera only updates while visible

  • NetworkProximityCheckerCustom only checks player layer now

  • V1.6 [released 2017-11-18]

  • Drag and Drop fixed

  • V1.7

  • Upgraded to Unity 2017.1.2p3

  • Name overlays are now udpated in Entity.UpdateClient

  • Player: public chat component instead of GetComponent call

  • Chat: public player component instead of GetComponent call

  • UIChat: AddMessage keepHistory check deletes half the history each time to avoid lag

  • Entity.IsWorthUpdating made virtual

  • Player.Start: equipment setup moved to OnStartClient so it’s not done on the server anymore

  • Changed all Scrollbar movements to clamped

  • Entity.RpcShowDamagePopup improved

  • NetworkTime fixed

  • NetworkManager universal quit function to also work in Editor

  • UnityVersionCheck added so people know the recommended Unity version for VOXL

  • Removed old equipment update workaround for Unity 5.6

  • Player.equipmentTypes+Locations now in one struct

  • Player.OnDragANdDrop inventory slot to inventory slot uses configurable keys now

  • NetworkManager RegisterHandler calls moved to OnStartServer so that reconnecting works

  • Database CharacterLoad: health is assigned after everything else was loaded

  • V1.8

  • Upgraded to Unity 2017.4.1 LTS

  • Removed and added NetworkTransform component to Player prefab again. Fixes a bug where movement wouldn’t sync to the server from build clients.

  • V1.9

  • Upgraded to Unity 2018.3.6 for significant performance increase

  • Upgraded from UNET to Mirror for significant performance increase

  • World Generator: default view range in chunks increased to 4 thanks to Unity 2018 and Mirror performance improvements

1 Like

No biomes supports?

hmm if the price is cheap enough I might grab it to take a look at some bits of it …

but as far as the voxel engine it doesn’t really seem that performant (not sure if its the webgl build or that you coded it so that new chunks are rebuilt multiple times per chunk for the row building effect hard to tell)… I’m also already using another voxel framework for a game but have sunk more time on improving its performance and adding worldedit support so will have to see.

I think most would love a fully featured minecraft framework to build there own a game on top of, but so many of these voxel projects fall so short in so many areas, so its nice to see a package that actually tries to put together a bigger part of all the components someone might need to get started without wasting time reinventing the wheel on things

As a suggestion block rotations, ie like the log placement going horizontally/vertically on player placement angle.
Water block is seen as a solid, can’t place block in it only on it
Fixing the water faces when next to same water block so they are not added.

Some are just little things many could add/fix themselves and others not so simple. But its really the performance and how well it works for me , any parts of the voxel generation done on another thread?

So I can use this and your ummorpg together and have a third-person mmorpg minecraft a-like? Do you provide tutorial for a combination of both?

what are biomes?

For example, some areas could be deserts while others could be ice regions.

Not in V1.0, I really want to get VOXL to the store first. I do know how to implement biomes though, so it’s very likely that we will see them in the future. I added it to the roadmap too.

I don’t have any combination tutorials right now, because things change too often. You should probably pick one (uMMMORPG/uMOBA/VOXL) and then base your game on that and copy features from the others if needed.

Release price will be $80.

About performance: there are a few more optimizations that I will implement, but the main performance cost is UNET right now. You will see this in the profiler too. The NetworkProximityChecker and NetworkServer have to go through a lot of voxels. There might be ways to speed this up more too, will have to dig through the HLAPI source a bit more / perhaps talk to a UNET developer. Note that the alternative is to not attach a NetworkIdentity to every voxel and do all the synchronization manually. This would be faster, but it would also be much more complicated. I really want this to be as simple as possible, so people can learn how to create voxel worlds with UNET, without getting too frustrated with it.

About Minecraft clones: I also noticed that most other voxel assets on the store didn’t have any networking and were mostly for rendering. Adding multiplayer is the hard part, that’s what VOXL is trying to solve.

About your suggestions: will keep them in mind. I wanted to get the core features on the store first before I put more work into it.

About threading: UNET will use multiple threads very soon: https://forum.unity3d.com/threads/new-multiplayer-transport-release.435133/ . This should be a great performance boost already.

1 Like

Here is another screenshot with chunks and local optimization:

The yellow boxes are the chunks that are automatically built around players. Those are the only parts of the infinite world that are currently ingame.

At the bottom left you can see the local optimization, where all voxels that have 6 direct neighbors are automatically hidden. This is a huge performance improvement, because we wind up only drawing the surface of the world and not the thousands of voxels below it.

How easy is it to add our own custome blocks, items, etc

Very easy, I explained it step by step in the documentation: https://noobtuts.com/unity/VOXL-documentation

Ok thanks. I will check it out when i get off work.

Sure. It’s not on the store yet by the way, I am still waiting for the Asset Store team to review it. Should probably be done by next week I hope.

This is why i will be purchasing this asset!

1 Like

any plans to integrate photon instead of unet

Not at the moment, I really wanted to use Unity’s native networking system for this.

1 Like

I hate Photon! Why always use third-party-solutions …

That’s it exactly, and why this looks amazing! It all seems so easy until you try and add multiplayer…

To keep everyone up to date: VOXL is still being reviewed by the Asset Store team. They must be very busy this time of the year.

damn it takes too long. :frowning:

It will come!

+1