HighJam #1 – Berzerkatron

UPDATE: The results of HighJam #1 are online. Berzerkatron got Second Place in Theme and Third Place in Graphics! Thank you to all those who have provided feedback. I have since updated a post-jam version of the game and to celebrate the results a new update has been uploaded. You can find out more on Itch.io.

As part of my effort to participate in one game jam a month, the month of February is HighJam. This is the first game jam is organised by HighSight Gaming, a Twitch Streamer who specialised in Indie Games with Indie Insights for a while (a show which Gemstone Keeper appeared twice on), although now it’s been replaced with a new show analysing classic games, In Hindsight.

The theme of this jam was Atari Remakes, specifically to quote the description: “you must reimagine any Atari 2600 game of your choice”. One of my favourite 2600 games made by Atari was Berzerk, originally released at arcades in 1980 and was ported to 2600 in 1982. While the rules stated that I was not limited to the graphics, sounds and mechanics of the original, I felt like doing a “modernized” look wouldn’t do so well. The concept in my mind was to do a reimagining that would be in the style of Jeff Minter. It’s most likely due to the man’s past work, I had an image in my head of a “Berzerk 2000” of sorts, with a psychedelic feel, visually creative backgrounds and random sound samples.

Click here to go straight to the game!


Here is how I developed two of the most interesting concepts of this game:

The Level Rotating Transitions

This was a feature I was really keen to make, and once I found it was possible and implement, I wanted to keep silent about it so people can witness it while playing and see what their first reaction to it was, and when watching HighSight’s Playthrough (Skip to 01:54:30) I think it’s safe to say it worked. The initial version of the cube shader was by gre on gl-transitions.com, a website I’ve used recently for Gemstone Keeper.

The shader itself fakes perspective by skewing both textures so it appears thinner when further away, and moves both so it appears like a cube.

I modified the texture to remove the reflection at the bottom as it seemed unecessary and added a variable and functions so it could not only rotate it clockwise in the Y-Axis for horizontal transitions, but rotate it in the X-Axis for vertical transitions, it was then a case of using a uniform variable for me to define which direction I want the shader to rotate towards. You can check out the modified shader in the Assets folder of the game.

Randomized Levels

Funnily enough, having the levels be randomized wasn’t out to be creative but because I couldn’t think of a quick method of creating a huge array of level designs (the original Berzerk had somewhere in the range of 1024 different level variations!).

When looking through the original Atari version, I figured the levels were all configured into a 3×3 grid (I realised I was incorrect afterwards, as the Atari 2600 had 4×3 grid levels and the Arcade version had 5×3 levels), and then by defining each segment to a binary number I could determine which segment should have walls in either or all four directions.

I’d then construct a path between the player’s starting segment and the segments of each available exit, for the the remaining segments that have no value set, I’d use a random value. This last step had to be constrained as to have as few empty rooms as possible. However, as the above gif shows, not all levels are fully explorable. I also use the grid to determine which areas enemies and civilians should appear in.

Backgrounds

Unfortunately, I didn’t have the time to plan out or work on the brilliant background effects Jeff Minter develops, but GLSL-Sandbox is an excellent gallery of GLSL shaders that render brilliant visuals without any additional assets. I decided to pick ones that were monochromatic and were visually interesting without pointing too much attention from the game itself. I also used my multipass shader system to apply a shader that added a diamond gradient and another that made it possible to crossfade between different backgrounds.

Civilians

Interestingly, the idea of civilians to rescue (idea taken from Robotron and Llamatron) was kind of a last minute idea. I added this part of the game to encourage players to explore the level and add pressure to spend more time in the level while involving Evil Otto.

I did run out of time to implement some things I wanted like particle effects, but I’m happy I managed to get a playable version done. I did take one or two days off to have some leisure (and charity work) but I feel this is worthwhile. Hopefully enough people will vote and leave a good rating on this game.

New Years Resolutions

Good evening everyone! It’s no doubt that 2017 has been a hell of a year following what happened in 2016, but we fought through and we are still here fighting! This year has also been huge in terms of game development for me. I managed to finish SEVEN games this year, six from game jams such as #RemakeJam, PROCJam, Jamchester and Three Ludum Dares!

https://img.itch.zone/aW1hZ2UvMTYzMjc3Lzc1MjE2Ni5naWY=/315x250%23c/L0i8g2.gif  https://img.itch.zone/aW1hZ2UvMjAxMDM1LzkzOTE3OC5naWY=/315x250%23c/q5QpUK.gif

The seventh game was the nearly two year project Gemstone Keeper, which made an initial release on March 31st earlier this year and has since had numerous updates, although grouped together as four updates. The most recent of which was 1.0.4 that was announced on 21st of December. The game is currently on part of the Steam Winter Sale, and is currently 50% off!

Gemstone Keeper also had a second smaller release as it was ported to Linux, the build being available on Steam in June. I documented the progress to port the game in three blog posts (part 1, part 2 and part 3), and got a small amount of coverage from dedicated linux gaming websites as a result.

There was also an accomplishment in travel as well, 2017 was the year I went to both GDC in San Francisco and Develop in Brighton for the first time! Both events were great opportunities to meet up and socialise with fellow game developers and listen to talks from great minds such as Ken Perlin, John and Brenda Romero, Jordan Mechnar and Tim Sweeny.

As for 2018, I want to set some goals. As with many New Years Resolutions, chances are they will be forgotten and unaccomplished, but considering I managed to lose weight this year, I might pull through with a bit of committment.

First one is that I want to take part in at least one game jam a month, meaning I’d be finishing 12 games next year. I like the challenge and creativity from game jams, but this year I feel like six isn’t enough. At least spacing out the game jams to one a month will give me time to find a weekend or so to get my head down and finish something.

Second one is to get a game on console. It’s not like I haven’t bothered trying before (I’ve reached out to Nintendo about developing Gemstone Keeper for the Switch to no avail), but it would be nice to expand my work beyond desktop PCs and web development. Porting my own game to Linux should show how when I put my mind to it, building a game to another platform by hand is possible, and it would be great to show I can do that on one of the three main systems.

Thanks for reading and have a happy new year everyone!

The More You Have, the Worse It Gets

Ludum Dare 40 took place last weekend, the theme was the title above. Honestly it wasn’t the theme I was hoping for, but in the end, I took an idea I had and adjusted it slightly to work.

The idea I had was that a single level would slowly get corrupted and change, you can shoot away the corruption, but touching the corruption would kill you. This already could fit the theme quite well, the more corruption in the world means the worse it is for you. I wanted players to move around a lot, so I had the additional goal of collecting glitch boxes, which would create more corruption over time.

I used HaxeFlixel to develop the game, as it was bread-and-butter for me in game jams such as Ludum Dare, especially when there is not much time to work on an idea (I had spent the entire Saturday out with friends for winter festivities, all I did was write notes on what the idea would be, so in all I only had around 11 hours to work on a game).

b056


To get the corruption to update and move around, I used the tilemap system and updated the grid with Conway’s Game of Life algorithm, that way it gave the impression of mutating outwards or dying out depending on the numbers. Fortunately, with recent updates to HaxeFlixel, you could do collision response based on specific tiles, so it was easily possible to remove tiles and change the map when bullets collided with it. The extra artefacts also use Conway’s Game of Life. although the grid is 4 times larger than the main corruption grid.

The artwork was done in Photoshop, although it was a very simple and rushed job. The “corrupt” graphics was a multicoloured character set that I had to create and tweak by hand to fit into a 10×10 pixel grid.

The music was a combination of cgMusic and LMMS, quite a good combo to have because it meant I let one program generate a music set, then import it into LMMS as a midi file for me to set instruments (using soundfonts), effects and tweak the melodies how I like.

I managed to upload the game with around 30 minutes left before the compo deadline!

b05c

On Tuesday I fixed that timer, which appeared broken when you reached a minute because I messed up how the string was being built. It took a few uploads for those changes to appear, something that kind of frustrates me about HTML5 and how web browsers will not always clear out the cache if the content has been changed.

GIF

Feel free to play the game on itch.io as well as rate or comment on the Ludum Dare page.


This wasn’t the only games jam I did this winter, I also took part in PROCJAM, where I built a planet generator. It’s not my best work to be honest, although I was able to work and improve my 3D OpenGL rendering in the Vigilante Framework.

New Years Update

It has now been one full week of 2017, and a lot of people (including myself) have slowly gotten back to work. Since Gemstone Keeper has been getting close to release, I’ve started work as soon as we can to get stuff done.

Before I get into Gemstone Keeper, I worked on a little game for Ludum Dare 37 where the player is stuck in a porta-loo balancing in the air. That game was Danger: Mondays, and after two weeks of voting the results are in. The results for this Ludum Dare were definitely beyond my expectations. While the amount of submissions for the compo were smaller compared to past years (901 compared to 1117 at LD35), that doesn’t devalue the fact that Danger: Mondays achieved a rank just a few places shy of Top 25 in the Humour category of all categories.

capture

Reading all the comments, I was glad people found the concept amusing, but I’m completely grateful at the how well I did this time around. Thank you to everyone who voted during the day. Apologies for not posting about Ludum Dare any sooner, but I was working on a bigger game.

To be a bit more descriptive, Boss Rush will have the player beating all five bosses as fast as possible, they are able to set the stats and weapons of their explorer before hand and they regain some of their health after defeating each boss.

Score mode allows the player to go through the caverns, and like the daily run mode, will try and get the highest score possible by collecting as many gemstones and materials as they can on a single run. This time however, the player is free to set the seed they want, which will effect all aspects of the game from the levels, player stats, which weapon they have and which items they’ll have at the start.

One of the benefits of working on these game modes (from a developer’s perspective) is that we go through all the main game modes again to not only ensure they work through both the main game mode and these smaller game modes, but to find any bugs or issues that was missed out the first few times.

Another update we’ve done is on the gemstones themselves, namely how they are rendered. Originally, the Gemstone Geometry was generated using a Gemstone Mesh Generator that was developed at PROCJAM, and then rendered using a custom software approach using SFML (you can read a comprehensive write up of this on my websites in part 1 and part 2). However, over the last week of December, it was decided that it was time to update this for performance and to improve quality by changing the rendering process to an OpenGL Hardware render approach.

Below you can see the difference, on the left is the software approach, and the right is the new hardware approach:

This weekend I’ve been playing around with post-process effects, as it would be nice to have some visual effects that would appear through the entire game, although it would be possible for the player to disable certain effects if that want to. To pull this off, the framework now has a multipass post processing system where it’s possible to disable certain effects.

This allows us to apply multiple post process effects at once, and allows us to add the options we need to allow players to enable/disable certain ones.

CRT Shader

Bloom Shader

This is only a small sample of what is being planned, leading up to Gemstone Keeper’s release on March 31st 2017. I’ll also be attending London Gaming & Anime Con in early February and GDC in San Francisco later in the month, however the latter will just be as an attendee.

Here’s to 2017 being a successful year for many people!

GBJAM, Talks and Progress

Over the last month I’ve been working day and night, and having some fun in a few places as well.

From October 1st to October 10th was the GBJAM5, the games jam where the theme is the original gameboy. While the aim is to make a game that could play on an original gameboy, the only rules that matter is the resoluton being 160 x 144 pixels and only using 4 colour graphics. I’ve been taking part since the first one back in 2013, and I’ve only missed GBJAM2. It’s a jam I love because it’s small, I love the restriction of the game’s size and graphics, plus growing up with a Gameboy Color means I have a bit of nostalgia for the system.

Despite the games jam lasting 10 days, I was going to spend the weekend in Dublin so I could spend some time with my sister, who’s been travelling around Africa for a few months. I decided to work on a really simple game idea, a block moving from start to finish, avoiding some obstacles on the way. The idea ended up being so simple it took me the first day to get basic graphics moving on the screen, some obstacles and a palette swapping system. I was able to use the rest of the time updating the graphics, adding a few more objects like locks, keys and bouncepads, as well as a transitional effect and some other screens to make the game feel complete and authentic.

The end result was MonoCube, an action puzzle game where all you have to do is get to the end.   During the development process I got a surprising amount of attention, and even after submitting the game early I got several comments, the game ended up getting 7th place in gameplay! You can check out the game here.

On November 8th, I will be speaking at the Digital Technology Conference at Stoke Campus, Staffordshire University. My talk will be about Indie Game Development and the Steam Greenlight process, on what I did to get Gemstone Keeper greenlit and offering my advice. This will be the first time I’ve gone to the Stoke campus as a Graduate, and I look forward to seeing what the campus is like since the games and computing departments all moved from Stafford earlier in the year.

Now I’m going to return to Gemstone Keeper, I’ve got one planned boss remaining to work on, and I’m also focusing some time on the audio (both music and sound effects). In the meantime, I’ve updated the game’s titlescreen, as I felt the original could have had a more authentic layout, as well as some improved scrolling for the background.

Jamchester 2016

Last weekend I took part in Jamchester, a games jam that took place in Manchester (obviously) at The Studio in the city centre. What makes this games jam different from the other game jams that take place on-site is that this is considered a “professional game jam”.

Unlike student game jams (like Staffordshire’s Global Game Jam or University of Hull’s Three Thing Game) or amateur game jams (like Ludum Dare), Jamchester is a games jam aimed at professional game developers, particularly the indie game studios that take place around the Greater Manchester area. While there were some student teams (and a student category), the majority of entrants are all professional game developers with a variety of experience in the games industry.

I was encouraged to go by the team at Desk Dragons, and managed to get one of the last tickets to get in. I managed to leave work early in order to get to Manchester before the jam began, and I was amazed at how well organized the jam was. Every table had a branded notebook and “survival kit” containing shampoo, wipes, toothpaste with a toothbrush. There was a schedule with food provided all day with buffets and even a BBQ in the late afternoon. Almost all of this was possible with the amount of sponsors, as the money from the tickets went to the charity Special Effect.

Continue reading

Grow Trees… Or Something – Ludum Dare

So this is something I didn’t expect to happen, around two weeks ago was Ludum Dare, where we all had only 48 hours (or 72 for jams) to develop a game, however because I had plans to go to a party that was some distance from home, I had much less time. Despite that I still managed to finish something, although honestly was disappointed I didn’t have much to show, so I could go and vote on other entries.

You can play my entry for Ludum Dare 34 here, but here’s my post mortem as written on the Ludum Dare website.

Continue reading

Feeling Superstitious?

I would make this my obligatory “I’m in” post, but I thought I’d make this a bit fun and tell you some weird or crazy fact when it comes to me and game jams, and in particular Ludum Dare: I’m cursed.

Now here me out, I am aware this sounds weird and possibly crazy (because it is), but even if it’s just a sheer coincidence or just bad luck, there is an unusual pattern that has occurred whenever I take part in game jams, and this has been happening through most of the game jams I’ve taken part in since 2013.

The “curse” goes as follows: Every game jam with an even number will either lead to no completion or failure.

That’s not to say that the jams with odd numbers have lead to roaring successes but the majority of my game jam participations which lead to finished and submitted games and some have had much more positive reception than I’ve hoped for, which is saying something for someone who hasn’t (yet) reached the top 100 in any Ludum Dare category. Heck, on my own Ludum Dare author page there are only entries from odd numbered LDs.

So if you are interested, I will show you my evidence and also add in some lessons that were taken from them.

Ludum Dare 28:

Most of why this jam went wrong for me can be summed up in the post mortem I wrote. The short version was that I was collaborating with another person, and we left pretty much everything from what tools we would use, to our game jam idea to the last minute, and as a result we made an unfinished game that we felt embarrassed to keep online so I reached out to Ludum Dare to have that game removed. I don’t have any criticism to give Code_Assassin, but we pretty much agreed that if we were to collaborate again, we’d definitely need a week or so to prepare what games we could make and what tools we would use.

Lesson: Prepare well in advance.

Ludum Dare 30:

So this one I did announce I would participate, and I was joined into a team this time. So how come I didn’t submit a game at this one? Well the answer was that a game was made, and submitted by the other programmer, LiquidBrewing, the game being Cardboard Giuseppe. However as you can see, no one voted for it, and only two comments, reasons why I’m not so sure. During development there were some issues, namely that one of the artists dropped out (meaning I ended up doing some artwork in order to finish the game up) and it didn’t help that I was away on Friday and Saturday. I guess it wasn’t a surprise that the majority of the code that I wrote never got used in the game.

Lesson: Leave some days free to work (especially in teams)

Ludum Dare 32:

I couldn’t participate in this one, although I cannot find a reason why. I can recall telling people I could not take part because I was going to be away somewhere, but I cannot recall what event prevented me from taking part.

Global Games Jam 2014:

Just to show this doesn’t just occur at Ludum Dare, here’s Global Games Jam. I’ve participated at GGJ for three years running and 2014 was the only year that had an incomplete entry. This one had a much larger team of seven people, and yet the reason we never finished was once again, down to tools. We all agreed to use Unity, a great choice if it wasn’t for the fact that most of us never used Unity before, and our venue actually had rooms with didn’t permit the use of Unity (although Unreal Engine was accepted). It was a shame, since we had an idea of an RTS where the visuals and language of the game would depend on what side of a revolution you chose (kinda like Command and Conquer, now that I think about it). On the plus side, I managed to write a sophisticated and fully designed graphical user interface, just a shame the gameplay never became fully realised. I later wrote a post mortem of the jam so you can see the full details of what happened near the time it occurred.

Lesson: Use and prepare tools you know how to use.

So whatever reasons of this, I’m still taking part in this LD, even if it’s number 34. Whether or not the incidents above are the cause of an actual curse, and these aren’t the only ones, I still enjoy the learning process and hard work I put into making small and quick games every year. I look forward to seeing what cool stuff gets created and I hope, despite already having a planned trip to London…Ah well, going to London to see friends during a Ludum Dare didn’t stop me at LD31!

Ludum Dare 33

Ludum Dare, one of the largest online game jams, has posted the results of every competition and jam entry made, a staggering 2727 games! You can check out my entry below if you haven’t seen it yet, for which I have included my results:

Embedded image permalink

So if I compare with my last entries to Ludum Dare, the average of scores have shown their gradual increase (2.47 – 2.86 – 3.17 – 3.31), and I must praise Lyserdigi for the music to get a such good audio score.

I’ve had a load of fun developing this entry, which I’ve gone into detail in a post mortem. So during the three weeks after submissions had reached the deadline and tried out and voted on as many games as I can, which isn’t easy since I started a new job last month, and I have no idea how any person could vote on over 2700 games in three weeks. Regardless, I’ve managed to find my favourites, found through recommendations, some friends or by random. So to end things off, here are my favourites:

Escape from Twump Tower

Honorary award for catchiest music track in a LD game, this is a very colourful game for such a topical storyline. Music is really catchy and I love the Megaman approach.

Intergalactic Love Machine

I love the dialogue and the text options, this is a really neat idea to base the theme on and the design of the monsters are really well made, fitting with the individual characters.

R-ADIUS

Very well made, I like the strategy involved in planning how to overwhelm the player ship to make it lose all its lives. I hope MrTwister expands this to give some more level and boss varieties, since I managed to beat the player after three rounds and the game just looped around.

Unsolicited

Brilliantly simple and novel concept, definitely liked the level of micromanagement you have to pull off in the later levels.

A Shadow In The Night

A very well polished puzzle platformer, with a unique jumping mechanic. Really good take on classic movie vampires with a great art style!

#GBjam, Game Development and Work Updates

I’m back and ready to update everyone on what’s been happening since I went to Japan last month, which was an awesome holiday where I got to go to the cities of Tokyo, Kyoto, Osaka and Sendai, with highlights including seeing foxes at the Zao Fox Village, walk around Akihabara’s arcades, game and electronic stores, dressing up as a Samurai, going to the Ghibli Museum and Nintendo’s Old Headquarters! Despite being in very humid weather, and both my sister and I carrying our bags from hostel to guest house to hostel almost every night, we were able to see so much and yet miss out on quite a lot. We talked with other travellers and heard about seeing Mt Fuji and Sumo Wrestling in Nagano among others, but I think I can see them another time.

But only a few weeks after I got back, I was out again for a week in Ireland…which is why the longer than normal absence. I got to see some of the big towns and cities from Cork to Dublin, as well as a lot of countryside, however it did help bring inspiration for a game I recently made.
Welcome to Kilkenny Pub Brawl!

Continue reading