Procedural Meshes: Generating Gemstones Part 1

So two years ago as a student researching for his thesis, I took part in the first procjam. Organised by Michael Cook, this is a games jam that focuses on procedural content, whether that be games, art, text, tools, anything that can make something. Last year I decided to go a bit basic, write some pre-existing noise and maze algorithms for the Haxe Programming Language, which I eventually tweaked and published on Haxelib and Github as MAN-Haxe.

Last year, I decided that for my current project, I was going to do something relevant, and this time use no pre-existing algorithms, this is where the Gemstone Generator comes in. I have images of the meshes below that show the progress from early successful generations to the final most generation test before the UI layout was cleaned up and the demo was uploaded. The generative process is now being used in Gemstone Keeper, albeit with a different rendering process considering I’m turning Unity’s Procedural Meshes into SFML meshes.

Capture Continue reading

Weapons of Gemstone Keeper

So for this week (11th – 17th January) I decided to focus on weapons, a pretty important element of twin-stick shooters. I didn’t want to stick with using one weapon for testing, so I decided to see if I could make a few more for the game. This should explain how I approached the problem and what the weapons system currently looks like for Gemstone Keeper.

Continue reading

New Year

Celebrate what you have accomplished, learn from what went wrong, and most importantly you must move forward. Hope everyone has a great 2016!

We Are SurroundedTitle

Ag8tZsx

One of my goals for 2016 is for Gemstone Keeper to be on Steam Greenlight. I’ll will be sure to have an alpha build ready for play within the next few months.

Grow Trees… Or Something – Ludum Dare

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

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

Continue reading

Understanding ASCII Art

It’s pretty easy to see that I’ve taken the step of using ASCII art in my next game, Gemstone Keeper, and it’s pretty difficult to not notice it if you see the screenshots I’ve been posting for #IndieDevHour or Screenshot Saturday.

This writeup will explain my understanding as mainly an outsider and relative newcomer to the ASCII art and Roguelike Development scenes, and hopefully explain my reasons why I chose to move to ASCII art, and how I am approaching it to make my own style to the art form.

Continue reading

Allegro to SFML (aka How I learned to love VertexArrays)

If you have been following me on Twitter, you may have noticed that after game jams, I’ve returned to Gemstone Keeper. Since I started work on my thesis project, GenLevelTools, I have been working in Allegro 5, using my previous experience and the already functional graphics rendering, for both the GenLevelTools and Gem Finder, the simple prototype that is now Gemstone Keeper.

However I decided that I would change the underlying framework from Allegro 5 to SFML 2, the thought of changing systems has been in consideration since IRDC 2015, which came about for numerous reasons:

  • The Gem Finder code needed updating, as it was written during a time where I was under pressure to meet a deadline and have something to show, for what was essentially the most important part of my University degree. Now that I have graduated, and have gotten a full time job, I have a bit of flexibility and less pressure for me to make some improvements. If I was going to update the current code, I needed a framework that could satisfy the needs of a new system. I could rewrite the code with Allegro 5 with my experience and confidence behind me, but…
  • Allegro 5 has limitations, which makes some of my concepts for Gemstone Keeper less feasible. The last stable build of Allegro was back in January, yet it lacks certain features that you’d find in other C++, C# and even Haxe frameworks. Specifically shader support for effects, and gamepad support beyond DirectInput. While shaders are a feature of Allegro 5’s unstable builds, there is the issue of stability and compatibility. My attempts to get the unstable builds to work have been less than futile, and even when I finally got a functional build of the unstable release, I was met with a lack of certain libraries to run shaders (namely libpng1_6.dll). It wasn’t worth it, and if it was a struggle for me to get it to work, then it would be worse for me to help get the game running for other people. Also Xbox 360 controllers are recognised as DirectInput devices, which does have some limitations, specifically with the analogue trigger buttons.

This is where SFML comes in. Like Allegro, SFML is a set of C++ libraries that can be used to develop games for PC, Mac and Linux with experimental Android and iOS ports. However, SFML does have shader support with little to no issues installing either the latest source code or direct download from their stable release. While neither have XInput Gamepad support directly, the SFML community have had no problems showing how easy it is to make an XInput wrapper for SFML.

The real seller for me is that SFML’s text rendering has a much superior output, but also support for wide literal characters. This is a big deal for anyone who is developing games that rely on text, such as games with ASCII graphics.

Firstly, Allegro’s text rendering seems to struggle with rendering text that isn’t a factor of two, or below a font size of eight. This is pretty reasonable for using TrueType Fonts that may not have data for all sizes, but software that uses a lot of text have algorithms that help keeps the quality of text consistent regardless of size. In my tests, SFML handles this quite well, while Allegro has issues such as lack of transparency and defects with certain characters at small sizes.

Rendered text comparison.

Left: Allegro build Right: SFML build

Secondly, being able to use wide literals means that I am no longer restricted to characters in the ASCII format, which have less than 255 usable characters, now I can use over 1000 possible characters in the Unicode format, which as of C++ 11 is fully compatible (SFML says that they don’t support unicode formats at the moment, but as long as the font supports them, SFML should render them!). This means more possible creative designs, so more enemies, environments and other features are possible!

Use of unicode characters in game.

Copyright symbols as enemies, because I can now!

Most importantly, SFML is being constantly updated, like I said earlier, the last stable release of Allegro 5 was back in January. In comparison, since starting the framework transition back in August, SFML has already had two updates for SFML 2. It also benefits that SFML is an active community, and appears to have more of a social media presence. These factors help in both finding framework issues, and possible advice for certain functionality.

The new framework I’ve been working on has a slightly different approach, more similar of an approach to Flixel, like what I did earlier with my MonoGame framework Ricoh2D. As such, I’m using an inheritance of a singular base class, as well as a heavy use of object pooling. This way I plan on having updating, rendering and collisions accessible for each object, to make it easier to add and remove objects at runtime. Like Ricoh2D, I’ve aimed to have collision checking handled on a single function call, with the option to pass in a function for collision response.

Because I’m using SFML, I’m also hoping to produce a more optimal and performance with the aide of VertexArrays. All renderable objects in SFML use Vertices to determine the coordinates, texture coordinates and colour of each point of a graphic. During development, I’ve found it is highly efficient to use VertexArrays whenever you can for more custom rendered objects, as there is some overhead whenever you perform a draw call, although the effect is larger in debug mode. For example, when I initially built a tilemap renderer that drew each tile as a separate sprite, I was getting around 400 FPS. When I changed it use a single VertexArray object, where each four vertices is a single tile, the framerate shot up to 1200 FPS. I have since used VertexArrays to replace SFML’s built-in text renderer with my own, that allows me to have text alignment combined with multi-line rendering, when the built-in renderer only had multi-lined text while aligned left. I am considering creating a sprite-based particle system using vertex arrays, as my current system uses multiple sprite objects.

As of writing, the transition of features from the Allegro version to SFML version of Gemstoke Keeper is around 75%, most of the basic rendering has been implemented, the level generation has been transferred over. I need to implement the current enemy behaviour as well as level progression and other enemy screens to have a complete transfer. Once that is finished, I should be able to work on my plans for new features, and should start planning on releases.

#GBjam, Game Development and Work Updates

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

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

Continue reading

IRDC 2015 Review

So to sum up last weekend, when I went to Nottingham for the International Roguelike Developer Conference 2015’s UK event, I’m not kidding when I said I had little expectations, considering that the Roguelike genre is still fairly new to me, despite spending a year researching procedural level generation for my University dissertation. Despite this, I had a great time and was able to gain a lot from the games, the genre and the role of procedural generation from these two days.

Day Zero

Although I have met the event organiser Mark Johnson and Roguelike developer Darren Grey from the PROCJAM conference organised last year, I wasn’t sure if I was able to meet anyone at the pre-meetup, especially since Mark unfortunately went down with food poisoning before the pre-meet began. However I decided to head off to the Bell Inn and see if I could find anyone.

By chance, I went to the bar and a man sitting at the table asked me “You here for IRDC?”, that man was Johannes Kristmann, and with him was Paul Jeffries. We talked about games, had drinks, and they joked about IRDC events of the past and eventually more people showed up, including Alan Charlesworth, Tom Betts and Ido Yehieli. We all decided to have more talks and drinks at Darren’s apartment block until we all decided to head to our respective hotels to prepare for tomorrow.

Day One

These were all the talks that were given that day (taken from Mark Johnson’s blog):

1025 – “”And [my bot] vowed to return victorious!”: Spelunky as an AI Benchmark” (Tommy Thompson)
1050 – “Dungeon Crawl Stone Soup Development” (Pete Hurst)
1115 – “Alternative Death Systems” (Darren Grey)
1140 – “Generative Design” (Paul Jeffries)
1205 – “Modability and You” (DarkGod)
1330 – “Making a Roguelike that uses Twitter Data” (Sean Oxspring)
1355 – “KeeperRL Development” (Michal Brzozowski)
1420 – “The Curious Expedition Development” (Johannes Kristmann)
1445 – “Murder Puzzle – No Longer a Roguelike” (Ido Yehieli)
1510 – “Scaling Brogue“ (Flend)
1535 – “Creating a Procedural Level Editor” (Me)
1600 – “Sir, you are Being Hunted Development” (Tom Betts)
1625 – “Algorithmic Generation of Global Racial, Cultural, Religious, and Architectural Variation” (Mark Johnson)

There were so many great talks, some were really funny and others were really informative, I even managed my talk, despite all my nerves. I spoke about a part of my University dissertation, the Procedural Level Editor.

https://i0.wp.com/i.imgur.com/LpRWHmy.jpg

https://i0.wp.com/i.imgur.com/N96tsAW.jpg

If you didn’t catch them on Twitch, all of the talks will be online on Youtube in the coming weeks. These talks were followed by curry, and then drinks at Ye Olde Trip to Jerusulem, possibly the oldest pub in England.

https://i0.wp.com/i.imgur.com/s4TEZqW.jpg

Day Two

This was an experimental part of the day, where members of the public got to try out some classic and modern roguelikes such as DoomRL, Angband and Incursion among others, as well as a selection of board games that possibly inspired Roguelikes.

https://i0.wp.com/i.imgur.com/6yAauak.jpg

https://i0.wp.com/i.imgur.com/lgqNwtW.jpg

https://i0.wp.com/i.imgur.com/Cd4yqz5.jpg

So I had a really fun time, and got to speak to a lot of talented game developers about procedural generation and gaming in general. I got to talk about my University dissertation, and I also got to speak on roguelike radio about the conference, which should also be online soon as well.

https://i0.wp.com/i.imgur.com/Sa877Nz.jpg

So I think it’s time to announce my new main project, during my dissertation I wrote a short prototype game to demonstrate the procedural level editor. I’ve decided to extend this game to be Gemstone Keeper, the roguelike twin-stick shooter. It will use the Procedural Level Editor, which I will also release for public use when it comes to a stable enough point.

https://i0.wp.com/i.imgur.com/3R45Qzw.gif

ThreeThingGame and the Ricoh2DFramework

Between the 11-12th of June, I went up with a friend and fellow Windows Games Ambassador Aaron Smith, along with a games design student Nathan Holding to the University of Hull for ThreeThingGame, the University’s 24 hour games jam. The premise is that each team was provided three words, and were tasked with making a game that incorporated them. The games would be judged on how well they fit the three things, and the quality of the game overall and the winning teams would get prizes.

This was going to be an interesting event for all three of us, as despite being used to travelling around several campuses for events, Hull was way far out for us. We were also aware that the majority of students there had been at ThreeThingGame before and new how it all worked. However Aaron and I were a bit more confident in what we could pull off together since we went through a games jam one week prior, where we learned to have a proper functioning version control system that the tools can work with, as well as having an actual artist working with us this time. Our three words were Room, Moon and Lune, and from that we made a Lunar Lander style space game where you avoided asteroids and landed on moon bases.

We also had an additional tool to work with, my Ricoh2DFramework. I don’t think I’ve mentioned it before on this site, but the Ricoh2DFramework is a framework for MonoGame. The purpose of the framework is to provide classes to assist with graphics, collision, input and audio among other functions. I was actually quite eager to use Ricoh2D in a game development project to see how well it works practically.

Game Development went rather well, and while there were some small issues found in the Ricoh2DFramework, they were easily fixed and all of those changes have been uploaded to the Ricoh2DFramework’s repository. There were also some performance issues that required some work arounds in order to avoid (slow downs, glitches and crashes galore), but in the end we finished the game.

What went right:

  • Proper source control: Using C# and MonoGame with Github is much better than the last games jam at Stafford, where we tried to use Unity with Git. Overall it was a nightmare back then to merge all the changes and ensure the project work. Using a system that is completely text based and readable made the process much more easier.
  • More prepared: Using the Ricoh2DFramework definitely saved some time in developing the game, and even though the framework had issues they were much quicker to deal with instead of having to build everything up from scratch.
  • Having an artist: Definitely enables the team to work on the game while assets are being created, instead of having to be made during or after development where issues can arise.

What went wrong:

  • Didn’t sleep enough: All three of us, me especially, thought we could spend the entire night working on the game. We didn’t. I could barely stay awake after literally staying awake for 24 hours, even with an abundance of food, drink and snacks to help us keep our energy.
  • Technical issues: While some performance issues were most likely due to some of the original code that was developed for the game, we also had numerous unexplained crashes from Microsoft and SharpDX libraries. This was especially bad when the game crashed unexpectedly with an unhandled exception while judges were looking at our game. This could’ve been one of the reasons why we didn’t get a place in the rankings, but since we were still using the Technical preview, hopefully issues would be ironed out afterwards.

Overall, I rather enjoyed ThreeThingGame. It’s a neat idea for a games jam and everyone at the University of Hull was very enthusiastic and eager to make games, which makes it even more impressive as the University doesn’t have a specialist games course unlike Staffordshire University.

Now it’s back to the Procedural Level Editor and my newest game project Gem Finder, where I’ve already started on new features…

University Finished

Hey everyone, sorry it’s been a while, but for the last few months I have been incredibly busy with University work, plus I have had some technical difficulties which I’ll explain further later on. However, the good news is that it’s all finished!

That’s right, all of my remaining assignments, which includes one mobile game written in MonoGame, one PC game developed in Unreal Engine 4 with a full game development team of artists, designers and other programmers, my thesis on Procedural Content Generation to Create Levels in Games, and the combination of a Procedural Level Generator, Procedural Level Editor, and 2D Tilemap Shooter which makes up my dissertaion artefact, were all finished in time to make up my full University degree!

Continue reading