Developer diary: Week #18

Hi! It’s been a while since I last made an update. The reasons for that is that I haven’t had much concrete to show off, and it’s been summer. I’m making a wrap-up post about what has happened since last time.

Since the new game is a rewrite in C++, it means that I had to implement the engine myself. The original game is using ImpactJS (with a few patches by me, to achieve the rotating stuff). The original game had a lot of bugs that I did my best to “design around” – some are however still visible. I believe I’ve avoided those bugs in the rewrite. Most of the core engine is done!

The artist we were originally working with is unable to work with us anymore, but I’ve found a new one – and she’s pretty awesome as well. You can see some of her non-game related work at her blog, and her Deviant Art account. She’s working hard on helping me figure out what the visual expression of the game will be, I don’t want to spoil these kinds of details yet – so no sketches yet!

I’m currently working on creating an in-game level-editor, as I got tired of editing json-files manually. I hope the editor will reach good enough quality to be included in the final product.

I uploaded Grabitty LITE to Newgrounds earlier this month, where the reception has been pretty good. It was featured on the front page for a while, and a lot of people played it.

I’ve moved the self-hosted version of the site to a provider with more bandwidth, so in the event where it would go viral – or have a big burst of traffic for a while – it’s something that will work out.

As far as I know, the current record of playing through Grabitty LITE is 7:45.29 – currently held by speedrunner Baffan. When I made this game, I did not expect that anyone would go through so much effort to beat it as fast as possible – I don’t really know how to react, but it’s a good feeling :)

I found another LP of the game, published this summer.

I also found that musician 2080 mentioned Grabitty LITE in an interview for Ragemag, together with Super Meat Boy, VVVVVV and Noby Noby Boy — having the game mentioned together with those is incredibly flattering.

Grabitty LITE was featured as one of six games gamer.no suggested their readers to try one weekend.

I think this was all I had to tell you guys this time. I hope I won’t stall for three months before I post again – and I hope I can bring you exciting news about what the game may look like next time. Stay tuned for more; And if you know anyone who haven’t played Grabitty LITE, whom you believe will enjoy it – don’t hesitate to show it to them. The promotional budget of this game is nonexistent, and it currently relies heavily on word of mouth.

- Trygve out.

Developer diary, week #3

On Wednesday, I met with a graphics artist, she’s really good. Look at her stuff at Deviantart / Pixeljoint. She will be doing some work on the game, which means that we now have a team of three;

  • Trygve Vea (me), the programmer, game designer, overall guy.
  • Stian Saunes, the music/sound-guy.
  • Xiang He Kong, the graphics artist.

I got a very good feeling about this, and I believe that this will turn out to be a very well polished and fun experience in the end :)

I will still attempt to keep these updates on a weekly basis, but I don’t think I have that much to show you for the next 2-3 weeks. I’m currently developing the game engine, and building the foundations that the game will run on. I hope to have something to show for #screenshotsaturday in a couple of weeks; Show some of the basic gameplay running in the OpenGL-based engine. I get to do a little work almost every day, but it’s not currently going at a very fast pace; This is something we all do in our spare time.

- Trygve out.

Developer diary, week #2

Tuesday, Twitch.tv personality & livestreamer Matthew “Sevadus” Zagursky showed off Grabitty LITE to his audience. I was unaware of this, and only found out after having checked out my webserver statistics, and I noticed a pretty big spike in traffic. After further investigation, it showed that almost 10.000 levels were (probably) played by his audience. It’s a shame this server doesn’t have more capacity than it has; He has coined the term “Sev-DOS”, which means that a site is taken down by all the users clicking on his links at once. The site got "Sev-DOS"'ed

I’ve come to the conclusion that supporting multiple languages is probably something a small indie-game like this will benefit from. I’ve also decided that adding support for this early is probably a good thing, rather than trying to shoehorn it in the code later.

So this week has been spent looking at how to solve this – and trying to implement a maintainable way.

The game will contain a lot of images, which again may contain text on them; This could be anything from images of a space-bar with the text “Space” on it, a sign in the game, or something completely different; In short – we’re talking about assets. One thing I want to do, is to supply these images without the text, and have the text blended in before the texture is loaded onto the GPU. This simplifying translations significantly; also hopefully save space needed by localized versions of the game – ideally bundle them all into the same version of the game, and let the user change language as he/she wants to.

To do this, I use the FreeType-library. FreeType understands font-files, you can request a glyph of any unicode character the font provides – and you will get an 8 bit bitmap in return. This is applied on a bitmap read from a png-file before I upload it to the GPU and use it in game. This is a process I intend to only do when setting up the scene. Most guides I find on the subject talk about creating font atlas’es, which means rendering one quad for each letter you want to draw. Even though that approach will work perfectly fine, I find it unnecessary. So I’ve written some code that does this, it seems to work fine on my relatively few tests;

That’s the gist of it; Add some code for blending the font to your bitmap, hook it on to your asset loading mechanisms – and you should be good to go.

I also made a lot of work with the GUI-code, to make my job easier further down the road. The details aren’t very interesting, it’s just some simple classes that let me request different kind of primitives stacked up in a VBO – which I then later can use for drawing.

I’ve managed to cross-build the project to run on my phone – which is an Android. I plan to cross-build for IOS as well, but this makes it possible for me to weed out any GLES-related bugs early on. First thing I noticed was that the shaders failed to build because I hadn’t set precision. Happy to see that it ran fast. Not too happy about Android’s build system for NDK apps. I need to either ditch it, or make it easier to deal with – currently I’m maintaining the same set of strings in too many places.

Developer diary, week #1

This week isn’t very eventful as far as the standalone-version of Grabitty goes. It started off with crunching to get Grabitty LITE out before the Ludum Dare results were in.

The Ludum Dare-entry, which Grabitty is based on, did fairly well; In the fun-category, it was placed at 78th place – out of 1610, which puts it in the top 5%. Overall, it was placed #152 – which is in the top 10%. I’m really happy with that, and based on the reception – I feel there’s a market for a proper implementation of this game.

After Grabitty LITE was released, I spent a bit trying to promote the game. It’s now also available on these places:

I’ve made a few submissions to other sites as well, but I don’t think it’s available anywhere else at this point – at least I haven’t seen that in any referrals from any other sites. However, most of the traffic has been generated from this thread on Reddit – posted by a friend of mine. Right now, most people who visit the game come from English-speaking countries, and Norway – so if you know of any game portals that accepts submissions like this, it would be helpful. I intend to spread this a lot – getting it translated if necessary, as it’s a promo-version of the game to come. Please contact me if you want to assist with either.

I searched for Grabitty on Youtube, and came over this LP-video, which was really fun – the first Grabitty LITE Let’s play-video:

On “the real” game, I’ve mostly done ground-work. I’ve been writing the base classes that everything will interface with. I’m not rushing through anything, I’m taking short steps to ensure that I’m still able to maintain this a few months from now. I’m quite happy with how this works so far; But I’ll probably find the weaknesses of my approach further down the road.

I’ve been researching easing algorithms, because I want all animations to be smooth. I hope I may eventually put my easing-classes on github or something, so other people may enjoy that as well.

/ Trygve out

Grabitty LITE released!

Grabitty LITE is released! This originated as a Ludum Dare-entry with 15 levels – while the results at this point aren’t in yet, the reception of the game has been so good that I intend to do a lot more with it.

These are the new features for this release:

  • 25 brand new levels, a couple of minor changes in existing levels: A total of 40 levels
  • Stian Saunes “Kepler” have added music to the game
  • The rotation-mechanic is easier to master
  • Progress is saved locally in the browser, using the the local storage API
  • The player has access to four unbeaten levels at any time, giving him/her the option to skip some levels and beat them later.
A very linear, but complete level utilizing the entire playfield.

One of the new levels.

Play Grabitty LITE

Listen to some of Stians work here: