logo enkisoftware
Independent game developer making AVOYD
en  fr

Devlog - All Blog Posts

Developing Avoyd, a Voxel Editor able to handle large models and a six degrees of freedom movement Game with editable terrain, and the technology we create in the process.

This page lists all the game development blog posts we've published since we first worked on Avoyd in 1999 to the present day.

Optimising Voxel Meshes for Games Using Blender

Doug Binks - Juliette Foucaut - 18 Sep 2023 - edited 03 Oct 2023


Reducing the number of polygons in 3D objects helps improve a game's performance. This tutorial explains step by step how to clean up the geometry of voxel models in Blender to prepare them for export to game engines like Unreal, Godot or Unity.

Note you may have encountered 'polygon reduction' techniques under other names such as 'vertex reduction', '3D model optimisation' or '3D model clean up'.

This post covers the following workflow:

  1. How to use Avoyd Voxel Editor to convert your voxel model to mesh for Unreal, Godot or Unity.
  2. How to use Blender to optimise the mesh.
  3. How to use Blender to export to glTF for Unreal 5 and Godot, and to FBX for Unreal 4 and Unity, and Links to guides for importing and configuring the model in each engine.
Continue reading

Implementing a GPU Voxel Octree Path Tracer

Doug Binks - 23 Aug 2023


Learn from my mistakes as I implement a GPU voxel octree path tracer based on my current CPU implementation in Avoyd. I cover the C++ to C conversion, buffer upload issues and data visualisation, enhancing the shader error logging along with a basic comparison of the performance on CPU and GPU.

One can program modern GPUs in a variety of languages. However only a few of those languages work well on all the main vendors' GPUs and operating systems: essentially the C like HLSL and GLSL shader languages. Since I use OpenGL with GLSL shaders in Avoyd I choose to write the path tracer in GLSL. (Avoyd runs only on Windows currently but I intend to support other operating systems eventually.)

Continue reading

Isometric Render of a Minecraft Map in Avoyd Voxel Editor

Doug Binks - Juliette Foucaut - 30 Mar 2022


We recently released a video tutorial on how to make an isometric render of a Minecraft map in the Avoyd Voxel Editor, and thought it would be useful for those of you who prefer text over video to write up a short overview of the process here.

This tutorial covers: how to make an isometric render of a Minecraft map in Avoyd, using the arcball camera, tweaking the atmosphere and lighting, tips for using the voxel editor, graphics quality and user interface customisation.


Continue reading

Importing Minecraft maps in Avoyd Voxel Editor improved

Doug Binks - Juliette Foucaut - 25 Feb 2021


Our Avoyd Voxel Editor has come a long way since the last devlog post about it in 2018, and having just released a significant update which enhances the Minecraft import pipeline this seems like as good a time as any to talk about it once again.


Minecraft maps Greenfield city and Cuirassé DSD-401 by MrBatou imported and combined together in Avoyd voxel editor Minecraft maps Greenfield city and Cuirassé DSD-401 by MrBatou imported and combined together in Avoyd's Voxel Editor.


Continue reading

Runtime Compiled C++ Dear ImGui and DirectX11 Tutorial

Doug Binks - 02 Feb 2020


This tutorial takes a small DirectX11 project, the Dear ImGui Example, and adds Runtime Compiled C++ to it. This enables us to edit the code at runtime and see the results live, without recompiling and restarting the project.

This is a Windows only project but both Dear ImGui and Runtime Compiled C++ are cross platform. Thanks to Jonathan Bleeker and Milviz for funding this tutorial.

Runtime-Compiled C++ (RCC++) is a way to reliably make major changes to C++ code at runtime and see the results immediately. It's aimed at games development but could be useful in any industry where turnaround times are a bottleneck.

github.com/RuntimeCompiledCPlusPlus/RuntimeCompiledCPlusPlus

RCC++ is primarily designed to shorten iteration times in development - developers can build their project, run it, make changes during runtime and see the results in a few seconds.

Continue reading

Boxes in Space: procedural generation of abstract worlds in Avoyd

Juliette Foucaut - Doug Binks - 21 Jun 2019


The first part of this post describes how we use procedural generation to create environments in our game, Avoyd, out of simple boxes. It is an extension of the 'Boxes in Space' talk Juliette gave at Feral Vector.

The second part shows the trial and error process we went through to create Avoyd's procgen worlds and how we procedurally generate the light and atmosphere.

The third part consists of procedural generation demos, giving complete instructions to create the boxes in space worlds, Menger sponges, trees that avoid obstacles, and how to change the lighting and atmosphere in Avoyd. The worlds created can be saved and used in game.

Procedurally generated zero gravity, abstract voxel world. It features hollowed, coloured boxes grouped in clusters and linked by metal bridges. All boxes are decorated with greeble.

Continue reading

Procedural python word generator: making user names out of 4 syllables

Juliette Foucaut - 05 Apr 2019 - edited 17 Aug 2023


I decided to write this post after reading about a very cool procedural NPC name generator and thinking that it might be of interest to show a much more basic example. This post is intended for people who have never used procedural generation and know very little programming. The examples are written in Python. I'll do my best to keep things simple and introduce the complexities progressively.

The algorithm is basic: names are generated by randomly assembling four syllables. First I'll explain how it's built, then the features I added to it to make sure the names are within an arbitrary size range, and more importantly, unique.

Continue reading

In-game building

Juliette Foucaut - Doug Binks - 25 Mar 2019


In-game building is finally here. It's taken us a lot of time to refine and the result seems pretty simple, but we went through a number of iterations for getting in game building working fluidly and intuitively in six degrees of freedom - how do you build a 'floor' when rolling around in space?

Continue reading

Player-deployable turrets in Avoyd

Juliette Foucaut - 26 Jan 2019


We've released a new version of Avoyd, 0.3.4 (download link). The main addition is turrets, which can be seen in action in a short video.

We've also fixed some visual bugs as well as a problem with the collision system which made it difficult to hit targets (details in the changelog). In this post we'll talk a bit more about the in-game user interface and how the turrets work.

In-game screenshot of Avoyd showing turrets scanning space for enemy drones

Continue reading

Avoyd Game Singleplayer and Coop Multiplayer Test

Doug Binks - 27 Jun 2018


Avoyd version 3.0 - drone fighters attack

With version 0.3.0 of Avoyd we hit a significant milestone in development with the first release of gameplay along with multiplayer coop over Local Area Networks (LAN). Available for download now, this simple test features two enemy types, a drone spawner and drone fighters along with friendly drones. Your task is to destroy enemies to score points, with the large drone spawners scoring significantly more points than the fighters. Take care when the health of the spawners gets low, as they spew out more waves of drone fighters. Watch our gameplay tutorial video for more.

Continue reading

Voxel Editor Evolved

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.


Avoyd procedural voxel tree experiment Procedural tree experiment


Continue reading

Speeding up Runtime Compiled C++ compile times in MSVC with d2cgsummary

Doug Binks - 31 Oct 2017


It's rare for me to read a blog post and immediatly put the information to use, but this post from Aras Pranckevičius, Best unknown MSVC flag: d2cgsummary is one. Within a short time I had cut elapsed compile and link times for Runtime Compiled C++ live coding with Visual Studio by 1.5x, and eventually 3x with total compile time (total time for all compile processes in a multithreaded system) down 10x. This post explains how.

Continue reading

Multiplayers toxic last hit kill and how to heal it

Doug Binks - 20 Oct 2017


Avoyd multiplayer swarm

Last hit kill scoring in multiplayer team based games feeds toxic behaviour by encouraging competition within teams over cooperation. I propose that we take a different approach to scoring where two equal player attacks at the same time do not result in one player arbitrarily reaping all the reward.

Continue reading

Avoyd Editor Prototype

Doug Binks - 03 Feb 2017


Stealth Launch

We've just stealth launched the Avoyd Editor Prototype for download, along with a purchase button for Avoyd.


"Licence Agreement" - Windows - Minimum Specification


From now on we'll be releasing new versions of Avoyd periodically, increasing the price as we add functionality. If you activate a purchased license key for Avoyd you'll get all the future updates we post, along with access to the multiplayer services we'll be rolling out. However for quite some time our Avoyd releases will continue to be free.

Continue reading

Black triangles and Peter Highspot

Juliette Foucaut - 02 Aug 2016 - edited 17 Nov 2016


Return of the black triangles: our friend, musician Peter Highspot, surprised us by producing original music and sound effects for the 2014 in-game fly-through. We couldn't resist sharing the video, and hope you enjoy it as much as we do!

Peter Highspot is a freelance artist available for music and video sound design. Check out Peter Highspot's portfolio on SoundCloud, contact peter@highspot.fr.


Music and Sound Design by Peter Highspot.
Continue reading

Colour palettes and lighting

Rebecca Michalak - 26 Jul 2016


[Concept artist Rebecca Michalak explores colours and lighting for Avoyd.]

For the fourth round of concepts I wanted to explore palettes some more, since colour is an important part of Avoyd. This was my biggest challenge, being generally used to doing fairly monotone paintings and letting texture denote form.

I started by gathering a range of colour palettes from various sources (I have a library of about 5000 reference images saved to my computer for when I want to start a new painting or need inspiration) in order to have a starting off point. Working in a more abstract way was unfamiliar to me and difficult when I started the project, but I've found that as long as the basic tenants of any artwork are solid (values, colour schemes, composition) then you can push experimentation much easier and further.

Concept art for Avoyd by Rebecca Michalak

Continue reading

Concept art by Rebecca Michalak

Juliette Foucaut - 27 May 2016


We started working with artist Rebecca Michalak on concept art to help us figure out a general feel for Avoyd, as well as ideas for abstract shapes and colours we could implement in the game. Below is a series of the latest concepts drafts, as well as the preliminary sketches Rebecca drew, enjoy!

If you want to see more of Rebecca Michalak’s art, check out her portfolio!

Draft concept art by Rebecca Michalak

Continue reading

Internals of a lightweight task scheduler

Doug Binks - 05 Sep 2015


This is the second in a series of articles detailing the inner workings and evolution of the permissively open source multithreading task scheduler enkiTS for C and C++ (including C++ 11). In the first article of this series I covered the external interfaces and their implementation. This post will cover the task threading function, running tasks, and waiting for tasks.

Image of Avoyd with thread and task activity. Figure 1: Screenshot of Avoyd being profiled with microprofile and ImGui integration available in enkiTSExamples. Solid bars above named tasks show when threads are active - the wait functionality allows the core to idle or other threads to run.

Continue reading

Implementing a lightweight task scheduler

Doug Binks - 22 Aug 2015 - edited 28 Jun 2019


This is the first in a series of articles detailing the inner workings and evolution of the permissively open source multithreading task scheduler enkiTS for C and C++ (including C++ 11). The interface has evolved somewhat since this article, and whilst I've made minor changes to update it, keeping it fully up to date is difficult, so please check out the full code on github.

If you're writing a compute intensive programming task on consumer hardware, and you want to use as much of the systems resources as possible, then you'll need to consider multithreading on the CPU. There are a number of ways to approach this, but the current gold standard approach for developers who want both simplicity and control is a task scheduler which can handle data-parallelism (in the games industry a task is often referred to as a job). Task parallelism allows you to run different types of computation at the same time, whilst data-parallelism enables you to run the same computation over a set of data across different threads at the same time. Note that I won't consider Single Instruction Multiple Data (SIMD) parallelism here, but if you're doing computations you probably should. Additionally, I won't cover multithreading methods for handling large latency, such as waiting on hard disk or socket transactions.

Avoyd being profiled using the enki Task Scheduler microprofile. enkiTS in our game, Avoyd, being profiled using the microprofile and Dear ImGui integration available in enkiTSExamples. This is an old image of the game and the current codebase uses newer enkiTS API features such as priorities and pinned tasks making for a much more complex task graph.

Continue reading

Feral Vector

Juliette Foucaut - 29 Jun 2015


At the end of May, a month ago today, we attended Feral Vector. We saw many projects and met lots of interesting people. Although we hadn’t planned on it, we ended up showing Avoyd for the first time. In light of the nice feedback we got, we think that releasing it sooner, even without gameplay, would probably be a good idea.

Tom Betts handed beach pebbles to illustrate his talk. This one looked like it had a badger's head on it, very appropriate for Feral Vector.

Continue reading

Normal generation in the pixel shader

Doug Binks - 31 Jan 2015


As usual, whilst working on one aspect of Avoyd I hit a hurdle and decided to take a break by tweaking some visuals - specifically looking at the normals for my surfaces. I added a step to generate face normals in the pixel shader using the derivatives of world space position [see: Normals without normals by Angelo Pesce and the Volumes of Fun wiki on Computing Normals], and immediately noticed precision issues when close to the surface. I'll demonstrate the issue and my quick fix which uses eye relative position instead of world space, before explaining what's happening in full.

Precision issues with normals from position derivatives in the pixel shader. Figure 1: The image on the left shows the face normals calculated in the pixel shader using the world space position, and on the right we take the eye relative world space position.

Continue reading

Python Google App Engine debugging with PyCharm CE

Juliette Foucaut - 31 Dec 2014 - edited 07 Jun 2021


[Update 07 Jun 2021 - In case you find this post whilst looking for a free IDE for Python 3 Google App Engine, we switched to an alternative to PyCharm CE: Visual Studio Code.]

Alongside PyCharm Professional Edition, JetBrains generously offers a free version of their IDE: PyCharm Community Edition. We've found that PyCharm CE can, with some effort, be made to work with Google App Engine (GAE). Although lacking in some features, it is still useful if all you're after is a python debugger and IDE for GAE.

This post details how to configure the free PyCharm Community Edition to enable debugging of python code destined to run on Google App Engine. Further, we explain how to enable smart code navigation and completion for GAE libraries. The final section explains how to use a PyCharm path variable to make the code more portable, which should help for distributed projects. Throughout the tutorial we'll attempt to use the PyCharm UI as often as possible, but we'll also explain how to do the whole configuration by editing the PyCharm files directly. The specific paths examples are from Windows, but they should also be applicable to other Operating Systems.

Note: Doug figured out the configuration settings described in this tutorial through trial and error, our experience with python GAE debugging with Visual Studio, and by looking at the open-source PyCharm CE code. If you want to enjoy the full power of PyCharm and save yourself some time, skip this tutorial and use PyCharm Professional Edition instead.

Continue reading

Lighting voxel octrees and procedural texturing

Doug Binks - 22 Oct 2014


In this post and video I'm going to cover the recent changes I've made to Avoyd's technology to add shadows, ambient occlusion and procedural texturing. I'll describe simple procedural texturing and its anti-aliasing, along with the use of voxel octree data to generate lighting and ambient occlusion using ray casts and 3D textures in the game Avoyd.

There's a good deal of information on all of these topics online, and they certainly aren't novel additions to a game - however in Avoyd I'm taking a slightly unusual approach so I thought it worth documenting. It's worth checking out the video before reading further.

Continue reading

Patterns and spheres

Juliette Foucaut - 23 Aug 2014


Doug has recently made some changes to the visuals and the editing tool in Avoyd. On top of performance improvements, he added a spherical brush and started experimenting with procedural texture patterns.

Avoyd - spherical brushes were used to create a 0g tree. Experimenting with patterns on the surfaces. Patterns are affected by specular lighting.(click to enlarge) Saturated colours in the distance, Spheres and texture patterns. Notice how the patterns are affected by the specular lighting.

We want to use texture patterns to show different properties of the materials in-game, such as health, culture (*), etc. as well as give a better idea of the scale of the world. At the moment we're playing with the patterns' shapes, colours, scale, periodicity and animation.
(* Note: the culture is related to a team's territory / area of influence).

Continue reading

Python Google App Engine debugging with PyTools

Juliette Foucaut - 14 Aug 2014 - edited 07 Jun 2021


[Update 07 Jun 2021 - In case you find this post whilst looking for a free IDE for Python 3 Google App Engine, we switched to an alternative to PyCharm CE: Visual Studio Code.]

[Update 12 Aug 2015 - The methods described below do not work in Visual Studio 2015 PTVS with GAE 1.9.17 or above. We haven't found a new workaround. We've switched to using the free PyCharm CE which works great. See our tutorial to configure it.]

For python code destined to run on Google App Engine, we needed an IDE with comprehensive local debugging abilities, i.e. breakpoints, step-by-step execution and variables watch. PyCharm Professional Edition does all this [Edit 31 Dec 2014: for PyCharm Community Edition GAE configuration, see our tutorial], but we chose instead to use a free solution from Microsoft called Python Tools for Visual Studio (a.k.a. PTVS or PyTools). [Edit 28 Nov 2014: now Microsoft Visual Studio Community]

Sadly, due to a bug, breakpoints don't get hit when debugging dev_appserver.py. After lots of searching and trial and error, we found out that an acceptable workaround is to configure Visual Studio as follows:

  • use the deprecated version of GAE's dev_appserver.py: old_dev_appserver.py
  • ignore the unhandled ZipImportError
  • bypass the GAE Launcher.

Once setup, using it is no different from normal debugging. The downside is that some newer GAE functionality won't work.

Continue reading

Interview

Juliette Foucaut - 06 Jul 2014


Chris Priestman interviewed us and wrote an article about our work a couple of weeks ago on Warpdoor. We went into more depth about our plans than we have so far on our website, so do check it out if you want to find out more about what we're putting into Avoyd.

Domain masking using Google App Engine

Juliette Foucaut - 20 Jun 2014


In this post I'll describe how to use Google App Engine to masked redirect a URL to a desired domain. Our proposed method of URL redirection involves a python script using the webapp2 framework running server-side on GAE. As a result of this setup, you can have visitors requesting content from one domain, say www.new-url.com, see content which is hosted on another such as www.old-url.com.

Continue reading

Octree streaming - part 4

Doug Binks - 27 Feb 2014 - edited 27 Oct 2014


This post follows on from earlier posts on Octree Streaming. You should be able to read them out of order, but you get cake if you read part 1 first, then parts 2 and 3.



The video showcases three players zooming around at high speed in an environment being streamed from one player's PC to the other two, with the recording being done on one of the clients. This devblog post is about the steps I took to get this working smoothly.

Performance tuning is a large and varied topic, so I'm going to concentrate on one aspect which came up during development of the streaming system - framerate hitch removal. A framerate hitch occurs when one frame takes longer than most of the rest of the frames. To the player it can feel like a sudden start/stop. If frequent, the game takes on the feeling of being played on sandpaper.

Continue reading

Black triangles and nervous_testpilot

Juliette Foucaut - 01 Feb 2014


How we started with a bug and ended up with a music video collaboration with the awesome nervous_testpilot:

Music by nervous_testpilot a.k.a. Paul Taylor of Mode 7.

Continue reading

Presskit for Google App Engine

Juliette Foucaut - 23 Jan 2014 - edited 06 May 2017


[Update 06 May 2017 - We no longer maintain our presskit() for Google App Engine project. The Github repository is deprecated and the installer is no longer available.]

presskit() is a free, open-source tool that enables game studios to present information to the press in a unified format. However the current php implementation doesn't work on Google App Engine (GAE). Recently, Leonard Ritter started the ball rolling, showing it could be done and offering some code changes. After Rami Ismail mentioned that it would indeed be useful, and since we needed it ourselves, Doug and I decided to do the port.

If you would like to use presskit() on GAE, I'll explain in this post how to download and install our implementation. As an example see our presskit() at press.enkisoftware.com.

Warning: our code is in beta. We've only tested the installation ourselves, on Windows. Any feedback you can give us (use the comments below or email me), successful or not, would be very helpful: it'll enable us to fix remaining issues with the build or the documentation.

presskit() runs on Google App Engine presskit() runs on Google App Engine

Continue reading

Octree streaming - part 3

Doug Binks - 16 Jan 2014


The post follows on from the earlier post on Octree Streaming. You should be able to read them out of order, but you get cake if you read part 1 first, then part 2.

This tech update video shows off multiple players rapidly and smoothly editing fairly large sections of the environment whilst in edit mode. Materials and rendering are all still simple debug visuals for clarity rather than beauty, but there's still a fair degree of artistic freedom available. It's a real pleasure being able to carve and paint geometry fluidly in a connected online world.

Getting this to work, and work well, took a fair amount of effort and I'll explain some of the technical details here.

Continue reading

Octree streaming - part 2

Doug Binks - 14 Jan 2014


The post follows on from the earlier post on Octree Streaming. You should be able to read them out of order, but you get cake if you read part 1 first.

Our latest tech update video shows off players moving through the world shortly after joining the game - the video starts only a few seconds after where the last one ends, so about 30 seconds after loading. At this point large sections of the world are still being streamed to clients, but the prioritization of nearby regions ensures detail is present close to the player.

Continue reading

Octree streaming

Doug Binks - 12 Jan 2014


The original Avoyd stored the internal voxel representation of its game world as a standard 3D array. At the time this provided a good trade off between performance and memory for the size of levels we required for a multiplayer PvP game with a fully modifiable environment. In the new version we wanted to increase the size of worlds we could handle, whilst maintaining large view distances.

Our second technology update video shows off how the voxel octree streaming gives rapid loading over the internet.

Continue reading

LAN discovery with multiple adapters

Doug Binks - 05 Dec 2013


I was recently testing my LAN server browser dialogue menu with multiple machines running servers when I encountered an unusual issue. I had two machines, each running a server and a client. On one machine the client could see both servers, but on the other machine only the local server was found. The application had firewall permissions, and since the server was both sending and receiving packets without problem the firewall didn't seem to be the culprit.

Avoyd screenshot - user interface showing LAN discovery with two servers running on two different machines Working LAN discovery with two servers running on two different machines. Note the two IP addresses listed for Machine 1.

Continue reading

Playing with material worlds

Doug Binks - 30 Oct 2013


It's been a busy couple of months since my last technology update. After being laid low by a viral modification program masquerading as an Autumn cold, I have emerged into my cold weather form with time to spare for a bit of programming.

Avoyd screenshot - voxel world inside a voxel world

Some of my work has gone into improvements in the Runtime Compiled C++ I use to help program Avoyd with which you can catch up on over at the RCC++ blog. The rest has been on two fundamental features: materials and multiple voxel models.

Continue reading

Developer Diary archive

Juliette Foucaut - 30 Oct 2013


There's still a lot of work to do on the site as it's still pretty basic, but one thing I've been able to do thanks to the automation is to import the entire archive of the Developer's Diary which Doug wrote in 2001-2002 when he was working on the first version of Avoyd. It's been quite emotional to go through those old posts as it brought up a lot of memories, both good and bad.

Continue reading

Website redesign

Juliette Foucaut - 30 Oct 2013


A couple of months ago, my friend bananako made great suggestions to improve the looks of our website. I started tinkering and I hope the changes do justice to her input. (I recommend checking her blog, her drawings always put me in a happy mood :)

I also finally made a home page about Avoyd. I've been struggling to figure out what to say on that page, but we're happy with the result for now and I can easily change it as the project evolves. I still have to come up with a logo for Avoyd.

Avoyd

Continue reading

First Person Editor

Juliette Foucaut - 22 Oct 2013 - edited 07 Oct 2018


I think we should call sandbox first person games First Person Editors (FPE).

I was doodling around in Avoyd looking for inspiration: how do I describe our game? It's an FPS, but there's more to it and I think it's not the only game in that category.

Avoyd screenshot - First Person Editor (FPE), writing in-game If I can write in-game, it's probably an FPE.

Continue reading

First Avoyd tech update video

Doug Binks - 30 Aug 2013


Our first technology update video is available on Youtube. I wanted to show how modifying the environment works since I've recently improved this area. The graphics are still in the early prototype phase and I'm only rendering debug colours rather than materials - I find the aesthetic oddly pleasing though.

Continue reading

Implementing a static website in Google App Engine

Juliette Foucaut - 23 Aug 2013 - edited 15 Apr 2019


A robust website that successfully weathers spikes in traffic is a must when trying to sell and support a game over the internet. Last July Picroma suffered temporarily when they released their game, Cube World, for purchase. They then had to deal with a DDoS attack. More recently, Oculus Rift's site stalled when they tweeted about John Carmack's involvement in their technology.

Whilst we can only dream of enjoying the same level of interest, we'd like to spare ourselves the worry. When Doug researched a web hosting solution, he spotted that Wolfire used Google App Engine. They list their reasons clearly on their blog, and given that they have years of hands-on experience on the matter, we decided to follow their lead. As an added bonus, this solution is free for low levels of traffic.

Continue reading

Multiplayer editing

Doug Binks - 29 May 2013


I've just added networking using RakNet, and implemented level load from a server along with synced editing. This proved to be very simple to add as RakNet has a fairly clean interface. I'll admit to being very tempted to develop further the network code I used for the original Avoyd, but RakNet has a number of features I'd need to implement which aren't trivial.

Avoyd screenshot - multiplayer editing

Continue reading

First screenshots

Doug Binks - 09 May 2013


One of the key features we wanted for the new Avoyd was to support large environments. The old version of the game used a simple three dimensional array for storing the voxel data which restricted the size of the world. So for the new code I've implemented an optimized octree structure, which both helps with data storage limits and the calculation of lower level of detail (LOD) graphics for distant structures.

Avoyd screenshot - large world

Continue reading

Thoughts on gameplay modes

Doug Binks - 27 Apr 2013


Our plan for the new Avoyd is to expand upon the original free-for-all gameplay with single player, co-op and team vs team. We intend for all modes to use the same ruleset to create a consistent universe.

Competitive games are normally symmetric. This means players on either side have access to capabilities of the same power, though often with different styles. For example, in Quake Arena, every player is equal and has access to the same weapons.

Continue reading

Back in 1999

Juliette Foucaut - 11 Apr 2013 - edited 25 Aug 2023


Over 13 years ago, Doug Binks (mainly) and I started working on a shareware-style game called Avoyd.

Old Avoyd logo (Avoyd v1 a.k.a. Avoyd 1999)

A first-person shooter set in zero gravity, gamers could play deathmatches against bots or other people on a LAN. To our knowledge, it was the first editable voxel game in which the players could build and destroy the entire environment.

We sold digital copies of Avoyd over the internet for a few pounds, steadily increasing the price as we added more features. After Doug joined a games development company, we slowly stopped development and released the last version, Avoyd 1.7.1, in 2003. At that stage, many features and designs we had in mind had yet to be implemented in the game.

Our current project is based on this game.

Download Avoyd 1999

We've released the original Avoyd, which we'll call Avoyd 1999 from now on, for free.

To install Avoyd 1999 and play:

  1. Download Avoyd 1999 (full version 1.7.1) for Windows.
  2. Unzip.
  3. Run the executable.
  4. Select I am a licensed user.
  5. Follow the instructions on screen.

Avoyd 1999 Press Kit

In-game Screenshots

Continue reading

ECTS 2002

Doug Binks - 19 Aug 2002 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

ECTS, a yearly video games conference is coming up in a week's time, and if any developers out there fancy meeting up in the developer bar then drop me an email.

Additionally, we're considering developing a single player branch of Avoyd which will be sold both as an individual product and hopefully as part of Avoyd (so all current owners will get it). I know many people would like to see more effort going into furthering the multiplayer aspect of Avoyd, so many of the features going into this will make it into the multiplayer game as well.

Avoyd Version 1.6.1 out

Doug Binks - 22 Jun 2002 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

Following a suggestion from Warhead in the forums I've made the score chart and Avatar name display using the Avatars colour. Avoyd members can get a patch from the login pages.

Avoyd Version 1.6 out

Doug Binks - 10 Jun 2002 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

The new version is out, whith some changes that people have been asking for in addition to an overhaul of the network code to get it ready for internet play. As some may have noticed, it's been a very long while since the last update. As the only one working on Avoyd, small things like other full time jobs can get in the way.

Hope you all enjoy the new version - I'll get back to working on the next update right now!

Biting the bullet

Doug Binks - 09 Nov 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

My current development schedule points one way, and a body of evidence points the other. Both directions have benefits and drawbacks, and it's really a matter of biting the bullet and making the call. Perhaps a coin toss would work?

Continue reading

Avoyd version 1.5 out

Doug Binks - 19 Oct 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

Both the demo and the full version of our new release, Avoyd 1.5, are out. This release could be thought of as a spit-and-polish, as its main purpose is to put a shine to the game rather than add significant new features. For Avoyd members, the ability to select your background opens up the possibility of user created backgrounds, and of course we'll be making a few more of our own for you.

Continue reading

Monday Mayhem

Doug Binks - 15 Oct 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

The mayhems' for the whole week, as we grind our gears and prepare for another release. With much ado, and a short vacation looming over the horizon, I'm hedging my bets by saying that we'll delay rather than release if there are any problems.

Continue reading

Avoyd version 1.5 alpha 1 out

Doug Binks - 12 Oct 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

We've released the full version of Avoyd 1.5 alpha 1, which is available from the downloads section of the member pages. Be sure to download the correct version, as we've left V1.4 up in case people have problems with 1.5 alpha 1. This version is not as significant an update as 1.4, but adds a few nice elements which make the game a better experience.

Continue reading

Avoyd version 1.4 out

Doug Binks - 14 Sep 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

We've released both the demo and the full version of Avoyd 1.4. This adds simple computer controlled opponents, which really makes a big difference to the game as you can now practice on your own or have huge battles with friends. There are quite a few other improvements in there too.

Continue reading

ECTS 2001

Doug Binks - 06 Sep 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

Last night I got back from ECTS, travelling from a sunny London morning to a dark and rainy Manchester afternoon. It's good to be back :)

Continue reading

Fun with Greek letters

Doug Binks - 01 Sep 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

I'm not sure which is the news - that we've got AvoydV1_4alpha1.exe up for download on the member pages, or that this is my second diary update in less than a week.

The big news in Version 1.4 is Single Play against bots! You can also use them in a LAN game, and if the server gets too full the bots drop out one by one, reappearing when people leave. We've also got some new skins for the avatar, and improved performance. Due to a few additional extra variables which need passing over the LAN, I've had to decrease the maximum number of players to 13 at the moment (unlucky eh?). This should increase again when I move to optimising the network code.

Continue reading

Closer just a little closer

Doug Binks - 30 Aug 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

It's an exiting time here in front of my monitor. Recently we've had a spate of hardware troubles, not the least of which is the ongoing saga of getting the car repaired. However, the worst of these was a keyboard and mouse failure at the same time, which led me to first believe I had a more serious problem.

Continue reading

Back already

Doug Binks - 17 Aug 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

Exactly a month has gone by since the last post, and some might be wondering if I'd given up the promise to keep this diary regularly, or just fallen under a passing bus.

Continue reading

Artificial Humanity

Doug Binks - 17 Jul 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

And I'm not talking about politicians.

The main feature I'm busy working on at the moment is a single player component. This will be in the form of computer controlled opponents, or bots as the games community calls them.

Continue reading

Products and promises

Doug Binks - 06 Jul 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

You get to keep one, and I'll try and keep the other.

Avoyd is now available for purchase, somewhat later than I outlined in the previous post. The game was ready to go 'online' at the start of June, but fate dealt me a a small blow by taking out my internet connection for about a week. That was long enough to take some time to reassess the schedule, and it was decided to postpone the launch to add two features. These were on the map to be included in the next version, but for a variety of reasons we moved them forward. Avoyd is much better for their inclusion.

Continue reading

Ecommerce

Doug Binks - 22 May 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

Those of you who actually read some of the blurb we've been putting out with the demo may have noted that Avoyd is supposed to be sold over the internet sometime in the summer of 2001. Indeed, the mysterious silence here at EnkiSoftware over the last couple of months has in part been down to getting prepared for this. Soon, we'll be releasing the latest demo version, and also giving you the chance to buy the full game.

Continue reading

Explosions galore

Doug Binks - 23 Apr 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

As some may have noticed, things on this site have been rather quiet for the last month. You'll be glad to know that I've been hard at work preparing the next release, which is going to contain a host of new features.

Continue reading

Spring fixes

Doug Binks - 03 Apr 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

A month has passed since our first release, and we're still alive and well. Those of you who have been to our forums may have spotted that at least one person experienced a bug in version 1.1 which stopped him from playing it. We've fixed that (thanks Ouroboros for your patience and assistance), and have released a patch. This patch also includes further optimizations, so things should run faster.

Continue reading

Open source and ports to other operating systems

Doug Binks - 28 Mar 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

Things are going well with the Avoyd demo, and to our knowledge we now have over ten thousand downloads from the various sites which have counters on their download pages (combining versions 1.0 and 1.1 but excluding the patch). We think this is pretty good going for a small game from a small company with a small budget, and hope that it bodes well for our commercial release.

A recent email to us concerned whether we'd release the Avoyd game engine to the public. There are many ways we could do this, and I thought I discuss them here, along with the pros, cons and likelihood of them happening.

Continue reading

Avoyd LAN Demo Version 1.1 is out

Doug Binks - 19 Mar 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

We've released both a patch and a full install for the new version, which includes some new features and a few fixes. I'd like to thank Ranger55 for pointing out several bugs to us in our support forum, along with everyone else who posted in the forums!

Continue reading

Thanks for the support

Doug Binks - 12 Mar 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

It's been a great week, nervously surfing the web to see how many downloads we've made, responding to emails and posts in the forum, and tracking down strange behaviour from the Microsoft Visual C++ compiler. So far, we're doing very well for a small independent developer, with over four thousand downloads from our site in the first week and about twenty thousand visitors to the site. With the other sites which are hosting the demo, we probably made over five thousand downloads in the first week. What that means is anyone's guess, but it does make Avoyd one of the most downloaded 'small' action games. Without feedback from players it's difficult to form any opinion, but most comments we have had have been very positive about the concept. So, many thanks, and I encourage you all to post what you think in our forums.

Continue reading

Avoyd LAN Demo Ready

Doug Binks - 04 Mar 2001 - edited 30 Oct 2013


[This is an archive post about the first version of Avoyd which we now call Avoyd 1999. The full game is now free to download.]

Finally, the culmination of over a year's work has been reached. It's been great fun, with hopefully more to come. But it's somewhat frightening to unveil to the public something which has been at the core of my life for so long. The positive remarks from those who have seen our test versions have been extremely encouraging. So I now find myself typing in the last few lines to a long chapter in my life.

Continue reading
2023
 › Optimising Voxel Meshes for Games Using Blender
 › Implementing a GPU Voxel Octree Path Tracer
 › Avoyd Release Streams and Minecraft Lit Materials
 › Avoyd Beta Stream
2022
 › Isometric Render of a Minecraft Map in Avoyd Voxel Editor
2021
 › Importing Minecraft maps in Avoyd Voxel Editor improved
2020
 › Runtime Compiled C++ Dear ImGui and DirectX11 Tutorial
2019
 › Boxes in Space: procedural generation of abstract worlds in Avoyd
 › Procedural python word generator: making user names out of 4 syllables
 › In-game building
 › Player-deployable turrets in Avoyd
2018
 › Avoyd Game Singleplayer and Coop Multiplayer Test
 › Voxel Editor Evolved
2017
 › Speeding up Runtime Compiled C++ compile times in MSVC with d2cgsummary
 › Multiplayers toxic last hit kill and how to heal it
 › Avoyd Editor Prototype
2016
 › Black triangles and Peter Highspot
 › Colour palettes and lighting
 › Concept art by Rebecca Michalak
2015
 › Internals of a lightweight task scheduler
 › Implementing a lightweight task scheduler
 › Feral Vector
 › Normal generation in the pixel shader
2014
 › Python Google App Engine debugging with PyCharm CE
 › Lighting voxel octrees and procedural texturing
 › Patterns and spheres
 › Python Google App Engine debugging with PyTools
 › Interview
 › Domain masking using Google App Engine
 › Octree streaming - part 4
 › Black triangles and nervous_testpilot
 › Presskit for Google App Engine
 › Octree streaming - part 3
 › Octree streaming - part 2
 › Octree streaming
2013
 › LAN discovery with multiple adapters
 › Playing with material worlds
 › Developer Diary archive
 › Website redesign
 › First Person Editor
 › First Avoyd tech update video
 › Implementing a static website in Google App Engine
 › Multiplayer editing
 › First screenshots
 › Thoughts on gameplay modes
 › Back in 1999
2002
 › ECTS 2002
 › Avoyd Version 1.6.1 out
 › Avoyd Version 1.6 out
2001
 › Biting the bullet
 › Avoyd version 1.5 out
 › Monday Mayhem
 › Avoyd version 1.5 alpha 1 out
 › Avoyd version 1.4 out
 › ECTS 2001
 › Fun with Greek letters
 › Closer just a little closer
 › Back already
 › Artificial Humanity
 › Products and promises
 › Ecommerce
 › Explosions galore
 › Spring fixes
 › Open source and ports to other operating systems
 › Avoyd LAN Demo Version 1.1 is out
 › Thanks for the support
 › Avoyd LAN Demo Ready
 › Game Tech
 › Optimising Voxel Meshes for Games Using Blender
 › Implementing a GPU Voxel Octree Path Tracer
 › Importing Minecraft maps in Avoyd Voxel Editor improved
 › Runtime Compiled C++ Dear ImGui and DirectX11 Tutorial
 › Boxes in Space: procedural generation of abstract worlds in Avoyd
 › Procedural python word generator: making user names out of 4 syllables
 › Speeding up Runtime Compiled C++ compile times in MSVC with d2cgsummary
 › Internals of a lightweight task scheduler
 › Implementing a lightweight task scheduler
 › Normal generation in the pixel shader
 › Lighting voxel octrees and procedural texturing
 › Octree streaming - part 4
 › Octree streaming - part 3
 › Octree streaming - part 2
 › Octree streaming
 › LAN discovery with multiple adapters
 › enkiTS
 › Internals of a lightweight task scheduler
 › Implementing a lightweight task scheduler
 › RCC++
 › Runtime Compiled C++ Dear ImGui and DirectX11 Tutorial
 › Speeding up Runtime Compiled C++ compile times in MSVC with d2cgsummary
 › Web Tech
 › Procedural python word generator: making user names out of 4 syllables
 › Python Google App Engine debugging with PyCharm CE
 › Python Google App Engine debugging with PyTools
 › Domain masking using Google App Engine
 › Presskit for Google App Engine
 › Implementing a static website in Google App Engine
 › Avoyd
 › Implementing a GPU Voxel Octree Path Tracer
 › Avoyd Release Streams and Minecraft Lit Materials
 › Avoyd Beta Stream
 › Isometric Render of a Minecraft Map in Avoyd Voxel Editor
 › Importing Minecraft maps in Avoyd Voxel Editor improved
 › Boxes in Space: procedural generation of abstract worlds in Avoyd
 › In-game building
 › Player-deployable turrets in Avoyd
 › Avoyd Game Singleplayer and Coop Multiplayer Test
 › Voxel Editor Evolved
 › Multiplayers toxic last hit kill and how to heal it
 › Avoyd Editor Prototype
 › Black triangles and Peter Highspot
 › Colour palettes and lighting
 › Concept art by Rebecca Michalak
 › Feral Vector
 › Patterns and spheres
 › Interview
 › Black triangles and nervous_testpilot
 › Playing with material worlds
 › Website redesign
 › First Person Editor
 › First Avoyd tech update video
 › Multiplayer editing
 › First screenshots
 › Thoughts on gameplay modes
 › Back in 1999
 › Avoyd 1999
 › Developer Diary archive
 › Back in 1999
 › ECTS 2002
 › Avoyd Version 1.6.1 out
 › Avoyd Version 1.6 out
 › Biting the bullet
 › Avoyd version 1.5 out
 › Monday Mayhem
 › Avoyd version 1.5 alpha 1 out
 › Avoyd version 1.4 out
 › ECTS 2001
 › Fun with Greek letters
 › Closer just a little closer
 › Back already
 › Artificial Humanity
 › Products and promises
 › Ecommerce
 › Explosions galore
 › Spring fixes
 › Open source and ports to other operating systems
 › Avoyd LAN Demo Version 1.1 is out
 › Thanks for the support
 › Avoyd LAN Demo Ready