Oddhop Status Update #2

Oddhop gameplay (click for bigger!)

Well look at that, I made a second post in the series of Oddhop status updates, just like I sort-of-promised! :) For comparison, check out the earlier post here. But first some exciting news: currently Oddhop is about to start private Alpha-testing very soon! It is a small step for humanity, but a big one for us: before only a handful of folks have tried or even seen the game. :D

In addition to Alpha-testing, I set up a page for the game (Oddhop). Check it out for more information! I've also been preparing the Oddhop Press Kit, which will be posted soon. UPDATE: The Alpha-testing has begun, and the Press Kit is now available!

As customary, here's a brand new screenshot and then we'll dive right in just what the hell is going on with the game as of late!

Oddhop TODO-list, February 2016

Again, in no particular order, here are the things still need to be done. As you can see, the list is much shorter than it was last time! Personally I'm happy with the progress made in the last month, I've put in as much hours as I possibly could.

  • Sounds & Music: We've added quite a bit of sounds into the game, but many sounds are still missing and some are not final. Solid progress on this front, all in all. For music we're actually thinking of using just ambient soundscapes (think forest with birds chirping, wind blowing) for the ingame audio. A fun theme song that plays in the menus is needed still, we will be searching for a composer later.
  • Social stuff: Yes, these Google Play Games (Android) and Game Center (iOS) integrations (achievements, online high scores) are still missing, I'm only doing them at the very end. Check the previous post for details, if interested.
  • In-App-Purchases: We got only one IAP and it's the option to remove the ads for good. The ads are in but the IAP is not, yet.
  • Statistics screen: I'm already tracking total playtime across all levels, but we will add some simple stats just for fun, like number of creatures eaten and so forth. Simple stuff so no worries there. I decided it was not necessary for the first Alpha, so it was postponed. :)
  • Code cleanup, refactoring: Basically getting rid of any remaining prototype-quality code, there is still some nasty stuff left in there and I really don't want to be the one maintaining that for years to come! (But alas, I am.)
  • More testing!: We're currently in private Alpha for friends and family. A public Beta may start later, so do keep an eye out for beta access later on if you want to help! :)
  • Polish, polish and more polish!


Here's a reminder what was in my TODO list before, and now is looong gone! ;)

  • Analytics: I added some analytics that help us determine if there's need for level difficulty adjustments, average play times, etc.
  • Localization: I went ahead and did a quick and simple localization system, basically the same one as in Jewels 2. Texts and UI can now be localized into various (Western) languages. Player can switch the language at runtime and the UI updates accordingly. We probably ship with English and Finnish only, though.
  • Menus: I've done most of the menus, basically there's only statistics screen and stuff related to the social services (Google Play Games and Game Center) that are not yet done.
  • Final levels: Well, can't say the current level selection is final final, but it is what it is and hopefully with this alpha we can gather some feedback. Still have time to change levels, if needed. :)
  • Binary level package format
  • Player profile
  • Tutorial system: Tutorial tips work. I may add an animated hand/finger thingy at the very beginning of the game later, not sure yet.
  • Settings system
  • Creature Animations: Done, except I'll probably want to have an eye movement system where the creatures can look around and stare at things happening around them, but that's for the polish phase.
  • Ads: Since I've got a family to feed there are ads in the game (on Android), but don't worry, there will be an option to remove the ads with a single purchase!

That's it for the February update! See you possibly in March! :)

Oddhop Status Update

To kickstart the new year, I thought a status update type of post is in order, to document what's going on with Oddhop and what still remains to be done. We shall see if I can make this a monthly occurence — no promises — but I will try. :) Before we start, you can have a new pre-alpha screenshot from the game! Enjoy! :)

Night time in Oddhop (click for bigger!)

Oddhop TODO-list, January 2016

Alright, here is a partial (I've left out some minor things that are not of any interest) and tidied up list of things that still needs to be done with the game. These are not in any particular order, mind you.

  • Analytics: For some reason I have never bothered to implement analytics in any of my games, but for this game we want to see how the game is played, which levels are difficult, which are too easy and so forth. The data might even help us make the game better, so no reason not to use analytics this time. Maybe throw in some vanity metrics for a good measure, too! ;)
  • Localization: We probably want to support different languages, although we're aiming to have as little text as possible in the game. The tutorial sign tips are the biggest bulk of text in the game. It is entirely possible that we're launching with English only, though.
  • Sounds & Music: This is kinda biggie: there are no sounds or music in the game yet! We're hoping to hire someone to compose original music for the game, but first we need to get to the early Alpha stage.
  • Menus: Yep, 90% of the menus are still to be done, not to mention any animation for them. I did however do a menu background thingy; I decided to use the actual gameplay backgrounds but with a colored blur filter on top, to not be too distracting.
  • Final levels: the game designer Teemu has been doing the puzzles and we've got all the levels (likely launching with just over 100 puzzles), but they still need a pass or two to replace some of the weaker levels and maybe tune the order etc. Iteration, iteration, as always. :)
  • Binary level package format: This is not an user-facing feature, but currently the levels are in textual format so we can easily share them by email (99% of the communication between me and Teemu happens over email as we live quite far apart). For the final game the level packages and the levels in them will be serialized in binary files.
  • Player profile: I need to store all the player progress, scores and stars earner per level, playtimes, what level packages have been unlocked etc. Luckily it's simple stuff to implement.
  • Tutorial system: We got most of the tutorial tip texts, but the system driving them needs to be implemented. We have an optional tutorial system in that each level has a sign post, and if you tap on it you get tips relevant to the gameplay mechanics in the current level. There is one tip per game mechanic, so of course they're quickly exhausted. The sign will sparkle and wiggle when there are new tips to be read, so you don't miss them. But the nice thing is nobody forces the player to read the tutorials, they can freely try and discover the game mechanics on their own (we've tried to keep most of them quite intuitive). :)
  • Settings system: Another non user-facing thingy that is so simple that it probably takes me more time to write this description than to implement it, but nevertheless settings need to be saved and loaded, UI fields will need to be bound to certain setting values etc.
  • Social stuff: Another big thing missing: Google Play Games (Android) and Game Center (iOS) integration, meaning achievements, high scores and whatnot. Part of this (for syncing purposes) needs to happen after the player profile is finalized, so it'll be near the end of the project. And achievements, oh boy I hate those! We still need to think about what kind of achievements we want/need, and of course I need to then implement them. Screenshot / score sharing to social media is also in, but that I have already done, which is nice. :)
  • Ads: As the game is likely ad-supported (don't worry, there's an option to remove the ads with a single purchase!), at least on Android, I need to actually implement ads in the game. Not the most fun of things to do, but needed nonetheless.
  • Creature Animations: Luckily I've done most of the required animations, but some polish animations remain, one more important than others. It's likely I do at least that then, for each creature type.
  • Code cleanup, refactoring: Basically getting rid of any remaining prototype-quality code, there is still some nasty stuff left in there and I really don't want to be the one maintaining that for years to come! (But alas, I am.)
  • Testing!: Goes without saying, once the game is in Alpha-stage (and especially in Beta) some serious testing needs to be done. We're going to have private Alpha for friends and family, and a public Beta after that, so do keep an eye out for beta access later on if you want to help! :)
  • Polish, polish and more polish!: 'Nuff said, I think.

So what's done then? Well believe it or not more things are already than not done, even though writing my TODO list out like that was slightly frightening.. (It certainly didn't look as bad when in more condensed format, shit! :P) For example all important graphics have been drawn, backgrounds are done, most of the visual effects have been done. Of course at the polish phase I will probably go over and add more effects and stuff, but still.

When Teemu and I started talking about doing another game together some years back, we eventually decided to do something quick and simple first, instead of a bigger project. So here we are: working on the game since February 2014, so almost two years now. Not full-time though, and there were periods of month or two where I barely worked on the game, but still. "Quick and simple", hah! :D Believe me I'm going to be very happy when the game is finished and released, no matter how well / poorly it does! To any aspiring game developers reading: do not underestimate the time it takes to make even a small game! So start small, and finish it! That's the most important and hardest part, finishing a game. :) Anyways, I better get back to work. See you around!

Oddhop teaser trailer!

Just a quick post. I made a tiny teaser trailer for our upcoming, original Android/iOS puzzle game Oddhop! Enjoy! I'm guesstimating the game will be released in the first half of 2016, hopefully in the first quarter, even. :) Do give the video a thumbs up if you enjoy it and/or are looking forward to hearing more about the game! Comments are also most welcome, as always. What's shown is pre-alpha footage so there will be some graphics changes and tweaks, but at least it's something. Oh, and we're still keeping most of the actual gameplay under wraps, so patience is a virtue! ;)

Keep an eye out for more info in the coming months. I also have to apologize for the shoddy video quality; I had to crop in heavily due to Oddhop being a game played in portrait while the video is obviously in landscape. For the launch trailer I clearly have to try a different approach. I will probably code the trailer and render it to an image sequence, then encode the video from the images. Oh well, time to worry about that later. :)

The teaser music is a royalty-free track courtesy of Kevin MacLeod (see the video description for details), and as such doesn't have anything to do with the game, just to let you know. We're hoping to have some original music in the game.

Graveyard of the old and abandoned, part II

This is the second part in my "old & abandoned games" series of posts. Read the first part about our old sci-fi shooter Badlands here. Onwards, then!

2005: Untitled 3rd person action game

The game was in development during 2005, if my memory serves me correctly. Another game we were making with my friend Teemu. It used C++, Ogre graphics engine and was supposed to be something Cannon Fodder-esque action in a fantasy/fairytale setting. You know, big mushrooms and so forth. :) We didn't get very far in this project, though, so what's left is actually just the engine work and no game.

What killed the project, then? The usual reason: lack of proper graphics. I'm not a very good 3d modeler (observe the test character below), and especially the rigging/animating is very time-consuming for me. We got one guy do a nice troll model for us (not pictured unfortunately), but that was just one model with one animation. We would have needed much more. Hugely over ambitious project, to say the least! :D

There was some neat tech that I was happy with though: I made a custom terrain lighting system for dynamic lights that worked quite well, and also a heightmap + shadow map generator. It wasn't completely automatic, I remember having a separate texture for the shorelines (the foamish part in the water), but the shadows were baked in automagically. And for once I got a nice 3rd person camera system implemented, you could adjust it freely and it didn't go underneath the terrain. Happy times! :D There were also some rudimentary physics, that were based on 2D physics with some nasty hacks for 3D usage. That was quite a shitty system and a proper physics engine should have been utilized. And now that I think about it, I faintly remember experimenting with some 3rd party physics engine so I guess I was about to make it better. A* (surprise!) was used for pathfinding, the navigation system preferred flat terrain and paths, and avoided steep slopes.

After this project was canceled, I had some Ogre experience so we wanted to use it for something. Something simpler. That project eventually became Those Funny Funguloids!, so it was not all in vain. :)

2005: Untitled retro platformer / adventure game

This one is definitely from early 2005. I made this with another friend as designer, but project quickly fell through. Guess it was due to lack of motivation. But see? I, too, have dabbled in pixel art in my day! :D Actually I have several pixel artish games — ranging from ancient QBasic 16x16 pixel tile games to more modern takes — none of which have been finished.

For tech, I used C++ and Allegro framework. I made this nifty little tile-engine with scripting support (probably using Lua, can't remember) along with an editor that allowed placing triggers etc. to the levels. There also was beginnings of a conversation system, but I think that was not completed.

2003: Untitled adventure game

Another game we started with Teemu. It was supposed to be an adventure game similar to this old game Ween: The Prophecy, i.e. the player was not visible but manipulated objects in scene, solving puzzles in a single location until moving to another location with new puzzles. Another overly ambitious project! I'm not sure if Teemu had more than one room designed (probably), but I only got this one room implemented and it's not actually all of the puzzles either. So there's gameplay for about 10 seconds if you know what to do. :D

I think there was supposed to be painting covering the hole in the wall, but I don't recall what was the purpose of the hole. Behind the bookshelf were an entrance to another room (basement, I think), but it was not implemented. The idea was to melt the (plastic) key in the mold using the fireplace embers, but I'm not sure where the key was to be used. Maybe in a different room? Anyways, click on the picture below for a GIF animation showing how the game was played. :)

Click for gameplay animation

There was not much tech behind this, since it was a short lived project. But I used SDL as the base framework instead of Allegro this time. I remember it was tedious doing the puzzles, because I had the bright idea of doing EVERYTHING in code! That's right, all the room logic and setup was handled in code, which makes no sense. Even the polygon outlines for the clickable areas were set in code, point by point. Insanity! :D I honestly don't know why I didn't do an editor, because I had written level editors for several games before this one, so it's not like I didn't know how to do it.. :P Main takeaway: don't do that! At the very least do the setup in script and have the game hot-reload it, instead of doing it in code and recompiling + restarting.

* * *

That's it for now. There are a few potential games / engine experiments I could tell about in further posts, so let me know in the comments if you'd like to read more stuff like this. Bye! :)

Graveyard of the old and abandoned, part I

And now for something completely different! I've been procrastinating making a post(s) like this for years, but somehow never really bothered to make it happen. So here goes: this will be a (short) series talking about a sampling of (very) old game projects of mine, that — for one reason or another — never got finished and released as proper games. Or at all, as is the case actually. Enjoy the stroll through history (not to worry: there are pictures and even a video!), and let me know if these kind of posts are interesting to read. I do have more of these abandoned games to show. :)

2001-2002: Badlands, top-down sci-fi shooter

So first up: Badlands. This one, along with many more of my games (including our current project Oddhop!) was made in co-operation with my friend Teemu. My role, as always, was that of the coder and graphics guy. Teemu did the game design and sounds + music (although for this game I don't think we had music yet). If I recall correctly, we started this game after Ultimate Steroids was finished. So that was in 2001. Almost 15 years ago — we were snot-nosed kids! Damn! :D Anyway, this is a game I really would have liked to finish.. We shut down the development in 2002 after over 9 months of work. :( The lack of proper graphics was the biggest reason, I think. (See those weird heads in the video and screenshots? They're placeholders for proper enemy ships!) Funnily enough, now that I look at it, something similar could be whipped up in Unity quite quickly, but back then it was much slower progress due to having do all the tech myself. :)

It was supposed to be a shooter game with a gritty sci-fi aesthetic, with proper levels but not much of a story. There were some interesting ideas that I think could have made it a nice little shooter. We had three different (albeit the graphics were the same since I didn't get to do them properly) ships with different characteristics and weaponry. You could at any time teleport out and switch into a different ship (unless you had wrecked it!). There were one common laser weapon for all the ships that had unlimited ammo, but it was weak. Each ship had separate, more powerful weapon that ran on a battery. When the battery was depleted, it would recharge but very slowly. To help with that problem, there were these "pools" on the ground: red pool would replenish your health, green pool would recharge your weapons battery and blue pool would act as a portal. Go through one blue pool and end up in another.

Some early Badlands ship designs

We had different enemies: most of them were machines, but there were organic giant bugs too (with very crude walking animation: three frames! ;)). All the vehicles were floating / hovering above the ground plane, when dead they would fall down. The enemy AI was quite sophisticated in the scope of my own games: they enemies had field-of-vision (FOV) cones in which they could see. If you shot them at their backs, they would quickly turn around and fire a few random shots in the direction from which they took the hit. Some enemies had stealth mode so they were harder to see, and some could try to dodge the player shots. Some smaller enemies even attempted to flee when their health was low. Looking back, it was interesting to do that kind of AI behaviour and for some reason I've never done anything similar later. There was also line-of-sight implemented, so the player didn't see enemies behind walls or other objects.

The game also had bonus crates, where you could get a random bonus that remained active for some time. You could have all the bonuses active at the same time, too. There were "bullet-time" type of slow motion thingy (it was popular in 2001 so I had to add it in! ;)): your ship and your bullets would remain at 100% speed but the enemies and their bullets were 50% of their normal speed! On top of that there were a vomit inducing effect that blurred the screen. It was quite neat back then, but unfortunately I made the decision to hard-code the effect for 256x256 texture.. Just take a look at the video to see how "nice" that looks today.. :D Other bonuses were shield bubble, double damage and stealth / cloaking device. Your ship was barely visible and the enemies couldn't see you (or at least the possibility of them seeing you was greatly reduced).

For the tech it was an OpenGL powered game written in C++. Allegro was used as the framework for inputs and whatnot, but the graphics engine was all mine. I think this was one of my first attempts at data-driven game development, as I was just browsing the game files the other day and found that all the weapons, enemies and objects were defined in textual configuration files. Each enemy was a physical object with mass, friction etc. It was my own physics so it was very rudimentary, just circle vs. circle collisions basically. The walls were always axis oriented to simplify collision checking. There were no Box2D back in those days, see? :) I also had a beginnings of a level editor, where you could place the objects and stuff in place. But it definitely was not finished, and the game generates the maps randomly. And I mean literally randomly, there's no logic or any prefabricated pieces that are laid out, stuff is just spawned randomly. As seen on the video (which was fun to do, very nostalgic moments for me to be able to play this again after so many years!), things spawn inside walls and other objects. Fun times. :D It was meant to have proper hand made levels, though. Random stuff was just a place to try the game mechanics.

In case you're wondering how the lighting looks a bit off, it's because I didn't know how to do proper lighting (additive lights on texture, multiply blend over normal scene) at the time. I used an ugly hack: it's just a transparent black quad drawn on top of everything, then the colored (random) lights are drawn over that. It almost worked on not-very-dark ambient lighting, but when you made the ambient darker, the black quad kept eating away at the details as you can imagine. Horrible way of approximating lighting, but that was the best I could think of then. :P

As mentioned, the bullet-time blur thingy was rendered into a 256x256 texture, which looks quite shit these days. I remember I didn't know how to use any proper render-to-texture techniques (FBOs, PBuffers — although I'm not sure if they were around in 2001), so I just rendered to 256x256 viewport, grabbed it into a texture (a big no-no in rendering, especially in mobiles but it's passable for PCs) and then rendered the normal frame on top of that with full viewport. :D The effect itself was just several quads scaled and rotated, blended over the normal image. Trivial stuff but it was cool at the time.

One cool effect that can be seen on the video is the shattering effect when you break down crates, trees and even rocks. It looks alright even today, even though it makes quite apparent that the things are hollow. It was made simply by spawning a triangular particle on the original positions on the mesh, with the same texture and UVs. Then the triangular pieces would just simply fall down under gravity, and their vertices were clamped to the ground plane, so the piece would lay flat and then disappear. There were no rotations or anything, just this collapsing. Again, simple stuff but worked fine back then. Speaking of breakable props, I also had one building modeled, some oil-tanker looking round thingy with pipes going around. Unfortunately it was not in the build I had, so it didn't make the video. :(

Anyway, enough talking. Not sure if this was of any interest to you folks (let me know in the comments!), but for me it was very nostalgic experience to find out that the game still worked and I could play it and make this post. Almost makes me want to remake this properly using a modern game-engine! :) Btw it seems I had hard-coded the aspect ratio to be 4:3 for some reason, so things look squished in the 16:9 video. Sorry about that, it was the times of those bulky 4:3 CRT monitors! Enjoy the video! I've annotated it a bit, too. There's no music in the video, I had some temp tracks but had to take them out.

* * *

That's it for part I in this game graveyard series! Let me know in the comments if you like this kind of posts, as I still have some other abandoned games to show. Originally I meant to include more than one in this post, but as Badlands was quite special project for me personally, I wanted to make the whole post about it. If you thought this was TLDR, don't worry, I don't have this much to say about the other games! :)