Due to an accident with my website, all the blog pictures have been deleted from the server. Over the next couple of weeks I will try to restore as many as possible, but due to my strict clean up nature when it comes to local files, most files I may not have around any more.
We have already discussed several topics related to OpenAL. This week we will investigate how we can structure the concepts of OpenAL to fit nicely with the object oriented paradigm, so we can write elegant C# code to play sounds and manage sound effects.
In this post we will quickly go over the three main concepts of OpenAL as discussed in my introduction post: listeners, sources, and buffers. In addition, we will also introduce a type for sound data, which comes in handy for sound effect management.
Last time we stepped through the process of loading and playing a sound using OpenAL. In the example we only played a single sound once. In practical applications, in particular games, will have a larger set of sounds they use, and they will be playing these sounds multiple times. They might even play the same sound multiple times simultaneously.
In this post we are going to look at managing a larger set of sound effects.
In an earlier blog post I introduced the workings of OpenAL. Knowing the theory still doesn’t mean you know how to actually get a sound engine working. Something I found myself struggling with a lot when I started working with OpenAL for our game project was figuring out all the steps required to get a sound to play.
In this blog post I will be talking about the very basics of playing a sound. In the following blog post, I will approach the problem from the other end, and we will look at some of the high level management code that can be used to manage a large amount of sounds.
Last weekend was spent on creating a game in 48 hours for the Ludum Dare. The final results can be found here. In this post I will highlight on of the techniques I used during the game jam: random dungeon generation.
After two days of working on this game, Dungeon Hunter is now finished (or… as finished as it could be within 48 hours) and available for download. I will be posting my evaluation in a few weeks when the ratings are in as well. For now, enjoy the game and manual below!
As promised, here are my day one builds for the Ludum Dare!
It has been a while since I last posted a blog post. On Twitter I already announced that due to some personal circumstances and vacation I was unable to keep up with my blog. However, starting from next week I will go back to my schedule of publishing a new post every other week.
The upcoming weekend I will be participating in the latest instance of the Ludum Dare. I am still really happy with my result from last time and it will be really difficult to top that, but that isn’t stopping me from trying. I’ll be posting my progress on Twitter, try to post my day one builds here, and I may even livestream my process over on my Twitch channel, so keep an eye out for that. Below I will give a short overview of my plans for this Ludum Dare specifically, so read on for some tips and whatever if you’re interested.
Space, the final frontier and a recurring theme in games. The funny thing about space is that things rarely move in a straight line – then again, that all depends on your reference point. Gravity – and in particular orbital physics – forms an important aspect when it comes to movement in space. Many space games include some form of orbital mechanics or even depend on them as gameplay mechanic.
In this post I will talk how orbits in games can be implemented. In particular we will tackle some non-trivial orbits. This post will be very goal-focussed, and we will only discuss the underlying mathematics minimally, since it is primarily aimed to provide an easy reference to implement orbits yourself.
Last week we introduced the concept of components as framework for programming game objects. As opposed to last week, this week we will discuss a more technical object: how to add communication between components. I will first describe a few use cases and why we are interested, before discussing several approaches and their advantages and disadvantages.