I made a game! :D
It's called pozzle and it's a puzzle game. Here's my short description I use everywhere now:
pozzle is a minimalistic puzzle game that changes the way you think. In 6 stages and 60 levels, it squeezes your mind to a pozzle-solving machine. This is one of the most difficult puzzle games you have ever tried. Plan your path wisely or travel for eternity because pozzle will not forgive your mistakes.
Gameplay kinda works like the ice sliding puzzles that you played as a kid in Pokèmon Silver/Gold but taken a bit to an extreme. It's also inspired by Q, which is one of the Crafty demos but also just a fantastic game in my opinion.
Here's the trailer I made for the launch:
The idea for pozzle is about 9 months old. When I decided to work on it in Crafty this summer, I had already made a prototype using my own little game engine about half a year prior to that. I had abandoned the prototype after a while because the code was just a huge mess and I lost interest.
Now that I've actually completed a game, I can say that one of my best decisions was to use a game engine. If I had written everything from scratch, I probably would have had fun but never would I have finished my game.
So in total the game took me about 3 months to make, I'd say. 1 month for the prototype that taught me a lot about the design difficulties and complexities that come with pozzle's core mechanics and another 2 months for making the game in Crafty, designing the UI, making the soundtrack (which was depressingly hard if you know that I once considered becoming a full-time guitarist. Now I know that would have been a mistake. :D) and designing all the levels (60 in total).
The great thing about developing pozzle was, that it's a pretty simple game. I didn't need to put in a ton of work trying to make the game juicy because I could just tell people that it's meant to be minimalistic.
Also, from the start, I set myself the goal to actually finish this game and release it. I still have many ideas for interesting mechanics that I could have implemented and I've gotten some great feedback which I could have used to make the game more accessible, more forgiving and more fun. When I started showing off alpha-builds on Feedback-Friday, I knew that I wanted feedback to make the game better. But I only wanted to implement stuff that wouldn't take my development off track for too long. I wanted to get done.
Damn, being in touch with game developers is so much fun. When people you respect retweet you or give you feedback or follow you on Twitter, it's such a great feeling. I'm not hugely involved with the gamedev-community but having other game devs just talk to you and not ignore you (even though you're a completely new and unaccomplished) is amazing.
People on Feedback Friday and Screenshot Saturday were always so extremely motivating and positive. They never looked down on you because your game isn't an ambitious MMO or doesn't have a unique art style or only uses placeholder art. They always seemed to look for the things that make your game unique and tried to help you amplify that. Awesome, awesome stuff!
Making pozzle practically meant doing one of these things: Fixing bugs, adding features, making levels, making music or making promotional material. The great thing about it, is that these areas all kind of satisfy different creative needs: do coding if you're in the mood of being analytical and rational, make music or work on the art if you feel like being really creative, work on levels if you've felt inspired game design-wise or work on promotional things if you want to get feedback or just work towards finishing up the game.
I always tried to keep making progress and having the ability to put on a creative, analytical or marketing hat depending on my mood really helped.
I get this every time and it gets worse the further you are in development. At some point my code base always reaches the point where I use a few hacks to get things done. This is when I have to start pushing myself to keep on implementing features even if the code base isn't perfectly clean. I don't know why this is still a problem for me because I always realize that the tasks I've been procrastinating never are as difficult or complex as I think they might be beforehand, even at a further development stage.
I made pozzle during my semester break from Uni, so I had a lot of time. I treated this project like a day job which helped a lot because there are no excuses not to work on it, even if you don't feel like it. And once you start getting some stuff done that day, it gets fun and time flies.
The game is basically done in HTML5. I used Crafty as a game engine. Crafty's component-entity-architecture is brilliant. It's powerful and clean but also extremely easy to use. They also have great support forums where you're being helped out by Crafty's main contributors. Particularly starwed was always very helpful, thank you!
What I didn't like about Crafty, was that I always felt like its performance isn't as good as it should be. Crafty games I've tried on older machines (including my own one :() never ran very smoothly. I'm not sure if it's entirely Crafty's fault but other games seem to run quite well where Crafty games don't.
I wanted to package my game as an app if possible, because I think it adds more value in the eyes of the user. If a game is on the web, it's easy to call it "just a browser game" and never play it more than once.
I read about node-webkit somewhere in Rezoner's (the guy who made QbQbQb) blogs or tweets. It's a brilliant tool for packaging any HTML5-app as a native application. That means you can use the power of node.js inside the DOM.
Thanks to node-webkit, pozzle is available for Windows, Mac and Linux and there's only a single code-base to mantain.
I'll definitely be using node-webkit again. It's so super-easy to use and anything that runs in Google Chrome will seemlessly run in node-webkit. ZERO issues!
I think nedb was super-easy to use in conjunction with node-webkit/node.js. I use it for keeping track of highscores and level progression in my game. You tell nedb which file you want to store the information in and then use MongoDB-like calls to write and read data from it. It took like an hour to learn about and implement.
Crafty allows you to create DOM entities inside your game but the functionality is a bit limited. I decided to kind of write my own UI-components with some spaghetti-jQuery manipulating templates created in jade. This worked well but I'd probably use Backbone for handling views if my UI needs were a tiny bit more complex.
I also used the jQuery-plugin CarouFredSel to make my stage selection a bit more fancy.
The reason I'm selling pozzle primarily, is - like packaging the game as an application - to raise it's perceived value. That is why I was looking for a sales-system that is easy to manage for myself but also accessible to the customer. I didnt want to use a software solution that I'd have to install on my webspace, even if it meant slightly higher profits.
I was going to go with Sellfy. I love the clean UI, the transparent pricing and it's easy to start selling. But then I did some googling and found out that not only big indie titles were selling through Humble Store. I figured I might as well try and get a Humble Widget set up for pozzle. So I e-mailed Humble Bundle support and pretty much immediately got an answer with a link to all the documents and forms I needed to sign and fill out. A few hours later, my widget was set up.
I think selling through Humble Widget is great because indie fans are already familiar with Humble Bundle and they have a really good reputation. Also, their product management dashboard is pretty cool. I can easily generate as many gift codes as I want to promote my game, get detailed statistics on hits and sales and access all important customer data I need to give support.
Humble Bundle has been amazing to work with so far and I'm extremely greatful that I got a Humble Widget for my game.
Hi, I’m Max! I'm a fullstack JavaScript developer living in Berlin.
When I’m not working on one of my personal projects, writing blog posts or making YouTube videos, I help my clients bring their ideas to life as a freelance web developer.
If you need help on a project, please reach out and let's work together.
To stay updated with new blog posts, follow me on Twitter or subscribe to my RSS feed.