Inspiration

I've wanted to be a game developer for a very long time. I wanted to be a software developer for a very long time. Last year I left my job and did an intensive coding boot camp (React/Node.js).

Seeing the Reddit hackathon gave me a tangible goal to work towards - established framework, concrete timelines, and a lot of new things to learn.

I could have made things easier on myself by using the React template, but really wanted to learn something new and shiny, so went for the just released beta version of GameMaker.

What it does

The game is a deceptively simple drop and match puzzle.

The game is set on a seven squares grid where discs drop down and must be matched: number of discs in a row or a column with the number represented on the disc. Or in this case, the clock dials.

Difficulty of the game is due to the rising floor after a few turns and some discs being 'secret' which means they have to be broken out before they can be cleared.

Fun of the game is in the clearing chains that can be set up - watching it all clear in one turn is very satisfying. And of course getting the high scores - number go up! to the moon!

How I built it

I used the newly released GameMaker that has the Reddit as a target and the Devvit GameMaker template.

I made the sprites in GameMaker. They're event animated (the hand spins as the dials drop, though I think it's a bit hard to spot).

GameMaker communicates with the Devvit server via the Reddit API functions that were provided in the templates.

Using the Devvit API, I add the 'daily' component of the game by seeding the start of the game off the top post in r/all that day.

There are leaderboards for daily, weekly, monthly, yearly, and all time (may have gone a bit overboard!). If a player wants to share their best score, their score and rank are posted for the leaderboard they want to announce it for, in the stickied thread under each daily post.

Challenges I ran into

Oh my, what have I not run into!

Before this project, I'd not built anything using a game engine, and I coded only one other game (JS). On top of my lack of knowledge about game development, the GameMaker client version that integrates with Reddit was released only a day before the Hackathon started.

I spent the first five days trying to learn GameMaker and quickly discovered (and logged and confirmed) four bugs (two have since been fixed! and two have workarounds). The new Devvit GameMaker discord channel did not have a lot of action, but I found some reddit posts where people were having similar issues, so thankfully I got myself sorted.

Other challenges were:

  • learning how to do pixel art (a lot of youtube videos were watched)
  • understanding resolution and scaling (a lot of grumbling from me about the Devvit pop up window and resizing of GameMaker room sizes)
  • an odd error (literally, some code was commented out) in the Devvit template that handles this resizing, making everything super skewed (thankfully, a helpful redditor found and pointed out what needs to be modified)
  • non-integer ratio of pixels!
  • battling with Redis stores and functions
  • game not playable on Android - turned out Android sends token via a different query than browser, and the GM-Devvit template had no check for that (now fixed in new template)
  • not understanding initially what 'daily' means in terms of reddit posts, grateful I attended the office hours on the Devvit discord

Accomplishments that I'm proud of

  • Two of the issues I raised with GameMaker were fixed and one is even listed in the latest version change log
  • Learned GameMaker and Devvit and Redis from absolutely no prior knowledge in about seven (solid work) days
  • Released a game out to the world
  • Kept troubleshooting the released game until it worked for the Android users
  • Rebuilt parts of the game at the 11th hour with cron scheduler and daily/weekly/monthly/yearly/alltime leaderboards

What I learned

  • How to use GameMaker
  • How to code in GML
  • How to communicate with Devvit API both server to client and server to GameMaker
  • How pixel art works (and does not work at wrong resolution sizes!)
  • How to reverse ranks in Redis without access to some Redis options
  • How to schedule cron jobs

What's next for S3ven D1als

I hope people play it and like it! It's super exciting to load up the leaderboard and see the names and ranks change - new people are playing and old ones are coming back. One person even said they love this game. It's an amazing feeling!

Perhaps I will learn enough about art to replace the sprites with more polished versions, or get them from elsewhere.

Maybe optional sounds, although I and many others turn off the sounds on mobile puzzle games.

Note for the judges

The game is daily with a cron scheduler, this locks the previous day's post. I have hard-coded one post to not expire and this is the one linked in this submission so that judges can find an active version straight away. It won't have the daily leaderboard (because by the time you see it, the day has moved on), but the all time, yearly, monthly, and weekly should still show (though weekly might also move on depending on when you're testing). To see the daily scheduler with varied leaderboards, please go to the subreddit to see that day's post.

Share this project:

Updates