
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




