What next for PolyVox?

We’ve been hard at work on Voxeliens for about a year now, and since starting this blog it’s almost all we’ve been talking about. Our PolyVox library has basically been on the back-burner, but with development on Voxeliens very nearly complete, we are starting to get time to work on it again.

Readers not familiar with PolyVox should have a read of this page, but in a nutshell it is the voxel engine which underpins Voxeliens. It’s firmly aimed at programmers rather than gamers, and has had some success in being used for a number of different projects (link). In the future we’d like to use this blog to talk about our technology as well as our games, and I’m going to kick that off with a quick discussion of what’s coming next for PolyVox.

  • One idea we have been working on is to separate the properties of a voxel from the algorithm. Voxels are no longer required to have a ‘getDensity()’ and/or ‘getMaterial()’ functions, and can instead provide whatever properties they wish (or none at all, as primitive types can now be used as voxels). Algorithms can then make use of function objects which explain how a particular voxel type should be interpreted. This is similar in concept to how the std::sort function takes a comparison object to define how types are sorted.
  • The same concept can be applied at a higher level. For example, the Cubic SurfaceExtractor used to use getMaterial() to determine when to generate quads for the output mesh. In the new version the user instead provides an ‘IsQuadNeeded()’ function object which is called for pairs of voxels. Instead of just using material, the user’s implementation of this function could also consider the transparency of the voxels when generating the mesh.
  • Meanwhile, Matt has started reviving the SWIG bindings, and there is some chance we will be making use of these ourselves in the future (which will provide some incentive for us to keep them in working order). He’s also started setting up nightly tests for them so hopefully we can notice more quickly if something breaks.
  • Lastly, we want to try and add some polish to the next release. This means introducing real version numbers rather than just snapshots, creating a branch in Git for the release, removing/fixing some broken stuff, and getting some documentation written.

These changes might not seem too revolutionary, but this is because we’ve mostly been focused on Voxeliens. Hopefully we can lay the groundwork for future developments and get PolyVox into a position where we can accept contributions from members of our community. After all this work on game development we’re quite looking forward to getting back to the technology 🙂

Share

Voxeliens shortlisted for the Indie Dev Showcase

We’re very happy to announce that our début game Voxeliens has been selected as one of the finalists for the Indie Dev Showcase at the upcoming Develop Conference in Brighton, UK. This means that over two days of the conference we’ll be among the other 9 finalists showing off our game to public, press and industry professionals.

We will be provided with a stand for people to come by and talk to us and play the game on the 11th and 12 of July. So if you’re going to be at the conference please come by and say hello – we’re a friendly bunch 🙂

Out of all the games that have been shortlisted, one will be selected as the overall Showcase Winner and one will be chosen as the People’s Choice via a ballot during the conference.

The Develop conference is one of the largest European game developer and publisher conferences and runs for three days from the 10th to the 12th of July. As well as providing talks and an expo floor for the professionals in the industry there is also a day and a half of talks aimed solely at the indie game developer community.

Share

Voxeliens Linux port update – ABIs and compatibility

I’ve been hard at work over the last few weeks to iron out some of the main blockers to the Linux port of Voxeliens. One of the major hurdles I’ve been coming up against is the the dangerous area that is ABI compatibility on Linux.

ABI compatibility

For those that don’t know, an ABI (application binary interface) is what allows you to use existing libraries of code in your application, whether they’re things you’re in control of (like our PolyVox library) or system libraries (like glibc or the C++ standard library). For the purposes of the discussion here, an ABI is defined by the symbols that a library contains where symbols are things like functions. As a library evolves over the years they will add functions and each time a release of the library is made with new symbols the library ABI version will increase. Most library developers (and this is particularly true of system libraries like glibc) will promise to never remove any symbols from their libraries which means that an application built against an old version of glibc will still work when run on a new system as all those symbols will still be present (this is called forward compatibility).

The opposite cannot be said to be true. If you build an application on the latest greatest version of your favourite Linux distribution it will freely try to use newer symbols in its dependent libraries. If you then copy that executable to an older distribution and try to run it, it will balk and complain that it can’t find the required symbols. There are tricks one can play to trick the compiler into only using symbols from an old ABI version but the simplest way to achieve the goal is to install an old distribution in a virtual machine and compile all your code there.

This is what I’ve been doing for the past few weeks. I created a VM with a 32 bit installation of openSUSE 11.1 (released December 2008) and have recompiled Voxeliens and all its dependencies in the most minimal way I can. The reason I am doing this in a 32 bit VM rather than a 64 bit one is that 32 bit binaries (technically i686) are compatible with 64 bit operating systems (technically x86_64) whereas the inverse is not true. Ideally these binaries built in the 32 bit VM will work on any Linux OS released in the last 3 or 4 years regardless of whether it’s 32 or 64 bit. This will be one of the main things we’ll need testers for when the time comes.

Bundling libraries

For low level system libraries there’s little choice apart from building against an old version. However, for higher level libraries we have more options. For some libraries with liberal open source licenses we can simply statically link them which essentially involves bundling the library’s code directly into the final executable – thereby avoiding and ABI problems. Any library under a license like the GPL or LGPL, however, cannot legally be statically linked and so the simplest solution here is to include the library file along with the game and tell the executable to use the bundled version rather than any provided by the system.

Shaders are complete

David’s done some excellent work to port all the shaders over to GLSL. In the last update you saw that there was nothing there but flat colours but now everything, including shadows and lighting is working.

What’s left to do?

So now that the building of a portable version of Voxeliens is complete, there’s a few areas that need finishing before it can be released:

  • Sound. The state of sound output on Linux is a little confusing and not as simple as on Windows. The main problem we’re encountering is that Phonon (the sound API from KDE/Qt), while generally excellent does not provide a sound mixer and so only allows one sound to be played at once. In Voxeliens we often have multiple explosions, laser shots and the music all playing and so we’re investigating using SDL_mixer to mix our sound for us.
  • There’s still some checks to be done to ensure that the X11 keyboard handling is working as it should be.
  • Finally I need to analyse the distribution package, remove debug symbols, streamline running the application etc.

Once these are sorted, it will be ready for testing among a wider audience and we’ll put out a request for beta testers nearer the time.

Share

Voxeliens in C’t Magazine

We’ve received a fair amount of publicity for Voxeliens, but this is a whole new step! We recently found out that the game has appeared in the German computer magazine C’t, which is the second most popular computer magazine in Germany. According to Wikipedia it has a circulation of 315,000. Printed magazines may seems a little old fashioned in the days of the internet, but it really means a lot to get some mainstream recognition 🙂

Even though I can’t read the article I decided it would be nice to have a copy of this, so I ordered one through their website. A German-speaking friend has given me a rough translation and it seems quite positive. For anyone who’s interested you can see the article below.

The title translates as ‘Cosmic Shooting Gallery’ which sounds cool!

In other news, I put the (hopefully) final touches to the OpenGL version of the shader code tonight, which is a big step forward for the Linux version of the game. I know Matt’s hard at work on that so I’ll let him update you in due course.

Share

Voxeliens Linux port progress report

Following on from David’s work to port the shaders to GLSL, I’ve been working over the last week or so to get the code compiling for the Linux port. Fortunately Voxeliens is built on top of a number of fantastic open-source projects such as OGRE and Qt which work perfectly on Linux already. As far as our own code, Voxeliens make extensive use of our PolyVox library which I have all along been building and testing on Linux.

Since all our dependencies were working fine, it simply became a case of getting the Voxeliens code itself compiling. This was largely a trivial job, with the bulk of the work involving fixing incorrect case in C++ includes and media files. The largest single change that had to be made was to the keyboard handling. Qt doesn’t provide access to the low level keyboard APIs on Windows or Linux so I had to write some native X11 code to complement the windows.h code we already had.

Voxeliens on LinuxWe still have some work to do on the GLSL shaders to get shadows working and to ensure compatibility with OpenGL 2.1 (since that seems the best target for Linux) and then it’s mostly the work to get it packaged up for distribution across all the different flavours and versions of Linux. Sorting out shared libraries and dependencies is going to be the most amount of work. We’ll be putting out a call for testers once it’s nearer to release to hammer out any problems in this area.

I’ll write up a more technical, in-depth post after the release about the porting process for those who are interested.

Share

Voxeliens is now on GamersGate

In January of this year we received an email from Daniel Hjelmtorp (Executive VP of GamersGate) explaining that they had seen the initial screenshots of Voxeliens and were keen to sell it through their website. It was really motivating for us to know that a well established player in the industry thought our game had some potential, and so we’re pleased to announce that GamersGate has today become the first distribution service to be carrying Voxeliens! You can find it at this link, or by clicking on the GamersGate logo below.

Thanks to the GamersGate team for their support!

Share

First glimpse of Voxeliens running under OpenGL

This weekend I’ve started the process of getting Voxeliens to run under OpenGL as well as Direct3D. A large part of this transition is handled automatically as we use Ogre as our rendering system and it already has support for both APIs. However, we do need to convert all our HLSL shaders into GLSL versions.

So far this transition is going fairly smoothly, and the screenshot below is taken from the new OpenGL version. As you can see, the voxel colours are coming through but the lighting and shadows are missing. Shadows are probably going to be the trickiest part but hopefully it will come together over the next week of so.

Although I’m still working on Windows, the motivation behind the OpenGL version is to allow the port to Linux. Stay tuned for further updates!

Share

What next for Voxeliens?

Hello again! Well it’s been a busy couple of weeks but, with the Windows version of Voxeliens finally out of the door, I thought it would be useful to update everyone on our plans for the next couple of months. Getting the game released was a huge milestone but it’s not the end of the project yet 😉

I’ve spent some time over the last week tweaking the payment system. I’ll talk more about this in a future blog post, but basically we wanted a smoother experience. For example, the price displayed now include VAT so there are no more surprises when you reach the checkout stage. We’ve also removed the address and phone number requirements for PayPal orders.

I’m also pleased to announce that we expect to have Voxeliens on GamersGate within the next few weeks. GamersGate contacted us after they saw the initial set of screenshots which we released in December, and I’m currently preparing the material needed to build our product page on their website. Hopefully there will be more news about this in the near future.

After that the priority is the Linux version. Matt will have an important role here as he knows Linux better than I do, but I’m hoping the port won’t be too difficult. We need to port the shaders to GLSL and remove some Windows-specific input code, but we had cross-platform support in mind from the start. We’ll probably also want some Linux testers so stay tuned if you’re interested.

So that’s the immediate plan. There will also be some longer term investment in Voxeliens in terms of getting it onto other distribution sites, running promotional activities, etc, but I expect that in a couple of months we will be able to get back to PolyVox and have a think about our next project.

Share

Voxeliens is out now!

We’re excited to announce that, after more than a year of development, the Windows version of Voxeliens is finally released. You can now download the demo or purchase the full game from our online shop.

Voxeliens Screenshot

Download demoBuy the game

Thanks to everyone who has helped us bring the game to completion! It may seem like just a two-man project, but when you consider the testers, the developers of the open source software we used, and the people who contributed art and sound assets it becomes clear that we couldn’t have done it without you. We hope everyone enjoys the game, and please do let us know what you think!

David and Matt

Share

Voxeliens release date!

Ok, here we go… after a sucessful beta testing program we can finally announce that Voxeliens will be released on Friday 27th April! Just writing these words feels pretty scary, as this game has been such a big part of our lives and the end is finally upon us.

The version released on Friday will be Windows only, but we will soon be working on the Linux version and hopefully MacOS soon after that. A simultaneous release would have been nice but it was just too much work.

On Friday we will also make the demo available, so you will be able to test the game before purchasing. Be sure to come back then!

Share