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.
- 12 default materials with their palettes
- Material palettes: 10, 16 or 256 colours / metallic / smoothness combinations
- Custom material palettes creation
- Main light direction
- Light parameter: Light, Ambient, Mie and Rayleigh colour, Mie Amplitude, Scattering g factor
- Atmosphere density and half length
- 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
- Pitch and Yaw - aim using the mouse
- Pitch - Mouse up and down
- Yaw - Mouse left and right
- Q - roll left
- E - roll right
- Shift + movement key = move faster
- ArcBall camera
- Cinematic (smoothness)
- Field of view (FOV)
- Auto align to axis
- 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)
- 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'
- '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
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
- Hovering, clamped on any surface
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.)