• Sketch of the Day


  • Blog

    • photo from Tumblr

      @amymja and I put together a game for Ludum Dare 41 this weekend - BLOCK DROP MONSTER CHOP! It’s a chaotic two player co-op adventure mixing up match-3 and RPG gameplay elements. It’s meant to be played on the Winnitron arcade machine, but can be played using a keyboard on a PC as well. 

      Here’s our LD submission page! We had a lot of fun coming up with mechanics and getting a whole bunch of folks at the local meetup for the jam to do some crowd VO. Special thanks to Julian for doing some impromptu audio production! :)


    • 2017

      Hi! I posted almost nothing on this blog the entire year, woops, but believe it or not I’m still here! Just… busy. Anyway, 2017 ended up being a pretty great year for me personally - filled with travel and plenty of awesome work-related stuff.

      I’m pretty sure I visited Owlchemy in Austin like 4 or 5 times this year, so combined with my own vacation I spent quite a bit of time away from Winnipeg overall. As always, I totally forgot how much stuff happened this year until I took a bit of time to look back. There were so many smaller jams where I didn’t end up turning anything out but still had fun, unfinished projects, parties and get-togethers with friends, I’m sure there are tons of things I missed that should probably be on this list. I’m excited about work and my own ongoing personal projects going into 2018 - nothing left to do today but relax a bit and get ready to get back into things tomorrow :)


    • Rick and Morty VR is out today! I’m very proud of what our team put together, and can’t wait to see what people do with it once they get their hands on it :)


    • photo from Tumblr


      Last week I released a small interactive experiment based on my sketches, called Seven Doorways. Depending on what day of the week you run the game, it’ll present you with a different scene to check out.

      This project was an experiment to see if I could translate my sketching style into a real-time 3D setting. One of my long term goals is to make a full game out of this style and mood one day.

      You can download and play Seven Doorways here.


    • 2016

      I figure I’ll keep up the tradition of doing a new year’s roundup post of the major stuff I did this year. Let’s see…

      5 game jams this year, not bad! These posts are always fun to put together because I tend to forget most of the things I did, especially early in the year. Despite all the anti-2016 memes towards the end of the year, it was a pretty great year for me personally and career-wise. Looking forward to more crazy VR stuff and personal projects in 2017. I’ll also hit my 2000th daily sketch at some point later this year, so that’ll be cool too!


    • irldianite:




      “SUNWARD” by @graebor.

      “Hunt creatures and put their spirits to rest. Your spear is more than just a tool, it holds an ancient power.”

      While it may seem horrible to hunt down that wonderful creatures, you’ll realize soon why you have to do it: Something is waiting. A soul-eating fire, which will burn down everything - the landscape, the ‘animals’ and you. But your spear isn’t just good for killing. You can fight the flames with it. By that ‘cycle of life and death’ mechanic “SUNWARD” delivers a very atmospheric gaming experience. >>PLAY

      More games made by graebor: >>HERE

      It’s been a few weeks since I released SUNWARD, and I just realized I never posted about it here. It’s my entry for Ludum Dare 36, and I’m really proud of how it came out!


    • photo from Tumblr

      Last weekend I participated in my city’s annual local game jam - Pegjam! Working with awesome friends Ibrahim Shahin, @amymja, @mafubash, @manreeree, and Bogdan Rybak, we managed to put together this weird game called Fancy Fartifacts & Devilish Deals! Give it a play here if you’re interested in running a fantasy item shop :)


    • GameJolt Highscores with Unity

      I recently implemented highscores in Polydrone using the GameJolt API for Unity, so I thought I’d throw together a quick guide about the process, which had a couple of small quirks in it. A lot of this is just rephrased from the official tutorial found here. Here are the steps I took:

      Download and import the GameJolt API (v 2.0) into Unity.

      Make sure your game’s page has been created on GameJolt. It doesn’t need to be published or even have any builds attached to it, but you’ll need a Game ID for it in the next step. When adding your game, make sure you select Unity as the Engine/Language/Creation Tool.

      In Unity, go to Edit > Project Settings > GameJolt API. In the asset that’s been selected, enter your Game ID and Private Key, which can both be found on your game’s dashboard on the GameJolt site under Game API > API Settings. The other settings you have access to in the Unity asset are described in the tutorial, but their default settings will work fine.

      Next you’ll need to open the scene in Unity which runs first, and go select GameObject > Game Jolt API Manager to create the manager singleton object. For Polydrone, I simply created a blank scene called Loader which loads first in the build order. This scene contains the GameJolt API Manager object and a simple script that loads the actual Game scene in its Start() function, so the user never actually sees the Loader scene. In Polydrone when you hit try again, it loads the Game scene again, but since the GameJolt API Manager is in Loader, it won’t try to spawn itself a second time.

      Notice that when you create the Game Jolt API Manager, Unity automatically creates an “EventSystem” gameObject as well. Since all of GameJolt’s ui uses the Unity ui system, any scene where you want GameJolt’s sign in page to potentially appear needs an “EventSystem” object as well. If you don’t have one in the scene and try to display GameJolt’s ui, it will throw mysterious nullrefs that don’t do a great job of explaining the problem. For Polydrone, I had to copy+paste the EventSystem object from my Loader scene into my main Game scene before it would work.

      You’ll also notice a warning when you run the game stating “DontDestroyOnLoad only work for root GameObjects or components on root GameObjects.” This is a bug within the API object itself, but it’s harmless so I’ve chosen to leave it alone rather than mess with the inner workings of the API.

      Now, the code! If the user is playing in a WebGL player on the GameJolt site, they should automatically get logged in. However, to make your game function anywhere, you’ll want to add a quick way for users to sign in. Thankfully this is pretty easy. Add a button or something on your menu that calls this code:

      GameJolt.UI.Manager.Instance.ShowSignIn((bool success) =>
      if (success)
      Debug.Log(GameJolt.API.Manager.Instance.CurrentUser.Name + “signed in!“);
      Debug.Log("Didn’t sign in!”);

      This brings up GameJolt’s ui allowing the user to sign in. You can of course change the contents of the callback function to perform different actions depending on the result.

      Anywhere in your game, it’s easy to check if a GameJolt user is signed in, just check:

      bool isSignedIn = GameJolt.API.Manager.Instance.CurrentUser != null;

      If the CurrentUser isn’t null, you can grab the user’s name by checking CurrentUser.Name, which can be handy to display in your game’s own ui to confirm that the user is signed in.

      Here comes the actual submitting of the high score! At the point in your game you want the score to be finalized, you should first check if the user is signed in using the code above. If they’re signed in, you can submit a score normally, but if not you’ll want to submit a score as a guest instead. For example:

      if (isSignedIn)
      GameJolt.API.Scores.Add(scoreValue, scoreText, tableID, extraData, (bool success) =>
      { Debug.Log(string.Format(“Score Add {0}”, success ? “Successful” : “Failed”)); });


      GameJolt.API.Scores.Add(scoreValue, scoreText, guestName, tableID, extraData, (bool success) =>
      { Debug.Log(string.Format(“Score Add {0}”, success ? “Successful” : “Failed”)); });


      Details explaining the parameters for the above functions can be found in the official tutorial.

      If you want to allow guests to submit scores, there is an extra step which is not immediately clear. Guest scoring must first be enabled via your game’s dashboard on the GameJolt site. Go to Game API > Scores on the site, and click the grey box for “Main” to expand its options. Below you’ll find a toggle to enable guest scoring, and other self-explanatory options relating to your leaderboards.

      That’s all there is to it! You should now be able to upload a build and have your highscores be submitted. Of course there’s a lot more the GameJolt API can do which I haven’t dug into yet, but it’s all written out reasonably well in the official tutorial.


    • Polydrone


      “Polydrone” by @graebor@amymja & @CadillacLoops.

      “Reshape your drones to battle enemies and go for the high score!”

      The arcade feeling in “Polydrone” is awesome: You control a network of connected drones, which have got some kind of gun between two of them. You have to switch between the drones and to locate them to different locations to shoot at the waves of enemies. And don’t get me started on the visuals… I mean - whoa! Amazing fun! >>PLAY

      More games made by graebor: >>HERE
      More games made by amymja: >>HERE

      I’ve been meaning to do a quick post about this game we put together, but it looks like gamejamcurator beat me to it! Fantastic blog to follow if you’re at all interested in indie games/jams btw :)


Older posts