Saturday, 1 March 2014

Blog Moving!

I've decided to move my blog to something a little more manageable than Blogger. All old posts will remain here as long as Blogger survives, but anything new will be posted over at:

 
See you there!

Tuesday, 17 December 2013

1GAM December: Going Down

My final One Game a Month entry for 2013 came from December's Ludum Dare jam, and I teamed up with Paul for the last time this year.

We went into this LD with absolutely no game ideas, and we also had to cut the jam short by 24 hours, fitting our effort into two days rather than the usual three.

The theme was "You Only Get One", and after much scratching of manly beard on Saturday morning, we came up with the idea that you're on a plane that's crashing and there's only one parachute. We're just a bundle of laughs, we are.






We injected as much humour into the mix as we could, and created a tight, fun game that plays for little more than a minute each time, but keeps you going back for one more go.
 

 
And that wraps up my One Game a Month effort for this year. I've decided not to take part in 2014, although I will still be taking part in as many LD jams as possible while working on my next big game. I'll be posting more about that in the new year. I also plan to do a more detailed post about what I've got out of 1GAM this year, as well as putting out at least one vide as a wrap-up.
 

Tools Used

  • Monogame / XNA
  • Visual Studio 2012
  • Tiled
  • Photoshop CS6
  • Fireworks CS6
  • Audition CS6
  • Spine
  • Texture Packer


Clockwatching

We had about 40 hours to make this one.


Downloads

Windows. If it doesn't run, you may need to install OpenAL.
And Linux. This has been tested on Linux Mint 14 (Cinnamon), you may need to install libSDL-mixer (sudo apt install libsdl-mixer1.2). If still no joy, run from a terminal (mono GoingDown.exe) and copy/paste the output into a comment below.
  • Going Down - Linux .tar.gz

Monday, 2 December 2013

1GAM November: DungeonFall

I decided to take part in Github's Game-off 2013 competition this month. The competition is limited to web-only games and as I'd become familiar with HTML5 development, I figured it was a good fit.

The theme was "Change", which was also the theme of this month's 1GAM so that worked out quite well. I went with an idea I'd had kicking about for a bit which was to make a dungeon crawler where the dungeon is built from pieces that fall like Tetris blocks. Not a completely original idea, but it fit with the theme (ever changing dungeon) and I felt it was something I could implement in the three weeks of November I had left (I taught an XNA/Monogame workshop on the 11th so spent the first week of the month preparing for that).



I used MelonJS again, but this time I wrote a lot of custom code and really only used Melon as far as rendering and basic entities.

An AI-controlled Hero explores the dungeon that you create with the falling blocks, which consist of floor and wall tiles as well as exit tiles, monsters, chests, weapon racks and health potions. The Hero will automatically fight the monsters that get placed, loot chests and other items to gain stats, and find its way to the exit once the dungeon is complete.

The Hero gains XP for exploring, so the larger an explorable area the player can create, the better.







I ran out of time before I got to add sounds or music (as usual), and I also wanted to spend time creating some combat animations and a particle engine as well as adding more things to improve the game's longevity. I'd probably have been happier with the game if I had that extra week to work on it, but I'm still not sure the base idea is any good.




Next month, for my final 1GAM entry of 2013, I'll be back to my Monogame comfort zone and creating an entry for Ludum Dare 28.

Tools Used

  • MelonJS
  • Visual Studio 2012
  • Photoshop CS6

Clockwatching

At least 40 hours on this one.

Downloads

HTML5 again - no downloads! Clicky to play in most browsers!

    Monday, 4 November 2013

    1GAM October: Tilly's Horrible Halloween

    This month, I actually went with the theme for One Game a Month which was "Candy". As it is October and Halloween, I decided to try my hand at a Halloween-inspired game. As time was short this month, I re-used graphics from some previous titles: Dreamland, my still-on-the-back-burner Team Mango RPG with sprites drawn by Leon; and Hero Bash, my January game from which I took the basic platform tiles that were drawn by Paul.



    I also decided to get out of my comfort zone and follow through with one of my aims for One Game a Month, which was to make use of new/alternative technologies, engines and tools. In this case, I used HTML5 with the MelonJS engine.






    The game itself is a very simple platformer which takes inspiration for the original Great Giana Sisters game. The main character is Tilly, who makes the leap from the Dreamland RPG to become an arcade platforming heroine. The idea is to collect candy and beat up the denizens that also emerged from the world of Dreamland.


    Tools Used

    • MelonJS
    • Visual Studio 2012
    • Photoshop CS6
    • Audition CS6

    Clockwatching

    15 days, on and off. Maybe 30 hours.

    Downloads

    The best thing about HTML5 games - no downloads! Clicky to play in most browsers!

      Thursday, 3 October 2013

      1GAM September: Voxel Shooter

      I'm so uninspired right now I can't even think of a name for this month's game!

      The plan was to create a side-scrolling shooter in the vein of R-Type using the voxel engine I debuted during last month's Ludum Dare. I succeeded in doing so, but as time went on and I got distracted by other things the game fell by the wayside and I haven't finished adding all the content I wanted.


      So what I'm throwing up this month is a very rough single-level alpha that's short of at least one more enemy type, a boss fight and sound effects. It's also pretty jerky as there's a whole ton of optimization (or indeed, re-writing) needed on the engine itself to support such high-speed games with voxels being destroyed all over the place. Another reason that I kind of lost interest.










      You can play the game up until the end of the level. There's no player death and no "completion" as such, the level stops scrolling and that's your lot!



      Next (this!) month's game will be something tiny as I'm also planning an XNA/Monogame/gamedev 101 workshop that I will be teaching in November. I'd like to look at an HTML5 framework this month if I have the time.

      Tools Used

      • Monogame / XNA
      • C# .NET
      • Visual Studio 2012
      • Photoshop CS6

      Clockwatching

      20 hours, maybe.

      Downloads

      No builds for other platforms this month!

      Windows (DirectX Monogame build)

      Saturday, 31 August 2013

      1GAM August: Spatium Secondorum Decem

      The end of August saw Ludum Dare 27, and Paul and I participated in the 72-hour Jam competition for the second time. Since finishing work on Hunted, I've been working on an all-new voxel engine that I intend to use in a couple of future games. Though still in its infancy, it was just about mature enough to use in the Jam

      The result: Spatium Secondorum Decem, which roughly translates to Ten Second Room with my humble apologies to any Latin nerds that may read this! The theme for Ludum Dare 27 was indeed "Ten Seconds", and we had a basic idea of the game wanted to make before the theme was announced.


       






       
      The game is a mish-mash of a number of games including Bomberman, Smash TV, Gauntlet and Binding of Isaac all wrapped around an idea based on the film Cube. Here's a short trailer of the game, with a few enhancements that were made post-competition:
       

       
      The engine itself is possibly the most exciting and technical piece of programming I've undertaken, and I have a game planned for next year that will be my return to multi-month release-worthy games.
       
      I will more than likely make use of the engine for one more 1GAM entry, probably September's - but it will be completely different to Spatium, and nothing to do with the big game I have planned.
       

      Tools Used

      • Monogame / XNA
      • C# .NET
      • Visual Studio 2012
      • Photoshop CS6
      • Audition CS6

      Clockwatching

      72 hours, baby! (With maybe 3x6 hours sleep ;)

      Special Thanks

      • Paul, my jammin' buddy!

      Downloads


      Ludum Dare Jam competition entry


      • You can grab the Jam entry version here for Windows, OSX and Linux.

      1GAM Post-competition enhanced version


      Windows. Includes OpenAL redist to install if the game doesn't run.
      • Spatium Secondorum Decem - Windows .zip

      Mac, hopfully coming soon!
      • Spatium Secondorum Decem - Mac OSX .zip

      And Linux. This has been tested on Linux Mint 14 (Cinnamon), you may need to install libSDL-mixer (sudo apt install libsdl-mixer1.2). Run from a terminal (mono SpatiumSecondorumDecem.exe). If it doesn't run, copy/paste the output into a comment below.
      • Spatium Secondorum Decem- Linux .tar.gz

      Sunday, 4 August 2013

      1GAM July: Hunted

      July's game is another exceedingly ambitious title, but I'm pleased to say that this time it has mostly come together. Hunted is a top-down shooter that features a large procedurally-generated "open" world, day/night cycle, vehicles, plenty of guns, enemy compounds to infiltrate and nasty Generals to eliminate.

      Hunted takes inspiration from a multitude of games including the Amiga games Hunter and Firepower (prequel to Return Fire), with a smattering of Far Cry thrown in for good measure. The player is a special forces dude of some kind that is tasked with the elimination of three (randomly placed) enemy Generals, within the three-day mission time limit.

      To achieve that goal, the player must find and infiltrate enemy compounds by collecting maps from dead foes that reveal the nearest compounds' locations on the in-game map. Occasionally an enemy will drop a map that pinpoints a General's location.

       






       
      There's a lot to write about the work that went into creating Hunted, not least of all the terrain generation. I've never attempted procedural generation on this scale before. I made use of Perlin noise to generate the archipelagos of islands which is a 1000x1000 tile world. Each tile is 100x100 pixels, making the total world size 100,000² pixels.

      After the islands are generated, I use a second round of noise generation to create the jungle/forest that covers the islands inshore. I then use a simple iteration over the tile array to generate detail tiling, such as the seams between water and sand, and sand and grass. There's more work afterward to generate the compounds, which must be placed at least a certain distance apart from each other, and contain buildings which are also randomly generated.











      Aside from world generation, there's a whole AI system in place that works a little like GTA's 5-star "aggro" system. The player's "Hunted" level rises whenever he is spotted (or heard) by an enemy, and cools down when the player leaves combat. The enemies use a "last known position" system to "find" the player, and spawns and alerting become more aggressive the higher the player's Hunted level becomes.

      Vehicles make copious use of camera zooming, especially the helicopter which uses a zoom and offset shadow to give the effect of gaining height. When a player enters a compound building, the roof fades away to reveal the internals. In the day time, the ambient shadows of trees, walls and objects move according to an east-west sun position. At night, a pixel shader is used to cast torch light and shadows.
       

       

       
      At the time of posting, Hunted needs another couple of weeks to make it into a polished game, but I'm releasing it early as an alpha to fulfil the One Game a Month challenge for July. I'll be spending the next couple of weeks polishing it and releasing a final version mid-late August.
       
      August's game will be the result of Ludum Dare 27, which occurs on the weekend of August 23rd-26th.
       

      Tools Used

      • Monogame / XNA
      • C# .NET
      • Visual Studio 2012
      • Photoshop CS6
      • Audition CS6
      • Tiled


      Clockwatching

      A whole month of spare time, pretty much full steam ahead. At least 100 hours.

      Special Thanks

      • Paul, who once again came through with some awesome spritework.

      Downloads

      1GAM Alpha version

      The 1GAM alpha is an unfinished but playable version of the game. The final release will hopefully be posted in a couple of weeks' time. Here's a list of missing stuff/known issues:

      • Several graphical items are temporary or missing, including: sprites for item pickups, some icons, intermediate water/sand/grass tiles
      • Loading and saving is not implemented
      • No intro/main menu screen
      • No win/lose conditions: The finished game will have a limited mission time, and will end when the time runs out or  all generals are eliminated (the player will also have to find an extraction point to complete)
      • Some missing and/or temporary sound effects
      • Pathfinding and combat needs polishing work
      • Game is unoptimised, resulting in frame hitches and slowness in places. Some of that is also due to using the Windows GL MonoGame libraries, as opposed to DirectX.
      • Joypad controls not implemented

      Windows. If it doesn't run, you may need to install OpenAL.

      Tuesday, 25 June 2013

      1GAM June: FShoot

      This month I chose once again to do something new and took it upon myself to dabble with a little F#. This is the first time I have used F# in any way, and the first time I have used a functional programming language.

      I ended up shoehorning OO code into F#, the same way I'm sure many C# developers do when they first look at F#. I say shoehorning because that's how it felt. Even once I had been given a crash-course in functional development by Matt, I still felt that F# wasn't for me. Much of my issues come down to trying to fit a game, which is essentially one big state engine, into a language which is inherently stateless. I did, however, begin to find the syntax of F# rather charming and I could perhaps see myself employing it down the line - just not to write core game engine code.






       

      FShoot itself is a simplistic space-invaders clone. Not much to write home about, other than I chose to make the game using just particles. Every single object on screen is a particle or is constructed out of many particles. I think it makes for a cool aesthetic.
       

       
      I haven't decided what I'm going to do for July. I think I'm running out of ideas, which is a really bad thing for someone who identifies themselves as a game developer. Still, I'm super chuffed to have made it this far (six months, six games!) and I'm not going to give up easily.
       

      Tools Used

      • Monogame / XNA
      • F#
      • Visual Studio 2012
      • Photoshop CS6
      • Audition CS6


      Source Code

      Available on Github


      Clockwatching

      20 days, very much on and off. I'd say ~30 hours total.

      Special Thanks

      • Matt for the F# pointers.
      • Dave Thomas for the Monogame F# template
      • James for the Mac port!

      Downloads

      Windows. If it doesn't run, you may need to install OpenAL.
      Mac! A first for my 1GAM run this year. Thanks to James for the effort! Apparently tested on an iMac, but leave a comment if you can't get it to run.
      And Linux. This has been tested on Linux Mint 14 (Cinnamon), you may need to install libSDL-mixer (sudo apt install libsdl-mixer1.2). Run from a terminal (mono FShoot.exe). If it doesn't run, copy/paste the output into a comment below.
      • FShoot - Linux .tar.gz