Recreating in game assets : Experiments with AI Art

Like it or hate it the AI revolution is coming ready or not. I for one welcome our AI overlords and to appease them I’ve tried to learn their ways through trying to recreate some of my cut scenes and game assets for the smash hit game of 2015 IZBOT and it’s recent(ish) sequel IZBOT 2.

Platform

There are plenty of tools out there but I used Midjourney . The anime style it’s able to recreate using the Niji Model 5 is amazing. I signed up for the Basic monthly plan which was $10 US a month.

Firstly a couple of tips:

I used the Midjourney Discord bot to initiate prompts, this was so much easier as it kept everything in the one place.

The higher the detail in an image, generally the better it will be for a reference, my games are pixel art games so some of the reference are either pixel art or upscaled pixel art. The low res of pixel art seemed to be harder to extrapolate images from.

Image Generation

This is an image that I did a couple of iterations (maybe like 5) to get the final result.

Prompt: lean humanoid white robot with a spherical head and one red eye, black hands, black knee pads, black shoulder pads, looking over the shoulder back to the camera, futuristic city background, full body image, mega man X style --ar 2:3 --niji 5 --s 400 --style expressive

AI Generated IZBOT

While awesome, it wasn’t quite the style I was after so I started using some of my commissioned art as a starting point. The commissioned art is on the right, generated on the left.

Prompt: https://s.mj.run/kMC62ydYL0w futuristic robot with one red eye, video game cover --ar 2:3 --niji 5 --s 400 --style expressive

I got a bit cocky after that one and tried to recreate some of the pixel art characters, with mixed results. I honestly don’t know wtf was going on here.

Prompt: https://s.mj.run/13tFaF0FtGo rhino kaju fighting a white humanoid robot with one eye in a futuristic city --ar 2:3 --niji 5 --s 400 --style expressive

This is the main baddie which turned out pretty good. There were a lot of versions of this where the tubing was all over the place. Still I think it nailed it considering the pixel art source.

Prompt: https://s.mj.run/qxQMUMHENe0 video game villain, human in a futuristic yellow mech suit holding a large high tech rifle connected to a backpack, top body shot --ar 2:3 --niji 5 --s 800 --style expressive

Conclusion

In my little experiment I generated around 300 or so images. I found it hard to get something specific but I can totally see it as a cheap fast iteration concept generator. It’s moving at such a rapid pace though who knows where this will end up.

GameMaker Sequences

With the latest 2.3 update GameMaker has released a super useful new resource called a sequence. This lets you chain and layer objects and animations to create a cool looking…well…sequences.

For me, a really easy win for sequences was to add one after one of the bosses in my game dies. I had already implemented something in code for a previous boss and although the final result looks pretty good. It took a lot of trial and error to be able to do it in code. You can see below I have a number of alarms to control timings as well as a collision event when it hits the ground to trigger more explosions.

Object Effects
Old Way of Creating Effects

To be able to replicate a similar death animation using sequences only requires two lines of code!

var seq = layer_sequence_create("Blocks_Layer", x, y, sq_Boss2_Death);
layer_sequence_play(seq);

The sequence itself is created in the gamemaker UI. You can drag existing sprites onto the sheet and play around with timings. In this cases it allows you to stack explosions on top of one another to create a cool effect .The other thing I’m doing here is a a simple key frame positional move with the main boss sprite as it losses power. You can change a number of different properties such as rotation, scale, colour and position over time. As I said you could do this in code but this shortens the feedback loop and allows you to experiment a bit more freely with different effects.

When you want to trigger the animation you would do something like the below:

  • Create Sequence (same x,y alignment to the boss object)
  • Play Sequence
  • Destroy / Hide original boss object

And this is the final result after the boss is dead and the sequence is triggered within the room!

There’s some really great tutorials out there on sequences, but give it a go it’s really easy to get some quick wins.

iZBOT – Indie Game Postmortem

My game iZBOT has been out on Steam now for a little over a year it’s high time for a mortem of the post variety. I’m hoping this postmortem will help other indie game devs out there in a similar situation to mine.

Firstly a  bit about me, I develop under the company name of Ruxar but it’s just me. I’ve got a full time job and a couple of brats kicking around so game development is very much a part time thing.

From start to finish iZBOT took around a year and a half, honestly though that wasn’t flat out. I had a couple of extended breaks in there where I was either playing or creating other games.

I do believe that I’ve have a tenacity about me, in that I REALLY want to finish things I start. This can be good (I’m able to finish games), but bad as well (because I end up binge watching ‘The Walking Dead’ along the way).

Game

The game is a fast platformer however it isn’t breaking any new ground in terms of originality or mechanics. This mostly due to a combination of things, my naivety of the marketplace as well as my limitations as a part time developer. When I started I’d just watched ‘Indie Game – The Movie’ and knew that I wouldn’t be able to put out something the same quality as Super Meat Boy but if I could put out something similar I might be able to grab some sales within the hardcore platforming segment without really differentiating it from the rest of what was out there, but I’m getting a bit ahead of myself.

iZBOT Jumping

Game Dev Process

When I was working on the game, I’d usually do 2-3 hours a night. This was a mix of programming, art and marketing through dev blogs, social media etc. If I had to divide my time it would have looked something like this.

Time Doughnuts

Marketing

During development I tried to be as open an engaging as possible. Lots of progress gifs on twitter , #screenshotsaturday as well as keeping a devlog on TIGSource and my own personal blog.  Closer to launch I ramped it up a bit. I sent out press releases to gamespress.com for major announcements green light success, release date etc.

Aside from this I did some paid marketing on Adwords and AdDuplex. I struggled a bit with this, I think the CPA was to high and I didn’t want to throw more money at it when I wasn’t really seeing results.

Ads

Expenses

Probably the biggest expense for the game was the art refresh I commissioned from Shawn (who was awesome to work with). With Art, Ads, Licences, Fees etc the total expenses related to iZBOT were around $1000. I didn’t really account for any of my time, I shudder to think of what my hourly rate calculates out to be.

Original Vs Revision

The Bucks

This is the aggregated data across Steam, Humble Store and Itch.io. Steam made up for most of the sales. I love Itch.io, the platform and the focus on indie devs but I only got a single sale from there even when offering discounts greater than what I had in the past on Steam. The game has made bit under 4K at the time of writing.

Riches and Units

Discounting and Pricing

My game is currently priced at $9.99 USD, in hindsight I got this wrong. When the game went on sale initially I was trying to maximise the first period, but quickly got into a fairly heavily discounting cycle. It now goes on sales for 80-90% off. I still might try and experiment with a lower price point and less of a sale discount, but currently the game just doesn’t sell when it’s not on sale.

Full Priced Sale


Final Comments

So if i could do it all again, would I? I think the answer is probably yes. I do love the fact that I’ve made something, people actually buy it play it and even sometimes like it. If I were to do it again, I’d try and optimise the process a lot more. There are a lot of things that take a heap of time but at the end of the day wouldn’t have made any difference to the total sales of the game. In closing, I hope the data in this postmortem helps other people in their game development journeys.

How to make an animated GIF like a Boss

Missiles

TLDR Version

Gifcam + Screen Recorder + ezgif.com = win

Creating Awesome Animated GIFs

If you’re plugging away at a game and want the world to know about it GIFs are your answer. I’m going to share with you today a couple of tips to get the most bang for your buck in terms of the final output and the workflow for creating the GIFs in the first place.

GifCam

GifCam – I can’t rate this highly enough, it’s such an awesome tool for creating gifs. Not only does it compress the crap out of them so you can sneak in under Twitter’s 3 meg limit but it also gives you editing capabilities from within the tool itself. If you aren’t using this GRAB IT NOW! Ok…got it? Awesome.

I try to record my GIFs at 640×360 at 33fps, you can tweak the size and fps that you record from within the tool. Remember that you’re shooting for the magical 3 meg limit. If you’re not going to put this on twitter you don’t need to worry so much about the limit but be cognisant of the file size, you don’t want to be embedding 50meg GIFs in your site, that’s no fun for anyone.

The recording and editing process is fairly straight forward, setup your variables, line it up, hit record and then edit the required footage and save.

This is all well and good but capturing those ultra-rare kick ass moments in your game can be tricky as you need to continually stop, clear and restart the GIF recording so it doesn’t chew up all your memory.

Screen Recorders

What I’ve found incredibly helpful is to capture your gameplay footage using screen recording software such as Camtasia, ShadowPlay or Fraps these seem a lot more efficient are capturing a longer period of gameplay which increases the chances getting in that double jump to wall slide to triple flip ninja kick. Once you have this footage you can just overlay Gifcam to the footage, record, edit the GIF and you’ve just got an awesome GIF on your hands. In Gifcam you can set the frame delay to be all the same by shift clicking on the time delay in the edit window. This smooths it out a bit.

FrameDelay

I generally capture and bunch of footage and then find the best bits and create a heap of GIFs at one time. Enough for a few weeks worth of #screenshotsaturday posts.

Optimize

Once you have the GIF and you’re hosting it yourself or it’s slightly over twitters limit I recommend using:

http://ezgif.com/optimize

This can bring down the size of an already compressed GIF to give you the quickest load speed or squeak it in under Twitter’s limit.

Steam Widget

Steam has a handy little feature which creates a little widget to be able to embed a link to your game in things like a blog post for example 🙂

On your store page, click on the ‘Embed’ button edit the text and generate the HTML then just paste that bad boy in and it’s on like Donkey Kong.

 

Choosing your Steam release date

I’m currently heads down, bums up in gearing up for a release of my game on steam. One of the many decisions that need to be made revolves around what date to to release on. There are a few factors to keep in mind when choosing a release date.

First things first you should obviously allow for anytime to complete all the remaining tasks in your checklist (I’m using Trello for this and it’s magic). Once you’ve come up with an approximate date check out the ‘Coming Soon’ section in Steam. This should give you the upcoming games for your chosen date, make sure there’s not any similar titles going live around this date as it may add unnecessary competition for press. Speaking of press, that should be another consideration, generally Saturday and Sunday are relatively quite days for game articles. So I’d recommended choosing a day early in the week (depending on your time zone you may have to adjust this a bit).

The other thing to avoid releasing in (unless you have a massive following) is the major sales. These change the layout of steam and the visibility of the game may be obscured.

I chose the 1st of September for the release of iZBOT which is a Tuesday. There wasn’t any other similar games around that time, although there is a major release happening at that time.

Good luck with your release!storyEnd_lg

EDIT: OK, so choosing to release on the same day as TWO AAA games in hindsight probably wasn’t the best strategy. I was thinking that the additional traffic would be a bonus and seeing iZBOT next to those titles might give it a bit of a boost, but this is offset by the fact that they are guaranteed to take up at least a couple of the popular new release slots which pushes you down the list.

iZBOT on Greenlight!

I’m very excited to officially announce that iZBOT is on Steam Greenlight!

iZBOT is a faced paced precision platformer that focuses on tight controls and small bite sized platformer levels.

You can vote for our speedy little robot over here:

 

Analytics for Gamemaker

You’ve made an awesome game, sent it out to all your friends, posted it up on TIGSource and Itch.io but you’ve only got a couple of people give you actual feedback.

Analytics to the rescue! Although analytics isn’t going to give you feedback game feel or art impressions. What it can really help with is level design, difficulty tweaking and marketing / promotional items.

My personal preference is Google Analytics, it is really easy to set up gives you a tonne of metrics both custom and built in ones. I use GameMaker to develop platform independent code and then publish it out to the various platforms I’m targeting. One of the main problems with this is that there isn’t a simple analytics solutions that covers the all the platforms that I publish to. This is the main reason why I created a Gamemaker marketplace asset to be able to quickly and easily send events out across any platform. You can check it out here.

Once you setup pageviews from within your game and the data starts rolling in you can get a really good idea of who’s actually playing your game. Apparently I’m big in Iran and China.

Analytics Geo

The real benefits of analytics  really shine when you set up custom events to track key game elements. I set these up to track room by room / level by level. Things like deaths per room allows you to pin point levels where people are getting stuck on and quitting. Other things like level times, collectables, baddies killed. Whatever makes sense to your game.

Analytics Room Events

Run Blob Run – Free Windows 8 Game

Title19803

Our friend Blob has escaped the lab and he’s on the run. Blob is no ordinary run of the mill blob, he’s been infused with colour changing abilities. Change colour by jumping up and down and avoid the lazers.

Run Blob Run is inspired by a couple of great games, Canabalt, Flywrench and the ol’ Flappy Bird. I’ve tried to mix the colour matching of fly wrench with the running and jumping of Canabalt with the death and destruction of Flappy Bird.

Jumping changes your colour on the upward and downward flight. The lazers will only let you through if you’re colour matches.

Use ‘Up’ to jump and ‘Right’ to dash, that’s about it. Sounds easy right?

small

Play Run Blob Run here:

Run Blob Run
Download now from the Windows Store

Silly Bugs

Fixing bugs is a part and parcel with game development. It’s not usually the most entertaining aspect of any project.

Occasionally though you get a silly one that makes you laugh. This happened while I was coding a power up. I had a condition in the game’s step event to add a power up when a certain score is reached, but I didn’t reset any sort of counter, anyways this is what happened:

 

Power Ups Anyone?