The EGX Report

It was more than a month ago that Gemstone Keeper was being shown to the public at a games festival. Last weekend it happened again, this time at the ExCel Centre in London. EGX is the largest video games expo in the UK, originally starting as Eurogamer Expo as part of the London Games Festival in 2008, eventually being hosted at Birmingham NEC after the closure of its main venue of Earl’s Court in 2015 until this year where it moved back to London, in a move that excited or angered gamers and game developers depending on what part of the country you were from.

As mentioned in my last post, Gemstone Keeper was part of the Tentacle Zone as one of its 18 games on show. This time they weren’t the only space dedicated to indie games, there was also Rezzed (EGX’s dedicated indie games zone), Tranzfuser (a talent development programme from the UK Games Talent and Finance CIC), the UK Games Fund and the Leftfield Collection (for the unconventional indie games, sponsored this year by Team17), not to mention all the game publishers such as Nintendo, Sony, Bethesda, 505 Games, AAA game devs like Rebellion and retailers, as well as the typical expo showing of cosplayers, dealers, charities. There was also a stage set for the UK Speedrunning community, doing live speedruns of games for Special Effect. All of this was in half of the entire exhibition centre, in the entire south area.

Continue reading

Insomnia Report

Last week, I was one of 24 indie game developers who showed off their games in the Indie/Tentacle Zone, part of the Insomnia Gaming Festival (i65) at the Birmingham NEC. Over a four day period, thousands of gamers got an opportunity to try our games, some in development for platforms, others being in early access or recent release. For me, it was an opportunity to show Gemstone Keeper for the Nintendo Switch, to see what bugs people would find in the port running on proper hardware for an extended period of time.

The first thing I noticed when I arrived on the first day was the stands were great! When I last went to Insomnia back at i61, the Indie Zone had the blank, cubicle-like, walls with one table, which had been used as far back as the Indie Zone’s introduction around i52 back in 2014. It was an acceptable setup considering that Indie Zone spaces were free to those who applied and PC setups were provided. Last year however, the Indie Zone was being operated by Payload Studios, the developer of the game TerraTech and managers of the Tentacle Zone at EGX and Rezzed, they managed to deliver by replacing the plan walls with backdrops that featured banners of our games! (we provided the poster art for them to print)

That didn’t stop some developers going the extra mile: Space Lizard Studio created a cardboard scenery around their table to match the theme of their Papercraft Horror game, Paper Cut Mansion. The developer told me that it took them two weeks in their spare time to create it and it looks impressive! Rhys510 on the otherhand, didn’t bother with a table with a monitor, system and controller, as their game was on a fully functional arcade cabinet!

On each day, the doors opened to attendees at 10am for priority attendees, and 10:30am for everyone else. What appeared to be a surprise to most of the indie devs was the amount of people who turned up on Friday, particularly in the morning. It was anticipated that Saturday and Sunday would be the busiest days, with Friday and Monday being the least due to it being near the end of the school holidays and a bank holiday respectively. The morning was espected to be quiet in general because that would be time people would explore the whole event and jump into the other areas that required queues, such as the Borderlands and MediEvil stands, or the Ubisoft Experience. This wasn’t the case, Friday morning had attendees trying out each indie game. While the crowds wouldn’t compare to Saturday, it was still a good first day.

This was the crowd on the Saturday.

While having more people to keep an eye on and try your work is more hectic, it does make the work of showcasing go a lot quicker. Retro Revival was a decent showing, but not many people turned up to its indie section, which made the whole event feel a lot longer. Plenty of people managed to try out the game, both the standard single player mode and the multiplayer survival mode, I ended up making a procedure where if I see an individual or a single child with parents approach, I’d let them try out the single player mode, but when a group approached the table, I’d ask if they wanted to play multiplayer, and set up the controllers if they said yes. This ended up being a good strategy, as groups might lose interest if only one person plays at a time (although I noticed pairs who went straight into the single player mode took turns at each level).

There were some technical hiccups though, as before the first day I had technical issues that prevented me from creating new builds for the Switch (lesson for the future: never update the SDK or firmware before your big events). I was fortunate to have a working demo build from a week before that I could use, but even then it had slowdowns and it even crashed at one point, which required a force restart. This was the case for both the Friday and Saturday, fortunately on Saturday evening I was able to fix two main issues that were causing crashes, and with my notebook that had an entire page filled with minor bugs in it I was able to get through and create new builds for both Sunday and Monday.

Overall, I’d say I had a great time. I got to try out a number of the games such as “Bubbles the Cat” from Team Cats N Bears, Velocity G by Repixel8, Robot Champions and many others, and hung out with a group of them on the Sunday (sadly I missed out on the pub quiz that took place on the Friday).

The next event I plan to show Gemstone Keeper will be at EGX in London in October, so I hope to see as many (if not more) players there!

Gemstone Keeper (for the Switch) for the Public!

Hello everyone! It’s been a while, but my game development focus has been majorly on Gemstone Keeper for the Nintendo Switch! Significant progress has been made to it, plus Ironbell and I (as well as feedback from devs of Naezith) have been continuing our work on SFML-Switch, fixing issues that we find. The submission process is currently in its early stages and with any luck there will be an announcement on its release later this year.

The biggest areas of progress to Gemstone Keeper that have been made is that the Switch release has a local multiplayer mode called “Survival” where up to four players can fight an infinite amount of enemies until the last player dies.

Another big change to Gemstone Keeper is that the graphics have been significantly upgraded to a higher resolution to accomodate with the Switch’s HD displays. While it might seem strange to do this, but the painstaking process of using much larger fonts to generate the textures in the game results in a significantly sharper display overall. To the untrained eye it might not appear noticeable, but when compared side by side or in a split screenview, the differences become crystal clear (pun intended).

Back in June, the Switch port had a public test run at the Retro Revival Festival in Walsall (where I was also selling some games from my private collection). Despite some major technical difficulties, I managed to get some good feedback and players to try out the game, so I’d say it went pretty well!

From the event I also got to speak to Chris O’Regan from the video game podcast group Cane and Rinse, and after he got to have a go at the game and got in touch after the festival, he invited me on the Sausage Factory to talk about the game, as well as my development background and games design! I had a good time talking, although I usually get nervous when speaking in a mindset of having an audience, I like talking about my work and how I feel about games that show a more technical aspect over an artistic or epic approach to them. So if you have under an hour to spare, why not try hearing us talk for a bit?

Gemstone Keeper Episode of Sausage Factory

But that was back in June, what about now or next month? Well I’m happy to confirm that Gamepopper will be returning to the Indie Zone of Insomnia Gaming Festival as part of their i65 lineup (for the first time since i60 back in April 2017). Both myself and the game will be there for all four days of the festival, but do also come down for the rest of what indies have to offer.

There will be one more event in the near future where players can try out Gemstone Keeper, however I’m going to hold back on announcing it until after the final details get sorted.

 

End of 2018 In Review

It seems that because of how the internet and societies have changed so drastically, years now seem to feel like they’ve multiplied. I doubt anyone could really summarise what happened this year, as there appeared to be a lot of fighting back and forth. Outside of game development, I have had to deal with friends moving further away, my mascot costume being stolen as well as my grandmother needing serious treatment that has put a lot of us in the family on edge, and that’s not including all that’s going on in the UK and the news of some of the great people in the world we lost such as Isao Takahata, Ursula K. Le Guin, Totalbiscuit, Stan Lee, Fred Patten and many others.

But this is about progress and achievements, so let’s send of 2018 right!

Game Jams

My main New Years Resolution this year was to do one game jam per month, as I felt I wasn’t doing enough over a year. For all the challenges, I managed to succeed and get twelve games done this year. Few didn’t go as well as I hoped but most I feel were rather successful!

Global Games Jam 2018 – FORMANTS

HighJam #1 – Berzerkatron

7DRL – RDLL

Ludum Dare 41 – Strategysphere

CFZ GameJam – Foxtrot & Tango

WizardJam – Re(re4ti0n

FloppyJam – PEWBALL

Ludum Dare 42 – Closing in on Pascal

RainbowJam – Fursuit Run

7DFPS – RVB

Desert Bus – Bus on a Desert

Ludum Dare 44 – Tank Gauntlet

Doing this definitely felt worth while, as it lead me to create a whole new engine as well as update my 3D graphics system. In the end however, I do feel a bit burnt out from game jams, which is partially why soon after Ludum Dare 44 I decided not to do much. I might hold off on doing any more because as you’ll find later on in the post I have other reasons too.

The P Word

I think its safe to say that politics has gotten stronger and divisive now more than ever, it might be hard to believe considering my Twitter feed but I would consider myself mostly centre-left but not very openly vocal about political issues. Most of this changed in 2016 with Brexit and the US, and while I will still insist on being centre-left on many principles, I don’t think I should be quiet about issues such as our relationships with other countries, the treatment of people regardless of identity and funding to the public sector.

As such it’s great to see and contribute in any small ways to organisations such as Game Workers Unite and Games4EU. I first spotted leaflets for GWU at GDC, around the time when crunch and unions were hot button topics within games development. I tried to keep up to date with their progress and shared what they did, and imagine the response we had when GWU UK became an official union! I hope to keep supporting them and I look forward to seeing how they will progress.

Games4EU was set up to act as a voice for game developers who wish to remain in the EU, and largely support a people’s vote. I actually got to join them for the first ever protest march I participated in my life, walking alongside 700,000 people. It was a great experience and the support was overwhelming. I wish I could be hopeful and think that all this political mess would be sorted in the new year, but I’m not gonna stop.

Console Development

I didn’t realise this until I checked my New Years post from last year, but I had a second new years resolution: to get into console games development. I also mentioned how I tried to get in touch with Nintendo but was not successful, so imagine my surprise in October when a representitive from Nintendo of Europe got in touch with me. I think it’s safe for me to confirm that I’m now a registered Nintendo Switch developer, and so now in 2019 I want to focus most of my game development efforts on getting SFML (and by extension, Vigilante) working on the Switch. Currently I’ve had to upgrade my workstation to get ready for it, and at some point I’ll get a proper dev kit to work with. It’s an aspiration to any game developer to work on a game for a major platform, and so while I imagine my tasks will be tough, I’ll get through!

Ludum Dare 44 – Tank Gauntlet

The year of 2018 is drawing to a close, and so for December what other game jam I should take part in but the 44th Ludum Dare. I decided to take part in the compo as once again I managed to have a free weekend to work on it.

Before the compo commenced, I used my previous experience with game jams including the 11 previous ones I took part in this year to write a set of rules I think other aspiring game devs should follow when they work. Other devs seem to like them so I figured I’d use these rules to go over how I made my Ludum Dare 44 entry, Tank Gauntlet.

These won’t be in the order I originally set them for the sake of describing the progress.

LD43-00010.gif

Know your Tools

I already had my tools in mind before the theme was announced, I used my SFML-based C++ engine “Vigilante, Piskell for animated sprites, Photoshop for any bigger assets, BFXR for SFX and cgMusic with LMMS for music. A lot of which I have used before, but for audio, I feel as though I need to find more other ways to create the SFX I need without the use of a sound library, and maybe diversify my music creativity (I used Megadrive Emulation Soundfonts so there was a bit of a 16 bit vibe to the music).

Small Scope and Stick Mostly with What You Know

I’ve usually been pessimistic the themes for Ludum Dare, as you are given the opportunity to vote on them in multiple rounds but the themes I like the most do not tend to get chosen. Therefore, when the theme was announced to be “Sacrifices must be made”, it wasn’t one that I was entirely keen on, and the only idea I had jotted down was “diet simulator”. While that idea was doable, it wasn’t really that original and a simulator might have been a more laborious task. I slept on it and figured I’d do a tank combat game. To fit the theme and my “1 unique/main, 2 optional mechanics” approach, the unique mechanic would be sacrificing gameplay input for power/speed, with the two optional mechanics being shooting and melee attacks.

Gameplay First

The first thing I did Saturday morning was work on the main game, by setting up a simple tilemap and a rectangle sprite for the player. Then I made sure the player could move, jump and collide with the tilemap, and the player could wrap in all directions.

Oh, a basic tip on how to handle platform jumps: Do math. Don’t bother guessing the right values for acceleration and jump velocity until you get it right, set up some variables and apply some vector maths, the below code will be enough to work out how high and how fast you want to jump, as well as how fast you want the player to move horizontally:

float Height = -85.0f; //Maximum Height of the Jump in Pixels
float Distance = 80.0f; //Distance travelled in Pixels
float Time = 0.5f; //Total Time of Jump
float MoveSpeed = Distance / Time; //Speed in order to travel the set distance in the set time
Player->MaxVelocity = sf::Vector2f(MoveSpeed, -2 * ((2 * Height) / Time));
Player->Acceleration.y = (-2 * Height) / (Time * Time);
Player->Drag.x = Player->MaxVelocity.x * 10;

If you want to extend it further, I’d recommend watching this GDC Talk on Game Maths Programming:

After using the code I have written previously for bullets, tweaking it to my liking, and adding enemy rectangles that can spawn periodically and move at different speed and be of different sides. I had most of what I needed.

LD43-00000.gif

I also added knife melee attacks and enemy damage before I worked on the menu that would handle input sacrifice.

LD43-00001.gif

Make Your Content Easy and Noticeable

For the last Ludum Dare, I made a racoon sprite that had a full running animation and was heavily detailed to the best of my ability, along with a tilemap and background to resemble a temple, and it took five hours. In the end, the environment didn’t look all that great and the racoon sprite was so small that you couldn’t see the detail.

This time around, I decided I wanted something simpler and easy to resemble, a tank. I loosely based the design on the StarFox Landmaster. With it being a tank, there didn’t need to be many frames.

LD43-00004.gif

I decided to keep the sprites and tilemap monochrome, using shading and tones with around 20 shades of grey in total so I could randomize the tint to add some variety to it. The enemies were kept red, as it’s an easy way to convey them as dangerous.

LD43-00007.gif

I found using fonts a bit more frustrating than normal, SFML doesn’t use the nearest neighbour for fonts so on a game with a low resolution (Tank Gauntlet uses 320×180), it’s difficult to use a font that isn’t too big and wouldn’t get blurry if the font size wasn’t set to a specific factor, if I found a way to implement bitmap fonts I might not have this much of an issue.

LD43-00011.gif

621 and Take a Walk

On both Saturday and Sunday, I walked into the town centre to get food and other things to relax my mind and not stress over the game too much. I also tried to get some good sleep, so I didn’t stay up too late and got up at around 8-9am on each day, oh and I took showers.

Find a Friend

One of the comments I got from this rule is that it doesn’t have to apply to team-based projects, having a friend to look over the game or provide feedback is beneficial to a solo project. As such, I’d like to thank my friend Kris for putting up with me sending him screenshots and asking about ways to make the game feel better and if I’m making the game too cruel or not.

I hope you find this simple process interesting, after doing 12 game jams this year I’m kind of happy this one felt mostly streamlined. There were some issues like with audio, not to mention technical issues post-submission, but I hope people find the final product enjoyable.

https://ldjam.com/events/ludum-dare/43/tank-gauntlet-control-vs-power

I was going to include a final statement for 2018 as a year in review here, but with the length of this one I’m going to have to add it as an additional post. Happy New Year everyone!

7DFPS and Desert Bus

Don’t worry to anyone who has been following what I’ve been doing this year, I haven’t missed October or November. I’m so close to finishing this goal of mine for 2018 and my next post will include not only that month’s jam entry but a summary of what I have done over the year. But for now, more jam games.

In October, I took part in 7DFPS, as the name implies the jam is focused around games in the first person shooter genre. The jam itself is probably best known for being the source of the wildly successful indie title SUPERHOT, where the prototype was created for the jam back in 2014. I decided to take part in this jam to see if I can add to the 3D game system I developed in September’s game jam.

7DFPS-00001

One issue I had when working on this system was that I didn’t have a fully working software frustum culling system, this would allow me to avoid draw calls on 3D objects that were not in view of the camera. What you see above was the issue I had before. It took a number of trial and errors and reading on how to properly set up and transform the plans before I had it properly culling the right objects. I also added some other mechanics I need to make this a classic FPS, jumping while taking into consideration multiple floors and shooting projectiles.

As you can see from the projectiles, some of them were clipping unusally. This is a side effect of rendering textured objects in OpenGL with alpha transparency, any objects that are drawn after transparent objects will have the scene’s pixel data overwritten. The solution to this is to sort your 3D objects, first by making sure he fully opaque objects are in front, and transparent objects by their distance from the camera (aka depth/transparency sorting).

7DFPS-00007.gif

Then came the big additions, I used most of the same code from Fursuit Run for the enemies so they had the same 2.5D effect, but changed around the movement code and added the ability for them to shoot as well.

For the game’s hook, I wanted to have a mechanic based on Ikaruga, where only opposing colours hurt you and the enemy. As such I had to give the player and each enemy two batch renderers, one for each colour, to share one bullet group, as well as a flag for their current colour. Then I made sure the game checked what the colour of the bullets, players and enemies were during each collision to make sure that only opposing colours set damage.

7DFPS-00006.gif

Then it came round to the presentation, I decided to make the level much bigger (no easy task considering the original protoype used hard coded map sizes), changed the textures and added bloom so the game’s visuals had a neon aesthetic.

In the last few hours, I struggled to find how to give the game a proper goal for single players. As I was getting tired, I decided just to have an orb that the player must find to collect. The gun in the middle was the last touch, which also helped made distinguishing the player’s colours easier.

I managed to fix a few bugs later on, although I think I’ve done most that I can with this. Although one change that I don’t think will get finished but was cool was I managed to get multiple cameras working for one scene, which makes split-screen gameplay possible! So for making a number of improvements to my engine’s 3D capabilities, I call this a win. You can play RvB here on itch.io.

7DFPS-00010.gif

For November, I took part in the Desert Bus Game Jam, which started last Friday (9th November) and I managed to finish on Thursday (14th November). This jam is done in conjunction with Desert Bus For Hope, a charity video game stream to raise money for Child’s Play. The theme for each DB jam is around the desert bus, which itself is based on a notorious unreleased game of the same name.

I decided after two 3D games to make it slightly easy on myself while being experimental, so for my Desert Bus Game, you would see two perspectives, one to dodge stuff on the road and the other to keep your bus balanced.

DesertBus-00002.gif

Unfortunately, as of writing I do not have a proper physics system in Vigilante, so I made do with the standard collision system. The rear-view had a bus that leaned in the direction by changing the origin of rotation to the bottom corners. One low-level thing I did do for this game was to update the VSprite from using SFML’s sprite object to VertexArrays. This would allow me to adjust each vertex on the fly, instead of being restricted to a single square. It also allowed me to freely change the texture coordinates so I could do the endlessly scrolling roads, as well as skewing them. I hoped I would be able to get proper perspective to work, but even vertex arrays have their limits when it comes to skewed sprites.

You can play Bus on the Desert here.

One month to go!

Ludum Dare 42 – Closing in on Pascal

The game jam for August was Ludum Dare 42, so with it coming to a close, I thought it’d be good to talk about how the submission [Closing in on Pascal](https://ldjam.com/events/ludum-dare/42/closing-in-on-pascal) came about and what I learned from it.

Ludum Dare 42 was particularly exciting for me, as it was the first LD in a long time that I had a completely free weekend. As such, I decided to plan the first day entirely for gameplay, with graphics and audio on the second day. That way I get a solid game and then plenty of time to work on making it look and sound nice, you’ll find out why that plan isn’t flawless as it sounds.

When it came to the theme, I was already very pessimistic that it would be a theme I’d be happy with, it’s been a common trend for people to vote on the theme that no one wants. I even voted against the theme “Running Out of Space” but when it turns out to be the chosen one, I thought it was pretty good.

The concept of running out of space I had was inspired by the cartoon trap of the walls closing in on someone in a temple. I figured a game where the player has to reach an exit before the room crushes them to death.

Fortunately, I have a bit of experience with platformers in my game engine from a previous jam, so the tilemap, jump physics and mechanics such as wall jumping I have previously implemented.

LD42-00000.gif

The jump animations itself was done because I remembered the indie platformer INK having good squash & stretch. To achieve it I modify the scale so that it squashes inwards when going up and stretches outward. If I had more abilities to adjust the individual vertices I could do more fun aspects of moving like skewing.

LD42-00001.gif

Since my idea was inspired by a temple film/TV trope, I already had the visual theme in my mind. I also thought it would be good if I had a little cartoon character who’d look like Indiana Jones. It was fun working with pixel art and animation once again, but if I was to do this again I would have done a much simpler approach. The player character is way too small for the game screen, meaning that its animations are pretty much useless. I also had a bit of issue with making the colours stand out so it doesn’t feel all yellow and brown.

LD42-00002.gif

In the end, it took around 3 – 4 hours to work on the background environments and 5 hours to work on the player sprite and all the obstacles. If I went with a much simpler design or scrapped the temple theming and used the simple colours and shapes it would have been much clearer and easier to look at.

LD42-00009.gif

The sound and music was achieved with LMMS and BFXR. I like making NES-like chiptune in there but I do notice it’s restrictive in areas like tones and tempo, so I couldn’t get the sounds I want. It also didn’t help that thanks to the graphics, I had much less time to work on sound and music so it ended up rushed.

The post-jam has most of what I would have added or done better if I had time. Particle effects, using directional keys as well as the WASD buttons, and a better title logo. I would have also worked on more levels but seeing how many levels players are willing to go through, then maybe the existing levels should have been improved slightly.

I’m a little worried about what the rankings will be for this one, I’m definitely glad I could take part but I feel as though I wasted too much time on the graphics when a simpler approach would have been effective. You can go check out [Closing in on Pascal](https://ldjam.com/events/ludum-dare/42/closing-in-on-pascal).