Support our work on Avoyd and open source software through Github Sponsors or Patreon



Juliette Foucaut - 06 Feb 2018

An update on our progress with the voxel editor and what we've been working on lately: I'll explain why our voxels are weirdly shaped, all the things you can do with the voxel editor, and what's coming next: the movement system and procedural generation.

Procedural tree experiment

So a year ago we stealth released the Voxel Editor part of Avoyd. Since then we've issued 33 updates, adding functionality and fixing issues we've discovered. (Releases are announced in the forum.)

The voxel editor will become the editor for making everything in the game Avoyd. For now, you can use it to make large voxel environments. It's designed to be fast, smooth (Avoyd is an FPS), and usable by multiple people over a network together (networking is currently disabled).

Constrained morphing voxels

The voxels in Avoyd are a little special: they’re constrained morphing voxels. This means their shape depends both on how full of material they are, and their neighbours. They change shape to keep in contact with the voxels next to them. For example, a full voxel is always a cube, but if we remove half its material, it becomes a cube half the size. If it has neighbours, it sticks to them, deforming like a soap bubble.

We came up with the constrained morphing voxels model in the original Avoyd 1999 to help with movement. With avatars about a third the size of a voxel, moving between one voxel cube and the next in zero g could cause brutal, disorienting changes from a first person point of view (picture stepping on a wall). Flattening the angles to create slopes helped.

Avoyd 1999 screenshot showing the original constrained morphing voxels with the avatar for scale.

Avoyd screenshot showing the current iteration of constrained morphing voxels.

In the current version of Avoyd, avatars are larger than a voxel. But we’ve decided to keep the constrained morphing voxels as we like their organic, low poly looks. We’ve enhanced the mesh generation algorithm slightly, and to reduce visual noise have decided not to use textures in order to make the environment more readable.

Voxel editor features

An overview of what you can do with the voxel editor:

Build very large voxel environment, up to 262k voxels a side (262142 cubed to be precise, so 18013986195767288 voxels, 18 million billion cubes)

Editor tool Material / colour palette Selection of full and hollow shapes



Some of the shapes available to use as brushes. Starting from the top left: wedge, box, sphere, cylinder, a rotated wedge, an ellipsoid, two tubes, a cube, a cone and a corner.

Add / Remove shapes Cut / Copy / Paste shapes (including across different world files and with rotations) Paint / Pick colour Undo / Redo Change the amount of material Adjustable tool distance (enter a number or use the mouse wheel) Anchor tool Constraints: snap to grid, offset etc Symmetry planes Load brush: use a world file as a brush. Also works with .vox, MagicaVoxel and Minecraft files.



Materials 12 default materials with their palettes Material palettes: 10, 16 or 256 colours / metallic / smoothness combinations Custom material palettes creation

Lighting Main light direction Light parameter: Light, Ambient, Mie and Rayleigh colour, Mie Amplitude, Scattering g factor Atmosphere density and half length

Camera Position and speed Movement keys Press tab or right-mouse button to move the camera (your point of view) Translation - WASD W - forward S - backwards A - strafe left D - strafe right Space - up Ctrl - down Rotation Pitch and Yaw - aim using the mouse Pitch - Mouse up and down Yaw - Mouse left and right Roll Q - roll left E - roll right Shift + movement key = move faster ArcBall camera Cinematic (smoothness) Field of view (FOV) Auto align to axis

Options Accessibility: menu background colour, cursors and markers brightness, mouse sensitivity, font size and type Performance: level of detail (LOD), lighting quality etc. Window resizing and fullscreen Right-mouse menu for quick access whilst editing

Save / Load Save / Load worlds, materials and atmospheric settings Import Minecraft and .vox files (MagikaVoxel)

Shortcuts Tab - toggle between edit mode and camera view Ctrl + m - hide/display editor menu Ctrl + z - undo Ctrl + y - redo F10 - take a screenshot, saved in '..\Avoyd\Screenshots'

Other 'X2' multiply the scale of all objects in the world by two: e.g. a 3x3x3 cube becomes a 6x6x6 cube. Can be applied multiple times. Edit tool shapes include abstract procedural trees Power save : stop rendering when the mouse cursor stops moving (doesn't affect the performance) Settings are automatically saved when closing Avoyd Help - tooltips and Introductory tutorial: adding, deleting and painting shapes



Movement

We've achieved most of what we wanted to do with the editor and are moving on to gameplay, starting with 6 degrees of freedom in zero gravity. There are several ways to move around in Avoyd:

without inertia: constant speed, high maneuverability: start, stop and change direction on the spot

with inertia: acceleration enables higher speeds, to the detriment of maneuverability

Jumping

Flying

Hovering, clamped on any surface

Procedural generation

We'll play around with these modes until it feels right. This video is an early trial:

The next release of Avoyd will include the movement prototype, so we need surfaces to move on. To keep the download small, we're exploring procedural generation. When I began learning procgen I made trees as a prototype for in-game growing organisms, but they have an unintended flaw: their fine branches make great traps for the avatars! The goal now is to create a bunch of simple, smooth, interconnected volumes. I've also started experimenting with greeble to add a sense of scale.

Procedurally generated greeble experiments

(Anyhow, if you want to grow voxel trees, follow these instructions.)