<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9193968969153274146</id><updated>2012-01-29T17:43:18.397+01:00</updated><category term='narrative'/><category term='scripting'/><category term='rendering'/><category term='amnesia'/><category term='ARG'/><category term='math'/><category term='business'/><category term='tech'/><category term='list'/><category term='news'/><category term='Portal'/><category term='post-mortem'/><category term='art'/><category term='editors'/><category term='links'/><category term='hiring'/><category term='Valve'/><category term='lecture'/><category term='psychology'/><category term='feedback'/><category term='Travel'/><category term='tips'/><category term='design'/><category term='physics'/><category term='rant'/><title type='text'>In The Games Of Madness</title><subtitle type='html'>Unspeakable thoughts on Horror Game design and development</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default?start-index=101&amp;max-results=100'/><author><name>Frictional Games</name><uri>http://www.blogger.com/profile/00278352641328669040</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>124</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-4020277766693474372</id><published>2012-01-23T10:20:00.005+01:00</published><updated>2012-01-25T09:32:19.354+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='narrative'/><title type='text'>Narrative not a game mechanic?</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;I just stumbled upon Raph Koster's &lt;a href="http://www.raphkoster.com/2012/01/20/narrative-is-not-a-game-mechanic/"&gt;"Narrative is not a game mechanic"&lt;/a&gt; and found that it contains some stuff that I do not really agree with. Now, &lt;a href="http://xkcd.com/386/"&gt;thinking somebody on the internet is wrong&lt;/a&gt; happens all the time, but I think this article brings up some stuff that warrants a reply. While it has up a few good points, it also contains views on a few concept that I think can be quite damaging when trying to expand upon the medium of videogames.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;"&gt;"Game"&lt;/span&gt;&lt;br /&gt;The word game is a very broad and fuzzy one. I can refer to boardgames, gambling, politics, &lt;a href="http://www.youtube.com/watch?v=cryMVK1PwuQ"&gt;drug dealing&lt;/a&gt;, sports and whatnot. For more part of the the article, Raph seems to be talking about videogames (given the black box analogy and that he specifically says "racing videogame"), but then later on slot machines and choose-your-own-stories are used as examples. Now one can see this as just using simply making a point, but I think the unclarity leads to an important issue: Videogames are very different from other games like chess, football, etc even though they are often lumped together.&lt;br /&gt;&lt;br /&gt;The main reason why videogames are different is because they strictly impose rules upon the player. It is not really possible to play a videogame wrong, whereas playing football or chess (the physical versions) the wrong way are very easy. A videogame is more than a few game-rules, it is every single rule that you can possibly experience. Even basic laws of nature like friction and gravity play an essential role in a videogame. Videogames are not about following a specific rule-set, they are about being present inside a virtual world. The only way to really play a videogame incorrectly is to change the very fabric of its virtual reality, or to find some kind of exploitable flaw. &lt;span style="font-style: italic;"&gt;(This is not strictly true, as one could say playing Mario and only running back and forth the first few pixels is not the correct way to play it, but I think I make my point). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In case you want more discussion on this, Chris Deleon goes into the issue a bit deeper &lt;a href="http://www.hobbygamedev.com/spx/games-are-artificial-videogames-are-not-games-have-rules-videogames-do-not/"&gt;here&lt;/a&gt;.  My main point here is just that when discussing &lt;span style="font-style: italic;"&gt;videogames&lt;/span&gt;, it is very common that all other kinds of &lt;span style="font-style: italic;"&gt;games&lt;/span&gt; get thrown into the mix, and that is exactly what happens here. This does not mean that we should try and learn from other kind of games, but when we want to talk about the strength and weaknesses of our medium, we need to be clear what it is we are really talking about.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(I know I do say "game" when I really mean "videogame" from time to time. I hope I have become more clear on what I mean in later posts though. Also note that I sometimes simply use "game", after having just said "videogame" to make the text less repetitive. With that said, I hope I do not get too hammered because of improper usage :) )&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;"&gt;A series of problems&lt;/span&gt;&lt;br /&gt;This is something that have annoyed me &lt;a href="http://frictionalgames.blogspot.com/2010/01/how-gameplay-and-narrative-kill-meaning.html"&gt;for some time&lt;/a&gt;.  It is the idea that videogames must pose some kind of challenge to the player. It leads to all kind issues, most importantly the idea that one needs to have &lt;a href="http://frictionalgames.blogspot.com/2010/04/why-trial-and-error-will-doom-games.html"&gt;trial-and-error&lt;/a&gt; in videogames. In my mind it is this kind of thinking what has been holding back videogames for quite some time.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(72, 72, 72);   font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; font-family:'Lucida Grande', Verdana, Arial, sans-serif;font-size:13px;"&gt;&lt;/span&gt;In Raph's article, this thinking is best exemplified by:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Cut the problem inside the black box, and you have a slideshow."&lt;/span&gt;&lt;br /&gt;Once you get into this kind of mindset, I feel that there is so much you are missing out on. For instance, Amnesia would not have been possible to create if we had not let go of the belief that every meaningful interaction must have some kind of problem and challenge at heart. It is also a statement that makes videogames like &lt;a href="http://dear-esther.com/?p=535"&gt;Dear Esther&lt;/a&gt; impossible to create. It even dismisses a lot of what makes &lt;a href="http://frictionalgames.blogspot.com/2009/06/fun-in-horror-games.html"&gt;Silent Hill so great&lt;/a&gt; as bad videogame design. Needless to say, I think this is a very silly statement to make.&lt;br /&gt;&lt;br /&gt;My view on the core of videogames is not that should to provide us with problems, but to immerse us in engaging virtual worlds. Sometimes problems are useful for doing this and sometimes not. But they are never what lies at the core of the experience.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;"&gt;Feedback is for fun&lt;/span&gt;&lt;br /&gt;The way the article talks about feedback (graphics, sound effects, etc) is in a very simplistic manner: They are simply there to enhance the underlying mechanics. I believe that feedback, in any sensory form, can be a lot more than that. I think that visuals, etc can lie at the front and the mechanics can be a way of exploring them, hence you tweak the gameplay according to your visuals instead of the other way around.&lt;br /&gt;&lt;br /&gt;Instead of seeing feedback as rewards for problem-solving, I think we should see them as a way to increase the feeling of presence in our virtual worlds. It is the ability to "kick back" that makes the virtual worlds of videogames so compelling and so different from other media like novels and film. If we see feedback as a tool of immersion, we can also stop seeing all interaction as problems. I think this brings forward a more inclusive view of what a videogame can be and is also much better at forming a platform for evolving the medium than the old narrow view.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;"&gt;"Narrative"&lt;/span&gt;&lt;br /&gt;I think there is a quite a confusion with words in the article. Narrative, in film theory, is how the story is told (how characters and plot are put together).  When Raph talks about narrative in the sense of choose-your-own-adventure games, he is really referring to the plot. It is not narrative, but plot (ie some very specific events), that act has the reward for the player whenever they provide input.&lt;br /&gt;&lt;br /&gt;It is much better to say that narrative is the subjective entirety of the session. This also goes along with Chris Bateman's view that &lt;a href="http://blog.ihobo.com/2011/11/stories-and-games-1-art.html"&gt;all games tell a story&lt;/a&gt;  and more interestingly that all art are games of some form. One could also take the view (which I do not) that narrative is, like in film, the way in which the story (plot and characters) are told, in which case narrative would be an umbrella term for game mechanics. In any case I do not think Raph's usage of the word is correct and a better title for his post would be "Plot is not a game mechanic".  By saying it this way, I think the main point gets no stranger than "animations/sound/etc are not gameplay mechanics".&lt;br /&gt;&lt;br /&gt;This might seem like a useless discussion in semantics, but I honestly think it is quite important. Right now, story, plot and narrative are mixed up to mean pretty much whatever, making discussions like "should our game focus on story" pointless. Language is our main tool for thinking, and if we cannot have a proper terminology, we will not be able to think properly.&lt;br /&gt;&lt;br /&gt;The article's example from Batman: Arkham City is to me a very clear example of this kind of bad thinking. By saying that the "video  of the Joker playing on a television set" is a narrative element, but  then dismissing the entire climb that came before it as such, one is really missing out on the strengths of the videogame medium. For me I the Joker video is pure plot, a bit of needed exposition and not what is interesting. What &lt;span style="font-style: italic;"&gt;is&lt;/span&gt; interesting is the climb up the cathedral. Here the player takes on the role of becoming Batman and, while performing interactive actions, forming a very compelling narrative.&lt;br /&gt;&lt;br /&gt;As I have written &lt;a href="http://frictionalgames.blogspot.com/2010/10/story-what-is-it-really-about.html"&gt;before&lt;/a&gt;, in order to improve story-telling in games we need to consider stories beyond their plots.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;"&gt;End notes&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;Most of this post has been about meaning of words and of how to approach some concepts, but I hope that I still showed that it is a very important issue. Videogame is a medium that have grown from simplistic simulations, arcade machines and boardgames. This legacy has put its mark on a lot of nowadays thoughts on design, many of which are holding the medium back. The only way to move forward is to reassess this line of thinking and remove ingrained preconceptions of what a videogame is and needs to be. Not until we break the bonds of the past can we freely explore the future.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-4020277766693474372?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/4020277766693474372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2012/01/narrative-not-game-mechnaic.html#comment-form' title='31 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/4020277766693474372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/4020277766693474372'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2012/01/narrative-not-game-mechnaic.html' title='Narrative not a game mechanic?'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><thr:total>31</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-5957498755399389637</id><published>2012-01-02T17:00:00.002+01:00</published><updated>2012-01-02T21:54:11.075+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='list'/><title type='text'>Best of 2011</title><content type='html'>Since 2012 is here I thought it might be a good time for a short best of 2011 list! Note that only games that have been released during 2011 are included (and not games that I have &lt;span style="font-style: italic;"&gt;played&lt;/span&gt; last year). So without further ado, here are my top picks from the past year (starting in reverse order, to make things exciting!):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;3 - Portal 2&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/-dUFoxSDE-84/TwHTB2GITRI/AAAAAAAAAb4/B6LRuLS54OM/s1600/Portal2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://3.bp.blogspot.com/-dUFoxSDE-84/TwHTB2GITRI/AAAAAAAAAb4/B6LRuLS54OM/s400/Portal2.jpg" alt="" id="BLOGGER_PHOTO_ID_5693063432627571986" border="0" /&gt;&lt;/a&gt;What I liked the most about Portal 2 were these little moments where you really felt immersed in the world. For example if you hesitate to follow Wheatly's advice and a make a not very safe looking leap down, he will try to persuade you using hilarious quips. These (unfortunately sparse) moments created this kind of special connection to characters you rarely see in games.  There also exists a very strong sense of place in Portal 2. I think this is mostly created by how the dialog and environments come together and interact. Unfortunately most of this is in the first third or so and the game becomes more and more drawn out during the end. There is also a lot of really lackluster puzzle sections where you are simply trying to find the right area to place a portal. Despite these short comings, Portal 2 had me quite engaged and proved to be one of the better experiences of last year.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;"&gt;&lt;br /&gt;2 - To the Moon&lt;/span&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-yp2nrcNRltw/TwHTSbX4CEI/AAAAAAAAAcE/96Yga0DxG_8/s1600/To-The-Moon.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 180px;" src="http://1.bp.blogspot.com/-yp2nrcNRltw/TwHTSbX4CEI/AAAAAAAAAcE/96Yga0DxG_8/s400/To-The-Moon.jpg" alt="" id="BLOGGER_PHOTO_ID_5693063717512022082" border="0" /&gt;&lt;/a&gt;I think the most interesting aspect of this game is how it in some ways is a culmination of a 25 years JPRPG pixel dramaturgy. The emotional displays of the simplistic sprites are very limited, but are used to perfection and creates a very powerful and mature narration. The game also feature very interesting take on puzzles and action. Sometimes it is possible to decide how much challenge you want and at other times the activities are irrelevant and simply there to make you more connected to the world. Unfortunately this is at its best at the start of the game and it gets progressively worse. The end even contains a terrible action sequence.&lt;br /&gt;What really brings the game home though, is how To the Moon manages to bring up mature themes in a way that is extremely rare in videogames. These play out in fairly non-interactive situations and thus are not any kind of revolution. But simply seeing a game where the core experience is a meditation on love, relationships, memory and what is really important in life, makes me really happy and hopeful.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;"&gt;1- Sword and Sworcery&lt;/span&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/--3U1bth2sBQ/TwHTYMEe6QI/AAAAAAAAAcQ/9NgQ0EOwppI/s1600/sword_sworcerer_sshotr.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://2.bp.blogspot.com/--3U1bth2sBQ/TwHTYMEe6QI/AAAAAAAAAcQ/9NgQ0EOwppI/s400/sword_sworcerer_sshotr.png" alt="" id="BLOGGER_PHOTO_ID_5693063816483367170" border="0" /&gt;&lt;/a&gt;This is by far my favorite game from last year.  The videogame's strong focus on making something that blends interaction, music and visuals creates a really engaging experience. This is truly a game that aims to take you inside a another world and it is all about living it instead of trying to beat it. Another thing I really liked about it is how the game does not force you into continuing playing it. Sword and Sworcery actually explicitly tells you to take a rest and come back later between chapters. In an industry where it is all about getting players hooked and never stop playing, this is extremly refreshing to see. Combined with this, the game also asks you to reflect upon it and encourages the player to not just have a shallow, addictive experience. I really hope to see more of this! The game is not without flaws of course. There are lots of problems with the often annoying combat, repetitive puzzles, the twitter integration did not feel needed and some of the writing feels a bit too quirky and lazy. Still, Sword and Sworcery is quite the thing and I urge all of everyone to give it a go.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now I am interested to hear which 3 games from 2011 were your favorites!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-5957498755399389637?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/5957498755399389637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2012/01/best-of-2011.html#comment-form' title='30 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/5957498755399389637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/5957498755399389637'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2012/01/best-of-2011.html' title='Best of 2011'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-dUFoxSDE-84/TwHTB2GITRI/AAAAAAAAAb4/B6LRuLS54OM/s72-c/Portal2.jpg' height='72' width='72'/><thr:total>30</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-25646974064513086</id><published>2011-11-27T01:45:00.013+01:00</published><updated>2011-11-27T16:48:03.183+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='narrative'/><title type='text'>The Problem of Repetition</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-U0wdw5hBTL8/TtGJHIFqiTI/AAAAAAAAAbs/HAR3UpobVnY/s1600/infinite-regress.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 198px;" src="http://2.bp.blogspot.com/-U0wdw5hBTL8/TtGJHIFqiTI/AAAAAAAAAbs/HAR3UpobVnY/s400/infinite-regress.jpg" alt="" id="BLOGGER_PHOTO_ID_5679471360614238514" border="0" /&gt;&lt;/a&gt;&lt;div&gt;&lt;b style="font-size: large; "&gt;Introduction&lt;/b&gt;&lt;/div&gt;After having played some adventure and RPG games lately something struck me: repetition in games have almost the same problems as &lt;a href="http://frictionalgames.blogspot.com/2010/04/why-trial-and-error-will-doom-games.html"&gt;trial-and-error do&lt;/a&gt;. This is not really a shocking conclusion, since repeating things in a game is basically what you do when stuck in a sequence of trial and error. But since the repetition is not a direct consequence of being unable to progress, and that not all repetition is bad per se, I figured it was worth looking into a bit.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:130%;"&gt;&lt;b&gt;The Problem&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Most of the time the problem arise when doing an action several times causes the same response. Mostly, this does not apply when doing things to dead objects, like shooting a bullet on a wall. We expect that if we shoot the same bullet at the same place twice, the same response occurs both times. However this is not always true. For instance, many games use randomized particle effects for sparks from the hitting bullet. In more complex system, like water splashes, this is even more common, and while it might not be directly noticeable if they repeat, it can unconsciously lead to the virtual world being seen as less "real" (what I really mean is sense of &lt;a href="http://en.wikipedia.org/wiki/Verisimilitude"&gt;verisimilitude&lt;/a&gt;, but more on that later) . So even though it does not constitute a large problem, we do run into trouble even when repeating consequences for very simple interactions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The problem becomes more jarring when the object of interaction is a supposed to be an intelligent agent. This is very common in RPGs and adventure games during dialog, where the same question generates the same answer regardless of how many times you ask it. Adventure games are generally a little bit better than RPGs and often have NPCs giving a summary instead of the exact same response and more frequently terminate threads of conversation. Even so, a big part of dialog in both types of games have actions being met by the exact same response no matter how many times they are repeated.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are of course a reason why it is like this. The player might have forgotten some information and need to hear it again, forcing dialog to be repeated. Or there might be some compulsory puzzle that requires the player to trick or persuade a character, which forces the player to redo the same conversation if unsuccessful at the first attempt. I think these reasons expose two problems that narrative focused video games have: reliance of "info dumps" and puzzles as core activities. Info dumping is a form of exposition that one tries hard to avoid in other media, yet is very common in video games (often forming the core storytelling device). It is something that I think needs to be considered more (and I am well aware we have been using it too much in &lt;a href="http://www.frictionalgames.com/site/games"&gt;our own games&lt;/a&gt;). Puzzles is something I have &lt;a href="http://frictionalgames.blogspot.com/2011/10/thoughts-on-limbo.html"&gt;talked about having negative effects before &lt;/a&gt;and this is yet another argument to why we should try and cut down our reliance on them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another very common form of repetition is that of having the same kind of gameplay scenario repeated several times throughout the game. Sometimes this can be a core part of the experience, but most of the time it is just  a form of padding and an attempt to prolong the time it takes to finish the game. There are tons of examples of this and two that spring to mind are the &lt;a href="http://frictionalgames.blogspot.com/2011/02/thoughts-on-dead-space-2.html"&gt;vent sections of Dead Space 2&lt;/a&gt; and the spirit capturing in &lt;a href="http://en.wikipedia.org/wiki/Superbrothers:_Sword_%26_Sworcery_EP"&gt;Sword and Sworcery&lt;/a&gt;. I felt that both of these activities would have been a lot more interesting if not repeating so much. You quickly become very familiar with them and they eventually loose much of their first&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is a deeper reason why repetition is so common in videogames. Many games base their interactions on traditional games and software systems where reproducibility is a corner stone. You do not want to use a paint-tool and not know what expect when pressing a button, and the only way for you to get this knowledge is to is for consequences to repeat themselves. In traditional games, you need to have systems that a human player can keep track of, and thus the consequences of actions must be easy to comprehend. Videogames carry baggage from both of these directions, and thus it is not strange that video games contain a large share of repetition.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you might have guess I think this sort of repetition can be quite bad for videogames that focus on story and narrative.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;The Causes&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;As I said earlier, the repetition has pretty much the same issues as trial-and-error. Since they are both about doing the same thing over and over, this can feel pretty much self-evident and not worthy of much discussion. However, while trial-and-error elements are more easily pointed out and can be directly addressed, repetition is more subtle and not always as obvious. Many of issues with repetition are also commonly seen as limits of the medium (or at least our current technology) and thus not really addressed. I do think these problems can be overcome though, and a first step is to figure out what give rise to them.&lt;br /&gt;&lt;br /&gt;- Mechanics gets apparent&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;By having something repeated over and over to players, they will quickly start to notice patterns and short after figure out the system below. What this leads to is that the player will no longer focus on what the system is trying to represent (eg. dialog with a person) but will instead see the mechanics that it is built from (eg. the abstract dialog tree). Repetition does not force this onto the player as trial-and-error do (where the player often is &lt;i&gt;required &lt;/i&gt;to learn the system in order to continue). But since many of the things that are repeated constitute a big part of the experience, the problem piles up. Like I mentioned above the repetition can include entire scenes and the player might go through a section in a go (ie no trial-and-error). But then when a very similar sections is repeated throughout the game, the underlying mechanics become more and more visible. As an example I think the enemies in our own game &lt;a href="http://www.amnesiagame.com/"&gt;Amnesia &lt;/a&gt;have this very problem. This problem is very subtle though as it only applies on longer play sessions and can thus more easily slip by.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;There is another aspect to this, that makes the problem even more severe. Once you figure out the mechanics of a system it can damage events that you experienced when you did &lt;i&gt;not&lt;/i&gt; have this understanding. For instance, if you feel like a conversation is really meaningful, and then later on find this same character reduced to mechanics, it will change the way you view your prior experience. It will be very hard to still feel the same sense of meaningfulness when looking back at the conversation. Your mental construct of an aspect of the game's world has now been reduced to a mechanic and when you later summarize the experience you have had, this can severely reduce any emotional attachment you might have had to earlier happenings. As this piles up, it will slowly degrade the experience and makes you less emotionally connected to the game's world.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;- Decrease in Verisimilitude&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;What verisimilitude means is basically how real and truthful the fictional world feels. This does not mean how well it replicates the real world we live in, but how much a it feels like it represents an actual place. In most narrative media, giving a strong sense of verisimilitude is really important. As I said, this does not mean that everything should be "just like in real life", but instead follow the fictional world's internal logic somehow. What this means in games is that when encountering a virtual element, such as a character, we do not need for it to behave exactly like in real life, but simply to behave in such a way that it evokes feelings of verisimilitude.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;This means that we can tolerate dialog selection and similar, while other things are instant deal breakers. I think one of these deal breakers is the repetition of a responses. If a character repeats the same sentence over and over, it is very hard to see them as nothing but a simplistic automaton. We can quite easily disregard our knowledge that there is not a sentient mind &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt; shaping the responses, just like know something is not &lt;i&gt;really &lt;/i&gt;happening in a movie. But when the information that the experience is feeding us (in this case the repeated voice response), the very thing that is supposed to support the view of an intelligent being goes straight against its purpose.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Not only dialog is affected by this but plenty of other aspects. For example, whenever you have to go about clicking on the same hot-spots over and over in an adventure game, it also significantly reduce the feeling of verisimilitude.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;- Decrease in effectiveness&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;This point is almost identical with what happens in trial-and-error. Certain scenes and events simply does not do well when repeated. For some events it is simply that they are very emotional, and it will be hard to feel the same way once again. You will grow desensitized and less prone to reacting to it. Just compare a movie filled with gory sequences to one with a single visceral scene. The latter will pack a much harder punch. Other times it might be that the event or scene is set up like a magic trick - it only works when you are not expecting what will happen. Finally, it might simply be that the passage is too boring, sensory intense or similar that you cannot bare to take further viewings. Other media rely on things like these hard-to-repeat moments a lot, but since games are so prone to repetition, they are much harder to put in and/or to have the same emotional value.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;The Cure&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;So how do we overcome these issues? I think there are a few things to keep in mind when designing that makes them a lot simpler to avoid:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;Not a approach the experience as a competition. The less goals we set up for the player the less likely we are to need to repeat things for the player or to make them repeat their own actions. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;Make sure that the story is understandable without the need of info dumps. If the player is required to have story related information repeated to them, then I would consider that bad narrative design. The story should emerge simply out of playing.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;Skip the notion that players need to learn a system. I think this is mainly historical baggage from how software works for more practical application, where mastery of the system is essential. Creation of narrative art does not have this requirement though, and I think we should instead make the player focus on the representations (graphics, sounds, etc) that the system provide.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;We must demand more of the player and give them more responsible. We must teach them them live in our virtual worlds instead of trying to beat our game systems. As most games reward players for combing the virtual world for goodies this is not the easiest of tasks though. Our goal must thus be to undo this and reward roleplaying instead.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;These small rule&lt;span class="Apple-style-span"&gt;s does of course not solve everything and there is a lot of hard problem connected with this. For instance, conversational responses is an incredibly tricky problem and the same is true for na&lt;/span&gt;rrative devices in games.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Still, I think just a little change in our thinking can take us a long way and simply recognizing the problem is a big step forward.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-25646974064513086?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/25646974064513086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/11/problem-of-repetition.html#comment-form' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/25646974064513086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/25646974064513086'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/11/problem-of-repetition.html' title='The Problem of Repetition'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-U0wdw5hBTL8/TtGJHIFqiTI/AAAAAAAAAbs/HAR3UpobVnY/s72-c/infinite-regress.jpg' height='72' width='72'/><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-5459632079338653003</id><published>2011-11-01T15:35:00.006+01:00</published><updated>2011-11-01T19:04:19.662+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feedback'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='narrative'/><title type='text'>Thoughts on Heavy Rain</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-u4JcDihC5Yc/Tq_9voQ_LPI/AAAAAAAAAbg/xVU1Q2PQQj8/s1600/heavy-rain.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/-u4JcDihC5Yc/Tq_9voQ_LPI/AAAAAAAAAbg/xVU1Q2PQQj8/s400/heavy-rain.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5670029450587090162" /&gt;&lt;/a&gt;&lt;div&gt;&lt;b style="font-size: large; "&gt;Introduction&lt;/b&gt;&lt;/div&gt;&lt;div&gt;It is very easy to talk bad about &lt;a href="http://en.wikipedia.org/wiki/Heavy_Rain"&gt;Heavy Rain&lt;/a&gt;. One can say it is just an interactive movie where you press buttons at certain key moments, in rare cases changing the outcome of the story. One can talk about the hole and cliche filled story and the weakly developed characters*. One can talk about this and other negative aspects of the game and I would fully agree. But if one only focuses on these areas, there is plenty of really interesting aspects that are missed.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Despite all these flaws I really enjoyed playing Heavy Rain. Sure, the quick-time-events (QTE:s) really got me worked up on more than one occasion and a lot of other issues bugged me, but on the whole it was quite an engaging experience. There are some truly tense and disturbing moments in the game that work great. For example the scene at the mall, while lame in many ways, managed to capture the protagonists sense of panic and that in an environment and setup I have never seen in a game before. The game also features great graphics, nice music and not too shabby acting (for most of the time anyway, and once you get used to the uncanny valley feel). The game also lets you be in situations that I have never seen outside of &lt;a href="http://en.wikipedia.org/wiki/Interactive_fiction"&gt;Interactive Fiction&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What really made the game interesting though was not the things that I liked, but the things that are slightly broke. Because of the way that QTE:s work, being a quite fragile system in terms of immersion, it sort of exposes your own usually hidden thought processes as you play the game. Also, the game's filmic nature and focus on a branching narrative makes it a virtual smorgasbord of game design theory to try out. This is what truly makes Heavy Rain worth playing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;Immersion as an essence&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;By far, the most important realization I got when playing Heavy Rain is how interaction is not mainly about giving the player interesting choices. When playing the game I never felt the need to make choices on the basis of seeing what would happen, instead I simply wanted the characters to act in certain ways in order to confirm to my expectations of how I thought they would (and should) be acting. What I think happens is that as we interact in a videogame, there is feedback loop between us sending input to the game and us getting information back from the game (in the form of visuals, audio, etc), which builds the basis of us feeling present inside the game's virtual world. The better this loop works, the more we feel as a part of the experience.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Heavy Rain is an excellent example of this process at work. When there is flow in the controls (which is usually in the scenes giving you direct character control, such as the early mall sequence), there is a very satisfying feeling of being one with the character. Then suddenly some weird QTE pops up and you either fail at completing it, or it simply does not give the result you expected, and once again you are pulled out of your sense of presence. The game is littered with moments like this, pulling you in and the throwing you back out. When Heavy Rain manages to sustain the belief of you having agency over the character, that is when the game is at it best. These are the occasions when there is a very strong loop of interaction going on and you are the most present inside the game's world. When this loop is broken, it does not matter what kind of interesting choices you might have at your disposal. The game immediately becomes less engaging the moment the loop of interaction breaks down.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;In this light of thinking, QTE events make perfect sense. It is simply a rudimentary system for trying and sustain a feedback loop during various types of scenes. It is not about setting up a competition for the player, it is just a very blunt and unreliable system to sustain a sense of presence. I really doubt that QTE:s is the way to do narrative art in videogames, but it does gives us invaluable information on how to proceed.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What all this seem to indicate is that a videogame that wants to&lt;a href="http://frictionalgames.blogspot.com/2010/10/story-what-is-it-really-about.html"&gt; tell a story&lt;/a&gt;, should not use interaction to deliver a multitude of choice, but instead to reinforce the feedback loop of immersion. This might entail having choice, but the choices in themselves are not what is of the most importance, giving a very sharp focus on how to design the mechanics. It may actually be that the very future of making artful games with focus on narrative is to focus on this interactive loop of immersion. There is a lot more to discuss on this subjects and there are other things that also points in this direction. I am hoping to devout an entire post on that subject soon, so consider this a taste of things to come.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A final note: This "interaction as a means to create immersion" does &lt;b&gt;not&lt;/b&gt; imply that the future of videogames are incredibly linear interactive cinema -far from it. In many cases a non-linear and open game world is essential in order to support the feedback loop. &lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;The importance of determinism&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;In most games you have a pretty strong sense of what the protagonist will do when a button is pressed. Not so in Heavy Rain. Apart from direct movement and a few repeatable actions (like be able to shout your son's name in the mall scene), most of the time icons just pop up with vague hints on what the input will achieve. Sometimes you will learn what action might happen (such as that an up-arrow at a railing will mean that you will lean against it), but this takes a bit time and requires that a similar action has already been carried out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In many cases this has a drastic reduction on the sense of presence. For one, it makes you unable for you to form plans. Simply by surveying an environment you cannot determine a course of actions (even if you know all trigger spots), and during action sequences it gets even worse as QTE:s may up at any moment in pretty much unguessable form. Making up plans is one of the basic corner stones of human intelligence, and possible &lt;a href="http://blogs.discovermagazine.com/sciencenotfiction/2011/03/14/why-did-consciousness-evolve-and-how-can-we-modify-it/"&gt;the reason we developed a conscioussness&lt;/a&gt;, so not having the option of doing this is a hard blow against the sense of agency. Another reason it reduces immersion is that your character might not act in the way you intended. Before picking an action you almost always makes some kind of assessment of what will happen, but it is quite likely that this will be dead wrong. Thus the character your are supposed to feel a connection to, ends up performing an action that you did not intend. Of course, it is very hard to feel as a part oft he game's world when this happen.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This system stands in stark contrast with how &lt;a href="http://frictionalgames.blogspot.com/2011/10/thoughts-on-limbo.html"&gt;Limbo &lt;/a&gt;works, where you are pretty much always certain of exactly what will happen. I think this is very much connection in the level of immersion Limbo manages to have throughout (unless you get stuck in trial and error of course), and how Heavy Rain stumbles through the entire experience. One should not be too hard on Heavy Rain though as the space of interactions that are possible to perform throughout the game by far outnumber those in Limbo. The real challenge for the future is to coming closer to multitude of actions in Heavy Rain, but still having the determinism of Limbo.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;The understanding between Player and Videogame&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Another big problem in Heavy Rain, which is related to the point above, is that the game sometime seem to work against you. It might seem obvious that this is a dealbreaker in terms of immersion and I have already discussed &lt;a href="http://frictionalgames.blogspot.com/2010/01/when-focusing-on-fun-fails.html"&gt;the problem of camera control in Dead Space Extraction&lt;/a&gt;. The issue can be a bit more subtle though and Heavy Rain serves as great example of this.  For instance, in one scene I had made a plan of actions: to first bandage an unconscious person and then to poke around in his stuff. There really was nothing hindering me from doing so but instead the game removed my ability to interact directly after caring for the person. The game interpreted me wanting to help the guy as I also did not want to poke around, thinking that they two were mutually exclusive actions. Of course I thought otherwise and considered it no problem at all to do some poking afterward.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are plenty of situations like this and it makes it quite clear that you should never move ahead on a bigger outcome from a choice without being certain that this is also what the player expects. I also see this as a problem of having major choices the player in a game that lack a high level simulation (like Fallout for example). Just the simple action of walking out a door can have many different meanings to a player, and one needs to be careful and make sure that most players have same idea of what it means. Once you throw branching paths into the pot, it gets a lot more complicated and clashes between player and game is much more likely to happen.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Emotional Simulation&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;An interesting aspect of Heavy Rain that I have not seen (at least not this directly) in any other game using QTE:s (or normal mechanics for that matter) is to trick the player into feeling certain emotions. The way it works in the game is that the player is forced to hold down a lot of buttons at the same time, while often also moving the stick around. This creates an uncomfortable and demanding way to hold the controller in, which is meant to simulate the way the onscreen character feels. While it might sound a little dodgy, it works quite well in many cases, especially in a scene containing self-mutilation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The research behind this kind of response is actually &lt;a href="http://youarenotsosmart.com/2011/07/07/misattribution-of-arousal/"&gt;very well established&lt;/a&gt; and &lt;a href="http://www.dreamdawn.com/sh/post_view.php?index=7977"&gt;designer Chris Pruett has hypothesized&lt;/a&gt; that the effect is probably a reason why many unforgiving horror games turn out to be extra scary (a design decision that comes &lt;a href="http://frictionalgames.blogspot.com/2010/04/why-trial-and-error-will-doom-games.html"&gt;with other problems&lt;/a&gt; though). The way it works is that we humans often do not know why we are feeling a certain way and unconsciously project it onto something else. For instance one experiment had people thinking that arousal due to their fear of heights was due physical attraction instead. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All is not good with this design in Heavy Rain though. Because the inputs you perform are not fluent (as it is prompted on a situational basis) and non-deterministic (as explained above) you are mostly very conscious of what you are doing with the controller. If the controls where more transparent (like in Limbo) you would be less conscious of your input, and any uncomfortable placement of the hand is much more likely to be projected into whatever the protagonist is doing. I think this can be very potent stuff if handled properly and let the player get immersed in experiences that would be hard to simulate in any other way.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Trial and error&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Heavy Rain boasts that it does not have any game over screen, but it still manages to have is massive amounts of trial-and-error. This time the forceful repetition of events does not only occur in death threatening situations though. In Heavy Rain it often happens during extremely mundane actions like brushing your teeth and taking a shower. It is an extremely good example why this sort of design is so immersion destroying. From believing that you are playing an actual living character, the sudden requirement to repeat an event pulls you out from the experience directly. It is so obvious that you go from trying to become present in a virtual world to just trying and overcome a very mechanical task. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think the biggest problem is that Heavy Rain is very sensitive in how you complete the QTE sequences. Let go of a button for a micro seconds and it results in an instant failure. When the game gets rid of so many other stigmas of old game design, it is sad to see it stuck in this one. I think the way it should have done it is to become a little bit more relaxed and to allow some more failures. Instead being competitive-like and very strict in the actions, it should instead check if the player tried enough to do something. As long as the players are playing along, I see no reason for punishing them. The game should have tried to keep the illusion of an interactive-feedback loop alive for as long as possible, instead of simply breaking it at the slightest incorrect input.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Some misc points&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Now for some shorter stuff that I found interesting:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;When done right, the direct and free control method is by far the more immersive. However it also puts a lot of pressure on the character reacting in a proper way. Quite often, the character I was controlling ended up acting like a moron, walking into walls and the like, even if I really tried hard to control him properly. The constrained events do not suffer this problem, and have the characters act much more lifelike, but at the same time they do not have the same level of interaction required for deep sense of presence.&lt;/li&gt;&lt;li&gt;Heavy Rain is at its best when simulating tightly space and time-wise bounded scenes. At these points it was much easier to give me a sense of having agency and to let me become one with the moment. The scenes self-mutilation, pushing through a crowd, escape from bench in cellar, etc are all great examples of this. Judging from what seemed to have worked best in Amnesia, I think a lot can be gained by taking this design further.&lt;/li&gt;&lt;li&gt;The game is a great test bed for a game that has decisions with big ramifications, such as the death of main characters. My own conclusion from Heavy Rain is that all of these choices are probably unneeded and did not gain me much except the sense of missing out on the story. Interestingly, Heavy Rain feels quite different in this regard from a game like Fallout (with the, as mentioned, more higher level narrative simulation).&lt;/li&gt;&lt;li&gt;Achievements (trophies on the ps3) really suck in story-centric game. Having gone through a scene and then getting a sort of grade, really removes the ability to make up your own mind of what just took place. It is quite similar to the "understanding between player and game" problem, as achievements has a high risk of going against the player's intentions (and does not really help gain anything).&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;End notes&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;As I think this post shows there are many reasons why Heavy Rain is a really interesting game to play. It does a lot of things that other videogames do not even dare to consider, and while it kind of fails on a lot of it, just attempting it is an important step on the way. If only more mainstream games were like this.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;Also, after playing through Heavy Rain I have come to wish that there were more games like it. By that I do not mean more games with QTE:s (which I really hated much of the time) but games that allows the player to always progress and focus on a rich narrative experience. In most other games I either have to endure annoying puzzles or have to become an accomplish in a genocide. Given the high scores the game has gotten &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium; "&gt;(from press and the public)&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium; "&gt; I do not think I am alone in this.  Please do not see this as an urge for people to copy Heavy Rain though, but instead to use the game it as a step towards something that truly makes use of the medium.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;*Emily short has a really good essay on the story of Heavy Rain. Check it &lt;a href="http://www.gamesetwatch.com/2010/04/column_homer_in_silicon_qte_la.php#more"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-5459632079338653003?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/5459632079338653003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/11/thoughts-on-heavy-rain.html#comment-form' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/5459632079338653003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/5459632079338653003'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/11/thoughts-on-heavy-rain.html' title='Thoughts on Heavy Rain'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-u4JcDihC5Yc/Tq_9voQ_LPI/AAAAAAAAAbg/xVU1Q2PQQj8/s72-c/heavy-rain.jpg' height='72' width='72'/><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-2968014021212696150</id><published>2011-10-11T10:40:00.002+02:00</published><updated>2011-10-11T12:55:36.208+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feedback'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Thoughts on Limbo</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-tiGYUuccCnc/TpPslkg7mAI/AAAAAAAAAbU/hAD_b53d044/s1600/limbo.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 213px;" src="http://3.bp.blogspot.com/-tiGYUuccCnc/TpPslkg7mAI/AAAAAAAAAbU/hAD_b53d044/s400/limbo.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5662129286735960066" /&gt;&lt;/a&gt;&lt;div&gt;A while ago I played through Limbo for the first time. I thought it was quite an interesting experience for many reasons and been thinking for it on and off. Now that I have collected most of my thoughts on the game I thought it was time to write a little post about it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Starting off, I thought the game had really nice visuals that really added to the mood. Small things, like the change in light level and tilt of the camera heightened the mood substantially. Another thing I really liked was the variety of activities and lack of puzzle repetition.  Too many games just try and extend play time as long as possible, and it is nice to see games going in the other direction. All this has been said before though and is not what this post will be about. Instead I want to discuss some other things I realized when playing the game.&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Limited Interaction&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I think the biggest take-away from Limbo is how you do not have to give the player lots of actions in order to make a fresh and interesting experience. The basic actions in Limbo are move, jump, climb and grab. These are then used in a mixture of ways, constantly keeping the experience fresh by putting the variety in the world instead of the controller. This can be seen in  other games like Shadow of the Colossus (but then to a lesser degree), and I think it really helps to heighten the player's feel of presence in the game. It only takes the player the first few minutes of the game to familiarize with the controls and the rest of the game can be spent on building up immersion, instead of constantly learning and remembering controls. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is so often that games become about the mastery of the controls and I think that makes it so much harder to become one with the game's world. The faster the flow of interaction from player to game can become intuitive, the better. We do not want players to think of what buttons to press and sticks to pull. Instead we want players to directly express their wishes from mind to game, unaware of any intermediate hardware.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Puzzles and Limits&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;As I played Limbo I realized that most (if not all) interactions were directly added to the puzzles you have to solve. I felt that there could have been tons of extra elements to interact with in order to make the player feel more connected to the world.&lt;br /&gt;&lt;br /&gt;But then I realized that the design of the game went against this. The puzzles in Limbo depend a lot on experimentation and thinking "out of the box". You have to try out every object in order to find a way to progress. If the game had had superfluous elements, then this would have made the experience so much harder.  Players probably would have spent much time interacting with objects that were completely unrelated to the puzzle they were trying to solve, increasing the overall frustration and damaging the flow of progress.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This means that puzzles can be quite a hindrance if you want to make a living world. If the player's goal is to solve puzzles, then that forces you into make sure the rest of the experience supports this. And because of this having puzzles excludes a lot of things that could increase the player presence, emotional connection or just about anything that might work against the puzzle solving. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is one reason why we will try to completely remove puzzles for our upcoming game (more on that in another post).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Trial and Error&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;I just have to mention the trial-and-error nature of Limbo as it is something that I have&lt;a href="http://frictionalgames.blogspot.com/2010/04/why-trial-and-error-will-doom-games.html"&gt; talked a lot about before&lt;/a&gt; and it is quite a prominent feature in the game. First of all, the "repeat and try again" mechanic that is used in almost every puzzles is something that ties into the general design of the game. It is quite clear that it takes the basic design from &lt;a href="http://en.wikipedia.org/wiki/Another_World_(video_game)"&gt;Another World&lt;/a&gt; but I link Limbo is a lot less frustrating.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What I found interesting is that the most annoying parts were not the puzzles where you died and had to restart, but where you missed some part of a sequence and had go back and try again. This mainly because the latter meant you had to redo a lot more and the deaths often had a sort of fun, morbid "gotcha!" mentality to them. Also when the world is reset and the game place you at a certain point you get a greater sense of focus on and a hint that you are on the right track. Just failing to do something always give you that nagging feeling that you might not have set up everything in the proper way.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Still, dying or not, for every time I had to repeat a part of the game, it became less about being present in it's virtual world and and more about figuring out an algorithm. I felt a clear change in my state of mind after just one or two attempts at a section. I am probably a biased here, and thus not best of test subjects, so would be interesting to hear what others felt.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A final note on this: Some people have argued that the cruel death mechanic heightened the tension in the game. However, I think the most important part of creating tension in Limbo was that you never know what to expect next. I never felt any increased tension after having failed once or twice, but instead my greatest tension was from anticipation. Coming closer to some strange branches or a weird contraption, my mind conjured up all sort of imagery of what could happen next. I think this sort of build-up is a lot more powerful, than simply adding cheap engagement from the knowledge that you had to restart (which rarely worked on me anyways).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;Cut scenes&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;The last part I want to discuss are the cut-scenes, or more precisely the lack there of. It is still so common in games that you remove control from the players and then pan/zoom/guide the camera to make sure that the player watches some event (e.g. a creature emerging). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Limbo does not do this, and it makes the events that you see so much more compelling. By using the game's space and character movement as a means of pacing, the events are very well directed, but without ever removing control from the player. I especially liked the villagers that you see running about and thought it was a shame that they were not utilized more. I would have really liked for a more coherent narrative to have come out of these encounters.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;End Notes&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Despite being mainly a game about solving puzzles, I think Limbo gives a lot of hints on atmosphere and narrative in games, both by things that it does good and things that it fails at. I also wish that we could see games with this kind of polish and interesting art direction, that had main focused on creating immersion, atmosphere and a compelling narrative. As seen when investigating games like Limbo, all the tools for creating truly expressive experiences already exists, it is just a matter of putting them to go use!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-2968014021212696150?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/2968014021212696150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/10/thoughts-on-limbo.html#comment-form' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/2968014021212696150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/2968014021212696150'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/10/thoughts-on-limbo.html' title='Thoughts on Limbo'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-tiGYUuccCnc/TpPslkg7mAI/AAAAAAAAAbU/hAD_b53d044/s72-c/limbo.jpg' height='72' width='72'/><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-8129982360655362578</id><published>2011-09-09T11:40:00.001+02:00</published><updated>2011-09-09T11:45:51.326+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amnesia'/><category scheme='http://www.blogger.com/atom/ns#' term='post-mortem'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Amnesia - One year later</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/-CswxduPndYY/TmnE0vA7fDI/AAAAAAAAAa8/QWb2TPeAFUw/s1600/IMG_08092011_165034.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 354px; height: 279px;" src="http://1.bp.blogspot.com/-CswxduPndYY/TmnE0vA7fDI/AAAAAAAAAa8/QWb2TPeAFUw/s400/IMG_08092011_165034.png" alt="" id="BLOGGER_PHOTO_ID_5650263617765604402" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;A year has passed since we first released Amnesia and a lot has changed for us at Frictional Games since. We have gone from being pretty much out of money, to being financially stable in a way we never thought we would be. Everybody in the company has gotten raised salaries and we have more than enough money to complete our next game.&lt;br /&gt;&lt;br /&gt;Our financial situation is far from the only change though. The success of Amnesia has led to us getting a lot more known among players and the press. Reactions to the game are still pouring in, and it feels extremely good and humbling to be able to have that kind of impact on people.&lt;br /&gt;&lt;br /&gt;With that little summary, now let's get down and dirty with some more detailed information. &lt;span style="font-style: italic;"&gt;(And oh, see end of post for a wee surprise.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Sales&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Let's start with what most people probably are the most interested in: how many units have we actually sold? During the &lt;a href="http://frictionalgames.blogspot.com/2011/09/gdc-lecture-now-online.html"&gt;GDC EU lecture&lt;/a&gt; I noted that we were now above 400k units total, but as we scrutinized all of the figures it turns out this was not quite correct. Jens did a recount of all income we have gotten so far and the figure ended on &lt;span style="font-weight: bold;"&gt;391 102 units&lt;/span&gt; (&lt;span style="font-size:85%;"&gt;which is of course not correct when you read this as the game sells at about 2 mHz&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;This sounds like a huge amount for sure, but there is something to consider with this figure. About &lt;span style="font-weight: bold;"&gt;75%&lt;/span&gt; of all the sold copies, that is 300k,  &lt;span style="font-weight: bold;"&gt;were on discounted sale&lt;/span&gt;. This is quite substantial really, especially when you note that a good deal (almost half) of the remaining 100k were sold at launch. In the end this amounts to around 50% of all our earnings coming purely from discounted sales (most at a 66% or higher discount).&lt;br /&gt;&lt;br /&gt;While discounted sales indeed dwarfs our normal sales, the day-to-day sales are quite expectational as well. Right now we are selling around 6000 units per month at full price. This is actually more than enough to cover all salaries and operational costs for each month, which is a situation we still have not really gotten used to. Another interesting fact is that monthly sales have actually increased, they are almost double now from what they were half a year ago. What all this means is that we can work with a healthy buffer that makes it possible to take more risks and down the road spend more money on outsourcing for sound, voices, art and more. Both of which should allows to make our next game as good as possible.&lt;br /&gt;&lt;br /&gt;The distribution between platforms depends a bit on how you count it. In &lt;a href="http://store.frictionalgames.com/"&gt;our own store&lt;/a&gt; it is as follows:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Windows:&lt;/span&gt; 70%&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Linux:&lt;/span&gt; 15%&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mac:&lt;/span&gt; 15%&lt;br /&gt;However, our store is the only one that sell a Linux version of the game, so in total sales the percentage of Linux is a lot less. When looking at other stores the distribution is around 11% Mac and 89% Windows. The Mac percentage goes down a bit during sales, where Windows sales increase 3 times or so more compared to the Mac ones. An interesting note here is that Mac sales in our own store did not go down as a other online outlets like Steam started to provide mac versions; meaning it did not steal our customers but opened up to a new market. We think it is a good incentive for other stores to support Linux as well!&lt;br /&gt;&lt;br /&gt;The final data regarding sales is the difference between physical and digital sales. As of now, a total of 35, 000 boxed copies of the game has been sold, or around 9% of total sales. This is not too shabby considering we had no release in Europe and that the American box came out half a year after launch. The money earned from a physical unit is much less than from a digital one, but a physical release can still be helpful (&lt;span style="font-size:85%;"&gt;however, other problem arise that might make it not worth it, something we will cover later on&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Impact on Penumbra&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;As Amnesia gained popularity, we already had our &lt;a href="http://www.penumbragame.com/"&gt;Penumbra games&lt;/a&gt; up for sale.  We were quite curious in seeing how these sales would be affected by Amnesia's success.  As Penumbra is quite similar to Amnesia i terms of gameplay and mood, and that both were made by the same company, we thought that we would see a boost in sales and attention for Penumbra. Turns out that Penumbra was almost not affected at all.&lt;br /&gt;&lt;br /&gt;The number of monthly visitors for Penumbra are still the same as they were before Amnesia. Same with sales; the monthly total is still a little above 500, which it has been for over two years now. The only influence Amnesia could have had is to keep the average up.&lt;br /&gt;&lt;br /&gt;So why did Amnesia have no (or very little impact) on the sales of Penumbra? We think one reason is that main bulk of Amnesia buyers simply does not connect the two. While they are similar, the first look is quite different. Penumbra takes place in present day and Amnesia in the 19th century. Another reason is that whenever there is some exposure for Amnesia, Penumbra is almost never mentioned, so most people that enjoyed Amnesia never learn there is a similar game available.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;User response&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I noted earlier that the daily sales have gone up over the last year, and large part of that has been due this - responses from the players. Still now, a year later, once a week or more some new post about Amnesia goes up on reddit, youtube or a similar user generated site. This kind of constant bombardment of Amnesia related material has continued to raise awareness of the game.&lt;br /&gt;&lt;br /&gt;The major example of this would be the the Amnesia WTF video that reached 4 million views before YouTube, because of mysterious reasons, removed it (&lt;a href="http://www.youtube.com/watch?v=NOkX53_ba6U&amp;amp;feature=related"&gt;here &lt;/a&gt;is a copy). Others include &lt;a href="http://vegetarianlyfe.tumblr.com/post/2843197640/no-pug-dont-play-amnesia-what-are-you-doing"&gt;this pug picture&lt;/a&gt; that managed to spread quite virally, images &lt;a href="http://imgur.com/zmbWa"&gt;like this one&lt;/a&gt;, and much more.&lt;br /&gt;&lt;br /&gt;Another pleasant surprise was the amount of &lt;a href="http://frictionalgames.com/forum/forum-35.html"&gt;custom stories&lt;/a&gt; that have been made. In Penumbra we only knew of a single attempt to make a user-created level and that one was never released in public. For Amnesia at least 300 custom story projects have been started, and &lt;a href="http://www.moddb.com/games/amnesia-the-dark-descent/mods"&gt;20 or so&lt;/a&gt; have actually become completed, high quality, experiences. There has even been a &lt;a href="http://www.youtube.com/watch?v=_VfgFs1akRY"&gt;Tetris clone&lt;/a&gt; made with the tools!&lt;br /&gt;&lt;br /&gt;This surge in interest has made our &lt;a href="http://www.frictionalgames.com/forum/index.php"&gt;community &lt;/a&gt;a lot more active too. A year after we released Penumbra: Black Plague, our forum was quite dead, having a post every other day or so. Right now we average about 200 posts / day, and all of it is pretty much thanks to the custom story creation. This has also spread to other parts of the forum, and there is a lot more general chatter, technical help between users, etc . It really shows that supplying users with creation tools is well worth the time.&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;The making of Amnesia&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;As a year has gone by a few resources on how Amnesia was made has popped up, so it seems like a good time to sum them up now:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.escapistmagazine.com/articles/view/features/9011-The-Terrifying-Tale-of-Amnesia"&gt;The Terrifying Tale of Amnesia&lt;/a&gt;&lt;br /&gt;A post-mortem of Amnesia at the Escapist, that describes what we went through when creating the game. It mostly deals with the financial side, but also on how corporate decisions lead to changes in design, screwed everything up, and other juicy stuff like that.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://frictionalgames.blogspot.com/2011/03/birth-of-monster-part-1.html"&gt;Birth of  a Monster&lt;/a&gt;&lt;br /&gt;The design and production process of the grunt monster, written by several of the people involved. Do not forget that there is a &lt;a href="http://frictionalgames.blogspot.com/2011/03/birth-of-monster-part-2.html"&gt;second part&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gdcvault.com/play/1014889/Evoking-Emotions-and-Achieving-Success"&gt;Evoking Emotions and Achieving Success By Breaking all the Rules&lt;/a&gt;&lt;br /&gt;A talk I gave at GDC Europe about a month ago. It goes over a lot of the design decisions that went into Amnesia.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Next for Frictional&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;So what is next for us at Frictional Games?&lt;br /&gt;&lt;br /&gt;First of all, we want to get up to speed on our next game. Since we spent all resources we had on getting Amnesia done, we had to start the new project without any sort of momentum. Added to this was the &lt;a href="http://valvearg.com/wiki/Valve_PotatoFoolsDay_ARG_Wiki"&gt;potato thingie&lt;/a&gt; that also took a lot of time (but was really worthwhile). This has lead to a discrepancy between design, technology and art that we just about caught up to now.  We have done a lot of work on the next game, but it is not until now we are close to having a nice work flow.&lt;br /&gt;&lt;br /&gt;Because of this, a major issue for us to fix is to be able to manage multiple projects. We want to have a nice reallocation of resources at the end of each project and make sure to keep the flow going. However we do not want to grow the company too much, and thus we are looking into other avenues. If everything goes as it should we will announce our first stab at a solution to this quite soon!&lt;br /&gt;&lt;br /&gt;Another big change for the future will be consoles. The main reason for choosing consoles is purely financial. Right now our main income comes from very few channels, and we need to spread out the risk somehow. The other reason is that we feel we are missing out on exposure by not being on a console and not reaching as many players as we should be able to.  Unfortunately consoles are really old compared to the PC right now, so it will be far from straightforward to develop for two platforms. Our current thinking is to make the console get a lower end version and make sure console specs influence the PC version as little as possible.&lt;br /&gt;&lt;br /&gt;Finally, in regards to what our next project is about, the basic idea is to use lessons learned from Amnesia and then take it to the next level. We have mentioned before that the next game will not be as horror focused as our past ones, but still have a scary atmosphere. Our intention this time is to dig into deeper and more intellectually demanding subjects. Another goal for us is to get past having classical puzzles that break the flow, but without making the game into a spoon-fed type of experience.&lt;br /&gt;&lt;br /&gt;We are all really excited about the future, with tons of ideas we want to try out and now with the resources to do so properly. This is the first time for us developing a project that we know we can fund all the way and not worry about tight resources. It will be very interesting so see what will be possible to create this time!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;More questions?&lt;/span&gt;&lt;br /&gt;Anything else you want to know? Well, you are in luck because the entire team will be available for an Ask-Us-Anything at Reddit! Just go here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.reddit.com/r/IAmA/comments/k9vwj/we_are_frictional_games_creators_of_amnesia_the/"&gt;http://www.reddit.com/r/IAmA/comments/k9vwj/we_are_frictional_games_creators_of_amnesia_the/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is really simple to register at reddit, so just do so and fire away in case you are curious! And do make sure to up-vote it so it gets some exposure!&lt;br /&gt;&lt;br /&gt;And finally, thanks to all who have supported us, pre-ordered our games, put up crazy stuff on the internet, provided help in the forums and in other ways helped to spread the word!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-8129982360655362578?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/8129982360655362578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/09/amnesia-one-year-later.html#comment-form' title='58 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/8129982360655362578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/8129982360655362578'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/09/amnesia-one-year-later.html' title='Amnesia - One year later'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-CswxduPndYY/TmnE0vA7fDI/AAAAAAAAAa8/QWb2TPeAFUw/s72-c/IMG_08092011_165034.png' height='72' width='72'/><thr:total>58</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-1680836655302403089</id><published>2011-09-08T16:03:00.003+02:00</published><updated>2011-09-08T16:10:25.137+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amnesia'/><category scheme='http://www.blogger.com/atom/ns#' term='lecture'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>GDC Lecture now online!</title><content type='html'>The lecture I gave at GDC EU 2011 is now up here:&lt;br /&gt;&lt;a href="http://www.gdcvault.com/play/1014889/Evoking-Emotions-and-Achieving-Success"&gt;http://www.gdcvault.com/play/1014889/Evoking-Emotions-and-Achieving-Success&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is one of three lectures that were put up (so far) and it is 100% free for you to watch :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-1680836655302403089?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/1680836655302403089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/09/gdc-lecture-now-online.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/1680836655302403089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/1680836655302403089'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/09/gdc-lecture-now-online.html' title='GDC Lecture now online!'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-6670892360285053420</id><published>2011-08-18T11:32:00.004+02:00</published><updated>2011-08-18T12:12:38.196+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>GDC Europe Sum-up</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/-4T-qclM_jio/Tkzc_EhiN7I/AAAAAAAAAac/PjE878kD89w/s1600/IMAG0185.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 366px; height: 219px;" src="http://1.bp.blogspot.com/-4T-qclM_jio/Tkzc_EhiN7I/AAAAAAAAAac/PjE878kD89w/s320/IMAG0185.jpg" alt="" id="BLOGGER_PHOTO_ID_5642127409292654514" border="0" /&gt;&lt;/a&gt;Me, Marc and Jens got back from GDC Europe yesterday so thought I should write a small summary of the trip.&lt;br /&gt;&lt;br /&gt;First of, some thoughts on the lecture:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-4T-qclM_jio/Tkzc_EhiN7I/AAAAAAAAAac/PjE878kD89w/s1600/IMAG0185.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/-0r0exxpZVzA/TkzkoW4g6TI/AAAAAAAAAak/JJBhIzI71hk/s1600/IMG_2645.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/-0r0exxpZVzA/TkzkoW4g6TI/AAAAAAAAAak/JJBhIzI71hk/s320/IMG_2645.JPG" alt="" id="BLOGGER_PHOTO_ID_5642135815176907058" border="0" /&gt;&lt;/a&gt;My talk was scheduled the first day and was the first time I have ever had this type of lecture so I was quite nervous. This meant I had a bit of trouble relaxing and enjoying the other talks before mine. Also, the night before I had had the final practice round for the lecture, making my dreams that night filled with nothing but fragmented sentences from my script, which of course tainted the next day too. My head contained little but the lecture.&lt;br /&gt;My first plan had been to learn the entire lecture and not use any  notes, but during practice I always managed to miss something and felt  having some kind of notes was more secure. As the lecture slides was pretty much void of text and the actual images often not very descriptive to what I said, I had to keep everything in my head. In the end, I am happy I made the decision of having notes as I did get lost a few times, but could quickly get back by  a glance. Hopefully nobody noticed anything.&lt;br /&gt;When it was finally time for the talk I was really worried if any of the videos would work, as there had been numerous problems when testing at home. Fortunately all videos showed perfectly!&lt;br /&gt;Overall, I think it all went quite well and the audience seem to enjoy it too. There are summaries of the lecture at &lt;a href="http://www.gamasutra.com/view/news/36577/GDC_Europe_Amnesias_Grip_Delivers_Terrifying_Tales_Of_Immersion.php"&gt;Gamasutra &lt;/a&gt;and &lt;a href="http://gamescom.gamespot.com/story/6328973/amnesia-designer-removing-combat-opens-up-new-horizons/?tag=newsfeatures%3Btitle%3B1"&gt;Gamespot&lt;/a&gt;, and I will see if I can get the script up too later on.&lt;br /&gt;I was also involved in a panel with some other people. My five minute presentation was pretty much an extended version of &lt;a href="http://frictionalgames.blogspot.com/2010/01/when-focusing-on-fun-fails.html"&gt;an old blogpost&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-wzbn7SPmsYg/TkzlE7pZVuI/AAAAAAAAAas/-3v4QS8Z_3I/s1600/IMG_2655.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/-wzbn7SPmsYg/TkzlE7pZVuI/AAAAAAAAAas/-3v4QS8Z_3I/s320/IMG_2655.JPG" alt="" id="BLOGGER_PHOTO_ID_5642136306081945314" border="0" /&gt;&lt;/a&gt;Once my lecture was done I could finally relax and enjoy the various lectures a bit more. As always there is a great mixture in quality and content. My favorites were probably a lecture about RPG mechanics, a talk on horror by the developer of the upcoming Silent Hill Downpour (even though I disagreed with plenty) and a talk about performance capture (by one of the founders of Ninja Theory).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Apart from the GDC stuff, we also attended something called the &lt;a href="http://www.notgames.colognegamelab.com/"&gt;NotGames Fest&lt;/a&gt;. It was an exhibit that showcased a bunch of games that did not have a big focus on "fun game mechanics", and Amnesia was one of these. It was all much more nicely setup than I thought it would be. Visitors had to enter a atmospherically lit, cave-like room built up from cardboard. It was quite moody and fitted the exhibit perfectly. I really liked how it contrasted the normal, ear-deafening, sensory overloading exhibits videogames are normally shown in and had a very calm and serene feel to it instead.  I hope that there will be more game exhibitions like this!&lt;br /&gt;At the evening the exhibit also had a BBQ featuring hot-dogs in round buns, which was felt a strange (but still tasted good). Jens told me this some German tradition. Anybody know anything more about this strange way of hot-dog consumption?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-23y7urBza1E/Tkzc1FNIt4I/AAAAAAAAAaU/UNYLtdtabs4/s1600/IMAG0190.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://3.bp.blogspot.com/-23y7urBza1E/Tkzc1FNIt4I/AAAAAAAAAaU/UNYLtdtabs4/s320/IMAG0190.jpg" alt="" id="BLOGGER_PHOTO_ID_5642127237676840834" border="0" /&gt;&lt;/a&gt;Also like to note that two guys form the Italian company &lt;a href="http://santaragione.com/"&gt;Santa Ragione&lt;/a&gt; gave us a free copy of their horror board game &lt;a href="http://www.escapefromthealiensinouterspace.com/"&gt;"Escape from the Aliens in outer space"&lt;/a&gt;. We tried it while waiting for our plane to take off and even though we were probably a bit too few it was really nice. Will definitively play it again.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-6670892360285053420?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/6670892360285053420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/08/gdc-europe-sum-up.html#comment-form' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/6670892360285053420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/6670892360285053420'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/08/gdc-europe-sum-up.html' title='GDC Europe Sum-up'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-4T-qclM_jio/Tkzc_EhiN7I/AAAAAAAAAac/PjE878kD89w/s72-c/IMAG0185.jpg' height='72' width='72'/><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-6134962119030286046</id><published>2011-08-13T23:58:00.005+02:00</published><updated>2011-08-18T13:54:24.802+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Horror Tip: Hide</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-jJcFa2nv_eo/Tkb04Tm5pFI/AAAAAAAAAaE/IR7iCb4_ztE/s1600/hide.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://3.bp.blogspot.com/-jJcFa2nv_eo/Tkb04Tm5pFI/AAAAAAAAAaE/IR7iCb4_ztE/s400/hide.jpg" alt="" id="BLOGGER_PHOTO_ID_5640464831501411410" border="0" /&gt;&lt;/a&gt;I just saw &lt;a href="http://www.superfriendshipclub.com/forum/viewtopic.php?f=12&amp;amp;t=117"&gt;this &lt;/a&gt;little horror game gem called &lt;a href="http://www.superfriendshipclub.com/forum/viewtopic.php?f=12&amp;amp;t=117"&gt;"Hide"&lt;/a&gt;. It is a very simple game with very simple graphics. Basically the game is all about finding five signs scattered across a map while avoiding being found. I think it is a great example in how not showing something properly makes the imagination go wild. The extremely sparse (yet workable) graphics and the atmospheric soundscape forces you to immerse your self and imagine your worse fear.&lt;br /&gt;&lt;br /&gt;The game only takes a few minutes to play, so I suggest you all give it a go. And do not forget those headphones!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-6134962119030286046?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/6134962119030286046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/08/horror-tip-hide.html#comment-form' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/6134962119030286046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/6134962119030286046'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/08/horror-tip-hide.html' title='Horror Tip: Hide'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-jJcFa2nv_eo/Tkb04Tm5pFI/AAAAAAAAAaE/IR7iCb4_ztE/s72-c/hide.jpg' height='72' width='72'/><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-1860642612850676967</id><published>2011-08-12T21:18:00.004+02:00</published><updated>2011-08-12T21:29:49.755+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='amnesia'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>GDC Europe</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-IONYs-sHnSw/TkV-iDrnNeI/AAAAAAAAAZ0/gHrThZBCkx8/s1600/gdc_europe11_logo.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 256px; height: 191px;" src="http://3.bp.blogspot.com/-IONYs-sHnSw/TkV-iDrnNeI/AAAAAAAAAZ0/gHrThZBCkx8/s320/gdc_europe11_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5640053231920297442" border="0" /&gt;&lt;/a&gt;Just wanted to inform everybody that I will be holding a lecture and be part of a&lt;br /&gt;panel at &lt;a href="http://gdceurope.com/"&gt;GDC Europe&lt;/a&gt; next week.&lt;br /&gt;&lt;br /&gt;The lecture is called &lt;a href="http://schedule.gdceurope.com/session/5809/Evoking_Emotions_and_Achieving_Success_by_Breaking_All_the_Rules"&gt;"Evoking Emotions and Achieving Success by Breaking All the Rules"&lt;/a&gt; and will be about some of the design in Amnesia and also touch upon a lot of subjects discussed in this blog.&lt;br /&gt;&lt;br /&gt;The panel has the name &lt;a href="http://schedule.gdceurope.com/session/5790/Beyond_Fun%3A_Perspectives_on_Video_Games_as_Expressive_Experiences"&gt;"Beyond Fun: Perspectives on Video Games as Expressive Experiences"&lt;/a&gt;, which will include 4 other swell guys and gals. In it I will have a lil rant called "Games or Toys".&lt;br /&gt;&lt;br /&gt;Both of these will take place on Monday and be one after another. Hopefully I can put something or link to video after the convention is over.&lt;br /&gt;&lt;br /&gt;Will anybody here be attending?&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-1860642612850676967?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/1860642612850676967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/08/gdc-europe.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/1860642612850676967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/1860642612850676967'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/08/gdc-europe.html' title='GDC Europe'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-IONYs-sHnSw/TkV-iDrnNeI/AAAAAAAAAZ0/gHrThZBCkx8/s72-c/gdc_europe11_logo.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-6942985904702218374</id><published>2011-07-13T13:13:00.001+02:00</published><updated>2011-07-13T13:28:00.675+02:00</updated><title type='text'>Tech feature: Script Overview #2</title><content type='html'>Second part of the scripting overview.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;iframe src="http://www.youtube.com/embed/UmQjO1C_Q90" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;Make sure to watch in HD: &lt;a href="http://www.youtube.com/watch?v=UmQjO1C_Q90?hd=1"&gt;http://www.youtube.com/watch?v=UmQjO1C_Q90?hd=1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-6942985904702218374?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/6942985904702218374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/07/tech-feature-script-overview-2.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/6942985904702218374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/6942985904702218374'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/07/tech-feature-script-overview-2.html' title='Tech feature: Script Overview #2'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/UmQjO1C_Q90/default.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-3949151558858418502</id><published>2011-07-12T16:34:00.003+02:00</published><updated>2011-07-12T16:37:27.156+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='post-mortem'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Amnesia Post-Mortem</title><content type='html'>A post-mortem for Amnesia is now up on The Escapist. You can read the whole thing here:&lt;br /&gt;&lt;a href="http://www.escapistmagazine.com/articles/view/features/9011-The-Terrifying-Tale-of-Amnesia"&gt;&lt;br /&gt;http://www.escapistmagazine.com/articles/view/features/9011-The-Terrifying-Tale-of-Amnesia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While not short, the article is a bit edited and does not go into details on all events. Still it should give a pretty good overview of how Amnesia came about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-3949151558858418502?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/3949151558858418502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/07/amnesia-post-mortem.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/3949151558858418502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/3949151558858418502'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/07/amnesia-post-mortem.html' title='Amnesia Post-Mortem'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-6495351610496506865</id><published>2011-07-04T16:38:00.006+02:00</published><updated>2011-07-07T12:02:03.120+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Tech feature: Script Overview #1</title><content type='html'>I just recorded a little clip about how scripting works in HPL3. In this film I just talk about the very basic elements of scripting and will follow up with another movie were I talk about some more complex features:&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/5OKFik2IEZU?hd=1" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Make sure to watch in in HD: &lt;a href="http://youtu.be/5OKFik2IEZU?hd=1"&gt;http://youtu.be/5OKFik2IEZU?hd=1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-6495351610496506865?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/6495351610496506865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/07/tech-feature-script-overview-1.html#comment-form' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/6495351610496506865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/6495351610496506865'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/07/tech-feature-script-overview-1.html' title='Tech feature: Script Overview #1'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/5OKFik2IEZU/default.jpg' height='72' width='72'/><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-6822095694523091269</id><published>2011-06-25T21:32:00.004+02:00</published><updated>2011-07-07T15:15:42.999+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='narrative'/><title type='text'>Is the player an artist? - Redux</title><content type='html'>In case you did not follow the comments on the last blog post with &lt;a href="http://frictionalgames.blogspot.com/2011/06/player-artist.html"&gt;my views on the player as an artist&lt;/a&gt;, you might have missed that James Portnow from  Extra Credits responded and he and I had a brief exchange. This discussion is now up on the Escapist in case anyone is interested in checking it out:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.escapistmagazine.com/articles/view/editorials/misc/8976-Extra-Credits-Addendum-Discussing-the-Role-of-the-Player"&gt;http://www.escapistmagazine.com/articles/view/editorials/misc/8976-Extra-Credits-Addendum-Discussing-the-Role-of-the-Player&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The articles has lot of interesting responses from the readers. I think I have already said what I have to say, so I will not discuss it further here. However, do feel free to continue the discussion in the comments!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-6822095694523091269?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/6822095694523091269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/06/is-player-artist-redux.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/6822095694523091269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/6822095694523091269'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/06/is-player-artist-redux.html' title='Is the player an artist? - Redux'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-4485126999542176758</id><published>2011-06-19T15:30:00.004+02:00</published><updated>2011-06-20T14:42:01.633+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='narrative'/><title type='text'>The Player - the artist?</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;In this week's Extra Credits it was argued that we should treat the player of a video game as an artist and co-author of the game. One major point was that other media can be said to be valid without an audience, but not so for videogames. In video games a player is needed for the work to fully come to life. The other point was that players have an artistic role in this co-operative creation and that understanding the feelings that drive an artist can be used to make better video games. You can watch the whole video here:&lt;br /&gt;&lt;a href="http://www.escapistmagazine.com/videos/view/extra-credits/3555-The-Role-of-the-Player"&gt;http://www.escapistmagazine.com/videos/view/extra-credits/3555-The-Role-of-the-Player&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While I think that Extra Credits is an excellent show, I do not really agree with this. The hypothesis of player-is-artist sound quite plausible at first, but I think that if you take a closer look it does not really hold up. I also think that if we choose to design games with this mindset, we might be missing out on very important things that can be done in the medium.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Why an audience is crucial&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Consider the information that a novel transfers to its audience. More than often a few words is all that is given as  base for the reader to imagine a scene. It is assumed that the reader is able to fill out large informational gaps, make assumptions and to even retroactively dress earlier scenes as new information comes along. A novel also throws a lot non-trivial concepts at the audience. Just consider something simple as a person being labeled as "depressed". In order for the reader to understand the state of mind of this character, a personal knowledge in human behavior and psychology is necessary. The reader simply cannot understand literature without a certain amount of experience.&lt;br /&gt;&lt;br /&gt;What I want to say with this is that books cannot be enjoyed in a void. They have to be processed by a human with a certain amount life experience in order to come alive. An alien would be completely unable to understand any literature even if it could decipher the language. There are just so many prerequisites needed that a deep study of humanity would necessary for full comprehension. And even then it might not be possible for the alien to understand; the very workings of our minds is probably crucial for a proper enjoyment of the work.&lt;br /&gt;&lt;br /&gt;Further more, the mental image painted up in our mind is not merely an opinion-based interpretation of the written text. It is a full blown world, populated and maintained by ourselves. We are not just doing a trivial text to sensory input conversion when reading. We are doing an actual simulation, constantly adding and updating details based on the written words of the novel. The book helps us a long on the ride, but at the end the heavy work is done by the audience.&lt;br /&gt;&lt;br /&gt;This mental construction work is not passive exercise either. We choose where to read, what to skim, where to put focus, if something should be skipped and so on. This is even more evident in other media. When watching a movie, interactions with other audience members can help shape the experience (a simple example would be laughing during funny moments). When listening to a piece of the music, the settings, our own movements, etc all change the way in which we experience the piece.&lt;br /&gt;&lt;br /&gt;Enjoying a work of art is a very human experience and I argue that in this regard videogames are not different from other forms of media. What is so special about video games is that data flows in two directions and that the audience can help shape the output to an extent far beyond any other media. However, that does not mean that experiencing a videogame is totally different kind of activity.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Why players are not artists&lt;/span&gt;&lt;br /&gt;Unless a game is incredibly linear (e.g. Dragon's Lair) everybody who play it will come away with their own personal experience. Because of this it is easy to imagine that videogames differ a lot from other media by essentially making the player a story-teller. And as being story-teller is essentially equal to being an artist, it leads to the conclusion that players are artists. I do not think this holds up though.&lt;br /&gt;&lt;br /&gt;Consider doing a trek through the woods. Even if several people follow the same route in the same forest, each one will have with very different experiences. Some might take side-tracks, have some unique encounters, do the trekking at a different pace, etc. The possibilities are essentially endless. The person doing the journey shapes his/her experience in a unique way and has a big responsibility in how it all turns out. Still, this is not an artistic endeavor.&lt;br /&gt;&lt;br /&gt;That is until the hiker decided to write, paint, talk, etc about the trek. Once a narrative, in whatever media, is created of the personal experience, an artistic process takes place. The art is not in living the journey, the art is in conveying it to other people; to create a work that expresses the very personal sensory input, actions and emotions evoked.&lt;br /&gt;&lt;br /&gt;The same is true for videogames. Even though the player posses a great freedom in shaping their path through the virtual world, this does not equal the player to an artist. Likewise, even though readers of books create and simulate complex worlds, this does not make the reader into an artist. It is not until the personal experienced is expressed in some kind of medium, be that a written narrative of a game session or a painting from a scene in a novel, that art is made.&lt;br /&gt;&lt;br /&gt;Sure there are videogames that give great opportunities for creating  art, Minecraft being an good example. However, this artistic creation  is a side thing and is not a requirement. The players can simply just let themselves be one with world, build a  shelter, etc. It is not until the player simply sees the game as tool  and foundation for their own work when the line between player and  artist really blur.&lt;br /&gt;&lt;br /&gt;With all this I am not saying that the activity of enjoying art is void of creativity. As explained when discussing how we read books, I made it quite clear that it takes a lot of effort to do it right. However, this does not mean that the act of reading a book is categorically equal to writing one. Instead it is more like the difference between solving a puzzle and creating the puzzle in the first place. Both activities are creative and challenging, yet quite different.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Why this matters&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Why even have this discussion? Is it not just a silly debate over semantics? Well in part it is. But if we do not take care and use the words properly they will start to loose meaning. If we would say that the activity that players participate in during play is the same as artistic creation, then I think we simply stretch the concept of artistic endeavors too far, making far less usable.&lt;br /&gt;&lt;br /&gt;A more important reason is that the way we see the relationship between players and videogames greatly shape the direction we choose we take the design of videogames. Even though video games have a very different voice from other media, we should not think of the activity of experiencing it as completely different. I fear that if we see players as storytellers and artists, we will miss out on a lot of opportunities at expanding the videogames medium. If the player is an artist, then our focus on game developers will be on creating brushes. This implies a bottom-up design, were short-term effects trump the bigger picture. If we want make games with a deeper meaning this is not the way to go. Instead we must focus on a higher level, something I think the player's role as outlined here greatly encourages.&lt;br /&gt;&lt;br /&gt;Also, saying that the player is an artist and storyteller shift the burden in the wrong direction. If we grant the player a large artistic role, we make it easy to blame the player for any lack of meaning in a videogame and discourage the creators from trying to add it. A painting should not require a painter to enjoy it, a play should not require you to act for it to be engaging, and so forth. Like great works of art in other media a videogame can require a lot from the player. However, this does not mean it is up for the player to create meaning and depth, it should instead be there for the player to find and become immersed in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-4485126999542176758?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/4485126999542176758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/06/player-artist.html#comment-form' title='47 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/4485126999542176758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/4485126999542176758'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/06/player-artist.html' title='The Player - the artist?'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><thr:total>47</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-6189363229301000842</id><published>2011-05-27T21:45:00.002+02:00</published><updated>2011-05-30T08:39:30.868+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Tech feature: Scripting upgrade</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;For a couple of months now I have, on and off, worked on some basic tech aspects for the engine. Everytime I was done with one of these I thought it was among the hardest things I would do for the new engine, yet the next feature as always proved more challenging. &lt;a href="http://frictionalgames.blogspot.com/2010/11/tech-feature-terrain-geometry.html"&gt;Terrain geometry&lt;/a&gt; was harder to implement than &lt;a href="http://frictionalgames.blogspot.com/2010/10/tech-feature-sunlight-with-shadows.html"&gt;sun shadows&lt;/a&gt;, &lt;a href="http://frictionalgames.blogspot.com/2010/11/tech-feature-terrain-textures.html"&gt;terrain texturing&lt;/a&gt; harder than geometry, and so on.&lt;br /&gt;&lt;br /&gt;Implementing the script system is no different. It is easily the hardest thing I have done so far for our new engine - HPL 3. It has had this "perfect"sort of challenge: Difficult problems to solve, much basic knowledge to wrap your head around and awfully boring and monotonous parts. I really hope this marks the end of this trend of increasing difficulty, as another proportionally large step might make my brain to melt and my fingers to crack. At least it can wait for a lil while...&lt;br /&gt;&lt;br /&gt;Enough complaining. Now that the scripting is pretty much implemented (some engine stuff still needs to be added and some more problems remain to be solved, but it is really minor), I am extremely happy with it. I think it will help us build better games, and to finish them faster. Now let's move on to how a boring scripting system accomplishes this.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Background&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Before moving on the the actual scripting I need to explain what brought on the creation of the current system. It all started with our first commercial games, &lt;a href="http://www.penumbragame.com/"&gt;The Penumbra series&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;When creating the Penumbra games our tools were primitive to say the least. All maps were made in a 3D modeling program, Maya, and then exported to Collada. The game engine loaded the Collada file and built the map from it. As a 3D modeling program is meant to create 3D models, it is not really meant to make levels in. With no ways of placing entities we had to use special naming conventions to tell the game where any non-static objects in the game were located. To be able to do this properly we had to make special "instance" versions of each model meant for the game, since without this you would not be able to see how an object was placed before the game started.&lt;br /&gt;&lt;br /&gt;Lighting was equally annoying since Maya has no support for radius on lights. This mean that you could not visually see how far a light reached, but simply entered a numerical value and hoped for the best. As this was not enough, you also needed to place portals and group meshes in order for the engine to provide occlusion culling. This could be quite tricky at times, and often you could sit a day or two simply tweaking portal setup. Added to this was also the problem that Maya often failed to show any textures, and most editing was done on grayish levels. For more info, you can just check the &lt;a href="http://wiki.frictionalgames.com/hpl1/start"&gt;wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The problems do not stop here though. Everytime you meant a change to the game, you had to do a complete reload. So setting up lighting in the game could be quite the effort: change light position for two seconds, load map for 2 minutes, notice it is not good, repeat. As you might figure, we got quite good at batches tasks and the phrase "it will have to do" was uttered more often than not.&lt;br /&gt;&lt;br /&gt;For scripting it was just a grueling. Every change in the script required a full restart of the game, creating the same sort of frustration present when modeling maps. And to make scripting even more frustrating, there was no syntax checking until the entire map was loaded! This meant you could wait two minutes of loading only to find out you had forgotten a semicolon or something else trivial.&lt;br /&gt;&lt;br /&gt;As I write this, I actually have a hard time understanding how we could have gotten anything done at all. And unsurprisingly, even though we released mod tools and documentation, not a single user map for Penumbra was ever released.&lt;br /&gt;&lt;br /&gt;For Amnesia we knew we wanted to fix this somehow. The first step we took was to simply make our own editor where all the maps are built. Since it rendered with the same engine as the game, it made is much easier and faster to tweak entity and light placement. We instantly saw that productivity rise with this change. For scripting it was pretty much the same, but we added the extremely simple fix of compiling the script &lt;span style="font-weight: bold;"&gt;before&lt;/span&gt; loading the game. This removed some of the time previously spent on, in vain, looking at  loading screen.&lt;br /&gt;&lt;br /&gt;Although we had new tools all was not good. You still had to reload all level data every time you made a change to the map or script. We did not think much of this though as we were so used to doing it this way, and happy that we had all the other improvements. However, a year and a half into the development we discussed if we really needed to reload the level. I cannot recall what sparked this idea, but anyhow we figured that we did not and I added a menu with a Quick Reload button. This cached all textures, models, etc and reloaded map very quickly (usually taking but a few seconds). This increased productivity and creativity tremendously and was one of the better decisions we made during the development of Amnesia. Another sign of how much these changes improved work flow are the &lt;a href="http://frictionalgames.com/forum/forum-36.html"&gt;over a hundred of user maps&lt;/a&gt; created as of today.&lt;br /&gt;&lt;br /&gt;What is so strange about the reload-feature is that is something that we could have added during the development of the first Penumbra, but for some reason we did not. It is quite frightening how often  you convinces yourself that there is no better way of doing a task, and never try to improve it. We did not want to make this mistake again and started thinking of what more we could do.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Taking script to the next level&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;In Amnesia and Penumbra, scripting is only used to control logic flow in the levels. How enemies spawn, how puzzles work and so on. All other gameplay is hard-coded into the exe file and written in C++. Normally when I write this kind of code, rendering for instance, I can do large chunks at a time and then simply see if it works as intended. This often in small projects that are fast to reload. However, when writing gameplay and UI code this is almost never the case. Instead you constantly need to fine tune algorithms and variables until you get the expected behavior and work in large projects. Not only does this mean a level restart (with full resource reload), but the exe itself also needs to be built from code, a process that can easily take half a minute, even if the changes are minor. This means that coding gameplay can be quite  a hassle at times, on par with how map building was in the Penumbra days. With the lessons learned from Amnesia fresh in mind, this felt like the obvious area of improvement.&lt;br /&gt;&lt;br /&gt;In order to make this happen we had to move as much gameplay code as possible into the scripting. What this meant was that we needed to do some large upgrades to our current script implementations. For example, right now we only supported the most basic types (bool, int and float) together with strings in script. This already caused some issues when exposing game/engine functions and when writing scripts, for example instead having a single argument for color, you had to have four floats (one for each color and one of alpha), making code ugly and writing it more cumbersome. So just this upgrade was worth doing.&lt;br /&gt;&lt;br /&gt;We also needed expose all engine classes, so that the script could be used pretty much as if it was normal C++ code, and achieve pretty much the same things. I was not sure exactly how much to expose but knew that the more the better.&lt;br /&gt;&lt;br /&gt;Finally, the most important feature was to be able to reload script at any point, so it would be easy to just change a line, click a reload button and then a few seconds (or less) later see the change in-game.  To get this working was the by far the most important goal with the entire upgrade. This would not be as  easy as the level script was in Amnesia though, since the script system would not only take care of the code, but of part of the data as well. This meant I needed to save the state somehow, a feat I was not sure yet how to accomplish.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Implementing Classes &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Before tackling the problem of script reload, I first had to make sure to add engine types to the engine. And even before doing that I needed to be sure our current scripting middleware was up to the task.&lt;br /&gt;&lt;br /&gt;The scripting system that we were using, and have been for a long time, is a library called &lt;a href="http://www.angelcode.com/angelscript/"&gt;Angel Script&lt;/a&gt;. It is actually the middleware that we have used the longest, ever since end of 2004 and the &lt;a href="http://www.frictionalgames.com/site/energetic"&gt;Energetic project&lt;/a&gt;. Even though we have used it for such a long time we never really used to anywhere near its full extent and now was finally the time to make up for that. I took a day to look through the documentation and found that AngelScript could support everything that we needed, and what was even better was that it was not that difficult to add.&lt;br /&gt;&lt;br /&gt;AngelScript is a bit different from other popular script languages (like Lua) in that it is &lt;a href="http://en.wikipedia.org/wiki/Strong_typing"&gt;strongly typed&lt;/a&gt; and very closely connected to the underlying C++ code. For one thing this makes the script quite fast (although not &lt;span style="font-style: italic;"&gt;faster&lt;/span&gt;, see end of post for more info). It also meant that AngelScript could link to the classes almost directly and I only had to declare the class and link to its different parts (whatever member variables and methods that I wanted to be exposed). It also supports &lt;a href="http://en.wikipedia.org/wiki/Pointer_%28computing%29"&gt;pointers &lt;/a&gt;quite easily, but makes them more secure with a script specific &lt;span style="font-style: italic;"&gt;handle&lt;/span&gt; type. This requires you to keep track of some memory management for the data, but you do not need to do it, and I could very easily and quickly add support for a vast number of engine resources (textures, meshes, lights, etc).&lt;br /&gt;&lt;br /&gt;The only thing that was a little bit trickier was supporting inheritance (when a class can build upon another class). Basically you have to redeclare methods every time you add new class that inherits from something. You also need to specify to what other classes this class can be &lt;a href="http://en.wikipedia.org/wiki/Type_conversion"&gt;cast &lt;/a&gt;to. This might sound a bit of a hassle, but the result is that you can control so the script always has a very close mapping to the code it exposes, something that I was extremely thankful for when implementing the state saving (more on that below). Also, through some use of &lt;a href="http://gcc.gnu.org/onlinedocs/cpp/Macros.html"&gt;macros&lt;/a&gt;, adding the implemented classes become quite easy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Basic script layout&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The next thing to figure out was the basic structure of the script code. In Penumbra and Amnesia we simply added the functions directly in a script file and then allowed that script file to represent an object. I first thought that this would be a valid design this time again, until I started thinking about how to store the data (meaning any data that should be kept between executions of the script).&lt;br /&gt;&lt;br /&gt;In Amnesia and Penumbra the only data that is saved is simple variables like an integer for the number of times the player had stepped on button or similar. This is done through using special functions for all these variables, for example:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;SetLocalVarInt("ButtonPushNum", 1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This function saves the data to the game, and when the script is reloaded (meaning destroyed and recreated) the script can easily reference the data again by doing:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;int lX = GetLocalVarInt("ButtonPushNum");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;However, this time the game had to save a lot more complex data, like pointers to resources, matrices and whatnot. At first I actually considered using system with functions like this, but I figured that it would just mean a lot of extra work, and just make things more difficult. Again I thought about the lessons from Amnesia's reload feature, and thought it was worth trying to find a better solution. What I ended up doing was to force each object to be contained in class, and then let all data to be members of that class. This allowed AngelScript to make copies (needed for enemies and whatever there will be more than one instance of) and also made it was easy to keep track of the members (you simply create an object in the C++ code and can then iterate all its data).&lt;br /&gt;&lt;br /&gt;A problem that I realized now was that I needed to have C++ functions that only worked in certain types of classes and only on data for a certain copy. For instance, an enemy class might want a function like &lt;span style="font-style: italic;"&gt;IsInLineOfSight(...)&lt;/span&gt; to see if it has visual contact with something. However, there were not any functionality in AngelScript for doing this. I could give the script class a template class that forces it to implement certain functions, but I could not let the C++ code act as a base and expose specific functions from it. To solve this I had do some hacking. I ended up using global functions, and to keep track of the currently active object. (Again with macros to the rescue.) The resulting solution was not perfect though, as the global function can be used in any class and not just the one it was meant for.  I am still looking into some fix for this.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Saving the state&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;It was now time to save the state of the script. To start this off I took the naive approach and simply saved the script data directly by copying it.  This works very well for stuff like vectors, matrices, etc where it is just a matter to make a copy of the data. But it does not work that well with resources like meshes, texture or even objects like physics bodies, billboards and lights. There is way too much data in those to copy. And if I simply save the pointer I need to make sure that no data has changed when the state is loaded again, or else the saved state will not work.&lt;br /&gt;&lt;br /&gt;At the time I was only building the system to work with a script reload only, so these issues did not pose a problem. But a major obstacle popped up when I wanted to save classes defined in scripts code. These where not possible to simply save by copying, because when you rewrite a script they can change entirely. For instance, if the class when saved consisted of two integers, and when reloaded has one string and a matrix instead the data you saved is invalid. It gets even worse if a script class has another script class as member and even more so if script classes are saved in arrays.&lt;br /&gt;&lt;br /&gt;I figured I needed to do some kind of drastic change if this was to work. I was sketching on a few systems that could save variables in a separate structure, when it hit me. The system I was working on could not only be used to save the state, but if I implemented it correctly I could also use it for saving. For Amnesia and Penumbra I use a special serialize system that can save classes to file if initialized correctly. It is quite cumbersome, but way better than writing load / save for every single variable. However, as I was to do most gameplay code through script (the code that pretty much contain everything that needs saving), I could actually get rid of rewriting the save code for every single gameplay update. Another huge benefit of using scripting: automatic saving. This is bound to save tons of work. (It did mean a lot more work though...)&lt;br /&gt;&lt;br /&gt;Up to that point I had looked at the scripting as separate part  of in the engine. A module that all other modules could work without if removed, exactly like how most other modules work. Thinking like this had colored a lot of the design decisions I had made. Now, I instead decided that since scripting will be basically what controls the engine, I started of thinking as something that was part of all other modules. This led me to do a major rewrite of the state saving.&lt;br /&gt;&lt;br /&gt;There is quite a lot to say about this system (and serializing in general), but I do not really have the space right now, so I will just do a quick overview. First of all, the system defines a few basic types that all other structures are built up from. These are bool, int, float, vector, matrix, color, etc and I implement very specific create/save/load methods for each of these. In  AngelScript all of these are also implemented as primitives (built-in types) or data objects (which is a type where AngelScript handle all memory management).  When saved the actual binary data is saved.&lt;br /&gt;&lt;br /&gt;All other classes are implemented as references, meaning AngelScript only manages their pointers. When saving the state of these classes, each class must implement a a special method that adds all of the member variables (either basic types or other reference classes) to a list. (Basically the explicit method described &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://http//www.gamasutra.com/view/feature/6379/sponsored_feature_behind_the_.php"&gt;here&lt;/a&gt;). This list is then used when transferring data to a special save buffer that contains the data of all the basic types and/or sub buffers containing  data for other classes.&lt;br /&gt;&lt;br /&gt;For certain classes, its pointer is backed up in the C++ code. So when the save data for it is loaded, the pointer to the class is first searched for and if found it is updated with the saved member data. This makes it possible to reload the script code without having to recreate all the data.&lt;br /&gt;&lt;br /&gt;Of course, all sorts of complications arise during this, and again it would take too long to go through them all. But as I hinted before one thing that saved me is that script objects are so closely connected to the engine data. When writing code that deals with serialization one of the biggest annoyances is that that class pointers with &lt;a href="http://en.wikipedia.org/wiki/Multiple_inheritance"&gt;multiple inheritance&lt;/a&gt; can change their address when cast. Because the script language only returns void pointers (memory address with no type specified), you must be sure of the type it returns, something AngelScript allowed me to be.&lt;br /&gt;&lt;br /&gt;Another fun thing with serialization are all the strange macros that you have to make. For example, this one was pretty fun:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;#define ClassMemberClassOffset(aClass,aMember)  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  ( size_t(static_cast&lt;iscriptablebaseclass*&gt;(&amp;amp;(( (aClass*)1)-&amp;gt;aMember)) ) -1    )&lt;/iscriptablebaseclass*&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This one is used to make sure that class member offset address points correctly. It is one of the many things that make sure multiple inheritance problems, as explained above, does not screw things up. I got an entire header file just filled with fun stuff like this!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Closing notes&lt;/span&gt;&lt;br /&gt;Once I had the system working it was quite an effort to add all the classes. There are countless classes that all need to be set up in specific way and everything to be saved needs to be initialized. Sitting several days in a row just coding stuff like this can really tear on the psyche. Fortunately, almost everything is added now, so the worst part should be over.&lt;br /&gt;&lt;br /&gt;Another nice addition to the new script system is that it can auto generate the API function file for &lt;a href="http://notepad-plus-plus.org/"&gt;NotePad++&lt;/a&gt;. This allows NP++ to autocomplete any text that you write and you no longer need to keep function names or arguments list in your head (and skip the manual look-ups). What is annoying though is that it only works with global functions and NP++ cannot recognice what class a certain variable is in and show all its members (like visual assist can for C++). Does anybody know an editor that can manage this?&lt;br /&gt;&lt;br /&gt;One thing that I was really eager to get working was threading. In Amnesia we use tons of special timer callbacks to set up events, and it would have been so nice to do something like this instead:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span style=" font-style: italic; font-size:85%;" &gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-style: italic; font-size:85%;" &gt;PlaySound("x");&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-style: italic; font-size:85%;" &gt;Sleep(10)&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-style: italic; font-size:85%;" &gt;PlaySound("y");&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-style: italic; font-size:85%;" &gt;WaitUntilTriggered("a")&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-style: italic; font-size:85%;" &gt;...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;AngelScript does support this sort of thing, but there is currently no way of saving the state. So if the player where to save during a sleep, the game would be different when loaded. This is unfortunate, but I am looking into some other solutions instead. If anyone has ideas on this please share!&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Right now I have only tried this system in some tests, but it still feels really good and works exactly as I want. It is just so great to be able to reload any code changes in a fraction of  second. It allows for rapid iteration, makes one more productive and generally just makes it so much more enjoyable to code. It is also so gratifying to have an idea and then successfully implement it to the sort of quality you hoped for.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&lt;br /&gt;Addendum:&lt;/span&gt;&lt;br /&gt;I earlier wrote that AngelScript was faster than Lua, which is not the case when it comes to code solely executed in the script (see &lt;a href="http://codeplea.com/game-scripting-languages"&gt;here&lt;/a&gt;). So obviously my initial statement was not correct. However, I still think AngelScript must be faster in calling implemented c++ functions/types as there is pretty much no overlay involved. I do not have any data to back this up though, so do not take my word for it :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://frictionalgames.blogspot.com/2011/05/we-are-hiring-programming-wanted.html"&gt;Found this irresistibly interesting? We are hiring!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-6189363229301000842?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/6189363229301000842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/05/tech-feature-scripting-upgrade.html#comment-form' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/6189363229301000842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/6189363229301000842'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/05/tech-feature-scripting-upgrade.html' title='Tech feature: Scripting upgrade'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-9080575157295621619</id><published>2011-05-25T17:12:00.017+02:00</published><updated>2011-05-26T11:40:50.606+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>The Gathering</title><content type='html'>&lt;iframe width="520" height="349" src="http://www.youtube.com/embed/fUxgJOacmuc" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;div&gt;On the morning of May 10, we all gathered for the very first time. Unlike what many had prophesied, this did not bring about the end of the world. No, this Tuesday morning turned out to be quite benevolent. The six of us met at Malmö train station right next to the statue of the knotted gun, which incidentally did no longer exist.&lt;/div&gt;&lt;div&gt;“Good,” said Thomas, “would have been too easy to find if we were able to follow our directions.”&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thomas and Jens are the founders of Frictional Games. They make an interesting and effective pair. Thomas is a force of nature hauling us off to adventure, while Jens is the more reserved type who dryly states that we’re going the wrong way. Together they manage to keep us moving on the right track.&lt;/div&gt;&lt;div&gt;I had already met them both before and along with Marcus and Luis, who I had met on the trip to Seattle, there was only one man left.&lt;/div&gt;&lt;div&gt;Marc turned out to be a cheerful man with subtle gestures. His eyebrows bounced as a silent hello.&lt;/div&gt;&lt;div&gt;“I guess we are all here.”&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-_MZUAPuwSn4/Td4dWygNXGI/AAAAAAAAAD0/r6Y99E-8ZZE/s1600/100_3783.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/-_MZUAPuwSn4/Td4dWygNXGI/AAAAAAAAAD0/r6Y99E-8ZZE/s400/100_3783.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5610954463101410402" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The Gang&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That innocuous Tuesday might seem arbitrary, but there was a reason for us to meet in Malmö that day. The city hosted the Nordic Game Conference and we were to attend and hopefully receive some love from the press and our fellow game developers.&lt;/div&gt;&lt;div&gt;“This is going to be fun. And the award ceremony is going to be exiting!”&lt;/div&gt;&lt;div&gt;“Right, about that. We were not nominated for anything,” informed Jens.&lt;/div&gt;&lt;div&gt;“Nothing?”&lt;/div&gt;&lt;div&gt;“Nope.”&lt;/div&gt;&lt;div&gt;“Not a single nomination? From the very people who even helped to fund Amnesia.”&lt;/div&gt;&lt;div&gt;“We got a free booth to display our game.”&lt;/div&gt;&lt;div&gt;“Better than nothing?”&lt;/div&gt;&lt;div&gt;“Not really, now we have booth to attend to.”&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We were there to attend the conference, to hang out, and get to know each other. We really didn’t have anything new to show, which kind of explains why our booth was grossly understaffed and consisted of one computer running Amnesia with a t-shirt strung up above it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The conference took a slow and smooth start as we really didn’t have anything to attend except  a minor exposé of games including some casual drinking. That is why we first headed off in a completely different direction and ended up visiting the “House of Science and Maritime History”, a museum filled with old machines and oddities. Having filled our heads with interesting factoids, it was about time we burned a few braincells with a bit of reckless driving at the go-cart circuit. Marcus stumped us all with his motor skills, leaving us convinced he must have had a lot of practice. Being from the northern wastes, it only seems reasonable he would have to drive fast to get away from polar bears and Santa.&lt;/div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-5Kc5YqS8dkQ/Td4dXIPutiI/AAAAAAAAAD8/gTmTTC1FrYQ/s1600/Foto0979.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 98px;" src="http://3.bp.blogspot.com/-5Kc5YqS8dkQ/Td4dXIPutiI/AAAAAAAAAD8/gTmTTC1FrYQ/s400/Foto0979.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5610954468937872930" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;Road Rage!&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Wednesday was the day that the conference really got going. Ed Fries, a game making legend from Microsoft, launched the day with a great keynote speech about creativity and constraints. Afterwards we all split up and to attend the lectures we found most interesting, only to meet up by the Street Fighter arcade machine during the breaks, to kick ass, chew pastries, and drink coffee.&lt;/div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-WfIqFKindZM/Td4dXZGcaHI/AAAAAAAAAEE/4-LcTJreXgc/s1600/Foto0983.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-WfIqFKindZM/Td4dXZGcaHI/AAAAAAAAAEE/4-LcTJreXgc/s400/Foto0983.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5610954473462327410" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Hadooooouken!&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;During the evening the main gala was held to announce the winners of all the awards. Knowing well we hadn’t been nominated, we chowed down on the delicious food we were served. That’s when we suddenly noticed that they were playing a Amnesia-trailer on the big screen.&lt;/div&gt;&lt;div&gt;“We won... something!”&lt;/div&gt;&lt;div&gt;“Wait, what? Did we?&lt;/div&gt;&lt;div&gt;No, we didn’t, at least I don’t think we did, but we were called on stage to take a bow in a nice lifetime-achievement sort of way.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The next day when all the hoopla had settled, we were greeted, by strangers and friends.&lt;/div&gt;&lt;div&gt;“Congratulations on the award!”&lt;/div&gt;&lt;div&gt;“Thanks, we didn’t get one.”&lt;/div&gt;&lt;div&gt;“Sure you did, you were on the stage and everything. Must have been some kind of award.”&lt;/div&gt;&lt;div&gt;To this day we don’t really know what that was, but it was interesting mixed with a hint of awkward.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thursday passed with even more lectures and Street Fighting. As a final farewell, all the participants gathered in the large hall to play a game. Not the digital kind, well almost, indirectly if you will. The moderator pulled up two game titles and a statement. Then two people from the audience got to argue which game fitted the statement. The first bout? Amnesia v.s. Bioshock – Which one is more disturbing.&lt;/div&gt;&lt;div&gt;The first thing that ran through my head was; what if I was picked to defend Amnesia, that would be embarrassing. Then it struck me. What if I decided to defend Bioshock! It was not like anyone really recognized me as the writer. That would be hilarious, to talk smack about our own game, what if I won that argument? I was laughing inside already.&lt;/div&gt;&lt;div&gt;Even though I now and then get some clever ideas, I tend to be slow. When I went to raise my hand, it was already too late. Two contestants had begun to argue what was more disturbing already. Pride and shame mixed as they argued their sides, but it turned to a heartwarming experience as the crowd favored Amnesia. Hell yeah, we made a disturbing game.&lt;/div&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Lpwxpca3yjU/Td4dXiKKQPI/AAAAAAAAAEM/39JNnFEKQmw/s1600/IMAG0149.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 240px;" src="http://1.bp.blogspot.com/-Lpwxpca3yjU/Td4dXiKKQPI/AAAAAAAAAEM/39JNnFEKQmw/s400/IMAG0149.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5610954475893833970" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;If you want to slow down, just crash into something.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;On Friday there was no conference, it had ended on Thursday. However, there was more to be done. Luis and Marcus, the two people who actually had to fly in to be able to attend, had one more day  to spend. Jens and Thomas invited us to come to Helsingborg, where they and Frictional Games officially reside.&lt;/div&gt;&lt;div&gt;Since there was no office to visit, we headed out into the city. To do so in style, we jumped on Segways and rode around. It was tremendous fun and we got to see the surrounding nature in a pleasant way. Some even got to see the dirt road, up close, as they came crashing down. That’s right, no less than Jens, Marcus, and Luis managed to crash their Segways. In increasingly dramatic ways too.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After the death defying speed racing with Segways, we slowed down with some care free sightseeing in the city and a visit to the local tropical zoo.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The evening and the week ended with some fine dining and then some beer at the pub. It is difficult to sum up the experience and let you in on all the details. Let’s just say, a bunch of anonymous internet people came together in real life... and the world didn’t end this weekend, that’s strange, isn’t it?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You’re welcome.&lt;/div&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-bWKtIcG3g5Q/Td4dYcXr1qI/AAAAAAAAAEU/eEyfwa4CvcE/s1600/IMG_2551.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/-bWKtIcG3g5Q/Td4dYcXr1qI/AAAAAAAAAEU/eEyfwa4CvcE/s400/IMG_2551.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5610954491519817378" /&gt;&lt;/a&gt;&lt;i&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-style: normal; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Marcus in his natural habitat.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/i&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;a href="http://frictionalgames.blogspot.com/2011/05/we-are-hiring-programming-wanted.html"&gt;Feel like joining the insanity? We are hiring!&lt;/a&gt;&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-9080575157295621619?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/9080575157295621619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/05/gathering.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/9080575157295621619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/9080575157295621619'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/05/gathering.html' title='The Gathering'/><author><name>Mikael Hedberg</name><uri>http://www.blogger.com/profile/15885592886284818938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/fUxgJOacmuc/default.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-594709513674042459</id><published>2011-05-18T09:40:00.003+02:00</published><updated>2011-05-18T12:33:13.761+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hiring'/><title type='text'>We are hiring: Programmer wanted!</title><content type='html'>Frictional Games is now looking for a talented programmer to join the company!&lt;br /&gt;&lt;br /&gt;You will be working for a small team with a big focus on finding new and innovating solutions. We want you who are not afraid to explore uncharted territory and constantly learn new things. Self-discipline and independence are also important traits as all work will be done from home.&lt;br /&gt;&lt;br /&gt;Some the things you will work with include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;3D math, rendering, shaders and everything else related.&lt;/li&gt;&lt;li&gt;Console development (most likely Xbox 360).&lt;/li&gt;&lt;li&gt;Hardware implementations (support for motion controls, etc).&lt;/li&gt;&lt;/ul&gt;All coding is in C++, so great skills in that is imperative. You should also be living in Sweden or a time-zone nearby. If you are fit in other areas we are of course prepared to be flexible.&lt;br /&gt;&lt;br /&gt;If interested send CV to: jobs [at] frictionalgames [dot] com&lt;br /&gt;&lt;br /&gt;What we are most interested in seeing is evidence, in form of things you have done, that you are qualified. Having interesting works to show off can make up for any gaps in knowledge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-594709513674042459?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/594709513674042459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/05/we-are-hiring-programming-wanted.html#comment-form' title='37 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/594709513674042459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/594709513674042459'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/05/we-are-hiring-programming-wanted.html' title='We are hiring: Programmer wanted!'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><thr:total>37</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-2677991871340284079</id><published>2011-05-16T22:40:00.005+02:00</published><updated>2011-05-17T08:56:46.705+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='narrative'/><title type='text'>Finding videogame's true voice</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-lBfo9kZfpQo/TdGMCcK5hqI/AAAAAAAAAZo/MXxAhD4VMsI/s1600/Siren.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 381px; height: 244px;" src="http://2.bp.blogspot.com/-lBfo9kZfpQo/TdGMCcK5hqI/AAAAAAAAAZo/MXxAhD4VMsI/s400/Siren.jpg" alt="" id="BLOGGER_PHOTO_ID_5607416984602511010" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Introduction&lt;/span&gt;&lt;br /&gt;The main gist of this post is that we are not using the full narrative capability of video games. I believe we fail to take into account certain aspects that lie at the core of making artistic creations powerful and thus miss out on crucial strengths of the video game medium.  To get to the core of these strengths, I will first have a look at other media (specifically film and literature), and then explore what lessons that can be applied to video games. What I end up with is a way of thinking that use basic elements of the film and literature experience, yet is quite different from these.&lt;br /&gt;&lt;br /&gt;It is very easy to look at other form of media, see what they do well, and then try and copy this. I think this is a big problem for video games. Whenever a game focusing on a narrative-oriented experience is made, it is instantly compared to other media and judged according to their strengths. For instance it is very common praise to call video games &lt;a href="http://frictionalgames.blogspot.com/2010/08/why-i-hate-cinematic.html"&gt;cinematic&lt;/a&gt;, or to concentrate critique on their &lt;a href="http://frictionalgames.blogspot.com/2010/10/story-what-is-it-really-about.html"&gt;plot structure&lt;/a&gt;. Obviously, I do not think this is the right approach. Instead I think we need to take a step back, and consider what it is really in these other media that makes them work. We must then explore in what ways these concepts can (and if they can!) be applied to video games.&lt;br /&gt;&lt;br /&gt;My suggestion for this "magical essence", which I will outline in this article, are empty spaces. The bits that require the audience's participation and imagination. Basically, the part of art that require us to be human.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;The power of imagination&lt;/span&gt;&lt;br /&gt;First of all let us take a look at literature. For this "&lt;a href="http://www.enotes.com/fall-house-usher-text/the-fall-house-usher"&gt;The fall of the house of Usher" &lt;/a&gt;by Edgar Allen Poe will be used as an example:&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-style: italic;"&gt;"I know not how it was—but, with the first glimpse of the building, a sense of insufferable gloom pervaded my spirit. I say insufferable; for the feeling was unrelieved by any of that half-pleasurable, because poetic, sentiment, with which the mind usually receives even the sternest natural images of the desolate or terrible. I looked upon the scene before me—upon the mere house, and the simple landscape features of the domain—upon the bleak walls—upon the vacant eye-like windows—upon a few rank sedges—and upon a few white trunks of decayed trees—with an utter depression of soul which I can compare to no earthly sensation more properly than to the after-dream of the reveller upon opium—the bitter lapse into everyday life—the hideous dropping off of the veil. There was an iciness, a sinking, a sickening of the heart—an unredeemed dreariness of thought which no goading of the imagination could torture into aught of the sublime. &lt;/span&gt;&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;This is an excerpt of a quite lengthy passage where the narrator describes the House of Usher as he approaches it. Even though it says a lot, it gives us very scarce information of how the house actually looked like. The focus is instead on the feelings and actions of the protagonist. The text tells us the response that the imagery evokes in the narrator and based on that it urges us to make up our own mental image of the scene. This is typical for literature. Descriptions are usually sparse and instead emotions and events are used as to paint a scene for the reader. A lot of responsibility is shouldered on the audience, certain knowledge is assumed and this (which I think is especially important to highlight)  without the author losing any artistic control.&lt;br /&gt;&lt;br /&gt;Next, let us consider movies. Normally one would think of movies as being very exact in their portrayal of a story, almost like a window to an alternate reality. However upon a bit of analysis it is clear that this is not the case. Film requires us to make non-trivial connections between sequences and invites us to read the minds of the actors. The &lt;a href="http://en.wikipedia.org/wiki/Kuleshov_Effect"&gt;Kuleshov Effect &lt;/a&gt;makes a clear case for this. Just watch the following video yourself and consider how your interpretation of the face changes depending on the context in which it is shown:&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/_gGl3LJ7vHc" allowfullscreen="" width="425" frameborder="0" height="349"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;As we see a character on screen, we are meant to start imagining what that person might be feeling. Whenever a cut is made, it forces us to make up a casual relationship between the juxtaposed events. This can easily become quite complex as this short clip from the famous &lt;a href="http://en.wikipedia.org/wiki/The_Battleship_Potemkin#The_Odessa_Steps_sequence"&gt;Odessa stairs sequence&lt;/a&gt; show:&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/euG1y0KtP_Q" allowfullscreen="" width="425" frameborder="0" height="349"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Somehow we are able to make sense of this cacophony of imagery, constantly making connections between clips, weaving our own coherent narrative inside our minds. Just as books require readers to fill in the sensory details of a scene, a film forces the viewer to imagine the emotions and casual relationships portrayed. Both literature and film heavily depend upon the audience's imaginative interpretation and will lose its impact without it. I would even say that the greater this gap of imagination is, the more room for interpretation, the more powerful and artful the work becomes. By this I do not mean that the more obscure art is, the better it becomes. Rather, the ability to leave plenty of gaps for the audience to fill, without making the work incomprehensible and meaningless, is what makes great artists and great works of art.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Filling a gap&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Even though this audience participation required in books and movies might not be obvious at first, it does not feel that strange once you realize it. It is quite easy to see that we make up worlds in our head when reading or that we construct a fluent narrative from edited imagery when watching movies. But viewed from the perspective of somebody who encounters this for the first time, I would say that is far from evident. It is really quite weird that we can count on the audience to build up whole scenes in their heads. This based on almost purely emotionally descriptive content. Dialog in literature is a great example of this, where the spoken words are alone at conveying the look, actions and sometimes even emotions of the characters involved. There are tons of background knowledge required to makes sense of this, and it would be extremely hard to teach computers the same tricks.&lt;br /&gt;&lt;br /&gt;I bring this up mainly because I want to show that, even though all of this is now part of our everyday life, it is far from self-evident truths. For instance, film editing took a while before it was properly figured out, and its complex usages even longer. This should hint us that whatever there is left to figure out about the videogame media, we should not expect it to be self-evident or even seem like it would work when first encountered.&lt;br /&gt;&lt;br /&gt;Another important reason for bringing this up is to show that all of these gap-filling has a retroactive aspect. For instance when connecting clips in a film, the whole meaning (ie the action that the clips portray) come together afterwards. Yet to us it seems like a continuous experience and in a way we actually inject false memories of an imagined event. This is basically how animation work, where we first see an object in one position, then in another, not until both event are experienced making our brain interpret the entirety as if motion occurred. However, we never experience it like that; we simple see it as a motion of an object from one point to another and do not notice the mental effort required.&lt;br /&gt;&lt;br /&gt;This is even more evident in literature where descriptions of objects can come far after they were first introduced. Even though this may seem like a jarring discrepancy, it pose no problem to us and we can meld these new facts with the earlier event portrayed. For example, if we remember a tale the early happenings exist in our mental images with the detailed characters shaped during the full read-through. They are no longer the unknown entities they were when we read the passage for the first tine.&lt;br /&gt;&lt;br /&gt;What this tells us is that we should not be afraid of giving the audience incomplete information or experiences. Not only does this "removal of facts" not pose a problem, but it actually seem essential in creating a powerful experience. It is actually as if something "magical" happens when we are forced to complete the work ourselves.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Side note:&lt;/span&gt;&lt;br /&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Split-brain"&gt;Split-brain&lt;/a&gt;&lt;span style="font-style: italic;"&gt; persons show a very extreme example of our human urge to, often unconsciously, fill these sort of gaps. For example, &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.allpsychologycareers.com/topics/lateralization-right-brain-left-brain.html#link3"&gt;outlined here&lt;/a&gt;&lt;span style="font-style: italic;"&gt;  are some experiments where the subject effortlessly made up details  from incomplete information without conscious knowledge about it. I  think it clearly shows how the brain is hard-wired for this kind of  behavior and that it is essential to what makes us human.&lt;/span&gt; &lt;span style="font-style: italic;"&gt;This visual illusion found &lt;/span&gt;&lt;a style="font-style: italic;" href="http://illusioncontest.neuralcorrelate.com/2011/the-exchange-of-features-textures-and-faces/"&gt;here &lt;/a&gt;&lt;span style="font-style: italic;"&gt;also show how eager we are to create casual relationships, and how the context makes us change how these are made.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;In search of the void&lt;/span&gt;&lt;br /&gt;It is now time to take a deeper look into games and to search for an equivalent of the "gap filling" concepts found in literature and films. Instead of meeting this head on, I think it is important to discuss what it is that is especially distinct and descriptive (and thus not requiring the audience's interpretation) in games. I would say these things are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Details of the world. Not only are games extremely clear on what a scene looks like, they often allow it to be exploration and makes it possible to very closely examine the various parts of the world. This is something that is especially true for 3D games, where players can view objects from almost any angle they please.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The fluidity and coherence of actions. As players are in direct control of the protagonist, there is never any doubt of what events are taking place. Because of the interactive nature of video games, a constant feedback loop of actions and consequences are required, forcing the events taking place to be exact. Video games are all about right here and right now.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Side note:&lt;/span&gt; &lt;span style="font-style: italic;"&gt;I am aware that the above might not be strictly true for all game types and is more fitting for real-time 3D games. Although this should not disqualify any further conclusions, it might be preferable to think of the following discussion as focus on 3d video games in particular.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The above points mean that if we want to leave room for imagination in games, it cannot be the scene building from literature nor the connecting of events in film. With the level of detail of the world provided, little is left to the imagination. And the fluent events demanded leave very little room for players to fill in their minds. So what other gaps are there to be filled? To find this out, we need to take a look at a core feature of video games: interactivity.&lt;br /&gt;&lt;br /&gt;So what exactly does interactivity encompass? I like Chris Crawford's definition (from &lt;a href="http://www.amazon.com/Chris-Crawford-Interactive-Storytelling/dp/0321278909"&gt;this book&lt;/a&gt;):&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;"A cyclic process between two or more active agents in which each agent alternately listen, thinks and speaks."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What I like about this wording is that it makes it clear that interaction is not all about a user providing input. It is also about considering and then reacting to this input, and that the same applies for both sides (meaning both the human and computer). When it comes to finding opportunities for adding gaps of imagination, these are all of course on the humans side. Also note that the gaps might take place at any of steps: listening, thinking or speaking. With this in mind, I will make an attempt at some gap finding.&lt;br /&gt;&lt;br /&gt;So where in this interactive cycle does there exist room for the imagination? The most obvious place is of course the "listening" (meaning any input). Even though we get a clear view of how the world looks like, there are still things left for our us to craft in our minds. This is something that is already present in some games and comes in the form of "environmental storytelling". Through exploration players can pull information from the world, gather details on past events and imagine emotional states of the world.  &lt;a href="http://en.wikipedia.org/wiki/BioShock"&gt;Bioshock &lt;/a&gt;is a good example of this, where much of the attitudes and history of the sunken city can be found out purely by, the interactive process, of exploring the environment.&lt;br /&gt;&lt;br /&gt;However, environments are lifeless entities, and while they can portray the  aftermath of actions, they do not give us any feeling of agency. This greatly lessens the impact and diversity of imaginative gap-filling players can make. To take this to the next level, it is quite obvious that we need to included simulations of conscious beings. This allows us to construct mental &lt;a href="http://en.wikipedia.org/wiki/Theory_of_mind"&gt;"theories of mind"&lt;/a&gt;, something that greatly increases the possibilities of expression. The problem is that we simply cannot do this with current technology, except at a very rudimentary level. While our techniques for facial expression is constantly getting better and better (&lt;a href="http://en.wikipedia.org/wiki/L.A._Noire"&gt;L.A. Noir&lt;/a&gt; is a good example), this is only meant for prerecorded usage. When it comes to real-time procedural generation of expressive characters, we are at an extremely primitive stage. Because of this I believe that this can be very interesting to explore in the future, but not something that can be used right now.&lt;br /&gt;&lt;br /&gt;So what else can be done? With expressive characters in real-time not an option, we must turn focus onto the actions themselves instead. As stated above, the events in video games do not leave any room for interpretation. But there still room for the imagination here though. &lt;span style="font-style: italic;"&gt;What&lt;/span&gt; actions to make and w&lt;span style="font-style: italic;"&gt;hy &lt;/span&gt;the are made.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt; &lt;span style="font-weight: bold;"&gt;Constrained role-playing&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Imagination of the &lt;span style="font-style: italic;"&gt;what &lt;/span&gt;and &lt;span style="font-style: italic;"&gt;why &lt;/span&gt;of actions probably sounds a bit strange and needs some explanation. When players take control of an avatar in a video game, they are free to do what they please as long as it is accordance to the rules of the game world. This freedom might seem as the kind of gap that can be used to mimic the "magic" from literature and film. However not in the way actions are normally implemented: very specific and unambiguous. I reason so because there are two major problem with this approach.&lt;br /&gt;&lt;br /&gt;The first is a technical one, namely is that it is pretty much impossible to give the player access the space of possible actions for any given situation. This means that there will always be events that the player can think of, but will be unable to carry then out. This limits the ability to role-play and might also leave, according to the player, the most intuitive and plausible action unavailable, breaking up flow and presence. The second problem is that the more events are added to aid role-playing, the harder it is to have artistic control, making the experience into an open-world simulation instead. As both of these problems work against one another, I think we have gotten pretty much as far as we can using this kind of design.&lt;br /&gt;&lt;br /&gt;My suggestion for solving this problem is to have a limited number of actions available, but to lure players into imagining that the actual action performed was exactly the one they wanted to do. A very simple example of this can be found in games &lt;a href="http://en.wikipedia.org/wiki/Samorost"&gt;Samarost &lt;/a&gt;and &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CBsQFjAA&amp;amp;url=http%3A%2F%2Fwindosill.com%2F&amp;amp;rct=j&amp;amp;q=windowsill%20gae&amp;amp;ei=sm7RTYfXMYnn-gbO-NjrCQ&amp;amp;usg=AFQjCNGJVQdjbyweDrfzrnlIqt4zK3ohCg&amp;amp;cad=rja"&gt;Windowsill&lt;/a&gt; where the player can never in advance know what a mouse click will result in, yet when the action occurs it feels very intentional. This imagined motivation does not have to occur on a such low level though, and can include larger segments of the game. An example of this is &lt;a href="http://en.wikipedia.org/wiki/The_Path_%28video_game%29"&gt;The Path&lt;/a&gt;, where players are thrown into strange environment and forced to make up their own reasons for being there. Often this is something that is built up over a long time, yet greatly shapes how you view your entire session. I am not saying that these games are doing it the right way, only that they incorporate rudimentary versions of the ideas I am talking about, and hence can give one a basic hint of where to start from.&lt;br /&gt;&lt;br /&gt;I bet that many will think of this concept as cheating. How can tricking the player be a proper design choice? If the whole interactive experience is an illusion, how can it carry any meaning? I argue that the same is true for other media. The events that you think happen on in film are in fact illusory too. Not only in the way that they merely consist of acting, set pieces and post production effects, but that many of the actions perceived was never filmed at all. They were instead conjured in the mind, by interpreting visual and auditory stimuli. The same is true for literature, were most of the mental images are never found in the text. Despite of this we do not describe the experiences these media give us as meaningless tricks.&lt;br /&gt;&lt;br /&gt;Why "motivational imagination" sounds so strange has to do with the nature of interaction. When we watch a movie or read a book, this is passive experience where data only flow as input. But in the cycle of interaction, we are also part of creating output data. So when we create gaps of imagination for this kind of art work, we are unable to see it as a one-way stream of information, but have to include ourselves into it as well. The upside of it all, besides the solving the problem of role-playing, is that it fits neatly into same kind of concept that gaps in literature and film build upon. First of all, it contains a retroactive aspect to it, as players will need to digest a certain amount of data before settling on a certain motivation. It also forces us to make up a theory of mind, not for a fictional character, but for ourselves, inversely figuring out how we could come to a certain conclusion.&lt;br /&gt;&lt;br /&gt;With this hypothesis I am not urging people to create games that are extremely linear and only require a single input. I still believe that we can have a wide palette of interaction choices, but that we might not want to be too specific about the exact actions that ought to occur. This is actually very closely related to the concept of &lt;a href="http://frictionalgames.blogspot.com/2010/12/player-avator-symbiosis.html"&gt;player-avatar-symbiosis&lt;/a&gt; that have been discussed in an &lt;a href="http://frictionalgames.blogspot.com/2010/12/player-avator-symbiosis.html"&gt;earlier post&lt;/a&gt; on this blog. I also do not believe that this takes away anything from the experience, but only adds to it, just like the same line of thinking does to other media.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;End notes&lt;/span&gt;&lt;br /&gt;This is far from a full theory at this point, and "environmental storytelling" and "imagined motivation" are most likely not the only imaginative gaps that can be used in games. Because of this I would be very interested in getting feedback and to hear your response on this work.&lt;br /&gt;&lt;br /&gt;I would also like to point out that all of this awfully untested. It would be really interesting to see some Kuleshov-like experiments on the concept and see what kind of results can be made. It might be the case that this hypothesis does not work at all, or it might that it lead to wonderful and totally unexpected insights.&lt;br /&gt;&lt;br /&gt;I also want to add that not all kind of experiences can be created like this. The same goes for literature and movies too, where leaving too much up to the audience simply does not work. Non-fictional books is one thing that comes to mind. Still, that is not a reason to not try this out. Before we try out all options that the video game medium provide, we will have no idea what can be accomplished with it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Additional Notes:&lt;/span&gt; &lt;span style="font-style: italic;"&gt;In Scott McCloud's book &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.amazon.com/Understanding-Comics-Invisible-Scott-Mccloud/dp/006097625X"&gt;"Understanding comics"&lt;/a&gt;&lt;span style="font-style: italic;"&gt; two similar "imaginary gaps" are explored in the medium of comics. One is the literal gaps between panels, that forces the audience to complete the missing information implied to be between. This is very much like what is found in books and movies, as it forces the reader to use external knowledge and also comes with a retrospective aspect. The second gap is one of cartoon symbolism, where simply drawn characters often can be more expressive than detailed ones. Again this requires quite a bit of interpretation from the audience.&lt;br /&gt;I think this shows that the features discussed in film and book, apply to other media as well, making me more confident that they ought to play a big role in video games too.&lt;/span&gt; &lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Acknowledgments:&lt;/span&gt; &lt;span style="font-style: italic;"&gt;This essay has been greatly inspired &lt;/span&gt;&lt;a style="font-style: italic;" href="http://tale-of-tales.com/forum/viewtopic.php?p=1095&amp;amp;sid=5cf7006d8b3c29ce7fd20de4caaa4ad2#1095"&gt;this &lt;/a&gt;&lt;a style="font-style: italic;" href="http://tale-of-tales.com/forum/viewtopic.php?p=1095&amp;amp;sid=5cf7006d8b3c29ce7fd20de4caaa4ad2#1095"&gt;post&lt;/a&gt;&lt;span style="font-style: italic;"&gt; by Michael of &lt;a href="http://tale-of-tales.com/"&gt;Tale of Tales&lt;/a&gt;. If not for him I would probably have never started thinking in this direction and none of the above would have been written.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-2677991871340284079?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/2677991871340284079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/05/finding-videogames-true-voice.html#comment-form' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/2677991871340284079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/2677991871340284079'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/05/finding-videogames-true-voice.html' title='Finding videogame&apos;s true voice'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-lBfo9kZfpQo/TdGMCcK5hqI/AAAAAAAAAZo/MXxAhD4VMsI/s72-c/Siren.jpg' height='72' width='72'/><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-3253038605099594242</id><published>2011-04-29T13:57:00.021+02:00</published><updated>2011-05-02T10:25:01.529+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Portal'/><category scheme='http://www.blogger.com/atom/ns#' term='Valve'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><category scheme='http://www.blogger.com/atom/ns#' term='ARG'/><title type='text'>The Road to Valve</title><content type='html'>&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;PROLOGUE&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;On a sleepy Tuesday evening in March, Jens noticed that someone on our forum had found not only the location of his apartment, but also had the photos from Google street-view, and photos from the inside, as provided by real estate agents.  I guess there really is no right way to deal with such delicate matters, so Jens did what anyone of us would have &lt;/div&gt;&lt;div&gt;done; post the link in the company chat.  I can’t for sure remember what we made of this proposed stalker, for only moments later Thomas posted his entry:&lt;/div&gt;&lt;div&gt;“Valve is wondering if we wanna come to the Portal 2 Launch Party in Seattle, but since neither Jens or I can go, we wanted to see if anyone here would be interested.”&lt;/div&gt;&lt;div&gt;Maybe the creepy stalker turned out to be just a regular fan with a love of fine Swedish architecture, or he found some other semi-celebrity to murder.  Anyhow, it’s good that Jens is still with us, as his unfortunate departure would not only have caused some retroactive guilt, but also put a serious damper on our excitement about the upcoming trip to Seattle.&lt;/div&gt;&lt;div&gt;Out of the six people working at Frictional Games, three was going. Marc felt under the weather and chose to join Jens and Thomas to hold down the fort while Mikael (that’s me!), Luis, and Marcus, prepared for the journey.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://1.bp.blogspot.com/-mnybN3iZ0Yc/Tb5elE1wi2I/AAAAAAAAAA8/_ZUXCp4uWjM/s400/1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5602018977542867810" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;Mikael, Luis, Marcus&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;SATURDAY&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Less than a month later I stood in line to catch my connecting flight out of Frankfurt headed for Seattle. It should be noted that Frictional Games don’t have an office, so I would be meeting Marcus and Luis for the first time on the trip. Marcus would join me in Frankfurt, while Luis was flying in via Paris.&lt;/div&gt;&lt;div&gt;At first everything went smooth, I even had time to change my seat, seeing as Marcus and I hadn’t been seated together. Of course, I mixed up the rows and got a seat even further away. Marcus texted me: “I’m not gonna make the flight!” That’s bad news, I thought, as I was ushered aboard the plane. People crammed themselves into the plane and still no sight of Marcus. Then I got a text from Marcus: “I made it!” I wiggled myself into a weird stand, turned around, and caught a glimpse of his waving hand a few rows back. Looks like we won’t be seeing each other until Seattle.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;STILL SATURDAY&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;As the plane landed I said farewell to the farmer from Oregon, who I had badgered for information about Seattle, and waited for Marcus to emerge from the back rows. He smiled broadly and shook my hand.&lt;/div&gt;&lt;div&gt;“Mr. Marcus, I presume.”&lt;/div&gt;&lt;div&gt;"Yes, and I feel thankful that I am here to welcome you."&lt;/div&gt;&lt;div&gt;Those weren’t the exact words, but I feel the Stanley-Livingstone greeting is appropriate considering the long wait.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Our Russian driver dropped us off outside our hotel in Bellevue, a neighboring city to Seattle, just across Lake Washington. While checking in, I made sure to ask about Seattle and the sights in Bellevue. The concierge swiftly pulled out a map and marked all the points-of-interest for me. I did not know it yet, but I would end up with quite a few of these maps at the end of our trip.&lt;/div&gt;&lt;div&gt;Luis showed up an hour later. Having found our third team member, it all seemed to come together. Luis natural suave worked well with the joviality of Marcus and my own phlegmatic disposition. After a quiet celebration of our triumph of getting there, we faced a new problem; we had basically been awake for 30+ hours and it wasn’t even noon yet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We decided to stay in Bellevue that day and get some general shopping out of the way. The concierge pulled out another map and marked the stores of interest. We took in as much as we could of the American experience as we roamed streets and the mall near the hotel. We considered it a wild stab in the dark, but we decided to head for Game Stop and check if they had Amnesia in stock. Not only did we find a copy of Amnesia, but also the Penumbra Collection! Proud and a little full of ourselves, we went looking for food. The concierge pulled out another map, and started marking the restaurants. Despite her efforts, we ended up at Subway.&lt;/div&gt;&lt;div&gt;“Excuse me, I ordered a medium,” I said, shocked by the size of my drink.&lt;/div&gt;&lt;div&gt;“Yeah, that’s the medium,” the cashier rolled her eyes.&lt;/div&gt;&lt;div&gt;“But, what will the other guests drink?”&lt;/div&gt;&lt;div&gt;Marcus, Luis and I, eyed the huge medium cup with unease as we chowed down on our subs. The day continued and our lack of sleep became more and more apparent. Coffee didn’t help, especially not for Luis, who kept insisting on drinking hot chocolate. We made it to around 8:00 p.m. before we caved in.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;SUNDAY&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The next day happened to be the only day we really had time to do something before the whole Portal 2-mayhem started. We had to make this day count, but first some breakfast. We found our way to a diner called Palomino.&lt;/div&gt;&lt;div&gt;“Do you know what Palomino means in Spanish?” mused Luis as we waited for the food to be served. Marcus and I looked at each other with a &lt;i&gt;we are going to regret this&lt;/i&gt;-look.&lt;/div&gt;&lt;div&gt;“What?” we dared.&lt;/div&gt;&lt;div&gt;“You know, it’s like, stains in your underpants.”&lt;/div&gt;&lt;div&gt;The waitress swooped down with our food.&lt;/div&gt;&lt;div&gt;“Everything in order?” she asked.&lt;/div&gt;&lt;div&gt;“Thanks, we’re good.”&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;“How do we get to Seattle?” I asked the concierge. She seemed confused at first, perhaps as there was no reason for her to give me a map, but told me that taxis were easy to find.&lt;/div&gt;&lt;div&gt;“So, taxi is the way to go, no busses or trains?”&lt;/div&gt;&lt;div&gt;“Oh, there are busses,” she shined and circled some areas on a map. “But, it is quite the long ride, maybe an hour. Taxis take twenty minutes or so.”&lt;/div&gt;&lt;div&gt;“Taxi it is,” I said while trying to figure out if I could leave the redundant map on the counter. I tried to evade her cheerful gaze, but failed. The concierge smiled and nodded approvingly as I took the map and pocketed it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://2.bp.blogspot.com/-bO0R29nm5zo/Tb5elEaBASI/AAAAAAAAABE/wWcCqnbKbRc/s400/2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5602018977426506018" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 172px; height: 400px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;Some form of Needle&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first stop was the Science Fiction Museum, which apparently doubled as a rock museum, i.e. musical rock, not geological rocks. Personally, I feel pairing up the nerds with the bullies is a bit cruel. Perhaps it’s a part of some form of outreach program, who knows? After a strangely brief visit (not our fault, it was small) to the museum, we took the elevator to the top of Seattle’s most famous building, the Space Needle. The elevator girl yawned through her informational speech, which I assume she had repeated thousands of times before. Length, width, volume, all that good stuff, if you ever find the need to build your own Space Needle. The view was spectacular, which sort of is the point with the place. On the way down the suicidally bored elevator girl asked if we had any questions. I’ll bite, I thought and asked:&lt;/div&gt;&lt;div&gt;“That strange building on the hill…”&lt;/div&gt;&lt;div&gt;“It’s a school.”&lt;/div&gt;&lt;div&gt;“A school? It’s so big,” I interrupted.&lt;/div&gt;&lt;div&gt;“It just looks big, it’s actually quite small.”&lt;/div&gt;&lt;div&gt;“Fascinating,” I closed the conversation, staring into her dead eyes. Just before I started to wave my hand in front of her, to see if she was still with us, the elevator went: “Ding!” The doors opened and the girl ushered us outside.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We made our way down to the waterfront, passed a marina and an aquarium, and continued to Pike Place. It was a public market with vendors selling various knick-knacks, souvenirs, and fish. After dodging our way passed people and crustaceans, we emerged on the other side and headed up into the city.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://3.bp.blogspot.com/-dsVU0sp2FXU/Tb5elhwcLuI/AAAAAAAAABM/ZF6i3xkULt4/s400/3b.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5602018985305190114" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 267px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;Marcus approved!&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We strolled through the skyscraper area with an appropriate amount of awe, making us look impressed, but not too touristy, until.&lt;/div&gt;&lt;div&gt;“Hey, look at the bus!” called Marcus. Luis and I looked at the bus breaking for the traffic light up ahead. The ad splayed across the side read: Portal 2! Whatever remnants of cool we still possessed escaped us. It was a funny feeling, being proud for Valve’s sake. It was not like we had anything to do with the game itself, we still did our thing. We were still Frictional Games, yet we happily associated ourselves with the American giant. So we took some pictures.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Suddenly we noticed some people we recognized on the other side of the street. It was a group of indie-developers from Two Tribes.&lt;/div&gt;&lt;div&gt;“Are you guys coming tonight? All the indies are meeting,” they said.&lt;/div&gt;&lt;div&gt;“Right, at Joey’s, we’ll be there.”&lt;/div&gt;&lt;div&gt;“Is it true, that this is the first time you guys met?”&lt;/div&gt;&lt;div&gt;“Yeah. We don’t really have an office. Luis is not even in the same country.”&lt;/div&gt;&lt;div&gt;“That’s insane. You made Amnesia without ever meeting?”&lt;/div&gt;&lt;div&gt;“Yeah.”&lt;/div&gt;&lt;div&gt;“Weird.”&lt;/div&gt;&lt;div&gt;“Um, ok.”&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After a brief encounter with Seattle’s chinatown, we made our way back across the lake, to Bellevue and the hotel. We were starving and a place called Pagliacci Pizza would have to do.&lt;/div&gt;&lt;div&gt;“Could you pull back on the cheese… like a lot?” asked Marcus. The waiter looked puzzled and simply said yes. American food, sure was bit excessive sometimes.&lt;/div&gt;&lt;div&gt;“I’m sure we are fine. As long as Pagliacci doesn’t mean something nasty in Spanish.”&lt;/div&gt;&lt;div&gt;Luis raised his eyebrow mischievously.&lt;/div&gt;&lt;div&gt;It really didn’t mean anything, and I knew it wouldn’t. Since Pagliacci is a very famous opera about a clown, who murders his wife and her lover on stage. Which sort of goes to tell, if you are picking out a restaurant name, depressing wins over nasty every time.&lt;/div&gt;&lt;div&gt;The food was actually really good, except for the beer which was like a strange mix between apple juice and a Budweiser.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The evening finally culminated at Joey’s where we got to meet the other indie-developers. It was a nice and welcoming group which quickly turned the night into a merry event.&lt;/div&gt;&lt;div&gt;“You guys did Amnesia, without even meeting – not once?!”&lt;/div&gt;&lt;div&gt;“Yeah.”&lt;/div&gt;&lt;div&gt;“Weeeeiiiird.”&lt;/div&gt;&lt;div&gt;“Um, ok.”&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;MONDAY&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;This day would be all about Valve and the release of Portal 2. I woke up giddy as a kid on Christmas Day. At least if that kid just happened to have been doing some heavy drinking the night before. I popped a painkiller and headed downstairs to the lobby. Now to figure out how to find Valve. I felt the concierge reaching for a map behind me as one of the other indies said: “Oh, we know where it is, just follow us.”&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At Valve we were quickly ushered into a hallway where a cornucopia of food were presented to us as breakfast. Pastries, fruit, and coffee. It was enough to please even the most starving developers. On the other side of the hall was a table filled with Valve swag. Portal bags, signed copies of the game, t-shirts, companion cubes, the list goes on.&lt;/div&gt;&lt;div&gt;“Are these for the champions of the ARG?”&lt;/div&gt;&lt;div&gt;“There too many of them, they must be for us!”&lt;/div&gt;&lt;div&gt;The indies descended upon the free stuff, lifting it into the air, laughing maniacally as if receiving bounty from the gods. Slight embellishment, but we might as well had.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Time for the tour. It may come as a surprise to many, but game developer’s offices are quite conventional. I’m sure many have found out the hard way, but it simply isn’t that convenient to work inside a laser-tag course or a room fitted like a medieval castle. It usually comes down to some minor decoration – a headcrab, a turret, a gold crowbar, and so on. What did catch my attention was Gabe’s knife collection. The collection has an entire room dedicated for it and it is indeed filled with neatly displayed knives in all shapes and forms. I find it funny how readily we accept this oddity inside the offices of a successful company, while in someone’s home, we would instinctually stab the closest friend in hope his cries would distract the owner long enough to get the heck out of there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lunch was a massive joint effort and the small army of developers sieged a local restaurant to cure their hunger. Across the table sat John from Steam. We talked about this and that, also happened to mention our strange experience with American beer at the pizza place.&lt;/div&gt;&lt;div&gt;“There is some really good beer here, you just need to know where to find them,” he said and we thought little more about it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://1.bp.blogspot.com/-TsJBknH0rYc/Tb5elte2EcI/AAAAAAAAABU/Zfvxlv4xvKA/s400/4.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5602018988452614594" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 267px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;Seat hogging indies&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Everyone gathered inside a conference room for an ARG post-mortem meeting. The few chairs filled up quickly, so people ended up leaning on the walls or sitting on the floor. The place was packed, but it was a nice feeling. It felt like going to a convention, with a lot of positive and smiling people. As everyone started to share their experience with the ARG, my eyes opened up to what really had been happening. It is difficult to explain, but I felt that we might have been working too much on pleasing our fans and not the fans of Portal 2. I started to doubt our efforts, but I would soon be swayed.&lt;/div&gt;&lt;div&gt;“Jeep, when would you say you first felt like the ARG was really taking off?” asked one of the indies. It should be explained that Jeep is a man working at Valve. Not only did he spearhead the ARG, but he is also one of the original creators of Portal. Whatever he has to say, it counts for something, at least in this situation.&lt;/div&gt;&lt;div&gt;Jeep sat on the floor in a lotus position, serene like a buddhist monk.&lt;/div&gt;&lt;div&gt;“I think it was when I first saw the glyphs in Amnesia,” he answered after a moment of forethought.&lt;/div&gt;&lt;div&gt;My spirit lifted, we were in the clear. I looked over at Marcus and Luis and we shared a silent &lt;i&gt;Hell yeah!&lt;/i&gt;-moment.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We headed back to the hotel to drop off our free stuff and suddenly found ourselves in the lobby again. Valve had planned dinner at a place called Purple. No one of the nearby indies knew where it was, but it was supposed to be close by.&lt;/div&gt;&lt;div&gt;“Do not fret, for I know a way,” I said confidently,  “Concierge! We require a route to Purple!”&lt;/div&gt;&lt;div&gt;“Ooh, I found it on my iPhone,” noted another indie.&lt;/div&gt;&lt;div&gt;“Please be quiet, I’m trying to bring this whole map thing to a deserving finale.”&lt;/div&gt;&lt;div&gt;The concierge produced a final map for my collection and circled the hotel and the restaurant called Purple. It was a great moment of camaraderie. I felt a high-five coming on.&lt;/div&gt;&lt;div&gt;“I can see you guys are having a moment, but we really need to get going,” said one of the indies.&lt;/div&gt;&lt;div&gt;“Fine.”&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://3.bp.blogspot.com/-w0rvOCLaPCQ/Tb5elnsUWII/AAAAAAAAABc/Tb47b662j2E/s400/5b.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5602018986898512002" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 267px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;"It's alive!"&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After we shared a fancy dinner at Purple we made our way back to the office for the release party. The place had been transformed into a club with people dancing and drinking. We grabbed a few beers and sat down in the lounge area. Then John, the Steam guy, popped up.&lt;/div&gt;&lt;div&gt;“Hey, guys, I heard you wanted to try some fine American brew.”&lt;/div&gt;&lt;div&gt;John had brought with him some real beer and started to fill our glasses. It was truly a heartwarming experience. We were just three guys among a huge pile of indies and he really made us feel welcomed.&lt;/div&gt;&lt;div&gt;“Is it true you guys never met while making Amnesia?” he asked.&lt;/div&gt;&lt;div&gt;“We know – it’s weird,” we sighed in unison.&lt;/div&gt;&lt;div&gt;“I was gonna go with impressive, but yeah, I guess it is kinda weird.”&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://1.bp.blogspot.com/-vZpoEeMyrI4/Tb5fSwptniI/AAAAAAAAABk/boOHN-crxVM/s400/6b.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5602019762397617698" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="color:#FFFFFF;"&gt;Luis with some guy named Chet&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The evening turned out really well. As the ARG finished, Portal 2 was launched with an actual switch thrown by the Champions of the ARG. After more beer and cake (no lie), we were ready to head back to the hotel. As we were leaving, Chet Faliszek, writer at Valve, approached us.&lt;/div&gt;&lt;div&gt;“I just wanted to say, I really like what you did with Amnesia.”&lt;/div&gt;&lt;div&gt;“Really? You like our work? Are we even allowed to speak to you?”&lt;/div&gt;&lt;div&gt;“Of course, we’re peers. You made a great game, we made a great game. Simple as that.”&lt;/div&gt;&lt;div&gt;There was nothing more to be said or done. We were humbled by the great experience of visiting Valve and with good humor returned home the next day.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-3253038605099594242?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/3253038605099594242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/04/road-to-valve.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/3253038605099594242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/3253038605099594242'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/04/road-to-valve.html' title='The Road to Valve'/><author><name>Mikael Hedberg</name><uri>http://www.blogger.com/profile/15885592886284818938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-mnybN3iZ0Yc/Tb5elE1wi2I/AAAAAAAAAA8/_ZUXCp4uWjM/s72-c/1.jpg' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-21893925738088703</id><published>2011-04-27T10:40:00.005+02:00</published><updated>2011-05-16T22:52:09.510+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Portal'/><category scheme='http://www.blogger.com/atom/ns#' term='Valve'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><category scheme='http://www.blogger.com/atom/ns#' term='ARG'/><title type='text'>The Portal 2 ARG Postmortem</title><content type='html'>On Saturday morning, the 11th December, I came across a strange mail as I did my early inbox checking. The email in question was an invite from Valve, asking us to visit them on the 17th, merely 6 days away, for reasons that were quite obscure.  The only thing we knew was that it had to do with Portal 2 and that it might involve other game developers. We were of course intrigued, but at the same time a bit reluctant as we had to travel, a not short journey, in only a few days. However, after a few minutes of deep introspection, we thought "what the heck" and decided to go.&lt;br /&gt;&lt;br /&gt;Having come to this decision we were not sure if we would be able to travel though. Two years earlier it had become mandatory to have a visa in order to enter the US. Remembering the trouble we had with visas for our&lt;a href="http://frictionalgames.com/forum/thread-1994.html"&gt; trip to Moscow&lt;/a&gt;, we feared that we would not receive them in time. Luckily, it turned out that that as soon as you pay for your visa, you are free to go. No wait or anything like that. And thus, Jens and I were ready to cross the Atlantic!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-sW6yn68eX9I/Tbco0pPd-JI/AAAAAAAAAYQ/sTBAbfK0v8c/s1600/IMAG0011.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://1.bp.blogspot.com/-sW6yn68eX9I/Tbco0pPd-JI/AAAAAAAAAYQ/sTBAbfK0v8c/s400/IMAG0011.jpg" alt="" id="BLOGGER_PHOTO_ID_5599989546547542162" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;Guess what time of the year we visited...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Seattle (or Bellevue to be more exact) lies at the western American  coast and it takes about 24 hours of travel, from door to door, for us Swedes. Needless to say it is quite an exhausting trip. Added to this is a nine hour jet lag, that caused us to lie fully awake in the middle of the night (sleepless in Seattle, har har,...). And as if that was not enough I also managed to blow my left eardrum, forcing me into the weird habit of turning my right ear to face whoever spoke to me. I digress though, enough of our troubles and on with the fun stuff!&lt;br /&gt;&lt;br /&gt;The morning after the arrival we went to the Valve headquarters, situated at a 15 minute or so walk from the hotel. At the lobby we were greeted by an automated gun turret which we barely managed to sneak past, only to get ambushed, caught and forced into a meeting room full of indie developers and a few Valve employees. Everything started out with nobody, not even the Valve people, seeming to have a clue what it is all about. It was all quite ominous to be honest. At this point Gabe entered and explained the master plan, which finally made us understand the purpose of our visit. The gist of the idea was to make the community release Portal 2 and do so with the help of a bunch of indie games. Basically, a nice way to make the users take part in the release of the new Valve game and a boost in publicity for the other developers involved.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-demDscUdxzo/TbcpIdJntiI/AAAAAAAAAYY/3f_SII7VlDs/s1600/IMAG0017.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://2.bp.blogspot.com/-demDscUdxzo/TbcpIdJntiI/AAAAAAAAAYY/3f_SII7VlDs/s400/IMAG0017.jpg" alt="" id="BLOGGER_PHOTO_ID_5599989886899172898" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;By throwing a can we misdirected it and had time to slip past...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The two days planned at Valve HQ were then all about figuring out how to go about doing this. Here Valve had no clear guidelines and just basically wanted us to brainstorm all kinds of weird ideas that could be used. My and Jens' crucial question to this was of course: "Do we need to worry about age rating?". When answered with a negative, all kinds of strange ideas started brewing in our evil heads. For instance, one early idea was to have live-footage of someone being tortured (all acted of course, promise!) and make that into massive Milgram-kind-of experiment. This was scrapped for some other ideas though, which I will get back to in wee bit!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-yHn_1A2C_-U/TbcphG1PwRI/AAAAAAAAAYg/YuUwDs-RjDI/s1600/IMAG0027.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://1.bp.blogspot.com/-yHn_1A2C_-U/TbcphG1PwRI/AAAAAAAAAYg/YuUwDs-RjDI/s400/IMAG0027.jpg" alt="" id="BLOGGER_PHOTO_ID_5599990310404866322" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;The view from Valve's office is quite nice.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;Somewhere out there big foot roams...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;An important note here is that all these meetings took place without us having to sign a single NDA. This is pretty much unprecedented when dealing with big companies, who all normally require all kinds of soul-selling documents to be signed in blood before anything can be talked about. Valve also gave us full access to their IP, usage of assets for Portal and whatnot. During the visit they also allowed us to roam around the office (no ep3 found, sorry), try out an early build of Portal 2 and let us in on some other secrets (no ep3 there either, again sorry).&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-4NAAEza_Qz4/Tbcp1aiz8WI/AAAAAAAAAYo/mq2KsG-Em7Y/s1600/IMAG0016.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://2.bp.blogspot.com/-4NAAEza_Qz4/Tbcp1aiz8WI/AAAAAAAAAYo/mq2KsG-Em7Y/s400/IMAG0016.jpg" alt="" id="BLOGGER_PHOTO_ID_5599990659293639010" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;In one dark corner a strange ritual seemed to be in process.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;When meetings were done on Friday, there were tons of ideas on what to do, a very basic outline of the event flow, but still nothing very concrete. The plan was instead to let everybody think about the things discussed and to set up a wiki and mailing list where the discussions could continue. Now all what was left for us was to go home the next day. Except that did not happen. Instead Heathrow got overwhelmed by some flakes of snow and canceled all flights. We were now officially stuck and had worries whether we would make it home for Christmas or not. Fortunately, we contacted Anna at Valve who put pressure on the booking agency and got us new flights home for the very next day! In business class! Now all was good except that my ear started leaking some strange liquid (and continued doing so for the following two weeks), which I was forced to wipe off every ten minutes. Despite this we managed to get home somewhat alive on Monday night.&lt;br /&gt;&lt;br /&gt;After some rest and ear-drainage, we started to lay out plans for our part in the ARG. As we were in a tech-development phase of the next, super secret, project, the artists did not have that much to do and we figured we could let them focus on the ARG instead. This led to us coming up with the idea of a Portal game set in the universe and style of Amnesia, with the addition of a juicy perma-death mechanic. The main reason simply being that we wanted to see how it affected the level of scariness and had high hopes we would mess people up.&lt;br /&gt;&lt;br /&gt;With the above set, I threw together a basic design for the game; a sort of Saw-like trial run orchestrated by a, &lt;a href="http://en.wikipedia.org/wiki/Elizabeth_B%C3%A1thory"&gt;Báthory&lt;/a&gt;-inspired, mad young lady. At this point we did not worry too much about of the ARG puzzles, mainly because there was nothing decided, and figured we could just add it later on.&lt;br /&gt;&lt;br /&gt;My design of the add-on story "Justine" started out very basic (and honestly quite dull), but through great efforts by the rest of the team it managed to get really nice. For instance the puzzles, especially the first one, were not all that great at first, something that Jens managed to fix when scripting. Mikael, our writer, added quite a lot of depth to the initial plot and our artists, Marc and Marcus, created very nice levels and graphics out of my crummy sketches and often non-existing descriptions. Because of their endeavors me and Luis managed to stay focused on the tech  most of the time, only chipping in a bit at the end.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-5cs53KGqaqY/TbcrbPos9mI/AAAAAAAAAYw/WdByIvDVgVs/s1600/level01_cells.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 291px; height: 400px;" src="http://2.bp.blogspot.com/-5cs53KGqaqY/TbcrbPos9mI/AAAAAAAAAYw/WdByIvDVgVs/s400/level01_cells.jpg" alt="" id="BLOGGER_PHOTO_ID_5599992408712214114" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;Design sketch for first "Justine" Level. This is all the artists had to work with basically.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The ARG really picked up pace once Jeep from Valve put together a document outlining the basic steps of the meta game. It was here that the guidelines for each of the three updates were set and now we started contemplating how to add the clues to Amnesia. Our first idea was to release the "Justine" expansion at the start of the ARG and then add new elements to it at each update.  Mikael was put on designing these puzzles.&lt;br /&gt;&lt;br /&gt;As the ARG was getting closer, we started to realize that we would not have "Justine" ready until the meta-game's start date. This forced us to re-think how the different hints were added in our game (meaning the puzzle work done by Mikael had to be thrown out). Amnesia being a serious game that is all about atmosphere, we did not want to add cheeky out-of-place stuff scattered here and there; instead we wanted all hints to fit the game. The idea was now to have all of the updates in Amnesia, but to have them as elements that an unsuspecting player would take for a part of the game.&lt;br /&gt;&lt;br /&gt;In this new design, we had all three clue updates in the normal Amnesia: The Dark Descent and then for the final "crescendo" event we would release the "Justine" expansion, with the goal of having X amount of people complete to unlock our final part of the ARG. Our, somewhat sadistic, hope was the people would reluctantly force themselves through the game to complete the final part of the ARG.&lt;br /&gt;&lt;br /&gt;However, it turned out I had missed that this part of the ARG had changed (which Dan of &lt;a href="http://dejobaan.com/"&gt;Dejobaan&lt;/a&gt; pointed out to me), and was now just all about playing games instead of achieving certain objectives. This forced us to release "Justine" a bit earlier and also moved a hint, meant for the normal game, into "Justine" instead. Again Mikael was put on the task of creating the puzzles needed.&lt;br /&gt;&lt;br /&gt;The day before the ARG started, I put together a &lt;a href="http://frictionalgames.blogspot.com/2011/04/some-thoughts.html"&gt;cryptic blog post&lt;/a&gt;, with the intent of introducing the community to a character that might help and confuse them during the ARG. Our initial plan was to keep everything "in-character" according to our own sub-story, with forums posts complaining about escaped animals and the like, hopefully with people wondering what was true and what was not. Unfortunately, it was figured out very quickly that the whole thing was an ARG for Portal 2 (or at least the general Internet-consensus was this) and instead we just used the character to hand over some hints.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-sPl2n46QfqU/Tbcv1pn6etI/AAAAAAAAAZg/TL5bPyNB4vM/s1600/Screen_Screenshot_006.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://2.bp.blogspot.com/-sPl2n46QfqU/Tbcv1pn6etI/AAAAAAAAAZg/TL5bPyNB4vM/s400/Screen_Screenshot_006.jpg" alt="" id="BLOGGER_PHOTO_ID_5599997260411337426" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;The potatoes emerge from the darkness!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Finally the ARG arrived and people threw themselves over our update. This first update was really just meant to contain very little of interest, essentially only displaying a special glyph, a letter and peculiar sentence. To pad out the update a bit, and to hide the hints from people searching the new files, we added some un-exciting assets from "Justine" and a few fake hieroglyphs that were only visible to those not looking for the glyphs in-game. It turned out that almost no attention was paid to the important content though, instead most people were extremely excited about the "Justine" assets, some even convinced that a new secret level was hidden somewhere (and found several plausible locations for this lost place). The hieroglyphs also turned out to be more interesting than the correct glyph, and people even started to decipher their meaning. I actually felt a bit bad about this, and even though no ancient Egyptian expertise would be needed, we decided to use the glyphs somehow in later updates.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-K60AQckrODw/TbcsHVHrFhI/AAAAAAAAAY4/EPfMNMXJNVc/s1600/glyph%252Bfalska.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 293px; height: 293px;" src="http://2.bp.blogspot.com/-K60AQckrODw/TbcsHVHrFhI/AAAAAAAAAY4/EPfMNMXJNVc/s400/glyph%252Bfalska.jpg" alt="" id="BLOGGER_PHOTO_ID_5599993166098535954" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;14 hieroglyphs, 1 ARG glyph, and one strange Marc:ian sign.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;This brings us to the second update, in which we were supposed to have some minor Portal hints. Our choice of hint was to project the shadow of one of the Portal 2 robots onto a wall in the start menu. My hope was that people would take a screenshot, and make photoshop-enhanced images, ala &lt;a href="http://www.youtube.com/watch?v=IJjUt2sXo5o"&gt;big foot footage&lt;/a&gt;, with heated discussions on what it look like ensuing. That did not work out as planned of course, and instead someone found the actual texture, where the portal 2 robot was clearly visible, even before it was spotted in the menu. Our evil plan was spoiled. Lesson learned: always hide the fun stuff!&lt;br /&gt;&lt;br /&gt;The shadow of a robot was not all that was part of the second update though. We had also added some clues, that lead up to a special steam overlay and a password for &lt;a href="http://twotribes.com/message/rush/"&gt;Rush&lt;/a&gt;. At first these clues where all simply in a note and a clear voice message. But as we thought it was so fun to watch people trying to crack the riddles and search our files at the first update, we decided to add more content and make the puzzles a bit harder. This was accomplished by encrypting the (already cryptic) text with a non-standard substitution cipher and by adding some noise and effects to the voice message. Along with this we also added four rar files, one of which could be opened by solving a puzzle involving the previously mentioned hieroglyphs and some knowledge of the Cthulhu mythos. The first rar then contained a password to the next rar and so on. Each rar file also contained a text and image that would tease about the soon to come "Justine" add-on story. Unfortunately, pretty much nobody bothered about discussing these bits. Either people were too caught up in solving the puzzle (only seeing the texts and images as means to an end) or they were not that interested into solving the puzzle and did not pay attention to what was uncovered.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-7indhRKMCP4/Tbcu-umgixI/AAAAAAAAAZY/xgsHjXdAoYc/s1600/001.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 282px;" src="http://4.bp.blogspot.com/-7indhRKMCP4/Tbcu-umgixI/AAAAAAAAAZY/xgsHjXdAoYc/s400/001.jpg" alt="" id="BLOGGER_PHOTO_ID_5599996316854815506" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;One of the hidden pictures that nobody cared about.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;As we added these new stuff, especially the hieroglyph-related puzzle (that was written on a wall) and the encrypted note, I think that we might have disturbed the atmosphere a tiny bit too much. The encrypted note uses a cipher that could have been used in the 19th century, but still feels a bit out of place. The (hidden) writing on the wall is even worse as it does not really makes sense in the game's world. I think they did not interfere  with many (if any?) people's experience in the end though. Still, it is worth thinking about the impact that this kind of stuff has on the normal game, even if it is just a for a limited time.&lt;br /&gt;&lt;br /&gt;A few days later it was time to release update 3, which meant putting "Justine" online. As the ARG hint was unlocked by making a perfect run through the game, some precautions were put in. First of all, the maps and script files where compressed and encrypted, thus not allowing any editing or peeking. This together with some other safe-guards also ensured that the maps could not be chosen individually and needed to be played in the set order. Finally, some important assets like the game config and enemy files were given CRC checks to make sure they were not meddled with. Even so, someone figured out that enemies could be disabled by renaming their folder after the game was booted (when the CRC checks had been made). Tricky bastards...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-OcKDVyt_fkA/Tbcst8tUR_I/AAAAAAAAAZA/KjwClfbVaT4/s1600/Screen_Screenshot_025.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://1.bp.blogspot.com/-OcKDVyt_fkA/Tbcst8tUR_I/AAAAAAAAAZA/KjwClfbVaT4/s400/Screen_Screenshot_025.jpg" alt="" id="BLOGGER_PHOTO_ID_5599993829560436722" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;Bug testing in progress...&lt;/span&gt; &lt;span style="font-size:85%;"&gt;(you might wanna enlarge it by clicking)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;With update 3 out and us having checked that it ran okay (we added some fixes the day after release), we could relax more and did not take as much part in the ARG as we had earlier. A few days later the final crescendo part of the ARG started, where all the games taking part in the ARG needed to be played in order to awaken GLaDOS. It was really fun to see how our game's bar went the slowest. People afraid to play = mission accomplished!&lt;br /&gt;&lt;br /&gt;It has been great fun taking part in the Portal 2 ARG. Being on a project together with other indie devs and Valve, trying to figure out tricky riddles, lurking in IRC channels, etc, have all been awesome. Apart from all the jolly good fun, there have also been financial rewards to this. Amnesia sales alone went up a lot during the ARG, and we were on the Steam 20-top for quite a while. The first two days of income pretty much paid for all work put into the "Justine" add-on story. Now as the ARG and sale is over, our daily sales have almost doubled, so not only did we get boost during the event, it also had a lasting effect on people's awareness of Amnesia.&lt;br /&gt;&lt;br /&gt;If you are interested in reading more about the puzzles that were part of Amnesia or any other game's updates for that matter, head over to the &lt;a href="http://valvearg.com/wiki/Valve_ARG_Wiki"&gt;ARG Wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also make sure to check out the other postmortems written by some of the developers that took part in the event:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.killingfloorthegame.com/potato-arg-a-kf-postmortem/"&gt;Tripwire (Killing Floor)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twotribes.com/message/what-we-did-for-the-portal-2-arg/"&gt;Two Tribes (Toki Tori and Rush)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.theballthegame.com/?page_id=1219"&gt;Teotl Studios (The Ball)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.hiddenpath.com/blog/18/"&gt;Hidden Path (Defense Grid)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.gaijingames.com/?p=2255"&gt;Gaijin Games (Bit Trip Beat)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.lazy8studios.com/2011/Portal2_ARG_puzzles"&gt;Lazy 8 Studios (Cogs)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-MoGnec7GFA8/TbcuBVEfTyI/AAAAAAAAAZQ/qN_j9a3TDTE/s1600/image.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 245px;" src="http://2.bp.blogspot.com/-MoGnec7GFA8/TbcuBVEfTyI/AAAAAAAAAZQ/qN_j9a3TDTE/s400/image.jpg" alt="" id="BLOGGER_PHOTO_ID_5599995262029221666" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;Here be indies!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;(photo cred: Dan Brainerd)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;A final note: For those that do not have Steam, "Justine" is coming... soon...and there will be surprises!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-21893925738088703?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/21893925738088703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/04/portal-2-arg-postmortem.html#comment-form' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/21893925738088703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/21893925738088703'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/04/portal-2-arg-postmortem.html' title='The Portal 2 ARG Postmortem'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-sW6yn68eX9I/Tbco0pPd-JI/AAAAAAAAAYQ/sTBAbfK0v8c/s72-c/IMAG0011.jpg' height='72' width='72'/><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-9135436071250945854</id><published>2011-04-12T21:43:00.005+02:00</published><updated>2011-05-16T22:52:33.795+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='amnesia'/><title type='text'>Amnesia: The Dark Descent gets a free expansion!</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-PWvaGx5Aoy8/TaSr6faORwI/AAAAAAAAAYI/ulxQNuRA3As/s1600/menu.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 390px; height: 292px;" src="http://2.bp.blogspot.com/-PWvaGx5Aoy8/TaSr6faORwI/AAAAAAAAAYI/ulxQNuRA3As/s400/menu.jpg" alt="" id="BLOGGER_PHOTO_ID_5594785658453247746" border="0" /&gt;&lt;/a&gt;&lt;a href="http://store.steampowered.com/app/57300/"&gt;Amnesia on Steam&lt;/a&gt; now comes with with 20% more horror and 10% less cake. Enjoy this brand new flavor of canned horror - manufactured with license by Aperture Science.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(Might contain traces of potatoes)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;UPDATE&lt;/span&gt;:&lt;br /&gt;Now with the Portal 2 ARG over, we will release the new content, an add-on story called "Justine", for all non-steam versions of the game aswell. And there might be other surprises too ;)&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-9135436071250945854?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/9135436071250945854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/04/amnesia-dark-descent-gets-free.html#comment-form' title='68 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/9135436071250945854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/9135436071250945854'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/04/amnesia-dark-descent-gets-free.html' title='Amnesia: The Dark Descent gets a free expansion!'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-PWvaGx5Aoy8/TaSr6faORwI/AAAAAAAAAYI/ulxQNuRA3As/s72-c/menu.jpg' height='72' width='72'/><thr:total>68</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-1306117554839885502</id><published>2011-04-07T23:40:00.005+02:00</published><updated>2011-05-16T22:53:02.438+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARG'/><title type='text'>Call for assistance</title><content type='html'>&lt;span style="font-style: italic; font-weight: bold;"&gt;Note:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The following was all part of the Portal 2 ARG that we participated in and is not really important any longer. Keeping it for historical reasons.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So I just awoke to what can only be described as manic giggling and intense keyboard mashing. First thinking it was hallucinations caused by recent days' fumes I ignored it. But it would not go away and I finally went up to investigate. What I found was that my desk was spattered with fresh blood and mucus, something I spent the last minutes cleaning up with high pressure hose (we installed one after the "Sottoth-incident").&lt;br /&gt;&lt;br /&gt;Anyhow, this can only mean that one of the old specimens, subject H, has escaped once again. How he did manage to pick the lock without any fingers boggles the mind. I guess he always did have dexterous feet though. Once we catch him there will no more of that though.&lt;br /&gt;&lt;br /&gt;In any case, if anybody spots strange messages on the forum or whatnot, please ignore them and just report back to me or anyone at FG. I assure you anything that subject H says is all just a mad animal's ramblings. Nothing to take any note of. Would be great if you all could help me catch the bugger.&lt;br /&gt;&lt;br /&gt;Oh, well time for placing some bear traps I guess!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS: Good news from Razer, looks like &lt;a href="http://www.facebook.com/pages/Frictional-Games/212416275440#%21/notes/razer/deadly-lasers-and-you/10150210180270943"&gt;the problems are fixed now&lt;/a&gt;. To all those that have reported missing limbs: we are working on finding (somewhat) fresh replacements!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PSS: What in god's name is that in my shoes!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-1306117554839885502?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/1306117554839885502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/04/call-for-assistance.html#comment-form' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/1306117554839885502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/1306117554839885502'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/04/call-for-assistance.html' title='Call for assistance'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-8911690195342212404</id><published>2011-04-01T17:39:00.006+02:00</published><updated>2011-05-16T22:53:17.105+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARG'/><title type='text'>Some thoughts</title><content type='html'>&lt;div style="text-align: center; color: rgb(255, 0, 0);"&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: rgb(255, 255, 255); font-weight: bold; font-style: italic;"&gt;Note:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255); font-style: italic;"&gt;The following was all part of the Portal 2 ARG that we participated in and is not really important any longer. Keeping it for historical reasons.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:180%;"&gt;{DELETED BY MODERATOR}&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-8911690195342212404?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/8911690195342212404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/04/some-thoughts.html#comment-form' title='34 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/8911690195342212404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/8911690195342212404'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/04/some-thoughts.html' title='Some thoughts'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><thr:total>34</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-1416389879495070293</id><published>2011-03-25T19:00:00.005+01:00</published><updated>2011-05-16T22:53:37.618+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Some Industry Reflections</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-toJ1IIIH2ac/TYzXOPngRgI/AAAAAAAAAX4/oPGgJwKnycg/s1600/Seer-Crystal-Ball-Clouds-0101.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 252px; height: 187px;" src="http://3.bp.blogspot.com/-toJ1IIIH2ac/TYzXOPngRgI/AAAAAAAAAX4/oPGgJwKnycg/s400/Seer-Crystal-Ball-Clouds-0101.jpg" alt="" id="BLOGGER_PHOTO_ID_5588077877370308098" border="0" /&gt;&lt;/a&gt;One thing I have been thinking about recently, is the direction in which the indie game scene seems to be heading. This is something that can be seen in upcoming of games, various talks, articles and what is considered the largest recent successes. It is a direction that might have large consequences for the future of the medium.&lt;br /&gt;&lt;br /&gt;Quickly summed up, there is a strong design trend of making games by iterating and extending a fun core gameplay mechanic. This is then incorporated to a game with heavy emphasis on re-playability and/or ease to make levels. The main perks of this approach being that the game becomes more fun to create (as you can have fun at a very early stage), it makes it easier to home in on a "fun" core and allows for an early beta to be released (thus allowing feedback and income to trickle in before completion). This is of course a rough outline of the trend, but I still think it represent the main gist of where the industry of indie game development is heading.&lt;br /&gt;&lt;br /&gt;Designing a game like this is of course perfectly fine. It makes sense financially and personally. By having a game where the fun comes in at a very early stage, it is much easier to discard bad ideas and figure out the best way to do things. Getting some kind of income before completion can be crucial for a start-up company, which is much easier when having an early playable version. Betas/alphas also help building a community and spreading the word. On the personal side, motivation comes a lot easier when almost every added feature add something to the gameplay and change is easily tracked. This can make up for other not so motivational aspects of being an indie (low income, non-existing security, bad working conditions, and so on and so forth). Summed up, making games like this make a lot of sense and it is not strange that it is a wide-spread trend.&lt;br /&gt;&lt;br /&gt;However, what troubles me is that this kind of development is seen by most as THE way to design a game. While of course many great videos games can (and have!) come out of this manner of creation, it is not the only way to go about. I believe that doing games this way makes it impossible to do certain type of video games and to expand the medium in a way that I personally think is the most exciting. Because of the focus on instant gratification, gameplay will pull towards a local maximum and only take short term value into account. This disqualifies videogames that focus on more holistic experiences or has a non-trivial pay off (for instance, lowlevel gameplay that only becomes engaging in a certain higher-level context).&lt;br /&gt;&lt;br /&gt;As an example of this, after finalizing the basic mechanics, it took six months before &lt;a href="http://amnesiagame.com/"&gt;Amnesia: The Dark Descent&lt;/a&gt; became a somewhat engaging experience.  Note that this time was not spend on perfecting the mechanics but on building the world in which they existed. Without the proper context, Amnesia's core mechanics are quite boring and it took additional layers, such as the sound-scape, high fidelity graphics, etc, to bring it home. With this I am not saying that Amnesia is the way forward for the medium. I am simply saying that a videogame like Amnesia could not have been made using the type of development that a large chunk of the indie scene (and mainstream for that matter too) is currently advocating!&lt;br /&gt;&lt;br /&gt;Another thing that has also struck me is how many people that are interested in videogames with experiences not solely focused on a fun core. For example at GDC, we met many people, from many different places in the industry, saying how much they liked the game because of its non-gamey aspects. Also, most of the random people that we "dragged" in to the booth were very interested in this kind of experience and often surprised that videogames like Amnesia even existed. We have also seen this kind of response across the Internet, with many people wishing there were more games focusing on these aspects. Again, I am not saying that this means Amnesia is some candle bearer into the future. What I am saying is that there was an overwhelmingly positive attitude towards the kind of games where a fun core mechanic was not the focus.&lt;br /&gt;&lt;br /&gt;However, because the current trend of developing games, this potential market will most likely go without many games.&lt;br /&gt;&lt;br /&gt;A positive consequence of this is that it creates a potentially very profitable niche with almost no competition. So while the preferred way of making games might be more secure, these projects will be launched in an extremely competitive environment. I think this evens out some (all?) of the risks involved in a development not focused on quickly iterating fun mechanics.&lt;br /&gt;&lt;br /&gt;A negative, possible devastating, consequence is that the lack of these kinds of video games might remove the market altogether (or at least limit it to a very niche one). What I mean here is that if the general population's view on view games is that they are just about "cheap thrills", people will never bother looking for anything else. Thus most people who would have been interested in more holistic video games, will never be exposed to them. In a worst case scenario, this would mean that these kind of game will pretty much be stopped being made.&lt;br /&gt;&lt;br /&gt;I consider this is something worth thinking about and believe the critical cross road will come very soon. The video games we decide to make today, will shape the future for quite some time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;End note:&lt;/span&gt; &lt;span style="font-style: italic;"&gt;For those wonder what other ways of designing games there might exist, check &lt;/span&gt;&lt;a style="font-style: italic;" href="http://frictionalgames.blogspot.com/2010/02/exploring-deeper-meaning-in-games.html"&gt;this post&lt;/a&gt;&lt;span style="font-style: italic;"&gt; as a starter.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-1416389879495070293?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/1416389879495070293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/03/some-industry-reflections.html#comment-form' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/1416389879495070293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/1416389879495070293'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/03/some-industry-reflections.html' title='Some Industry Reflections'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-toJ1IIIH2ac/TYzXOPngRgI/AAAAAAAAAX4/oPGgJwKnycg/s72-c/Seer-Crystal-Ball-Clouds-0101.jpg' height='72' width='72'/><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-2398678622281309669</id><published>2011-03-18T15:50:00.002+01:00</published><updated>2011-05-16T23:07:50.506+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><category scheme='http://www.blogger.com/atom/ns#' term='amnesia'/><category scheme='http://www.blogger.com/atom/ns#' term='post-mortem'/><title type='text'>Birth of Monster. Part 2.</title><content type='html'>&lt;span style="font-style: italic;"&gt;(Not read part 1? Do so &lt;/span&gt;&lt;a style="font-style: italic;" href="http://frictionalgames.blogspot.com/2011/03/birth-of-monster-part-1.html"&gt;here&lt;/a&gt;&lt;span style="font-style: italic;"&gt;.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Molding the Abomination&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;by Olof Strand (&lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.olofstrand.com/"&gt;www.OlofStrand.com&lt;/a&gt;&lt;span style="font-style: italic;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As a modeler the first thing I noted about this character was that the concept design demanded it to be completely unique in all of its parts. Usually it is possible to mirror some parts (e.g. an arm, a leg or some cloth piece) to save texture space and maybe some production time when modeling game characters.  Not so this time.&lt;br /&gt;&lt;br /&gt;The character was based on a human body type with various deformities and modifications done to it. This meant that I could easily use a regular human base mesh as a starting point. Using already existing meshes as a starting point is, when possible, very important for production efficiency.&lt;br /&gt;&lt;br /&gt;Another thing that needed to be taken into consideration was how the character would be rigged for animation later on. In this case the rig would be shared with another character from the game and therefore needed to be built under certain specifications (joints in specific places, etc).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-oWk2yK7OTWo/TYNrfUCwf7I/AAAAAAAAAWw/5iVnsaaeATY/s1600/model_01_basic_mesh.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 246px; height: 265px;" src="http://3.bp.blogspot.com/-oWk2yK7OTWo/TYNrfUCwf7I/AAAAAAAAAWw/5iVnsaaeATY/s400/model_01_basic_mesh.jpg" alt="" id="BLOGGER_PHOTO_ID_5585426148569939890" border="0" /&gt;&lt;/a&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal; text-align: center; font-style: italic;"&gt;&lt;span style="font-size:85%;"&gt;The basic mesh created before importing into Zbrush.&lt;/span&gt;&lt;span style="font-size:85%;"&gt; (Click to enlarge.)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;When the the base modeling was done, the mesh was taken into Zbrush for a sculpting pass. The purpose of the sculpting pass is to create details that can be projected on to the final in-game mesh to make it look more detailed than it really is. Since the proportions and general shape where already defined on the base-mesh these should not be changed too much and mostly only minor details were added.&lt;br /&gt;&lt;br /&gt;All the separate parts of the base-mesh where imported into Zbrush as separate sub-tools. This made it easy to hide, show and mask parts off.  It was also possible to assign different materials to the separate parts as a visual aid. In Zbrush the mesh was subdivided several times giving me more polygons to work with. Once there was enough polygons, new details and shapes could be added by pulling, pushing and using other various tools, almost as if it was a piece of clay.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-437-b4cMkas/TYNsBXLx8cI/AAAAAAAAAW4/Rmb5jqv80mw/s1600/model_02_zbrush.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 142px;" src="http://4.bp.blogspot.com/-437-b4cMkas/TYNsBXLx8cI/AAAAAAAAAW4/Rmb5jqv80mw/s400/model_02_zbrush.jpg" alt="" id="BLOGGER_PHOTO_ID_5585426733528641986" border="0" /&gt;&lt;/a&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal; text-align: center; font-style: italic;"&gt;&lt;span style="font-size:85%;"&gt;The different subdivision levels in z-brush.&lt;/span&gt;&lt;span style="font-size:85%;"&gt; (Click to enlarge.)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;When the sculpting was done the lowest subdivision level was exported in obj-format to use as a starting point for the final low-polygon in-game mesh. The reason to make a new low polygon mesh and not use the mesh from sculpting is to optimize the number of polygons in the final mesh. This can be very important for performance when added in the game. The mesh used as a base when sculpting has a a relatively uniform tessellation (distribution and a size of polygons) and mostly a quad layout of the geometry (meaning that most polygons are four sided). The in-game mesh then had to be modified to only have geometry where it was needed. By doing this,  more details could be added where really needed without decreasing any performance of the final mesh. This process is sometimes called retopologizing and can be done several different ways. Some people like to use the specialized retopologizing tools within Zbrush, but I personally like to use the regular modeling tools in my 3d software.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-wijHc4vYKjo/TYNsVG2T6aI/AAAAAAAAAXA/dk7prSkX-hI/s1600/model_03_final_lowpoly.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 226px; height: 245px;" src="http://1.bp.blogspot.com/-wijHc4vYKjo/TYNsVG2T6aI/AAAAAAAAAXA/dk7prSkX-hI/s400/model_03_final_lowpoly.jpg" alt="" id="BLOGGER_PHOTO_ID_5585427072741009826" border="0" /&gt;&lt;/a&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal; font-style: italic; text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;The final version of the low polygon mesh.&lt;/span&gt;&lt;span style="font-size:85%;"&gt; (Click to enlarge.)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;When the modeling was done it was time to create the uv-map. A uv-map is basically a way to show where parts of model belong on a flat surface, the texture. This is called a projection, and in this case a 3D to 2D one (the model is in 3D and the texture 2D). Unless the 3D object is a very simple one (like cube or plane) this is a very tricky operation and it is almost impossible to maintain the same ratios as on the model. A good example of this is to look at the various ways our planet earth (a 3D object) has turned into maps (a 2D surface) and all of the distortions and/or strange layouts that follow.&lt;br /&gt;&lt;br /&gt;There are some conventions that should be followed when laying out this uv-map. The most important is probably to make sure to put seams (places where polygons split up during the 3d to 2d projection) in places where they are not very visible. This since it is often very hard to match up colors of pieces not next to one another on the texture. Seams can also mess up shading when using normal maps. On a humanoid character a good place to put them could be on the inside of the arms and legs for example. This character also have some irregular areas that have to be given some extra thought. For example the head had an unusual shape making the uv-mapping extra tricky. Once the placement of seams in the uv-map have been established the chunks where laid out to maximize the use of the texture space.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-fEwSMsYOFNg/TYNtIe9FnBI/AAAAAAAAAXI/bXWh5M-lfqE/s1600/model_04_uv_map.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 309px; height: 309px;" src="http://4.bp.blogspot.com/-fEwSMsYOFNg/TYNtIe9FnBI/AAAAAAAAAXI/bXWh5M-lfqE/s400/model_04_uv_map.jpg" alt="" id="BLOGGER_PHOTO_ID_5585427955385211922" border="0" /&gt;&lt;/a&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal; font-style: italic; text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;The uv-map layout.&lt;/span&gt;&lt;span style="font-size:85%;"&gt; (Click to enlarge.)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;Before starting the actual texturing work I generated colors for some of the texture maps from information in the high poly mesh. The textures produced this way were the normal map and an ambient occlusion (AO) map. The normal map gives the mesh some extra detail and makes it seem like it is made up from more polygons than it really is. The AO map was to be blended into the diffuse (the base color) texture to give a greater sense of detail and form. Basically, AO is a calculation of how much light reach each point on the mesh, making creases darker and pointy details brighter.&lt;br /&gt;&lt;br /&gt;The diffuse map represent the base color of the character and was created in Photoshop by using a mix of various photos, custom Photoshop brushes and the previously mentioned AO map. The diffuse map was extra important as it was also used as a base for creating some other maps like the specular and gloss map. These two are black and white maps that control how light will affect the model. Specular determines the strength of  shininess on an areas and gloss how sharp the shininess is. Some of the detail in the diffuse was also used to add extra details in the normal map, like wrinkles and scars.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-LGvV5L1z1tk/TYNuY9nyjbI/AAAAAAAAAXQ/Uwd4Ut52Yac/s1600/model_05_texture_maps.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 100px;" src="http://3.bp.blogspot.com/-LGvV5L1z1tk/TYNuY9nyjbI/AAAAAAAAAXQ/Uwd4Ut52Yac/s400/model_05_texture_maps.jpg" alt="" id="BLOGGER_PHOTO_ID_5585429338006916530" border="0" /&gt;&lt;/a&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal; font-style: italic; text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;The final normal, diffuse, specular and gloss maps. Notice that all use the uv-map layout as base.&lt;/span&gt;&lt;span style="font-size:85%;"&gt; (Click to enlarge.)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;Once the texture was completed, the model was ready to be used in-game!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-4InjFwYvrVM/TYNu10PidcI/AAAAAAAAAXY/oDUE_btHb3U/s1600/model_06_renderings.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 88px; height: 400px;" src="http://3.bp.blogspot.com/-4InjFwYvrVM/TYNu10PidcI/AAAAAAAAAXY/oDUE_btHb3U/s400/model_06_renderings.jpg" alt="" id="BLOGGER_PHOTO_ID_5585429833705485762" border="0" /&gt;&lt;/a&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal; font-style: italic; text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;Renderings of final model using different setups of texture maps.&lt;/span&gt;&lt;span style="font-size:85%;"&gt; (Click to enlarge.)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;It's Alive!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;By Thomas Grip (&lt;a href="http://frictionalgames.com/"&gt;Frictional Games&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Before the model could be used in game, some other things was required. First the model needed to be rigged and skinned, a process where the mesh is connected to a skeleton. This skeleton then need to get animations and not until that was done where we able to get a it into the game. This job was made in part internally and partly by an external company. There were a lot of job put into this, but is unfortunately outside of the scope of the article. To some sum things up: we got the creature moving and it was now time to put inside the game.&lt;br /&gt;&lt;br /&gt;For Amnesia: The Dark Descent we use a proprietary engine called HPL2 which is a vastly improved and revised version of the engine that powered the Penumbra games (although quite old now as we are developing version 3 of the engine for our upcoming game). It uses a rendering algorithm called deferred shading at its core, a technique that is very useful when rendering lots of lights. It works by drawing out the the normals, depth, specular and diffuse colors to separate buffers and then use these to calculate the final color of a light. Normally when drawing a light, all models that intersect with the light needs to be found and then redrawn based on the light's properties. The nice thing about deferred shading is that models are only need to be drawn once, saving tons of rendering time and allowing  more predictable frame rate.&lt;br /&gt;&lt;br /&gt;Amnesia: The Dark Descent can be a quite dark game in places, sometimes making it hard to see enemies properly. To remedy this we added a rim lighting algorithm that made the creature's outline light up when in dark areas. This proved extremely moody and when walking in dark passages the player could suddenly get a glimpse of disturbing silhouette slouching off in the distant. After this final touch, our creature was ready to frighten unknowing players!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-HPO6K_gakcQ/TYNvfVdTYuI/AAAAAAAAAXg/hslmNC-BWTE/s1600/render_01_rim_lighting.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 235px; height: 132px;" src="http://2.bp.blogspot.com/-HPO6K_gakcQ/TYNvfVdTYuI/AAAAAAAAAXg/hslmNC-BWTE/s400/render_01_rim_lighting.jpg" alt="" id="BLOGGER_PHOTO_ID_5585430546996224738" border="0" /&gt; &lt;/a&gt;&lt;p style="margin-bottom: 0cm; font-weight: normal; font-style: italic; text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;In-game screenshot showing of the rim-lighting on the creature. (Click to enlarge.)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;Hopefully this article will give you some insight into the work that it took to create an enemy for our game. It was quite a long process and took several months from idea to finished asset but we think the final result is well worth it!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-s5-HoKC1LOg/TYNv2-t3YrI/AAAAAAAAAXw/8QXrEqnw2Ng/s1600/grunt2.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 505px; height: 284px;" src="http://4.bp.blogspot.com/-s5-HoKC1LOg/TYNv2-t3YrI/AAAAAAAAAXw/8QXrEqnw2Ng/s400/grunt2.jpg" alt="" id="BLOGGER_PHOTO_ID_5585430953208537778" border="0" /&gt;&lt;/a&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal; font-style: italic; text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;An in-game screenshot of the final rigged model in a scene.&lt;/span&gt;&lt;span style="font-size:85%;"&gt; (Click to enlarge.)&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-2398678622281309669?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/2398678622281309669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/03/birth-of-monster-part-2.html#comment-form' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/2398678622281309669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/2398678622281309669'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/03/birth-of-monster-part-2.html' title='Birth of Monster. Part 2.'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-oWk2yK7OTWo/TYNrfUCwf7I/AAAAAAAAAWw/5iVnsaaeATY/s72-c/model_01_basic_mesh.jpg' height='72' width='72'/><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-560788776643993371</id><published>2011-03-17T16:50:00.005+01:00</published><updated>2011-05-16T23:07:29.758+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><category scheme='http://www.blogger.com/atom/ns#' term='amnesia'/><category scheme='http://www.blogger.com/atom/ns#' term='post-mortem'/><title type='text'>Birth of a Monster. Part 1.</title><content type='html'>&lt;span style="font-style: italic;"&gt;(The following was supposed to be an article in a Russian magazine, but was never published. So because of that, I decided to post it on the blog instead. It was written in June 2010 by myself, Jonas Steinick Berlin and Olof Strand. Jonas and Olof were working as contractors for &lt;a href="http://www.frictionalgames.com/"&gt;Frictional Games&lt;/a&gt; at the time.&lt;/span&gt; )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-pV1tMM5Qtws/TYIum5Z-Z_I/AAAAAAAAAWg/mSaoxeNjdU8/s1600/Amnesia%2Bmonster.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 213px;" src="http://2.bp.blogspot.com/-pV1tMM5Qtws/TYIum5Z-Z_I/AAAAAAAAAWg/mSaoxeNjdU8/s400/Amnesia%2Bmonster.jpg" alt="" id="BLOGGER_PHOTO_ID_5585077733672511474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Creating Unspeakable Guidelines&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;by Thomas Grip (&lt;a href="http://www.frictionalgames.com/"&gt;Frictional Games&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following article outlines the process of creating a creature model from scratch for our first person horror game &lt;a href="http://amnesiagame.com/"&gt;Amnesia: The Dark Descent&lt;/a&gt;. It will go through the basic thinking that went into the design of the enemy, how the concept images where made, how the mesh was built and finally how it was put into the game. For this work we used two extremely talented external artists and they have themselves outlined how their horrific creations came about below and it a future part. Before moving on to their work though, I will detail the thinking that went into the basic design of the creature.&lt;br /&gt;&lt;br /&gt;When creating a horror game, making sure that the antagonistic creatures are properly designed is an extremely important issue. One wants to make sure the player faces something that feels frightening and works with the game's atmosphere and story. Another important aspect is to make sure that the enemy fits with gameplay. Certain movements might be required and it needs to fit, size-wise, into certain environments and situations. Finally you need to make sure that it is within the constraints of the available resources, something that is really important for small company such as ours. Having these three guidelines in mind I will now walk through the process of coming up with the core requirements for the enemy codenamed “Servant Grunt”.&lt;br /&gt;&lt;br /&gt;My favorite way to go about when creating a creature is to take something normal and then add a disturbing twist to it. I also wanted some kind of character that the player could easily project agency to and believe it has motivations, imagining it more alive than it might actually be. Because of this I decided that we use some kind of human or at least humanoid entity, which is a shape that is easily recognizable (no other animal walks like a human) and which we all assume have feelings, desires and motives.&lt;br /&gt;&lt;br /&gt;The problem with having a creature which gets the characteristics of a human projected on to it, is that the player will also assume it is intelligent. Because game AI is notorious for doing stupid things, this could easily break immersion. Having enemies do simple tasks like opening doors, avoiding obstacles and investigating strange noises in a believable human-like way is very hard to do. Hence, we had to have something in the design that hinted of stupidity, making it part of the immersion were the enemy to do something silly. Usually this means making something zombie-like, but I really did not want have something that cliché. This mean that I wanted the creature should look and feel stupid, yet still be as far away from a zombie as possible.&lt;br /&gt;&lt;br /&gt;Avoiding clichés is usually something that ones does to keep things fresh, but in horror games a lot more is at stake. It is vital that the player does not feel familiar with the dangers faced as it drastically decreases fear and tension. It is when we are unsure about something and not able to predict or makes sense that true terror really emerges. For example, when building one of the game's maps, there was a vast difference in perceived horror between using an old, familiar enemy model from &lt;a href="http://www.penumbragame.com/"&gt;Penumbra &lt;/a&gt;(our previous game) and the new one discussed in this article.&lt;br /&gt;&lt;br /&gt;Gameplay-wise the main constraint was that it had to walk in some human-like fashion and not crawl or move on all fours. This because we wanted to have a base collision that could easily fit into a cylinder, making it easier to code. For the first Penumbra game, we had dogs as the main enemy which, because they where four-legged, caused tons of issues. Something we wanted to avoid that this time around. Making sure implementation of the enemy is simple ties into saving resources. It was crucial that we did not want to have too many unknown factors when making the enemies. By making sure that most of the game's elements where familiar to us, we could much easier assure that we kept to the timetable and could spend time on polishing other parts of the game instead of trying to find AI bugs.&lt;br /&gt;&lt;br /&gt;It was actually not until all of the above was determined that I started to figure out the story behind the creatures. This is not always the way we do it in our games, but this time it fit very well. Our basic story designs only referred to the enemies as “the servants” and did not talk much about their appearance or where they came from, so I had a lot of freedom to make a fitting background story to the guidelines. The finalized idea was that these “servants” were actually beings from beyond that had been summoned into bodies of humans. Once inside humans, they did their best to deform the host into a body that they are used to control, shattering bones, tearing flesh and producing cancer-like growths. This in turned resulted in a scene where the player witness how some humans under great pain are taken over, showing how designing graphics can shape the story, as well as the reverse.&lt;br /&gt;&lt;br /&gt;With these basic guidelines completed, I contacted Jonas to start on the concept art.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Conceptualizing the Horror&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;by Jonas Steinick Berlin&lt;/span&gt; &lt;span style="font-style: italic;"&gt;(pudjab [at] hotmail [dot] com)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thomas gave me almost full creative freedom. The basic guidelines were that it had to be a humanoid and nothing like standard zombies, "The Infected" in Penumbra: Black Plague or the creatures in &lt;a href="http://en.wikipedia.org/wiki/Dead_Space_%28video_game%29"&gt;Dead Space&lt;/a&gt;. It should also fit the the story of demon-like creatures taking over human bodies and be super creepy. Apart from that, I was free to do pretty much what I wanted.&lt;br /&gt;&lt;br /&gt;This was my first character design for a commercial game, so I was a little bit shaky. The great freedom was both exciting and quite overwhelming. So many choices! I first researched and got inspiration from unusual anatomy, photos 18- and 19th century clothing (the time in which the game takes place), surrealistic paintings and various disturbing stuff.&lt;br /&gt;&lt;br /&gt;I then continued brainstorming and did a lot of small quick sketches of character silhouettes and different faces. I really wanted to avoid stereotypes and do something unique and memorable. Every single doodle got assembled on a collage and I then showed it for Thomas. He said which parts he liked and from that I went on and created something more detailed. At this time I had a design in my head that I really felt would be perfect. I drew it down with details, colors and lots of love. The result was something of a hunchback with interesting clothing fitting the era and a really grim face. This is perfect I said to myself! Excited I showed it for Thomas. However, I quickly got knocked down to earth again when he said that it looked too funky and resembled &lt;a href="http://www.youtube.com/watch?v=hr5u8O62eCs"&gt;“Grodan Boll”&lt;/a&gt; (which is a character from a Swedish children's book taking the form of frog). I got instructed that I should avoid the cartoony style and make something more realistic, something that you almost could find in real life. Thomas also thought that it should have a lot less clothes.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-_MpY_y1QAaY/TYIkp1yEdjI/AAAAAAAAAVo/1ZTc2xiLpu4/s1600/concept_01_first_brainstorm.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 436px; height: 206px;" src="http://4.bp.blogspot.com/-_MpY_y1QAaY/TYIkp1yEdjI/AAAAAAAAAVo/1ZTc2xiLpu4/s400/concept_01_first_brainstorm.jpg" alt="" id="BLOGGER_PHOTO_ID_5585066789123159602" border="0" /&gt;&lt;/a&gt; &lt;p style="margin-bottom: 0cm; font-style: italic; text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: normal;"&gt;The first batch of sketches. Contains the infamous “Grodan Boll” (“Frog Ball”) on the right. (Click to enlarge.)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;After this setback I started putting a lot of attention on the head of the character. I think this is the part of the human body that you can make the most disturbing because of the emotions it can show. I instantly chose to give him a crushed jaw with parts of skin hanging down and eyes with dilated pupils which pointed in different directions. Thomas approved of this and I moved my focus to the rest of the body.  Important here was to get the feeling of a demon possessing a body that it was unfamiliar to. The creature should try to deform the body into a, according to its own twisted standards, more familiar form, breaking bones and bending joins while doing so. It should also have accidental injuries and be held together with bandages and ropes.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-nwkh-7j4Pmg/TYIlHfgjTXI/AAAAAAAAAVw/EgdFuNVqS2o/s1600/concept_02_face_and_body_study.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 301px; height: 344px;" src="http://1.bp.blogspot.com/-nwkh-7j4Pmg/TYIlHfgjTXI/AAAAAAAAAVw/EgdFuNVqS2o/s400/concept_02_face_and_body_study.jpg" alt="" id="BLOGGER_PHOTO_ID_5585067298540178802" border="0" /&gt;&lt;/a&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal; font-style: italic; text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;The create is starting to shape up and the design of the head has been approved. It is not yet decided what to do with the lower jaw though (an issue discussed until the very end). (Click to enlarge!)&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-weight: normal; font-style: italic; text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;Because of the lack of clothes we had a discussion about showing genitals or not, but soon scrapped that idea after we realized that it would be best not to tease the rating systems too much (this turned out to be a non-issue as other part of the game show /Thomas).&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Kw5stfZN-kc/TYInWr8r0XI/AAAAAAAAAWA/D1ay7bgoeq0/s1600/concept_03_taking_shape.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 236px; height: 258px;" src="http://2.bp.blogspot.com/-Kw5stfZN-kc/TYInWr8r0XI/AAAAAAAAAWA/D1ay7bgoeq0/s400/concept_03_taking_shape.jpg" alt="" id="BLOGGER_PHOTO_ID_5585069758600696178" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;Clothes have been determined to be nothing but a few bandages. Also started studying how the head might look viewed from the side, which turned out to be not a simple task. (Click to enlarge.)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;One thing that was hard to decide was the final look of the left hand. It had to be deformed in some way, but yet be usable and able to be used as a weapon. I did at least 10 different arm designs before coming up with something that we could use. For example I did an arm in the shape of snowballs with spider fingers and one arm twisted in a spiral, with its bones pointing out. The final hand-design was more of a claw with bony fingers that we thought would be perfect for both scaring the player and give a good scratch on the back.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-f7bALCp9_5o/TYIoFg1ebkI/AAAAAAAAAWI/4K9g4ty79QE/s1600/concept_04_failed_experiments.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 498px; height: 108px;" src="http://1.bp.blogspot.com/-f7bALCp9_5o/TYIoFg1ebkI/AAAAAAAAAWI/4K9g4ty79QE/s400/concept_04_failed_experiments.jpg" alt="" id="BLOGGER_PHOTO_ID_5585070563071520322" border="0" /&gt;&lt;/a&gt; &lt;p style="margin-bottom: 0cm; font-style: italic; text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: normal;"&gt;Before settling on a final design, many different version were tried. The left arm was the most troublesome part and changed a lot. (Click to enlarge.)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;When I did the detailed final concept I started by drawing it up traditionally with a pencil. This may not be the most effective way to work (because it makes it harder to do big changes and also caused unwanted coffee stains), but I feel more in control this way and find it easier to do the smaller details. After that I scanned it and quickly colored it in Photoshop using multiply layers. I first tried a bluish skin tone, but it made it feel too much like an alien, so I changed it to a more desaturated one, warmer colors with elements of purple, blue and yellow to create a pale corpse-like look. At this point it didn’t feel too professional and had to go over the concept with Photoshop to add the final touches, such as highlights, noise removal and sharpening. The Photoshop-file ended up having forty plus layers, most of them containing small and unnecessary changes. Nothing I recommend, because of the insane file size, but this time it did the trick and I managed to convince Thomas the concept was completed.&lt;br /&gt;&lt;br /&gt;The art was now done and could now be used by the modeler to create the actual 3d asset.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-R-i-0S0PwGQ/TYIopR7LV5I/AAAAAAAAAWQ/yWOZ9hQ5LTU/s1600/concept_05_final_sketch.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 213px; height: 233px;" src="http://1.bp.blogspot.com/-R-i-0S0PwGQ/TYIopR7LV5I/AAAAAAAAAWQ/yWOZ9hQ5LTU/s400/concept_05_final_sketch.jpg" alt="" id="BLOGGER_PHOTO_ID_5585071177544193938" border="0" /&gt; &lt;/a&gt;&lt;p style="margin-bottom: 0cm; font-style: italic; text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: normal;"&gt;This was the final sketch of the enemy. After this was done I started painting it digitally. (Click to enlarge.)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-bY_ByCdg248/TYIpAaKF-vI/AAAAAAAAAWY/wnk96WAZaN0/s1600/concept_06_final_sketch.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 208px; height: 330px;" src="http://3.bp.blogspot.com/-bY_ByCdg248/TYIpAaKF-vI/AAAAAAAAAWY/wnk96WAZaN0/s400/concept_06_final_sketch.jpg" alt="" id="BLOGGER_PHOTO_ID_5585071574891231986" border="0" /&gt;&lt;/a&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal; font-style: italic; text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;Final concept for the enemy. Note how the lower jaw has been removed, something that was made after the entire character was fully colored.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;a href="http://frictionalgames.blogspot.com/2011/03/birth-of-monster-part-2.html"&gt;Continue to the second part...&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-560788776643993371?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/560788776643993371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/03/birth-of-monster-part-1.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/560788776643993371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/560788776643993371'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/03/birth-of-monster-part-1.html' title='Birth of a Monster. Part 1.'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-pV1tMM5Qtws/TYIum5Z-Z_I/AAAAAAAAAWg/mSaoxeNjdU8/s72-c/Amnesia%2Bmonster.jpg' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-5836518690987271400</id><published>2011-02-21T09:40:00.003+01:00</published><updated>2011-05-16T22:55:18.479+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='narrative'/><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>The Dragon Speech</title><content type='html'>This weekend I discovered the "Dragon Speech" by &lt;a href="http://en.wikipedia.org/wiki/Chris_Crawford_%28game_designer%29"&gt;Chris Crawford&lt;/a&gt; and found it really great. He brings up a lot of good stuff, and touches on many subjects that I have ranted about. You can watch it here:&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=_04PLBdhqZ4"&gt;&lt;br /&gt;Part 1 "The Dream Well"&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=Ymu4A9861Ck"&gt;Part 2 "Interactivity"&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=GpW0fZ0390M"&gt;Part 3 "Genesis of Art"&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=n7N_Ju1L_Mg"&gt;Part 4 "Characters"&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=xqMwmdvf8v0"&gt;Part 5 "Charge!"&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am actually a bit embarrassed that I never seen this talk before. I have heard about it, but never thought much about it and thinking it was not worth any attention. Now that I have seen it, I can say that is definitely not the case and it is one of the best things I've heard/seen on games.&lt;br /&gt;&lt;br /&gt;Which brings me to another point: This talk is almost &lt;span style="font-weight: bold;"&gt;twenty years old&lt;/span&gt; and yet not much have changed. The points he bring up on focus on "fun" and serving a hardcore market are all still very valid. Also, characters in games have evolved very little, in fact, apart from a few IF games like &lt;a href="http://ifdb.tads.org/viewgame?id=urxrv27t7qtu52lb"&gt;Galatea&lt;/a&gt;, not much has happened since &lt;a href="http://en.wikipedia.org/wiki/The_Secret_of_Monkey_Island"&gt;Monkey Island&lt;/a&gt; days. It feels like his views were ignored by most people in the industry. (If anybody has sources on what kind of impact it had on other people at the time, I would be really happy to hear about it!)&lt;br /&gt;&lt;br /&gt;I like to think that things are shaping up a bit though. For instance, players and media have started to accept that games does not have to just about "fun", but can be about other type of emotions as well. (Something I like to think the horror games of the last ten years or so as had a part in). We are also starting to see the first step at a merge between the "casual" and "hardcore" market*, with games such as &lt;a href="http://en.wikipedia.org/wiki/Drawn_%28series%29"&gt;Drawn&lt;/a&gt;, which I see as the beginning of a less specialized market. The situation is far from good, but at least there are some sources of light.&lt;br /&gt;&lt;br /&gt;Another thing of interest is that Chris Crawford has never made a conventional games since he held this speech. Right now he seems to be involved in something called &lt;a href="http://www.storytron.com/"&gt;Storytron&lt;/a&gt;, which I have to admit I do not know much about and have never tried. Now I feel I really must give it a go though! If anyone has tried it, I would be very interested in hearing your thoughts about it.&lt;br /&gt;&lt;br /&gt;Finally, I also recently heard that Chris will be giving a &lt;a href="http://schedule.gdconf.com/speaker/Chris-Crawford"&gt;speech &lt;/a&gt;at &lt;a href="http://www.gdconf.com/"&gt;GDC &lt;/a&gt;this year. So will definitely try to attend that (me and Jens will be going there because of &lt;a href="http://www.igf.com/"&gt;IGF&lt;/a&gt; and all).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;*I do not like the names casual and hardcore. because they compartmentalize the audience far too much and I also think it is a bad way at looking at things (either you like to shoot stuff or play simple puzzles!!!). But since I refer to a trend in the industry I thought it was kinda okay to to use them.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-5836518690987271400?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/5836518690987271400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/02/dragon-speech.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/5836518690987271400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/5836518690987271400'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/02/dragon-speech.html' title='The Dragon Speech'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-8330352976068436348</id><published>2011-02-18T15:23:00.003+01:00</published><updated>2011-05-16T22:55:48.454+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='narrative'/><title type='text'>The Dead Island Trailer and the Future of Games</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-8rG7Km_qSWg/TV58mFFWe_I/AAAAAAAAAVY/iuDPWnIHtgc/s1600/dead-island.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 338px; height: 219px;" src="http://3.bp.blogspot.com/-8rG7Km_qSWg/TV58mFFWe_I/AAAAAAAAAVY/iuDPWnIHtgc/s400/dead-island.jpg" alt="" id="BLOGGER_PHOTO_ID_5575030382372748274" border="0" /&gt;&lt;/a&gt;By now most of you have probably seen the teaser trailer for Dead Island. If not, you can check it out here:&lt;br /&gt;&lt;a href="http://www.gametrailers.com/video/cinematic-trailer-dead-island/710652"&gt;http://www.gametrailers.com/video/cinematic-trailer-dead-island/710652&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This trailer has been getting tons of attention over the Internet and many seem to think that it is one of the best game trailers ever. I find that this is quite interesting, since just about everything that makes the trailer good are things that modern video games lack. I would even go as far as to say that a video game made using modern gameplay-centric design could &lt;span style="font-style: italic;"&gt;never &lt;/span&gt;create something that gives the same experience.&lt;br /&gt;&lt;br /&gt;This is why I think so:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Non-coherent narrative&lt;/span&gt;&lt;br /&gt;The video does not have follow the normal rules of making a narrative (where time flows coherently through plot events), but instead provide a disjointed one. Past and present are not explicitly stated, but is something that the viewers must figure out themselves. Game with a focus on story just do not work like this and instead go through plot points in a predetermined (although sometimes branched) fashion.&lt;br /&gt;&lt;br /&gt;In order to get the same kind of feeling you get from the trailer in a game, stories needs to be looked upon in a different way. A story should not be seen as a string of plot points, but as a certain essence that is meant to be communicated.  (See &lt;a href="http://frictionalgames.blogspot.com/2010/10/story-what-is-it-really-about.html"&gt;this post&lt;/a&gt; for further discussion on the subject).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Violence is not the focus nor the fun part.&lt;/span&gt;&lt;br /&gt;This is something that I have talked about lots before, most recently in a discussion on &lt;a href="http://frictionalgames.blogspot.com/2011/02/thoughts-on-dead-space-2.html"&gt;Dead Space 2&lt;/a&gt;. When you start to focus on making sure that all gameplay is fun, then that trumps any other emotions that could have been evoking. The violence in the Dead Island trailer is not fun. It is desperate, repulsive and tragic. How can you possibly hope to evoke the feelings of a man forced to "kill" his own daughter if your aim is for it to be fun?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Hard-to-repeat moments&lt;/span&gt;&lt;br /&gt;An important part of video games today is that they stop you from making progress unless you meet specific requirements. This is mostly in the form of some skill-based challenge (succeed or restart), but can also be in the form of navigational or puzzle-like obstacles. While of course imperative in some games, this sort of design can greatly decrease the emotional impact of events. Mainly because forcing a player to relive an event dilutes its impact and sets focus on mechanical aspects. Secondly because blocking the player from progress can make certain situations unbearable.&lt;br /&gt;&lt;br /&gt;The trailer has both versions of this problem. For instance, the chase sequence where the child runs to the door is not something that works when repeated.  Also, the event when the child falls through the window is an example of something that you do not want to replay or get stuck at.  (A more in-depth discussion can be found &lt;a href="http://frictionalgames.blogspot.com/2010/04/why-trial-and-error-will-doom-games.html"&gt;here&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;Just so I am clear here: I do not mean that a game should try and  replicate the events exactly like in the trailer. Video games are a  different medium from film and needs things to be done differently.  Instead what I do mean is the recreation of the essences of these events  and situations; to provoke the same kind of emotions and thoughts. Not to make a direct copy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A holistic experience&lt;/span&gt;&lt;br /&gt;What I mean by this is that you need to see the whole thing to get the full experience. Unless you see the trailer until its end, you will not the get full meaning of the work. Mainstream games almost never work in this way, but rather focus on maximizing the entertainment value moment-to-moment. This is partly because of the goal to make games "fun" above all else.  Other causes are the focus put on length of the experience as a large part of the value, and a general attitude of games as products rather than works of art (explained nicely &lt;a href="http://www.dreamdawn.com/sh/post_view.php?index=6867"&gt;here &lt;/a&gt;and &lt;a href="http://www.dreamdawn.com/sh/post_view.php?index=6886"&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With the above in mind, it should come as little as a surprise that I find it highly unlikely that Dead Island will be anything near what the trailer is like (although I hope the reactions to this trailer inspire them to give it a shot and perhaps succeed!). I think there really is a desire for games that offer a different and more emotional experience, the attention this trailer got being a clear sign of that. But if we stick to the tried formula of making video games, these kind of experiences will remain beyond our reach.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-8330352976068436348?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/8330352976068436348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/02/dead-island-trailer-and-future-of-games.html#comment-form' title='32 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/8330352976068436348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/8330352976068436348'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/02/dead-island-trailer-and-future-of-games.html' title='The Dead Island Trailer and the Future of Games'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-8rG7Km_qSWg/TV58mFFWe_I/AAAAAAAAAVY/iuDPWnIHtgc/s72-c/dead-island.jpg' height='72' width='72'/><thr:total>32</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-8783259733726271423</id><published>2011-02-09T13:10:00.004+01:00</published><updated>2011-05-16T22:56:23.615+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feedback'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Thoughts on Dead Space 2</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_QfesHslH-uc/TVKAoM5jIZI/AAAAAAAAAVQ/iT80-QuSuWc/s1600/dead_space.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 352px; height: 195px;" src="http://4.bp.blogspot.com/_QfesHslH-uc/TVKAoM5jIZI/AAAAAAAAAVQ/iT80-QuSuWc/s400/dead_space.jpg" alt="" id="BLOGGER_PHOTO_ID_5571657117156450706" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;So I just finished &lt;a href="http://en.wikipedia.org/wiki/Dead_Space_2"&gt;Dead Space 2&lt;/a&gt; and wanted to discuss it a bit. Mainly because it is a perfect example of some trends in game design that I find are really harmful. I also find that it has some moments that could have been brilliant if just slightly changed, making it extra interesting to discuss.&lt;br /&gt;&lt;br /&gt;Before going into the actual critique I want to say that the game did have some enjoyable parts, especially the at times absolutely amazing scenery. Dead Space 2 just radiates production value and it is a very well-put together game. I quite liked a lot of it and it is one of the few games in recent memory that I played until the end. The game has very nice atmosphere in places and even attempts at a sort of meaningful theme(more on that later).&lt;br /&gt;&lt;br /&gt;At the same time, it is very clear that Dead Space does not aim for any real sophistication. For instance, you need to stomp on dead mutant children to get hold of goodies and gore is quite excessive. In many ways, the game is much closer to &lt;a href="http://www.imdb.com/title/tt0103873/"&gt;Dead Alive (Braindead)&lt;/a&gt; than to something like &lt;a href="http://www.imdb.com/title/tt0078748/"&gt;Alien&lt;/a&gt;, and should probably be judged that way. However, in the following discussion I will approach the game as if the goal was to create a tense sci-fi horror game.&lt;br /&gt;&lt;br /&gt;With that out of the way, let's get down to business.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Cheap deaths&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;When I started the game, I was not in the best of moods (being a bit agitated), but I did what I could, darkened the room and so on. Everything to heighten immersion. As the game started out, it began with a non-playable sequence, something which made me relax and slowly immerse myself. Once the game actually began and I gained control, my mood had changed quite a bit and I felt I was ready to be immersed and role-play. Then after just playing for 30 seconds or so, I took a wrong turn and died.&lt;br /&gt;&lt;br /&gt;This broke all the immersion I had built up over 10 minutes or so, and I had to start all over. The intent was probably to communicate the danger to the player, but this could have been made a lot better. Why not simply hurt the protagonist, or something similar, giving in-game feedback that the player should be very careful. After I had died and gotten a loading screen, I had to build up my mood again almost from scratch.&lt;br /&gt;&lt;br /&gt;The same thing happened at the end of game, where you need complete a sort of chase-sequence before the final cinematic. I was unsure of the controls in this sequence and died just before it was over. Just like with the death at the start, this completely spoiled my mood and removed any emotional impact the ending might have had. Instead of becoming an exciting sequence, it became an obstacle and I concentrated on the pure mechanics instead of role-playing.&lt;br /&gt;&lt;br /&gt;Having cheap deaths during immersive/emotional events like this is just lazy design. The sequences are meant to be completed in a specific fashion anyway, so I cannot understand what can be gained by having players restart over and over until they "get it". Sure it adds some kind of excitement, but this is greatly removed on subsequent attempts anyway, not speaking of how bad this is for immersion and role-playing. And considering there are other ways to add consequences to actions, I do not think it is a valid reason. It is just falling back to old and uninspired design.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Saving Progress&lt;/span&gt;&lt;br /&gt;Scattered across the game are save stations, all using an interface similar to 20 year old games. I do not understand why these are in, as it is the most immersion-breaking device one can think of. Having to enter a menu, and choose a slot in which to save, has no connection to the game world at all. Consoles nowadays have large hard drives (and save games can be made very small) so it cannot be a technical limitation like in older games. I am guessing it is just another case of falling back to old design patterns, and again I think it is totally unnecessary.&lt;br /&gt;&lt;br /&gt;The way I save games in systems like this is to loop through the visible slots (usually four), always picking the oldest save game to overwrite. That way I have three older save games to go back to in case something screws up. As this is basically the system we emulate in Penumbra and Amnesia, and nobody has raised any complaints on that, I guess I am not alone in saving like this. So, if one still wants to use the save stations, my first suggestion would be to simply skip the interface and just save upon interaction. If players want to go back to certain places have a  "Save Game" option in the menu or simply a chapter selection.&lt;br /&gt;&lt;br /&gt;But why stop at that? I would have liked the game to skip saving altogether and do it automatically for me. Dead Space 2 implements resource streaming extremely well and you never feel like you travel between different maps, but roam a continuous environment. Not having any kind of visible save system would fit this design perfectly and most likely increase atmosphere.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Repetition&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;It seems quite clear to me that Dead Space 2 tries very hard to provide a lengthy adventure (took me 10 hours or so go through) and to do so it repeats many elements over and over. This is something that exists in just about any game, where the goal of having filling a certain length quota trumps pacing, story development and the like.&lt;br /&gt;&lt;br /&gt;For example, I really liked the first time the protagonist is forced to crawl through a ventilation shaft, but the tenth time this was repeated it just felt old and uninspired. Instead of trying to come up with new ways to create similar moments, the first one used is just recycled. Another example is the hacking mechanic that was served as an interesting diversion the first time, but ended up being an unwanted frustration.&lt;br /&gt;&lt;br /&gt;You rarely see this sort behavior in other media (at least the good works). It is only in games where an, at first intriguing and noteworthy, event/idea is repeated until tedium. I would much rather have a shorter game that constantly bombards me with unique and inspiring sequences.&lt;br /&gt;&lt;br /&gt;Dead Space 2 does do this right at a few times though. For instance, one section has the protagonist hanging upside while enemies swarm from all directions. This sequence is never repeated and not even dragged out. I would have liked to see that for all parts of the game.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Looting and Shooting&lt;/span&gt;&lt;br /&gt;I might be that I am slightly disturbed, but I find shooting limbs of monsters a great pastime. Especially with the fun and greatly varied arsenal that Dead Space 2 provides. So much did I enjoy it in fact that it is hard to focus on much else. Sure, some of the fighting can be pretty intense with enemies swarming you, but not that much different from how a game like Tetris can be. Added to this is the focus on upgrading the weapons and finding ammo/money, which further brings your mindset toward the shooting part of the game.&lt;br /&gt;&lt;br /&gt;I have talked about how focusing on fun can be bad &lt;a href="http://frictionalgames.blogspot.com/2010/01/when-focusing-on-fun-fails.html"&gt;before&lt;/a&gt;, and Dead Space 2 is such a perfect example. Your main motivation to explore the environment is not to get deeper into the story or to enjoy the art, instead it is to search for goodies. Because the game constantly bombards you with items popping up and force you to pay attention to them (you will run out of ammo otherwise), this becomes the main thing occupying your mind. Everything else is simply pushed into the background, which is really a shame consider the epic set pieces and sometimes interesting background facts. In their effort to comply with "fun" gaming standards, the creators have actually let much of their hard work go to waste.&lt;br /&gt;&lt;br /&gt;I must add that the combat was not completely un-scary though. I started out playing on normal, and at one point, my resources had almost run out, which made me much more careful and tense when I thought monsters might be near. As I was put in this state, it completely transformed how I approached the game, and I started to pay more attention to background sounds and the like. Unfortunately, as I died the combat sequences stopped being scary and instead became tedious challenges in resource management. This together with the increased urge to find hidden items, killed most of the atmosphere to me. I then change to easy difficulty and could enjoy the game more as I did not have to worry about looting or combat strategies as much.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Story&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Dead Space 2 does have a story, but you will have to make an effort to find and experience it. As if the focus on combat was not enough, the actual story seems to be consciously pushed into the background. I can actually only recall one time when you had to actively confront the story (reading a note gives a clue on solving a puzzle). The rest of the story just plays out in the background and as a player you are pushed on by the urge of upgrading weapons and dismember mutants.&lt;br /&gt;&lt;br /&gt;The game does have some interesting aspects though, for example trying to tie the entire game up with the protagonist's grief, but since it is so drawn out and overwhelmed by other elements, it does not really work. Another intriguing part of the game are some earlier sequences where you encounter people fleeing from monsters and people locked up in cells. Hearing the hammering of somebody wanting your help was quite disturbing and had they just added some kind of interaction related to this (like try to open the door) it could have been extremely effective. Instead it was just pushed into the background.&lt;br /&gt;&lt;br /&gt;One of the story things that I did really enjoy was how a recording spoke of the material of a ceiling in an upcoming room. When entering the room your attention is directly drawn up and you could relate the recording, graphics and background story to each other in a nice way. I really wished the game had a lot more of this.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Motivation&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;In the first Dead Space you played the part of a silent errand boy, something that the creators tried to change in the sequel. The way they try to do this is to make the protagonist an active character and make his own decisions. However, I think this sort of backfired and in Dead Space 2 I had even less of an idea on what is going on. Several times I had to check the "mission log" in order to find out what I was up to, and to find out the reasons for this. Since the protagonist was already talking, I wished he could have done this just a little more, explaining his action and reminding me, the player, of what I was supposed to do.&lt;br /&gt;&lt;br /&gt;This also connects to the way the story is told, and further distances the player from the events in the game. Instead of deciding for yourself what the right course of action is, you just follow the game's instructions in hope that will allow you to progress. So while in the previous game you followed the commands of in-game characters you now follow the commands game's interface. This is of course much less immersive.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;End notes&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Playing Dead Space 2 made me both sad and hopeful.&lt;br /&gt;&lt;br /&gt;Sad because I feel there is so much excellent work that has gone to waste and that I keep wondering if there will ever be any change to this. For every game i play I feel that there is so much potential lost due to following old and dull game conventions.&lt;br /&gt;&lt;br /&gt;Hopeful because while there is much I do not like, it feels that there is not that much needed to totally transform the experience. Simply removing all combat focus and making the game half as long would probably have created a much more interesting experience.  The question is if that will ever happen, but now I am at least confident that it is possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-8783259733726271423?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/8783259733726271423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/02/thoughts-on-dead-space-2.html#comment-form' title='41 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/8783259733726271423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/8783259733726271423'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/02/thoughts-on-dead-space-2.html' title='Thoughts on Dead Space 2'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QfesHslH-uc/TVKAoM5jIZI/AAAAAAAAAVQ/iT80-QuSuWc/s72-c/dead_space.jpg' height='72' width='72'/><thr:total>41</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-7045659595717333097</id><published>2011-01-25T13:18:00.002+01:00</published><updated>2011-05-16T22:57:18.986+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='physics'/><title type='text'>Physics and Heightmaps</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_QfesHslH-uc/TT6_w1LXAVI/AAAAAAAAAVE/oqwnz94z4TE/s1600/box_n_terrain.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 291px; height: 217px;" src="http://3.bp.blogspot.com/_QfesHslH-uc/TT6_w1LXAVI/AAAAAAAAAVE/oqwnz94z4TE/s400/box_n_terrain.jpg" alt="" id="BLOGGER_PHOTO_ID_5566097035105861970" border="0" /&gt;&lt;/a&gt;When I thought that all problems with heightmaps was over, I stumbled upon something sort of tricky recently. The only thing I had left for heightmaps was to add physics to them. This seemed easy to do as it was basically just a matter of sending the raw heightmap data to the physics engine (&lt;a href="http://newtondynamics.com/"&gt;newton game dynamics&lt;/a&gt;) However just as I had done this I realized that this was not enough: the terrain could have many different physical properties at different places (a spot with dirt, one with rock, etc).&lt;br /&gt;&lt;br /&gt;The thing is that in physics simulations you give a material per shape, each material having certain properties (friction, etc) and special effects (sounds, etc). The heightmap is counted as a single shape, and thus it only has a single physics material. This was something I had totally forgotten. Luckily, the physics engine supports the assigning of special properties to each point in the heightmap. Once I found the proper info, it was pretty simple to add this (see &lt;a href="http://newtondynamics.com/wiki/index.php5?title=Tutorial_201:_-_Advanced_Custom_Material_System"&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Now it was just a matter of adding extra material values to the heightmap (basically just an array of single integers, the id of the physics material at each point). My initial idea was that this could be "painted" on as an extra step, and to be sure I asked Jens what he thought about it. His reaction was that this would be way too much work and wondered if it could not be auto-generated instead. We already had a physics material assigned to each render material, so the basic info was easily accessible.&lt;br /&gt;&lt;br /&gt;However, when I started to thinking about this, I found the actual auto-generation increasingly tricky. How should we determine which of the many blended materials to set the physics properties (blending was not possible)? Also, how do I get this information, considering that the blend textures can saved as compressed textures, into a CPU buffer?&lt;br /&gt;&lt;br /&gt;The way we chose to solve the material picking was that the top visible (meaning over a certain limit opacity) blend material always sets the physics material. This allows map creators to set priority on materials in terms of physics, by simply placing them at different places among all blend materials. For example, if a material like gravel should also have its effects shown no matter what it is blended with, then it should be placed high up in the list. While currently untested this seem pretty nice and can also be tweaked a bit (like having something else determining priority).&lt;br /&gt;&lt;br /&gt;The generation of this data was made by rendering the blend textures to an off-screen target and then grabbing the data into normal memory. What this meant is that the GPU would decompress any packed textures for us. This also solved some other problems, like the need to resize the texture according to heightmap resolution. Once the data is grabbed from the GPU it is just a matter to loop through it, check values and write to the final buffer.&lt;br /&gt;&lt;br /&gt;Problem was finally solved and physics properties auto-generated!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With this little post I hope to show that there often is more to a problem than what is visible at first. Also, this shows another advantage of using normal texture splatting (more info &lt;a href="http://frictionalgames.blogspot.com/2010/11/tech-feature-terrain-textures.html"&gt;here&lt;/a&gt;), instead of &lt;a href="http://en.wikipedia.org/wiki/MegaTexture"&gt;megatextures &lt;/a&gt;or similar. With the auto-generation of physics, it is much easier to create and update the terrain, something extremely important when you are a small team like us.&lt;br /&gt;&lt;br /&gt;Would be very interesting what other techniques people use (or known of) for setting up physics properties on terrain!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-7045659595717333097?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/7045659595717333097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/01/physics-and-heightmaps.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/7045659595717333097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/7045659595717333097'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/01/physics-and-heightmaps.html' title='Physics and Heightmaps'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QfesHslH-uc/TT6_w1LXAVI/AAAAAAAAAVE/oqwnz94z4TE/s72-c/box_n_terrain.jpg' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-3074955037941729487</id><published>2011-01-20T12:40:00.003+01:00</published><updated>2011-05-16T22:57:36.087+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Tech Feature: Undergrowth</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Introduction&lt;/span&gt;&lt;br /&gt;After a little break with updates on the &lt;a href="http://frictionalgames.blogspot.com/2010/12/bye-bye-pre-pass-lighting.html"&gt;rendering system&lt;/a&gt;, holidays and super secret stuff, I could finally get back to terrain rendering this week. This meant work on the final big part of the terrain system: Undergrowth. This is basically grass and any kind of small vegetation close to the ground.&lt;br /&gt;&lt;br /&gt;As always, I started out doing a ton of research on the subject to at least have a chance of making proper decisions at the start. The problem with undergrowth/grass is that while I could find a lot of resources, most were quite specific, describing techniques that only worked in special cases. This is quite common when doing technical stuff for games; while there are a lot of nice information, only a very small part is usable in an actual game. This is especially true when dealing with any larger system (like terrain) and not just some localized special effect.  In these cases reports from other developers are by far best, and writing these blog posts is partly a way to pay back what I have learned from other people's work.&lt;br /&gt;&lt;br /&gt;Now on with the tech stuff!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Plant Placement Data&lt;/span&gt;&lt;br /&gt;The first problem I was faced with was how to define where the undergrowth should be. In all of the resources I found, there was some kind of density texture  used (meaning a 2D image where each pixel defines the amount of plants at that point). I did not like this idea very much though, mainly because I would be forced to have lots of textures, one for each undergrowth type, or to not allow overlapping plants (meaning the same area on the map would not be able to contain two different types of undergrowth). There are ways past this (e.g. the FrostBite engine &lt;a href="http://www.slideshare.net/repii/terrain-rendering-in-frostbite-using-procedural-shader-splatting-presentation"&gt;uses sort of texture atlases&lt;/a&gt;), but then making it work inside the editor would be a pain, most likely demanding pre-processing and a special editor renderer. I had to do something else.&lt;br /&gt;&lt;br /&gt;What I settled on was to use area primitives, simple geometrical shapes that defined where the undergrowth would be. The way this works is that each primitive define a 2D area were plants should be placed. It then also contains variables such as density, allowing one to place thick grass at one place, and a sparser area elsewhere.&lt;br /&gt;&lt;br /&gt;I ended up implemented circle and convex polygons primitives for this, which during tests seem to work just fine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Generating the Plants&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The next problem was how generate the actual geometry. My first idea was to simply draw the grass for each area, but there were some problems with this. One major was that it would not look good with overlapping areas. If areas of the same density overlapped, the cross section would have twice the density of the combined area. This did not seem right to me. Also, it was problematic to get a nice distribution only using areas and I was unsure how to save the data.&lt;br /&gt;&lt;br /&gt;Once again, the &lt;a href="http://www.slideshare.net/repii/terrain-rendering-in-frostbite-using-procedural-shader-splatting-presentation"&gt;report on the FrostBite engine&lt;/a&gt; gave me an idea on how to approach this. They way they did this was to fill a grid a with probability values. For each grid point a random number between 0 and 1 is generated and then compared to to the one saved in the grid. If the generated number is lower than the saved, a plant is generated at that point, else not. Each plant is then offset by random amount, creating a nice uniform but random distribution of the plants!&lt;br /&gt;&lt;br /&gt;This system fit perfect with the undergrowth areas and simplified it too. Using this approach, an undergrowth area does not need to worry about generating the actual plants, but only to generate numbers on the grid.&lt;br /&gt;&lt;br /&gt;The final version works like this:&lt;br /&gt;&lt;br /&gt;There is an undergrowth material for each type of plant that is used on a level. This material specifies the max density of each plant and thus determines how the grid should look. A material with a high density will have a grid with many points and one with a low density will have few grid points. Each point (not all of course, some culling is used) on the grid is checked against a area primitive and a value is calculated. This is then repeated for each area, adding contributions from all areas that cover the same grid point.&lt;br /&gt;&lt;br /&gt;This solves the problem of overlapping areas, as the density can never become larger than max defined by the grid. It allows makes it possible to have negative areas, that reduce the amount of undergrowth in a certain place. This way, the two simple area primitives I have implemented can be used for just about any kind of undergrowth layout.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Cache system&lt;/span&gt;&lt;br /&gt;Now it is time to discuss how to generate the actual plants. A way to do this is to just generate the geometry for the entire map, but that would take up way too much memory and be quite slow. Instead, I use a cache system that only generate grass close to the camera (this is also how &lt;a href="http://en.wikipedia.org/wiki/Frostbite_Engine"&gt;FrostBite&lt;/a&gt; does it).&lt;br /&gt;&lt;br /&gt;The engine divides the entire terrain into a grid of quads, and then generates cache data for each quad that is close enough to the camera. For each quad, it is checked what areas intersect with it, and layers are made for each undergrowth material that it contain. Then for each layer, plants are generated based on the method described above. The undergrowth material also contains texture and model data as well as a bunch of other properties. For example, the size can be randomized and different parts of the texture used, all to add some variety to the patch of undergrowth. Finally plant is also offset in height according to the heightmap.&lt;br /&gt;&lt;br /&gt;This cache generation took quite some work to get good enough. I had problems with the game stuttering as you traveled through  a level, and had to do various tricks to make it faster. I also made sure that no more than one patch is generated at each frame (unless the camera is teleported or similar).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Rendering&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Once the cache system was in place, rendering the plants were not that much of a problem. Each generated patch comes with the grass in world coordinates, so it is as simple as it can get. The only fancy stuff happening is that grass in the distance is dissolved. This means that the grass does not end with a sharp border, but smoothly fades out.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_QfesHslH-uc/TTgM6zjYlqI/AAAAAAAAAU8/6QhR0yeWf8s/s1600/field_of_grass.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 300px; height: 226px;" src="http://2.bp.blogspot.com/_QfesHslH-uc/TTgM6zjYlqI/AAAAAAAAAU8/6QhR0yeWf8s/s400/field_of_grass.jpg" alt="" id="BLOGGER_PHOTO_ID_5564211544026814114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In the above image you can see how the grass dissolves at distance. Here it looks pretty crappy, but with proper art, it is meant that grass and ground texture should match, thus making the transition pretty much unnoticeable.&lt;br /&gt;&lt;br /&gt;Another thing worth mentioning, is that the normal for each grass model is the same as the ground. This gives a nice look to many plants, but an individual plant gets quite crappy shading. Undergrowth is meant to be small and not seen close-up though, so I think this should work out fine. Also, when making grass earlier (during development Amnesia), normal normals (ha...) were used and the result was quite bad (sharp shading, etc).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Animation&lt;/span&gt;&lt;br /&gt;Static grass is boring, so of course some kind of animation is needed. What I wanted was two different kinds of animation: A global wind animation (unique for each material) and also local animation due to events in a limited area (someone walking through grass, wind from a helicopter, etc).&lt;br /&gt;&lt;br /&gt;My first idea was to do all of these on the cpu, meaning that I would need to resend all the geometry to the graphics card each frame. This would allow me to use all kinds of fanciness for animation (like my dear &lt;a href="http://frictionalgames.blogspot.com/2010/11/tech-feature-noise-and-fractals.html"&gt;noise and fractals&lt;/a&gt;) and would easily allow for lots of local disturbances.&lt;br /&gt;&lt;br /&gt;However, I did some thinking and decided that this would be a bad idea. Not only does the sending of data to the graphics card take up time, but there might be some pretty heavy calculations needed (like rotating normals) for a lot plants, so the cpu burden would be very heavy. Instead I chose to do everything on the GPU.&lt;br /&gt;&lt;br /&gt;Implementing the global wind animation was quite simple; i was just a matter of sending a few new variables to the grass shader. But it was a bit harder to come up with the actual algorithm. Perhaps I did not look hard enough, but I could find very little help on this area, so I had to do a lot of experimenting instead. The idea was to get something that was fast (i.e. no stuff like &lt;a href="http://en.wikipedia.org/wiki/Perlin_noise"&gt;Perlin noise&lt;/a&gt; allowed) and yet have a natural random feel to it. What I ended up with was this:&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;br /&gt;add_x =  vec3(7.0, 3.0, 1.0) * VertexPos.z * wind_freq + vec3(13.0, 17.0, 103.0);&lt;br /&gt;offset.x = dot( vec3(sin(fT*1.13 + add_x.x), sin(fT*1.17 + add_x.y), sin(fT + add_x.y)), vec3(0.125, 0.25, 1.0) );&lt;br /&gt;&lt;br /&gt;add_y =  vec3(7.0, 3.0, 1.0) * (VertexPos..x + vOffset.x) * wind_freq + vec3(103.0, 13.0, 113.0);;&lt;br /&gt;offset.y = dot( vec3(sin(fT*1.13 + add_y.x), sin(fT*1.17 + add_y.y), sin(fT + add_y.z)), vec3(0.125, 0.25, 1.0) );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is basically a couple of fractually nested sin curves (&lt;a href="http://en.wikipedia.org/wiki/Fractional_Brownian_motion"&gt;fbm&lt;/a&gt; basically) that take the current vertex position as input. The important thing to note is the prime numbers such as &lt;span style="font-style: italic;"&gt;vec3(7.0, 3.0, 1.0)&lt;/span&gt; without these the cycles of the sin curves overlap and the end result is a very cyclic, boring and unnatural look.&lt;br /&gt;&lt;br /&gt;The offset generated is then applied differently depending on the height of the plant. There will be a lot of swaying at the top and none at the bottom. To do this the base y-coordinate of the plant is saved in a secondary texture coordinate and then looked up in the shader.&lt;br /&gt;&lt;br /&gt;Now finally, the local animation. To do this entities called ForceFields are used. (Thanks Luis for the name suggestion! It made doing the boring parts so much more fun to make.) These are entities that come with a radius and a force value, and is meant to create effects on the graphics that they touch. Right now only grass is affected, but later on effects on ropes, cloth, larger plants , etc are meant to be added.&lt;br /&gt;&lt;br /&gt;These effect of these are applied in the shader and currently I support a maximum of four ForceFields per cache patch. In the shader I either do none, a single entity or four at once. This means that if three entities affect a patch, I still render the outcome of four, but fill the last one's data with dummy (null) values. Using four is actually almost as fast as using a single. Because of how GPUs work, I can do a lot of work for all four entities in the same amount of instructions as for a single. This greatly cut down the amount of work that is needed.&lt;br /&gt;&lt;br /&gt;Again, just like with the global wind, it was hard work to come up with a good algorithm for this. My first idea was to simply push each plant away from the center of the force field, but this looked really crappy. I then tried to add some randomness and animation to this in order to make it nicer. As inspiration, I looked at &lt;a href="http://en.wikipedia.org/wiki/Titan_quest"&gt;Titan Quest,&lt;/a&gt; which has a very nice effect when you walk through grass. After almost a days work the final algorithm look something like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;fForce = 1 - distance(vtx_pos, force_field_pos)/force_field_radius&lt;br /&gt;&lt;br /&gt;fAngle = T + rand_seed*6.28;&lt;br /&gt;fForce *= sin(force_field_t + fAngle);&lt;br /&gt;&lt;br /&gt;vDir = vec2(sin(fAngle), cos(fAngle));&lt;br /&gt;vOffset.xz += vDir * fForce;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Rand seed is variable that is saved in the secondary texture coordinate and is generated for each plant. This helps gives more random and natural feel to it.&lt;br /&gt;&lt;br /&gt;Here is how it all looks in action:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;iframe title="YouTube video player" class="youtube-player" type="text/html" src="http://www.youtube.com/embed/o5dwhrYBN4c?hd=1" width="425" frameborder="0" height="349"&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;Note: Make sure to &lt;a href="http://www.youtube.com/watch?v=o5dwhrYBN4c&amp;amp;hd=1"&gt;check in HD&lt;/a&gt;!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;And in case you are wonder all of this is ugly, made in 10 seconds, graphics.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;End notes&lt;/span&gt;&lt;br /&gt;Now that undergrowth is finally done, it means that all basic terrain features are implemented! In case you have missed out on earlier post here is a summary:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://frictionalgames.blogspot.com/2010/11/tech-feature-terrain-geometry.html"&gt;Terrain Geometry&lt;/a&gt;&lt;br /&gt;&lt;a href="http://frictionalgames.blogspot.com/2010/11/tech-feature-noise-and-fractals.html"&gt;Fractals and Noise&lt;/a&gt;&lt;br /&gt;&lt;a href="http://frictionalgames.blogspot.com/2010/11/tech-feature-terrain-textures.html"&gt;Terrain Texturing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I hope this has been of use and/or interest to somebody! :)&lt;br /&gt;&lt;br /&gt;Next up for me is some final terrain stuff (basically just some clean-up) and then I will move on to more gameplay related stuff. More on that later though...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-3074955037941729487?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/3074955037941729487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/01/tech-feature-undergrowth.html#comment-form' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/3074955037941729487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/3074955037941729487'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/01/tech-feature-undergrowth.html' title='Tech Feature: Undergrowth'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QfesHslH-uc/TTgM6zjYlqI/AAAAAAAAAU8/6QhR0yeWf8s/s72-c/field_of_grass.jpg' height='72' width='72'/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-7936252232369452358</id><published>2011-01-12T21:34:00.003+01:00</published><updated>2011-05-16T23:07:11.756+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amnesia'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Why not release a game on Steam that has been ported to Mac?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZilBdutm4UA/TS4M5vnnpAI/AAAAAAAAABs/zLMwaLgnpBM/s1600/4601956103_319c4f8b5d.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 241px; height: 191px;" src="http://2.bp.blogspot.com/_ZilBdutm4UA/TS4M5vnnpAI/AAAAAAAAABs/zLMwaLgnpBM/s320/4601956103_319c4f8b5d.jpg" alt="" id="BLOGGER_PHOTO_ID_5561396776023860226" border="0" /&gt;&lt;/a&gt;As we have released all of our &lt;a href="http://frictionalgames.com/site/games/"&gt;games&lt;/a&gt; for Windows, Mac and Linux and because we also release our games on &lt;a href="http://store.steampowered.com/"&gt;Steam&lt;/a&gt;, this will be a quick reflection over the lack of games available for Mac that are not on Steam.&lt;br /&gt;&lt;br /&gt;Looking at the Steam forums you can find a &lt;a href="http://forums.steampowered.com/forums/showthread.php?t=1644567"&gt;thread&lt;/a&gt; or two every now and then that brings up the topic "why are there many well known games, that are ported to Mac, but are not on Steam??".&lt;br /&gt;&lt;br /&gt;The reason for this can be many: Perhaps there is a contractual limit or perhaps the company that did the Mac port have their own online store and only wants to sell the game in that store.&lt;br /&gt;&lt;br /&gt;There has also been a mention here and there about SteamPlay, the feature on Steam that gives you a game for all platforms, even if you only bought it for Windows to begin with. This means that if you have a Mac as well, you get the game for Mac for free on Steam. Or the other way around of course. This might be viewed as a &lt;a href="http://www.insidemacgames.com/features/view.php?ID=557"&gt;negative thing&lt;/a&gt;, because as the company porting the game, you have a lot of potential customers that will simply get your game for free. This makes SteamPlay also a possible cause not to release the game on Steam.&lt;br /&gt;&lt;br /&gt;Bringing me to the point of this short blog post: As a long time Mac user, gamer and as someone that worked on quite a few Mac games over the years, I feel the urge to post a little "Steam is good, SteamPlay is good and if nothing stops you from releasing the game, do it."-suggestion.&lt;br /&gt;&lt;br /&gt;Looking at our own sales, we have about 7-8% coming from Mac users. Last I heard, the Mac portion of the PC market was less than 7-8%! We have had this sale share since the very first month our games were released on Steam for Mac, so despite all the potential "lost sales" due to SteamPlay, we have sold as many copies as the Mac market should be able to support.&lt;br /&gt;&lt;br /&gt;Let's take Penumbra Collection as an example; when it was released on Steam for Mac, the Mac sales accounted for 20% of the total sales of Penumbra Collection that month. This for a game that is to be considered old and have been available for the Mac elsewhere for as long (almost) as the PC version has been out.&lt;br /&gt;&lt;br /&gt;If you are a Mac porting company, take a moment to think about it and if nothing stops you from releasing it on Steam, why not maximize the potential customer base?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Psst. Of course there are other originally Windows oriented stores that have support for the Mac, such as &lt;a href="http://gamersgate.com/"&gt;Gamer's Gate&lt;/a&gt; and &lt;a href="http://direct2drive.com/"&gt;Direct2Drive&lt;/a&gt;. Not to forget the newly released (long overdue) &lt;a href="http://www.apple.com/mac/app-store/"&gt;App Store&lt;/a&gt; by Apple themselves.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-7936252232369452358?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/7936252232369452358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/01/why-not-release-game-on-steam-that-has.html#comment-form' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/7936252232369452358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/7936252232369452358'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/01/why-not-release-game-on-steam-that-has.html' title='Why not release a game on Steam that has been ported to Mac?'/><author><name>Jens</name><uri>http://www.blogger.com/profile/13071761637247347059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZilBdutm4UA/TS4M5vnnpAI/AAAAAAAAABs/zLMwaLgnpBM/s72-c/4601956103_319c4f8b5d.jpg' height='72' width='72'/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-545625214839863749</id><published>2011-01-07T14:10:00.003+01:00</published><updated>2011-05-16T23:07:02.117+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amnesia'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Four months after Amnesia's release</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_QfesHslH-uc/TSbubDRpN0I/AAAAAAAAAU0/aYGBtY1I9Lk/s1600/amnesia.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 416px; height: 231px;" src="http://2.bp.blogspot.com/_QfesHslH-uc/TSbubDRpN0I/AAAAAAAAAU0/aYGBtY1I9Lk/s400/amnesia.jpg" alt="" id="BLOGGER_PHOTO_ID_5559392938538645314" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.frictionalgames.com/"&gt;Frictional Games&lt;/a&gt; have now officially existed for almost exactly four years (4 years and 7 days to be exact), &lt;a href="http://amnesiagame.com/"&gt;Amnesia: The Dark Descent&lt;/a&gt; is our fourth game and it is now four month since we released it. Because of this we thought it was time for another round-up of sales and other stuff that has happened.&lt;br /&gt;&lt;br /&gt;Those who have read our two &lt;a href="http://frictionalgames.blogspot.com/2010/10/one-month-after-amnesias-release.html"&gt;previous &lt;/a&gt;&lt;a href="http://frictionalgames.blogspot.com/2010/09/one-week-after-release-of-amnesia.html"&gt;reports &lt;/a&gt;might have noticed a small trend of the later being a little bit more positive than the earlier. This post will not be an exception and we can happily announce that things are looking better than ever for us. Summarizing all sales since release actually puts us in a state that we never imagined being in.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Sales&lt;/span&gt;&lt;br /&gt;Let's start with what I guess people are most interested in - sales. When counting all online sales as well a the Russian retail copies, we have now sold almost &lt;span style="font-weight: bold;"&gt;200, 000 units&lt;/span&gt;! This is a tremendous amount and more than we ever thought we would. Our "dream estimates" before release was something around 100k, and to be able to double that feels insane.&lt;br /&gt;&lt;br /&gt;Note that more than half of these units have been sold at a discounted price (with as much has 75% of the price off), so the total earnings are not as much as it first sounds. Still, we are in incredible good financial situation right now. Also, the daily sales are still quite high and the average has not dropped below 200 units yet. This means that we can still pay all daily costs from these sales alone, allowing us to invest the other earnings into the future (for outsourcing, PR, etc). It also gives us a healthy buffer and allow us to manage any unexpected happenings the future might hold.&lt;br /&gt;&lt;br /&gt;With these figures at hand, we must confess that it gives us new confidence for the PC. The sales that we have had (and are having) are more than enough to motivate developing a game with the PC as the main (and even only) platform. Based on what we have seen, the online PC market is just getting bigger and bigger, and we are convinced we are far from the end of this growth. We think that other developers that consider making their game exclusive to a console might want to think again.&lt;br /&gt;&lt;br /&gt;However, our sales have not been typical and it is safe to say that we have earned more than most other indie PC games. We have been extremely lucky with our media coverage and gotten tons of  free PR (more on this later), something that has greatly influenced our sales compared to other titles. As proof of this, in the &lt;a href="http://store.steampowered.com/"&gt;Steam  &lt;/a&gt;sales charts  we have been among the top three games for Adventure and Indie categories almost  the entire time since release, often quickly above many of the games that were released after ours. With this we do not seek to discourage others from creating PC games, we are just saying that 200k units is not something that should be expected after 4 months of sales of an indie game. The market does continue to grow though, and it might not be long before these kinds of numbers are considered perfectly normal.&lt;br /&gt;&lt;br /&gt;There is another really important thing that needs to be taken into account: If we have had a publisher and sold according to current figures, we would not be in the state that we are in now. More likely, we would now be something more like our &lt;a href="http://frictionalgames.blogspot.com/2010/09/one-week-after-release-of-amnesia.html"&gt;first sales summary post&lt;/a&gt;. We would probably just have paid back our advance, and just recently been receiving royalties (at a much lower rate, like 25% of what we get now).  This means that we would probably be looking for a new publishing deal at this point instead of having the freedom we now have. This does not mean that publishers are evil, just that one should think carefully before signing up for anything. Releasing a game without any financial backing or help with marketing is quite a struggle, but if you pull it off it is well worth the effort!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Media and PR&lt;/span&gt;&lt;br /&gt;While we tried to make as much noise as possible at the release of the game, our marketing efforts have been far from big. Our main tactics have been to spread movie clips from the game, releasing a playable demo and to send out review copies. We think that most of this paid off as much as we could have hoped for, with great responses to trailers, players liking the demo and &lt;a href="http://www.metacritic.com/game/pc/amnesia-the-dark-descent/critic-reviews"&gt;awesome reviews&lt;/a&gt;. However, plenty of PR came from a quite unexpected source, namely from user generated content.&lt;br /&gt;&lt;br /&gt;An idea that we threw around before release was to have some kind of audience reaction footage, like &lt;a href="http://www.youtube.com/watch?v=c8TmdNVK1Nk"&gt;Rec &lt;/a&gt;and &lt;a href="http://www.youtube.com/watch?v=_LfV7SGA-2o"&gt;Paranormal activity&lt;/a&gt; trailers have had. Having too much to do, we just left the idea lying and never did anything about it. However, shortly after the release of Amnesia players made their own videos with &lt;a href="http://www.youtube.com/watch?v=ZEroDNc0fzQ"&gt;exactly this content&lt;/a&gt;! The extent that these have spread is quite amazing, &lt;a href="http://www.youtube.com/watch?v=loSzpvq73FY"&gt;one video&lt;/a&gt; having 775k views at the time for writing. That is almost a million views! And without any cats!&lt;br /&gt;&lt;br /&gt;As we have now entered a new year, there have of course been a lot of awards. What is extra exciting about that is that we actually have been gotten a few! Just recently we got three nominations for &lt;a href="http://igf.com/2011/01/2011_independent_games_festiva_11.html"&gt;Independent Games Festival&lt;/a&gt;, something that we are very thrilled about. Yahtzee of &lt;a href="http://www.escapistmagazine.com/videos/view/zero-punctuation"&gt;Zero Punctuation&lt;/a&gt; fame was kind enough to name Amnesia his forth best game of the year. &lt;a href="http://elder-geek.com/2011/01/the-elder-geek-com-2010-game-of-the-year-awards/"&gt;Elder Geek awarded us&lt;/a&gt; PC Game of the year which was quite unexpected. IGN &lt;a href="http://bestof.ign.com/2010/overall/"&gt;is currently nominating us for best horror game of the year&lt;/a&gt; and also awarded us best horror and coolest  atmosphere for PC. Plenty of other awards have been given too and we are extremely happy about this kind of response!&lt;br /&gt;&lt;br /&gt;How has these awards and nominations been us PR wise? Unfortunately it is a bit hard to say as all were announced during the Christmas sales, a time when sales where much higher than usual. Now when it is over, we do see around a 75% increase in daily sales compared to before the Christmas sale started. We think the awards and nominations are part of this increase, but the increase in new players during the holidays have probably also helped spreading the word and boost the sales.&lt;br /&gt;&lt;br /&gt;What we can tell though, is that the awards and nominations gotten us more attention from the media. Especially after the IGF nomination we have gotten a lot of mails regarding interviews, review requests and similar. So even if these kind of things are not crucial for current sales, they can prove very important for the future of our company.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Current situation and future&lt;/span&gt;&lt;br /&gt;So obviously Amnesia has been a huge success for us at Frictional Games, but what does it mean for us as a company? First of all, we are now completely financially stable and have enough money to complete our next game without any problems. It also means that for the first time in our lives we can actually get decent salaries, something that I personally would never thought would be possible. This means that Frictional Games is no longer a struggling endeavor that we will continue until our energy runs out. Instead Frictional Games has now become a proper career, income provider and something we hope to continue for a long time forward. Compared to how we felt just a few months ago, often considering getting "proper jobs", this is quite a wonderful change!&lt;br /&gt;&lt;br /&gt;Our financial situation also means that we are able to take some amount of risk. While we of course do not aim to go crazy, it means that we can try out new things without risk of going bankrupt. It also means that we might have means to release a new game more frequently than every other or third year. We have some ideas on how to approach this, and are actually in the process of trying some things out.&lt;br /&gt;&lt;br /&gt;As for our plans to focus on consoles, as hinted above, this is something we are reconsidering. If online sales figures continue like they have with Amnesia, there is actually not any reason for us to release to anything but PC. Still, it would be foolish not to try consoles out and our current idea is to work together with a third party to do a port. This would mean that we can still can keep a small staff and not risk growing beyond our capabilities.&lt;br /&gt;&lt;br /&gt;We are also hard at work with our new game which we are extremely excited about. While we still do not want to disclose to much, our goal is to take "experience based gameplay" to another level. We aim to use the emotions that Amnesia was able to provoke and to focus them in a different direction, which will hopefully give delightfully disturbing results.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally, a big thanks to everybody who have supported us over the years, played our game, spread the word, made crazy videos, etc. We hope you all will continue to support is into the future!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-545625214839863749?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/545625214839863749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/01/four-months-after-amnesias-release.html#comment-form' title='136 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/545625214839863749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/545625214839863749'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/01/four-months-after-amnesias-release.html' title='Four months after Amnesia&apos;s release'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QfesHslH-uc/TSbubDRpN0I/AAAAAAAAAU0/aYGBtY1I9Lk/s72-c/amnesia.jpg' height='72' width='72'/><thr:total>136</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-6221475300523483769</id><published>2011-01-04T11:50:00.002+01:00</published><updated>2011-05-16T22:59:03.200+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Embracing Hardness</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_QfesHslH-uc/TSL5wF3fVZI/AAAAAAAAAUs/C0pP_p3Iurg/s1600/Rock.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 326px; height: 244px;" src="http://4.bp.blogspot.com/_QfesHslH-uc/TSL5wF3fVZI/AAAAAAAAAUs/C0pP_p3Iurg/s400/Rock.jpg" alt="" id="BLOGGER_PHOTO_ID_5558279494732567954" border="0" /&gt;&lt;/a&gt;I am not very fond of new year's resolutions, but I will make one anyway: From here on, I promise myself to never take the simple way, but always take the hard one, when making  game.&lt;br /&gt;&lt;br /&gt;This might seem a bit weird, so let me explain myself.&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;When creating games in the past we have sometimes tried to take the easy way out, hoping to create a lot of "playtime" for little effort. This kind of thinking have always ended up being the worst parts of the game or the worst ideas. For example, in &lt;a href="http://www.penumbragame.com/"&gt;Penumbra Overture&lt;/a&gt;, I designed some of the maps to be maze-like and have roaming enemies, thinking it would be an easy way of adding engaging parts to the game. These levels turned out to be tedious and easily my least favorite parts of the game. Another example is from &lt;a href="http://amnesiagame.com/"&gt;Amnesia&lt;/a&gt;: When coming up with the basic gameplay design we were set on creating some easy way of making levels. This ended up being a bad way to go about it and we pretty much discarded all of these features in the final game. Instead we went back to doing it the hard way - with much better results.&lt;br /&gt;&lt;br /&gt;After releasing the Penumbra games, we actually felt a bit annoyed that it was so hard to make new maps for them. We saw that other games could put out a lot of map-packs and similar, but this was very hard for us, and would cost almost as much as making a new game. This feeling is not a new one, and I have personally felt like this many times. The ability games that could be completed quicker and that allowed for simple expansions.&lt;br /&gt;&lt;br /&gt;This feeling has resided a bit after the release of Amnesia, but until very recently it was still there, nagging me. Then it suddenly occurred to me that I should not feel bad about having work that is hard to make. Instead I should feel proud and embrace it. I know this might sound a bit silly and self-evident, but it honestly came as a bit of a revelation to me. Not only should I feel good about any part of the game that was hard to make, I should actively strive for it and discard anything that is too easy. If a feature can easily create gameplay for a part of the game, it should be considered a bad idea and either scrapped it or a adjusted into a harder version. This not only because of personal motives, but because I am quite convinced that it will result in better games.&lt;br /&gt;&lt;br /&gt;We should of course try and make the process of creating the game as simple and straightforward as possible. Just like we, to great success, improved and greatly simplified level and entity creation for Amnesia. Handling the tools of the trade is not what is meant to be hard, but the act of creation. I am also not implying that we should try and reinvent the wheel and try to come up with new solutions to already solved problems. What I am saying is that if any part of the game is too easy to design or implement, then we should be critically examine if it is really needed and if we really put enough thought into it. It should be considered if there are any ways to vary, expand or in any other way change it to make it harder.&lt;br /&gt;&lt;br /&gt;What I am hoping will come out of this, are games that give a much richer experience. I think a good example of this at work is to compare a game like &lt;a href="http://en.wikipedia.org/wiki/Braid_%28video_game%29"&gt;Braid &lt;/a&gt;to a "normal" puzzle game. The first few levels of Braid could easily have been expanded into a full game, but instead the hard route was taken. This resulted in a game where the gameplay is constantly fresh and provides a much deeper experience. You also see the same kind of forces at work when comparing the &lt;a href="http://en.wikipedia.org/wiki/Super_Mario_Bros."&gt;Super Mario&lt;/a&gt; games to contemporary &lt;a href="http://en.wikipedia.org/wiki/Platform_game"&gt;platformer &lt;/a&gt;titles. There is a certain degree of quality to the Mario games, a large part of which I think comes from to doing things the hard way.&lt;br /&gt;&lt;br /&gt;This will most probably result in more work for us, but as I now aim to embrace hard problems, that should only mean we are on the right track!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-6221475300523483769?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/6221475300523483769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2011/01/embracing-hardness.html#comment-form' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/6221475300523483769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/6221475300523483769'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2011/01/embracing-hardness.html' title='Embracing Hardness'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QfesHslH-uc/TSL5wF3fVZI/AAAAAAAAAUs/C0pP_p3Iurg/s72-c/Rock.jpg' height='72' width='72'/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-5749901682902555892</id><published>2010-12-10T16:50:00.006+01:00</published><updated>2011-05-16T23:01:22.372+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='psychology'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>Player - Avatar Symbiosis</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="" href="http://2.bp.blogspot.com/_QfesHslH-uc/TQJLsl27twI/AAAAAAAAAUY/APsFrIVHKKc/s1600/image%2Bsymbiosis%2Bmaxsize.400.750.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 298px; height: 321px;" src="http://2.bp.blogspot.com/_QfesHslH-uc/TQJLsl27twI/AAAAAAAAAUY/APsFrIVHKKc/s400/image%2Bsymbiosis%2Bmaxsize.400.750.jpg" alt="" id="BLOGGER_PHOTO_ID_5549080920322717442" border="0" /&gt;&lt;/a&gt;In a recently released paper, Jeroen D. Stout (creator of &lt;a href="http://thestoutgames.com/:DinnerDate"&gt;Dinner Date&lt;/a&gt;) proposes an interesting theory on the relashionship between player and avatar. It is related to the things that have been discussed previous post about immersion, so I felt it was relevant to bring it up.  The full paper can be gotten from &lt;a href="http://jeroenstout.net/:work#Show:Symbiosis-Masqueradingavatarautonomyasplayeractions"&gt;here&lt;/a&gt;. I will summarize the ideas a bit below, but I still suggest all to read the actual paper for more info!&lt;br /&gt;&lt;br /&gt;Most modern theorists of the mind agree that it is not single thing, but a collection of processes working in unison. What this means is that there is no exact place where everything comes together, but instead the interaction between many sub-systems give rise to what we call consciousness. The most clear evidence of this is in &lt;a href="http://www.macalester.edu/psychology/whathap/ubnrp/split_brain/Gazzaniga%20Experiments.html"&gt;split brain patients&lt;/a&gt;, where the two brain-halves pretty much form two different personalities when unable to communicate.&lt;br /&gt;&lt;br /&gt;This image of a self is a not fixed thing though and it is possible to change. When using a tool for a while it often begins to feel like an extension of ourself, thus changing ones body image. We go from being "just me" to be being "me with hammer". When the hammer is put down, we return to the old previous body image of just being "me". I have described an even clearer example of this in a &lt;a href="http://frictionalgames.blogspot.com/2010/09/where-is-your-self-in-game.html"&gt;previous post&lt;/a&gt;, where a subject perceives a sense of touch as located at a rubber hand. Research have shown that this sort of connection can get quite strong. If one threatens to drop a heavy weight or similar on the artificial body part (eg the rubber hand), then the body reacts just like it would to any actual body part.&lt;br /&gt;&lt;br /&gt;What this means for games is that it is theoretically possible for the player form a very strong bond with the avatar, and in a sense &lt;span style="font-style: italic;"&gt;become &lt;/span&gt;the avatar. I discuss something similar in &lt;a href="http://frictionalgames.blogspot.com/2010/11/how-player-becomes-protagonist.html"&gt;this blog post&lt;/a&gt;. What Jeroen now purposes is that one can go one step further and make the avatar autonomously behave in a way that the players will interpret has their own will.  This is what he calls &lt;span style="font-style: italic;"&gt;symbiosis&lt;/span&gt;. Instead of just extending the body-image, it is the extension of the mind. Quite literally, a high level of symbiosis means that part of your mind will reside in the avatar.&lt;br /&gt;&lt;br /&gt;A simple example would be that if player pushes a button, making the avatar jump, players feel as if they did the jumping themselves. I believe that this sort of symbiosis already happens in some games, especially noticeable when the avatar does not directly jump but has some kind of animation first. When the player-avatar symbiosis is strong this sort of animation does not feel like some kind of cut scene, but as a willed action. Symbiosis does not have to be just about simple actions like jumping though, but can be more complex actions, eg. assembling something, and actions that are not even initiated by the player, eg. picking up an object as the player pass by it. If symbiosis is strong then the player should feel that "I did that" and not "the avatar did that" in the previous examples. The big question is now how far we can go with this, and Jeroen suggests some directions on how to research this further.&lt;br /&gt;&lt;br /&gt;Having more knowledge on symbiosis would be very useful to make the player feel immersed in games. It can also help solving the problem of inaccurate input. Instead of doing it the &lt;a href="http://en.wikipedia.org/wiki/Jurassic_Park:_Trespasser"&gt;Trespasser &lt;/a&gt;way and add fine-control for every needed body joint, focus can lie on increasing the symbiosis and thus allowing simply (or even no!) input be seen by players as their own actions. This would make players feel as part of a virtual world without resorting to full-body exo-skeletons or similar for input. Another interesting aspect of exploring this further is that it can perhaps tell us something about our own mind. Using games to dig deeper into subjects like free will and consciousness is something I feel is incredibly exciting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-5749901682902555892?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/5749901682902555892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2010/12/player-avator-symbiosis.html#comment-form' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/5749901682902555892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/5749901682902555892'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2010/12/player-avator-symbiosis.html' title='Player - Avatar Symbiosis'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QfesHslH-uc/TQJLsl27twI/AAAAAAAAAUY/APsFrIVHKKc/s72-c/image%2Bsymbiosis%2Bmaxsize.400.750.jpg' height='72' width='72'/><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-7786603890601733162</id><published>2010-12-02T18:50:00.002+01:00</published><updated>2011-05-16T22:59:45.078+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Tech feature: Light Masking</title><content type='html'>So just wanted to give a quick info on a brand new feature: light box masks.&lt;br /&gt;&lt;br /&gt;When placing lights in some rooms, it is common that light bleeds through walls, and show up in other rooms close by. The obvious way to fix this is to add shadows, but shadows can be pretty expensive (especially for point lights), so it is not often a viable solution. In Amnesia we solved this through careful placement, yet bleeding can be seen in some places.&lt;br /&gt;&lt;br /&gt;To fix this I added a new feature that is able to limit the lights range with a box. This way the light can cast light as normal but is cut off before reaching an adjacent area. This pretty much does the job of shadows, but is much cheaper.&lt;br /&gt;&lt;br /&gt;It turned out to be pretty simple to implement as well. In the renderer, different geometrical shapes are used to render lights (spheres for point lights and pyramids for spots) which make sure the light only affects needed pixels. To implement the masking, these shapes where simply exchanged for a box and then with some small shader changes it all worked.&lt;br /&gt;&lt;br /&gt;Without masking:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TPfdS9vYkgI/AAAAAAAAAUI/v9jzYSEZj2o/s1600/no_mask.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TPfdS9vYkgI/AAAAAAAAAUI/v9jzYSEZj2o/s400/no_mask.jpg" alt="" id="BLOGGER_PHOTO_ID_5546144784010744322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;With mask:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_QfesHslH-uc/TPfdZmYscxI/AAAAAAAAAUQ/pI74xWVUCdQ/s1600/with_mask.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_QfesHslH-uc/TPfdZmYscxI/AAAAAAAAAUQ/pI74xWVUCdQ/s400/with_mask.jpg" alt="" id="BLOGGER_PHOTO_ID_5546144898000646930" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-7786603890601733162?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/7786603890601733162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2010/12/tech-feature-light-masking.html#comment-form' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/7786603890601733162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/7786603890601733162'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2010/12/tech-feature-light-masking.html' title='Tech feature: Light Masking'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QfesHslH-uc/TPfdS9vYkgI/AAAAAAAAAUI/v9jzYSEZj2o/s72-c/no_mask.jpg' height='72' width='72'/><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-4960895388603858390</id><published>2010-12-01T16:45:00.003+01:00</published><updated>2011-05-16T23:00:03.249+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Bye, bye Pre-Pass lighting</title><content type='html'>I have an announcement to make.&lt;br /&gt;&lt;br /&gt;I am dumping pre-pass lighting.&lt;br /&gt;&lt;br /&gt;A couple of weeks ago I started to remaking the renderer from a deferred shader to a pre-pass lighting one. Directly after implementing it, I wrote &lt;a href="http://frictionalgames.blogspot.com/2010/10/tech-feature-pre-pass-lighting.html"&gt;this post&lt;/a&gt;. At first, pre-pass lighting sounded great: faster light rendering and more variation in materials. Having seen that companies such as &lt;a href="http://en.wikipedia.org/wiki/Crytek"&gt;Crytek &lt;/a&gt;and &lt;a href="http://en.wikipedia.org/wiki/Insomniac_games"&gt;Insomniac Games&lt;/a&gt; used it, I thought it would be the next logical step to take.&lt;br /&gt;&lt;br /&gt;However, even as implemented it, the problems began. The first one was that specular lighting has to be made through hacks or something that makes it closer to deferred lighting. The next was that implementation become more messy. I suddenly needed to redraw all objects in two separate passes and this made the material and shader code harder to maintain. Normal deferred shading has this nice design where all material info is rendered in one pass to one buffer. But in pre-pass lighting, this spread out and makes more annoying to add new stuff and to update existing.&lt;br /&gt;&lt;br /&gt;Still, I stuck to it, because I was sure that the speed and material variety would make up for it. One of the features I was looking forward to was making more interesting decals, with normals and such. Since only the light data is written to an accumulation buffer I thought this would allow me to easily put more effects to the decals. However, I quickly realized that I had been quite foolish and not considered that pretty much every interesting part of a materials is added when lighting it. The surface normals, specular, etc are all baked into the light data. So I ended up doing tricks that I could actually work with normal deferred shading.&lt;br /&gt;&lt;br /&gt;So what ended up with was lighting of worse quality, compared deferred shading, and with no more room for special effects. Still, this rendering is much faster right? Well, I did some checks which I collected in &lt;a href="http://frictionalgames.blogspot.com/2010/10/pre-pass-lighting-redux.html"&gt;this post&lt;/a&gt;. It turns out that pre-pass is actually slower unless in very specific situations. None of the improvements I was hoping for turned out to be true.&lt;br /&gt;&lt;br /&gt;Still, I stuck to it. I am not sure why, but I guess I did not want to face the truth after having put so much time and effort into it. Going back to the old renderer was something I did not want to consider.&lt;br /&gt;&lt;br /&gt;Then last week, as I was starting making undergrowth for the terrain, it suddenly happened. I realized that I had to render the vegetation twice, creating more overdraw and making it a lot more cumbersome to implement. At this point I decided that I should seriously consider going back to the old deferred renderer. What I was most worried about about was that it would exclude us from consoles, but I found out that games like &lt;a href="http://en.wikipedia.org/wiki/Burnout_Paradise"&gt;Burnout Paradise&lt;/a&gt; used a deferred shader too, and assuring me that consoles would still be possible to do.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gameangst.com/?p=141"&gt;This post&lt;/a&gt; by Adrian Stone, with an in-depth discussion on the subject, sealed the deal for me and I got to work with going back to deferred shading. I had actually come across Adrian's post before when implemented pre-pass lighting, but never read it carefully. I guess it would not had made me stop then since I wanted to check it out myself, but it is interesting to see how one can convince oneself that something is correct, to the point of avoid contradictory sources. This is a very important lesson to learn and one should always be prepared to reconsider and "kill your darlings".&lt;br /&gt;&lt;br /&gt;Right now I have fully implemented the deferred shader again and even updated it a bit too. For one thing, I fixed so the decals support all the feature I had in the pre-pass lighting shader. Since we are aiming for a little higher specs (shader model 3 or 4) for our next game, I took that into account and was able to add some other fun stuff. Examples are colored specular and saving the emission in the g-buffer (allowing to cheaply to a variety of effects).&lt;br /&gt;&lt;br /&gt;I am really happy to back to the old renderer and now that I am adding new features things are going a lot smoother. The pre-pass renderer was not all in vain though. I cleaned up the rendering code a lot and it also made me rethink how some features could be added. Last but not least, it also reminded me that I should never get too attached to an idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-4960895388603858390?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/4960895388603858390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2010/12/bye-bye-pre-pass-lighting.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/4960895388603858390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/4960895388603858390'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2010/12/bye-bye-pre-pass-lighting.html' title='Bye, bye Pre-Pass lighting'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-3178613425128942405</id><published>2010-11-24T23:45:00.005+01:00</published><updated>2011-05-16T23:00:20.198+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Tech Feature: Terrain textures</title><content type='html'>I have finally finished the part of the terrain rendering that I spent most time researching and thinking about: texturing. This is a quite big problem, with many methods available, each having its own pros and cons.&lt;br /&gt;&lt;br /&gt;I was looking for something that gave a lot of freedom for the artists, that was fast and that allowed that the same algorithm could be used in both game and editor. The last point was especially important since we had much success with our &lt;a href="http://en.wikipedia.org/wiki/WYSIWYG"&gt;WYSIWYG&lt;/a&gt;-editor for Amnesia, and we did not want terrain to break this by requiring some complicated creation process.&lt;br /&gt;&lt;br /&gt;Even once I started working on the textures, I was unsure on the exact approach to take. I had at least decided to use some form of &lt;a href="http://en.wikipedia.org/wiki/Texture_splatting"&gt;texture splatting&lt;/a&gt; as the base. However there is a lot of ways to go about this, the two major directions being to either do it all in real-time or to rendering to cache textures in some manner.&lt;br /&gt;&lt;br /&gt;Before doing any proper work on the texturing algorithm I wanted to see how the texturing looked on some test terrain. In the image below I am simply project a tiling texture along the y-axis.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_QfesHslH-uc/TO18IQR9NvI/AAAAAAAAASs/u48z_ppsWdc/s1600/01_tile_test.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 296px; height: 222px;" src="http://2.bp.blogspot.com/_QfesHslH-uc/TO18IQR9NvI/AAAAAAAAASs/u48z_ppsWdc/s400/01_tile_test.jpg" alt="" id="BLOGGER_PHOTO_ID_5543223197614028530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Although I had checked other games, I was not sure how good this the y-axis projection would look. What I was worried of was that there would be a lot of stretching at slopes. It turned out that it was not that bad though and the worst case looks something like this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_QfesHslH-uc/TO19E6j5VMI/AAAAAAAAAS0/K5fHCtlRhPE/s1600/02_steep_slope.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 304px; height: 228px;" src="http://4.bp.blogspot.com/_QfesHslH-uc/TO19E6j5VMI/AAAAAAAAAS0/K5fHCtlRhPE/s400/02_steep_slope.jpg" alt="" id="BLOGGER_PHOTO_ID_5543224239755711682" border="0" /&gt;&lt;/a&gt;While visible it was not as bad as I first thought it would be. Seeing this made me more confident that I could project along the y-axis for all textures, something that allowed for the cached texture approach. If I did all blending in real-time I would have been able to have a special uv-mapping for slopes, but now that y-axis projection worked, this was no longer essential. However, before I could start on testing texture caching, I need to implement the blending.&lt;br /&gt;&lt;br /&gt;The plain-vanilla way to do is, is to have an alpha texture for each texture layer and then draw one texture layer after another. Instead of having many render passes, I wanted to do as much blending  in a single draw call. By using a an RGBA texture for the alpha I could do a maximum of 4 at the same time. I first considered this, but then I saw a paper by Martin Mittring from Crytek called &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;sqi=2&amp;amp;ved=0CBIQFjAA&amp;amp;url=http%3A%2F%2Fdeveloper.amd.com%2Fdocumentation%2Fpresentations%2Flegacy%2FChapter02-Mittring-Advanced_Virtual_Texture_Topics.pdf&amp;amp;rct=j&amp;amp;q=Advanced%20Virtual%20Texture%20Topics&amp;amp;ei=KILtTOuzLMTrOfL_yH8&amp;amp;usg=AFQjCNEdh0Vwy0b6ClkLgs5RbO5DFPkPyw&amp;amp;cad=rja"&gt;"Advanced virtual texture topics"&lt;/a&gt; where an interesting approach was suggested. By using an RGB texture up to 8 textures could be blended, by letting each corner of an &lt;a href="http://prosjekt.ffi.no/unik-4660/lectures04/chapters/jpgfiles/RGB_cube_color.jpg"&gt;rbg-cube&lt;/a&gt; be a texture. A problem with this approach is that each texture can only be nicely blended with 3 other corners (textures), restricting artists a bit. See below how texture layers are connected (a quick sketch by me):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TO2D-2_K4HI/AAAAAAAAAS8/k_Wpsrw5ApU/s1600/blend_rgb_cube.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 311px; height: 201px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TO2D-2_K4HI/AAAAAAAAAS8/k_Wpsrw5ApU/s400/blend_rgb_cube.jpg" alt="" id="BLOGGER_PHOTO_ID_5543231832298545266" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Side note: Yes, it would be possible to use an RGBA texture with this technique and let the corners of a hyper cube represent all of the textures. This would allow each texture type to have 4 textures it could blend with and a maximum of 16 texture layers. However, it would make life quite hard for artists when having to think in 4D...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When implemented it looks like this (note he rgb texture in the upper right corner):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_QfesHslH-uc/TO2EruLZ1JI/AAAAAAAAATE/E4iSldq4QCU/s1600/03_rgb_cube_blend_test2%2B8%2Btextures.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 311px; height: 233px;" src="http://3.bp.blogspot.com/_QfesHslH-uc/TO2EruLZ1JI/AAAAAAAAATE/E4iSldq4QCU/s400/03_rgb_cube_blend_test2%2B8%2Btextures.jpg" alt="" id="BLOGGER_PHOTO_ID_5543232603028051090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;However, I got into a few problems with this approach, that I first thought where graphics card problems, but later turned out to be my fault. During this I switch to using several layers of RGBA textures instead, blending 4 textures at each pass. When I discovered that is was my own error (doh!), I had already decided on using cache textures (more on that in a jiffy), which put less focus on render speed of the blending. Also this approach seemed nicer for artists. So I decided on a pretty much plain-vanilla approach,  meaning some work in vain, but perhaps I can have use for it later on instead.&lt;br /&gt;&lt;br /&gt;Now for texture caching. This method basically works as the &lt;a href="http://en.wikipedia.org/wiki/MegaTexture"&gt;mega texture&lt;/a&gt; method using in &lt;a href="http://en.wikipedia.org/wiki/Enemy_Territory:_Quake_Wars"&gt;Quake Wars&lt;/a&gt; and others. But instead of &lt;span style="font-style: italic;"&gt;loading &lt;/span&gt;pieces of a gigantic texture at run-time, pieces of the gigantic texture is &lt;span style="font-style: italic;"&gt;generated &lt;/span&gt;at run-time. To do this I have a several render textures in memory that are updated with the content depending on what is in view. Also, depending on the geometry LOD I use, I vary the texture resolution rendered to and make it cover a larger area. So texture close to the view use large textures and far away have much lower.&lt;br /&gt;&lt;br /&gt;I first thought had to do some special fading between the levels and was a bit concerned on how to do this. However, it turned out that this was taken care of the trilinear texture filtering quite nicely (especially when generating mipmaps for each rendered texture). When implemented the algorithm proved very fast as the texture does not have to be updated very often and I got very high levels of detail in the terrain.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Side note: The algorithm is actually used in &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Halo_Wars"&gt;Halo Wars&lt;/a&gt;&lt;span style="font-style: italic;"&gt; and is mentioned in a nice lecture that you can see &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.gdcvault.com/play/1277/HALO-WARS-The-Terrain-of"&gt;here&lt;/a&gt;&lt;span style="font-style: italic;"&gt;. Seeing this also made me confident that it was a viable approach.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The algorithm was not without problems though, for example the filtering between patches (different texture caches) created seams, as can be seen below:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_QfesHslH-uc/TO2LNvaI09I/AAAAAAAAATM/bwgLQw9qAvU/s1600/06_texture_seam%2Bproblem.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 282px; height: 212px;" src="http://2.bp.blogspot.com/_QfesHslH-uc/TO2LNvaI09I/AAAAAAAAATM/bwgLQw9qAvU/s400/06_texture_seam%2Bproblem.jpg" alt="" id="BLOGGER_PHOTO_ID_5543239784543605714" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;(click to enlarge, else it will not be seen)&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;The way I fixed this was simply to let each texture have a border that mimicked all of the surrounding textures. While the idea was simple, it was actually non-trivial to implement. For example, I started out with a 1 pixel border, but had to have a 8 pixel border for the highest 1024x1024 textures to be able to shrink it. Anyhow, I did get it working, making it look like this:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_QfesHslH-uc/TO2M4zAXGEI/AAAAAAAAATU/2U4-0DSJHqQ/s1600/06_texture_seam_fixed_with_border.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 234px; height: 175px;" src="http://2.bp.blogspot.com/_QfesHslH-uc/TO2M4zAXGEI/AAAAAAAAATU/2U4-0DSJHqQ/s400/06_texture_seam_fixed_with_border.jpg" alt="" id="BLOGGER_PHOTO_ID_5543241623755233346" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;(Again, click image to see full size!)&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;Next up was improving the blending. The normal blending for texture splatting can be quite boring and instead of just using a linear blend I wanted to spice it up a bit. I found a very nice technique for this on Max McGuire's blog, which you can see &lt;a href="http://www.m4x0r.com/blog/2010/05/blending-terrain-textures/"&gt;here&lt;/a&gt;. Basically each material gets an alpha that determines how fast each part of it fades. The algorithm I ended up with was a bit different from the one outlined in Max's blog and looks like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;final_alpha = clamp( (dissolve_alpha- (1.0 - blend_alpha ) / (dissolve_alpha * (1-fade_start), 0.0, 1.0);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Where &lt;span style="font-style: italic;"&gt;final_alpha&lt;/span&gt; is used to blend the color for a texture and &lt;span style="font-style: italic;"&gt;fade_start&lt;/span&gt; determines at which alpha value the fade starts (this allows the texture to disappear piece by piece). &lt;span style="font-style: italic;"&gt;blend_alpha&lt;/span&gt; is gotten from the blend texture, and &lt;span style="font-style: italic;"&gt;dissolve_alpha&lt;/span&gt; is in the texture, telling when parts of the texture fades out.&lt;br /&gt;&lt;br /&gt;So instead of having to have blending like this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_QfesHslH-uc/TO2QncPbpfI/AAAAAAAAATc/nM-43LJ9--8/s1600/07_blend_normal.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 272px; height: 203px;" src="http://4.bp.blogspot.com/_QfesHslH-uc/TO2QncPbpfI/AAAAAAAAATc/nM-43LJ9--8/s400/07_blend_normal.jpg" alt="" id="BLOGGER_PHOTO_ID_5543245723633165810" border="0" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_QfesHslH-uc/TO2QncPbpfI/AAAAAAAAATc/nM-43LJ9--8/s1600/07_blend_normal.jpg"&gt;&lt;br /&gt;&lt;/a&gt;It can look like this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_QfesHslH-uc/TO2Q40VVEBI/AAAAAAAAATs/MIYebNUIHU0/s1600/07_blend_dissolve_alpha.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 269px; height: 201px;" src="http://4.bp.blogspot.com/_QfesHslH-uc/TO2Q40VVEBI/AAAAAAAAATs/MIYebNUIHU0/s400/07_blend_dissolve_alpha.jpg" alt="" id="BLOGGER_PHOTO_ID_5543246022158127122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now next step for me was to allow just not diffuse textures, but also normal mapping and specular. This was done by simply rendering to more render targets, so each type had a separate texture. This would not have been possible to do if I had blended in real-time as I would have reached the normal limit of 16 texture limits quite fast. But now I rendered them separately, and when rendering the final real-time texture I only need to use a texture for each type (taken from the cache textures). Here is how all this combined look:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_QfesHslH-uc/TO2R3y2V1-I/AAAAAAAAAT0/s305Q6I03s4/s1600/08_nmap_and_spec.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_QfesHslH-uc/TO2R3y2V1-I/AAAAAAAAAT0/s305Q6I03s4/s400/08_nmap_and_spec.jpg" alt="" id="BLOGGER_PHOTO_ID_5543247104091477986" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;You can see small version of each cache texture at the top.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Now for a final thing. Since the texture cached are not rendered very often I can do quite a lot of heavy stuff in them. And one thing I was sure we needed was decals. What I did was simply to render a lot of quads to the textures which are blended with the existing texture. This can be used to add all sorts of extra detail to map and almost require no extra power. Here is an example:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TO2So8-6J4I/AAAAAAAAAT8/A6_HYqZjVVc/s1600/09_decals_nmap_spec.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TO2So8-6J4I/AAAAAAAAAT8/A6_HYqZjVVc/s400/09_decals_nmap_spec.jpg" alt="" id="BLOGGER_PHOTO_ID_5543247948625356674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I am pretty happy with these features for now although there are some stuff to add. One thing I need to do is some kind of real-time conversion to DXT texture for the caches. This would save quite a lot of memory (4 - 8 times less would be used by terrain) and this would also speed up rendering. Another thing I want to investigate is to add shadows, SSAO and other effects when rendering each cache texture. Added to this are also some bad visual popping when levels are changed (this only happens when zooming out a steep angle though) that I probably need to fix later on.&lt;br /&gt;&lt;br /&gt;Now my next task will be to add generated undergrowth! So expect to see some swaying grass in the next tech feature!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-3178613425128942405?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/3178613425128942405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2010/11/tech-feature-terrain-textures.html#comment-form' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/3178613425128942405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/3178613425128942405'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2010/11/tech-feature-terrain-textures.html' title='Tech Feature: Terrain textures'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QfesHslH-uc/TO18IQR9NvI/AAAAAAAAASs/u48z_ppsWdc/s72-c/01_tile_test.jpg' height='72' width='72'/><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-721598420912706152</id><published>2010-11-22T18:55:00.002+01:00</published><updated>2011-05-16T23:01:03.593+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='psychology'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>How the player becomes the protagonist</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;In &lt;a href="http://www.amnesiagame.com/"&gt;Amnesia &lt;/a&gt;one of the main goals was for the player to become the protagonist. We wanted the player to think "I am" instead of "Daniel is" and in that way make it a very personal experience. The main motivation for this was of course to make the game scary, but also for the memories that were revealed to feel more personal for the player.&lt;br /&gt;&lt;br /&gt;In this post I will go through some of the design thinking we used, problems it caused and how it eventually turned out. I will also briefly discuss the future of this sort of design.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Playing a role&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;First of all, it is not required that the protagonist matches the player character in order for the player to "become" him/her. As an extreme example, I see no problem with a game featuring an animal as lead character to have the player become the protagonist. The idea is not that the player should match the physical / mental protagonist, but rather that he/she should be able to roleplay him/her and to feel like really being him/her.&lt;br /&gt;&lt;br /&gt;There is of course limits to this kind of roleplaying and certain characteristics might make it impossible for a player to feel a connection. This is the same for works in other media where the reader/viewer is meant to feel empathy toward one or more characters. Sometimes there is some mismatch that removes this feeling, and much of the work's power is lost. Note that this sort of friction is more likely to happen because of the personality of the character and not so much because the physical appearance. A simple example of this would be that  protagonists in Disney movies are often very easy to relate to despite being animals.&lt;br /&gt;&lt;br /&gt;Considering this, the general rule that we used was not to force emotions and actions that players were unlikely to accept. When the protagonist is displayed as doing or feeling something, we had to make sure that player could agree to this.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Getting into the act&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;In film or literature it is possible for the audience to not like the protagonist at the start, but then make them feel a connection over the course of the work. This is not possible to do in a videogame, as players must start acting out their role as soon as the game starts. If the situation does not feel comfortable at the start, then it will be very hard to connect.&lt;br /&gt;&lt;br /&gt;Because of this, videogames need to have a tutorial of some sort where the player gets used to the idea of playing a certain character. During this phase it is also important that the player learns how to act as the protagonist, so they later act accordingly. I do not think this can be done solely on a mechanics basis, as the trial and error involved will most likely just frustrate. This is largely dependent on the space of actions available though and sometimes players will quickly realize the role they are meant to play.&lt;br /&gt;&lt;br /&gt;In Amnesia we made the choice to be very upfront on what is expected by the player. This is accomplished by displaying messages before the game starts, telling the player what to do. The main message was a rather simple one, simply saying that the player should not try and fight any monsters. As this is pretty close to what most people would do in real-life, we basically just had to tell players that the game was not a first-person-shooter and the rest came naturally. If the game would have required more specific behavior from the player, more info might have been needed.&lt;br /&gt;&lt;br /&gt;Once the player accepts this role and is ready to play, the next step is to provide an interface between the player and world. Here a bunch of problems arises and it becomes less clear what is the right thing to do.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;What emotions to hide? &lt;/span&gt;&lt;br /&gt;First of all, we decided to remove any form of cut-scene from the game. Upon entering a cut-scene, there is a large distinction between the kind of control a player has during normal play, creating a discrepancy that weakens the player-protagonist connection. In our previous effort, Penumbra, we had little of these, but there were still places when control was taken from the player for longer periods. In Amnesia, we only used very short "view hijacks" to display points of interest. These were not very frequent and were meant to be seen as reflexes, which seemed to be accepted for most players. Some were a bit annoyed by them though and we are not sure they were that necessary.&lt;br /&gt;&lt;br /&gt;Next thing we decided on was that, unlike Penumbra, Daniel (the protagonist) should never comment on the situation. In Penumbra the most obvious place this happens is when a spider is spotted and the text "A spider! I do not like spiders" appear. This sort of interface where the protagonist make subjective remarks on the game world can very easily break the connection between player-and-protagonist.&lt;br /&gt;&lt;br /&gt;We tried to skip descriptive texts completely, but this caused problems when dealing with puzzles. If players start thinking about a puzzle "incorrectly", then it is imperative that they get on the right track. In these cases, the easiest (and many times only) way to communicate this to the player is by using texts. We tried to add as many solutions to avoid having texts, but it only works so far, and eventually some kind of explanatory / hinting text was needed. If not the player would have gotten stuck instead and we thought this would be worse than having the texts. In order to keep the player-protagonist connection, we kept all of this texts very objective and impersonal, careful to not force emotions on the player.&lt;br /&gt;&lt;br /&gt;Side note: A problem we had when removing subjective comments was the hints were much harder to write. Not being able to let the protagonist guess, use insights or personal knowledge proved quite tricky at times.&lt;br /&gt;&lt;br /&gt;We did not remove all of the subjective protagonist emotions though. We kept the more autonomous physical actions such as panting and heart beats, a choice that proved slightly controversial. After releasing the &lt;a href="http://www.youtube.com/watch?v=JEHPwAvrc_U"&gt;teaser video&lt;/a&gt; some people argued that having these sort of reactions pulled them out of the experience. Others felt that it just heightened the experience. Once the game was released, the main complaint came at a very specific feature, namely the "sanity damage"-reaction (that happens whenever the player witnesses something frightening). In the end, we estimate that something like 15-30% of the players disliked these kind of effects.&lt;br /&gt;&lt;br /&gt;For the people that did not dislike these effects, many felt it increased the connection to the protagonist. For example feeling as if their own heart beat faster when the protagonist's did or becoming startled when a "sanity damage"-effect told them to. This is a really interesting subject and while using these kind of effects might detract the experience for some, I think it might be worth taking the risk. So far we have mostly tried this for very simple situations, but I believe it can used to evoke much more complex emotions.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Bringing back memories&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;An important part of Amnesia is that players slowly learn the background of the character they are playing. As the name suggest, the game starts out with the protagonist having amnesia that sets the player and protagonist on equal footing. By progressing through the game both the player and the protagonist gain access to increasingly more lost memories, slowly getting an idea of how Daniel ended up in the situation he currently is in.&lt;br /&gt;&lt;br /&gt;The main mechanic we used to deliver these lost memories was through diary entries scattered throughout the game. We decided to voice these in order for them to be more interesting, but I think this backfired a bit. What many players seem to have experienced was that Daniel was reading the entries aloud. Thus this proved to be a large distraction and must have weakened the player-protagonist bond for many. What we intended was for the player to hear Daniel's voice as the voice of their old self. This was probably way too obscure though and it might have been better to just had them as pure text.&lt;br /&gt;&lt;br /&gt;Added to this was the fact that Daniel actually spoke at some points. Some lines are spoken during the start of the game and some during gameplay if sanity is too low. Again, this was intended to be lost memories, but many players did not perceive it as such and instead thought it was strange to hear Daniel talking.&lt;br /&gt;&lt;br /&gt;As mentioned earlier, we wanted the player to feel as if the lost memories were their own. But because of the way the memory content was delivered I think the effect was not what it could have been.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Dialog&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;A major obstacle when trying to create strong a player-protagonist connection is that one often end up with the so called "silent protagonist". The reason for this is simply that that whenever spoken words are required, the lines spoken by the protagonist must be predetermined and chosen for the player. Either, the character simply speaks a scripted line or the player chooses from a list canned responses. Using the first type allows for more fluent conversation but removes any interaction. The second choice provides some interaction but makes conversations stiff (as other actions are only possible when in "dialog mode") and might lack options the player finds appropriate to say. Some hybrid solutions exist (like in &lt;a href="http://en.wikipedia.org/wiki/Blade_Runner_%281997_video_game%29"&gt;Blade Runner&lt;/a&gt; where the player just sets an attitude) but the problem still remains.&lt;br /&gt;&lt;br /&gt;Side note: Interestingly, the problem is quite opposite in Interactive Fiction. Instead of lacking options for the player, the characters one speaks to lack the intelligence to understand all possible (and fitting) sentences.&lt;br /&gt;&lt;br /&gt;So how to solve this? Well, first of all it is worth noting that the systems mentioned above can still be used if applied carefully. If the player's emotions are in line with the protagonist's then simply having short scripted lines could work very fine. To make this work I also think it is important that the protagonist's voice is a recurring element of the game to get the player used to it. If it just pops up on rare occasions, the illusion is easily broken. &lt;a href="http://en.wikipedia.org/wiki/Call_of_Cthulhu:_Dark_Corners_of_the_Earth"&gt;Call of Cthulhu&lt;/a&gt; and the &lt;a href="http://en.wikipedia.org/wiki/Thief_%28series%29"&gt;Thief series&lt;/a&gt; use this to some success (I think it is at its best when short, in-game and the player is free to do other actions at the same time).&lt;br /&gt;&lt;br /&gt;The multiple choice system is also possible to use, but I think it comes with more problems. The biggest is that since the player gets a choice it is more obvious when the game does supply the wanted action. With other actions such as walking and fighting, it is easier to set up rules for the player on what is allowed and not. Conversations have a much wider scope and it is much harder to keep it consistent. It is also much harder to display the options in a way that feels okay. Unless they entire game is controlled with a menu-like system, having a menu pop up for a specific action is very distracting.&lt;br /&gt;&lt;br /&gt;In Amnesia we chose to avoid conversations as much as possible and there are only two occasions when you meet another character  face-to-face. And in only one of these were there any real opportunity for a conversation (with a tortured man called Agrippa). The way we went about it was for Daniel to be silent, but for Agrippa to respond as if Daniel had spoken. This gave the dialogs (or rather monologue) more flow but many players found this quite disconnecting. They found it strange that Daniel silently spoke back, especially as many was sure they had heard him speak before when reading diaries. On the other hand, it might have been even more strange if Agrippa had never asked Daniel anything and simply just spoken in direct orders or in a lecturing manner. Agrippa was put into game pretty late in development and we did not gave it as much thought as we should have, so this might have been solved better.&lt;br /&gt;&lt;br /&gt;When creating a videogame with a strong player-protagonist connection, the best option is probably to fit the game world around a protagonist that does not require none or very simple (as in yes-no or simple vocabulary) speech. This way, the player-protagonist connections is more easily kept and consistency is maintained. An example of this is &lt;a href="http://en.wikipedia.org/wiki/System_Shock"&gt;System shock&lt;/a&gt; where all characters are dead or talking through a one-way radio. Another example is &lt;a href="http://en.wikipedia.org/wiki/Bioshock_2"&gt;BioShock 2&lt;/a&gt; where the protagonist is a dumb robot that is not expected to speak. This of course put limits on what kind of experiences that can be made, but might be the only way to create a strong player-protagonist experience.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Problems to overcome&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;It is not only dialog that is a large problem when trying to make player and protagonist one and the same. Since we are trying to craft an experience where the players themselves are a central ingredient, much pressure is put on them.&lt;br /&gt;&lt;br /&gt;A major problem is that it is hard to let the protagonist have any special knowledge. This is a reason why stories starring amnesiacs, outsiders or cannon-fodder are so common; things becomes very complicated  if players need to have a deeper understanding of their surroundings. A way to solve this is to force the player into learning things before starting the game. But since reading a novel before starting the game is not really possible, the amount of information that can be given is quite limited. Another way to solve this is to have some sort of tutorial texts popping up, but this is of course very distracting.&lt;br /&gt;&lt;br /&gt;Another issue, is that the player and protagonist might not share the same goals. For instance the protagonist might be out for revenge, but the player might not be interested in this. This makes games of this type end up with fairly simplistic motivations. It might be possible to give some kind of instructions before the game starts, but that does not seem very good to me. Better would be to provide an experience at start that sets up the player's mood to match the protagonist's. This is easier said than done though.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Why bother?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;So why go into all of this trouble of making blurring the line between player and protagonist? For one thing, I think it is something that is extremely interesting to explore.  So far games that try to create strong player-protagonist bonds are mostly about killings things and exploration into other themes is pretty much uncharted.&lt;br /&gt;&lt;br /&gt;Secondly, it is something that that is unique to the medium. In no other media can the audience step into works of art themselves. And just because of this I think it demands to be experimented with. Instead of looking too much to film or other art as inspiration, we should try and do things in ways that only videogames can.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Your thoughts?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;We would be very interested in hearing your thoughts on this. How did you feel like you connected with the protagonist in Amnesia? Was there any especially large obstacles for you to have a strong connection?&lt;br /&gt;&lt;br /&gt;Also, in case you are interested in more discussions on this, check out the previous post on self-location in games:&lt;br /&gt;&lt;a href="http://frictionalgames.blogspot.com/2010/09/where-is-your-self-in-game.html"&gt;http://frictionalgames.blogspot.com/2010/09/where-is-your-self-in-game.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-721598420912706152?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/721598420912706152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2010/11/how-player-becomes-protagonist.html#comment-form' title='26 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/721598420912706152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/721598420912706152'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2010/11/how-player-becomes-protagonist.html' title='How the player becomes the protagonist'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><thr:total>26</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-4697353877037432846</id><published>2010-11-08T23:30:00.001+01:00</published><updated>2011-05-16T23:01:43.158+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><title type='text'>Tech Feature: Noise and Fractals</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Introduction&lt;/span&gt;&lt;br /&gt;Now that I have a working algorithm for terrain rendering, I wanted to try making some of it procedurally. This would not be used in order to generate levels, but instead to help artists add some extra detail and perhaps for some effects. The natural world is very noisy and fractal place, so in order a to get a nice looking environment, these two features are crucial.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Noise&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;When doing noise for natural phenomena, one normally wants some kind of coherent noise. Normal white noise, when nearby pixels are not correlated in any way, looks like this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TNhuNOS2TPI/AAAAAAAAAR0/0kag8ce2lrQ/s1600/noise.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 274px; height: 205px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TNhuNOS2TPI/AAAAAAAAAR0/0kag8ce2lrQ/s400/noise.jpg" alt="" id="BLOGGER_PHOTO_ID_5537296915306532082" border="0" /&gt;&lt;/a&gt;This is no good when one wants generate terrain and the like. Instead the noise should have a more smooth feel to it. To get achieve this, one fades between different random values, creating smooth gradients. A way to do this is to generate a pseudo-random number (pseudo because a certain coordinate, will always return the same random value) for whole number points, and then let the fractional parts between these be interpolations.  For example, consider the 1D point 5.5. To get the value for this coordinate the pseudo-random values for 5 and 6 are gotten. Lets say they are 10 and 15. These are then interpolated and since 5.5 lies right between them, it is given the value 12.5 ( (10+15)/2 ). This technique is actually very similar to image magnification, where the whole numbers represent the original pixels.&lt;br /&gt;&lt;br /&gt;Generating random numbers this way, something like this is gotten:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TNhwHjDwkbI/AAAAAAAAAR8/ecztsKBJ6EY/s1600/00_simple_linear.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 332px; height: 249px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TNhwHjDwkbI/AAAAAAAAAR8/ecztsKBJ6EY/s400/00_simple_linear.jpg" alt="" id="BLOGGER_PHOTO_ID_5537299016824426930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This looks okay, but the interpolations are not very smooth and looks quite ugly. This can be fixed by using a better kind of interpolation. One way to to do this is using &lt;a href="http://local.wasp.uwa.edu.au/%7Epbourke/miscellaneous/interpolation/"&gt;cosine-interpolation&lt;/a&gt;, which smoothen the transition a bit.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TNhxOCB6-VI/AAAAAAAAASE/rdEu_XiOVW0/s1600/00_simple_cosine.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 317px; height: 238px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TNhxOCB6-VI/AAAAAAAAASE/rdEu_XiOVW0/s400/00_simple_cosine.jpg" alt="" id="BLOGGER_PHOTO_ID_5537300227729062226" border="0" /&gt;&lt;/a&gt;This looks a lot better, but the height map image still looks a bit angular, and not that smooth. However, we can smooth it even further by using &lt;a href="http://local.wasp.uwa.edu.au/%7Epbourke/miscellaneous/interpolation/"&gt;cubic interpolation&lt;/a&gt;. This ties nicely into the image magnification analogy I made early as cubic is a common type of filter for that. It works by not only taking into account the two points to blend between, but the points next to them as well. In our above example this would be the points 4 and 7 (which are next to 5 and 6). It looks like this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_QfesHslH-uc/TNhyEtnSoDI/AAAAAAAAASM/bx_Q3-y6qjI/s1600/00_simple_cubic.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 275px; height: 206px;" src="http://3.bp.blogspot.com/_QfesHslH-uc/TNhyEtnSoDI/AAAAAAAAASM/bx_Q3-y6qjI/s400/00_simple_cubic.jpg" alt="" id="BLOGGER_PHOTO_ID_5537301167141462066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This gives a much smoother appearance, but it (as well as the other algorithms above) has some other problems. Because the height values for each whole pixel are completely random, it is gives a very chaotic impression. Many times one wants a more uniform look instead. To fix this something called &lt;a href="http://en.wikipedia.org/wiki/Perlin_noise"&gt;Perlin noise&lt;/a&gt;  is used. What makes this algorithm extra nice is that it based on gradients instead of absolute values for each pixel. Each whole pixel is assumed to have the value 0, and then a gradient determines how the value changes between it and a neighboring pixel. This allows it to be much more uniform look:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_QfesHslH-uc/TNhzweec9pI/AAAAAAAAASU/GRlVjK3XApI/s1600/00_perlin.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 256px; height: 191px;" src="http://4.bp.blogspot.com/_QfesHslH-uc/TNhzweec9pI/AAAAAAAAASU/GRlVjK3XApI/s400/00_perlin.jpg" alt="" id="BLOGGER_PHOTO_ID_5537303018503730834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Because of it is based on gradients, it also makes it possible to take the derivative of it, which can be used to generate normal maps (something I am not using though). It is also quite fast, pretty much identical to the cosine interpolation. The cubic interpolation, which requires more random samples, is almost twice as slow.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Fractals&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Now that a coherent noise function is implemented it can be used to generate some terrain. The screens above does not look that realistic though and to improve the look something called &lt;a href="http://en.wikipedia.org/wiki/Fractional_Brownian_motion"&gt;Fractal Brownian Motion&lt;/a&gt; can be used. This is a really simple technique and works, like all fractals, by iterating an algorithm over and over. What is iterated is the noise function, starting off with a large distance between the whole pixel inputs (low frequency) and then using smaller and smaller distances (higher frequency) for each iteration. The higher the frequency the smaller the influence, resulting in the low frequency noise creating the large scale features and the high frequency creating the details.&lt;br /&gt;&lt;br /&gt;The result of doing so can produce something like this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TNh2GQE5tnI/AAAAAAAAASc/GfhkJAF0PsI/s1600/01_terrain_cubic_256.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 289px; height: 216px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TNh2GQE5tnI/AAAAAAAAASc/GfhkJAF0PsI/s400/01_terrain_cubic_256.jpg" alt="" id="BLOGGER_PHOTO_ID_5537305591618844274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Suddenly we get something that looks a lot more like real terrain!&lt;br /&gt;&lt;br /&gt;There is lots of stuff that can be done with this and often very simple alteration can lead to interesting results. Here is some iterated fractal noise that as been combined with a sine-function afterwards:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_QfesHslH-uc/TNh2wvOiBxI/AAAAAAAAASk/9-JZlN6-dq4/s1600/03_terrain_perlin_1024.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 366px; height: 275px;" src="http://3.bp.blogspot.com/_QfesHslH-uc/TNh2wvOiBxI/AAAAAAAAASk/9-JZlN6-dq4/s400/03_terrain_perlin_1024.jpg" alt="" id="BLOGGER_PHOTO_ID_5537306321535239954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;End notes&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;There is a lot more fun stuff that can be done using noise and I have just scratched the surface with this. It is a really versatile method with tons of usages for graphics. The problem is that that it can be quite slow though and my implementation will not be used for any real-time effects. However, Perlin noise can be simulated on the GPU, allowing it for realtime usage, and this is something I might look into later.&lt;br /&gt;&lt;br /&gt;Next up is the hardest part of the terrain rendering - texturing! I am actually still not sure how to do it, but have tons of ideas. Can never get enough of info though, so if anybody know any good papers on terrain texturing, please share!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-4697353877037432846?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/4697353877037432846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2010/11/tech-feature-noise-and-fractals.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/4697353877037432846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/4697353877037432846'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2010/11/tech-feature-noise-and-fractals.html' title='Tech Feature: Noise and Fractals'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QfesHslH-uc/TNhuNOS2TPI/AAAAAAAAAR0/0kag8ce2lrQ/s72-c/noise.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-7400061426137524978</id><published>2010-11-04T19:30:00.003+01:00</published><updated>2011-05-16T23:02:08.792+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Tech Feature: Terrain geometry</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Introduction&lt;/span&gt;&lt;br /&gt;The past two weeks I have been working on terrain, and for two months or so before that I have (at irregular intervals) been researching and planning this work. Now finally the geometry-generation part of the terrain code is as good as completed.&lt;br /&gt;&lt;br /&gt;The first thing I had to decide was what kind of technique to use. There are tons of ways to deal with terrain and a lot of papers/literature on it. I have some ideas on what the super secret project will need in terms of terrain, but still wanted to to keep it as open as possible so that the tech I made now would not become unusable later on. Because of this I needed to use something that felt customizable and scalable, and be able to fit the needs that might arise in the future.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Generating vertices&lt;/span&gt;&lt;br /&gt;What I decided on was a an updated version of &lt;a href="http://en.wikipedia.org/wiki/Geomipmapping"&gt;geomipmapping&lt;/a&gt;. My main resources was the original paper from 2000 (found &lt;a href="http://www.flipcode.com/archives/Fast_Terrain_Rendering_Using_Geometrical_MipMapping.shtml"&gt;here&lt;/a&gt;) and the terrain paper for the &lt;a href="http://en.wikipedia.org/wiki/Frostbite_Engine"&gt;Frostbite Engine&lt;/a&gt; that power Battlefield: Bad Company (see presentation &lt;a href="http://www.slideshare.net/repii/terrain-rendering-in-frostbite-using-procedural-shader-splatting-presentation"&gt;here&lt;/a&gt;).  Basically, the approach works by having a &lt;a href="http://en.wikipedia.org/wiki/Heightmap"&gt;heightmap &lt;/a&gt;of the terrain and then generate all geometry on the GPU. This limits the game to Shader Model 3 cards (for NVIDIA at least, ATI only has it in Shader model 4 cards in OpenGL) as the height map texture needs to be accessed in the vertex shader. This means fewer cards will be able to play the game, but since we will not release until 2 years or so from now that should not be much of a problem. Also, it would be possible to add a version that precomputes the geometry if it was really needed.&lt;br /&gt;&lt;br /&gt;The good thing about doing geomipmapping on the GPUis that it is very easy to vary the amount of detail used and it saves a lot of memory (the heightmap takes about about a 1/10 of what the vertex data does). Before I go into the geomipmapping algorithm, I will first discuss how to generate the actual data. Basically, what you do is render one or several vertex grids that read from the heightmap and then offset the y-coordinate for each vertex. The normal is also generated by taking four height samples around current heightmap texel. Here is what it looks in in the G-buffer when normal and depth are generated from a heightmap (which is also included in the image):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_QfesHslH-uc/TNLqRiqZN6I/AAAAAAAAAQ0/LNrEHzvkprQ/s1600/01_normal_and_depth.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 456px; height: 136px;" src="http://4.bp.blogspot.com/_QfesHslH-uc/TNLqRiqZN6I/AAAAAAAAAQ0/LNrEHzvkprQ/s400/01_normal_and_depth.jpg" alt="" id="BLOGGER_PHOTO_ID_5535744479075055522" border="0" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_QfesHslH-uc/TNLjIIh5RzI/AAAAAAAAAQk/T5IoDoMt-_Y/s1600/01_normal_and_depth.jpg"&gt;&lt;br /&gt;&lt;/a&gt;Since I spent some time with figuring out normal generation algorithm, here is some explaination on that. The basic algorithm is as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;h0 = height(x+1, z);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;h1 = height(x-1, z);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;h2 = height(x, z+1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;h3 = height(x, z+1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;normal = normalize(h1-h0,  2 * height_texel_ratio, h3-h2);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What happens here is that the slope is calculated along the x-axis and then z-axis. Slope is defined by:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;dx= (h1-h0) / (x1-x0)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;or put in words, the difference in height divided by the difference in length. But since the distance is always 2 units for both the x and z, slope we can skip this division and simply just go with the difference in height. Now for the y-part, which we wants to be 1 when both slopes are 0 and then gradually lower as the other slopes get higher. For this algorithm we set it to 2 though since we want to get the rid of the division with 2 (which means multiplying all axes by 2). But a problem remains, and that is that actual height value is not always in the same units as the heightmap texels spacing. To fix this, we need to add a multiplier to the y-axis, which is calculated like this:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;height_texel_ratio = &lt;/span&gt;&lt;span style="font-style: italic;"&gt;max_height / unit_size&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I save the heightmap in a normalized form, which means all values are between 1-0, and &lt;span style="font-style: italic;"&gt;max_heigh&lt;/span&gt;t is what each value is multiplied with when calculating the vertex y-value. The &lt;span style="font-style: italic;"&gt;unitsize &lt;/span&gt;variable is what a texel represent in world space.&lt;br /&gt;&lt;br /&gt;This algorithm is not that exact as it does not not take into account the diagonal slopes and such. It works pretty nice though and gives nice results. Here is how it looks when it is shaded:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_QfesHslH-uc/TNLpQmxtOWI/AAAAAAAAAQs/t8LZGMFMsxM/s1600/02_first_shade.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 268px; height: 201px;" src="http://4.bp.blogspot.com/_QfesHslH-uc/TNLpQmxtOWI/AAAAAAAAAQs/t8LZGMFMsxM/s400/02_first_shade.jpg" alt="" id="BLOGGER_PHOTO_ID_5535743363487971682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Note that here are some bumpy surfaces at the base the hills. The is because of precision issues in the heightmap  I was using (only used 8bits in the first tests) and is something I will get back to.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Geomipmapping&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The basic algorithm is pretty simple and is basically that the longer a part of the terrain is from the camera, the less vertices are used the render it. This works by having a single grid mesh, called patch, that is drawn many times, each time reperesenting a different part of the terrain. When a terrain patch is near the camera, there is a 1:1 vertex-to-texel coverage ratio, meaning that the grid covers a small part of the terrain in the highest possible resolution. Then as patches gets further away, the ratio gets smaller, and and grid covers a greater area but fewer vertices. So for really far away parts of the environment the ratio might be something like 1:128. The idea is that because the part is so far off the details are not visible anyway and each ratio can be a called a &lt;a href="http://en.wikipedia.org/wiki/Level_of_detail"&gt;LOD&lt;/a&gt;-level.&lt;br /&gt;&lt;br /&gt;The way this works internally is that a &lt;a href="http://en.wikipedia.org/wiki/Quad_tree"&gt;quadtree &lt;/a&gt;represent different the different LOD-levels. The engine then traverse this tree and if a node is found beyond a certain distance from the camera then it is picked. The lowest level nodes, with the smallest vertex-to-pixel ratio, are always picked if no other parent node meet the distance requirement. In this fashion the world is built up each frame.&lt;br /&gt;&lt;br /&gt;The problem is now to determine what distance that a certain LOD-level is usable from and the original paper has some equations on how to do this. This is based on the change in the height of the details, but I skipped having such calculations and just let it be user set instead. This is how it looks in action:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TNLudH20gXI/AAAAAAAAAQ8/zUhFj9Hw9f4/s1600/03_mipmap_levels.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 292px; height: 220px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TNLudH20gXI/AAAAAAAAAQ8/zUhFj9Hw9f4/s400/03_mipmap_levels.jpg" alt="" id="BLOGGER_PHOTO_ID_5535749076084359538" border="0" /&gt;&lt;/a&gt;White (grey) areas represent a 1:1 ratio, red 1:2 and green 1:4.  Now a problem emerges when using  grids of different levels next to one another: You get t-junctions where the grids meet (because where the 1:1 patch has two grid quads, the 2:1 has only one) , resulting in visible seams. The fix this, there needs to be special grid pieces in the intersections that create a better transition. The pieces look like this (for a 4x4 grid patch):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TNLxUT9rEoI/AAAAAAAAARE/h2Ueez-DxbY/s1600/04_patch_types.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 167px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TNLxUT9rEoI/AAAAAAAAARE/h2Ueez-DxbY/s400/04_patch_types.jpg" alt="" id="BLOGGER_PHOTO_ID_5535752223250387586" border="0" /&gt;&lt;/a&gt;While there are 16 border permutations in total, only 9 are needed because of how the patches are generated from the quadtree. The same vertex buffer is used for all of these types of patches, and only the index buffer is changed, saving some storage and speeding up rendering a bit (no switch of vertex buffer needed).&lt;br /&gt;&lt;br /&gt;The problem is now that there must be a maximum of 1 in level difference between patches. To make sure of this the distance checked, which I talked about earlier, needs to take this into account. This distance is calculated by taking the minimum distance from the previous level (0 for lowest ratio) and add the diagonal of the AABB (where height is max height) from the previous level.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Improving precision&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;As mentioned before, I used a 8bit texture for height for the early tests. This gives pretty lousy precision so I needed to generate one with higher bit depth. Also, older cards must use a 32bit float shader in the vertex shader, so having this was crucial in several ways. To get hold of this texture I used the demo version of &lt;a href="http://www.geocontrol2.com/e_index.htm"&gt;GeoControl&lt;/a&gt; and generated a 32bit heightmap in a raw uncompressed format. Loading that into the code I already had gave me this pretty picture:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_QfesHslH-uc/TNL1Fw9oYAI/AAAAAAAAARM/UresQpEU7l4/s1600/07_4096_terrain.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 302px; height: 226px;" src="http://4.bp.blogspot.com/_QfesHslH-uc/TNL1Fw9oYAI/AAAAAAAAARM/UresQpEU7l4/s400/07_4096_terrain.jpg" alt="" id="BLOGGER_PHOTO_ID_5535756371383312386" border="0" /&gt;&lt;/a&gt;To test how the algorithm worked with larger draw distances, I scaled up the terrain to cover 1x1 km and added some fog:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_QfesHslH-uc/TNL1bstnacI/AAAAAAAAARU/ct-ihaP1zGw/s1600/08_4096_terrain_and_fog.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_QfesHslH-uc/TNL1bstnacI/AAAAAAAAARU/ct-ihaP1zGw/s400/08_4096_terrain_and_fog.jpg" alt="" id="BLOGGER_PHOTO_ID_5535756748199520706" border="0" /&gt;&lt;/a&gt;The sky texture is not very fitting. But I think this shows that the algorithm worked quite well. Also note that I did no tweaking of the LOD-level distances or patch size, so it just changes LOD level as soon as possible and probably renders more polygons because of the patch size.&lt;br /&gt;&lt;br /&gt;Next up I tried to pack the heightmap a bit since I did not want it to take up too much disk space. Instead of writing some kind of custom algorithm, I went the easy route and packed the height data in the same manner as I do with depth in the renderer's G-buffer. The formula for this is:&lt;br /&gt;&lt;span style="font-size:85%;"&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;r = height*256&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;g = fraction(r)*256&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;b = fraction(g)*256&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This packs the normalized height value into three bit color channels. This 24 bit data gives pretty much all the accuracy needed and for further disk compression I also saved it as png (which has non-lossy compression). It makes the heightmap data 50% smaller on disk and it looks the same in game when unpacked:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TNL3_aAjW8I/AAAAAAAAARc/HEgFuZlmyaI/s1600/10_png_compressed_rgb_packed_24bit.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 150px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TNL3_aAjW8I/AAAAAAAAARc/HEgFuZlmyaI/s400/10_png_compressed_rgb_packed_24bit.jpg" alt="" id="BLOGGER_PHOTO_ID_5535759560677219266" border="0" /&gt;&lt;/a&gt;I also tried to pack it as 16 bit, only using R and B channel, which also looked fine. However when I tried saving the 24bit packed data as a jpeg (which uses lossy compresion) the result was less than nice:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TNL4Wr7quuI/AAAAAAAAARk/fVRl8y-86AU/s1600/12_jpeg_lossy_rgb_packed_24bit.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 240px; height: 180px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TNL4Wr7quuI/AAAAAAAAARk/fVRl8y-86AU/s400/12_jpeg_lossy_rgb_packed_24bit.jpg" alt="" id="BLOGGER_PHOTO_ID_5535759960625560290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Final thoughts&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;There is a few bits left to fix on the geometry. For example, there is some popping when changing LOD levels and this might be lessened by using a gradual change instead. I first want to see how this looks in game though before getting into that. Some pre-processing could also be used to mark patches of terrain that never need the LOD with highest detail and so on. Using hardware tesselation would also be interesting to try out and it should help add surfaces much smoother when close up.&lt;br /&gt;&lt;br /&gt;These are things I will try later on though as right now the focus is to get all the basics working.  Next up will be some procedural content generation using perlin noise and that kind stuff!&lt;br /&gt;&lt;br /&gt;And finally I willl leave you with a screen container terrain, water and ssao:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_QfesHslH-uc/TNL5jNlZyfI/AAAAAAAAARs/D9Us1pg_ECE/s1600/13_water_and_ssao.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_QfesHslH-uc/TNL5jNlZyfI/AAAAAAAAARs/D9Us1pg_ECE/s400/13_water_and_ssao.jpg" alt="" id="BLOGGER_PHOTO_ID_5535761275329038834" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-7400061426137524978?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/7400061426137524978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2010/11/tech-feature-terrain-geometry.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/7400061426137524978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/7400061426137524978'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2010/11/tech-feature-terrain-geometry.html' title='Tech Feature: Terrain geometry'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QfesHslH-uc/TNLqRiqZN6I/AAAAAAAAAQ0/LNrEHzvkprQ/s72-c/01_normal_and_depth.jpg' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-3879859397175243270</id><published>2010-10-29T11:38:00.012+02:00</published><updated>2011-05-16T23:06:46.725+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='amnesia'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Halloween Tips. Sale and more!</title><content type='html'>Now that northern hemisphere people move into darker times what can be better than to indulge in some horror! Read along to get some tips on games, books and movies to check out this Halloween!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;What to Play?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_QfesHslH-uc/TMquHC1mJUI/AAAAAAAAAQU/8nxg__6uAco/s1600/amnesia.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 276px; height: 158px;" src="http://3.bp.blogspot.com/_QfesHslH-uc/TMquHC1mJUI/AAAAAAAAAQU/8nxg__6uAco/s400/amnesia.jpg" alt="" id="BLOGGER_PHOTO_ID_5533426528222061890" border="0" /&gt;&lt;/a&gt;First of all we have to recommend our own creations that are now available at a very low rate! Amnesia and Penumbra can both be gotten for as low as &lt;span style="font-weight: bold;"&gt;50% the price&lt;/span&gt; on several online stores. Right now discounts are available at &lt;a href="http://store.frictionalgames.com/"&gt;Our Own Store&lt;/a&gt;, &lt;a href="http://store.steampowered.com/app/57300/"&gt;Steam&lt;/a&gt;, &lt;a href="http://www.gamersgate.com/DDB-PCAB/penumbra-and-amnesia-bundle-bundle"&gt;GamersGate&lt;/a&gt;, &lt;a href="http://www.impulsedriven.com/amnesiatdd"&gt;ImpulseDriven &lt;/a&gt;and the voices tell me &lt;a href="http://www.direct2drive.co.uk/9664/product/Buy-Amnesia:-The-Dark-Descent-Download"&gt;Direct2Drive &lt;/a&gt;will have discount very soon too.&lt;br /&gt;&lt;br /&gt;I would also like to put special attention on our newly launched &lt;a href="http://mobile.frictionalgames.com/"&gt;Mobile Store&lt;/a&gt;. It is an ordinary internet store where you can buy the game by simply sending an SMS. It does not get much easier than that and is especially nice for anyone missing a credit card! All our games are on sale there too and if you are lucky they might cost you less than half the normal price! So do not hesitate and check it out now:&lt;br /&gt;&lt;a href="http://mobile.frictionalgames.com/"&gt;http://mobile.frictionalgames.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In case you have already played both Amnesia and Penumbra, here are some more more recommendations:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ifdb.tads.org/viewgame?id=op0uw1gn1tjqmjt7"&gt;Anchorhead&lt;/a&gt;&lt;br /&gt;A lovecraftian Interactive Fiction game with story similar to "Shadow of Innsmouth" and "The Case of Charles Dexter Ward". It is quite long and very well written and implemented. If you can manage playing without graphics this is a great choice.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Call_of_Cthulhu:_Dark_Corners_of_the_Earth"&gt;Call of Cthulhu: Dark Corners of the Earth&lt;/a&gt;&lt;br /&gt;Another lovecraft-game, but this time in glorious realtime 3D. Especially the first third of the game is deliciously creepy with a nice foreboding atmosphere. If you can stand a few bugs and cheap deaths, this game is well worth getting.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/I_Have_No_Mouth,_and_I_Must_Scream_%28video_game%29"&gt;I have no mouth and I must scream&lt;/a&gt;&lt;br /&gt;This is a game that is not that scary, but instead features some extremely disturbing themes. The story takes place in a post apocalyptic future, where the last five people on earth are being tortured by a not-so-friendly AI named AM. It plays like a usual point-and-click but with some fun twists. Unfortunately the game suffers from some annoying puzzle design, but is still worth trying out. And oh, the game works with &lt;a href="http://www.scummvm.org/"&gt;ScummVM&lt;/a&gt;, and should thus run on just about any platform.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;What to watch?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TMquCDo0VEI/AAAAAAAAAQM/LuT164yodEg/s1600/lost-highway-2.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 295px; height: 189px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TMquCDo0VEI/AAAAAAAAAQM/LuT164yodEg/s400/lost-highway-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5533426442537555010" border="0" /&gt;&lt;/a&gt;At Halloween all kinds of crappy horror movies are released, so to save you from that here are some films that you might have missed:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt1016301/"&gt;Fermat's Room&lt;/a&gt;&lt;br /&gt;Five people are called to a puzzle evening which takes on a diabolical twist. If you enjoyed limited location based movies like Cube and (first) Saw, this is one is highly recommended!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt1020530/"&gt;Eden Lake&lt;/a&gt;&lt;br /&gt;A story about a couple taking a trip to a lake is not all that original, but Eden Lake has a nice twist to it. Beware of some disturbing scenes.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt0424136/"&gt;Hard Candy&lt;/a&gt;&lt;br /&gt;Cranking up the disturb-o-meter, this movie is unsettling to say the least. It starts out with a creepy meeting between a man and a young girl, and then gets progressively worse.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt0112922/"&gt;Day of the Beast&lt;/a&gt;&lt;br /&gt;To lighten up after Hard candy, you should consider this movie. It is about a priest that in order to stop the anti-christ decides to become evil. He teams up with a mentally unstable death-metal fan to do so. Hilarity ensues.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt0116922/"&gt;Lost Highway&lt;/a&gt;&lt;br /&gt;This is probably my favorite a Lynch movie, if only for an excellent scene involving a telephone at a party. It is not that scary, but keeps a brooding atmosphere throughout. Beware of weird lynchian plot!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt0235198/"&gt;Audition&lt;/a&gt;&lt;br /&gt;Since we want to go out with  a bang I am rounding up the list with this disturbing masterpiece. The movie is quite slow, but this only helps building to moments of true horror that it has. The end scene is unforgettable.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;What to read?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TMquOfdzwFI/AAAAAAAAAQc/yyEdubEicDk/s1600/n170060.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 270px; height: 257px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TMquOfdzwFI/AAAAAAAAAQc/yyEdubEicDk/s400/n170060.jpg" alt="" id="BLOGGER_PHOTO_ID_5533426656166002770" border="0" /&gt;&lt;/a&gt;Nothing can tingle the imagination as a good book. So here are some tips on how to invoke those nightmares I bet you long for.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/H._P._Lovecraft_bibliography"&gt;Anything Lovecraft&lt;/a&gt;&lt;br /&gt;A novel by the master of horror is a must! For people new to the man, I would recommend "The Whisperer in the Darkness", "The Shadow over Innsmouth" or "The Dunwhich horror", all very typical lovecraftian tales. All of his works is &lt;a href="http://www.dagonbytes.com/thelibrary/lovecraft/"&gt;available online&lt;/a&gt;, but they are of course best enjoyed in front of the fireplace.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/The_Terror_%28novel%29"&gt;The Terror&lt;/a&gt;&lt;br /&gt;A retelling of the doomed Franklin expedition with the addition of a stalking monster. Most of the book is based on true events, and the supernatural spice increase scariness in an already horrific story. This is probably one of the best horror books I have read. It takes a while to get into, but when you do the book will not let you go.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Perdido_Street_Station"&gt;Perdido Street Station&lt;/a&gt;&lt;br /&gt;I consider the books author, China Mieville, but be a kind of modern day Lovecraft. He has the same dense, but yet enthralling, prose and an incredible ability of making monsters. The books takes place in a fantasy world, but even though it is very weird, it feels in real in a way. Prepare for some really disturbing imagery.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Stiff:_The_Curious_Lives_of_Human_Cadavers"&gt;Stiff: The Curious Lives of Human Cadavers&lt;/a&gt;&lt;br /&gt;Ever wondered what happens to human bodies after they die? This book contains all you want to know and then some. It opens up with describing rows of heads lying in bowls (to be used in educational purpose) and then gets worse. For anybody interested for anybody interested in the macabre this is a must.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Your tips?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;Please leave any nice Halloween tips you might have in the comments!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-3879859397175243270?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/3879859397175243270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2010/10/halloween-tips-sale-and-more.html#comment-form' title='36 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/3879859397175243270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/3879859397175243270'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2010/10/halloween-tips-sale-and-more.html' title='Halloween Tips. Sale and more!'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QfesHslH-uc/TMquHC1mJUI/AAAAAAAAAQU/8nxg__6uAco/s72-c/amnesia.jpg' height='72' width='72'/><thr:total>36</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-2465634771152064491</id><published>2010-10-22T16:20:00.001+02:00</published><updated>2011-05-16T23:02:50.719+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Pre-pass lighting redux</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;After writing the &lt;a href="http://frictionalgames.blogspot.com/2010/10/tech-feature-pre-pass-lighting.html"&gt;previous post&lt;/a&gt; on pre-pass lighting I started doing some tests, to see how it compares to the old deferred renderer. The results that I got where pretty interesting, so thought I might as well share them. Also note that this post might be a bit more technical than the previous.&lt;br /&gt;&lt;br /&gt;The good thing with these renderers is that they both share the basic material data. So I can use the same data for both HPl2 and HPl3. HPL3 comes with the few more features for decals but for tests, it is easy to just skip them.  When setting up the test I went with a very simple scene, it just the same box model rendered several times, a floor and lights. Some times it is best to test with proper game scenes, but I wanted to something that could be easily tweaked and gave simpler output. This means that the tests are not 100% accurate of in-game performance, but even testing a level in game is not that, as framerate varies a lot depending on where in a level one looks. So usually benchmarking has some kind of fly-through, but that is of the scope from what I intended to do.&lt;br /&gt;&lt;br /&gt;Note that HPl2 test was built in Visual Studio 2003, while HPL3 uses the 2010 version. I do not think this should matter much though, even if the optimization routines differ, simply because pretty much all of the work is done on the GPU. The graphics card I did all my testing on is a Radeon 5850 HD (and others where tried for some tests). And as a final note, all of the data is given as average frame time (in milliseconds!) and not as frames per second. As &lt;a href="http://www.humus.name/index.php?page=News&amp;amp;ID=279"&gt;Emil Persson points out&lt;/a&gt;, FPS is not a very good way to compare performance.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test #1&lt;/span&gt;&lt;br /&gt;Now with my setup details out of the way, let's get down to the details. I first started out with a scene like this:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_QfesHslH-uc/TMGdg-Sx6II/AAAAAAAAAQE/3gqFaULPqw4/s1600/Screen_Simple3D_000.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 260px; height: 196px;" src="http://4.bp.blogspot.com/_QfesHslH-uc/TMGdg-Sx6II/AAAAAAAAAQE/3gqFaULPqw4/s400/Screen_Simple3D_000.jpg" alt="" id="BLOGGER_PHOTO_ID_5530875007190820994" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;1 x box, xz-plane floor, 1x spot light + shadow&lt;/span&gt;&lt;br /&gt;which game me the following results:&lt;br /&gt;HPL2: 0.78ms&lt;br /&gt;HPL3: 0.84ms&lt;br /&gt;Difference: +7.7%&lt;br /&gt;This means, that given a simple scene like this the old renderer is actually faster! This is not that strange though since the scene does not have many lit screen pixels, most of the image being sky. Thus, the extra pass extra made with the pre-pass renderer matters more than an lighting speed-ups. Also, the decrease in draw buffer (3 to 2) in the g-buffer does not make up for the extra pass.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test #2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;4000 x boxes, 1 x point light, x-z plane floor&lt;/span&gt;&lt;br /&gt;HPL2: 14.9 &lt;br /&gt;HPL3: 18.5&lt;br /&gt;Difference: +24%&lt;br /&gt;As expected when there is a lot of things to render, the pre-pass lighting is even slower. That extra pass shows on the performance. Remember though that 4000 objects is quite much and an important thing for good performance on GPUs is to have as few draw calls as possible.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test #3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;1 x boxes, 1000 x point light, x-z plane floor&lt;/span&gt;&lt;br /&gt;HPL2: 30.0&lt;br /&gt;HPL3: 29.2&lt;br /&gt;Difference: -2.7%&lt;br /&gt;As noticed, once the scene is filled with lights, pre-pass lighting is faster, but only so by a slight amount. Especially considering the large amount of lights. (I later realised that the actual lit screen pixels where quite few, something fixed later on in test #5).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test #4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;4000 x boxes, 1000 x point light, x-z plane floor&lt;/span&gt;&lt;br /&gt;HPL2: 47.5&lt;br /&gt;HPL3: 52.0&lt;br /&gt;Difference: +10%&lt;br /&gt;Doing a really stressful test (the number of lights and objects are really large) it seems like the old deferred renderer wins out. This was actually a bit unexpected and dissappointing to me as I thought that the pre-pass lighting should not be this far behind. But taking the little difference in test 3 into account, it is not that suprising. Still, after these tests it is clearly shown that pre-pass lighting is far from a giant speed up compared to deferred shading and it actually seems slower in most cases.&lt;br /&gt;&lt;br /&gt;I also tried to skip the early-z pass for pre-pass lighting (I use early-z in both renderers on all other tests). This is basically a pass where the z-buffer is set up, and makes sure later passes only draws visible pixels. From reading Crytech papers, it does not seem like the the Crysis 2 engine has this though (and same seems true for other engines), so I tried to do a quick and dirty test of not using it and got this data: 48.7 (+2.5%)&lt;br /&gt;This means that even without the early z test, the pre-pass was still slower. However, I did not attempts to reduce overdraw (like sorting front to back) and it might be possible for optimizations here. However, when rendering front to back, there will be a lot more state switching as you cannot sort according to texture, etc as efficiently, so I wonder if the data might not even be worse in a more realistic scenario.&lt;br /&gt;&lt;br /&gt;I also tried this test out on a few other other cards (again with full early-z testing):&lt;br /&gt;Geforce 240gt:  125, 137 (+9.6%)&lt;br /&gt;Geforce 320M:  240, 240 (+/- 0%)&lt;br /&gt;This gave the indication that on some cards pre-pass might actually be better, and that it might not be as clear-cut as the first tests seemed to show.&lt;br /&gt;&lt;br /&gt;As a final variation on this test, I added illumination maps to all textures, a feature that requires an extra pass in the old engine. I also removed the height map rendering. This gave me: 50.6, 50.0 (-1.2%)&lt;br /&gt;This is a very tiny speed up considering that the methods now have the same amount of passes and that pre-pass lighting has faster light rendering and a smaller g-buffer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test #5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;488 x boxes, 30 x point light, x-z plane floor&lt;/span&gt;&lt;br /&gt;Radeon 5850 HD:  7.4, 7.8 (+5.4%)&lt;br /&gt;Geforce 240gt: 18, 19 (+5.5%)&lt;br /&gt;Geforce 320M: 50.0, 45.5 (-9%)&lt;br /&gt;Geforce 9800gtx: 9.5, 9.5 (0%)&lt;br /&gt;&lt;br /&gt;In this test I change to a more realistic number of lights and draw calls. I also aligned the lights so the lit pixels covered the entire screen, which I did not do above. As can be seen, on my computer (the 5850) deferred shading still wins, but on a less powerful card the pre-pass lighting is much faster. This difference might be a bandwidth issue and some cards might have problems pushing the data amounts required for deferred shading.&lt;br /&gt;&lt;br /&gt;I also did a tweak to this test and turned down the number of draw calls a bit:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;316x boxes, 30 x point light, x-z plane floor&lt;/span&gt;&lt;br /&gt;Giving: 6.4, 6.6 (+3%)&lt;br /&gt;This further reduced the difference and if I did the hackish removal of early z, pre-pass lighting plunged down to: 5,2 (-18%)&lt;br /&gt;Even though this removal of early z is not very realistic, the results show that I need to investigate it. Something I will do once I get a more proper scene up and running.&lt;br /&gt;&lt;br /&gt;Finally, I also tried to give all the boxes illumination (and turning back on early z test):&lt;br /&gt;6.8, 6.6 (-2.9%)&lt;br /&gt;This clearly shows how you get the illumination almost for free in pre-pass, and that it costs a bit more with the deferred shader. This is not surprising though, given that it requires an extra pass, but hints that further effects can be more efficiently implemented when using pre-pass lighting.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusions&lt;/span&gt;&lt;br /&gt;The tests clearly show that my previous assumption that light rendering in pre-pass lighting would be much faster was incorrect. It is a bit faster, but only noticeable so when really stretching the limit and then only by a small fraction. This makes me conclude that one should not use pre-pass lighting to have faster light rendering. However, as can be seen on the test with the Geforce 320M, the pre-pass lighting technique matters a lot more on older hardware, and it might actually be of greater use there.&lt;br /&gt;&lt;br /&gt;There is not any vast differences in the techniques though and instead the choice should be based on other merits. Given that pre-pass lighting allows for so much more variety in materials, I will keep it for HPL3, but I will not be expecting any rises in framerate anymore.&lt;br /&gt;&lt;br /&gt;I hope this post will prove useful for those who are thinking of using either rendering method, and for the rest it might be an interesting insight on how testing is done (at least how I do it). Again, sorry for the lack of pretty picture, which I promise to make up for!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-2465634771152064491?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/2465634771152064491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2010/10/pre-pass-lighting-redux.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/2465634771152064491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/2465634771152064491'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2010/10/pre-pass-lighting-redux.html' title='Pre-pass lighting redux'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QfesHslH-uc/TMGdg-Sx6II/AAAAAAAAAQE/3gqFaULPqw4/s72-c/Screen_Simple3D_000.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-3396957241480057758</id><published>2010-10-21T18:10:00.004+02:00</published><updated>2011-05-16T23:03:02.828+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Tech Feature: Pre-pass lighting</title><content type='html'>Progress on the new engine, HPL3, is coming along nicely and recently I changed the core rendering system into something called Pre-pass lighting. This switch has been made for a number of reasons, but before I got into that and what pre-pass lighting exactly is, I need to explain how we did it back in the "old days".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Forward Rendering&lt;/span&gt;&lt;br /&gt;The engine powering Penumbra (HPL1) uses something called forward rendering. This type of rendering works by rendering the entire scene on an object basis. So when rendering a chair, wall, or any geometry in the world, this was done by drawing it one time for every light that touches it. So an object that is lit by three lights has to be drawn three times, and so on. This technique can be quite limiting when setting up scenes as you need to be very careful when adding lights. It might not actually be clear exactly how much impact on performance a single light will have and levels usually require quite some tweaking to get right. The complexity of a scene can be expressed as:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Draw calls = Objects * Lights&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This means that the number of draw calls can easily get very large and only adding a single light, even if it has little effect on the scene visually, can have very negative effects on performance.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Deferred Shading&lt;/span&gt;&lt;br /&gt;When starting work on HPL2 (which was used for Amnesia) I wanted to get away from this annoying light limitations. Since HPL1 had been created a new technique called "Deferred shading" had emerged and when work on HPl2 was started, the average PC system was up for the the task.&lt;br /&gt;&lt;br /&gt;What makes deferred shading special is that it separates rendering objects and rendering the lighting. This works by first rendering to a special G-buffer that contains information such as normals, depth and color of all on screen objects.  The final output looks like this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TMAHeDduksI/AAAAAAAAAPs/M8i7J6UDJxE/s1600/deferred_gbuffer.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 518px; height: 130px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TMAHeDduksI/AAAAAAAAAPs/M8i7J6UDJxE/s400/deferred_gbuffer.jpg" alt="" id="BLOGGER_PHOTO_ID_5530428555318432450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;From left to right: Color, normals and depth. Note that these texture have 4 channels each and not visible are also saved specular intensity and power. These three texture then represent the properties of all visible data. It is then used by the lights to render the final image. This makes the complexity of the rendering:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Draw calls = Objects + Lights&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is a lot nicer and as lights and objects are separated, it is a lot easier to add lights to a scene without worrying about performance hits. It is also much simpler to intuitively  understand how performance will be affected. By using this technique we where able to use a lot more light sources in Amnesia and considering all of the dynamic lights needed for the mechanics, the game would have been a lot harder to make using forward rendering&lt;span style="font-weight: bold;"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Deferred rendering is not without problems though. First of all, rendering the G-buffer means rendering to three textures at one time which is quite performance heavy, meaning a scene with few lights runs faster on a forward renderer. Secondly, there is no support for fullscreen anti-aliasing either, and one has to do some hackish tricks to remove jagged edges (the "edge smooth" feature in Amnesia). Finally, there is much less material variety possible as every property needed to generate the final image needs to be in the G-buffer. Since we could mange without fancy skin shaders in Amnesia, it was turned out to not be too much of a problem though.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_QfesHslH-uc/TMA1onUtaXI/AAAAAAAAAP0/p08--IzATRM/s1600/agrippa_main_lights.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 286px;" src="http://2.bp.blogspot.com/_QfesHslH-uc/TMA1onUtaXI/AAAAAAAAAP0/p08--IzATRM/s400/agrippa_main_lights.jpg" alt="" id="BLOGGER_PHOTO_ID_5530479314277853554" border="0" /&gt;&lt;/a&gt;Scenes like the test of Agrippa above would not be possible in our old Renderer. In this test shot around 30 lights help light Agrippa in a nice fashion, and since the geometry and lighting is decoupled it is possible to run this with a high framerate.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Pre-pass lighting&lt;br /&gt;&lt;/span&gt;I heard about this technique (first saw it &lt;a href="http://diaryofagraphicsprogrammer.blogspot.com/2008/03/light-pre-pass-renderer.html"&gt;here&lt;/a&gt;) during the development of Amnesia and was a bit interested in trying it out. I was interested in the tech back then since it made light rendering go faster, something that had proved a bit of a bottle neck in Amnesia. However, I did not have time back then and decided against it.&lt;br /&gt;&lt;br /&gt;As I started to update the engine to HPL3 I again looked at this technology. This time more had been written on the subject and it had actually been tested. For example a similar algorithm was used in Insomniac's Reistance 2 and Crytech goes over it in a paper about CryEngine 2. This also meant that the method was practical, and was well worth trying (I usually try and use tech I have been able to try in other games, as tech dead-ends can prove quite expensive).&lt;br /&gt;&lt;br /&gt;Pre-pass lighting (or deferred lighting as it is called sometimes) is very similar to deferred shading and I could use much of the code from HPl2 when implementing it. Only a few changes in materials and light rendering was really needed. The rendering works by also first rendering to a G-buffer, but one only containing normal, depth and specular power. After that lights are rendered, but they render only part of the light equation; basically color and specular intensity. Then in a final pass all objects are rendered again and the light data from the previous pass is used to render the final image. The sequence is like this:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Render Normals+Depth -&amp;gt; Render Lights  -&amp;gt; Render final image&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The first good thing is that this technique is able to render lights faster, since each lights has to do less equations and access less textures. The algorithm also includes an extra step at the end, but this does not matter that much, as the added the final render takes is regained by the one less buffer needed to be rendered to in the first g-buffer pass (only 2 textures needed instead of the 3 deferred shading uses).&lt;br /&gt;&lt;br /&gt;This speed up was not the main reason why I used it though. Since each object rendered again during the final pass, it is possible to have a much larger variety of material types. Instead of being confined to using what can be fitted into a g-buffer, a material can do specific calculations the final image pass. This allows for specialized skin shaders and other tricks. For example, it is now possible to have more features packed into the decal materials:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_QfesHslH-uc/TMBL-eUfhnI/AAAAAAAAAP8/GJb3oVRz010/s1600/decal.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 362px; height: 287px;" src="http://3.bp.blogspot.com/_QfesHslH-uc/TMBL-eUfhnI/AAAAAAAAAP8/GJb3oVRz010/s400/decal.jpg" alt="" id="BLOGGER_PHOTO_ID_5530503879073957490" border="0" /&gt;&lt;/a&gt;Above  is a decal with both color, normalmap and height map, something not possible in the previous engine. (Note that color and normal have separate alpha and that the height map make the tiles seem carved out of the ground).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;End notes&lt;/span&gt;&lt;br /&gt;Now I have given a  little rundown of how the new renderer works and how it differs from the old one. I have skipped a lot of the details and more technical stuff, to make the post a bit shorter. So if you have any questions, comment and I might have some kind of answer!&lt;br /&gt;&lt;br /&gt;Also, sorry for the lack of new and exciting images in this post. Next tech feature should be more fun on that part, as I am now moving on to &lt;span style="font-style: italic;"&gt;Terrain&lt;/span&gt;...&lt;br /&gt;&lt;br /&gt;EDIT:&lt;br /&gt;I eventually did some tests on the algorithm and compared it to the old renderer. Results are:&lt;br /&gt;http://frictionalgames.blogspot.com/2010/10/pre-pass-lighting-redux.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-3396957241480057758?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/3396957241480057758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2010/10/tech-feature-pre-pass-lighting.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/3396957241480057758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/3396957241480057758'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2010/10/tech-feature-pre-pass-lighting.html' title='Tech Feature: Pre-pass lighting'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QfesHslH-uc/TMAHeDduksI/AAAAAAAAAPs/M8i7J6UDJxE/s72-c/deferred_gbuffer.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-2705319623893918846</id><published>2010-10-13T18:50:00.002+02:00</published><updated>2011-05-16T23:03:24.293+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Tech feature: Sunlight with Shadows</title><content type='html'>Now I am pretty much done with the first major feature for HPl3, the engine that will power our upcoming (and so far super secret) game. This feature is global sunlight along with shadows, a feature not implemented previously.  And since it is now implemented you can bet it will an important feature for the secret game ;)&lt;br /&gt;&lt;br /&gt;First up was making the Ambient light nicer. Below is screenshot of how it looks in HPL2:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_QfesHslH-uc/TLXWBwY4RII/AAAAAAAAAO0/OYDdXlXkCNA/s1600/bad_ambient.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_QfesHslH-uc/TLXWBwY4RII/AAAAAAAAAO0/OYDdXlXkCNA/s400/bad_ambient.jpg" alt="" id="BLOGGER_PHOTO_ID_5527559443324617858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is just a uniform color blend that has been added and does not look very. It is quite hard to see any details when there is a uniform texture such as in the screenshot above. To get nice ambient lighting what you need to do is to somehow simulate global illumination. Light does not just hit an object and then stop, but bounces around and scatters color from nearby on each other. There is a lot of research into this and most of it require one to pre-calculate the result in one way or another.&lt;br /&gt;&lt;br /&gt;I settled with something really simple called hemispherical lighting, which basically mean to have separate up and down (sky and ground)  colors and then blend them depending on the normal of the  surface. My first idea was to use cubemaps to do something similar, but since the cubemap needs to be very blurred, using hemispherical lighting gave pretty much the same result and is a lot faster. Here is the result:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_QfesHslH-uc/TLXXftw1dRI/AAAAAAAAAO8/vmBfT1BXXNc/s1600/good_ambient.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_QfesHslH-uc/TLXXftw1dRI/AAAAAAAAAO8/vmBfT1BXXNc/s400/good_ambient.jpg" alt="" id="BLOGGER_PHOTO_ID_5527561057527493906" border="0" /&gt;&lt;/a&gt;Now it is a lot easier to see details and looks a lot better.&lt;br /&gt;&lt;br /&gt;Next up was the direct lighting from the sun and this was quite simple. I could just add some tweak to the existing shaders and make it work. Basically sunlight is just like normal light but without any position or attenuation.  This means every pixel is lit from the same direction and strength is independent of distance to the  source (as it does not have a position).&lt;br /&gt;&lt;br /&gt;Here is how the scene looks when we add that too:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TLXa1oW740I/AAAAAAAAAPE/Je0pJrchjNY/s1600/amb_and_sun.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TLXa1oW740I/AAAAAAAAAPE/Je0pJrchjNY/s400/amb_and_sun.jpg" alt="" id="BLOGGER_PHOTO_ID_5527564732568691522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Much nicer, even though the texture is a bit boring. Note that there now is specular because of the direct light from the sun.&lt;br /&gt;&lt;br /&gt;Finally, lets move on to the shadows! The engine already feature the basic shadow rendering though a technique called shadow maps. What is the big problem now is to make it look good over long distances. Since shadow mapping works by rendering from the light's point of view, doing shadows from an omnipresent light source gets a bit complicated. The simple solution is to use a really large shadow map, but then you would get very bad resolution near the camera.&lt;br /&gt;&lt;br /&gt;What you do instead is to use the fact that objects take up smaller space of the screen the farther away they are. So the idea is to use the shadow map in such a way that you give more room for pixel nearby and less to those far away. This is something that has been researched quite a bit and there are various techniques to achieve this. One solution is to warp the projection when rendering to the shadow map. This comes with a lot of issues though and is very rarely used in games.&lt;br /&gt;&lt;br /&gt;Instead most games use a technique called &lt;span style="font-style: italic;"&gt;Cascaded Shadow Maps&lt;/span&gt; or &lt;span style="font-style: italic;"&gt;Parallel Split Shadow Maps&lt;/span&gt;. The way this works is that the view frustum (a geometrical shape encompassing all the camera sees) is split into several parts and a shadow map is given to each split. This means that the first split, which is right in front of the camera, gets a much larger shadow-per-pixel ratio than the last split, which is much larger, but further away (and hence has small on-screen pixels).&lt;br /&gt;&lt;br /&gt;The algorithm itself is pretty easy, especially since there is quite a few papers on it. The big problem is that you can get some flickering results because the shadow map can change a lot. There are published techniques that solve this fairly easy though. Most of my time was instead spent on making it work with the rest of the engine. This is something that might not be that known to non-programmers, but most of the work is often not in the algorithm itself but fitting it into the engine design.  I think I spend a 3-4 days on getting it inside the engine, before I had everything set up as it should. The actually algorithm took 2 days or so.&lt;br /&gt;&lt;br /&gt;Here is how it looks:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_QfesHslH-uc/TLXekV4u91I/AAAAAAAAAPM/VANXyzbye7k/s1600/shadows.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_QfesHslH-uc/TLXekV4u91I/AAAAAAAAAPM/VANXyzbye7k/s400/shadows.jpg" alt="" id="BLOGGER_PHOTO_ID_5527568833598912338" border="0" /&gt;&lt;/a&gt;Note how shadows are detailed up front, yet they are cast all the way into the distance.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Here is how the shadow maps look (I combine all into a single one):&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a style="font-style: italic;" href="http://1.bp.blogspot.com/_QfesHslH-uc/TLXfLQtMRUI/AAAAAAAAAPU/sNdug9dOtUM/s1600/shadow_slices.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 388px; height: 96px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TLXfLQtMRUI/AAAAAAAAAPU/sNdug9dOtUM/s400/shadow_slices.jpg" alt="" id="BLOGGER_PHOTO_ID_5527569502223222082" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Probably  want to enlarge this by clicking!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;These are the four shadow maps that all render shadows for different slices of the frustum. The white stuff is the objects, the red lines outlines the frustum slice and the sphere is part of an anti-flicker algorithm (that determines size of shadow maps).&lt;br /&gt;&lt;br /&gt;Now lets add this to the image I started with:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_QfesHslH-uc/TLXgg24wvXI/AAAAAAAAAPc/p6Y1C_qzJgQ/s1600/shadows_added.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_QfesHslH-uc/TLXgg24wvXI/AAAAAAAAAPc/p6Y1C_qzJgQ/s400/shadows_added.jpg" alt="" id="BLOGGER_PHOTO_ID_5527570972761177458" border="0" /&gt;&lt;/a&gt;And lets add some nicer texture while at it:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_QfesHslH-uc/TLXgrtZtGeI/AAAAAAAAAPk/bZREcMiTHdE/s1600/all_in.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_QfesHslH-uc/TLXgrtZtGeI/AAAAAAAAAPk/bZREcMiTHdE/s400/all_in.jpg" alt="" id="BLOGGER_PHOTO_ID_5527571159193557474" border="0" /&gt;&lt;/a&gt;There! Sunlight with shadows is in!&lt;br /&gt;&lt;br /&gt;My next job will be to update the very core of the renderer with something called a &lt;span style="font-style: italic;"&gt;Light Pre-Pass Renderer&lt;/span&gt;. More on that in a later post!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-2705319623893918846?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/2705319623893918846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2010/10/tech-feature-sunlight-with-shadows.html#comment-form' title='35 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/2705319623893918846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/2705319623893918846'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2010/10/tech-feature-sunlight-with-shadows.html' title='Tech feature: Sunlight with Shadows'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QfesHslH-uc/TLXWBwY4RII/AAAAAAAAAO0/OYDdXlXkCNA/s72-c/bad_ambient.jpg' height='72' width='72'/><thr:total>35</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-3146634987607734663</id><published>2010-10-11T09:55:00.007+02:00</published><updated>2011-05-16T23:03:40.665+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='narrative'/><title type='text'>Story: What is it really about?</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_QfesHslH-uc/TLI5_G5wmWI/AAAAAAAAAOs/1iXSW2Ij9Pg/s1600/CampFire.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 178px;" src="http://1.bp.blogspot.com/_QfesHslH-uc/TLI5_G5wmWI/AAAAAAAAAOs/1iXSW2Ij9Pg/s400/CampFire.jpg" alt="" id="BLOGGER_PHOTO_ID_5526543449084434786" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;Upon hearing the word &lt;span style="font-style: italic;"&gt;story&lt;/span&gt;, most people probably think of a chain of connected events.  For example: "A princess is kidnapped; a  brave knight rides to save her; the knight faces a dragon, the knight slays dragon and saves the princess; finally the knight gets half the kingdom and marries the princess". Most likely, one also thinks of even smaller details as integrated parts of the story; the way in which the princess is kidnapped, how the knight struggles against the dragon, and so on.&lt;br /&gt;&lt;br /&gt;This is not the right way to think of stories. The chain of events is just the &lt;span style="font-style: italic;"&gt;plot&lt;/span&gt;, and it is a device used in order to get the story across to an audience. What really lies at the core of the story are themes, locations, emotions, and so on. Pretty much all stories we have heard in our lives have been plot-based, but this is because this has been pretty much the only way of telling them. Now that we have videogames as a widespread medium this is no longer true. Still, the idea that story equals plot remain strong. It is a common belief that when a game becomes less linear, it is less about the story. I do not think this is true and if we want to advance the storytelling of the medium,  this view needs to go.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;By the Campfire&lt;/span&gt;&lt;br /&gt;Humans have been telling stories for a long, long time, well before the dawn of civilization. These stories were not written down, but spread by being told over and over, never repeated exactly the same way. These kind of "camp fire stories" still remain, traveling from person to person, constantly evolving and changing. Yet, while the way the stories are told change, in a way they still remain the same. Anyone who has ever told a story like this knows that you often never know the exact words. Instead, you know of certain important things the story is supposed to "say".&lt;br /&gt;&lt;br /&gt;It is very common that you change a story like this depending on your audience. If the people listening do not seem impressed by the hero's strength, you add more details,  more events, descriptions and dialog. Your goal when telling the story is not be give an exact replication of how the story was told to you. What you are trying to do is to copy the &lt;span style="font-style: italic;"&gt;impact &lt;/span&gt;the story had on you and any change you can do in order to accomplish this is a valid one.&lt;br /&gt;&lt;br /&gt;The moment you do something like this, you have realized, although perhaps unconsciously, that the essence of the story its not the words that make it up. Instead, the story is about something on a higher level.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Peeling an Onion&lt;/span&gt;&lt;br /&gt;When a section of a story is trying to convince the audience how strong a hero is, it is something that exists above the words that make it up. Still, this "strong hero" theme, might not be at the highest level either and simply be a vessel for a yet greater goal. Perhaps it sets up an overarching theme of how even the strong will eventually fall. The levels might not stop even there and eventually the essence of the story might be boiled down to a few essentials. These essentials is what the story is &lt;span style="font-style: italic;"&gt;really&lt;/span&gt; about. Remove any of these and the structure collapse and the original story is no more.&lt;br /&gt;&lt;br /&gt;It is also important to have in mind that some levels might be connected. Something that is at a higher level might not manage to stand on its own. A certain part of the story might be about the hero overcoming overwhelming odds and is meant to provoke sympathy. At the same time it is about the hero being subjected to torture and treated very badly by some people. If you remove the torture part, then what you have left is only two very fuzzy themes and not something that alone can build the story. Thus it is not always so that the important pieces of a story are all on the highest level, but they might spread out in a hierarchy. And while this might actually continue down to the very lowest level, it can only do so if removing the part destroys the story. It is not a way to justify that every single detail is essential.&lt;br /&gt;&lt;br /&gt;I think most people already have these layers in their mind when thinking up a story, but then along the way give great weight to the details on the lowest level. This is especially harmful when making games, something I will address shortly. First I must go over what I mean by the essence of a story.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What is the Essence?&lt;/span&gt;&lt;br /&gt;One might argue that a certain story is not possible to distill into a few high level concepts. It could be argued that a certain scene must be in a very specific way; that one cannot simply describe it as some flimsy themes. I think this happens if one thinks that the themes must be deep, thought provoking, artsy, or whatnot. This is not what I mean with the essence though and it can be any number of things.&lt;br /&gt;&lt;br /&gt;For example take the "attack on the village"-scene in the movie &lt;a href="http://www.imdb.com/title/tt0093773/"&gt;Predator&lt;/a&gt;, something I am sure few people would call deep, thought-provoking or similar. What are the high level concepts here? Is it just be boiled down to "mindless violence", "how the civilized world rapes nature" or anything similarly pretentious? Not so. Instead its essence is things like the environment, the oppressing jungle; to have a team of sweaty super-humans storm a village, showing off destruction and gunfighting. At a higher level it is also meant to  be fun watching and must keep a certain distance to reality and stay away from certain things (like murdering of innocents) in order to keep the audience entertained.&lt;br /&gt;&lt;br /&gt;What I want to show here is that a story does not need to be have some kind of moral lesson, ask an existential question, or whatever deep meaning, at its core. It can be shallow and just for fun. Even so, there &lt;span style="font-style: italic;"&gt;is &lt;/span&gt;an essence and it is what really matters in the story.&lt;br /&gt;&lt;br /&gt;Consider any good book/movie you have ever read/seen. Is it really the lowest level of events and details that made you like it? Was it not the locations it took you to? Was it not the interesting relationship between character? Or the way slowly uncovering a mystery made you feel? I argue that no story, no matter what sort, is not about the exact way in things happen, but about the essence of these events. This is something that is crucial to have in mind in video games, as simply nailing down a few details that satisfy the essence is not enough. A video game is a living, breathing world and the essence needs to be portrayed through the right use of the mechanics (such as gameplay, art, sound, etc).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stories in Videogames&lt;/span&gt;&lt;br /&gt;Actually videogames already use this kind of story telling! For example, first person shooters have not set the exact sequence how people get shot or houses blown up. The thing that matters is that people &lt;span style="font-style: italic;"&gt;do&lt;/span&gt; get shot and houses &lt;span style="font-style: italic;"&gt;do&lt;/span&gt; get blown up. Exactly how this happens is not important for the story, only that the essence of the action stays the same.&lt;br /&gt;&lt;br /&gt;The same is true for portrayal of environments in most games. It does not matter how the protagonist traverse or interact with it, the designer simply constructs a world and the rest is up to the player. By setting up the mechanics of the game a certain way, the designer then pretty much guarantees that the player will have a specific kind of experience and that the essence is kept intact.&lt;br /&gt;&lt;br /&gt;However, this how far it goes in most the games today. Once a videogame gets to trickier parts of the story, lower level details are given more and more importance. When it comes to concepts like love, betrayal and grief, pretty much all current games rely on a specific set of events, a plot, to convey them. No longer does it consider the essence of the story. Instead, it becomes focused on the low-level details.  Take &lt;a href="http://en.wikipedia.org/wiki/God_of_War_%28video_game%29"&gt;God of War&lt;/a&gt; as an example. There is no need to have cut-scenes showing how angry and prone to violence Kratos is - the gameplay does this for us. But when it is time to bring up other emotions, like showing the reasons behind his rage, the game resorts to plot-based cut scenes.&lt;br /&gt;&lt;br /&gt;This does not have to be the case. I think that just about any essence can be expressed by a virtual world guiding the player using various mechanics. This can be conveyed just as good, or perhaps even better, than what a carefully planned plot is able to.   I believe we are already seeing this with deeper themes such as a fear. As has been proved by games like &lt;a href="http://en.wikipedia.org/wiki/Silent_Hill_%28video_game%29"&gt;Silent Hill&lt;/a&gt;*, over ten years ago, video games can be used to provoke fear in a way that is impossible to do in any other medium. While certain kinds of horror lends itself extremely well to the video game medium, I see no reason why other emotions and themes can not work just as well. There are of course also games like &lt;a href="http://en.wikipedia.org/wiki/Fallout_%28video_game%29"&gt;Fallout&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Shadow_of_the_Colossus"&gt;Shadow of the Colossus&lt;/a&gt; that touch upon other themes without using a plot, giving a glimpse of what could be achieved. However, this is just the tip of an iceberg and videogames as a story telling medium is still far from where it could be.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;End thoughts&lt;/span&gt;&lt;br /&gt;Abandoning plot and a linear progression does not mean that one is creating a sandbox game. It simply means that one picks out the essence of the story and design  a virtual world that delivers just that. I believe that sticking to old fashion cut-scenes is a dead end if we want video game story telling to progress. Instead we need to look at a higher level, figure out the essence of our stories and focus on that. When this way of creating a story reaches into areas previously reserved to films and books, storytelling in game will be a force to truly reckon with.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;* A major inspiration for Silent Hill was the movie &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.imdb.com/title/tt0099871/"&gt;Jacob's ladder,&lt;/a&gt;&lt;span style="font-style: italic;"&gt; and this serves as an excellent example of how to take the essence of a story and putting it in a different medium. Compare the movie's &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.youtube.com/watch?v=ttcof7TQ-Mw"&gt;hospital scene&lt;/a&gt;&lt;span style="font-style: italic;"&gt; to the otherworld found in Silent Hill and you will find there is a remarkable keeping of its essence. The feeling of being trapped, the environment, the sound design, the uncertainty of what is real and even the style of music. Silent Hill shares very little in terms of low-level plot details with the movie, and yet they manage to be remarkably similar.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9193968969153274146-3146634987607734663?l=frictionalgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frictionalgames.blogspot.com/feeds/3146634987607734663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frictionalgames.blogspot.com/2010/10/story-what-is-it-really-about.html#comment-form' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/3146634987607734663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9193968969153274146/posts/default/3146634987607734663'/><link rel='alternate' type='text/html' href='http://frictionalgames.blogspot.com/2010/10/story-what-is-it-really-about.html' title='Story: What is it really about?'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/02945983378935089787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_QfesHslH-uc/S3x_k19N0UI/AAAAAAAAAKs/iga4sA0s80o/S220/thomas01_small2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QfesHslH-uc/TLI5_G5wmWI/AAAAAAAAAOs/1iXSW2Ij9Pg/s72-c/CampFire.jpg' height='72' width='72'/><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9193968969153274146.post-1669926905785388587</id><published>2010-10-08T09:15:00.005+02:00</published><updated>2011-05-16T23:06:23.351+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amnesia'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>One Month after Amnesia's release</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_QfesHslH-uc/TK3evmA2b7I/AAAAAAAAAOk/EnTYQi2IwL4/s1600/amnesia-the-dark-descent.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 425px; height: 206px;" src="http://4.bp.blogspot.com/_QfesHslH-uc/TK3evmA2b7I/AAAAAAAAAOk/EnTYQi2IwL4/s400/amnesia-the-dark-descent.jpg" alt="" id="BLOGGER_PHOTO_ID_5525317227092799410" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;It has now been pretty much exactly a month since we launched &lt;a href="http://amnesiagame.com/"&gt;Amnesia: The Dark Descent&lt;/a&gt;. And since the &lt;a href="http://frictionalgames.blogspot.com/2010/09/one-week-after-release-of-amnesia.html"&gt;post on a week after release&lt;/a&gt; was quite popular, we have decided to do a new overview on where we stand now. This time we will mainly focus on the sales and give some more accurate figures on how things have turned out for us.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The big picture&lt;/span&gt;&lt;br /&gt;So, with one month of data to analyze, how did things go? I think it can be summed up with: &lt;span style="font-style: italic;"&gt;Better than expected on all accounts&lt;/span&gt;! As of today we have sold a total of 36, 000 units (including pre-orders, but excluding boxed sales in Russia), and our goal,  which would determine if we would continue or not, were 24,000. Having met and exceeded that goal already feels quite nice. Frictional Games will live to create another game!&lt;br /&gt;&lt;br /&gt;15,000 (41.7%) of all sales were in the form of pre-orders, which is quite significant. Part of the explanation for this is that there was a 20% discount during pre-orders and we also believe that people are more inclined to buy a pre-order. With perks such as Steam pre-loading, people seem to think it is worth putting up money before release. And since there is no pirate alternative to a pre-order, it is more likely that people will go through with the purchase (more on pirating later). In any case, pre-orders is probably something we will focus on more for our next title.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Platform specifics&lt;/span&gt;&lt;br /&gt;Gathering an exact percentage of sales for Linux turned out to be a bit complicated. Purchases made in our store gets all three platforms, which is the only place to get the Linux version. The total amount of sold units in our own store is about 5000. Since we can connect some of these sales with steam activations and similar, we can make a conservative estimate of 2500 Windows users, leaving 2500 left for Mac and Linux. And since this this is the only store for Linux users, we assume 70% of these are Linux. This means 1750 sold Linux units, or 5% of the total sales.&lt;br /&gt;&lt;br /&gt;Mac sales are a bit simpler to estimate, and given the estimates from above plus some other data, comes to about 8% of the total sales. The interesting bit here is that just taking the last week into account the amount of mac sales lie at about 12%. This probably means that the Mac market takes longer to penetrate and that Mac owners might be more likely to buy an "old" game. Unfortunately we do not have data regarding this for Linux, but assume something similar happens there.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Media and user response&lt;/span&gt;&lt;br /&gt;As we said in the &lt;a href="http://frictionalgames.blogspot.com/2010/09/one-week-after-release-of-amnesia.html"&gt;last post&lt;/a&gt;, the response from the media and users have been overwhelming to say the least. Right now, we have 86% at &lt;a href="http://www.metacritic.com/game/pc/amnesia-the-dark-descent/critic-reviews"&gt;Metacritic&lt;/a&gt;, 90% from users on &lt;a href="http://www.gamespot.com/pc/adventure/amnesiathedarkdescent/players.html?tag=tabs%3Breviews"&gt;Gamespot&lt;/a&gt;, and so on. Considering it is a niche and story based game this feels extra nice (which, as Kieron Gillen &lt;a href="http://www.rockpapershotgun.com/2010/09/29/i-am-the-mob-mafia-ii-subjectivity-and-story/"&gt;points out on RPS&lt;/a&gt;, usually get lower meta-scores). We could not be any happier than we are with this response.&lt;br /&gt;&lt;br /&gt;So how has this affected the sales? Well it is obviously impossible to say what we would have sold with worse grades, but what we can do is to see what correlations there are between positive reviews and spikes in sales.  It turns out there is pretty much none. The only correlation we managed to find was with combined release of the &lt;a href="http://www.escapistmagazine.com/videos/view/zero-punctuation/2092-Amnesia-The-Dark-Descent"&gt;Zero punctuation&lt;/a&gt; and &lt;a href="http://www.gamespot.com/pc/adventure/amnesiathedarkdescent/review.html"&gt;Gamespot &lt;/a&gt;reviews. These were out very close in time and almost quadrupled sales compared to the previous days before (about 150/day to 600/day). It even seems like this boost still remains.&lt;br /&gt;&lt;br /&gt;Apart from this example, it has not been possible to find any other correlations. Part of this is probably due to the noisy nature of the data; many reviews come out at the same time they overlap and it is not possible to discern individual contributions. However, when articles have been alone in time, there still have not been any noticeable spikes. One explanation is that it might be hard for people to find out where the game is bought, as our website is seldom mentioned in previews/reviews. This is especially true for the time before the pre-order became available at the major online retailers. Another explanation is that most reviews have more of a long term effect, instead of an instant sales boost. What this means is that reviews convince players that already know about the game to purchase it, instead of acting as a PR catalyst.&lt;br /&gt;&lt;br /&gt;What reviews does do is to make other publications find out about you. Getting a review in a high-status outlet have meant mails from many other publications and convinced other media folk that the game is worth writing about. Thus, as mentioned previously, good review help sales in a long term perspective.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pirating&lt;/span&gt;&lt;br /&gt;Now it is time to discuss pirating and how this has affected us. First of all, it is quite easy to see that there are tons of torrents/shared files of Amnesia available. When we search the web to see if any news on Amnesia has popped up, almost 50% of the results go to a pirated version of the game. This is of course makes us sad, but it is also something one has to deal with when living in today's world. We are well aware that the same technology that allows pirating of our game, is the same that enabled us create the game in the first place. Without a fast Internet and a connected world we would never be able to work together or distribute our games. But this does not mean that we should just ignore piracy and it is important to figure out what kind of impact it has on us.&lt;br /&gt;&lt;br /&gt;As I have said, the sales have been above what we had expected, but compared to the response we have gotten it still feels kind of low. For example, the very hyped &lt;a href="http://www.minecraft.net/"&gt;Minecraft &lt;/a&gt;has gotten &lt;a href="http://m00d.net/minecraft/sales/"&gt;more than ten times the sales&lt;/a&gt; compared us. While being a vastly different game compared to Amnesia, there are some differences that are worth discussing. In terms of the amount of PR received, I would say that Minecraft is more well known, but Amnesia is not far behind. Google gives us two times the hits compared to them and a popular pirate site gives Minecraft double the distributors compared to us. We have gotten more reviews from popular outlets, Minecraft has gotten more viral-like PR. As I said, I think Minecraft has the upper hand here, but not by that much. Still, Minecraft has a over ten  times the sales compared to Amnesia, which is a huge difference.&lt;br /&gt;&lt;br /&gt;Our conclusion is that a large part of this is due to the lack of pirating in Minecraft compared to us. As I mentioned above, Minecraft has 10x the sales, but only 2x the torrent distributors. A Google search on the subject also turns up twice the hits for Amnesia. It seems like more people are pirating Amnesia and we think there are two main reasons for this. Both of them are related to the single-player nature of the experience.&lt;br /&gt;&lt;br /&gt;First of all, once you have played Amnesia there is little meaning to play again. A person pirating the game and finishing it has no real reason to go back. So even if a player likes it and determines that it is well worth paying for, there is no incentive to do so. It is quite common to read on forums that people have downloaded a pirated version and say that they will probably buy it later. The question here is how many actually does this? Even if you really liked the game and want to support the developers, it basically feels like money down the drain since you get nothing extra after paying. This is not the case
