Procedural RPG World Generation

Featured

Having now completed my MSc, below is a brief summary of my dissertation project along with galleries and a video of the prototype. There’s also a download of the full report detailing the implementation process along with background on the topic for those interested in procedural content generation or studying something related.

Report:

671 Downloads

Video:

Since the days of Rogue, and Elite, games have utilised various procedural content generation techniques to create game worlds for players to explore, freeing developers from the hand-crafted approach typically seen in the majority of games. For me, it was the second Elder Scrolls game, Daggerfall in ’96 that inspired me enough to prompt this topic choice for my MSc dissertation project. Although Daggerfall was most certainly a flawed game, the sheer size of the game world is still unsurpassed even today, being roughly 162 square kilometers (about half the size of the Great Britain) and featuring over 15,000 towns, villages and dungeons. An amusing rumor is that it’s so big that you can fit every other subsequent Elder Scrolls game world into a pixel on Daggerfall’s world map.

When you have a game world that big, procedural content generation (PCG) is the only feasible way to populate it. Daggerfall’s world was generated ‘offline’ and shipped on the game media, making the world the same every time you played it. It’s main story-line areas and characters were hand-crafted, but the rest of its towns, dungeons and wilderness areas were all generated.

Scale comparison of the Elder Scrolls games.

Scale comparison of the Elder Scrolls games.

What I wanted to do, is to tackle a project that aimed to generate an RPG world in real-time so each world would be unique, and ultimately create an explorable 3D RPG world generator. What I actually wanted to do was create a full RPG game to play within these generated worlds (i.e. my dream game), but clearly this would never have been feasible in the time-frame and so I settled for a compromise by removing any game mechanics or AI from the project, effectively stripping out the ‘game’ aspect. Even with this, the project workload was going to be ridiculous considering I wanted to use my own DirectX engine and use it to generate the world, complete with dungeons, NPC towns and a day/night cycle.

Unlike most of my previous projects, there wasn’t going to be much focus on graphics and that actually fit nicely with my retro vision for a more modern looking Daggerfall-esque game, complete with sprites…lots of sprite.

My report can be found at the top of this post if you’re curious about some of the techniques I used in the prototype. I had little knowledge of how other games have really approached this from a technical point of view, other that what I had uncovered during my research on the topic. The developed prototype is therefore very much my own approach.

Since, the detail is all in the above report, I’ll just briefly mention some of the techniques the prototype involved:

The world generation itself was created using a procedural noise technique to generate a height-map. Multiple octaves of value noise are combined (Fractional Brownian motion) to create a resulting fractal noise suitable for generating realistic terrain formations. The noise implementation I used was specifically Voronoise, a method that combines a value grid-based noise type and a ‘jittered’ grid version of Voronoi (cellular noise) into an single adjustable function. I introduced a seed value into the noise generation to allow for reproducibility of worlds, given the same seed. The height-map is output in the pixel shader to a render target upon generation, and then used during the tessellation shader stages via patch control-point displacement when rendering the world.

fBM3

Summation of noise octaves.

terrains

A variety of generated worlds.

The prototype’s generated world size is not huge like Daggerfall, but it’s a fair size at around 16,777 square km. That’s a little under half the size of Skyrim’s world for example, but for a little prototype I’m happy with this and it still allows plenty of explorable terrain using the appropriate movement speed and not the super fast one as seen in my video!

Dungeons use a completely different generation method that I implemented off the top of my head after looking into various techniques. It’s an agent-based technique that uses diggers to burrow out corridors and rooms, with various rules thrown in to keep them in-check to ensure they generate sensible looking dungeons. They are also responsible for spawning the dungeons contents which include monsters and treasure chests and the up and down stairs. Here are some ASCII representations of the dungeon layouts generated by the method:

dungeons

The world is divided up into 32×32 terrain chunks that are each responsible for hosting their respective game objects such as flora, fauna, towns and dungeon entrances. For performance purposes frustum culling was a necessity due to the large scale of the terrain, and only chunks visible in the frustum are processed. Each chunk has a chance of creating towns and/or dungeons and checks such as suitably flat terrain are important factors in determining this. Each building performs a suitability check on the terrain mesh at a chosen spot to see if its within the gradient threshold, and if so places a random structure. If enough buildings are present in a town, NPCs will spawn within proximity of the town.

I added a few small graphical enhancements to the game such as faked atmospheric scattering, fog, layered sky domes, water and emission mapped buildings at night. They are each detailed in the report, but ultimately time was limited and any graphical enhancements were really a secondary concern. Despite this, I really wanted to add them and I think it does enough to achieve the overall atmosphere that I had envisaged, as demonstrated in the below comparison with a Daggerfall screenshot:

DaggerfallComparison

Aesthetic comparison between Daggerfall (left) and prototype (right).

The prototype initially starts into the table view where a map of the generated world is shown that can be rotated and zoomed in/out for examination. At a key press the camera moves into the first-person mode and plonks the player into the world. Worlds can be generated in first-person mode but it’s much more intuitive to do it in the table view. By tweaking the various settings in the UI i.e. noise values, town frequency and tree density; worlds can be tailored to whatever style you want, although currently you have to understand each of the noise settings and their influence on the generation process, to create something you have in mind. Failing that though, there’s trial and error. Ultimately, I’ll add predefined terrain settings that can be selected to simplify this process since it’s really not intuitive to know how ‘lacunarity’, ‘gain’ or ‘frequency’ for instance will effect the world, but academically, it’s quite useful to have them directly tweak-able. A seed value can be directly entered into the UI, with every unique value resulting in a unique world.

I hope at some point to continue with the project. There will be a hiatus for the foreseeable future while I work on other things. There is near infinite scope for the project, with so many things to add so it’s likely something I can keep coming back to.

I also produced a nifty tool for visualising noise which could have various uses for demoing. I’ll probably get this uploaded with a download of the prototype itself at some point.

As detailed in the report, the prototype uses various art assets (models/textures) sourced online via Creative Commons license. The project is for non-commercial use and many art assets are effectively placeholders used to finish the prototype during my studies.

 

 

3D Pinball Game – Development Project

Featured

 

This is a 3D pinball game developed as part of my MSc Computer Science. The module was a group project and we were tasked with developing a 3D pinball without using an existing propriety game engine (such as Unity or Unreal etc.).

I developed an easy to use DX11 renderer for use by the group and we incorporated the Bullet physics and FMOD libraries to put the game together.

The time constraints on the project were intense and so this was put together in around 10 days (some crazy hours ensued). Many cans of energy drink and cups of coffee later this was the result. Its not exactly pinball FX but factoring in timeframe and tool constraints, I’m pleased with how it turned out. I wouldn’t expect a public release any time soon though!

Gallery:

Bullet physics is pretty fiddly to get up and running and took a bit of research to get to grips with. As with most open source libraries there are many conflicting sources of documentation and versions floating around which often serve only to confuse, but for a free physics library you can hardly complain.

I worked on quite a bit of the project, putting together the renderer and framework that the group used for production. I programmed the graphics, did any required artwork (base textures were sourced online) and worked a lot on the important physics such as the flippers and launch mechanism. With more time we could have improved quite a bit, as it stands the physics aren’t on a fixed time step and neither is it on an independent thread, therefore bad things happen if the frame rate gets low. For this reason it’s designed to run more or less perfectly on the system we developed it on and we were marked on, but it would need a fair bit of improvement to get it working nicely on any system and I doubt I’ll have time for that any time soon.

The project was probably my first real taste of game dev crunch or ‘death march’. Really it was worse, with 16+ hour days, often leaving the lab after sunrise. In the end, I think it was worth it though and I had actually always quite fancied trying my hand at developing a pinball game!

PS. Thanks to the guys (and gal) for such a hard-working group.

Cross-Platform Game Engine

Featured

In the first semester of my MSc Computer Science degree as part of the Games Development Architectures module we were tasked to design and implement a cross-platform game engine. A game would also be made using the engine.

The chosen platforms were a Windows PC and Windows Phone 8 device. I decided that considering Microsoft had developed a Universal Application framework for targeting both of these, I would utilise it. This was good from the point of view that it simplified the cross-platform compatibility, but introduced a few limitations (namely having to work with the Windows RT platform and resultant consequences for dealing with inputs via ‘ref classes’ etc.. Coming from experience with Win32 desktop programs, Windows RT feels very different to program for and much less flexible, but then again Win32 really does need some modernisation.

4

Project Details:

  • Engine coded in C++ (Visual Studio).
  • DirectX11 rendering engine component coded from scratch.
  • HLSL shaders.
  • The Universal App framework used to contain the code solution and deploy to both platforms.

We were given a design specification for a simple game called ‘Tunnel Terror’. It involved the player having to control a vehicle/object through a tunnel, avoiding various obstacles. The speed would gradually increase the longer the player survived and any collisions with obstacles would result in death. Score was determined by length of survival. I decided to add various extras including power ups such as coins and a randomised speed-up/slow-down. The game would need to play on both a PC and Windows Phone 8 device, allowing for the differing input controls to play. I decided the PC would utilise keyboard whereas the phone would rely on the accelerometer (tilt) sensor to manoeuvre the player through the tunnel. The PC also required a 2 player mode. Main menu, high score table and game over screens would be needed as well as Multiple camera modes such as first-person, third-person and death fly-by cameras.

3

Although marks were given for the game implementation and extra features, much of the module was graded based on the engine design, implementation and accompanying report. My report justified the design based on four principles of games architecture, namely ‘Simplicity’, ‘Reusability’, ‘Abstractness’ and ‘Modularity’. Below is an example of the UML design used for my engines platform independent rendering component, with examples given to how behaviour could be derived for both DirectX and OpenGL.

Renderer

In the report we also had to research how we would have implemented the game on next-generation architecture such as the PlayStation 4 and how the engine would deal with the addition of different kinds of input devices.

There were some marks awarded for graphics quality and since the target platforms were both Microsoft, DirectX11 was used for the graphics. I implemented normal bump mapping to give it a nice look when flying down the tunnel. I also randomly changed the textures of each tunnel section and reset them to the end of the sequence once passing behind the frustum to give the impression of an endless tunnel with non-repeating sections.2

Annoyingly because the game is a Windows Store application there is no runnable executable so without actually publishing it to the Store and getting past all the certification requirements I cannot put it up anywhere to play! What is worse though is that currently I know of no screen capture software that can even record footage of the game running (at a decent FPS), both Fraps and Bandicam do not capture it since it’s not a desktop application. Bandicam does have desktop capture support but this also didn’t seem able to see the game and is not suitable for high frame-rate applications. So, as it stands I can’t make a video of the game running without hardware recording. Hopefully, this is something that won’t always be the case.

I was very pleased with the final engine and received a 92% grade for the module. I have since improved upon it and reused design elements for subsequent modules such as Real-time Graphics. I think a lot of what I coded for this project will be extremely useful going forward.

 

 

 

Bit’s Blitz – Puzzle Game

Bit's Blitz - Puzzle Game

Bit’s Blitz – Puzzle Game

In the third year of my Computer Science BSc (2013) as part of the Commercial Games Development module, we were placed into groups and tasked to produce a computer themed game designed for children. Each of the group members had to produce a game design document, one of which would be chosen for the group to develop. My group consisted of me, Aaron Ridge, Michael Killingbeck, Andrew Woodrow, Joshua Twigg and Alex Lynch.

The group decided to go with my game design which was inspired by the classic puzzle game Chip’s Challenge, with the idea being to reimagine it and modernise the graphics.

Game synopsis:
 “‘Bit’s Blitz’ is a fun 2D puzzle game following the escapades of its protagonist ‘Bit’. The game takes place across a series of levels increasing gradually in difficulty, gradually introducing new game-play elements. The player controls ‘Bit’ around a grid, constrained by a series of maze-like blocks and hazards. ‘Bit’ must successfully collect all the computer components that are scattered around the level and then repair his computer to proceed to the next level.”

Details:
Developed using C# and the XNA framework for the PC platform (Windows XP+).

 

The nice thing about this game design was that we could focus on the puzzle aspect of the game, time and imagination permitting, due to the simple overhead on technical implementation. The tile-based game engine was written from scratch using XNA, utilising XML data structures to store level data and a custom made loader. A cool and free little program called Tiled was used to ‘paint’ the level layout and export it into our XML format. I’d strongly recommend this to any considering 2D tile-based games for constructing levels, having said that, it’s a nice programming exercise to develop your own editor if you get the chance.

All gameplay aspects including animations and particle systems were programmed for the game, using no other libraries except XNA. I designed the game framework based on the State Design Pattern which worked out really well and continue to use it for game development.

With the use of XML and Tiled it allowed us to churn out level designs at an alarming rate and the final product has over 20 levels! Not bad considering the 2 week development time. When giving the presentation of the game, we literally only had time to demonstrate about 5 of the best levels, odd considering level variety tends to be in short supply for prototypes.

Sound effects were added (free assets) however I’ve removed these from the video and added music since honestly, they weren’t brilliant! The above gameplay video demonstrates various levels (played by me). I could barely remember most of the levels so it’s pretty much a blind play-through with some genuine mistakes.

For the project we all chipped in and the group worked well together. The game was never released or published anywhere, though if anyone is interested I could stick the executable on here for download.

OpenGL Cross-platform PC/PSP Game Coursework

Last semester as part of the Advanced Graphics module of my CS degree at Hull University, we were tasked with a group project to produce a cross-platform OpenGL mini-game for the PC and Sony PSP based on a specification. The game premise was to move around a 3D ‘maze’ consisting of four rooms and connecting corridors, avoiding a patrolling AI that would shoot you if within its line of sight. The objective was to collect 3 keys to activate a portal to escape and beat the game.

The groups were selected at complete random with 4 members. As per usual, group coursework assignments are particularly difficult due to the extra concerns of motivating members and assigning work and by year 3 of University, you get a good idea on the best way of operating within them to secure good grades. I went in with the mindset of doing as much work as possible after we assigned tasks. Hopefully each would carry out their allocated work, if not, I’d just go ahead and do it, no fuss. Luckily one chap in my group was a friend and he did an excellent job coding the AI, mini-map and sound while I worked on coding the geometry, camera, lighting and player functionality etc.

1

Mini-maze model

Static environment lighting

Static environment lighting

Cross-Platform Limitations:

Having worked with OpenGL and shaders last year for my 3D ‘The Column‘ project, it was some-what limiting when I realised that the PSP didn’t support them and that fragment-based lighting was a no go. With one requirement of the game being a torchlight effect that illuminated the geometry, this would therefore mean that for PSP compatibility, vertex-based lighting would need to be implemented and that meant tessellation of primitives to prevent the lighting looking very blocky and…well very 90’s. Luckily the PSP did atleast have support for VBO (Vertex Buffer Objects) which meant effectively each tessellated model could loaded onto the graphics card only once to improve performance.

Unified Code

An interesting aspect of this project was the required consideration for a consolidated code-base that where possible allowed shared functionality for both the PC and PSP platforms i.e limiting how much platform specific code was used. This was essential since the game would be a single C++ Solution for both platforms.

I designed the code structure based around principles Darren McKie (the course lecturer) described, and produced the following class diagram that reflects the final structure:

Unified Cross-platform Class Diagram

Unified Cross-platform Class Diagram

The majority of game code resides in ‘Common Code’ classes that are instantiated by each particular platform ‘Game’ object. Certain code such as API rendering calls were kept platform specific but made use of the common classes where necessary. A particular nice way of ensuring the correct platform specific object was instantiated was carried out using ‘#Ifdef’, ‘#ifndef’ preprocessor statements and handled by a ‘ResourceManager’ class.

As mentioned earlier, per-vertex lighting had to be implemented due to PSP compatibility. A primitive with a low number of vertices would thus result in very blocky lighting. To prevent this I created a tessellation function that subdivided each primitives vertices into many more triangles. I played around with the tessellation depth to find how many iterations of subdivision could be achieved before inducing lag and was very happy with the lighting result considering there is no fragment shader; a given for today’s modern pipelined-based rendering.

Active Portal

Active Portal

The PSP implementation proved more tricky due to getting to grips with the PSP SDK and having access to very little documentation, however the game was successfully implemented onto a PSP device and ran with decent performance after compressing the textures down and removing geometry tessellation to allow for the PSP’s limited memory capacity.

The game was written in C++ and  the following libraries and software were used:

  • GXBase OpenGL API
  • Sony PSP SDK
  • OpenAL
  • Visual Studio 2012
  • Paint .Net

Hypermorph Wins Three Thing Game Competition

So it’s been a frantic couple of weeks, plenty of course-work to do and last weekend was the much anticipated Three Thing Game competition. For anyone not in the know this is held each semester at Hull University and challenges teams to come up with a game based around three auctioned words per team. Judges then score based on the games relevance to the words and the quality/fun of the game. The competition involves a marathon 24 hour programming session to get your game finished on the day. This one was the biggest yet with 39 teams competing. We really couldn’t have asked for better “Things” because a combination of good bidding and luck meant we came out with “Flying”, “Tank” and “Bombs”. Considering another team got “Teddy bear”,  “Deodorant”  and “Pop Tart” I think we did ok!

Last year we came second with Shear Carnage and and I can say that honestly this year, we really really wanted to win it. This was evident to myself just by the focus we had this year and when the day of the competition came, I think I probably left my seat half a dozen times in the whole 24 hours! In hindsight we probably took it far too seriously and as a result I think it sacrificed a lot of the enjoyment of the competition and resulted in some contention regarding ideas that seemed inevitable considering vested interests and no one leader within the team. I think on a personal note, much was learnt regarding team work and there are aspects of the planning and design process I would do differently next time. Luckily it all turned out worth it in the end and so it’s very hard to regret any decisions, but this was by no means a painless endeavour!

Me on the right, Russ in the middle, John on the left. Lee Stott at the back.

So to the game, Hypermorph is a retro-style side scrolling shooter that takes me back to my childhood days, playing classics such as Xenon 2, R-Type and Menace on the Amiga. Back then the shoot’em’up was a staple video game genre and was hugely popular, now only since the mobile platforms have taken off is the genre again feasible because it’s the perfect style of game to have a quick blast on when wanting to pass a little bit of time. The  thing that’s pretty novel in Hypermorph is the ability for the player to switch between two different forms, a spaceship and a hover tank by simply tapping the screen. We made the game using XNA (C#) for the Windows Phone 7 and coded everything ourselves (no third party libraries).

I produced the art for the game and managing both the art and doing a lot of the programming was a challenge in itself on the day, resulting in most of the art being done in the last few hours. I had a good idea in my head what the game would look like when we were bouncing the initial idea around, however my regret was that I didn’t produce any concept art for it sooner to put the rest of the team at ease; for a long time I think we were left with our own ideas for how the game would look but once I came up with the first concept drawing for the ship, the team were all in favour to my relief!

We had decided to make the game quite dark and moody but with bright weapon and explosion effects to make them really stand out. Additionally, we wanted to make the controls as hands off as possible. We learned from Shear Carnage that using touch too frequently can result in obscuring a lot of the screen so we instead went for a tilt based movement for the player and a single touch to morph between Tank and Spaceship. Importantly we set it to auto-fire constantly since you soon realise that in this genre there’s never a time you don’t want to be firing.

One feature I’m really pleased we put in was the voice effects for powerups and various other things. It adds a lot to the immersion and again, really goes back to the genres roots.

Of course we have plans to get Hypermorph out on both the WP7 and Windows 8 market ASAP but uni coursework is currently being prioritised. At the competition was Lee Stott from Microsoft and guys from the Monogame team. Lee’s encouragement was inspiring and I’d also like to thank him and Microsoft for providing the cool prizes. The Monogame guys were brilliant and we spent a fair time chatting with them regarding getting our games ported to the various platforms, they even ported Shear Carnage and my Robocleaner game for us to show us how easy it is! (albeit there’s some coding required to get them ready for the marketplace).

Ultimately we are going to want to put in a few more levels, enemy types, weapons and powerups before getting it on the marketplace, but the good news is it will most certainly be free!

All in all it was overwhelming and the encouragement we have received from Lee Stott, Rob Miles and the MonoGame guys was great. Ultimately this is why I gave up a career in IT to get into the games industry, because there’s so much satisfaction in putting your heart and soul into producing a game and then seeing others get a lot enjoyment from it. Winning the Peoples Choice award as well as the judges award was the icing on the cake and I’d like to thank everyone who voted for us and gave us great feedback.

Stay tuned for more Hypermorph news soon…

Robocleaner out on Windows Phone

Finally Robocleaner is now available for download on the Windows Phone marketplace. Check it out, feedback welcome. There’s a “try” option to play the first 3 levels on each mode for free and the Online Leaderboards function in the trial mode too.

MS Store Link: http://www.windowsphone.com/en-gb/apps/06793bef-a8f3-4b25-a325-4e12b598f4df

As my first solo title that I’ve worked on it was a great learning process and gave me a good idea how tough it must be being a full-time indie developer, especially if your a one-man team doing design, coding, graphics and sound. It’s certainly encouraged me to continue and it’s a shame that XNA is pretty much being dropped in WP8 since a lot of the XNA specific skills I’ve picked up may not be much use in the future (without Monogame at least).

My aim for the next couple of semesters at Uni with time permitting, is to work on more mobile game titles, likely simpler ones (Shear Carnage) with less physics and AI coding. One thing I learned is that just because you have a cool path-finding or a realistic wall bounce algorithm, it may be technically impressive but it really doesn’t impact the game overall and it’s better probably to make games where more complex mechanics aren’t required to make the game fun. I do enjoy doing AI and the physics side of things but with mobile games, it’s better to get the game done ASAP and out on the market so people can have fun playing it. Next time I’ll be aiming to get two games released in the time it took me to make Robocleaner!

Robocleaner Update..

So, I’ve been progressing with getting my Robocleaner game on the marketplace (I’ve renamed the game from Sweepy Cleaner for originalities sake). It’s been taking a lot longer then initially I thought it would mainly because I wanted to completely redo the graphics and as anyone will find, graphics can be quite time consuming. On the plus side my knowledge of making graphics and using Photoshop and Illustrator has increased ten-fold.

Things I’ve added so far:

A menu system with options for muting sound and changing the control type from tilt to touch. Touch being useful if your not upright when playing. I also improved slightly my background image and removed the eyes from my hoover. Less is clearly more when it comes to hoover eyes since I think my Cyclopean hoover looks more bad ass then when it had two and actually it’s eye is now what used to be it’s nose :)

So far I’ve only made 4 levels out of 8. I’ve got the living room, bathroom, dining room and kitchen finished. I’m trying my best to make each room quite unique to the last and also slightly increase the difficulty as you progress, mainly by introducing more clutter and extra  stuff that harms you.

Bathroom

I’ve added Hazards which are like regular furniture except you can pass straight through them while taking damage e.g water, spilt coffee, broken glass etc..

Additionally a new little chap I’ve added which I’m quite pleased with is a Dust Goblin, he roams around the maps he’s on and if he comes into contact with any dust, he turns it into a Dust Bomb that he hurls at you, if it hits you, you take damage and you also die outright if you touch the goblin. He adds a significant challenge to the game and in later levels there will be multiple goblins, potentially of different types!

I’ve added decorative particle effects into some of the levels to add a bit of realism. In the bathroom for example, the bath tap is running and there’s steam and water droplets splashing onto the floor and on the kitchen map there’s a kettle with steam particles being puffed out.

Sometimes adding cool little things like the particle effects that don’t take much effort can make a nice difference to the polish of a game so I like to add them. You just have to limit yourself on some things otherwise the game would never get finished. Luckily the programming is pretty minimal at the moment since most was done for my course work (except the new stuff) and adding levels is just a few lines of code or less depending on what objects are present in it.

So there it is so far, hopefully I’ll get the other 4 levels done soon and can get it on the  marketplace asap with maybe an on-line scoreboard and time related scores for each level. It’s certainly a nice feeling seeing the game come together and hopefully not just be a uni coursework submission but an standalone fun little game.

Sweepy Cleaner – Windows Phone

I thought I’d finally get around to making a post on my blog and specifically concerning the thing that has taken up the majority of my time over the past week or so. Sweepy Cleaner!

This is a coursework project we had been assigned as part of the the Hull University Computer Science degree. We were given a spec and tasked with making a game plus extras via C# and XNA 4.0.

I decided I wanted to make as polished a game as I could that stuck pretty tightly to the design specification, but still add a decent amount of extras here and there. In the end I’m pleased with the finished product and really enjoyed making the game.

The toughest aspect of the project was the AI path-finding that I wanted to put in the game so that  in “attract mode” it guided itself around the furniture and collected dust of it’s own accord. This sounds simple but in reality it was the trickiest bit of programming I’ve probably done and let’s just say I won’t be bitching about dodgy path-finding in AAA games any time soon. I may actually make a separate post on this and include a dissection of the code I came up with.  I decided to initially look into an A* algorithm but I wasn’t sure how best to apply that to a game where things don’t move along a grid. So I decided to use static waypoint nodes that I manually placed around the level and then added them to a list, sorting them based on distance from each waypoint to the nearest dust to the hoover. I spent a long time trying to perfect it and although still not perfect, (I had to use at least one workaround) it performs convincingly enough with no furniture collisions and I’m very happy with it. I could later adapt it to make a “vs” mode where you have to race the AI hoover to collect the dust.

There’s only 3 levels in the game, I’ll hopefully add more before I get it on the Windows Marketplace.

Fingers crossed that my demo goes ok next Wednesday!

Here’s the artwork I did for the title screen, it does makes me think a 3D version of Sweepy Cleaner could be pretty fun!

Mass Effect 3: It’s art, oh yes

So for a while now I’ve been wanting to put some games stuff on here and so what better game to start with then Mass Effect 3, now I’ve finished it…well until I replay the end again to get the one I want!

Over the years there have been very few games that I have been able to emotionally invest myself in, all of them are RPG’s of course. Baulder’s Gate 1 & 2, Planescape: Torment, Deus Ex (original and HR) and finally the Mass Effect games. Nearly 50% of those are Bioware games and to me they have been the masters of game storytelling for years now.

Before getting into the game, I’ll mention a thought of mine on design that’s relevant to this topic:

What specifically is it about a game compared to another that enables me to A) Have the desire to get drawn into the game? B) Keep me there when I do?

After thinking on this, I feel I can pin-point it exactly down to two aspects which are more or less two sides of the same coin. A fascinating storyline for one and secondly, a world filled with believable and interesting characters that you care about. Anything else when it to comes RPG’s is really quite irrelevant when considering immersion, but that doesn’t mean the rest isn’t important; on the contrary this is the core difference between games and other forms of art medium, an extra facet that says you must not use just visual art and aesthetics, not just music and sound, not just cinema and story telling. The true greats and games I view as art are those that combine all these disciplines perfectly and create in my opinion the most rewarding form of art and entertainment. The key differences between movies and games are blurring as the years go on but the pivotal difference is obviously human interaction, and its this interaction in my opinion that makes the potential of games infinitely greater then movies. We are now at a point where games have the ability to rival the story-telling AND visual might that has always been firmly dominated by cinema, and in the last 5 years that gap has narrowed.

ME3 Story: 

I’ll start on the best aspect of the Mass Effect games, the story. The core storyline itself is excellent but not a masterpiece by any stretch, and anyone who has read their fair share of sci-fi novels will likely agree with this. The thing that Mass Effect does so right is the world or more appropriately the galaxy, which is easily one of the most detailed and believable science fiction settings outside of Star Wars, Star Trek and Dune and certainly when it comes to games, takes the crown.

The colourful arrays of alien species and their designs, the politics and relations between them and the myriads of intertwined histories and lore that have been created by Bioware are an absolute triumph and the games strongest asset. Does this alone make the game great? Not at all, but it’s what makes the series stand out, it’s what draws you into the game and keeps you craving for more and it’s also what makes the rabid fans judge ME3 so harshly when they don’t get the ending they envisioned.

I mentioned that the characters in the game are some of the best assets of the game and non other then the main protagonist herself “Shepard”. Yes, I write herself because I’m firmly in the “femshep” player category. A little on that point, Its the first time I’ve played a female in an RPG, and I did so because of the laughably bad voice acting on the male Shephard, and to be honest if it wasn’t for Jennifer Hale’s mind-blowing voice acting, I doubt I’d be into Mass Effect as much as I am, if you haven’t tried a renegade femshep yet, just do it, seriously!

I’ve grown quite attached to my character over the years and with probably 100-200+ hours of game play spent in such an engrossing series of games, making the right (and sometimes wrong) decisions, killing villains, liberating innocents, romancing blue aliens (read on), knocking out journalists not once but three times, stopping immoral scientific experiments,  discovering lost technology, exploring the depth of space, curing plagues, saving entire races from extinction, and of course not forgetting saving the entire frickin galaxy from the clutches of synthetic gods…not bad for a few hours of game play eh?

The unique aspect of Mass Effect and one of the best design decisions they ever decided to make was the feature of importing your character from the previous games and remembering your past actions. This has given the whole journey from ME to ME3 a feeling of grandeur that I had only experienced in Baldur’s Gate 2 prior, and of course books. Thanks to clever writing from Bioware, you do get the sense that Shepard has experienced more shit then any human ever should (untold billions of lives in your hand) and the character does seem to progress as the series moves on, highlighted extremely poignantly by the death of a child in the first part of ME3 and whom clearly leaves a scar on Shepard.

Even with all that lore and history Mass Effect would feel pretty dull if the NPC’s were generic and dull (Skyrim’s undoing) but thankfully the characters that join Shepard and even a few who don’t (The illusive Man) are full of depth, emotion and intrigue and quite a bit of humour. My characters lesbian romance with Liara, an Asari (all female blue alien species…yes I know)  which continued from ME1 just goes to show how amazing this game is if the sentence I’ve just written doesn’t equate in-game to something as ridiculous as it sounds on here, but in fact after completing it in ME3, it is amazingly executed with maturity, depth and is really quite touching *sniff*, by all accounts it’s one of the better ones available in the game and ends with a cool spock-esque mind-meld scene.

10/10

Graphics:

Graphically despite the game looking and running beautifully, I have some issues here, some that took me a fair few hours to get over. Animations. For some unfathomable reason they decided to make run animations utterly ludicrous and I have spent nigh-on 50 hours watching Shephard run like a gorilla. It’s obvious they also used the same run animations for the male Shepard as the female, so yeah, she runs like a butch heffer who’s just given birth. It’s not too noticeable in the missions in full combat gear but in casual clothing in-between combat sequences it’s pretty awful. I wouldn’t complain, but it was absolutely fine in ME 1 and 2, so why ruin in now?

The cinematography in the game is fantastic, with some incredible set pieces involving colossal Reaper’s raining destruction down on worlds and the most epic fleet battle I’ve ever seen (the whole galaxies fleets coming to Earth’s defence), quite literally jaw dropping.

8/10

Music and Audio:

Another high point of the series, the music previously done by Jack Wall in ME and ME2, didn’t have him this time around but quite honestly, the music is even better. Music in games for me is an entirely separate subject for a blog post which I’ll do at some point, but  one thing I strongly believe is the soundtrack should never be underestimated. Even people who are not audiophiles can often be emotionally or otherwise benefit even subconsciously having more fun from a good soundtrack. Looking back, just about ALL of my favourite games had great scores. Game scores really should get more credit and attention in the industry but that’s just an irrelevant point to this post. ME3 music rest assured adds a perfect blend of tension, adrenaline and melancholy and is quite appropriately epic.

The games audio has noticeably  improved as well and you can tell they have really gone to town on the weapon sound effects, it’s certainly a game I’d unquestionably recommend use of good headphones with and there’s few games I’ve played with as satisfying “pew-pews” as this. Sniping a Cerberus trooper in the head with a Black Widow V rifle is as good as it gets I think.

10/10

Game-play:

I won’t spend much time on this since ME3 plays more or less as the others. You know what it says on the tin and you get what you expect. It’s a little more “shooty” this time around but that’s no bad thing if it’s still fun but I do have some niggles. Firstly, the journal and quest log update mechanic is just useless if not nearly absent entirely. The first time you get a task it makes a note in your journal as you’d expect but some tasks have multiple progressions to them involving finding different people or objects but the journal is NEVER updated, ever. So if you missed the audio prompt from an NPC, its pretty much time to google it since the on screen nav points seemingly appear at random and very rarely on the citadel. It’s not a show stopper, if anything it gives you more time to explore and soak up the great atmosphere of the game but there’s only so long your going to look for an NPC without getting a little frustrated, that’s a nice way of putting it.

Reaper’s chasing you if you scan too much on the map screen is the other annoyance, but then again ME have always had these annoying meta game issues. ME1 had exploring planets in the vehicle (which I liked but most appear not to), ME2 had the most annoying one I think with the mineral harvesting, it really was less fun then Mine Sweeper. ME3’s meta game is annoying but can easily be exploited by leaving the system and endlessly re-entering the system until you have everything…just seems a little crappy and not very well thought out, but again it’s not serious and it’s picking at what is otherwise great game play

9/10

Summary:

All in all I had an absurd amount of fun playing Mass Effect 3 and all the others in the series.The end is a little bitter-sweet. It’s great that I’ve experienced it all and not for the last time I’m sure, but it’s that finishing a good book feeling that you rarely get in games that leaves you a little sad and that I won’t experience the Mass Effect galaxy like it was with unknowing eyes via my feisty/slightly unstable Shepard that I’ve grown rather fond of. That sentence there is likely the cause of the fury over the endings, it’s peoples unwillingness to let go of what they have known and loved and to make way for change in the storyline as per Bioware’s wishes. Personally, if that’s how the story was designed, who am I to change it? And if they do alter the ending as it is rumoured, it’ll never have the same impact.

It’d probably keep me awake at night trying to decide if any Mass Effect game tops Baldur’s Gate 2 or even Deus Ex 1, but when the ME series is taken as a whole they are perhaps greater then the sum of their parts and are certainly up there amongst the gods of gaming. A real achievement in gaming, this ones for you Shepard…

9/10

Mass Effect in a word? Masterpiece.