Oh no, it moves…

After a lot of the talk about some of the basics of the game, I thought it would be nice to have Marian discuss some of the work the art department has been doing on their side of things. So without further ado, here is Marian with some shop talk for you. I’ll be back next time with more info for you.


Hey folks! We did it! The first monster is in the game! And it looks… well… unhealthy. As it should.

I want to take you behind the scenes for a bit and talk about the creation of this monster, but since you can easily read almost everything about the steps normally taken by modelers on a site like www.zbrushcentral.com, I won’t go too far into the boring details.

With our first dungeon sets finished, we noticed that pretty soon we would need something that moves around in these labyrinths, so we can play around with it, and test the game mechanics within. At this point we already have lots of ideas for cool enemies and monsters scribbled out for the game, but to fully flesh them out, design them and then build them in high quality from scratch will take quite some time. Usually you start the modeling process with a scribble that you draw or receive from your conceptual artist that defines how exactly the creature should look like in the end.

Unless, of course, you already have a clear vision, in which case you would simply set yourself loose and begin modeling the creature straight away with Dynamesh in Zbrush. Alternatively, you could just fool around with Zbrush long enough until you managed to produce something decent out of it. Each approach may work, but more often than not, the approach artists take begins with the scribble. Since nothing about Deathfire is truly ordinary, our case was an exception, of course. ;-)

I recalled that I had the concept for a monster lying around in a backup somewhere. It was a monster I had thought of about ten years ago but never had the chance to actually use it. I had begun to model it back then but never got further than doing a basic few tests and getting the proportions in place. For me, it was the perfect starting point. I went back, loaded the model and began to re-imagine the creature, skipping the scribble stage entirely.

Don’t be disappointed, though, I created one nonetheless… just for you… after the fact… which is a whole lot easier by the way, because you already know exactly what it looks like.

Scribble of the Daggerlisk

Once I had the scribble, I jumped straight into 3DS Max and took a closer look at the old model I had created… and realized that not only were the proportions wrong, but also just what a mess this 10-year old mesh structure actually was. Time is hard on digital content as technology is virtually a runaway train and can change requirements overnight.

I knew I could load it up in Zbrush and give it a complete overhaul but it would be a lot of work. Still, it would still be faster than building it from scratch, so I fixed all the bugs and reworked it, creating an entirely new surface for it, while also tweaking a lot of the proportions. When it was finished I showed it to Guido and André for their suggestions and reworked it once again according to the feedback I got.

The Daggerlisk in ZBrush

Once it was completed, I exported everything to 3DS Max rendering out proper skin colors (Fig.A), the depth information for the normal map (Fig.B), a shininess map and the ambient occlusion rendering (Fig.C). All very technical stuff but very necessary to create a polished model.

The different stages of the Daggerlisk

That should be it, right? One would think so, but the fact of the matter is that models coming out of ZBrush have an incredibly high level of detail. Too much for game engines to handle, typically, and the next step in the pipeline was for me to create a version of the model that has fewer polygons.
I built a completely new low-poly model that was based on the new high-poly version, and while doing so I got to do the job every artist loves to do the most… (In case you have not noticed, I am being sarcastic right now.)

If you are into puzzles and brain teasers, you might actually enjoy unwrapping UV texture coordinates, but it is every bit as tedious as it sounds. Honestly. Try to distribute the space on a texture as evenly as possible over all the polygons of the model, eradicating the texture from stretching or being pulled in the wrong direction. Remember, the texture map of an object is like a skin, essentially, and if you tug and pull on one end, invariably, it will affect the rest of the model. Tweaking the points where the texture is attached to the wireframe model will help minimize the impact, but is a process that is incredibly time consuming and not a whole lot of fun. We might be making games for entertainment, but the work that needs to be done to get there can oftentimes be testing your patience and become every bit as mind-dumbing as any job.

It is possible to speed up the process using some functionality built into today’s software, such as relaxing the unwrap modifier, but there are still lots of minute details that you just can’t fix except by hand. And even then, there will always be some glitches that will keep you going back over and over again. The process is actually so boring that I prefer to listen to TV shows or Audiobooks during the entire procedure. That way, you get some head space and you don’t get itchy while checking all the polygons for hours and hours on end, until you found the optimal solution that gives you the (hopefully) least wasted texture space (Fig.D).

The wireframe model

With all that out of the way, the next step is to check if the proportions are still the same in both models. In the case of our critter here, I bought the model from 9 million polygons (high poly) down to 9 thousand polygons. Not a bad reduction at all. You can see the difference here in the wireframe models (yes, the right half of the model is a wire frame too. It is just so dense that it looks like a surface.).

With all the details rendered to a texture, I am loading the textures into Photoshop and begin layering them on top of each other until everything is perfectly fine-tuned and I am happy with the results. At this stage, I always find that getting input from your colleagues is the best source of feedback at this point, in order to get the details right. It is all too easy for myself to get lost in the wrong details, and a different set of eyes always provides a new perspective, pointing out things I may have overlooked or became too complacent to care about. This kind of feedback is often the source of good ideas, as well. André was my second set of eyes in this case and together we tweaked the textures to get the most natural or — in case of our undead friend here — the most scary look out of it. I think it is easy to see the improvements in the following image.

Some modifications and variations

I have no doubt that we will still have to continue applying minor tweaks as we go along and utilize the model in our Unity environment. But for the time being, the Daggerlisk is complete and exported. Time to move on to some of the other denizens of our world, most of which will not be drawn from the animal kingdom, but lean more into fantasy lore.

The finished model of the Daggerlisk

That’s it for this time. I hope you like that you’re seeing.

Marian

P.S. Oh, and yes… it also moves…

As the development of Deathfire progresses, we have reached a junction in the development of the game where we would like to get direct feedback from the fans. We want to hear your opinions!

Since it has always been one of our foremost intentions to share as many aspects of the development with you, the fans, as possible, we feel that getting a feel for certain elements regarding the game from the fans is the logical next step.

This is your chance to become a part of Deathfire!

This is your chance to make a difference… we are putting together a limited focus group to evaluate one of the most critical aspects of the game. It will be a very easy task for those participating, that will require no more than a handful of mouse clicks and a few minutes of their time.

If you are interested in becoming a part of the first Deathfire Focus Group, please fill out the form below and we will add you to our list of interested candidates. From all submissions, we will then select 25 participants at random to move ahead with.

Update: We are sorry, but at this time we are no longer accepting submissions for the focus group. It has already been conducted, in fact.

A first look at the user interface

Before I get into the next Development Diary entry for Deathfire, I wanted to point you all to a new interview with me on The Nerd Cave. It is an interesting – I think – look at the different aspects of my career, not only the games most people are familiar with. But now back to our regularly scheduled programming… more Deathfire stuff. :)

It is a common occurrence in game development that you have to make design decisions based on incomplete information. Why? Well, because at the time you design many aspects of a game, the game itself does not really exist yet. You are merely projecting what you want it to be. Therefore you have to make a great many decisions based on whatever information you have at the time, and what you expect the gameplay to be like in the final product. It is probably hard to imagine for many people, but game design is a very iterative process. Especially as the complexity of the game and underlying systems grow, the requirements will most likely change as well. Somewhere down the line, play testing may show flaws and weaknesses that will have to be addressed, or entire parts of the system show themselves to be flawed, tedious or outright un-fun. No one has ever designed the perfect role playing game in a single attempt, ever. You make decision, rethink them, revise them, reiterate them, adapt them and then repeat the entire process until one day you ship a product.

While working on Deathfire, the other day we stumbled into such a scenario, which I think illustrates this very nicely in an easy to understand manner. The item in question were the character status boxes.

UI sketch These small user interface elements serve to give the player a quick overview over the characters in his party, their health, their mana, their condition, etc. They also allow the player to access more information and to make various character-specific selections, such as attacks and spells, among other things.

I made a list of components I felt needed to be part of this character box, mocked it up very quickly in Photoshop, and forwarded it to Marian so that he could think of a proper graphical representation for them. Instantly the question for him became, “Should we do it this way, or maybe make tall slim boxes, or rather wider ones?”

He worked out some ideas and showed them to the rest of the team. You can see the initial designs below. As you can see, they follow the same kind of general design pattern, but each version is created with a specific focus in mind. One focuses on the portrait, while another one favors the attack and spell slots, and so forth.

Once we saw these, it became clear that with our original premise, these boxes would use up a significant amount of screen real estate. Deathfire will have a party that consists of four heroes. In addition to that, the player can recruit two additional NPCs at any given time, resulting in six character boxes on the screen. With all the information displayed, this a not insignificant amount of screen real estate to deal with and the last thing you want is for these boxes to cover up vital areas of gameplay.

Different versions of the character status box

First versions of the character status box that we evaluated

While these were great first attempts, they felt a bit too design heavy and not what you would really need in the actual game. In addition, the important elements seemed to be drowned out a bit by the bulky borders and decorative elements. In a word, we felt we weren’t quite there yet. We decided that we needed to optimize this somehow and for that we needed to envision more clearly how the player is going to play the game. While we have the game engine up and running with our 3D environments and some basic core functionality, we have yet to reach the point in our prototype where it is possible to really get a feel for the way the game will play in the end. Therefore, we had to extrapolate and sort of play the game in our minds, and as we did so, a few things became obvious.

Another version of the character status box

An iteration of the character status box, but we felt it ran too wide.
Note, however, the lines are all much slimmer than before.
This is not final art and the portrait is merely a mock-up

There was a lot of stuff in those original character boxes that we didn’t really need. At least not all the time. So we thought that maybe we could create boxes the display the minimum of information and when the player moves the mouse over them, each respective box will expand to its full size, allowing access to the full set of features. The next step was for us to decide what that minimum of information actually is that we need to relay to the player at all times.

Small status boxDo you really need the character’s name, for example, all the time? One could argue that the portrait is enough, particularly if we allow players to customize them the way we have in mind, but since we are creating a game in which interaction with NPCs and among the party members themselves will be very frequent, we felt that it is, in fact, very important that the player always has an indication as to who is who, when they are being referenced by name.

But what about those attack and spell slots? Because we have a turn-based combat system in Deathfire, it is not essential for us to give the player instant access to his weapons and spells. In real time combat, yes, the player needs access to his weapons, which represent the attacks, within a fraction of a second, but in real-time combat, the combatants take turns, which means there is proper time for the player to make his selections without rushing things. If we automatically expand the box for the character whose turn it is, this should turn out to be pretty slick and efficient, actually, also serving as a visual guide as to whose turn it is.

The expanded character status box

The expanded character status box with weapons equipped.
Note: This is not final art and the portrait is merely a mock-up

Usually the on-hand weapon slots also serve the purpose to Use items in role playing games, such as potions or tools. However, we reckoned that while that is true, it is not an all too common occurrence, particularly not one that is typically time critical, so the brief delay that expanding the full box would incur during a mouse-over should be acceptable. There is also still enough meat for the player to grab the box and drag it to a different place so that the order of the party can be easily arranged in the game, while mouse-over texts will relay additional information, such as the actual points of health, etc.

In my original layout specs, we also had a small toggle that allows the player to switch between a panel displaying the equipped weapons and one displaying the hero’s quick-spells. (Quick spells are memorized spells that can be fired at a moment’s notice without further preparation. They are complemented by non-memorized spells that require significantly more time to cast.). Upon playing the game in our minds, we realized that this toggle, too, is really needed very infrequently. For the most part spell casters would want to have their quick spells accessible while melee and ranged fighters would want their weapons accessible. The player would then occasionally switch these panels, but for the most part we expect them to remain fairly static settings.

Therefore we decided the toggle does not need to be available at all times and could be safely removed from the mini box. Incidentally, as Marian was working out his designs, it turned out that we do not need the toggle at all, because we can fit the weapon slots and the quick spell slots all on the enlarged pop-under box.

UI sketchWith all that in mind, we decided that we really just wanted to display the portrait, and the health and mana bars at all times, along with the hero’s name and a small digit that represents the character’s level. Character states, such as poison, paralyzation, etc can be easily color-coded into the portrait, or displayed as mini-icons alongside, and damage markers can be painted right over the portrait. All in all a pretty neat affair, I would say. For now… because who knows? Once will begin actually playing the game in earnest, we may find that our assumptions were wrong and that have to re-design the boxes once more, but such is the life of a game developer. It is the nature of the beast. Game development is an evolution, even after doing it for the umpteenth time.

On my Twitter feed, as well as here on the blog, a few questions have arisen, regarding the “Bind item on equip” option displayed in the Item Editor. It is an option that is highly unusual for a single-player game, and some of you are wondering what’s up with that.

“Bind on Equip” has been brought to the table by massively-multiplayer online games in order to prevent players from using and then selling valuable and unique items to other players. It forces the player to consider‌—‌if only for a moment‌—‌if he’d rather use the item or make money off it.

In retrospect, I find it strange that this feature has never come up in single-player games before, because at its core, the rationale remains the same. Perhaps we have all just been too blindsided to realize its existent potential. After all, they are not uncommon in mythical lore and popular fiction. James Bond has a gun that is attuned to him, and so does Judge Dredd, and even the magic wands in Harry Potter work that way. Excalibur, the mythical sword from the Arthurian saga or Ulysses’ bow are also perfect examples of bound or attuned weapons, so it is only sensible to carry the concept over into games.

When we bind items in Deathfire, it will be mostly for the same purpose. While buying and selling items in the game may not be the driving factor for item binding in our game, other aspects of it are. In Deathfire’s game design I want to use it to force the player to think about certain decisions. In this case, which party member should I give the item to?

If you give it to the wrong character, you’re robbing yourself of another character’s opportunity to make better use of it, perhaps, because the item can no longer be traded among party members. If you give it to an NPC, he or she might run away with it at some point. More importantly, it prevents that you take a truly powerful, unique weapon from an NPC who just joined the party to give it to your favorite character and then boot out the NPC. If you equip it, you’re no longer able to sell it or barter it away. What if the item is unique and part of a quest, and in the end you learn that only a certain character can use it, all the while you already bound it to someone else? On the other hand, the binding weapon you just found might be so powerful that the lure of it is simply so strong that you throw all caution in the wind and equip it anyhow, against your better judgement, because you hope it will help you overcome that mob of Golem Guardians awaiting you.

Decisions, decision, decisions… the lifeblood of a good role-playing game.

These are aspects the player has to consider, and like a cursed item‌—‌which is bound, though it does not come with the warning label of a bind-on-equip item‌—‌it can have consequences to equip such a weapon or piece of armor. It is that decision-making that I think has an interesting value, because it adds depth to the role-playing aspects of Deathfire. Giving away this additional layer of complexity and player involvement, simply because using bound items in single-player games seems unorthodox, would seem silly to me, now that it’s on my radar. Who knows, this may even turn out to be a feature other games will pick up as well… and why not?


Catch Me If You Can book coverDon’t forge that we are still running a give-away for those who are willing to help us spread the word about Deathfire. This time around you can win a copy of the ”Catch Me If You Can: The Film and the Filmmakers” Pictorial Moviebook. This full-color book includes not only the entire script of the Steven Spielberg movie starring Tom Hanks and Leonardo DiCaprio, but also various photographs and behind the scenes tidbits about the making of the movie, as well as an introduction by Frank W. Abagnale, whose unique life story the film is based on. You’re interested? Well, just make sure you collect entries for the give-away below, and don’t forget, you can obtain more entries every day for the duration of the give-away, simply by tweeting about Deathfire.

a Rafflecopter giveaway

For the past few days I’ve been working on some exciting things in Deathfire, that have propelled the game forward quite a bit in my mind. Items. Sounds trivial, I know, but items are the salt and pepper of any role-playing game.

It started when I decided to make a weapons list for the game. We have been working on parts of the user interface for the past two weeks or so, and it got to the point that I wanted to see some weapon icons in the respective slots. In order for Marian to begin drawing some icons, we began making a weapons list. It started out quite innocuously, but once I got into it, the list grew very rapidly, and at the end of the day we had a list of over 150 weapons for the game. And that is just the first go at it, not including any quest items and not including any unique, named weapons, which we plan to feature prominently in the game.

Adding all those will easily double the number of weapons in Deathfire, and I have no doubt that on top of that I probably forgot a good number of cool weapons that we will want to include in the game as we go along. All things said, in the end, I would estimate that we will have somewhere between 300 and 400 weapons. Just to give you a comparison, Shadows over Riva, the third of the Realms of Arkania games had less that 100 weapons. In fact, looking over the game’s source code showed me that the entire game contained a mere 480 items. So, in essence, it looks as if we will have nearly as many weapons as Shadows over Riva had items. Nice!



Here are few examples of the weapons from Deathfire
(Temporary artwork)

But a weapons list like this is useless, of course, if the items don’t actually make it into the game. I mean, anyone with a spread sheet can make a list easy enough. Especially, when Marian sent me a number of weapon icons a few days later, I really wanted to see these items in the game. It is quite interesting to note at this point that even in this day and age, there are no really qualified tools in the market for game design. (I am aware of articy:draft, of course, but since it is a Windows-only application, and horribly overpriced at that, it is of no use to me – or many other game developers for that matter, aside from the fact that it uses a very specific approach to game design from what I’ve seen, that seems to shoehorn you into specific patterns.)

The reality of game design is, that it really is a jungle out there and that to this day, most designers still use a lot of tools that are not really meant for the job, such as regular word processors or spread sheets. These inadequate tools typically create their own set of problems, especially because the data have to be somehow transferred from these document or spread sheet formats into data the game can actually use. It is a process that is tedious and error prone and often results in a lot of extra work, not to mention that designing item lists with item properties inside a spread sheet is anything but a satisfying process in and of itself. So I set out to write an Item Editor to make our lives easier.

Among the endless list of cool things about Unity3D, the middleware engine we’re using for the game, is that you can fully program it, including the development environment itself. So I began writing our Item Database Manager as an Editor Extension which works right inside the Unity environment. Not having to switch to external tools is an incredible boon that can not be overstated.

I wrote an item class, specializations for it to handle things such as weapons, armors, keys, consumables, etc and then began to write the editor that would allow us to enter the items in an internal database where the game can directly access them. Here’s a little screenshot for you to see what it looks like.


As you may notice there’s a bunch of drop-down menus that allow us to make key selections and depending on these selections the editor window will actually change, as weapons have a different set of parameters than armor, for example.


Just by means of comparison, take a look at what one of the external editors looked like that we used for the Realms of Arkania games. Bit of a different world, isn’t it?


When you take a look look at this Deathfire Item Editor I wrote for Unity, the window also gives you a good idea for the level of complexity we are building into his game, I think. This is a first go at the weapons, of course, but already you can see that there is tremendous flexibility built in to customize these weapons in many ways.

Nonetheless, I am certain that I’ve forgotten certain fields that we will need to add to the items as development progresses and requirement change or grow. Magic items, for example have not yet been properly tackled in the editor, as I will need to provide a hook to the magic spells/abilities the item may have. However, one of the truly great side effects of having this item editor and database right inside Unity is that it can grow with the game. Unlike static data formats imported from external tools, where you always have to be very aware of changes and additions to the data fields, here we are working with much more organic data that will adjust easily – and mostly automatically – to new requirements as we work on it. The amount time that procedure saves is invaluable while it also minimizes effort and hopefully errors – though that is always a double-edged sword. In development terms, convenient does not always equate safe.

To round out this post, I thought I’d give you a quick glimpse what the player might see in the actual game in the end, when calling up the stats for the weapon. This image is entirely temporary art, of course, but I think it illustrates the point nicely.



Temporary art for illustrative purposes only. Not an actual game item

Items may not be the most glamorous of things to talk or read about, but as you will agree, they are an integral part of any role-playing game, and how many of you have ever thought about the actual process of getting these items into a game? Well, now you know…

I hope you found this peek behind the scenes interesting. Feel free to let me know what topics you are most interested in and what subjects you’d like me to cover most in future blog posts.

Please make sure to also read this follow-up article with more details on the bound and attuned items in the game.


Catch Me If You Can book coverAt this point I would like to congratulate Kevin N. as the winner of the last give-away. Kevin won himself a copy of “Sons of Anarchy,” which he should find in his mailbox soon. But do not despair, you can be a winner, too. I have prepared another give-away for everyone out there, willing to help us spread the word about Deathfire. This time around you can win a copy of the ”Catch Me If You Can: The Film and the Filmmakers” Pictorial Moviebook. This full-color book includes not only the entire script of the Steven Spielberg movie starring Tom Hanks and Leonardo DiCaprio, but also various photographs and behind the scenes tidbits about the making of the movie, as well as an introduction by Frank W. Abagnale, whose unique life story the film is based on. You’re interested? Well, just make sure you collect entries for the give-away below, and don’t forget, you can obtain more entries every day for the duration of the give-away, simply by tweeting about Deathfire.

a Rafflecopter giveaway

The technology behind “Deathfire”

As I promised, I want to talk a little more about the technology behind Deathfire today. I mentioned on numerous occasions that we are using Unity3D to build the game, but of course that is only a small part of the equation. In the end, the look and feel of the game comes down to the decisions that are being made along the way, and how an engine like Unity is being put to use.

There was a time not too long ago when using Unity would have raised eyebrows, but we’re fortunately past that stage in the industry and—with the exception of some hardliners perhaps—most everyone will agree these days that it is indeed possible to produce high end games with it.

For those of you unfamiliar with Unity3D, let just say that it is a software package that contains the core technologies required to make a game that is up to par with today’s end user expectations. Everything from input, rendering, physics, audio, data storage, networking and multi-platform support are part of this package, therefore making it possible for people like us to focus on making the game instead of developing all these technologies from scratch. Because Unity is a jack of all trades it may not be as good in certain areas as a specialized engine, but at the same time, it does not force us into templates the way such specialized engines do.

In addition, the combination of Unity’s extensibility and the community behind it, is simply unparalleled. Let me give you an example.

The character generation part of a role-playing game is by its very nature a user interface-heavy affair. While Unity has solid support for the most common user interface (UI) tasks, that particular area is still probably one of its weakest features. When I started working on Deathfire, I used Unity’s native UI implementation, but very quickly I hit the limits of its capabilities, as it did not support different blend modes for UI sprites and buttons, or the creation of a texture atlas, among other things. I needed something different. My friend Ralph Barbagallo pointed me towards NGUI, a plugin for Unity that is specialized in the creation and handling of complex user interfaces. And his recommendation turned out to be pure gold, because ever since installing NGUI and working with it, it has become an incredibly powerful tool in my scripting arsenal for Deathfire, allowing me to create complex and dynamic interactive elements throughout the game, without having to spend days or weeks laying the groundwork for them.

While you can’t see it in this static screenshot, our character generation is filled with little bits and animation, ranging from the buttons flying into the screen in the beginning, to their respective locations. When you however over the buttons, tooltips appear and the buttons themselves are slight enlarged, highlighted by a cool corona effect and when you select them, the button icon itself is inverted and highlighted, while a flaming fireball circles the button. While none of these things is revolutionary by itself, of course, it was NGUI’s rich feature set that allowed us to put it all together without major problems, saving us a lot of time, as we were able to rely on the tested NGUI framework to do the majority of the heavy lifting for us.

Interestingly, it turned out that some of NGUI’s features far exceed immediate UI applications and I find myself falling back onto NGUI functions throughout the game, in places where I had least expected it. It now serves me as a rich collection of all-purpose helper scripts.

When we began working on Deathfire’s character generation, one key question we had to answer for ourselves was whether we should make that part of the game 2D or 3D? With a user interface I instantly gravitate towards a 2D approach. For the most part they are only panels and buttons with text on them, right? Well, Marian asked me if we could, perhaps, use 3D elements instead. After a series of tests and comparisons we ultimately decided to go with a 3D approach for the character generation, as it would allow us to give the image more depth, especially as shadows travel across the uneven surface of the background, and offer us possibilities with lighting that a 2D approach would not give us. Once again, I was surprised by NGUI’s versatility, as it turned out that it works every bit as impressive with 3D objects as it did with the preliminary 2D bitmap sprites I had used for mock ups, without the need to rewrite even a single line of code.

Another advantage that this 3D approach offers is the opportunity for special effects. While we haven’t fleshed out all of these effects in full detail yet, the ability to use custom shaders on any of these interface elements gives us the chance to create great-looking visual effects. These will hopefully help give the game a high-end look, as things such as blooming, blurs, particles and other effects come into play.

These effects, as well as many other things, including finely tuned animations, can now be created in a 3D application, such as Maya and 3ds Max, so that the workload for it can be leveraged across team members. It no longer falls upon the programmer to make the magic happen, the way it is inevitable in a 2D application. Instead, the artist can prepare and tweak these elements, which are then imported straight into Unity for use. It may not seem like a lot of work for a programmer to take a series of sprites and draw them in the screen in certain sequences, it still accumulates very quickly. In a small team environment like ours, distribution of work can make quite a difference, especially when you work with artists who are technically inclined and can do a lot of the setup work and tweaking in Unity themselves. We felt this first hand when Marian and André began tweaking the UI after I had implemented all the code, while I was working on a something entirely different.

This kind of collaboration requires some additional help, though, to make sure changes do not interfere with each other. To help us in that department a GIT revision control system was put in place, and it is supplemented by SceneSync, another cool Unity plugin I discovered. SceneSync allows people to work on the same scene while the software keeps track of who made which changes, so that they can be easily consolidated back into a single build.

Together, these tools make it safe for us work as a team, even though we are half a world apart. Keep in mind that Marian and André are located in Germany, while Lieu and I are working out of California. That’s some 8000 miles separating us.

While it may seem intimidating an prone to problems at first, this kind of spatial separation actually has a bunch of cool side benefits, too. Because we are in different time zones, nine hours apart, usually the last thing I do at night is putting a new build of the game in our GIT repository so that Marian and André can take a look at it. At that point in time, their work day is just beginning. They can mess with it to their hearts’ desire almost all day long, without getting in my way. When necessary, I also send out an email outlining problems and issues that may require their attention just before I call it a day. The good thing is that because of the significant time difference, they usually have the problems ironed out or objects reworked by the time I get back to work, so that the entire process feels nicely streamlined. So far we’ve never had a case where I felt like I had to wait for stuff, and it makes for incredibly smooth sailing.

But enough with the geek talk. I’ll sign off now and let you enjoy the info and images so that hopefully you get a better sense of where we’re headed. Next time we’ll take another dive into the actual game to see what’s happening there.


On a slightly different note, I wanted to congratulate Tobias A. at this point. He is the winner of the “Silent Hill” Blu-Ray/DVD give-away I ran with my last Deathfire update. But don’t despair. I have another give-away for you right here… right now.
Sons of Anrachy coverJust as last time, help us promote Deathfire and you will have the chance to win. This time, I am giving away a copy of Sons of Anarchy: Season One on Blu-Ray Disc. In order to be eligible for the drawing, simply answer the question below. But you can increase your odds manifold by liking my Facebook page, the Deathfire Facebook page, or by simply following me on Twitter. It is that easy. In addition, tweeting about the project will give you additional entries, allowing you to add one additional entry every day. Good luck, and thank you for spreading the word!

a Rafflecopter giveaway

A simple cross fade shader for Unity

The other day I was putting some polish to Deathfire‘s character generation and we wanted to fade character portraits from one to another when the player makes his selections. Unlike hard cuts, cross fades simply add a bit of elegance to the program that we did not want to miss.

I went through Unity’s documentation and very quickly came across its Material.Lerp function. Just what I needed, I thought, but after a quick implementation it turned out it didn’t do what I had had in mind. I had not read the function description properly, because what it does, is blend between the parameters of two materials and not the actual image the material creates. Since I am working with a texture atlas, this gave me a cool scrolling effect as my material lerped from one end of the atlas to the other but not the kind of cross fade I had had in mind.

It turns out that Unity doesn’t really have the functionality, so I dug a bit deeper and found Ellen’s approach to blending textures. A quick check of her sources showed me that it still did not do what I wanted, but it gave me a good basis to start from as I began writing my own implement of a simple cross fader.

It all starts with the shader itself, which takes two textures without a normal map and renders them on top of another. A variable tells the shader how transparent the top texture should be so we can adjust it on the fly and gradually blend from the first texture to the second. The key feature for my approach was that the shader uses UV coordinates for each of the textures to allow me to use the shader with a texture atlas.

Shader "CrossFade"
{
  Properties
  {
    _Blend ( "Blend", Range ( 0, 1 ) ) = 0.5
    _Color ( "Main Color", Color ) = ( 1, 1, 1, 1 )
    _MainTex ( "Texture 1", 2D ) = "white" {}
    _Texture2 ( "Texture 2", 2D ) = ""
  }

  SubShader
  {
    Tags { "RenderType"="Opaque" }
    LOD 300
    Pass
    {
      SetTexture[_MainTex]
      SetTexture[_Texture2]
      {
        ConstantColor ( 0, 0, 0, [_Blend] )
        Combine texture Lerp( constant ) previous
      }    
    }
  
    CGPROGRAM
    #pragma surface surf Lambert
    
    sampler2D _MainTex;
    sampler2D _Texture2;
    fixed4 _Color;
    float _Blend;
    
    struct Input
    {
      float2 uv_MainTex;
      float2 uv_Texture2;
    };
    
    void surf ( Input IN, inout SurfaceOutput o )
    {
      fixed4 t1  = tex2D( _MainTex, IN.uv_MainTex ) * _Color;
      fixed4 t2  = tex2D ( _Texture2, IN.uv_Texture2 ) * _Color;
      o.Albedo  = lerp( t1, t2, _Blend );
    }
    ENDCG
  }
  FallBack "Diffuse"
}

The second part of the implementation is the C# script that will drive the actual cross fade. It is pretty straight-forward and consists of an initialization function Start(), an Update() function that is called periodically and adjusts the blend factor for the second texture until the fade is complete. And then, of course, there is a function CrossFadeTo() that you call to set up the respective cross fade.

using UnityEngine;
using System.Collections;

public class CrossFade : MonoBehaviour
{
  private Texture    newTexture;
  private Vector2    newOffset;
  private Vector2    newTiling;
  
  public  float    BlendSpeed = 3.0f;
  
  private bool    trigger = false;
  private float    fader = 0f;
  
  void Start ()
  {
    renderer.material.SetFloat( "_Blend", 0f );
  }
  
  void Update ()
  {
    if ( true == trigger )
    {
      fader += Time.deltaTime * BlendSpeed;
      
      renderer.material.SetFloat( "_Blend", fader );
      
      if ( fader >= 1.0f )
      {
        trigger = false;
        fader = 0f;
        
        renderer.material.SetTexture ("_MainTex", newTexture );
        renderer.material.SetTextureOffset ( "_MainTex", newOffset );
        renderer.material.SetTextureScale ( "_MainTex", newTiling );
        renderer.material.SetFloat( "_Blend", 0f );
      }
    }
  }
  
  public void CrossFadeTo( Texture curTexture, Vector2 offset, Vector2 tiling )
  {
    newOffset = offset;
    newTiling = tiling;
    newTexture = curTexture;
    renderer.material.SetTexture( "_Texture2", curTexture );
    renderer.material.SetTextureOffset ( "_Texture2", newOffset );
    renderer.material.SetTextureScale ( "_Texture2", newTiling );
    trigger = true;
  }
}

The script also contains a public variable called BlendSpeed, which is used to determine how quickly the fade will occur. Smaller numbers will result in slower fades, while larger numbers create more rapid cross fades.

In order to use these scripts, all you have to do is add the shader and the script to your Unity project. Attach the C# script to the object you want to perform the cross fade and then from your application simply call CrossFadeTo() with proper texture parameters to make it happen. That is all there really is to it.


  CrossFade bt = gameObject.GetComponent();
  bt.CrossFadeTo( myTexture, myUVOffset, myScale );

I hope some of you may find this little script useful.

Usually when starting a new role-playing game, one of the first things you begin to work on is the underlying game system. Deathfire was no different. After a few programming tests to prove general feasibility of certain key features, the first thing we turned to was the game’s character generation. Because the player’s stats, attributes and traits are at the heart of any role-playing game, it was only natural to begin zoning in on that aspect of the game and lay down some underpinning ground rules from which to build the overall game system.

And with that we were off to the races. It was decision time. How should character creation work? Should the player roll attributes which then decide which kind of character he can play, or should the player be able to pick archetypes himself and we fit the attributes around that?

Forcing the player to re-roll a character in its entirety over and over again just didn’t feel user friendly enough any longer

The first approach is the one we used for the Realms of Arkania games and upon replaying Shadows over Riva, I felt that forcing the player to re-roll a character in its entirety over and over again in order to make it fit the necessary class requirements just didn’t feel user friendly enough any longer. Therefore, I opted for a different approach that seemed a little more accessible to me. After all, the key to this entire project is “fun.” We don’t want to typecast the game in any way. We’re not making a hardcore game or an old-school game, or a mainstream RPG or whatever other monikers are floating around. We want to make a role-playing game with depth that is fun to play. It is really as simple as that. Anything that smells of tedium will go out the door, which includes things such as click-fest combats. But that’s a subject for some other time.

So, when getting into the character generation, the first thing the player will do is pick a race he wants to play.

Naturally, we allow players to decide whether they want to create male or female heroes to add to their party. Therefore we have male and female counterparts for all six races, the Humans, Wood Elves, Dwarves, Halflings, Snow Elves and Tarks.

Most of them are pretty self-explanatory, except for Tarks, perhaps, which we created as another kind of half-breed class. Think of them as half-orcs. Not quite as ugly and single-minded – meaning stupid – as orcs, Tarks are incredibly strong humanoids with tremendous instincts and roots in nature. At the same time, however, they are not the most social, charismatic or intelligent of sort. But if brute strength and endurance is what you need, a Tark may just be the answer.

The next step in the creation of a hero is the selection of a class. Players can pick from eight available classes in Deathfire.

It is here that you can decide which role your hero should play in the overall scheme of things. Again, most of the classes are pretty standard fare to make sure anyone with a bit of role-playing experience will quickly be able to pick their favorite.

Both, the race and the class, affect a character’s attributes and they will be internally adjusted as you make your selections.

Once this step is completed, you will finally get to see the character’s core stats. At the base, each character has a Strength, Dexterity, Constitution, Intelligence, Wisdom and Charisma attribute. These are the very core and will be used to calculate a number of additional attributes, such as the attack and defense values, among others. They will also affect the damage the character can do, the amount of magic points he has, and the armor rating. Also included here are the Weapon Skills, controlling how well the character can handle and use various types of weapons.

With 34 character traits, there is plenty of room to create dynamic gameplay

To create a role-playing experience that has real depth and gives the player breadth in shaping their in-game characters over time, the core attributes are not nearly enough, however. Therefore we added a number of traits to Deathfire. Thirty-four of them, to be exact, at the time of this writing, packed together into various groups to easier keep track of them.

The first group contains Resistances, controlling how well the character can withstand various types of damage. The Body Skills determine how well the character can handle himself physically and is therefore home to things such as Balance and Speed among others. The list continues with groups such as Nature Skills, Craftsmanship, and Mental Skills, as you can see from the screenshot below, each with a number of attributes that determine the character’s innate abilities.

And then there are the Negative Attributes. Everyone of us has lost his cool before, so why should our game characters be any different? In my opinion, negative attributes bring zest to the game. They give heroes personality and, from a design standpoint, open up an endless array of opportunities for great character interaction and mishaps.

What we are looking at here runs the gamut from ordinary Temper tantrums, to a person’s Fear of Height, or Arachnophobia. But it also includes values such as Greed, Superstition and Pessimism. As you can undoubtedly tell, there is a lot to allow us to color characters and create interesting gameplay moments. I’ve been doing these kinds of things since 1987, so of course, I am fully aware of the fact that all of these attributes will only be of any value if they are actually used within the game. We already have an ever-growing list of situations, moments, quests, events and encounters that will help us put these attributes into play, and there will be many more as we actually move along to flesh out the various areas of the game. You might even be interested to hear that we cut a number of traits for that very reason. We realized that within the confines of the game we are making, the traits would have no real value or would be severely underused.

I am sure you will agree that we have a lot to work with here, and our intentions are to make use of the attributes to the best of our ability.

Another large area that defines characters are the Magic Abilities, but I will leave a discourse on that subject for a future post. In my next update I will take you a little behind the scenes of the actual character generation section of the game and talk a little about the technology we are using.


Sitlen Hill coverIn addition, we would very much like you to help us spread the word, tell others about Deathfire to help make this game a success. Therefore, we are hosting a give-away, offering up a Blu-Ray/DVD copy of the video game based movie Silent Hill: Revelation. In order to be eligible for the drawing, simply answer the question below. But you can increase your odds manifold by liking my Facebook page, the Deathfire Facebook page, or following me on Twitter. Also, tweeting about the project will give you additional entries, allowing you to add one additional entry every day. Good luck, and thank you for spreading the word!

a Rafflecopter giveaway

The conception of Deathfire

After I had put aside Thorvalla last year, I no longer had the urge to create some huge game world. The work load on that game would have been enormous, requiring us to build a team with over twenty people to get it done right. Needless to say that a team of that sort requires a tremendous financial commitment and the responsibility that comes with it, and somehow it no longer felt right.

I always loved to make games in an intimate environment. The games I consider my best were created with small teams, sometimes extremely small teams even. There is something to be said about having the agility of a small team and the ability to rely on your team members on a personal level, when they’re not around merely to fulfill a job obligation or, what’s even worse, point out to you that a certain task is not part of their job description. We made games like the Realms of Arkania series because we wanted to make these games. Each and every member on the team was totally invested, and it resulted in real friendships that extended way beyond the work space. We enjoyed each others’ companies and respected each others’ opinions while also relying on each person’s respective strengths and abilities. We were all in it together, and were all pulling for it.

I needed a concept that allowed me to start small and expand from there

It was around Christmas that I decided I wanted to go back to those roots. To bring a level of idealism back to the table that simply cannot be found in a project of a certain size. Therefore, I needed a concept that allowed me to start small and expand from there if fancy took me.

Every time I undertake a creative endeavor seriously, it is sparked by some kind of a… let’s call it “vision” for the lack of a better word. It has always been like that for me. Whether I’ve been thinking of the story for a new book to write, whether it was a song I was writing, an orchestral piece I was composing or a game I was developing. It always started with a singular spark that got me completely excited. It is usually easy for me to separate short-lived ideas from real inspirations. The difference is time. When I have a true inspiration it will linger with me and refuse to go away. Almost, like a love affair. For days. Every free minute, it will pop back into my head uninvited and it will beg to be explored, fleshed out more and expanded upon. If this is still the case with an idea after a week or so, I know that I have found something lasting. Something that truly intrigues me and wasn’t just a short-lived idea, a fad, essentially.

So, when I had this vision in my head around Christmas, it kept occupying my thoughts throughout the holiday season, and afterwards I knew that this is something I really wanted to do. Thus the concept of Deathfire was born.



Wood Elf portrait from our Character Generation

The vision I had seen in my mind’s eye was a role-playing game game that was electric and right in your face with action. Instantly, I knew that the only way to make this happen was with a first-person view, where the player is right in the thick of things.

While I love the artistic possibilities that isometric games afford us, there are a few drawbacks that made me dismiss the approach offhandedly. For one, the amount of work that is required to make a solid isometric game of any size is enormous, but what’s more, in this case in particular, is the distance it creates between the player and the game. In an isometric game you are always an observer. No matter how well it was done, every isometric game I have played has a God-like quality to it, where I am the master moving chess pieces around, typically without too much emotion involved. This is great for a lot of games and has tremendous tactical advantages for the player, but for Deathfire I want something that is a bit more gripping. Like reading a good thriller, my idea is to create a real-time game in which the player is fully invested, where he feels the environment, where he feels the pressure, the suspense and the menace. It may not give the player the opportunity to strategize and analyze a situation in too much detail before on ogre’s spiked club comes smashing down on his head. Instead, it replaces the moment with an incredibly visceral experience that can range from startling the player all the way to downright frightening him when foreshadowed properly.

The player should feel the pressure, the suspense and the menace

This basic idea stayed with me all over Christmas, as I mentioned, and I began to flesh it out more, collect ideas, and to create a list of things I do want to achieve with the game. In January, right after I returned from my annual CES pilgrimage, we began working on the project in earnest and it has grown quite a bit since then. No doubt, in part, because I have become obsessed with it. Literally.

I’ve had experiences like this in past, and while it may sound cool, it really isn’t, because in real life this means that I suddenly tend to forget doing my chores, like paying the bills, taking out the trash and even eating. My head is constantly thinking about various things related to the game, whether it is some idea I need to write down before I forget it – yes, I do keep a writer’s journal in case you were wondering – or some cool idea for artwork that comes to my mind. Most of the time, however, it is related to some programming issue I am working on at that particular moment. It is truly an obsession and I often walk around the house like a sleepwalker, completely lost in thoughts about my work – much to the dismay of my wife and son at times. So, this is definitely something I have to work on, because it is very destructive as I’ve learned in the past. (I remember when we developed Drachen von Laas, Hans-Jürgen Brändle and I would literally lock ourselves in my apartment for weeks at a time and work on the game for 16 hours a day, every day.) On the other hand, it is exciting for me feel the rush that I get from this project in particular. It just feels right. It is the right game. I can feel it.

Deathfire is a first-person, party-based, real-time role-playing game with a focus on the story

So, to give you a bit of a better understanding what we’re trying to do with Deathfire, here are few cornerstones that I plan to have in the game.

Running in a first-person view, it is a party-based real-time role-playing game with a focus on the story. It is not an open world design. Instead, it is very focussed to create maximum impact for the player. Therefore, we will very tightly control the environment the player moves through so that we can manipulate it as best as possible. This also means that it is a stepped role-playing game, by which I mean that there will be no free roaming the 3D environment. The player will take one step at a time as he explores the world. Not only does this help us to maintain a high level of quality in the overall experience, but it is in many ways also more reminiscent of many traditional pen&paper games where you’d use graph paper to map out the game.

Our intentions are to push the envelope on what has been done with stepped role-playing games in the past

When we think of first-person stepped role-playing games, two candidates come to mind, immediately, I think. The first one is Dungeon Master, the granddaddy of all real-time first-person roleplaying games, and the second one would be the games in the Wizardry series. Deathfire will be like neither of them. It will be so much more. It will be as gripping as Dungeon Master – or Grimrock if you’re not old enough to have played the original Dungeon Master upon which it was based – but it will have the depth of a real role-playing game, putting it more in line with the Wizardy games, perhaps. It will be a completely amped up affair. It will be more intense and deeper than either of these games. We have completed the character system design at this point and I can tell you that there are enough character attributes and stats to rival the Realms of Arkania games. Well, not exactly, but we’re not too far away from its depth. Our intentions are to push the envelope on what has been done with stepped role-playing games in the past. I feel that there is a huge untapped potential how that gaming experience can be enhanced.

Think of it this way, if there’s an earthquake, in most stepped genre games you would see the screen shake and that’s about it. In the case of Deathfire, I want this to become a much more gripping event where you will see rocks shake loose, where dust clouds will form and debris will rain down from the ceiling. Characters will react to it, voice their disapproval and fear, based on their stats, or urge the others to move along before everything caves in. On the whole, I want it to become an experience that is every bit as vibrant and alive as it is dangerous and adventurous.


In addition, I wanted to mention real quick that we have also expanded the Deathfire team. André Taulien has joined the team and if the name sounds familiar, it should. André was one of the artists on Shadows over Riva and, like Marian, he worked on the Divine Divinity series. With his skills and the additional manpower, we will be able to bring Deathfire to life even better, and it feels great to be back in the game with a group of people that I’ve worked with before.

Going ahead with a new game — Deathfire

I am certain it has not escaped your notice over the past few months that I’ve been working on some game-related things lately. I am sure my posts and tweets about Unity were a dead give-away.

Well, I have decided that it may be time for me to share with you some of the things I’m doing, because with every new day that I am working on my current project, I get more excited about it. As you may have guessed, I am working on a new role-playing game. I have to point out, however, that it has nothing to do with Thorvalla, the project I tried to Kickstart a few months ago. Thorvalla is dead and off the table. There was not nearly enough interest and support for the concept to make it happen, so that continuing on would have been a fruitless endeavor. Instead, I decided to learn from the experience as a whole and move forward.

Deathfire logo

The new game I am working on is called Deathfire… for now. It is kind of a project title currently, but the longer we’ve been using it, the more it grew on us and there is actually a chance we may use it for the final game. We’ll have to wait and see. There’s going to be a lot of water going under there until we cross that bridge.

There are currently three people working on Deathfire. Marian Arnold is the lead artist on the project. Marian used to work for my old company Attic, just after we released Shadows over Riva, and he has a pretty long gaming history himself, working on games, such as the Divine Divinity series. What’s even more important, however, is that he is a complete role-playing buff and immediately jumped at the occasion when I approached him with this idea. Being such an avid role player, he often serves as a sounding board for me, too, while I design the game and bounce ideas off him. Oftentimes he comes back to me with comments, such as “We could do this and then do that on top of it, making it work even better.” So, all in all, I feel that Marian is a great complement for myself, forcing me to think, re-think and try harder all the time. The many code rewrites I had to do to try out and/or accommodate some of our cumulative ideas are certainly testament to that.

Then, there is Thu-Lieu Pham, who is also lending her artistic abilities to the project. Lieu is a classically trained illustrator and graphic designer, and her strengths lie squarely in the domain that oftentimes makes fantasy games so mesmerizing — the tantalizing look of characters and scenes. Many of you may recall the paintings she did for Thorvalla, such as the iconic dragon ship at sea scene that we used as the game’s main visual hook, as well as the female Viking character.

Currently, Lieu is busy drawing character portraits for Deathfire’s Character Generation. Instead of creating them in 3D, we decided early on to try and capture the look of Golden Era role-playing games. The covers by Larry Elmore, Clyde Caldwell, Brom, and Jeff Easley come to mind, right away. Call me old-school, but to me this kind of vivid imagery and paintbrush work is much more inspirational and engaging than a rendered 3D character.

And then, there is me. I am currently serving double-duty, designing and programming Deathfire. It is marvelously invigorating, I can tell you that, and it reminds me of the good old days when Hans-Jürgen Brändle, Jochen Hamma and I were making games such as Drachen von Laas, Spirit of Adventure or Blade of Destiny, the first of the Realms of Arkania games, which were, to a large degree, just the three of us working triple-duties, designing, programming and often also illustrating these games. Working with such a small team on Deathfire appeals to me very much and I am enjoying myself, perhaps just a little too much.

I’ve decided from the outset that I will be using Unity3D for the game. As you can tell from previous posts and some of my tweets, I have become a big Unity fan, as it puts all the right development tools at my disposal at a price point and level of quality that is unbeatable. The package has not let me down once so far – though I would like to say that 3D object import could be improved quite a bit.

Deathfire is using a first-person 3D role-playing environment, and I am glad that we can rely on the muscle of Unity to make sure that we do not have to limit ourselves because the technology can’t keep up. Unity may not be a bleeding edge engine, but it can sure play ball with the best of them, and the fact that it is so incredibly well thought-through, makes developing with Unity a lot of fun. More importantly, we can focus on creating the game, instead of the technology to run it on.

I know, you may have a lot of questions now, about the game. What, when, where, how… I’ll get to all that some time later down the line. For now, however, I simply want you to let the info sink in, and hopefully you’ll be as excited as we are. Visit this blog regularly. I plan on sharing more of Deathfire with you as time goes on. In fact, after some deliberation, I’ve decided that I will cover the development process like a production diary of sorts, right here on my blog. And also, don’t forget to follow me on Twitter (@GuidoHenkel) for a constant vibe-meter as to what I am up to.

Talk to you again soon…