DotBox

My First Game

DotBox, released 11 August 2019

I used to play this at school. We’d draw some dots in the back of our school book/jotter and take turns to see who could make the most boxes without the teacher noticing.


The Making Of DotBox

Inspiration

I set a goal at the start of the year to develop and release a videogame. For all I’ve written and designed about videogames, it was simply a matter of time really. Enjoying, discussing and dissecting videogames into their constituent parts inevitably leads to the desire to assemble one for yourself.

Now, I’m not a programmer. I’ve written some code way back at university but, like my (terrible) long student hair, it’s almost all but faded from memory. That being said, I remain comfortable in the presence of code much, in the same way, I’m comfortable navigating mainland Europe providing their language is based on the Latin alphabet. I can look at code the same way I look at, say, Portuguese and bit by bit I slowly spot familiar loops and conditions and I can parse my way to understanding what is going on. Then I Google the rest. Comfort gets me a long way.

I’ve toyed with game ideas before: A text adventure where it is revealed you are actually in the town of Pripyat the morning of the Chernobyl meltdown (this was years before the HBO show); a black box platformer where each level has different surprising mechanics that the player has to discover (this was years before EA ruined the term ‘surprise mechanics’). Oddly, as a professional project manager, I didn’t do any planning before starting to make these game.  So it’s not surprising I didn’t finish a project.

I knew to keep it simple. Simple like a game you play at school. Which is when I realised that I had not come across a digital version of an old pen and paper game I used to play at secondary school. I think we called it Boxes, or maybe it was called Dots. You draw a grid of dots, you each take a turn drawing one horizontal or vertical line between any pair of dots, of you complete a box you win that box and get to take another turn.

Seems like a good first project.

Planning

While watching TV with my wife on the couch, I sketched out the basic flow, scope and started to identify how I was going to program the various objects/rooms/mechanics. When it came to features, categorising them along a line of ‘simple’ to ‘fancy’ helped keep me focused.

In almost all cases, the ‘fancy’ ideas weren’t used and would have either complicated the development or ruined the game. Creating a dynamic grid where the player can set the size seems like a no-brainer. As a player, I tend to always want options presented to me. But here the grid size determines how long it takes to play a game. The final version is a 6×6 grid and takes roughly 5-8 minutes to play. A 7×7 grid pushed the game time to over ten minutes. So a static grid was simpler and, hopefully, leads to a better experience.

Probably should have figured out how to cram loot boxes and micro-transactions into the game though for some extra ca$h. Maybe unskippable ads between every mouse click? Perhaps I’ll do that in DotBox 2 when I partner with EA.

Development

I programmed the game in GameMaker Language (GML) using GameMaker Studio 2. GML is GameMaker’s scripting language and according to Wikipedia is “an imperative, dynamically typed language commonly likened to JavaScript and C-like languages”. For me, GameMaker suits my needs and comes with a number of helpful out-of-the-box features for making 2D games.

Checking the stats page GameMaker insists I spent 43 hours developing DotBox. Now, this is time when GameMaker was open on my desktop so I reckon a more reasonable development time is around 30 hours. It came together over three or four weeks, spending an hour or two in evenings and on weekends, programming the game.

Work In Progress

I should have taken more screenshots of the work in progress or kept a DevLog (which I will do next time). I set realistic goals for each programming session and that helped keep me motivated because I saw progress every time I sat down. Occasionally a session would hit a roadblock. Implementing the text input for the player to write in their name was more complicated than I expected. Here I leaned on YouTube tutorials to hack together something that worked for me. Otherwise, I’m proud to say I programmed this game solo, using only the GameMaker documentation (you can see from my paper notes I identified certain functions like point_in_triangle or object_at_place before I’d written any code).

These two screenshots are the only work in progress shots I have. All the colours are the standard GML colours. I tried to follow the example led by the Plants vs Zombies and Braid development and use programmer art (i.e. basic placeholder art) for as long as possible. I was entertaining the idea of maybe having the game look like pen and paper but ultimately decided that I enjoyed the crispness of the final colour palette.

End Result

I’m very happy with DotBox. I’ve achieved a goal for the year and it’s certainly exercising the same creative muscles I haven’t really been flexing since we finished up with Five Out Of Ten. I’m not sure what to make next but I know for sure that I can do it. I’m an independent game developer. Quick! Time to make Kickstarter that over-promises and under-delivers!


Post-Mortem

What Worked Well

  • Keeping it simple
  • Planning out the game on paper as much as possible before starting
  • GameMaker Studio 2 is very beginner-friendly
  • Flipping the mouse colour for each player and the big banner seems to be an effective way of indicating who’s turn it is. Before this, there was a lot of explanatory text on the screen trying to get the point across. Show don’t tell.
  • I used a colour palette I’ve had bookmarked for years. The game looked 300% better the moment I implemented it. I like the idea of using the same colour palette across my simple games.
  • The name is a cute play on DOSBox. I thought about using DosBox as visual inspiration but the name was the last thing I did in the project and I was keen to wrap it up by that point. I like literal names for games.
  • I think having a tutorial gif and the steps on the splash screen is a good way of explaining how to play the game. I can also use this for marketing. This helped me keep the actual game screen really clean and simple. It’s basic as all heck, but hopefully, it does the job. I say hopefully because…

What Didn’t Work Well

  • Playtesting this game sucked! I wasn’t sure if I could automate any of it so I resorted to playing it over and over again by myself, trying to find any weird edge cases where I could break the game. I played it a few times with my wife but I really should have used/paid/bribed others to test it out for me. Next time I will definitely consider how to test features as I implement them.
  • Notice how each player has their own colours to choose from? That’s because I could not implement colour picking it so that if player one picked red then player two could not also pick red. In the end, I duplicated the object used for picking a colour (obj_colour_picker) for each player and just gave them different colours. Next time something like this comes up I will make use of a support forum or chat to help me out. Asking for help is totally legal!
  • I didn’t think about accessibility until I was uploading the game to itch.io. By accessibility I’m thinking mainly about whether the game is colour blind friendly. Hopefully ,the range of colours means there are friendly combinations. Next time I will tweak my colour pallette to be colour-blind friendly (which is something I do at work already).
  • There’s no sound in the game because I couldn’t find sounds that didn’t become grating. Background music, sounds when you draw a line, complete a square and win are coded in but were all commented out in the final build. I think it’s for the better. Next time I will deal with this rather than just omit it entirely.
  • It’s simple but is the game too basic? I don’t mean the game of drawing lines and boxes, but rather general quality of life features. You can’t resize the window for example, or pick a resolution. The names field is limited to ten characters because I couldn’t see a quick way of dealing with word wrapping and I didn’t want to have a UI that dynamically adjusted. Next time I think I will start with basic game features like options menus to change audio and visual aspects of the game. Certainly, they will be included.
  • No sex. I mean, look, sex sells. We all know this. And, yes, the game is a free download about drawing lines. But can we ever know that DotBox wouldn’t have been better with more sex in the game? Next time will be different.