Voxeliens, Volumes of Fun’s debut game, is a retro-style arcade shooter for the PC, in which you defend your planet from waves of descending enemies. The gameplay is simple and fast paced as you battle your way through different environments using a variety of powerups.
So we’ve had a pretty busy week! We’d been meaning to add Voxeliens to Desura and IndieCity for a while now and we finally got around to it. But then Valve suddenly launched Steam Greenlight so we had to make a quick dash for that as well. We were very keen to be on Greenlight as soon as it went live because it had an inevitable wave of publicity which we wanted to ride.
So you can now buy Voxeliens through Desura and IndieCity, and these are both very popular indie distribution platforms with a wide range of games. You should probably check them out even if you’re not after Voxeliens. The idea of Greenlight is to eventually get the game on Steam, but there’s still an air of mystery around the process and whether it will achieve this end result. But a vote would certainly be appreciated!
I think this more or less wraps up our attempts to push Voxeliens onto distribution platforms. Matt’s had a busy summer between CERN and Fermilab but is hoping to get back to the Linux version soon, and I’ve also got a few loose ends to tie up. One thing we’ve learnt from this process is that making the game is only half the battle… and there’s plenty still to be done after it’s ‘complete’. Still, we do feel that the dust is finally starting to settle 🙂
Following a previous post about PolyVox on iOS, I’ve spent some time over the last few weeks experimenting with RIM’s gameplay engine as a basis for future projects. Naturally this has involved integrating it with PolyVox and today I have some initial results to present. The video below shows gameplay and PolyVox working together on my Samsung Galaxy S Plus:
The voxel world is one of the levels from Voxeliens but this doesn’t necessarily mean we are bringing Voxeliens to mobile (we might, but we’re just experimenting for now). It was basically just the data I had closest to hand, and the volume dimensions are 128x128x32.
To be honest I’m pretty amazed at how well it runs! I’m seeing a steady 40-50 frames per second and this seems to depend on how many pixels are being drawn. I need to do more investigation into the performance bottlenecks though. Also, be aware that this is a debug build as I’m new to Android development and I don’t know how to do release builds yet (it requires some kind of signing I believe).
Getting PolyVox to build on Android was not too difficult. The only problems were complaints about std::function and about throwing exceptions. For now I just cut out the offending pieces of code but we’ll have to come up with a proper solution in the future.
I really like RIMs gameplay engine, and if we do decide to use it for future projects then it opens up a lot of platforms for us. And after all the work we did on Voxeliens it’s great to be getting back to playing with technology again 🙂
Despite being brothers, Matt and I actually live in different countries and so most communication is done by email or via the forums. But as we were both in the UK last week we took the chance to discuss the various things which were on our minds regarding our projects. We didn’t get as much time as we would have liked, but none-the-less it was very useful and we produced the lovely mind map below:
Of course, it’s more useful in the context of the discussion which we had but we thought it might be interesting anyway. We’re going to update it from time to time and use it as a method of tracking what we’re currently thinking about. Some of the key points:
Work on Voxeliens is mostly focused around distribution at the moment. Matt is talking to Good Old Games and we sent off our Steam application at the weekend. So fingers crossed for that! At some point I’m probably going to investigate the possibility of bringing the game to mobile devices.
PolyVox has picked up again with a lot of commits recently. We’re focused on trying to get a release out so we can then think about integrating other peoples contributions. On that note, Matt has pointed out that we are not using Git very effectively (I basically treat it like SVN) so we will investigate something like ‘A successful Git branching model‘. This should keep Git head a bit more stable.
We’ve vaguely discussed a future game project but with no details yet. We’ll probably look at integrating PolyVox with a complete game engine (rather than separate graphics, physics, sound, etc libraries) so we may do some investigation into the options here.
We’ve decided we should try and be as transparent as possible so do ask if you have questions about our plans.
Yesterday was the second (and final) day of the Develop Conference in the UK and once again it was great fun. It was a little quieter than the first day, but this was a welcome break as it gave us more time to talk to people in depth.
We’ve had plenty more people come by to play the game, and you can see one session in action in the picture below:
A visitor to the stand plays through Voxeliens while Matt watches.
Some of the players have been really quite good, with one player in particular getting to level 10 and achieving a high-score of 55470. I’ve never got to level 10 myself and it’s a pretty terrifying place to be! By the end of the conference the high score table looked as follows:
'DTGENT' was the only player to break through the 50000 barrier. Well done!
We also got interviewed by Playr but I kept glancing at the camera instead of the interviewer so I’m not sure if they’ll use the footage. There was no preparation time so I was just making up stuff to say on the spot 🙂 Well, I’ll post here if it does get used.
Although the conference is now over, Matt and I are going to be in the same place until the weekend (we’re usually in different countries) so we hope to sit down and discuss our plans for the future. Stay tuned for more information once we’ve done this.
Well, we’re finally here! Matt and I both arrived in Brighton (UK) last night where the conference kicked off with welcome drinks and a screening of Indie Game: The Movie (great film for those who haven’t seen it). There was lots of socializing and it was a good opportunity to meet fellow developers.
We were up pretty early this morning because we had to set up the stand before the conference started. It all went pretty smoothly and I’m really pleased with the Voxeliens poster we had printed. We also had the idea to make a large origami voxelien but this turned out to be too much work. You can see the stand in the picture below:
David manning our stand at Develop
There has been a fairly constant stream of people coming to try the game and most seem to like it. The simple nature of the game seems to work well in a situation where people spend just a few minutes at the booth. Even David Braben (creator of Elite) stopped by to have a look!
Having to man the stand meant we didn’t get to many of the talks though. The only one I went to was a Q&A session with the Steam Team, who were talking about their plans for Greenlight amoung other things. We’re hoping they’ll find time to drop by the Indie Dev Showcase tomorrow.
Anyway, we’re both really tired after the long day and our throats hurt from talking so much! But do come and say hi if you’re around tomorrow 🙂
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.
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.
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.
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.
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.
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.
We 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.
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.