Please note that all screen shots displayed in this blog are works in progress and in no way represent the appearance of the final game. Check out the main site here.

Be sure to follow us everywhere with these links!



Sunday, February 26, 2012

Advice for New Programmers

It's funny, really. As a long-time (12+ years) programmer, I still don't think of myself as a long-time programmer. I'm constantly learning and trying new things - so much so that I always kind of think of myself as a n00b when it comes to games programming.

As such, I actually get a bit shocked when I get emails from programmers who are learning about the field or just starting out asking if I have any tips or advice for them when it comes to making their first really big game. I try and answer the best that I can, but as you've probably been able to gather from earlier blog posts, I'm not overly good at explaining things :-S

So, since it's been quite a while since my last blog update (about 2 weeks... Sorry guys...) I thought I'd share with you all a bit of an insight into how things work in the behind-the-scenes part of this project. The reason you haven't heard much from us of late is because we've been dealing with some major coding issues which are only present at all due to bad coding practices. Big fault on our part, but we tried to rush things so we'd have something to show you. That was a bad move, we've learned our lesson, and now we thought we'd share that with you so that if you're new to programming you can - hopefully - learn from our mistakes!

The golden rule for us with programming is planning and documentation. Before you write a single line of code, you should have pages of notes on features, gameplay techniques, design ideas, and - if you want to be really thorough - von neumann diagrams (or some sort of flowchart) to outline the processing behind the screen. A lot of people find this to be far too boring to complete and the fact is, compared to getting stuff done in code, and making working prototypes, it IS boring. But let me tell you, if you're working on a project that is big enough, this stage will save your bacon more times that I can say.

Malevolence is broken up into 3 distinct tiers. The first tier is the subterranean exploration tier (dungeons, tombs, caves, etc) the second tier is overworld exploration (forests, canyons, etc) and the final tier is the settlement tier (towns, cities, etc) and each one is coded seperately since they all operate so differently. This is why you only saw dungeons for ages and ages. For the first tier, we did the full planning and documentation stage. We actually filled 2 and a half 300-page notebooks with our plans and charts for it, and our artists have countless concept sketches so everyone had a clear idea of the look and feel of the game.


As a result, the dungeons turned out to be beautiful. They run beautifully, the look beautiful and all-round they are a real joy to play. However, it went a bit downhill from there. People started assuming that the entire game was just dungeons (rather than reading the info) and we felt that everyone was getting the wrong impression of the game. So we decided to rush it and pump out external environments without the proper planning.

The result was mixed... Yes, we got a working prototype, but it was written so hastily and so un-planned that every time a new feature was to be added, or a change was to be made, the spaghetti code that we had written was so interlocked and co-dependant that a simple fix that should have taken 15 minutes ended up taking an entire evening (which is quite depressing to deal with).

Early on, if you'll remember, we started out with a rough 3D prototype of an infinite forest:


And yes, it worked fine, but it looked like butts and was very clunky. Not to say it was all bad though. We learned a great deal working on it, and there's still some really great code there to be recycled, but in terms of adding things to it, well, it's terrible...

We started getting a bit boned working on it, and people seemed to forget our "get it working now, make it pretty later" philosophy on this project, so we decided to play around with a pretty version, which came out looking really sexy:


But still it was just new graphics built on top of crap code. So we decided to call a mulligan on it for now. It was working, that was the important thing. So we decided to have a play around with town generation, which yielded similar results:


Yes, it worked, but it was written so sloppily that even making a change as simple as allowing different buildings to load with different texture options became a nightmare of infrastructure re-writes.

So what have we learned? If you realise you're fighting an uphill battle with code, JUST STOP. Don't keep pushing on, thinking "ahh, I'll fix it later" because it won't work. Stop, cut your losses, and re-write. If you'll remember, we did it four times with the dungeon code, and each revision got faster, cleaner and more efficient. So we're doing that now with the overworld and towns.

Malevolence is based on a roguelike system. Everything is in a 2D grid made up of ASCII characters (except we generate 3D models from those ASCII characters) so we're currently going through and making the whole overworld/town thing work in a roguelike platform first, then converting the data into 3D models. So for a while, it's going to look like this:


It may look basic for now, but it means that we can VERY clearly see any problems before they blow up into bigger ones.
You probably won't see any of this stage (unless we get a lot of comments asking us to show it haha) but we want this game to run smoothly and beautifully when you all get your hands on it at the end of the year, so we refuse to release bad code to you all.

Anyway, I hope new developers or younger coders out there got something from this. If you take anything away from this blog, remember the two main rules:

  • ALWAYS plan everything out before you start
  • NEVER be afraid to just start over. Even if it's just a function you're writing. If it's done badly, don't keep killing yourself with it!
Follow those two rules and your game will be much better for it!

Monday, February 13, 2012

But what IS Malevolence?

Ok, so we've prodded the hornet's nest with the last blog or two... People are needing a thorough explanation of just what Malevolence is, and what it will mean... So here are your answers!

The standard explanation we've given in the past is this:


Malevolence: The Sword of Ahkranox is an indie game with the intent to recreate the amazing turn-based, first person RPGs from the golden age of PC gaming using modern game engine technology. Rich classics such as the Might & Magic series, Eye of the Beholder and the like have inspired this new title which, when finished will put its players into a literally infinite fantasy world filled with procedurally generated content. The Sword of Ahkranox isn't trying to compete with the larger, professionally developed RPG titles out there, but instead our aim is to fill a large gap that we believe has existed in game technology since the mid-nineties. It is definitely a must-have for all enthusiasts of the quintessential RPG. The game's procedural engine can generate an infinite number of weapons, items, spells, monsters, dungeons, cities, countryside and even dialogue, allowing the player to explore the game with no end and no reason to stop.

But a lot of people don't quite understand what we mean by that, or the implications of what we're achieving here...


As explained in the last blog entry, Malevolence is infinite. However, at the same time, Malevolence is NOT randomly generated. The entire, infinite world is persistent. What do we mean by that? We mean that when you start a new game, if you're standing next to a castle and you walk north for fifty million miles, then east for 50 million miles, then re-trace your steps back to where you started, that same castle will still be there. The world doesn't shift and change or have any cheats like that to make it work. It is as persistent as the in-game worlds of your other favourite RPGs such as Skyrim or Dragon Age. The only difference is that there are ZERO world borders. You can keep going forever.

Yep, there are no limits to that horizon...
Yep... There are no limits to that horizon...

We've had a few complaints from people saying "but we'd prefer a randomly generated world so that everyone can have their own gameplay experience!" but the fact is, you can! We know that it's a little odd because it's a new gaming concept, but if you want to have a different game world to your friends, you can just go to a new part of the world (it's infinite) and explore to your heart's content! There is literally NO END to the world.
Now, another thing we need to point out is that everyone who plays Malevolence will experience the SAME infinite game world. Do we mean it's an MMORPG? No, we most certainly do not. What we mean is that the in-game world is the same for everyone who plays it. Just like everyone who plays Skyrim gets the same game world. Malevolence's game world is infinite, but everyone will still experience the same world. If you find something really cool - an underwater ruin for example - you can give the co-ordinates to a friend of yours who has the game and they can go and find it! Getting tired of the world map? You can jump through one of the underground chaos portals and be flung to a new place in the world (but be careful, as it could be dangerous!)
How does the game deal with an infinite world? I mean... A planet only has a limited surface area, right? Well actually, the in-game world is a construct of the imagination of the magical Sword of Ahkranox, and so is not actually a planet :-) the game has a very intricate mythos that our writing team has been working VERY hard on, and we're sure you'll love it.


Bae-Aern is a central character in the game's history...

But how does an infinite game handle something like a story or quests? Surely you'd run out of things to do eventually?
Not so! The story is a very open, fluid part of the game that the player generates as they go, but there is a rich, deep and long history that they can discover as they play by finding old tomes around the place. As your fame increases, people who live in the world start hearing tales about you and it is reflected in the way they deal with you.
Every single quest in the game is generated by the procedural engine, which can generate an infinite number of them. Some quests are very short, e.g. "I lost my uncle's dagger in that dungeon, but it's too dangerous to go and get it! Please help me!" whereas others are quite convoluted, multi-tiered and long, for example having to trace the footsteps of a murderer across multiple towns, quiz people for information and find clues. Some will involve the town you're in, or places nearby to it, others will require traveling great distances to achieve your goal.

But in an infinite world, that's a hell of a lot of walking... We've thought of that, too! There are various ways to fast-travel in the game, though you're quite welcome to walk if you prefer (you never know what you'll find!)
The main source of travel in the game is via the Mages Guild. Every guild has their own portal, and they regulate travel via portal magic quite heavily. Each Mages Guild's portal is linked to various other towns' Mages Guild portal. Think of them like the Waygates in Freelancer (maaaan that was an awesome game. If Malevolence ends up being half as good a game as that, we'll be happy)
Earlier we mentioned Chaos Gates. These are illegally created magical portals run by the underground. Because of the tight grasp the Mages Guild has on portal travel, the illegal ones are rudimentary at best, and will fling you to a random place in the world. It might be a billion miles away, it might be right next door, you never know, but it'll cost you gold to use them. However, that being said, you can VERY occasionally find them in dungeons. Very handy if you're being chased by an ogre and need to get away, but you'll never know WHERE you'll end up!
If you're not traveling too far, you can also travel by gryphon, and while you're outdoors you'll occasionally see one flying by in the sky. They are cheap to buy travel on, and they are far less discriminatory with locations they'll go to (as opposed to the Guild Portals which limit your destinations) but not every town has them, as the gryphon riders fly from town to town on their own whim. We're also thinking of adding in airships, but it's early days on that one and might not happen.
Sometimes in Malevolence you'll find a massive ocean that you have to cross...


Your boots might get wet...

These can be crossed by portals or gryphons, as you'd expect, but coastal towns have ports where you can take a ship from coast to coast. It's extremely cheap to travel this way, as the ships are making trade deliveries anyway, so they don't mind earning a few extra gold to transfer tourists. (You can see a VERY quick sneak peek of one of the ships in the trailer. It wasn't just there for show!)
So having an infinite world with infinite quests is all well and good, but surely the loot would get repetitive, right? WRONG! We're also procedurally generating that. Games such as Diablo and Torchlight have done this in the past to an extent, which is cool and has always appealed to us. But wanted to take it a step further. We don't just want the STATS and NAMES of the items to be procedurally generated, we want them to LOOK different, too. So we've been coming up with a system for that as well:

The video above is just an early prototype of course, but you get the idea. Just a little something to make things more interesting while you're looking for loot. While this part isn't totally infinite, there are something like 600,000,000 combinations for each weapon type alone... So that should do you all for now ;-)
We have plans to try and incorporate Facebook/Twitter interaction with the game, too, so if you find a really cool place or item, you can let others know about it, or just plain brag about your character. Not 100% sure we'll get that done in time for the final release, but we're gonna have a go!
One of our biggest aims with the game is to try and establish online communities where people can share things and places they find, since everyone else will get a chance to find them as well, and people can compare character stats, etc.
Speaking of character stats... Since the game is infinite, the character stats couldn't be just straight numbers like in other games. So instead of numbers, you have percentages. For example, rather than having a strength of 40, you'll have a strength of 24%.
All of your stats, when added together, will always equal 100%. If you spend too much time training up your strength stat, certain other stats, like magic, will begin to drop. It's a bit of a balancing act to try and keep your character the way you want (though if you want to be a straight fighter or mage, it's pretty easy. It only gets tricky for multi-class types). As such, there are no "classes" in the game, just different ways of balancing your stats.


Keep your stats balanced well, or things may get messy!

Having it done this way means that you will always encounter difficult challenges along the way, as the monsters in the game also follow this stat system, and it is procedurally generated in them. You could be a straight fighter, but come across an Orcish mage that incinerates you with fireballs before you can reach him with your sword! So you have to be careful.
So yeah, that pretty much sums up the basics of the game, though I'm sure you'll still have more questions... If you do, just post a comment with your question and we'll respond as soon as humanly possible! We just want you guys to know how groundbreaking this game really is!
Also, a couple of notes. Firstly, we're a really small indie group and have very little means of promotion, so please, if you like the game, do what you can to let people know about it! We've got a Reddit article you can bump up, or you can jump on our Facebook page or join our Twitter... Popularity of indie games is usually based on user communication (or the game reaching the ears of someone like Notch lol) so please, get the word out where you can!
In addition, since we're based in Australia, we can't start a Kickstarter page for the project, so we opened up a donation service through Paypal which you can buy us a beer through! (Well... We don't drink... But you get the picture) if you like our work, you can show your appreciation that way (if you have the means) just visit our FAQ page and scroll to the bottom to find out how!
Otherwise, keep up the lovely comments and emails that all you awesome people have been sending, because we get so much out of hearing it! Gives us a real rush and makes us feel like we're really doing something special here! You're all awesome!

Sunday, February 12, 2012

O RLY? YA RLY!

So we've had a few people start to realise why we're so excited about this game, and it's to do with the infinite game world... So we thought we should write up this blog entry to explain it a bit further...

So you've been seeing lots of "overworld" stuff in the game, like this:


And you're possibly thinking to yourself "Wow, that's really well designed! It's very pretty!" but it wasn't designed by us....

You may have also seen the dungeons, like this:


And thought "Very cool! That's a well-designed dungeon! Very labyrinthine". But, once again, it wasn't made by us...

The truth is that the GAME ENGINE is what made these levels. We have no level designer on the team, as our procedural engine that we've written builds the world for us. Towns, dungeons, countryside... It's all made by the game, and it does this INFINITELY.

But let me clarify that...

We've had a lot of people think that when we say "infinite world" we mean "randomly generated world". This is not the case. Everyone who plays Malevolence will experience the same world as everyone else who plays Malevolence, just in the same way that everyone who plays Skyrim plays in the same world as everyone else who plays Skyrim. It's not an MMO, it's singleplayer, however everyone is in a copy of the same world. That world, however, is genuinely infinite.

We can already hear a lot of you going:


So let me give you this example... Let's say that two people, each with their own computer, install Malevolence, start a new game (both, coincidentally starting in the same location), both walk North for a million miles, then both turn East and walk for another million miles. When they stop walking, they'll both be in EXACTLY the same place. If there is a town there, they will both be in that town. If there's a tavern there called The Stinky Pomegranate, they'll BOTH see the Stinky Pomegranate.

So if you have Malevolence, and a friend of yours has Malevolence, and you find a PARTICULARLY awesome dungeon, you can tell your friend Bobby Joe about it and where to find it (no matter HOW far you've traveled to find it yourself) and if he follows your directions he will be able to find it himself.
Loot, on the other hand, is spawned based on a time coefficient, so it will be harder to direct people to a particular item. But you'll be able to direct people to any NPC, town, dungeon, crypt, mountain, ocean, island, or any fixed thing like that.

And yes, throughout all of this, it's infinite.

"Impossible!!!" you say? Well, it's actually working just fine, but it's all in raw data format so it's quite boring to look at. All we're doing now is going through and attaching the 3D world to it (the easy part, comparatively)

Are you of a more technically minded nature and would like to know a bit more about how it's done? Then feel free to read this blog article we did about it. We don't go into TOO much detail (naturally, we don't want everyone stealing our technology) but it should give you enough of an outline to let you know that we're not TOTALLY crazy (just a little)

And remember, you can follow more regular updates on this game (as well of heaps of extra stuff not shown on the blogs) by following us on the social networks!


Also, for something different... Would you like to help out the project with a donation? It's easy to do, thanks to PayPal! You don't have to, of course, but to scavenging indies like us, every little bit helps!
All you have to do is visit the FAQ page on our homepage and scroll to the button :)

Wednesday, February 8, 2012

Browsing Around Town

Huzzah! Basic outdoor town functionality is complete! Now we can move onto interiors! Once that's done, we'll be linking it all together and passing it on to our test team!
Now when we say 'basic outdoor town functionality' we mean BASIC. B.A.S.I.C. Our aim right now is to just get it working. Now that it's working we can add in all the little features and functionality and assets and polish to make it perfect, but at the same time we can always be happy and confident knowing that it's working just fine. Here's a video, but keep in mind that it's BASIC FUNCTIONALITY ONLY!


With the asset creation, we've also got a little behind the scenes clip for you. Lately we've been showing you the behinds the scenes work of Nicolas and Natalie on their areas of the game, so here's a little peek into the work of Alex, our 3D modeller, working on a new building asset for the towns:


Also, while we've got you, we've noticed that some people are a little confused as to what Malevolence will actually be. Apparently a lot of you are hearing "infinite world" and assuming that we mean random world generation. Just so that everyone is on the same page, we want you to know that we'd never stoop to that! Malevolence has a true, persistent, procedurally generated 3D world which is literally infinite. You can walk for a million miles in one direction, then return to the spot you came from and it'll all still be there. Not only is that the case, but everyone else playing the game will be in an exact copy of the same world. So if you, for example, find an amazing catacomb somewhere that you particularly enjoyed, you'll be able to tell your friends about it and they'll be able to go and explore the exact same catacomb that you did (although item generation is based on a time coefficient, so the loot might be different for them). But the same goes for towns, dungeons, forests, mountains, NPCs and virtually everything else in the game. You're going to LOVE it.

Still, we get our share of nay-sayers, trolls and flamers in our line of work, but we have one simple thing to say to them!


To the haters, we say, look elsewhere for your gaming experiences. To our fans we say, you are in for a real treat with this game! And we thank EVERYONE who has taken the time to send us nice messages, post supportive comments and tell everyone they know about us! To a humble indie team, the dedication that some people have been showing to this project is just staggeringly awesome. You guys ROCK!!!

We'll be back with more soon! In the meantime, join us on the social networks!

Sunday, February 5, 2012

I know, I'm sorry...

Yes, I know, the updates have been lacking lately, but that doesn't mean that the work has slowed down!

We've decided on a bit of a new direction for the game in this last stretch before release. Up until now, our development direction had been to perfect each of the three segments of the game (dungeons, countrysides then towns) and then spend the final sprint developing assets and adding polish.

Now, however, our direction has changed. We now plan to get all three areas of the game working in a rough state (basic functionality) and have it all link together as an entire (though basic) game. Once that is done, we will then go through and develop the game features, then develop assets and add polish.

Because of this new system, however, we've got to do a LARGE amount of work to link all three sections of the game together and get them working in a basic form. Once that's done, however, we'll be able to pass on this rough version to the alpha test team as we slowly add features and fix bugs. Once it's all running smoothly, it'll be simply a mad dash to create 3D models, textures, sounds, music, voices, etc to put into the game. So that's what we've been doing.

Dungeons are working beautifully (as you've seen), countrysides are looking nice and are at around 90% of their basic functionality (though about 10% of their total functionality) and towns are what we're currently focusing on. They're sitting at around 50% of their basic functionality (10% of total functionality). Once countryside and towns are sitting at 100% of their BASIC functionlity, the REAL work will begin, and you'll start seeing some VERY interesting blog entries and also start seeing the game REALLY take shape.

As a VERY early preview, here's a look at how towns are coming along. We've come a little further since recording this vid, but basically, buildings are being created and placed along with basic landmarks. Eventually, we'll start adding more assets so the buildings look different and have more variety, and there will be much more kitch around the place like wagons and barrels, etc. And then NPCs will go in, and you'll also be able to enter buildings and take a look around. So the next few blog entries should be quite interesting.



We haven't had time to make the graphics pretty yet, so you'll just have to trust us on that one. Remember the jump in quality from the old dungeons to the new ones? You can expect that with towns as well. But first we need to get them working properly.
In other news, our concept art lead, Natalie, has been churning out art for us and has been kind enough to throw together a time-lapse video of her working on a new items sheet. Take a look!


It's really cool watching it come together like that!

A big thanks needs to be said, however, to everyone who has sent us nice messages on here, IndieDB, Facebook, Twitter and YouTube. It's all of your positive feedback that really gives us the drive to keep plodding along at this! We really hope you'll enjoy the game once it's done! We're enjoying it already and it's still only very rough! So hopefully that means good things!

Somewhere amidst this very busy year, we'll also be putting together a new trailer for you all to see, which should give you all a buzz! So keep an eye out!

More updates soon!