22 days into October challenge, and here is an update on the current version of Vox. Version v0.19 has just been released on Desura and IndieDB, so I thought I would share a post on here to list some of the new features and updates to Vox.
There is a free version to download and test and I would really appreciate it if people would be willing to try this and maybe provide some feedback. As always I am really curious to hear peoples opinions and suggestions. I really like player feedback and love to hear what people’s opinions are (Unless of course they are just the 500th person to state that Vox looks similar to Minecraft or CW :P).
It is hard for me to believe that I started working on Vox as an entry into a Ludum Dare competition only a few months ago and it seems to have come along so far since then, I am really glad that I got involved in Ludum Dare and I dont think I would have ever made a complete game, that is selling for actual money, without getting involved in LD.
I will continue to use the October challenge time to further gain more insight and knowledge into the business side of making games and use it to learn about different ways to market and monetise a game… and use the challenge as an opportunity to do that side of development, since I am a programmer and my knowledge of such business is limited.
I am also constantly improving and adding new stuff to Vox, (since it is still in pre-alpha stage) so this will take up lots of time too.
I can offer advice for other people wanting to use the Desura publishing route to publish and sell your game as the process was fairly easy for me and it seems the Desura guys really want to create a system where it is easy to sell your indie game.
What was originally started as an entry into the Ludum Dare competition a number of months ago, during the april competition, is now being made into a full ambitious game!
Would really appreciate it if you could visit the game page and hopefully show your support (favorite and rate up) and this would make me very very happy indeed, and I would be forever indebted to you!
As always if you want to follow my voxel engine tutorials or articles, they can still be found at the site:
So I recently added water to my voxel engine and have been playing around with it…. one thing I have found out is that water is sooo much fun to code, it’s tricky to get a decent simulation and hard to get something that is stable and looks nice, but once you make something you are pleased with, you just wanna play around with it so much!
At this rate I might have a full voxel engine ready by the time the next LD competition drops… be able to spend the full 48 hours on actual gameplay and making a game to suit the theme…. that should be fun.
Starting to add more and more functionality to my voxel engine and it is starting the slow evolution into a game, with fun elements. I’m still aiming for daily videos showing progress and hopefully each one showing a new feature or something cool.
I have some questions for the community and gamers.
What sort of creating tools would you like to see in a voxel sandbox game?
Do you think it would be good to offer a library of common objects that the player can import/export to re-use as they are creating?
What parts of a game would you like to customize (and share with others)? Your character model, weapons, items, NPCs, quests, particle effects, world regions?
Also anyone who has played Minecraft (or other sandbox games) can probably help me by answering a couple of questions below:
During the creative parts of the game, i.e crafting, building, customizing… do you prefer to still be emersed in the game while in this mode or do you prefer a more abstract tool/interface? For example when crafting or building in minecraft you still have to walk around as the player, rather than having a fly around ‘god-mode’ when you can craft/build with a mouse pointer.
Is there anything frustrating about collaborative creating, Do you wish you had more control over allowing others to modify what you create, tools for information exchange?
How much do you think a sandbox game should be released with actual story content? i.e should the game already have a main quest, completion goal, or just be totally open?
Been working away on my Voxel engine that I first created during the last Ludum Dare and just created an SSAO shader (As per requested by Vigrid) and I am so pleased with it, I wanted to show it off and also show my general progress…
I have put up some more videos on YouTube too:
Please checkout my channel.
Also people have been asking for guides and tutorials, I am in the process of making these and posting them here: https://sites.google.com/site/letsmakeavoxelengine/home so if anyone wants to learn about making a voxel engine, or even follow in my footsteps, I am documenting my steps there…
So I have been busy adding new features and playing around with voxels, in the aftermath since my Ludum Dare game, when I initially created the voxel engine for my entry.
(My Ludum Dare 23 Entry)
I have just added support for dynamically loading and unloading chunks and also a simple fog renderer so that load popping in the distance is somewhat hidden from the player. Started using noise functionality to generate a nice flowing landscape but I need to play around with noise a bit more and get used to terrain generation before I make anything look good. (Mountains & caves! :P)
I am thinking of doing a series on creating a voxel engine and maybe posting a step by step guide/tutorial about voxel techniques to the LD site so that others might be interested in also playing around with voxels and cube worlds.
This always ends up happening to me the further into development I get and the more gamey that my creations become. I usually find that I end up just playing around with what I have made and experimenting with stuff in-game much more than writing more code. lol
Does anyone else notice this with themselves or have a similar problem when making games or writing code?
Also, I find that the more sandboxey or open world or experimental the thing I am creating is, the more I tend to play around with it. The second I implement any kind of 3D physics into whatever I am creating I turn into a 12 year old boy and just spend hours and hours messing around with what I have created and being fascinated with what you can do with physics…
I made a 3D physics engine for my final dissertation during my masters course and I swear I could have coded about double what I finally ended up with, if I hadn’t spent so *many*, *many* long hours into the early morning just playing around with different physics properties and making fun stuff happen in my engine…
I guess that’s one of the problems with coding stuff/games that you truly want to, you end up making the thing you want to play so much, that you just end up playing it half the time!
It’s been a couple of weeks now since Ludum Dare 23 and I wonder what everyone has been up to… I know a lot of people have been updating and improving their games that they entered into LD23 and that is great! It’s super awesome to see people actively keeping up the interest in their game development.
I thought long and hard about what I should do with my entry, post-LD, and finally came to the conclusion that I wouldn’t directly be making modifications to my game or adding stuff/making it better. Since I didn’t really have a grand design plan for my game as I was creating it and most of the gameplay ideas came about quite abruptly during the 2nd day, I decided to let it stand as it is and move onto other things.
So…. I have been spending the time since the competition making my voxel engine even better!!
I have been doing a lot of the core voxel engine related programming that I didn’t get a chance to do while I rushed to get something playable during LD:
*Proper* collision detection
I am going to be keeping a dev vlog diary of progress I make and uploading a daily video of features to my YouTube channel:
If anyone wants to keep track of my progress, or see my videos on general game development, and if you like my YouTube channel then feel free to subscribe, I have lots of cool gamedev stuff planned and could really do with more subscribers.
I’ve also been thinking also that I might make a public release of my voxel engine (with all the improvements), if anyone would be interested in that…? I am probably going to be using it to make something for the next LD competition, but I haven’t fully committed to that yet, we shall see how things go.
Anyway, it’s so nice to see all the activity from the Ludum Dare community still going.
So now that Ludum Dare #23 has finished and the dust has settled, I guess its time to write a post about the post mortem and give some insight into my experiences with making a game in 48 hours…
Here is a diary of the major milestones of my 48 hours highlighting interesting points of my development:
I rushed head first into creating my voxel engine, I was pleased with the announcement of the ‘Tiny World’ theme, it seemed as if this theme was perfect for what I was creating… My mood was great!
Still driving ahead with the voxel engine, encountered a few problems with how the triangles and meshes are rendered, so had to go back and improve my rendering engine. Spent a good portion of these hours optimizing how triangles are pushed to the renderer and adding support and features for mesh rendering with display lists and vertex buffers.
Started playing around with different configurations for meshes/chunks/regions… came up with some interesting implementations of how a voxel world could look (sphere worlds, cube worlds, trees). I made sure to leave all configuration/ideas in the code so that I could easily come back to anything which worked.
Added support for cubes/voxels with different textures. Using a texture atlas to store the different textures. i.e. (grass, stone, wood, magma, etc) This would be important since I wanted to make a world that could be modified by using different cube types.
Towards the end of day 1
Hit a wall with regards to what my final outcome was going to be… I did have some original ideas relating to a flat, cubed world with tress and houses that you walk around and do stuff as a player, but nothing really inspired me in that respect without completely ripping off minecraft functionality (which I did NOT want to do).
So I went to sleep and hoped to come up with some neat ideas in the morning.
I woke up with renewed vigor and some thoughts about a different direction that my game could take. I decided to make it more abstract and not have a player in the world or have any direct user control, instead focus on world destruction and voxel effects.
Day 2 general
The bulk of day 2 was taken up coding effects and voxel related gameplay. I created asteroids and a layering system for my planet, exploding blocks and effects of asteroids crashing into the planet. The vaporize and terraform effect was actually something which came about accidentally, but I liked how it looked so decided to keep it in and make a gameplay mechanic for it.
This period was pretty crucial for me, I was rushing and coding gameplay elements really fast, I had a feature idea and once I got it working I moved onto the next thing on my mind. Asteroids, world vaporize (terraform), exploding chunks of the world, world rebuilding. I needed to make a full game cycle so I decided to add a timer that would ultimately drive the gameplay (destroy the world within the time limit).
I had finished the gameplay that I wanted. Next came the hard part of making it usable and playable. Having a lot of functions that are bound to keyboard keys is no good when you want other people to play your game and enjoy it.
I started to code the game flow:
Start menu –> enter game –> game timer –> score screen –> restart.
Added basic HUD and menu. i.e “Press SPACE to start/restart” and a scoring system.
My plan for the scoring system was going to be more complex with multipliers and additions for which super moves you used, but I didn’t have the time to make this work, so stuck with a simple score and time multiple.
The HUD and user interface needed work, I added these features faily easily but they were basic and static. So I started working on timings and polishing the interface. Flashing “Press SPACE to start/restart”, score screen with accumulating score. Timings and delays on the game flow to add additional polish. For example when you destroy the world, the score screen doesnt instantly popup, it has a time delay, or when you press to restart the game, the game waits until the world is rebuilt before allowing player control and starting the time. etc. This polish and attention to the small details is what makes your game stand out and feel like a proper experience, rather than a load of features cobbled together.
This last hour was mostly taken up with preparing a release package, zipping up the projects and source and testing to make sure a download of the source and executable would build and run, etc… Faily boring stuff but it does take time. I noticed a problem with absolute paths in my Visual Studio project, so had to rebuild a whole new project solution to fix this… luckily my project solution didnt contain too many header and cpp files.
I tested my package, uploaded it and then created an entry on the Ludum Dare website… then sat back and had a rest.
Had great momentum from the start – I was able to put off the design and gameplay decisions till much later, since I had a lot to code from the start, having decided on a specific rendering engine.
Used my own personal engine – Since I was using my own 3D/OpenGL engine, I knew exactly what I could do and how to do it.
Voxels and cube art is great for programmers(and anyone who isn’t an artist) – Art was always going to be a problem for me, but creating stuff in 3D mitigates that problem slightly and creating stuff purely with voxels actually looks great with NO art whatsoever (See minecraft :P)
Got lucky with the theme – Seriously, I couldn’t have chosen a better theme for a voxel based game if I tried. if the theme had been something like ‘Evolution’ or ‘Discovery’ or some other abstract concept then I don’t think my game would have turned out half as good as it did!
Got involved with the LD community – I really enjoyed looking at the other users entries on the LD website and also posting my own progress and hearing feedback and comments from the community. Nothing is more rewarding that seeing other people’s efforts and encouragements from the community.
Self documentation – I think I did a pretty good job on documenting my progress, taking screenshots and uploading videos to youtube. I even enjoy looking back myself now and seeing the progress that I made during the 48 hours.
WHAT WENT WRONG:
Gameplay – I left most gameplay decisions until the 2nd day. After I was happy with my rendering and voxel engine I actually spent a good hour or so scratching my head as to what to do next.
Focusing too much on the rendering/engine – I was torn between wanting to make a really optimized re-usable voxel engine, and adding in gameplay features. At one point I had to physically stop myself adding voxel engine features and rendering optimizations to force myself to think about gameplay and mechanics. I could have quite easily spent the whole 48 hours making a voxel engine…
Trying to do too much – I had far too many ideas that I wanted to try out and not really having a clear design goal or making any gameplay decisions at the start meant that I was fragmented when I wanted to start making something that would be playable.
Memory leak! – I found a major bug (memory leak) in my voxel particle renderer about 8 hours before the compo was due to end. I was leaking memory quite badly when creating and destroying particle effects that I HAD to fix. This took up about 2-3 hours of valuable time towards the end of the 48 hours.
Basic user interaction – It is really hard polishing a user experience, so I ended up just putting a couple of buttons in for the special moves, not the most elegant way of coding gameplay features
Sleep! – Don’t even bothering thinking that you can work solid for 48 hours, it is just not possible. It’s counter productive to lose ANY sleep and even just trying to do one all nighter is going to be detrimental to your progress. Yes you are going to probably stay up later than usual and once you are in the zone its hard to leave things to go to sleep, but if you are staying up into the early hours of the morning and going to sleep before it gets light outside, I would say you are doing something wrong.
Prototype FAST - 48 hours goes really fast, if you are spending a lot of time on a feature or idea that just doesn’t seem to be working, move onto something else. Don’t waste time flogging a dead horse.
Know your tools/code/engine – Since you are going to be creating something SUPER fast and with no time to spare, you really need to know what you are using. It helps if you know exactly what your engine is doing, right down to the individual function calls and rendering details. You will spend far less time fixing bugs, debugging code and trying to figure out what is going wrong if you know your engine/code inside out.
Make decisions before the competition starts – I think I can attribute a lot of my success to this point. Since I was prepared before the theme announcement and was ready to start programming the instant the 48 hours started, this helped me a *lot*. I could have took this EVEN further by making some gameplay decisions first as well as deciding on the style of my game.
Make the theme work for you. – (This is related to the previous point) Already have an idea of the sort of game you are going to make and then just adapt it to suit the theme… It is no good having no idea about what you are going to make and just trying to come up with a game that perfectly suits the theme. You will waste valuable time thinking and designing when you could be coding!
Polish what you have – Personally I think that a well polished, smaller scope game that does a few features really well, is much better than some attempt at a game that has lots of features but doesn’t implement any of them particularly well. LD is a time to create something small that shows off something cool in a neat little package, not create the next big blockbuster.
Overall I had a blast making a game in 48 hours and taking part in my first Ludum Dare. I am pleased with my final outcome and even surprised myself with what I made. I now have a 3d voxel engine that I didnt have before I started the LD48 and don’t doubt that I will be using and improving it from now to create even better voxel games.
Thanks for all the support guys and see you next time.
I managed to do most of the stuff what I initially planned. I didn’t code all the gameplay elements that I wanted but in the end I figure out that 48 hours is not a lot of time for a game with big scope, especially if you make a voxel engine for the best part of the first day!
Here is a video showing off my game playing:
I will be doing a post mortem post soon and trying to capture a lot of the stuff that is still fresh in my mind.
Overall I had a great time and will definitely be entering future Ludum Dare compos.