The third part in this series on the best GDC talks is all about the art and science of level design. Originally I’d intended these talks to be included in the previous entry on game design, but as I was putting that list together I realised over half of talks I’d chosen were actually about level design, so the subject really deserved it’s own post.
Level design and game design are very much two sides of the same coin, with levels a way of creating meaningful structures from the rules and systems defined by the design. While it’s certainly possible for games to exist without distinct levels (say Chess or Football), most modern digital games are clearly designed to be explored through a range of designer-made scenarios, whether it’s the complex arangement of ledges, hazards and pickups in a platformer, the sweeping corners of an arcade racer, or the subtle environmental puzzles of a stealth adventure, levels provide a way for players to explore a game’s design.
In the second part of this series on the best talks from the GDC Vault, I’m going to focus on game design. While there’s no way that such a short list can cover everything in the realm of game design, I’ve tried to select a mixture of talks that reflects the variety of the subject, by approaching it from many different angles. There’s a theoretical overview of open ended experiential games, a cautionary tale of hidden design complexity and a range of design retrospectives on everything from indie cult classics to mainstream mobile hits. Each of these talks offer valuable insight into the creative process of game design, documenting many individual approaches to the topic and showcasing the methods they use to realise design ideas throughout the development process.
As varied as they are, all of these talks share a few common themes. They show how the most creative and successful ideas are those that challenge conventional wisdom and seek to innovate by adopting a fresh perspective. They also underline just how important a good development process can be for a game’s success. A well managed process can support countless rounds of iteration, exploration and refinement, providing game designers with the space to explore their ideas and the tools to think critically about their work.
Recently I’ve been trying to learn a bit more about game design theory and technical best practices. While there are lots of great books and articles to read, what I found most interesting were the talks and presentations taken from the yearly Game Developers Conference. I’ve never been to GDC myself, but the wealth of content available in their archives is pretty amazing, covering all aspects of game development, from programming to art, design, business and historical retrospectives. This short series of posts aims to highlight some of my favourite talks from the GDC Vault, focussing on the areas of game technology, design and history.
For the first part of this series I decided to focus on games technology, but I quickly realised that it’s actually quite difficult to find great technical presentations that that really stand the test of time. While focussing on the details of a cutting edge technical implementation or technique can be useful at the time, within a few years, that same content can date considerably. That being the case, my choices for the best technical talks includes sessions that are about more general concerns: unique approaches to problem solving, best practices and tools development.
Each of these talks has something valuable to say about the technical process of game development, and each provides a great deal of inspiration to explore more creative uses of games technology.
It’s amazing to think 6 years have passed since I last posted anything on this blog, that’s a really long time, so much has changed in the digital development space! Back in 2010, I was still working as a web developer at a digital agency, then I got hired as a games programmer at Preloaded. Over time, my focus moved from Flash to Unity, as the studio started to explore 3D game development and mobile platforms. I guess it’s a fairly common story, with the gradual decline of Flash, a lot of people who were using the platform have moved on to other things like WebGL or Unity, and started making apps and games.
So with all that change, the past few years have just flown by, and I’ve not had much time to write. In fact, while working at Preloaded, I spent most of my free time commuting back and forth to London, but it was fun and definitely worth it. Preloaded was such an interesting and creative place to work, an applied games studio specialising in experiences that educate and inform players, making games with real purpose.
Then, after more than 5 years at the studio, I left, and now after a bit of a break from all things coding, I’ve got some free time again, so I thought I’d post a few new things. While I’m hoping to get back into tutorials and demos in the future, I thought I’d start by just sharing some of the best game development resources I’ve found recently.
Space Runner Unity Demo - Click To Play
This demo is my first real attempt at making something in proper 3D using Unity and follows on from the 2D Asteroids style game I made back in January. As with that earlier demo, I used C# to write all the main game scripts, while the graphics and sound effects are from downloads available from the Unity Resources section of the Unity Technologies website.
My aim was to make something reminiscent of classic on rails shooters like Starfox, Afterburner, Rez and the Panzer Dragoon series. I spent quite a while looking at those games and trying to mimic the controls and camera behavior for this demo, and while it’s clearly not a patch on those games, I guess there are a few similarities in places. If you would like to play the demo please click the image above.
Unity Astrospace Demo - Click to Play
This demo is my first project in Unity, and is my take on the Atari classic Asteroids. There’s a lot to learn when you first start out using Unity, so something simple, well known and in 2D seemed a good place to begin. If you’d like to play the demo, please click the image above.
There’s been a lot of talk in the Flash community lately about Unity and the way it is transforming 3D on the web. Having read a lot about it, played a few demos and seen that Unity Indie is now available for free, I just had to take a closer look. So what follows are my first impressions of the game engine and development environment, a quick look at some of the best Unity projects out there at the moment, and an overview of the resources available to new developers, especially those like me, who are from an ActionScript background.
From Flash to Unity
Working with Unity is a lot like developing in the Flash IDE, in fact there are so many similarities that as a Flash developer it’s very easy to understand the basics. Lots of comparisons have been drawn between the basic building blocks in both environments: the Unity Project Panel is just like the Library in Flash, the Hierarchy is your Timeline, the Unity GameObject is a bit like the base DisplayObject in Flash, while Prefabs can be instantiated at runtime just like Linked MovieClips, even the default scripting language looks very familiar.
What quickly becomes apparent though, is that aside from the obvious performance advantage that Unity brings to 3D graphics, this is also an engine that was built mainly for making games with rather than a platform for everything from 2D vector animations to video playback. To make a game in Flash – even with something as advanced as the PushButtonEngine – is still a major piece of work, with Unity everything is there at your fingertips: 3D renderer, shaders, particle effects, a physics engine, standardized player input, an optimized game loop, sound management… the list goes on. All of this means that you can focus on creating the actual game itself, rather than trying to build an engine from scratch or spend ages working out how to combine some existing code libraries or frameworks to make a game in Flash.
The aim of this demo was to update John Grden’s legendary Papervision3D X-Wing model – as seen in this classic papervision demo – and really bring it to life with some nice animated 3D particle effects.
The demo combines Papervision3D and the Stardust Particle Engine to add particle effects to the existing 3D model. I used Stardust’s built in Papervision extension to add the classic red glow of the X-Wing engines and then animate those engines as the ship accelerates away from camera. It’s quite a subtle effect, but if you look closely you can see a kind of red heat haze, I also like the way the white flames fade in and out as the ship speeds up and slows down.
I know this kind of effect could easily be done in something like Unity but I think it’s pretty cool to see it done in real-time in Flash. The original Papervision3D X-Wing demos were a real inspiration to me, and it’s amazing just how much a little effect like this can add to what is already an amazing 3D model.
Click here to view the demo and source code.
This demo is another example of the cool effects that can be made in Flash and ActionScript 3 using the Stardust Particle Engine.
By combining a simple particle effect with lots of Flash filters and some BitmapData processing, it’s possible to create some pretty abstract looking flame effects. The initial idea was to make something similar to the neon particle systems seen in games like Geometry Wars and Grid Runner, but after playing around with the Flash bitmap filters for a while I ended up with this cool looking flame effect instead.
The code is actually fairly similar to my earlier tutorial on using the Stardust engine, but this time I’m setting the velocity of the particles based on the speed and direction of the spaceship to create a nice engine flame effect that reacts to the ship’s movement.
Click here to view the demo and download the source code.
The Stardust Particle Engine is a great new addition to that long list of open source AS3 projects out there on the web. While Stardust can look like a fairly complex system to get started with, this tutorial will hopefully show you how to setup a simple particle effect using the library and give you enough understanding of how it works to start making your own effects as well.
Stardust has a lot of cool features, and much of its structure and functionality will be familiar to people who have already used the Flint particle effects library or the Box2DFlash physics engine.
What makes this engine different is the way it brings all these features together in a modular and well designed package. It supports 2D and 3D particle effects (via its own internal 3D engine and through plugins for Papervision3D, ZedBox or ND3D), particle masking to help create more complex logic, and even the option to configure your effects using external XML files.
In addition to this great list of features is an excellent set of documentation, a nice introductory user guide, lots of really good code examples and even some FlashDevelop class templates that make it much easier to extend the core classes for your own effects. All of these extras are available from the links on the Stardust project home page.
So anyway, on with the tutorial, what we’re going to do is create a very simple multi-coloured smoke effect that will follow the mouse around the screen. It’s nothing too amazing I guess, but hopefully it will work as an intro on how to get started using the Stardust particle effects engine.