Tuesday, 17 December 2013

A Belated Pre-Christmas Update

This will be my last update for December and 2013, after which I must go forth and deal with some other affairs and life commitments. By that I mean, my friends and family will undoubtedly be dragging me away from the laptop next week so that I can fully focus on the upcoming Christmas festivities. After all, it is the time to be jolly, and the dungeon is no place for that! (or is it?)
I know that the majority of my fans are game developers/programmers themselves so I thought I'd start with mentioning an amazing event I participated in last weekend: The Ludum Dare Game Jam. Sorry if you are expecting TinyKeep specific info, if so please skip to the next section!

48 Hours of Stress and Toil

I've mentioned Game Jams before, but the Ludum Dare in particular is something really special. Once every few months, participants all over the world try to create a game based on a random theme in exactly 48 hours (or 72 for the more relaxed team jam). They then spend 3 weeks playing and rating each others games, and the highest rated entry is the winner. There are no prizes for winning, except the warm fuzzy feeling that you've made something truly awesome that everyone can enjoy.
During the 48 hour period, I had around 6 hours sleep and spent the rest of the time hacking away at my poor excuse for a game (a Wing Commander clone). I think I was a little too ambitious, I tried to do my own low poly 3D modelling as well as getting some voice actor friends to help. Here's what I ended up with:

You can actually have a go on the Ludum Dare website. If you have an account, please rate and comment! If I somehow make it as a finalist, that will hopefully get some exposure for my work and TinyKeep, which would be amazing!
I also wrote a blog post on my top 6 favourite entries in the competition. These are really amazing games and I wish them all the luck in the coming weeks. If you have the time, you should definitely give them a go!
For those programmers considering getting into game development, why not give the next Ludum Dare a try? I promise you won't regret it!
Now that the Ludum Dare is over and done with, I've found some new motivation to work on TinyKeep, and my focus over the next month or so is AI. This is the work that you've all been patiently waiting for, and I really want to do justice to it! This is also the time where I'll be bringing more of Ben's skills and talent in, after all many of the behaviours for TinyKeep were based on his initial ideas all those years ago. Will 2014 be the year of the dungeon?

A Brief Look at TinyKeep's Collider System

Coming off the back of the Ludum Dare, I'm in an especially technical mood so today I want to talk about the techniques I'm using to enable TinyKeep's monsters to sense the surrounding environment. This is very important to build complex behaviours later on. Remember, TinyKeep is all about emergent behaviour, so rather than planning every single move at the programming stage, I want the monsters to be affected by the environment in new and surprising ways. Well, that's the theory anyway!
In a conventional game, you'd use a pathfinding algorithm to allow the monsters to intelligently navigate around the level. For TinyKeep, we found that lead to unnatural behaviour, it was almost as if the monsters memorized the dungeon and would be able to perfectly find its way around. Also, this technique falls down when in a dynamic environment. For example, all our furniture is moveable by physics, so we'd have to update the path every time this occurs. Instead, we decided to use a combination of line of sight, attractors and deflectors, flocking, smells, sound and light sensors to build a picture of the local area and let the monster make a decision based on these observations. You can see a tiny bit of this in action in our Monster AI series I did a long time ago.
Since then, we've moved from raycasting to collision boxes, as we've found it's more efficient to use Unity's physics system to do all the hard work for us when it comes to detecting nearby objects.
Take this Skeleton for example:


For AI, the most important colliders are the Strafe and Targeting sensors. Strafe sensors allow the monster to detect objects to its side, like a wall, a doorway arch or another monster. It can then use this information to strafe away from an obstacle. Similarly, the Targeting sensor allows the monster to see what exactly is directly in front of them, so that it can jump over, attack or block it for example. These may seem like really simple concepts, but combine them with smell, light, line of sight and the different types of objects and obstacles available, as well as introduce a few more monsters into the mix, you end up with something looking totally realistic and fun to play against.
Imagine this situation, you are in a hall with barrels and columns everywhere and you see a roast chicken you'd like to eat. You wouldn't exactly stop and calculate the shortest most optimal path would you? Instead, you'd try to run directly towards it, while dodging and weaving between objects in your way. If you happen to come across a trap or some other dangerous thing, you'd deal with it there and then. AI should be reactive, and that is what we're trying to do with TinyKeep.

Have a Great Christmas!

That's all that I can muster for now, need to continue working hard on the game! Promises must be fulfilled :)


Huh? What are these?

Tuesday, 3 December 2013

November Catch Up

Hello!
It's certainly been a while since my last update, although not quite a month yet! A far cry indeed from my usual weekly updates so apologies if you've forgotten about TinyKeep due to the lack of constant spam from me. I am more active on the forums, but don't worry if you'd rather stick to this blog for TinyKeep related news, I promise to repost everything here so you guys won't miss a thing.
November has been a busy month for development - and we are making great progress.

Original Soundtrack

James Cobb, our resident composer and music extraordinaire will sadly have to step down from TinyKeep, or at least for the time being. James is currently working full steam on his University degree, and so he is unable to fully commit to the project as originally planned. I am still hopeful that we will be able to resume his services later next year when things are a bit quieter, James will be producing a couple of the more "unique" tracks for the game - but more on that later (it's a secret!).
Until he is ready to lend us his time again, I'd like to introduce a new face to the team. Will Bedford aka. 2-BYTE will be composing the majority of TinyKeep's thematic soundtrack, and so far I am really pleased with the results.
Have a listen for yourself!

Will is currently working on a second track as we speak. Please check out his SoundCloud profile or Website for more examples of his previous work.

TinyKeep Controls

While I let the "pre-alpha" Focus Group guys test the most recent build, I decided to start working on the nuts and bolts of the gameplay itself, that is the controls and combat mechanics. I'll revisit and polish the dungeon generation part of the game later on, as I thought I'd better focus on what actually makes the game "fun"!
Here's a walkthrough video showing TinyKeep's basic controls, all up and running with an Xbox360 Controller.

TinyKeep Combat Controls

The next step is to get combat working, and that means getting our little characters to swing heavy swords around...

Failure and bugs aside, this video shows exactly how tightly integrated the combat will be with the underlying physics engine. All weapons have mass, and all combat animations apply velocity and force to the weapon. This means knockback effects and the potential for more dynamic physics based combat and maybe even localized damage. Part of the game is about emergent events, we want the player to be able to knock large items to block incoming enemies and so on.
So another thing that is very important for combat is monsters! After all we do need something living to test our powerful swords against. The way I see it, there are a couple of ways combat could work in a game like this:
1. Very simple hack and slash, button mashing style gameplay. Think Dynasty Warriors or something like Pocket RPG which has a very similar art style to TinyKeep. Lots of action, lots of particle effects, and lots of powerful "super" attacks.
2. Traditional "dungeon crawler" combat mechanics, so point and click, skill cooldowns and the like.
For TinyKeep we definitely wanted to go down a more action oriented route but not in the way that you'd necessarily think. Looking at the "chibi" style characters, one would expect simple mindless controls with lots of colourful particle effects. But we think that given the intelligent behaviours that we have planned, it would make more sense to have equally intelligent combat. We want all of our fights to feel personal, tactile and responsive. And we definitely do not want button mashing. After much deliberation, we ended up going for more twitch based combat, much in the same vein as Skyrim and other similar third person RPGs. Each fight will consist of a quick exchange of slashes and blows, shield blocks and counter attacks.
Here's an early test to show you what I mean.
(Try to ignore the complete lack of environmental awareness, this part of the AI has not yet been implemented as you will notice some mobs will get stuck behind various bits of furniture).

Every fight requires skill, timing and sometimes a little bit of luck. It should feel responsive, tight, and above all fun!
On the other hand though, we don't want to build a complete sword fighting simulator. Combat should still feel easy to learn and be completely accessible. As we keep mentioning repeatedly, TinyKeep is all about intelligent emergent behaviours, so once we add multiple monsters of different types to the mix, the more depth we'll begin to see in the game.
That is something Ben is currently working on. I'm dying to talk to you about the behaviours we have planned for all our different monsters, but I'm afraid Ben will kill me for letting the secret slip this early!
So, until next time!

Friday, 8 November 2013

Jam Packed!

Manchester Game Jam

As a little reward and a break away from the giant project that is TinyKeep (how ironic, it's not Tiny at all...), last Sunday I attended an 8-hour game jam in the heart of Manchester. A game jam is a little event where game developers from around the local area team up and create a fully working game in an extremely short time. It's nice to be able to create and finish a project in the space of a few hours and a great way to meet new people too, which is so important as I spend most of my time at home working by myself. I particularly find jams creatively refreshing and I returned home with new motivation to continue working on TinyKeep. Even Jim, our soundtrack composer attended, he and his other student friends came up with a very impressive technical demo.

Jey hard at work, composing some epic soundtracks for the day!
Jey hard at work, composing some epic soundtracks for the day!
The theme this month was Cows. So of course, we present to you Moo-tation Arena.

My first ever 3D model, I'm so proud! Not sure what Matthias would make of this one though...
My first ever 3D model, I'm so proud! Not sure what Matthias would make of this one though...

 Udderly bizarre!

Back to TinyKeep...

Oh yeah, this is the game I was supposed to be making right? Well, don't panic! The past couple of weeks I've been very busy finishing off the zoning system by implementing locked doors and keys, as well as adding different room types and furniture. Oh and the automap now reveal corridors and rooms as you explore the dungeon. It's beginning to look and play more like a game now!

Corridors now contain rubble and dead skeletons, requiring a bit of skill to manouveur around them as you flee from impending enemies. It's the details that count...
Corridors now contain rubble and dead skeletons, requiring a bit of skill to manouveur around them as you flee from impending enemies. It's the details that count...

A low-caste dining "canteen" area
A low-caste dining "canteen" area

A high-caste banquet hall
A high-caste banquet hall

Failing to open a door that is protected by a mysterious energy. Showing off the newly implemented messaging system.
Failing to open a door that is protected by a mysterious energy. Showing off the newly implemented messaging system.

Chests containing keys to (yes you guessed it!) open locked doors
Chests containing keys to (yes you guessed it!) open locked doors

There will be 4 different magical gems for each of the zones in the game (Sapphire, Amethyst, Topaz and Emerald)
There will be 4 different magical gems for each of the zones in the game (Sapphire, Amethyst, Topaz and Emerald)
Thanks for taking the time to scroll through this huge list of images and screenshots! As a reward here's a video showing very early footage of progress so far. Apologies in advance for the low quality, low framerate and lack of realtime shadows. I had to turn down all the effects to get my recording software to work nicely. All in all this represents about 2 months of full time work on the game, so things are still a little rough around the edges. Hopefully it will still give you a taste of things to come!

Saturday, 26 October 2013

Screenshot Saturday!

Seems like Saturday updates are becoming a bit of a scheduled habit! In the Indie gaming circles we have what we call a Screenshot Saturday, well in this case here's more than one...
This week we now have dungeon entrances:


And exits!


Ambient Lighting Schemes

I've also been working on different lighting schemes for a variety of environments that I have planned for the game (prison/dungeon, fiery hell, organic forest area, pitch black caverns). These environments will all be using different models and textures, but just changing the lighting makes a huge difference to the feel of it all. None of the following are photoshopped, these are all rendered by the engine.
Starting from the top-left:


1. For the prison area, we're using neutral ambient lighting. Wood looks like wood. The stone walls and floors are cold and grey, and the only respite is from the warm glow of the fire pit.
2. Our cavern levels will be pretty dark, so the only way to navigate through these is with a torch, or by following luminous crystals and glow-in-the-dark creatures. So for this environment, we use no ambient lighting at all.
3. Our fiery hell levels will be constantly lit by the red glow of flowing lava. The air is hot and dry, walls are scalding to the touch, and there is lava, fire and smoke everywhere. I wanted it to feel like we were inside a volcano, so the ambient light here is a highly saturated red.
4. Finally our organic forest level will have vines, ivy, moss, underground trees and waterfalls tearing apart the dungeon walls as nature reclaims its territory. I wanted to go for a Zelda-esque feel with floating spores, falling leaves and lots of sun shafts/god rays coming through the tree canopy. The ambient light has a green tinge to it, as the sun light filters through the green leaves.
You can see what I mean about the forest lighting from these reference images here and here
For now you'll need to use your imagination as to what the actual environment models and textures will look like, but for this exercise I was just focusing purely on the lighting!

Torture Chamber

I had some extra time this week to add my first furnished room, a torture chamber complete with hanging gibbet cages and dead skeletons....


 And X-shaped stocks inspired by Theon Greyjoy's experience with the Boltons...


All objects are physics enabled, so if you push hard enough... (Whoops!)


Camera Zoom

If you remember our AI demos from back in the Kickstarter days, the action is intended to be quite fast paced, with a certain sort of flow to it. There will be no standing around exchanging blows, you will be constantly on the move dodging, avoiding, strafing and slicing. Using your peripheral vision will be very important, so at any time you'll be able to zoom out and get a clearer view of the surrounding area.


For the Technically Inclined...

In addition to these updates, I've also been writing about TinyKeep from a programmer's perspective on the hugely popular TIGSource forums. I know some of you here are in the game development biz, so if you're interested in the process our thread is here:
There I talk about my strategies for performance optimization with the Unity engine.
Thanks very much for reading, and see you again next time!

Saturday, 19 October 2013

Ramping up to our first Monthly Build

As usual I've been hard at work in my little office plugging away at TinyKeep mostly in isolation. Recently though, we've been ramping up for an exciting milestone, and that is getting the first monthly build out to our small group of focus testers. Here are some screenshots for our progress this week:


More UI stuff implemented, this time the in-game pause menu, because some sad people out there will probably want to quit playing this game at some point...
More UI stuff implemented, this time the in-game pause menu, because some sad people out there will probably want to quit playing this game at some point...

Everybody, at some time or another, must drop their ego and stop and ask for directions (yes, even men!). But in TinyKeep that might be a deadly mistake, so we're going to provide you with an automap...
Everybody, at some time or another, must drop their ego and stop and ask for directions (yes, even men!). But in TinyKeep that might be a deadly mistake, so we're going to provide you with an automap...

Unless you played video games in the '80s, we're pretty sure most of you would prefer not to map out their dungeon experiences on graph paper. Especially for one of this size!
Unless you played video games in the '80s, we're pretty sure most of you would prefer not to map out their dungeon experiences on graph paper. Especially for one of this size!

Every dungeon needs a healthy amount of torch light. Here I'm experimenting with HDR bloom post-processing effects, which gives the fire particles an intense glow and blur. It's a nice effect, but it'll be an option you can turn off for performance
Every dungeon needs a healthy amount of torch light. Here I'm experimenting with HDR bloom post-processing effects, which gives the fire particles an intense glow and blur. It's a nice effect, but it'll be an option you can turn off for performance.

What lies at the end of this corridor?
What lies at the end of this corridor?
 That's it for this week, see you next time!

Saturday, 12 October 2013

TinyKeep's UI Implementation

At the end of October I'll be sending our first build to the monthly focus group users. These are a few "lucky" people who for some reason decided to give me a lot of money just for the privilege of finding bugs! Just kidding, you lovely people will get to test and be involved in the gameplay decisions nice and early :)  
As part of this first release I wanted to focus a bit on cleaning up the UI so that it's a little more polished to look at. The work I'm doing will also help me get a handle on the different UI solutions available for Unity, which will form the foundation of all the UI work in the future.

Title screen, with fully scaleable buttons and parchment for future UI elements
Title screen, with fully scaleable buttons and parchment for future UI elements

Implemented a few other UI controls such as dropdown boxes and text inputs
Implemented a few other UI controls such as dropdown boxes and text inputs

Nice to see progress bars finally integrated into all the dungeon generation work I've been doing for the past few months. Some of the larger dungeons do take a few seconds to load!
Nice to see progress bars finally integrated into all the dungeon generation work I've been doing for the past few months. Some of the larger dungeons do take a few seconds to load!

Finally, just for fun - a screenshot showing one of our glowing imp monsters. This one has a self-illuminated head, I like the lighting on this shot! :)
Finally, just for fun - a screenshot showing one of our glowing imp monsters. This one has a self-illuminated head, I like the lighting on this shot! :)
Next week I'll be implementing the game HUD, ready for gameplay testing with our focus group users :)

Friday, 4 October 2013

Disco Light Dungeon

So this week I decided to stop messing around with the 2D debug visualizations and give you guys a bit more meat. Here's our progress on the zoning system discussed last week so far, rendered in lovely 3D.
Note that these coloured cubes won't actually be in the final game, they are there simply to help us test which rooms are being zoned off. However, the lighting was just so pretty I had to take some screenshots!
The exit room indicated by 2 red cubes.
A "birds eye" view of the zoning system in action. Pretty disco lights!
Vanity shot of our very own "red light district".
Ominous blue zones...
The green zone locked away by the 2 wooden doors at the bottom. You'll need the correct key to access this area and all of its treasures within...
That about wraps it up for our lock and key puzzles!

Monday, 30 September 2013

The Finer Details of Dungeon Generation

Just a sneaky quick update from us today! The past couple of weeks we've been waiting for the last of the physical rewards to arrive in the post, and in the meantime we've been working on the finer details of our dungeon generation tool.
Ben's done a huge amount of concepting for this, and together we've come up with some nifty ways to generate locked door and key puzzles.

The idea is to zone off certain areas of the dungeon that can only be accessed with a correct key. These areas for the most part will be optional, and the game will reward players who go the extra mile with some tasty surprises. As part of this we have to be extra careful to guarantee solvable dungeon layouts, lest we trap our unlucky dungeoneers forever.
I've also been looking at some cluster analysis/detection techniques, and this will help us determine our Orc and Skeleton territories. More on that later!
One last thing, a loyal fan on our forums requested that we post a teaser image of a very very large dungeon. So I thought, why not try to generate a 500 room dungeon and see what we get? Suffice to say, we'll probably not include dungeons of this size as it takes absolutely forever to generate, but just for fun here's what we ended up with:

Wednesday, 26 June 2013

Announcement: TinyKeep is now powered by Unity

Good morning dungeoneers. For those of you who have have been following the forums, you may have noticed a couple of teaser videos from me in the past few days (if you haven't joined yet, go do it now! The forums are the best place to get all the latest updates on TinyKeep).
Today, I'd like to announce a big change in our development plans for the game. From this point forward, TinyKeep will be built using the Unity engine.


From the initial 2D version all the way up to the recent Kickstarter prototype, TinyKeep has always used Adobe Flash/AIR as its platform of choice. In particular, we utilized Flare3D, an amazing 3D engine built on top of Adobe's Stage3D "Molehill" technology. In our opinion, this is currently the best commercial 3D solution around for Flash, allowing us to create the kind of high quality immersive graphics that we never before thought possible.
However, there were a few caveats. Since June 2011, Adobe announced that they will no longer support desktop Linux distributions for AIR. Adobe also announced the cancellation of Flash Player Next, which was to be a new generation of the Flash virtual machine. While this does not affect TinyKeep at the moment, the perceived future of Flash does not look great. What if in a couple of years we find out that Adobe decides to drop support for the Mac? Say TinyKeep succeeds in the marketplace and we decide to port to mobile, only to find that Adobe's tools are no longer updated to work on the latest versions of iOS and Android? As much as I hate to join the "we hate Flash" bandwagon, the most important thing is to prioritize the future of TinyKeep. I've been a keen supporter of Adobe Flash and its related technologies for many years now, and I really want to continue using it, however Adobe's actions give me no confidence that they want it to succeed in the industry as a gaming platform.

Moving to Unity

In light of these issues, I decided to do some research and evaluate other possible technologies to migrate to. A number of people have e-mailed us asking for Linux support, and while that is possible with Flash Player via the web browser, we wanted a engine that could handle fullscreen 3D on Linux just like on Mac and PC. In the end, Unity became the obvious choice. Unlike Flash, Unity's feature set, support and take up seems to be growing and growing.
Not only can we now fully support Linux, the Unity engine offers us a huge amount of other benefits that you guys will all see in TinyKeep:
  • Much, much faster performance. Unlike Flash, Unity was designed from the ground up to support the kind of high-framerate 3D graphics that we're all used to from the top PC games.
  • Better lighting, Unity's rendering pipeline allows us to use hundreds of dynamic lights, with beautiful real-time shadows.
  • Rigid body physics powered by NVidia's PhysX engine, already used in games such as Borderlands 2 and Batman: Arkham City.
  • Ragdoll animations!
  • The possibility in the future to port to mobile platforms (iOS and Android) and consoles such as the XBox and PS3.

Will this affect our development schedule?

Absolutely not! Our original plan was to recreate everything from scratch anyway. The proof-of-concept prototype you see on the Kickstarter video and screenshots are just that, a prototype. It was designed from the beginning to be thrown away, and later rebuilt properly where we would put greater focus on making a stable and fast game. In fact, as I am still working out my notice period at my current place of work, this is the best time to be considering drastic changes like switching technologies. It is much better to future proof TinyKeep with Unity at this point rather than deciding to do so 6 months into full time development.
So rest assured, nothing will change in regards to timelines. We're just going to make TinyKeep a better, more higher-quality game than ever before!

Friday, 14 June 2013

TinyKeep Site and Community Overhaul

Finally, our new website and community forum is up! From the day our Kickstarter got funded, we felt that the site needed a good overhaul to replace the old fundraising blog. With this comes a shiny new forum - where our most loyal fans are already posting ideas and discussing suggestions for the game... So, if you're interested in TinyKeep, join up, introduce yourselves and get involved!

We've also set up a new pre-order page, so if you were late to the Kickstarter party you can still pledge to receive the Beta and Soundtrack bundle. Of course, you can still donate to us via the PayPal button on the campaign page if you wish to take advantage of the original reward tiers.

Join the forum and participate in our feeding frenzy of ideas!

So, what's next?

We're still waiting for Kickstarter to post our funds to us! In the meantime, I've handed in my notice and am now patiently waiting to be released from the clutches of full time employment. Ben is still hard at work quietly finalising the core mechanics of the game, and Jim is playing with his mini Casio keyboard he got for Christmas (ok, I lied about that - I think he plans on composing the soundtrack on his lovely plastic xylophone!). Oh - and we've nearly finished concepting our hero model. Incidentally, how the hell did our game get funded with no player character in sight?! Maybe for this game, it's all about the monsters :)

The pace has changed a lot since those hectic Kickstarter days, and it's taken some getting used to! I just want to get started right away but I think it is important to remind myself to be patient and take the proper steps to lay the foundation for such an ambitious project. The game I want will come in time...

For those backers who are still waiting for their surveys - please remember that we will not be posting these until the rewards are ready to send, Kickstarter recommends against asking for addresses too early as people do move. For those with non-physical rewards - we're working on it!

This is it from me today - have fun on the forum and see you there!