A Decade of Game Development

Happy New Year everyone! It’s 2020, meaning it’s the start of not just a new year but a new decade (at least your one of those people insistent that the decade starts on 2021)! Needless to say, it has been a full ten years, and it’s fitting that nearly ten years earlier I started working on a computer game for an Extended Project at my Sixth Form project. I did a brief summary of what I’ve done over the last decade on Twitter, but I figured I’d write about what my experience with game development has been like. I won’t write in detail about every game and related projects I’ve ever worked on (at this point it’s 48, not including some of the game jam projects that didn’t get finished), but to give some highlights. You can check out all the games I’ve worked on here, as well as the academic stuff here.

First game

I’ve always enjoyed playing video games, and it had crossed my mind on a number of occasions to have a go at making my own one. Problem was that I struggled when it came to trying new things on my own if I didn’t have someone to instruct me I’d get lost and eventually give up. I remember looking through DarkGDK and an old 3D game engine, and the tutorials were confusing so after a few days I gave up. Even when I was 16, I didn’t even think of being a programmer or a games developer (I originally wanted to be an electrical engineer) until one day where I took a class that was meant to demonstrate what you’d learn if you took Computer Studies as an A-Level course. Having a good teacher who could walk you through writing code (in Visual Basic .NET) effectively got me to consider taking up programming instead.

Game development was something else, I remember at the start of the year there was plenty of encouragement to do what’s called the AQA Extended Project, which is basically an assignment that students have a year to create on any given (approved) topic of their choosing. It’s the equivalent of half an A-level grade, and it’s advertised as being good on a University application because it’s extracurricular work. I remember in one of the numbers of presentations that the teacher speaking about it saying something to the likes of “You can do a project on almost anything, such as something you do on a daily basis like taking care of an animal, a certain subject you’re interested in, or a particular hobby you have. One year, someone made a computer game for their EPQ, if you want to try that, you can.” and almost immediately on my mind, I thought I should try that.

For the report, I looked at a number of tools at the time and stumbled onto Game Maker 7 (I later moved to Game Maker 8 when that came out). I read on a couple of websites that it was used in secondary schools for creating games, and it looked like you simply needed to understand flow charts in order to do stuff so I downloaded it and tried the tutorials. For the time, they must have been the most straightforward and clearest tutorials I’ve ever used. It took me less than a day to make a vertical scrolling shooter similar to 1942 just from following a PDF document, so I figured for the project I’d turn it into a horizontal scrolling shooter. I was also a fan of a sprite-based Final Fantasy webcomic called 8-Bit Theater by Brian Clevinger, so I figured I’d use Final Fantasy sprites and make it a fan-game: 8-Bit Theatre: Black Mage is in a Shooting Game.

Looking through all my documents, I think it’s safe to say I might have been a bit too ambitious for a first project. According to the design document I wrote for it, I was hoping to create eight levels, each with a boss battle (in the end, I only managed two levels and one boss battle). I even gave the game a full plot synopsis even though I never found the time to implement a game’s storyline. The game was also purely developed using the Drag and Drop visual scripting tool, which did enough that I wanted to do although more experienced Game Maker developers don’t even touch it and do everything almost entirely through Game Maker Language. That being said, I did try some of the more intermediate tools within Game Maker such as Timelines and Paths, and the boss I did end up making was massive. Regardless, it was definitely a learning experience, and it was a fun project to do in-between school, homework and a part-time job as a school cleaner. The teachers definitely thought that my game, even in an incomplete state, was an accomplishment and recognized that I had skill and drive. In some aspects, I probably had a bit too much drive, I made a gameplay video of it and put it up on a Youtube channel, pretending I was a games company called YARGHgames (I’m pretty confident it was an acronym but I cannot recall what it actually stood for). Still, we all have to start somewhere. I did try to remake this game back in 2018 for a games jam, and although I never went further than the original, I think the fact that I could remake what was more than a years work back in 2010 in around a single week in 2017 shows I must have improved somewhat.

University

When it came time to apply for University, wanted to do Games Programming as a career, with the hopes that I could write code for games on the major video game consoles. I originally chose to do games specific courses, but my parents insisted that I go to the more general computer science route instead. Neither of my parents had much of a background in computers and didn’t think there was a good chance in getting into games, and in fairness neither did my A-level teachers. My cousin was the one who recommended me to look into Staffordshire University because of the games and computer courses, and I made it my first choice. I enrolled as a Computer Science student in the latter half of 2011, and after taking an optional module in games programming I decided to transfer before the end of the first semester (I was able to convince my parents that I should do it, and early enough so I don’t have to do additional modules to catch up).

Most of my work was purely academic, the most game-like stuff was a Pac-Man clone and one where you controlled a goldfish. I did pick up a lot of stuff using Microsoft XNA and C#, as well as some early 3D programming using OpenGL (with the really old framework GLUT) and then later DirectX. I even spent three months at a Summer Camp in Hawley, Pennsylvania where one of the activities I did was teaching C# and XNA. I didn’t try to make proper games until two things happened: Game Jams and Microsoft.

First one was Global Game Jam 2013, I went mostly because I knew two of my friends were taking part. Staffordshire University was the largest GGJ site in Europe for a number of years, so you got to see a lot of people get involved. Joining one of my friend’s team, we worked in XNA to create this top-down driving game we named Anarchy Ambulance in a similar vein to crazy taxi, except you’re running people over and delivering their hearts (incidentally, this was the same GGJ where Surgeon Simulator was made). It was a terrifically fun project to work on and it remains one of my favourite team-projects I’ve worked on, we were able to get a lot done and had a laugh doing it. I didn’t think it was entirely possible to get the game done in two days, but James and I managed to pull off all the coding stuff, even the collision with rotated bounding boxes. It was received fairly well at the time because of its morbid concept, I remember years later seeing it featured on a showreel the University Games Design faculty played during open days for a few years after. I’ve gotten into doing game jams since that day, because there is a lot of creativity and drive to finish a game in a short amount of time, having to decide what’s worth implementing and what stuff needs to get polished.

The other one was Microsoft’s Windows Games Ambassadors, a programme that was set up to encourage students to build gamedev portfolios by writing games to Windows 8 and Windows Phone 8 and submitting them to Microsoft’s digital store. One of the requirements for the role was to make multiple games yourself to demonstrate and work on your own portfolio, so I made a couple such as BOOM, a game where you defend people from fireworks. There were a lot of good experiences I had worked as one of their ambassadors, from getting free devices (such as a Nokia Windows Phone which remained my smartphone for years) to attending events like EGX as one of Microsoft’s crew. It did give me an early look into building games for mobile devices in particular, as well as have early experiences with submitting games to storefronts (one that I’ll get more used to later on). I still get updates from other members of the team and almost all have worked in games in some capacity, such as with Unity, Playground Games and Supermassive, as well as other technical fields such as VR and Medical.

IBM

During the second year of University, most students were looking for an internship or student placement. At the time, games industry internships were hard to come by and often were available late into the year, so I started off by applying to big software companies. After a few rejections, I applied to IBM. I had a lot of help with the application process, from the University’s careers team to an old friend from Sixth Form (who was already working for IBM at the time) and my sister. I remember having to fill in application forms with answers that could be compiled into an essay and going to the Hursley offices for interviews, a presentation and multiple group exercises. I got accepted and decided to work at the Hursley office as it was their main software engineering hub in the UK starting in August 2013.

Despite the day-job having nothing to do with games (I worked in the RDM, which was one of their data management teams), the work environment was built to be relaxed enough that employees could spend half of their time in different parts of the building to attend other things like courses to pick up skills (I did a few C++ and PHP courses at the time), conferences, as well as events that ran to help the local community (called Givebacks). I did two of the more popular Givebacks, one was teaching a local primary school IT once a week and the other was making a game for a competition called Blue Fusion. I pitched a game called Clean Commuter where you learned programming by giving a car simple commands, with the goal of making the car reach a goal in the fewest possible moves. It became one of the selected games and I was appointed team lead, so along with assisting with writing the game’s visual side (other programmers worked on mechanics and network multiplayer parts) I also had to manage the team and make sure the game was ready in time for the competition. It was a struggle at first, but things got a lot more comfortable once a plan was put in motion and the work got into a routine.

Untitled-1

I was also working on Secret of Escape around that time, beginning as a game jam project with the premise of “What if there was a stealth game which you had to complete as fast as possible?” (I somehow forgot Metal Gear Solid: VR Missions had existed). Since I liked the concept I thought I’d make it a proper game. Because of my work at IBM, I had to keep the work outside of my spare time and hold back on releasing it, which did help in some areas. This was also the first game I made an attempt at showing in a public setting with the first Norwich Games Expo and the Indie Zone at London Gaming & Anime Con. I also did get to show the game unofficially at one of the early Indie Zones at Insomnia Gaming Festival, after I found the guy running it by chance and told him I was an indie game developer (networking was a funny thing back then). In retrospect, I’m not surprised the game didn’t do so well as it wasn’t exactly a game you could easily get into and hardly stood out. I also thought to add easter eggs that no one would find was a good idea, having one or two for a laugh is fine if they are easy to find with a bit of messing around but I put in a bunch that only I would know or someone if they had to dig through the project, Not to mention putting it on Desura and IndieGameStand not long before both services would shut down when Steam was starting to do Greenlight wasn’t a good decision, at least it’s still free on itch.io and was nominated for a games industry award. It’s also the time were two of my personal favourite solo game jam entries came from, Galaticus from GBJam and Glow Drop from Ludum Dare.

Final Year

After I finished my year at IBM, it was back to University for one last year. I did end up branching out a bit more by doing engine and multiplayer game development alongside more 3D programming. After spending most of my time with C# in the first two years, and Java in my placement year, I went almost entirely into C++ for the third year, with a few modules in C#. Two key projects at that time for me were the Junior/Senior project and the final year project.

The Junior/Senior project was Staffordshire University’s biggest game design course, with students from every games course (including Games Programming) being eligible to take. For the entire year, teams would make a single game. Each team was made up of sub-teams such as tech, art, design and sound, and each member had roles assigned to them, including a producer and director role. The team I was in was called Ironworks and after a few weeks of making concepts, we went with making an auto-runner where one player had to finish a course while the other player had to sabotage them. As I was the only person studying in Computer Games Programming in my team, I was assigned as a senior tech, meaning I worked under a lead tech and handled some of the more advanced parts of the game while the three junior techs worked on the less advanced parts. I remember our team being unfortunately unbalanced, as outside of the tech team and producers was one animator, one sound designer and mostly concept artists. Lack of animations were such a problem, that I took the initiative of writing small scripts to make the player look more animated when it moved. I remember the tech team joking that no matter what happened, our game was at least gonna look great. What made the course particularly special that year was that Epic Games sponsored the course and granted every student early access to Unreal Engine 4, so through the year we got new updates and would often raise issues with the engine that would get fixed in the following week if we were lucky.

It was also probably one of the longest and most intensive courses, being around four hours per week on a single day with an hour in-between, excluding any unscheduled sessions to get the game ready before the deadline. Because of my course having Junior/Senior technically being part of a separate module to every other course, I was only required to attend the first two hours whilst everyone else had to attend the four hours. After the first day, where I stayed home after finishing the first two hours, I ended up feeling bad for leaving everyone else to work so from the next week onwards I decided to stay for the entire four hours like everyone else, spending my hour break quickly going home to have a pizza before heading back to campus. Apparently, I was one of the few games programmers that actually did this, and maybe the others had other modules as a priority but I personally enjoyed spending four hours a week working on a big fancy looking game.

The Final Year project was the big chunk of the final year, as well as my degree. Everyone had to do a thesis on something related to the course they were on. I had a small interest growing in procedural content generation as the topic was growing in interest around the time (from Spelunky to No Man’s Sky), so I thought of using that as my topic. That quickly developed into level generation and an idea of building a tool that could help with generating levels. Doing a thesis required a lot of taking notes and writing down alongside with doing a project. I had to research a number of different algorithms and methods from academic papers and conference talks, alongside learning to use GUI, Unit Testing and file-format frameworks to create the tool. Thanks to the industrial placement at IBM, I got used to treating University more like a full-time job in some aspects, so even on days where there was little to no lectures or tutorials to attend, I’d go to campus in the morning and spend most of my time in the library until 5pm when I got home, made dinner and do stuff in the evenings. In the end, I had submitted an 80+ page bound essay with a fully functional level editor that used algorithms such as L-Systems, Hilbert Curves, Cellular Automata (plus ones I created myself) as well as a tiny demo where you had to find gemstones in a randomly generated cave. To this day I’m not sure what I’m more amazed by, either the fact that I was able to get it all done despite the thesis document getting corrupted, almost losing everything, and my computer exploding thanks to a faulty power supply (and accidentally damaging the hard drive twice when trying to fix my computer), or that I was able to get a first-class degree at the end of it all.

After I graduated, I was looking for work. I did get more rejections than I did when applying for an industrial placement, but I was given an offer to work for a company that made games in C++ using computer graphics on dedicated video betting hardware. I started working there in August 2015 and I’m still working there four and a half years on.

Gemstone Keeper

Going back to that little demo, I decided to look into it a bit more after graduation and kept working on it even after starting a new job. It was much different from what Gemstone Keeper ended up being, the exploration was much a part of it (because I wanted to demonstrate the level generation) but because I’m a fan of arcade shmups, the gameplay in that demo was much more rigid and focused on getting a high score than traversing caverns, collecting gemstones and finding the exit.

After I finished my thesis, I was getting more interested in roguelike games, where there is more of an emphasis on preserving your character and planning your route, as opposed to the games I typically play where you go straight in, guns blazing. As I got more into them, the more I felt I should focus on the exploration and the relaxed vibe, and was part of the reason why the game has its ASCII aesthetic. I’ve always had this concept of an arcade shmup combined with RPG elements in my mind, but I couldn’t get an idea for it to fit. Next thing I know, I play a few traditional roguelikes like Angband and DoomRL and suddenly, an idea just clicked.

There was a lot of experimentation and trial-and-error to get the ASCII art to look right, although I did anticipate that early on because I always like to develop a game where there was a considerable challenge that was a part of it. All the ASCII art is generated in-game using a single font file: the design of sprites, objects and walls were planned out and then I wrote out which characters should be rendered and where individually. Unfortunately with the nature of fonts, you cannot guarantee that the individual characters would be rendered in the right place, so eventually, I wrote out a function to print out all the generated textures so I could properly inspect them and make necessary adjustments.

Moving from the demo’s original framework of Allegro to SFML was a good move, in the long run, it’s a much nicer framework to work with. It also meant I had to structure the engine in order to get what I wanted. I take a lot of influence in my game engine architecture from Flixel (and it’s more modern equivalent HaxeFlixel) because I like how it’s built from simple pieces, where everything you see in the game is either a basic object, a physical object or a group like it’s purely the entity part of an entity-component system. Although I have tried to write a framework in the past with Ricoh2D, it was working on Gemstone Keeper and taking inspiration from HaxeFlixel that lead to Vigilante, my own game framework that I take pride in. I don’t believe creating your own engine yields an output superior to those who make games in a proprietary engine, but there is something I find satisfying in being able to control as much of your system as possible, to the point where you can find issues in the lower-level part and fix them as soon as possible.

I was worried through most of the Steam Greenlight experience since, despite the criticisms of the quality of most entries meaning the bar was pretty low, there was still that worry that not enough people would like the game enough for it to get through. Accepting an offer to be part of a Groupees bundle did help, even at the cost of the value of my game, as I feel that was mostly what got the game accepted onto the Steam store. It’s a shame that Steam has put less effort into quality control since dropping Greenlight for a direct fee. Despite a fairly rocky launch (I decided to launch the game a day before my birthday in 2017, whilst at Rezzed, and then ended up having to release several patches after I got back home because there were several bugs), I still feel like the game did really well. After all of my experience, I moderate my expectations, yet I was still chuffed to see statements saying how many copies were sold in the first few months.

I was aware of anticipated information on the upcoming generation of game consoles during University (PS4, Xbox One and Nintendo Switch), but it wasn’t until info came out about Nintendo Switch supporting OpenGL that I thought there was a possibility of bringing one of my own games to the console without the help of Unity or another game engine. It was about half a year after launch that I wrote a lengthy pitch about bringing over Gemstone Keeper for the Nintendo Switch, but I heard nothing. I did contemplate following up or trying again, as a few game developers I knew advised, but I wasn’t up for the possibility of radio silence. That was when I decided to do more game jams, particularly in 2018 where I did one game jam a month. Then in late 2018 I got an email from Nintendo asking if I still wanted to bring Gemstone Keeper to the Switch, I responded yes and so starting in 2019, I got my opportunity to develop games for a major games console.

Along with porting over SFML, I decided that the graphics need to be upgraded as the Switch was an HD console, so the game needed to be HD too. The game was originally built at half the 720p resolution, but upgrading involved more than just doubling the size of everything. All the positions, sizes, the movement calculations and other details had to be checked by hand, line by line. It was all worth it in the end.

I’ve gotten to show the efforts of the past year at two large game expos (the news of the latter blowing up on Reddit) and had my work written about in the game development magazine Wireframe.

What’s next?

The thing is, I’m honestly not sure. I said a few months earlier that I want to make my next game a Nintendo Switch exclusive, and I do have an idea or two, but even more than a month after accomplishing a goal that had been in my mind for 10 years, I’m struggling to find an answer to “What will I do now?” I’ll still maintain Gemstone Keeper as long as its necessary, and after only doing one Ludum Dare last year I want to get back into doing game jams, but right now I feel like I’ve just peaked a mountain. I think I’ll just find out where the wind will take me.

If there is anything that I want to show people from writing all this, is that getting to achieve your goals takes a lot of work. I’m as guilty as any other novice in his creative minefield in starting out expecting to make something much bigger than I was capable of. I needed good guidance, support and to take a lot of opportunities to get the experience I have today, and I’m nowhere near done. You might get lucky, but I wouldn’t rely on it. It might have taken 10 years for me to get a game onto a Nintendo console, but at least I have 10 years to look back on.

Time to see what the next 10 years will bring me.

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.

 

Ludum Dare 44 and Console Game Development

As some of you were made aware, I took part in my first games jam of the year. While I said in my End of 2018 In Review that I’d be taking a break from game jams, Ludum Dare felt like the ideal event to take part in as it was in late April and is still one of the biggest and favourite of the online game jams. Even then I wasn’t fully aware it was happening until the week before when theme voting was about to begin, and it happened to be on the weekend where I had no urgent plans. So as the days drew nearer, I made my preperations for a 48-hour game dev session.

Continue reading

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!

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!

RainbowJam – Fursuit Run

For the month of September, I needed to take part in a game jam, but initially, I wasn’t sure which one. I looked through all the jams listed on indiegamejams.com and while you are spoilt for choice, not many were catching my eye. That was until one of my friends from the Birmingham Indie Developers, Kirsty Fraser, mentioned a game jam she was organising.

RainbowJam is a two-week games jam about exploring LGBT+ themes, running for its third year it’s partnered with the non-profit organization Queerly Represents Me and encourages representation and to “create games exploring and celebrating identity, gender, sexuality, sex, life, and love!” After working on Re(re4ti0n, I’ve felt a little urge to create some more experimental games that go against what I generally like, which would be arcade retro shooters/platformers with a neon glow or a retro aesthetic. I also knew I had some 3D functionality in Vigilante that deserve to be worked on enough for a complete game, so I spent a few weeks earlier in September to create a basic 3D game system.

Unfortunately, my 3D stuff was limited to what you can render. I consider Vigilante a 2D game framework with 3D elements, so I didn’t bother implementing 3D collision detection, but I had an idea: what if I make the game function in 2D space, but display in 3D space.

What I did was set up a small 2D enviroment with a tilemap and a basic sprite, and I set up the 3D models to display the scene based on the tilemap while the camera’s position and rotation is based on the sprite’s position and angle.

 

As you can see, I got the tilemape to display really well, the floor being a multi-segmented plane that could display mutliple different tiles in one model, and the walls being cubes that are scaled depending on where their neighbours are. Initially I was creating each cube as a separate model, which I felt was dangerously innefficient so I created a batch rendering group, creating one model but using multiple V3DObject instances to specifiy where that model should be rendered. I did need other things in the game though, stuff that the player can interact with, so I created a special model that could render a 2D sprite (including 2D animated sprites!) in a 3D enviroment, always facing the camera.

The last major thing I wanted was to add an additional level, as wondering a single room is good but extremely limited. As such I made a second tilemap, a model to represent a ramp of sorts and added variables and additional groups to tell what floor the player is on, and as such what should be displayed/collided with. The bigger challenge was implementing how the player will climb up stairs, as it also had to factor falling. Combining gravity with the player moving upwards if the sprite is overlapping the area where the said slope is situated took a lot of trial and error before I finally got a dituation where the player could fully explore the floor above and walk back down to the ground floor!

After making the slope look a bit more like steps, the demo was pretty much ready for RainbowJam.

To make a game for Rainbow Jam, I wanted to make a game that is about sharing love and making people happy. I went with a game about being a fursuiter because as a furry, I know the community is very supportive of LGBTQ+ people and as someone who’s performed in fursuits at conventions and meets, I feel the most important aspect is to make anyone you see feel happy, entertained and loved, even if it’s by portraying a character.

Making the attendees you interact with was probably the biggest challenge, I made a dough body sprite with frames for actions at each angle, and made the object switch frames based on what angle it’s facing from the player. As for the AI I considered setting up a finate-state machine, but fearing it would be too much work for a jam I went for a simple state model. I got my code for line of sight and path finding from previous projects in order to get the attendees  to walk around the floors they are on, wave at the player when they see them and either hug or prepare a camera for a photo, responding to what the player does at the same time.

To simulate the limited vision of fursuits was to overlay the screen with a mask. I added a little bobbing while walking for fun, as seen in the tweet below, however a fellow gamedev suggested getting the camera to bob in time as well, which ended up working pretty effectively!

All the graphics and audio was done on the last day, I used the dough sprite as a base while I apply the colour and details over it. I unfortunately realised the limitation I set myself using a 20×20 tile size, but I think there is enough space to see who is who. As for the enviroments I used some references for hotels, such as the carpet and ceilings. There is a chandelier on the ground floor, which I designed myself to be multiple 2D images rotated because I found most 3D models online to be needlessly complex.

At around 11pm on Sunday, I uploaded Fursuit Run to Itch.io making this the game for September. There is still a voting period which begins when the jam officially ends on the 6th October. So far the reception has been fairly positive, mostly from furries, some non-furries don’t appear to like the idea without actually playing the game as of writing. I’m pretty happy with how the game turned out, as well as the 3D system. There is definitely room for improvement, as there isn’t much optimization that could be done such as view frustum culling. I’m hoping to get it improve for my next games jam, 7DFPS.

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).