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.

Advertisements

All the jams!

I was meaning to post this sooner, but along with work piling up and losing track, I did quite a few game jams. Three in particular: RemakeJam, Jamchester and Ludum Dare.

  

I’ll mention Running The Marathon first, because I only finished the game two days ago from posting. This was made for Ludum Dare 39, which makes it the 10th Ludum Dare I participated (and 9th I submitted a game independently). This was a bit of a last minute entry because until Saturday evening, I had no intention of making something for LD. What changed my mind was a game idea I was coming up with as a joke, running a marathon and making sure you don’t run out of energy. What I ended up with was a bit of a joke on the Track & Field concept, by having rapid button presses make your chances at success worse. Because of how little time I worked on this, the background animations and sounds are lacking, although I do think the running animation on the player turned out okay.

4i8mLl.gif

As is the tradition of Ludum Dare, voting will be going on by all participants for a total of three weeks. Any Ludum Dare entrants can go to the game’s Ludum Dare event page to vote and comment.

Next I’ll talk about Dash Dodge, which was developed for Jamchester 2017, a professional games jam that I took part in last year. This year, I was in a team which consisted of another programmer & sound designer (Jessica Winters) and two artists ( and ). All in all, this was a great team to work with, and we had a heavily planned out game about combatting bosses using only dashing, with a time travel element, although we may have over-anticipated our goals a bit. Needless to say, we made a game with a nice visual style and some neat mechanics thrown around. Hopefully at some point in the future I would like to work with these three again at some point.

Finally, there is 8-Bit Theater: Black Mage is in a Shooting Game. This game, developed for RemakeJam, is a remake of a previous game of mine. In particular, this is a remake of the first game I ever made from back in 2010. What was great about working on this is that I still have the original source project and most of the original assets and notes, although I did have to dig through Google for a copy of GameMaker 8.1 in order to view the original project. Sadly because of lack of time (I rarely allow full days of focus for these game jams, I’ve noticed), I just about managed to remake the original two levels and boss. This wasn’t for naught though, as way back when it took me over a year to reach this far, and this time I managed to achieve the same amount in less than a week. I also took advantage of my own game framework to try out some technical challenges, such as parallax scrolling.

Game Jams are fun, I like taking part in them for those short bursts of game ideas and development challenges. Sadly participating is made more difficult when my day-job takes priority, but when I get a chance to take part I’d like to take full reigns!

Now time for some voting and other challenges!

Ludum Dare 38 – littleBLASTplanet

Last weekend was Ludum Dare 38, not only is it the 38th main game, as well as the 8th or 10th one I’ve taken part in (whether or not you take into account failed attempts), but it also marks the 15 Year Anniversary of the competition/jam as a whole! Not only is it celebrated with another jam, but with a brand new website. For now you can still access the old website, but game submissions are currently being handled entirely on the new site.

ldjamalpha

The theme this time around was Small World, so I (like a lot of devs) made a game either around a small game world or a tiny planet. I went with the latter and drew up a run ‘n gun shooter on a little planet.

 

Sadly I had plans with my friends on Saturday so I didn’t start work on the game until around 8PM GMT, so development felt more rushed than a full games jam but I managed to make what I set out to design: littlePLANETblast

Similar to my past Ludum Dare projects, I used HaxeFlixel. It’s straightforward to use, multiplatform (Flash, HTML, Windows and Android maybe…) and it’s still being maintained so there have been several improvements. I’ve provided the game’s source code on Github so feel free to have a look to see how the game works.

The first problem I had to solve to make this game work is how to make a sprite orbit a planet. HaxeFlixel has a FlxVector object for vector math, so using that with a sprite’s acceleration meant having the sprite fall towards the centre of a circular planet was pretty easy, but how do you get the sprite to stop on the planet’s surface?

HaxeFlixel has no circular collision, only rectangtle collision. When I wrote my own C++ framework for Gemstone Keeper, which took inspirations from HaxeFlixel, I included Circular collision by giving each object a Radius property and writing my own circle overlap and separation functions. This would have been too much work for the time I had, so I wrote a hack method for a derived sprite class that always checked and updated the distance between a sprite’s centre and the planet’s centre, and if the distance was less than both the planet’s radius and sprite’s radius combined, then the game pushes the sprite up to the edge of the planet. This circle collision method is only applied between a sprite and the planet, and since rectangles don’t rotate then all sprites had to be perfect squares.

Bullets were one of the only sprites that weren’t built to orbit the planet, instead simply moving in an angle that combines the firing direction with the player’s current angle. I’ve had some feedback that said that the bullets should also be affected by gravity. I decided against it because it would make enemies on the planet easier to hit, while enemies in the sky would be harder to aim, not to mention the game loses a strategy element because of where bullets travel.

 

I went with three base enemy types: Rockets, Spikes and Robots.

Robots functions no differently from the player, except that it moves in a fix direction and smaller ones bounce by constantly jumping. Spikes has the same orbiting system, but it’s planet radius is much smaller to allow it to go into the planet. I use FlxTween and the FlxTimer to allow the spikes to move in sequence. Rockets simply spawn outside the screen at an angle and move towards the centre of the planet. If a rocket touches the planet then it would be destroyed, resulting in an instant game over.

I also added an escape object, which changes the planets side and makes the level a little bit more harder. This was for variety, so you wouldn’t have to stay on the same planet. If I had a bit more time I would have included more animations on the planet itself.

Speaking of the planet, that was one of the first objects I applied polished graphics to. To give it a more detailed pattern, I used the built in Cellular Automata function, and applied the pixels to the circle. Since it uses a random seed, the pattern is different on each playthrough.

The planet’s destruction is a particle effect that uses the planet sprite’s texture, a technique I used a lot in Gemstone Keeper. However one gripe was that I had to make a derived FlxEmitter class that could allow me to set how many frames I wanted based on the particle’s frame size.

Along with proper sprites, smoke was added to the spikes so that the game can provide a one second warning before spikes hit. I also added a distance check to avoid some unfair spike deaths. Finally I added a second camera mode incase the first one wasn’t interesting enough. The follow camera simply rotates with the player so they can stay in one spot while all the other objects rotated around. It did mean having to create a new Camera for UI elements, since objects can only be parallax scrolled by position.

The last elements I added were the title screen and audio. Sound effects were produced with BFXR and music with Abundent-Music’s Procedural Music Generator. Audio is one of my weakest skills so these procedural tools made that quick and simple, although I probably wouldn’t enter myself into the audio category for them.

I figured I add a smaller version of the planet in the title screen and have the player sprite on a bigger world to give a vague sense of a setting, with emphasis that the player is fighting on tiny planets and not just a giant on a regular sized planet.

And that’s basically how I made littleBLASTplanet. If I had more time I probably would have created more enemies and made proper transitions between planets. Aside from that I’m pretty happy with the results, particularly hacking the physics to getting jumping and moving around a 2D planet to be possible.

Voting for the game begins on Wednesday Friday, so if you took part in Ludum Dare, please check it out!

Gemstone Keeper at LAGC 2017

So I had a great time at the London Anime and Gaming Convention, even despite some unfortunate setbacks. Indie Zone Administrator and developer at Grandpa Pixel (Folks behind the RPG Legenda series) was unable to make it at the last minute. What made it all the more unfortunate was that there were only three indies at the Indie Zone this year: myself, Crystalline Green (developer of Flight of Light and Atlantis Dare) and Hei Stories (Indie Animation Studio working on Seeking Scarlet At The End Of The World). Needless to say we brought attention to the many attendees who were walking around the gaming area, looking for something to play outside of the retro games in store.

  

I also did a short talk on game development in general, talking about my game development process and answering questions on topics such as piracy, game engines, looking for feedback and much more. Despite the small numbers, demoing the game did help find a few bugs and it was great hearing people say they love the visuals and the challenging gameplay. There was one kid who went back to the game multiple times, which was unexpected.

In a weeks time on Saturday the 18th to the following Sunday I’ll be at GEEK Expo in Margate. Unfortunately unless some other plans come up this will be the last event I’ll be exhibiting Gemstone Keeper before release, as I was unsuccessful with my application at the Leftfield Collection at Rezzed. I will be sure to attend Rezzed as well as GDC in San Francisco so there might be a chance to see me around. Till then I’ll be making my usual posts on social media.

Where to play Gemstone Keeper?

On March 31st, Gemstone Keeper will be available on Steam. However before then there will be a few opportunities to play Gemstone Keeper at some game events, at least in the UK. These events are beneficial for getting feedback, so the game’s quality will improve before release. Here are two gaming events which are currently confirmed places to try out the beta version of Gemstone Keeper.

https://i0.wp.com/winter.londonanimecon.com/images/logo.png

Feb 7th and 8th – The Rocket Complex London Metropolitan University

LAGC is a bi-annual anime and gaming convention run by AnimeLeague, and specifically I’ll be in the Gaming Area where the Indie Zone is. I have attended the convention several times in the past, and have enjoyed the many events and stalls available.

Feb 18th and 19th – Marine Studios

GEEK is a gaming and comic book (among other things) festival, featuring retro and modern games, as well as pinball and of course, indie games. Gemstone Keeper will be present at GEEK’s Indie Zone. This will be the first time I have attended an event in Kent, so I’m looking forward to what this event has in store.

Now while I won’t be exhibiting, I will also be reaching outside the UK as I go to GDC in San Francisco, (Feb 27th – March 3rd). While I won’t be showing off Gemstone Keeper on the show floor, I’m hoping to meet several other indie developers and attend meetups around the conference, so there may be a few opportunities for Gemstone Keeper to be played during the week in the USA.

While it hasn’t been confirmed yet, I am hoping to once again, attend Insomnia Gaming Festival in April. I last attended Insomnia’s Indie Zone at i58 and had a great time there, so it would be great to present Gemstone Keeper there once again.

Finally, I can now confirm that Gemstone Keeper now has it’s own official website. This will be a central place to describe what the game is about and to see the latest screenshots and videos, such as these ones below.

Gemstone Keeper Underground

Gemstone Keeper Ice

GemstoneKeeper_Terminal.png

Gemstone Keeper Fire

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.