Search the Community

Showing results for tags 'Theory'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Categories

  • Audio
    • Music and Sound FX
  • Business
    • Business and Law
    • Career Development
    • Production and Management
  • Game Design
    • Game Design and Theory
    • Writing for Games
    • UX for Games
  • Industry
    • Interviews
    • Event Coverage
  • Programming
    • Artificial Intelligence
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Engines and Middleware
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
  • Archive

Categories

  • News

Categories

  • Audio
  • Visual Arts
  • Programming
  • Writing

Categories

  • Audio Jobs
  • Business Jobs
  • Game Design Jobs
  • Programming Jobs
  • Visual Arts Jobs

Categories

  • GameDev Unboxed

Forums

  • Audio
    • Music and Sound FX
  • Business
    • Games Career Development
    • Production and Management
    • Games Business and Law
  • Game Design
    • Game Design and Theory
    • Writing for Games
  • Programming
    • Artificial Intelligence
    • Engines and Middleware
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
    • 2D and 3D Art
    • Critique and Feedback
  • Topical
    • Virtual and Augmented Reality
    • News
  • Community
    • GameDev Challenges
    • For Beginners
    • GDNet+ Member Forum
    • GDNet Lounge
    • GDNet Comments, Suggestions, and Ideas
    • Coding Horrors
    • Your Announcements
    • Hobby Project Classifieds
    • Indie Showcase
    • Article Writing
  • Affiliates
    • NeHe Productions
    • AngelCode
  • Workshops
    • C# Workshop
    • CPP Workshop
    • Freehand Drawing Workshop
    • Hands-On Interactive Game Development
    • SICP Workshop
    • XNA 4.0 Workshop
  • Archive
    • Topical
    • Affiliates
    • Contests
    • Technical

Calendars

  • Community Calendar
  • Games Industry Events
  • Game Jams

Blogs

There are no results to display.

There are no results to display.

Marker Groups

  • Members

Group


About Me


Website


Industry Role


Twitter


Github


Twitch


Steam

Found 38 results

  1. Hello everyone, I was following this article: https://mattdesl.svbtle.com/drawing-lines-is-hard#screenspace-projected-lines_2 And I'm trying to understand how the algorithm works. I'm currently testing it in Unity3D to first get a grasp of it and later port it to webgl. What I'm having problems is the space in which the calculations take place. First the author calculates the position in NDC and takes into account the aspect ratio of the screen. Later, he calculates a displacement vector which he calls offset, and adds that to the position that is still in projective space, with the offset having a W value of 1. What's going on here? why can you add a vector in NDC to the resulting position of the projection? what's the relation there?. Also, what is that value of 1 in W doing? Supposedly this algorithm makes the thickness of the line independent of the depth, but I'm failing to see why. Any help is appreciated. Thanks
  2. Hi there everyone! I'm trying to implement SPH using CPU single core. I'm having troubles in making it stable. I'd like some help in order to understand what is wrong and how could I fix it. Please, take a look at the following videos: Water inside sphere using Kelager's parameters Water inside big box Water inside thinner box I've already tried using XSPH, the hash method to find the neighbors (now I'm using the regular grid, because the hash method didn't work for me) and two different ways of calculating the pressure force. I'm using mostly the following articles: Particle-Based Fluid Simulation for Interactive Applications, Matthias Müller, David Charypar and Markus Gross Lagrangian Fluid Dynamics Using Smoothed Particle Hydrodynamics, Micky Kelager Smoothed Particle Hydrodynamics Real-Time Fluid Simulation Approach, David Staubach Fluid Simulation using Smoothed Particle Hydrodynamics, Burak Ertekin 3D Langrangian Fluid Solver using SPH approximations, Chris Priscott Any ideas? Thanks!
  3. LF> Contributions

    Hello, I'm Lollipop. I have hobby project it is in very beginning phases. I'm looking for people to come in see my ideas and add input, nicely and respectfully poke holes in everything and even contribute if they desire. It's all concept, ideas, some story line, concept features, some characters. It is original creative fantasy with hopes of being open world, mmo-rpg. Thank you and be kind
  4. I am in my 3rd year of Game Art Design at NUA(norwich) and have become very interested in mechanics design, e.g. how to moderate game flow, gameplay loops and how individual mechanics work in tandem with each other. However I feel like this a very niche job and I was wondering what would be the best way of breaking into the industry with this kind of work in mind.
  5. Hi Guys, I've been working on a new Vulcan based engine, and doing skinned animation support for the first time. I've got everything setup and seemingly working so that I can do a basic import of an FBX model I downloaded from SketchFab, and play its idle animation seemingly correctly, which was very exciting to see. However, I'm guessing I'm missing some rule of model import processing, whereas my 'default pose' for the model comes in oriented so that the character is standing with Y-Axis up, but as soon as I launch him into his idle animation he switches to Z-Axis up. I've seen some mention of applying the inverse bind pose matrix to the joint itself on import, and thought that might be part of my issue, but otherwise can't think of what would be causing this? Thanks!
  6. Hey everyone! I'm doing some research for school on the game development process for RPG developers, and I was hoping some of you would be able to share your experiences in response to these questions: If you’re developing a system for factions, how integrated/vital are factions to the main game play mechanic and/or narrative of your game? What are the biggest challenges you face when developing dialogue and factions for your game? What is your current development workflow like, and what would change in your ideal situation?
  7. Introduction The architecture of software design is a much-debated subject. Every developer has his own opinion about what is good software design and what is not. Most developers agree on what is bad design, on what is good design there are a wide variety of opinions. Unfortunately, due to the nature of software development, there is no silver bullet; there is no one design strategy that always works. There are a couple of strategies that have proofed to be successful. These strategies have known strengths and weaknesses. The advantage of using such a strategy is allowing you to focus on building your game, instead of worrying if your codebase will implode after someone decided the game should function a bit different than how the code was originally written. Architecture In game development, the entity-component-system is an architectural pattern that is used successfully in small, medium and large games. The main strength of this strategy is the usage of the composition over inheritance pattern. This pattern prevents the build-up of complex object inheritance tree’s, that will make your code impossible to refactor without a lot of side-effects. So how does this pattern work, at its core, there are three elements; entity, components, and systems guess you didn’t see that coming. Let’s describe these one by one, I’m starting with the smallest and most simple one the “component”: Component The component represents a single attribute of an entity. Some examples of entities can be: Position Rotation Scale Physics body Texture Health Entity Entities are the “game-object” some examples: Ball Camera Player Enemy Bullet An entity can have multiple components, for example, a ball entity can have the following components: position, rotation, scale, texture and physics body. A camera entity might only have a position. Usually, all entities have a unique-id for fast access, but there can also be other ways of accessing entities. System The system is responsible for one aspect of the game, a simple game has can, for example, have the following systems: Rendering Physics GUI Sound AI What a system does is iterating over all entities that have components of the types defined by the system. For example, the physics system will act only on entities with a physics-component and a position-component. The rendering system will only act on entities that have a position and texture component. For example, if a ball entity has a position and physics and texture component. The physics system will pick up the ball entity, as it has a physics and position component. The physics-system control a physics-engine, that will do its magic and calculate a new position for the ball. The physics system will set this new position on the position component. The rendering-system will also pick up the ball entity, as it acts on all entities that have a position and a texture component. The rendering system can render the ball using the texture and the position found with the ball entity (yes, the same component that was just updated by the physics-system). Now imagine you spend some time implementing the architecture described above, and you after, running it, realize the ball is not really moving very realistic. That might be because you forgot to take rotation into account. To fix it you now only have to create a rotation-component and add it to the ball entity. Now add in the physics system a check if the entity has a rotation component and if so just set the rotation on this component. In the rendering-system also add some code to check if there is a rotation component and if so render with this rotation. This is where the power of this architecture emerges, imagine you have not one ball entity but have a lot of entities like the ball, wall, player, ground, etc. and you forgot about the rotation. You only have to modify the rendering system and the physics system. Then by simple adding a rotation component to the entities you want to have rotation on, magically all those objects have a rotation. Now adding rotation seems like a trivial thing to do, but what does this architecture enforces is the separation of concerns (e.g. rendering and physics) while still allows adding new functionality. And important; It does this without the usage of inheritance but rather by composition. Possible features The architecture described above is in itself quite powerful. But there are some more interesting possibilities with this architecture. I will describe some of them below. Game-mechanic tweaking Creating a generic mechanic-tuning-utilities; as there are a limit number of component types, you can create a (developer) GUI-overlay that allows you to modify the values of a component. This will allow you to in real-time modify the values, e.g. the position, size, texture, acceleration, the weight of a certain entity his components. This will help you tremendously in fine-tuning game mechanics without the need to keep recompiling and reloading your game. Level-editor Taking this even a step further you could use the above system to load all entities and relevant components from a file, e.g. XML. This will also help you decrease compile and loading time, letting you focus more one tuning game mechanics. This could then be a very good start for creating a level-editor, letting a none technical team member (game-designers) tweak game mechanics. Dynamic loading Something else that can be managed using this system, is implementing an entity loading/unloading mechanism. You can define an interface with functions like initializing, loading, starting, stopping, unloading, destructing. Now you can implement a loading mechanism that guarantees the loading and initializing always happen asynchronously. This will allow you to load and unload entities in a uniform and controlled manner. You could also choose to run all the systems in a different thread you need to take some more care about modifying components, but this could allow you to do a lot of performance enhancements, as for example, the AI needs less frequent updates then a renderer. Real-world example Note this implementation is done in Java, as I’m using libGDX as the platform, but the architecture is certainly not limited to Java and can also be implemented in other languages like C++. Enough of the theory, now for a real implementation. As a hobby project, I have been creating a small iOS/Android game, my first implementation of this game was naïve, with one source file containing all logic. No need to explain this is a bad implementation, but this did allow me to check if my idea was fun and create a quick prototype and do some fast iterations from there. For reference, the “bad” implementation can still be found here: https://github.com/tgobbens/fluffybalance/blob/master/core/src/com/balanceball/Balanceball.java After I created this implementation I decided I wanted to implement the same game using a better manageable implementation. The “main” entry file can be found here: https://github.com/tgobbens/fluffybalance/blob/master/core/src/com/balanceball/BalanceBallSec.java. So, I’ve created my own entity-component-system. If you want to create your own game using an entity-component-system, and want the game to be ready as soon as possible then I wouldn’t recommend writing one yourself. However, if you want to learn about programming or just create something for fun, implementing such a system is easy, and you will learn a lot from doing this. Another reason to implement this yourself is you get a lot of freedom allowing you to add specific tricks and features that can help you improve your codebase. The entity component system can be found under https://github.com/tgobbens/fluffybalance/tree/master/core/src/com/sec and yes there are some optimisation and improvements opportunities in this code base. But it does show an easy to understand implementation. When trying to understand make sure you know what Java generic types are. It’s quite common you need to find a certain entity to update or get some info from. As there are a lot of components you know there will be only one instance from. I’ve added a method to get the first entity of a certain type. For example, give me the camera entity, or give me the first “game-world” entity. But there are also helper functions to get all entities of a certain type. The same trick is used for getting components of an entity. You will also find a basic type called “engine”, used for binding everything together. This will trigger the updates and holding references to all systems and entities. If you look for a “starting” point for the architecture this is where to start looking.
  8. Time management I thought of a simple Plan: after 1:30am I have all the time in the world for tons of stupid shit to do until 11pm... so five days in a week I start working at 5:00pm until bedtime. That is 6 hours every day, making it 30 in five. Adding 20 hours on weekend (Ten every day) makes it 50 hours a week. That is roughly 200 hours a month I got for this project. So I made a nice overview of my busy ass week and the monster I decided to work on. I have not decided yet if and how I will make money with this. I simply have the Privilege and Interest to make a game and this seems like the best way. The problem This idea is not done yet, no results. all I did for now is clarify that I have a will to do this. I need a story, maybe game mechanics laid out. The solution Creating Forum entries and Writing about them would be a nice way of keeping a publicly available log of completed work. I would be glad to get any support possible from you. The Plan: Checklist log of things I need to learn, has to be easily accessible. Paper seems like good idea. Ideas of how the game should work in organized manner Sources for media have to be found. Hoping for people to hop on the "lets fucking make something because we can" train. Interrested? If yes, lets talk right now right here online. you can also join me on Discord, the link is in my profile description. Don't think, act. Its not about what if it fails its about what if it works here.
  9. Hi, I came across this udk article: https://docs.unrealengine.com/udk/Three/VolumetricLightbeamTutorial.html that somewhat teaches you how to make the volumetric light beam using a cone. I'm not using unreal engine so I just wanted to understand how the technique works. What I'm having problems is with how they calculate the X position of the uv coordinate, they mention the use of a "reflection vector" that according to the documentation (https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/ExpressionReference/Vector/#reflectionvectorws ) it just reflects the camera direction across the surface normal in world space (I assume from the WS initials) . So in my pixel shader I tried doing something like this: float3 reflected_view = reflect(view_dir, vertex_normal); tex2D(falloff_texture, float2(reflected_view.x * 0.5 + 0.5, uv.y)) view_dir is the direction that points from the camera to the point in world space. vertex normal is also in world space. But unfortunately it's not working as expected probably because the calculations are being made in world space. I moved them to view space but there is a problem when you move the camera horizontally that makes the coordinates "move" as well. The problem can be seen below: Notice the white part in the second image, coming from the left side. Surprisingly I couldn't find as much information about this technique on the internet as I would have liked to, so I decided to come here for help!
  10. Hey I want to try shade particles by compute a "small" number of samples, e.g. 10, in VS. I only need to compute the intensity of the light, so essentially it's a single piece of data in 2 dimensions. Now I want to compress this data, pass it on to PS and decompress it there (the particle is a single quad and the data is passed through interpolators). I will accept a certain amount of error as long as there are no hard edges, i.e. blurred. The compressed data has to be small and compression/decompression fast. Does anyone know of a good way to do this? Maybe I could do something fourier based but I'm not sure of what basis functions to use. Thanks
  11. I'm writing a short article on game balance, specifically dealing with typical combat attributes, combat resolution systems, and how those values tie in to game balance, character progression, etc. What I want are some examples of the "to hit" rolls, or skill checks, or other similar contests or evaluations (there must be a word for this!), so I can compare and classify them, along with their balance implications. It's important that the mechanic is documented or otherwise known, rather than just being an opaque "68% To Hit" or whatever. They don't have to be from computer games; alongside some simple classic ones from Civilization and Age of Wonders, I'm also looking at the d20 attack roll from Dungeons and Dragons, a couple from Warhammer, etc.
  12. I was reworking on my LightProbe filter, and I wrote some code to generate the Reference Cubemap, but then I noticed some discontinuous on the border of each face.(Top:CPU implementaion, Bottom: GPU implementation, the contrast has been adjusted on the right side) At first I think it maybe caused by the interpolation, but then I tried the same algorithm in 2D (like a slice in the normal light probe prefiltering) for better visualization, and the result really confused me. See the attachments, the top half is the Prefiltered Color value, displayed per channel, it's upside down because I used the ColorValue directly as the y coordinate. The bottom half is the differential of the color, it's very clearly there is a discontinuous, and the position is where the border should be. And as the roughness goes higher, the plot gets stranger . So, I am kinda of stuck in here, what's happening and what to do to remove this artifact? Anybody have any idea? and here is my code inline FVector2D Map(int32 FaceIndex, int32 i, int32 FaceSize, float& SolidAngle) { float u = 2 * (i + 0.5) / (float)FaceSize - 1; FVector2D Return; switch (FaceIndex) { case 0: Return = FVector2D(-u, -1); break; case 1: Return = FVector2D(-1, u); break; case 2: Return = FVector2D(u, 1); break; case 3: Return = FVector2D(1, -u); break; } SolidAngle = 1.0f / FMath::Pow(Return.SizeSquared(), 3.0f / 2.0f); return Return.SafeNormal(); } void Test2D() { const int32 Res = 256; const int32 MipLevel = 8; TArray<FLinearColor> Source; TArray<FLinearColor> Prefiltered; Source.AddZeroed(Res * 4); Prefiltered.AddZeroed(Res * 4); for (int32 i = 0; i < Res; ++i) { Source[i] = FLinearColor(1, 0, 0); Source[Res + i] = FLinearColor(0, 1, 0); Source[Res * 2 + i] = FLinearColor(0, 0, 1); Source[Res * 3 + i] = FLinearColor(0, 0, 0); } const float Roughness = MipLevel / 8.0f; const float a = Roughness * Roughness; const float a2 = a * a; // Brute force sampling with GGX kernel for (int32 FaceIndex = 0; FaceIndex < 4; ++FaceIndex) { for (int32 i = 0; i < Res; ++i) { float SolidAngle = 0; FVector2D N = Map(FaceIndex, i, Res, SolidAngle); double TotalColor[3] = {}; double TotalWeight = 0; for (int32 SampleFace = 0; SampleFace < 4; ++SampleFace) { for (int32 j = 0; j < Res; ++j) { float SampleJacobian = 0; FVector2D L = Map(SampleFace, j, Res, SampleJacobian); const float NoL = (L | N); if (NoL <= 0) continue; const FVector2D H = (N + L).SafeNormal(); const float NoH = (N | H); float D = a2 * NoL * SampleJacobian / FMath::Pow(NoH*NoH * (a2 - 1) + 1, 2.0f) ; TotalWeight += D; FLinearColor Sample = Source[SampleFace * Res + j] * D; TotalColor[0] += Sample.R; TotalColor[1] += Sample.G; TotalColor[2] += Sample.B; } } if (TotalWeight > 0) { Prefiltered[FaceIndex * Res + i] = FLinearColor( TotalColor[0] / TotalWeight, TotalColor[1] / TotalWeight, TotalColor[2] / TotalWeight); } } } // Save to bmp const int32 Width = 4 * Res; const int32 Height = 768; TArray<FColor> Bitmap; Bitmap.SetNum(Width * Height); // Prefiltered Color curve per channel float MaxDelta = 0; for (int32 x = 0; x < Width; ++x) { FColor SourceColor = Source[x].ToFColor(false); Bitmap[x] = SourceColor; FColor Sample = Prefiltered[x].ToFColor(false); check(Sample.R < 256); check(Sample.G < 256); check(Sample.B < 256); Bitmap[Sample.R * Width + x] = FColor(255, 0, 0); Bitmap[Sample.G * Width + x] = FColor(0, 255, 0); Bitmap[Sample.B * Width + x] = FColor(0, 0, 255); if (x > 0) { const FLinearColor Delta = Prefiltered[x] - Prefiltered[x - 1]; MaxDelta = FMath::Max(MaxDelta, FMath::Max3(FMath::Abs(Delta.R), FMath::Abs(Delta.G), FMath::Abs(Delta.B))); } } // Differential per channel const float Scale = 128 / MaxDelta; for (int32 x = 1; x < Width; ++x) { const FLinearColor Delta = Prefiltered[x] - Prefiltered[x - 1]; Bitmap[int32(512 + Delta.R * Scale) * Width + x] = FColor(255, 0, 0); Bitmap[int32(512 + Delta.G * Scale) * Width + x] = FColor(0, 255, 0); Bitmap[int32(512 + Delta.B * Scale) * Width + x] = FColor(0, 0, 255); } FFileHelper::CreateBitmap(TEXT("Test"), Width, Height, Bitmap.GetData()); } Roughness 0.5.bmp Roughness 1.bmp
  13. UDP Server Authoritative What I'm doing right now is syncing the players position periodically and using some interpolation while any ability the player uses gets sent and played as soon as possible. Everything seems to work ok in parallel if the abilities don't involve the player moving. If I were to use the same system for movement based skills I would have some trouble syncing VFX with the movement part of the skill because movement would only be managed by state sync. So my question is what would be the best approach to deal with this issue? Should the players position get "locked" at the start of the ability so the ability code could take care of the movement instead, should the state sync take care of both: positions and abilities or is there a better solution? I understand I can't just have state sync take care of the movement and ability code take care of the VFX because of abilities such as teleport for example.
  14. Composition 101: Balance

    In physics, Balance is that point where a specific distribution comes to a standstill. In a balanced composition, all elements are determined in such a way that no change seems possible. The piece must give the feel of steadiness, otherwise, it will just seem off. Rudolf Arnheim, in his Art and Visual Perception book, stands that there are 3 elements to balance: shape, direction, and location. He also says that in the case of imbalance “the artistic piece becomes incomprehensible […] the stillness of the work becomes a handicap”. And that’s what gives that frustrating sensation of frozen time. In this simple example, you can see all this. Having the sphere off center gives the sensation of unrest. The sphere seems to be being pulled to the corner almost. It’s if like an invisible force is pulling it from the center. These pulls are what Arnheim calls Perceptual Forces. And with the sphere in the center of the walls, you have the sense of balance, where all the forces pulling from the sides and corners of the square are equal. Returning to physics, we can say that when talking about Balance the first thing that pops into our heads is Weight. And that’s what it is all about, what we think. Because, as I said before, perception is just the brain processing images. So, if when we talk about balancing something we think of weight it definitely has to have something to do with it in art, right? Exactly. Arnheim talks about knowledge and weight in balance referring to the fact that anyone who sees a picture of a scale with a hammer on one side and a feather in the other knows that the first one is heavier. If the scales are perfectly balanced it will just seem off. But balance does not always require symmetry, as we might tend to think. Isn’t equilibrium that brings balance. If the scales tilt to the “correct” side (the hammer) perceptual balance would have been achieved. In Art, as in physics, the weight of an element increases in relation to its distance from the center. So an object in the center can be balanced by objects to the sides, and objects on one side of the frame must be balanced with objects in the opposite location. But this doesn’t mean that the objects must be the same (symmetry and equilibrium), for there are properties that give objects weight besides their actual apparent weight. SIZE. The larger the object, the heavier. COLOR. Red is heavier than blue. Also, bright colors are heavier than dark ones. ISOLATION. An isolated object seems heavier than the same object accompanied by smaller ones all around it. Arnheim puts the moon and stars as an example here. SHAPE. Experimentation has shown that different shapes affect the way we perceive weight. Elongated, taller, figures seem heavier than short ones (even though they both have the same area size). To expand on this matter I recommend you to go back to the books I will reference in the sources down bellow. Even though these are really simple examples, I plan to move on with this theory applied to environment art. The whole take on Balance gives all the world building process a solid base stone. Embracing these principles will help you understand and better plan object placement in your scene to avoid the feared feel of steadiness Arnheim warned us about. There is still a bit more to explain about Balance so I will be expanding a bit more on this matter in future posts. Thumbnail art: Madame Cezanne in a Yellow Chair, c.1891 - Paul Cezanne Sources: Arnheim, Rudolf (ed.) Art and Visual Perception. A psycology of the creative eye. University of California. 1954. Bang, Molly. (ed) Picture This. (1991) Baker, David B. (ed.). The Oxford Handbook of the Psychology. Oxford University Press (Oxford Library of Psychology), 2012.
  15. The Quest for the Custom Quest System

    Intro - "The challenges of dynamic system design" Custom Quest evolved during development, from a minor quest system used for our own needs in our own game production Quest Accepted, to something entirely more dynamic and customizable, now finally released, these are our thoughts on quest design and developing standalone subsystems. Splitting what is a major production for a small indie team, into smaller installments such as a quest system was a good idea we thought, this way we can get some releases out there and fuel the development of our game. But building a system that works for yourself is one thing, building a unity plugin that will let other developers create quests, missions, and objectives, you would never have thought of is something else entirely. The first thing we had to realize was that when building a quest system, the task is not to design great quests, the task is to enable the users to create great quests. That still meant we had to find out what good quest design is and what a quest really is. Our task was to create a system where the user is free to create creative engaging and rewarding mission experiences for their players. What is a quest? - "Cut to the core" First off, we need to know what a quest really is. A quest is the pursuit, search, expedition, task or assignment a person(s) does in order to find, gain or obtain something. In games, quests and missions function in many different ways depending on the genre. A single game can contain a multitude of different types of quests put together in just as many ways. In an MMO, for instance, quests are vehicles for the story and the player's progression. In many cases they are formulaic and simple, some can even be repeated, there are hundreds of them and everyone can do them. In other games quests are for single player campaigns only, here they shape each level giving the player a sense of purpose. Quests can span the whole game or just be a minor optional task on the way, there are so many design philosophies and creative quest designs that we had to narrow it down and really cut to the core of what is needed for good quest design. What all quests have in common is the task, the criteria for successful completion of the quest, and the reward, the goal of the quest, what the player gets out of doing what we ask of him. Quests cover an incredible variety of tasks so it was important for us to base our decisions on thorough research. In our research, we found that there are three layers to quest design. The type, the pattern and the superstructure. Quest types exist within quest patterns and quest patterns exist within the quest superstructure. We found that there are 8 basic types of quests these are the various tasks/criteria the player must do in order to complete the specific quest. There are 12 quest patterns. These are ways designers can use their quests, connect multiple quests set them up in engaging ways or teach players how to interact with and get the most out of the game world creating variety and engaging the player. Enveloping the patterns is the quest superstructure, the overall structure of quests in the game, we found that there are two main ways of structuring your quests. Historically quest have a quest giver, an NPC or object that informs the player about the quest, what they need to do, the story behind it and perhaps even what their reward will be should they complete the quest. Quest types - "Do this, do that" The core task each quest consists of, the criteria for completing part of or all of a single quest. These are the actions we want Custom Quest to be able to handle. Kill Probably the most basic quest type, the task is to kill something in the game, for example; kill 10 goblins. Gather Again very simple, the task is to gather x things in the game world, collecting berries or the like. Escort The player must escort or follow a person or object from point A to B while keeping it safe. FedX The player is the delivery boy, they must deliver an item to a person or point. Defend The player has to defend a location from oncoming enemies, often for a set number of waves or time. Profit The player must have a certain amount of resources to complete the quest, contrary to gather quests these resources are resources the player would otherwise be able to use himself. Activate The player's task is to activate/interact with one or more objects in the game world or talk to a number of NPC’s. In some cases, this must be done in a certain order for a puzzle effect. Search Search an area, discover an area of the game world. This is useful for introducing areas of the map to the player and giving them a sense of accomplishment right off the bat, showing them a new quest hub or the like. Quest Patterns - "An engaging experience" Tasks are one thing, and in many games, that might be plenty but we wanted custom quest to let the users create chains of quests, specialize them and set them up in ways that draw the player into the experience, there are many ways to go about this. Arrowhead The most basic quest pattern, the quest chain starts out broad and easy, the player has to kill some low-level cronies. The next quest is narrower, the player must kill fewer but tougher enemies, lets say the boss' bodyguards. The last quest is the boss fight, the player has killed the gang and can now kill the boss. This quest pattern is very straightforward and works well, giving rewards either at every stage or only when the boss is dead. Side stub A side stub is an optional part of the overlapping quest. Lets say quest A leads to quest C but there is an option to complete a side objective B, which makes completing C easier or it changes the reward, for example. The player must escape prison, the side stub is “free the other prisoners” in this example escaping with all the prisoners is voluntary but it might make it easier to overpower the guards or the prisoners might reward the player when he gets them out. The side stub differs from a generic side quest in that it is tied to the main quest directly. Continuous side-quests These are side-quests that evolve throughout the game, one unlocks the next, but they are also affected by external requirements such as story progress. This pattern is often found with party members in RPG games, where the player must befriend the party member to unlock their story quests. Deadline As the name implies these quests are time sensitive. The task can be of any type, the important thing is that the quest fails if time runs out. This could also be used for a quest with a side quest where the side quest is timed for extra rewards but the main objective is not. Deja-vu quests This kind of quest pattern gives the player a quest they have done or seen before. In some cases, this “new” quest will have a twist or something that sets it apart. It can also be the same sort of quest that exists in different areas of the game world, perhaps there is more than one goblin camp? or perhaps the player has to pick berries daily. Delayed impact Delayed consequences of a previous decision. Often used in games where the story is important and the players’ choices matter. These quests are tied together without the player knowing. Let's say the player is set the optional task of giving a beggar some gold to feed himself. The player gives the beggar a few gold and is on his way. The next time he meets the beggar the beggar has become rich and rewards the player for his kindness with ten times what he gave. One of many The player is presented with a number of quests, they have to choose which one to complete, they can only choose one. The others will not be available. Hidden quests Hidden tasks that aren’t obviously quests at first glance or are hidden away for only the most intrepid players to find. This could be an item the player picks up with an inscription in it if the player then finds the person the inscription is about he can get a reward for delivering it. A good quest pattern for puzzles, these kinds of quests can really make the game world come alive and feel a lot more engaging, allowing the player to uncover secrets, Easter eggs and discover all of the world created for them Moral dilemma Punish the bread thief who stole to feed his family? often used in games that have a good/ evil alignment level for the players, these kinds of quests make the player make a choice about what kind of character they want to play, they get to choose if their character is good or evil. Side quests Optional quests, these quests are often found in level based games where the overall quest must be completed to get to the next level, the player can optionally do some extra tasks to get more points. The important part is that these are optional but they give the player a reward for, getting everything they can out of the game. Tournament Tournament style quests, a series of quests that get harder as the player progresses. An example could be a gladiatorial arena if the player defeats five enemies one after the other he gets rewarded as the champion of the arena, but if for example, he fails at the third, the whole tournament is failed and he has to start all over from quest 1. Vehicle missions Despite the name these quests are not confined to being about cars, these are simply quests where the players control scheme changes to complete the quest(s). An example could be; changing from running around in the game world to driving a tank to destroy a fort. Quest superstructure - "The whole package" With quest superstructures, we are venturing into general game design. The superstructure is how the player is allowed to complete quests in the game world. It's basically a question of whether the game is “open world” or a linear experience. The diamond structure The open world model, think games like The Elder Scrolls V: Skyrim, the player is introduced to the game through a quest, but after that, they can go wherever and do whatever quests they want. There are tons of quests of the above types and patterns, the player is free to pick and choose which to do, giving the player the illusion of freedom within the game world (the diamond). However, the game still ends by completing a quest that is locked and always a requirement to complete the game. This can, of course, be varied by different choices the player has made throughout the game or even have multiple endings. Quests can be concentrated into quest hubs, i.e. towns with lots to do or the like, but they don't have to be completed in a linear fashion Linear hub structure This structure consists of a number of required “bridge” quests that need to be completed in order to unlock the next area or “hub”, each hub can have any number of quests, this could be a town full of people in trouble, each with their own quests and quest chains to complete, when they are all done, the player moves on to the next hub through another bridge quest. Limiting the quest size of the hubs will make the quest structure feel more linear and thereby the game linear, and creating larger more open hubs can make the player feel freer. Outcome - "So many options!" The development of custom quest has been the quest to allow game developers to create quests and missions that use these types. However, no matter how well we have researched, some one will come up with a new and creative way of doing quests. The solution for us was to make the system more customizable. Letting users convert their quest prefabs to quest scripts that automatically inherits the core functionality, so the user can freely add their own additional functionality on top of the existing core Asset development as fuel - "A learning experience" Developing this way, splitting the production into sub systems that can function on their own and even be used by others is not something that should be taken lightly, but if you can build something lasting, something others can find value in using, then the final product will be all the better for it. Custom Quest started as a project we thought could be completed in a couple of months, it ended up taking 7. In part this is because we realised that if we were going to release the system, we might as well do it right, that meant creating a system that was customizable and robust, a system that can be added to the users game and not the other way around, a system we could be proud of. The experience of developing for other developers is quite different to developing a game. One that has made us much stronger as programmers and as a company, it forced us to think in new ways, in order to create a dynamic and customizable solution. Custom quest has evolved from an asset we could use in Quest Accepted, into a tool others can use to create a unique game experience. All in all, the experience has been a good one and Random Dragon is stronger for it, I would, however, recommend thinking about your plugin and extra time before you start developing. Sources: www.pcgamesn.com -"We know you aren't stupid" - a quest design master class from CD Projekt RED http://www.pcgamesn.com/the-witcher-3-wild-hunt/the-witcher-quest-design-cd-projekt-masterclass http://www.gamasutra.com/ - Game Design Essentials: 20 RPGs - http://www.gamasutra.com/view/feature/4066/game_design_essentials_20_rpgs.php?print=1 Extra credits - Quest Design I - Why Many MMOs Rely on Repetitive Grind Quests https://www.youtube.com/watch?v=otAkP5VjIv8&t=219s Extra credits - Quest Design II - How to Create Interesting MMO and RPG Quests https://www.youtube.com/watch?v=ur6GQp5mCYs Center for Games and Playable Media - Situating Quests: Design Patterns for Quest and Level Design in Role-Playing Games - http://sokath.com/main/files/1/smith-icids11.pdf Center for Games and Playable Media - RPG Design patterns https://rpgpatterns.soe.ucsc.edu/doku.php?id=patterns:questindex Special thanks to Allan Schnoor, Kenneth Lodahl and Kristian Wulff for feedback, constructive criticism and background materials.
  16. Hi. To be honest, but the game design for me has always been something unique and interesting. My path of game development first started with programming. After I began to draw, in order to be universal, but later, I discovered the game design and that was for me, on a pedestal favorite direction. Today I would like to touch on the types of players, why they play the games and pleasures of games. Be brief and clear. In our nature there are 4 types of players: explorers, killers, sociable and those who like committed to something. Crooks. This type of players are focused more on the quick passing game. It does not matter the study and details in the game. Killer. These guys love to destroy everything and kill everybody. Just put them in the tank, tell them where it is necessary to blow - trust me, they will not leave anything alive there. Sociable. They love socializing, but most of all they love online games where can someone make friends, work in team and to tell you the recipe for a delicious mother's cookies. Researchers. How do you think, what you like to do this group of players? I also think that they are exploring every path in the game where you can collect all achievements. Every time you create a game, ask yourself the question: "what kind of player I do my game? Is it possible to combine these types of players in my game, changed some part of it?" Incidentally, with regard to online games. Why do you think people play online games? First, they like competition, will compete to get to the top and gain respect. Secondly, people like to work in a team. Personally I play team games and more hours spent in team modes rather than in single. I love this mode. Thirdly, people play online games in order to meet and chat with friends, spend time with them online and meeting them to have constant, friendly contact. As you know, men play more games than girls. Their main game is the first 20 years. Action and aesthetics - their element. From 20 to 30 years, men are already playing something more calm and tactical, where you do not need a lot of push on the joystick, but need to think. And about men from 30-35 years to play in something calm, for example in genres "I'm search" and "Farm". But women, as a rule, begin actively playing with for 30 years. More women in the world, but I don't like the game. But often after 30 years of playing farm frenzy. Identify the main fun of the players: Fantasy. We love to feel part of another world, which could be anyone. Plot. Sometimes the plot can cause a pleasant sense of his sudden change of events, a dramatic denouement and linearity. Partnership. Teamwork is enjoyable. Discovery. The opening of the new - is the main game fun. Expression. Everyone loves to brag about. Obedience. Cool when you can control others. Feeling. When you realize that step the expected event, then the waiting becomes a pleasure. The gloating. When you killed your enemy, it's nice. Gifts. We love to receive gifts? Humor. No comment. Choice. To go left or right? I have a choice? Fulfilled goal. We love to reach goals and to feel pride because of this. Surprise. We love to be surprised. The Japanese are masters at it. Fear. We love to be frightened and to feel the shaking. This is an interesting kind of fun that we both and hate. A miracle. When we are strongly of something was surprised and experienced a wild delight from something. A tough win. That moment, when initially there was little chance to win, but you win. So when making a game, think of the fun highlights of your game and how much to add. My name is Flatingo and I love to make games. If you also like to make games, welcome to my YouTube channel. Good luck in your projects.
  17. I want to share my experience and collected here the most common mistakes in creating and advertising your games. I'll be glad if it helps you.
  18. http://www.tinker-entertainment.com/sitavriend/psychology-and-games/perceiving-is-believing-the-game-design-edition/ Perceiving is believing, or is it really? We have five basic senses which we use to perceive the world with: smell, taste, touch, seeing and hearing. But there is a difference between sensing and perceiving. Our senses provide us with raw data from the environment around us. This raw data can be visuals from our eyes, airborne chemicals our noses pick up, tastes on our tongue, soundwaves via our ears or tactile (touch) information from our skin. Perception, on the other hand, is the way our brain organizes and interprets this raw data. We use our perception to make sense of what we sensed. Perception can be influenced by the context in which the stimuli (what we have sensed) presented, our expectations and our current mood. What you see isn’t always what you get and that is true for all senses. Perceiving isn’t always believing. Our brain works in weird ways which affects our perception too. Sometimes you don’t perceive something you’ve sensed or you perceived something that wasn’t there in the first place (Gosselin & Schyns, 2003). Our brain can also play tricks on our perception. It can interpret the stimuli in weird ways. Optical illusions are a fun example of how our perception works, below are a couple examples. How can two colors be the same while you perceive them as different? Illusion 1 is an example of how context and expectations shape your perception. Square A and B are the same shade of grey but your brain interprets them as completely different. You see a checkerboard and expect a certain pattern, A is supposed to be black and B is supposed to be white. Combine this with the contexts of the shadow: your brain expects the squares in the shadow to be darker. Sometimes your brain makes you see things that aren’t there. You probably sees a black triangle laying on top of three circles and a white triangle in illusion 2. That is your brain filling up the gabs. There is no black triangle, the triangle is a lie! There are just three white pizza’s all with a missing slice and three lines with the same angles. Illusion 3 is a picture of two faces or a vase. It all depends on the angle you are looking from, but you can never see both at the same time. How we perceive these illusions depends on our perceptual sets. A perceptual set is the tendency to interpret a stimulus in a certain way only. It is what makes you see the faces before the vase in illusion 3 (or the vase before the faces). Our perceptual sets are heavily influenced by our emotions, expectations, beliefs, context and past experiences. Perception is sometimes weird and that our brain words in strange ways. You might wonder why we have such a thing as perception in the first place. Why can we not just perceive the world as we sensed it? And what is the function of perception? Perception is quite useful for filtering out the necessary information only. We would go crazy by all the stimuli around us if we would perceive the world as we sense it. We use our perception for attention, to figure out what information is coming in. The incoming information can be filtered through our selective attention, that way our brain ignores anything else but the stimuli of interest. Selective attention is what we use when we become immersed in a game. We only focus our attention to the stimuli from the game and ignore the outside world. Perception is also used for localizing where the information of interest is coming from. When you walk through your town and smell something amazing you might want to wonder where it’s coming from. Or your perception already did the work and you know it was from the bakery across the street. Perception can also help you recognize a stimuli. You smell the bakery and immediately recognize that they just finished baking their bread. We can also filter out unnecessary information with our senses directly. Our sensory cells respond less and less when a stimulus stays the same for a while. After a while we no longer register the stimulus. This is called sensory adaptation. Think about the pressure of your clothes, you notice it when you put them on and when you move. Most of the day you just won’t notice them due to sensory adaptation. The same happens to the noise your fridge makes or the ticking of your clock. The smell cells in your nose will even stop responding for a while. They need to be given a chance to recover before you can smell again (Dalton, 2000). Not all senses are equally important to games. Smell isn’t used in games since the smell-o-console hasn’t been invented yet. You’re also not very likely to lick your screen to see what the game tastes like. The only senses we can use in games are vision, hearing and tactile (touch, vibration and pressure). As designers we only have to account for hearing and vision. We have very little control over the feel of the keyboard or controller. Do think about adding vibration occasionally when your game is played with a controller. Thomas was alone is a favorite of mine because of the excellent use of emotional narration but the game also works well perception-wise. When you play the game for the first time you immediately understand who Thomas is. Considering Thomas is a red rectangle, that is kind of amazing. Thomas was alone shapes the player’s perception with its title, expectations and context. From the title you immediately expect to play or interact with a character named Thomas. You expect Thomas to be one of the characters or perhaps the playable character. The narration adds to this as well once the player starts the game. There is no need to show a big arrow with the word ‘playable character’ written on it, your perception worked it out already. Without its art, the game would be nowhere. The choice for abstract art was a conscious one. It’s not just to play with our perception, it helps our perception. The color scheme of the game is mostly monochrome except for the characters, they really pop-out. From the first interaction it is clear that these colorful rectangles are the objects of interest. Your gaming knowledge matters to your perception as well. It helps you understand where the characters need to go, where you can and can’t go and how to interact with the game in general. Tips and suggestions These tips and suggestions can be applied to all types of games. For some genres it might be easier than others but it is good practice to make use of player expectations. Do a little research into other games your target audience plays or research similar games. Find out what these games have in common with each other or what popular gaming conventions are in the genre. If you plan to make a mobile game where players have to slice things in half, look at other games where players slice things in half (hint: Fruit Ninja). How do players interact with the game? Is it a common way to interact with these types of games? Are all good questions to ask yourself. Don’t just blindly copy mechanics and features from a similar game, find out what is common knowledge among your players and what they expect. Help the player’s selective attention by making use of the pop-out effect for objects of interest. Think about the little shake animation in candy crush. The shake grabs the player’s attention immediately, it’s even visible from the corners of your eyes. Or make use of colors that are brighter than others for objects of interest. This might be the domain of the artists but it is very important for game designers to take this into account as well. It’s the game designer’s task to guide the art team into making decisions that benefit and complement the game design. Audio can also be used in interesting ways to help the player’s perception in the game. You can use it as a mechanic to lure the players or as a way to foreshadow an upcoming monster. Perception is an interesting thing our brain does. We can aid it through our game design or play with it. The possibilities are endless. References and stuff Crash course psychology: https://www.youtube.com/watch?v=unWnZvXJH2o&t=9s Gosselin, F. & Schyns, P. G. (2003). Superstition perception reveal properties of internal representations. Psychological Science, 14(5), 505-509. Dalton, P. (2000). Psychophysical and behavioral characteristics of olfactory adaptation. Chemical senses, 25, 487-492
  19. I was developing a 2D game engine in c++ and it went pretty well, until I got to the point of exporting the game. You see, I was using lua in a virtual machine (sandbox) for the scripting of the game; now I realized that my game engine is just a lua interpreter if I try to share the game I'll distribute the game files (sounds, images, etc..), my scripts and my "interpreter" .exe this means that if I share my game with someone they'll have access to the game logic instead of a stand-alone .exe. How do other engines compile scripts into a stand-alone executable i'm really confused on this mater.
  20. How to learn to draw game graphics

    So, drawing. How to learn how to draw game graphics and how to learn to draw at all, when is your maximum this? Okay, then let's discuss this. To begin with, I'm not a cool artist, but I persistently develop this skill in myself, every day drawing and stacking tons of paper. By the way, I advise this to you. This is good advice. As in the beginning of any business that you start, you do not need to show yourself a super genius, have super equipment and immediately invest huge amounts of money in your development. No, my dear friend, start small, and everything else will come with time. Therefore, to begin with, choose the style of drawing that you want and just practice in it. Just do not paint in all styles at once. To begin with, determine what you like and understand what styles there is. Watching how the games and their style develop, I can say with confidence that now the pixel art, cartoonish and comic graphics are in fashion. Who needs hyperrealistic humanoids and canons now? This is a huge zamorochki in creating games and stereotyped. Do not be afraid to draw a fist bigger than your head, and legs are the size of a joystick. Fashion, where beautifully painted drawings and brought them to realism, gradually disappears. Minimalism, simplicity and violation of proportions is what is now actual. Look at the latest games, because they became easier in style and no less beautiful (Overwatch, Dota2, Pixel Piracy, etc.). I will also say that I am a big fan of vector graphics and how it looks. What not to say about China and the eastern countries that can not live without it. This is not a joke, because in fact, Chinese developers are styling their games for a bright cartoon graphics with the addition of anime. In the east This is popular. Here are the games of Klei Entertainment. Pay attention to the style. You see? He's alone in all games and it's cool. This is the most important thing - to find your own style. I'm sure the director will not fire this artist. Look at other industries: advertising, television, etc. Everywhere simple graphics are used, for it is easy to perceive. People are now very lazy and quickly get used to everything, so vector graphics are now gaining good growth. By the way, to draw graphics for games, you need and do not need a graphics tablet. Look, the point is that you can draw a vector and pixels with your mouse. Believe me, this will be enough for you. But the tablet is relevant when you are drawing something more or less detailed. More often it is used for detailing and texturing an object in Photoshop. I once read Christopher Hart's book about drawing comics. You can also read the book of your chosen style, as well as redraw the different pictures you like. Why? Over time, the hand and the brain will memorize the outline and images, and it will be easier for you to come up with something new in the future, as well as draw already existing pictures in your head. Well, I probably will finish this, but this is not my last article. I will be happy if you need my experience. By the way, more information about the development of games and everything related to it you can find out on my YouTube channel. With you was a Ukrainian developer of indie games - Flatingo. Good luck to you.
  21. I'm trying to write a simple quadcopter simulation. It doesn't need to be 100% accurately simulated and I don't intend to write an actual drone controller, it's just supposed to "look" right in the simulation, and I'm trying to get a better understanding of PIDs. As such, I don't need to worry about sensors, or an accelerometer or gyroscope, I get all of the information from the simulation directly. I'm new to quadcopter physics and PIDs, so there are a few things I'm a bit unclear on. I'm not asking for concrete solutions, I'd just like to know if my ideas go in the right direction and/or if I'm missing anything. 1) Let's say the quadcopter has the world coordinates Q(0 -50 0) (y-axis being the up-axis) and I want it to fly to O(0 0 0). The velocity I need is O -Q, so I need to accelerate the drone until I reach that velocity (Correcting it every simulation tick). To do that, I need a PID, with the setpoint being the desired velocity O -Q, and the process variable being the current velocity of the drone (both on the y-axis), and 1/4th of the PID output is then applied as force to each rotor (Let's ignore the RPM of the rotors and assume I can just apply force directly). Is that correct? 2) The drone is at the world coordinates Q(0 0 0) and should fly to P(100 0 100). It also has the orientation (p(itch)=0, y(aw)=0 and r(oll)=0). I want the drone to fly to point P, without changing its yaw-orientation. How would I calculate the target pitch- and roll-angles I need? I can work with euler angles and quaternions (not sure if I need to worry about gimbal lock in this case), I just need to know what formulas I need. Of course I also want to make sure the drone doesn't overturn itself. 3) I want to change the drone's orientation from (p=0, y=0, r=0) to (p=20, y=0 r=0) (With positive pitch pointing downwards). To do so, I'd have to increase the force that is being applied by the front rotors, and/or decrease the force of the back rotors. I can use a PID to calculate the angular velocity I need for the drone (similar as in 1) ), but how do I get from there to the required forces on each rotor? 4) Am I correct in assuming that I need 6 PIDs in total, 3 for the angular axes and 3 for the linear axes?
  22. Hi there, it's been a while since my last post. I was creating a bunch of games but there was always something missing. Something which makes the game (maybe unique)... After a few tries I decided to start a side project for a combat system which should be used for fighting games. I did a lot of research and programming to finally get something that makes actually fun to play. Well... it is only a prototype and I do not want to share it (yet). Now I decided to share my ideas of the basics of a combat system for fighting games. Don't get me wrong... This is only my way of doing stuff and I want as many feedback as possible and maybe it will help people with their games. I will provide a few code snippets. It will be some sort of OOP pseudo code and may have typos. Content 1. Introduction 2. Ways of dealing damage 1. Introduction What makes a combat system a combat system? I guess it could be easy to explain. You need ways of dealing damage and ways of avoiding damage. At least you need something for the player to know how to beat the opponent or the game. As i mentioned before, I will focus on fighting games. As it has ever been there is some sort of health and different ways to reduce health. Most of the times you actually have possibilities to avoid getting damage. I will focus on these points later on. 2. Ways of dealing damage How do we deal damage by the way? A common way to do so, is by pressing one or more buttons at one time in order to perform an attack. An attack is an animation with a few phases. In my opinion, an attack consists of at least four phases. 1. Perception 2. Action 3. Sustain 4. Release Here is an example animation I made for showing all phases with four frames: Every one of those has its own reason. One tipp for our designers out there is to have at least one image per phase. Now we should take a closer look at the phases itself. 2.1. Perception The perception phase should include everything to the point, the damage is done. Lets say, it is some sort of preparing the actual attack. Example: Before you would punch something, you would get in position before doing the actual action, right? Important note: the longer the perception phase is, the more time the opponent has to prepare a counter or think about ways to avoid the attack. Like having light and heavy attacks. The heavy attacks mostly have longer perception phases than the light ones. This means, that the damage dealt is likely greater compared to the light attacks. You would like to avoid getting hit by the heavy ones, right? 2.2. Action The action phase is the actual phase where damage is dealt. Depending on the attack type itself the phase will last longer or shorter. Using my previous example, heavy attacks might have a longer action phase than light attacks. In my opinion, the action phase should be as short as possible. One great way to get the most out of the attack animation itself is by using smears. They are often used for showing motion. There's ton of reference material for that. I like using decent smears with a small tip at the starting point and a wide end point (where the damage should be dealt). This depends on the artist and the attack. 2.3. Sustain At first sight, the sustain phase may be irrelevant. It is directly after the attack. My way of showing the sustain phase is by using the same image for the action phase just without any motion going on. The sustain phase should be some sort of a stun time. The images during the sustain phase should show no movement - kind of a rigid state. Why is this phase so important? It adds a nice feel to the attack animation. Additionally, if you want to include combos to your game, this is the phase, where the next attack should be chained. This means, while the character is in this phase of the attack, the player could press another attack button to do the next attack. The next attack will start at the perception phase. 2.4. Release The release phase is the last phase of the attack. This phase is used to reset the animation to the usual stance (like idle stance). 2.5. Dealing damage Dealing damage should be only possible during the action phase. How do we know, if we land a hit? I like using hit-boxes and damage-boxes. 2.5.1. Hit-boxes A hit box is an invisible box the character has. It shows it's vulnerable spot. By saying "Hit-box" we do not mean a box itself. It could be any shape (even multiple boxes together - like head, torso, arms, ...). You should always know the coordinates of your hit-box(es). Here is an example of a hit-box for my character: I am using Game Maker Studio, which is automatically creating a collision box for every sprite. If you change the sprite from Idle to Move, you may have a different hit-box. Depending on how you deal with the collisions, you may want to have a static hit-box. Hit-boxes could look something like this: class HitBox { /* offsetX = the left position of you hit-box relative to the players x coordinate offsetY = the top position of you hit-box relative to the players y coordinate width = the width of the hit-box height = the height of the hit-box */ int offsetX, offsetY, width, height; /* Having the players coordinates is important. You will have to update to player coordinates every frame. */ int playerX, playerY; //initialize the hit-box HitBox(offsetX, offsetY, width, height) { this.offsetX = offsetX; this.offsetY = offsetY; this.width = width; this.height = height; } //Update (will be called every frame) void update(playerX, playerY) { //you can also update the player coordinates by using setter methods this.playerX = playerX; this.playerY = playerY; } //Getter and Setter ... //Helper methods int getLeft() { return playerX + offsetX; } int getRight() { return playerX + offsetX + width; } int getTop() { return playerY + offsetY; } int getBottom() { return playerY + offsetY + height; } } When using multiple hit-boxes it would be a nice idea to have a list (or array) of boxes. Now one great thing to implement is a collision function like this: //check if a point is within the hit-box boolean isColliding(x, y) { return x > getLeft() && x < getRight() && y > getTop() && y < getBottom(); } //check if a box is within the hit-box boolean isColliding(left, right, top, bottom) { return (right > getLeft() || left < getRight()) && (bottom > getTop() || top < getBottom()); } 2.5.2. Damage-boxes Damage-boxes are, like hit-boxes, not necessarily a box. They could be any shape, even a single point. I use damage-boxes to know, where damage is done. Here is an example of a damage-box: The damage box does look exactly like the hit-box. The hit-box differs a bit to the actual damage-box. A damage-box can have absolute x and y coordinates, because there is (most of the times) no need to update the position of the damage-box. If there is a need to update the damage-box, you can do it through the setter methods. class DamageBox { /* x = absolute x coordinate (if you do not want to update the coordinates of the damage-box) y = absolute y coordinate (if you do not want to update the coordinates of the damage-box) width = the width of the damage-box height = the height of the damage-box */ int x, y, width, height; /* The damage the box will do after colliding */ int damage; //initialize the damage-box DamageBox(x, y, width, height, damage) { this.x = x; this.y = y; this.width = width; this.height = height; this.damage = damage; } //Getter and Setter ... //Helper methods int getLeft() { return x; } int getRight() { return x + width; } int getTop() { return y; } int getBottom() { return y + height; } } 2.5.3. Check for collision If damage-boxes and hit-boxes collide, we know, the enemy receives damage. Here is one example of a hit: Now we want to check, if the damage box collides with a hit-box. Within the damage-box we can insert an update() method to check every frame for the collision. void update() { //get all actors you want to damage actors = ...; //use a variable or have a global method (it is up to you, to get the actors) //iterate through all actors foreach(actor in actors) { //lets assume, they only have one hit-box hitBox = actor.getHitBox(); //check for collision if(hitBox.isColliding(getLeft(), getRight(), getTop(), getBottom()) { //do damage to actor actor.life -= damage; } } } To get all actors, you could make a variable which holds every actor or you can use a method you can call everywhere which returns all actors. (Depends on how your game is set up and on the engine / language you use). The damage box will be created as soon as the action phase starts. Of course you will have to destroy the damage-box after the action phase, to not endlessly deal damage. 2.6. Impacts Now that we know, when to deal the damage, we should take a few considerations about how to show it. There are a few basic elements for us to use to make the impact feel like an impact. 2.6.1. Shake the screen I guess, I am one of the biggest fans of shaking the screen. Every time there is some sort of impact (jumping, getting hit, missiles hit ground, ...) I use to shake the screen a little bit. In my opinion, this makes a difference to the gameplay. As usual, this may vary depending on the type of attack or even the type of game. 2.6.2. Stop the game This may sound weird, but one great method for impacts is to stop the game for a few frames. The player doesn't actually know it because of the short time, but it makes a difference. Just give it a try. 2.6.3. Stun animation Of course, if we got hit by a fist, we will not stand in our idle state, right? Stun animations are a great way to show the player, that we landed a hit. There is only one problem. Lets say, the player is a small and fast guy. Our enemy is some sort of a big and heavy guy. Will the first punch itch our enemy? I guess not. But maybe the 10th one will. I like to use some damage build up system. It describes, how many damage a character can get before getting stunned. The damage will build up by every time the character will get hit. After time, the built up damage reduces, which means, after a long time without getting hit, the built up shall be 0 again. 2.6.4. Effects Most games use impact animations to show the player, that he actually hit the enemy. This could be blood, sparkles, whatever may look good. Most engines offer particle systems, which makes the implementation very easy. You could use sprites as well. 2.7. Conclusion By using the four phases, you can create animations ideal for a fighting game. You can prepare to avoid getting hit, you do damage, you can chain attacks and you have a smooth transition to the usual stance. Keep in mind, the character can get hit at phases 1, 3 and 4. This may lead to cancel the attack and go into a stun phase (which i will cover later). A simple way to check for damage is by using hit-boxes and damage-boxes. 3. Ways of avoiding damage Now we are able to deal damage. There is still something missing. Something that makes the game more interesting... Somehow we want to avoid taking damage, right? There are endless ways of avoiding damage and I will now cover the most important ones. 3.1. Blocking Blocking is one of the most used ways to avoid damage (at least partially). As the enemy starts to attack (perception phase) we know, which attack he is going to use. Now we should use some sort of block to reduce the damage taken. Blocking depends on the direction the player is looking. Take a look at this example: If the enemy does an attack from the right side, we should not get damage. On the other side, if the enemy hits the character in the back, we should get damage. A simple way to check for damage is by comparing the x coordinates. Now you should think about how long the character is able to block. Should he be able to block infinitely? You can add some sort of block damage build up - amount of damage within a specific time the character can block (like the damage build up). If the damage was to high, the character gets into a stunning phase or something like that. 3.2. Dodging Every Dark Souls player should be familiar with the term dodging. Now what is dodging? Dodging is some sort of mechanism to quickly get away from the current location in order to avoid a collision with the damage box (like rolling, teleportation, ...) Sometimes the character is also invulnerable while dodging. I also prefer making the character shortly invulnerable, especially when creating a 2D game, because of the limited moving directions. 3.3. Shields Shields may be another good way to avoid taking damage. Just to make it clear. I do not mean a physical shield like Link has in the Legend of Zelda (this would be some sort of blocking). I mean some sort of shield you do have in shooters. Some may refill within a specific time, others may not. They could be always there or the player has to press a button to use them. This depends on your preferences. While a shield is active, the character should not get any damage. Keep in mind. You do not want to make the character unbeatable. By using shields which are always active (maybe even with fast regeneration), high maximum damage build up / block damage build up you may end up with an almost invulnerable character. 3.4. Jump / duck These alternatives are - in my opinion - a form of dodging. The difference between dodging and jumping / ducking is, that you do not move your position quickly. In case of ducking, you just set another hit-box (a smaller one of course). While during a jump, you are moving slowly (depends on your game). The biggest difference in my opinion is, jumping or ducking should have no invulnerable frames. I hope you enjoyed reading and maybe it is useful to you. Later on, I want to update the post more and more (maybe with your help). If you have any questions or feedback for me, feel free to answer this topic. Until next time, Lukas
  23. Can there be too many choices?

    http://www.tinker-entertainment.com/sitavriend/psychology-and-games/can-there-be-too-many-choices/ Last week I wrote an article on the dual-process theory which covered how we make decisions. This week I’ll discuss if it is possible to have too many options to choice from. As you know from last week’s article people can use system 1 thinking to narrow down their options and then use system 2 thinking to make the actual decision. It is important to narrow the options down to just a couple since system 2 is effortful and slow. Unfortunately, narrowing down your options is getting more difficult in this day and age. This is exactly what choice overload is about: there is just too much to choose from. Choice overload was first mentioned by Iyengar and Lepper (2000) when they conducted a study about people choosing jams. They compared two conditions where people could sample a number of jams in a supermarket. During condition 1 the researchers displayed 6 different flavors of jams and during condition 2 there were 24 different flavors to choose from. During both conditions people were given coupons to buy the jams with as well. They found that when they displayed 24 different flavors, 60% of the people tasted but from those only 3% went on to buy a jam. Surprisingly, when only 6 flavors were displayed 40% of people tasted but a whopping 30% of those people bought a jam. Iyengar and Lepper concluded that people are initially attracted by many options but then had a difficult time choosing. We are better at choosing when we are presented with fewer options. This surprising result let Schwartz (2004) to develop the idea of choice paradox. Choice paradox states that people like the idea of more options but when you are given more options they have difficulty choosing. The idea takes into account that all options are somewhat equal and that not choosing is also an option. Both the choice paradox and choice overload are related to the dual-process theory. If we want to make the most optimal decision based on reason and logic we have to rely on system 1 thinking. However this system of thinking can only help when there are just a few options to choose from (Payne & Bettman, 2004). Why do we experience choice overload? Of course we need to have lots of options to experience overload. So many options that we get overwhelmed and decide not to choose. But why do we get overwhelmed? Why can’t we just make a decision? If all options are equal in some way than there is no optimal choice. We won’t have a problem choosing if one of the options is better than the others in some way. Another problem is that when we choose anything we limit our freedom. People tend to react negatively to the limitation of their freedom, we don’t like it. This reaction is known as reactance. Keeping your options open and not choosing means we don’t have to feel bad because of reactance. Age of Wonders 3 – a micromanagement game During my internship I worked on Age of Wonders 3, a strategy game with a huge number of options. As a player you can decide on which strategies to use but there are also options to customize your hero, chose a race, a class etc. There are many choices the player has to make right from the start. According to the choice overload theory, there probably are too many choices for a newbie. But a fan of the series would be used to it. They expect the next Age of Wonders to have more options and features. Furthermore, the nature of the strategy game ensures that while there are many options, they aren’t balanced equally and not all options are unlocked right from the start. Take for example the units, not all units will be unlocked right from the start of a session. The player has to unlock them by doing research or building the right city structure. Once the player processes, there the option of units increases. Early-game units will be less attractive to players since units that are unlocked late game are much stronger. Micromanagement games – design tips and suggestions Just like last article, micromanagement games are the ones to look out for when it comes to the choice overload theory. Strategy games, city builders and many simulators can benefit from many well-balanced choices but can also overwhelm the player. However, games are a bit special in a way because a wrong choice can easily be undone. Players can simply by going back to a previous save or restart the game. But still games can have so many options right from the start that players get overwhelmed and quit the game. Luckily there is a way to maintain a large number of options and reducing choice overload at the same time. Break up the choices the player can make into a series of choices, each with a limited number of options (Besedes et al. 2014). You can do this in the form of categories like for example Tropico does. Pokemon Go – a mobile game Think about Pokemon Go, which was a very successful game in many countries last summer (2016). They kept the number of items in the shop limited. They didn’t add 8 different options for the number of pokeballs you can buy, there are just 3 options. You either buy 20, 100 or 200 poke balls at a time. The different options for the number of coins you can buy is also limited. They have 6 different options for buying coins. Although I would have opted for 4 different options (for choice overload sake), I can understand they chose 6 to increase the money with small steps for the player. Mobile games – design tips and suggestions Especially mobiles games in which players can buy items should keep the choice overload theory in the back of their mind. You don’t want your players to be overwhelmed by the many item they can buy. In that case, players will view not buying as their best option. It is the cheapest option for them anyways. Keep the number of options small especially when they have equal value within your game. You can also add a ‘recommended’ or ‘best value’ label to certain items to make them stand out. An option with such a label will seem like a more optimal choice to the player. Do you still want your players to have many options? Consider selling a few package deals: boxes that contain several items (random) items. References https://www.youtube.com/watch?v=qosYJvMZJFA Besedeš, T., Deck, C., Sarangi, S., & Shor, M. (2015). Reducing choice overload without reducing choices.Review of Economics and Statistics, 97(4), 793-802. Schwartz, G., Ward, A. H., Monterosso, J., Lyubomirsky, S., White, K., & Lehman, D. (2002). Maximizing versus satisficing: Happiness is a matter of choice. Journal of Personality and Social Psychology, 83, 1178-1197 Iyengar, S. S., & Lepper, M. R. (2000). When choice is demotivating: Can one desire too much of a good thing?.Journal of personality and social psychology, 79(6), 995. Payne, J. W. & Bettman, J. R. (2004). Walking with the scarecrow: The information-processing approach to decision research. In D. J. Koehler & N. Harvey (eds), Blackwell Handbook of Judgment and Descision Making. Malden, MA: Bkackwell Publishing. Scheibehenne, B., Greifeneder, R., & Todd, P. M. (2010). Can there ever be too many options? A meta-analytic review of choice overload.Journal of Consumer Research, 37(3), 409-425.
  24. http://www.tinker-entertainment.com/sitavriend/psychology-and-games/groups-divided-competition-among-groups/ Last week I talked about the power of groups. I discussed the advantages and disadvantages of groups and how we behave in group. This week I’d like to continue on about groups, how we behave in them and how we behave towards other groups. Knowing how we behaving in groups and towards other groups is very useful in social games and multiplayer games, especially games where groups compete against other groups. On one summer’s day, eleven 12-year-olds went to a camp in Robbers cave state park. Over the course of a week the boys bonded while playing games and formed a tight friendly group. The boys gave their group a name as well: the Rattlers. Soon the Rattlers found out there was another group of eleven 12-year-old boys who stayed at the other side of the park. The other group of boys also bonded over games to form a tight friendly group. They called themselves the Eagles. Both groups of boys started to dislike each other and decided to fight out which group was better over a series of competitions. The rivalry between the Rattlers and the Eagles got worse over the course of the competition. The boys became aggressive and hateful towards each other. The camp staff changed the situation around. They integrated the groups and gave the boys shared goals they could only complete if all boys helped out. Soon, the two groups became one big group of 22 boys. All boys had become friends and formed a big tight friendly group. These boy camps at Robbers cave state park were more than just camps, they were Sherif’s experiment (1961). He wanted to test his Realistic conflict theory: conflict happens when you combine negative prejudices with competition over resources. While isolation and competitions made enemies of the boys, common goals and cooperation turned the enemies into friends. The boys were a classic example of the outgroup-ingroup phenomena or “us vs them”. The two boy groups became aggressive toward each other based on very little more than because they belonged to different groups. The boys favored their own group and hated the other group, even though all boys were the same age and had a similar background. The fact that people favor in-group members based in very little is called minimal group effect and it happens even if membership of the groups is randomly determined. People who belong to the same group as you are ingroup members. People who belong to a different group are outgroup members. The boys who belonged to the Rattlers would be outgroup members for the Eagle boys. The Rattler boys would view each other as ingroup members. Members of a group will start to view members from another group (outgroup members) as more similar to each other than their own members. This phenomena is called outgroup homogeneity bias and it is what happens when we are stereotyping for example people from other countries. Of course Germans aren’t all beer-lovers and always on time. The same is true for Americans, not all Americans are obese and only eat at McDonalds. The opinions of ingroup members can shift towards more extreme views because of group discussions when members of the group have similar opinions. This is called group polarization and it is what often happens when people share their opinions online. Your opinion of view might be confirmed when someone of your group shares their opinion online. Multiplayer games and the community The ‘us vs them’ or ingroup-outgroup phenomena is a huge problem for many games, it drives online rants, bullying and harassment. Now-a-days there are many games that offer an online multiplayer that should keep the ingroup-outgroup phenomena in the back of their minds. The ingroup-outgroup phenomena is a problem that designers need to deal with, with sexism at its core in many hardcore multiplayer games. I hear you thinking: “oh no not another article about sexism in game”. Yes, I’m sorry but it is one of the biggest problems the entertainment industry is dealing with at the moment. You might think why can’t women or girls who enjoy video games not just avoid the sexism online. Just avoid Gamergate and other online platforms. But this is not possible when you enjoy playing hardcore multiplayer games, sexism is still present among its players. Many female players are afraid to ‘come out’ as a girl and turn off their microphone so other will not find out (McLean & Griffiths, 2013). Many of these games have a predominantly male audience, they all belong to a group: gamers (or male gamers). Similar to the Rattlers and the Eagles, this gamer group see their domain being taken over and invaded by another group: girl gamers. The internet has a role in all this as well which is where male gamer group discuss their (negative) views and opinions among each other. While you might have been just a little annoyed by female gamers at first, now your views are being confirmed and get more extreme. The same happens to female gamers and group polarization is complete. Sherif’s Realistic conflict theory is very much present in the gamer community, both online and in games. However it’s good to keep in mind that not everyone falls victim to group polarization. Most of the time there are only a few that spoil it for the rest. How can we fix group polarization? It won’t be easy but the Robber’s cave experiment can be a good start. Remember how the researchers turned the situation around for the Rattler and Eagle boys? Both groups were forced by the researchers to work together. The boys were given goals they could only complete when they all worked together. While this might be impossible for the gaming community as a whole, we can start small with one multiplayer game at a time. Keep the Realistic conflict theory in the back of your mind when you are thinking about adding multiplayer to your game. Design systems where all players need to work together from time to time, just like the researchers did with the Rattlers and the Eagles. We’re all just gamers Knowledge is power, knowing about group polarization and realistic conflict theory can help you understand why someone acts sexist in a video game or why someone becomes a social justice warrior. I don’t believe in social justice warriors and their rants about sexism. It can only make group polarization worse and making the gap between the groups bigger. Instead of ranting towards either of those groups react more nuanced and empathize. It might be very difficult but it’s the best way. References and further reading https://simplypsychology.org/robbers-cave.html University of Oklahoma. Institute of Group Relations, & Sherif, M. (1961). Intergroup conflict and cooperation: The Robbers Cave experiment(Vol. 10, pp. 150-198). Norman, OK: University Book Exchange. McLean, L., & Griffiths, M. D. (2013). Female gamers: A thematic analysis of their gaming experience. International Journal of Game-Based Learning (IJGBL), 3(3), 54-71.
  25. Intrinsic and Extrinsic Motivation

    As you might have guessed, intrinsic and extrinsic motivation is all about motivation. It tries to classify our reasons for being motivated to do something and explains why we are motivated. Although much research into motivation has been done and quite some theories have been proposed to explain motivation, extrinsic and intrinsic motivation is just one of those. Actually, I already wrote an article on another theory in motivation called: ‘wanting vs liking’. Here is a link if you haven’t read it already: The striking difference between liking and wanting. Back to intrinsic and extrinsic motivation and what these actually are. Any reason that explains our motivation to do something can be classified as an intrinsic motivator or an extrinsic motivator. When you are intrinsically motivated it means that you do something simply because you enjoy doing it. In other words, we think it is fun to do (Schmitt & Lahroodi, 2008). Extrinsic motivation, on the other hand, is when you are being motivated to do something because of an incentive. The incentive can be a reward but also a punishment, anything that motivates us as long as it doesn’t come from within our self. So if you like drawing simply because you enjoy drawing it is intrinsic motivation. But when you draw for an art class so you can get a good grade, it is extrinsic motivation. The grade is the incentive. What intrinsically motivates you is very personal, it is different for everyone. What you find extrinsically motivating is also personal but also relies on something called incentive salience: how noticeable is the incentive? (Berridge, 2007). Emotion has a role in this as well: associating an incentive with a specific emotion can make the incentive be more salient and motivating (Robinson & Berridge, 2001). It is important to keep intrinsic and extrinsic motivation in mind when you design your game because it can have an effect on your player’s behavior and how they like the game. Relying on extrinsic motivation too much can kill creativity and problem-solving. According to Glucksberg (1962), people can become distracted by (monetary) rewards when they are offered one. This distraction inhabits people to solve a problem which requires creative thinking. Extrinsic motivation can also kill motivation. Especially rewards can undermine the intrinsic motivation people have for an activity (Deci, 1999). People will enjoy the activity less and not do it as often anymore. And as we know from my previous article, people can ‘want’ to do something without actually liking the activity anymore. So how can you know that players are playing your game because they ‘like’ it from looking at your game’s analytics? How can you know whether your players are just mindlessly playing your game because they became addicted to it? Sure, if your goal is to just generate money and not caring whether or not your players acutely like playing your game, go ahead, it can be a conscious choice. But if you want your players to look forward to your game and actually liking to play it, consider relying more on your player’s intrinsic motivation. Intrinsically motivation games are games without any form of reward or punishment. We often regard these kinds of games as ‘just play’. Because most forms of play are intrinsic motivation: it is a voluntary action, there is no pressure and there is no rewards or punishment for participating or not. Some other good intrinsic motivators are exploration and curiosity. Examples of games that (mostly) rely on intrinsic motivation are games such as the Stanley parable, Flow, Minecraft and Flower. None of these games have scores and you can’t lose or win, there are no incentives. Games that rely on external motivation are games you play solely for the rewards. Gamification is a good example: it tries to make every day, boring tasks fun by rewarding the player. Duolingo uses gamification to make learning a new language more fun and gamey (though you might start learning a language because you’d like to learn the language, which is an intrinsic motivator). Most games, however, are a mix of extrinsic and intrinsic motivators. Some games might rely more on intrinsic motivators while others rely more on extrinsic motivators. You probably start playing a game out of curiosity, an intrinsic motivator. While failing a level or dying, for example, often is an extrinsic motivator. Especially if it makes you want to try again. Some ideas for your own games Extrinsic motivators aren’t bad and are naturally present in games. Think of any form of punishment such as failing a level, losing a life or losing a battle. But also reward such as a score or stars you get for finishing a level. Time is also often used in games as an external motivator, to pressure players. Think about solving a puzzle within a certain time. Another extrinsic motivator is competition, especially because it is rewarding for the player(s) who won. It can also motivate the others to try harder next time. And then there are extrinsic motivators that are less part of a game like daily rewards you get if you log in to the game every day or notifications to remind you that you haven’t played yet today. When designing more for intrinsic motivators keep this quote in mind: “The reward is the activity itself” (Ryan & Deci, 2002). People will play your game because they enjoy playing your game, it is that simple. Rely more on the natural curiosity people have. What if you design a match-3 game with power-ups. You can choose to create guided tutorials and explain to players how to create and use them. But what if you choose to leave those tutorials out and leave it up to the player to discover what is possible? Ask yourself if someone can play the game without understanding this mechanic or feature. In that case, maybe you should leave it to the player’s curiosity to discover the feature or mechanic. Of course, you might consider a tutorial if your game is not playable before the player understands the mechanic or feature. You can also try to make your game “easy to play, hard to master”. Mastery is one of those intrinsic motivators that will make people play a game or level over and over. You could even consider adding an extrinsic motivator in the form on competition to create some social pressure. I always find it important to ask questions during the design process. Some good questions to ask yourself if you are designing a mobile game where retention is important are: Why will player’s want to come back to my game? Are they given a reward for login every day? Could it be they only play because they get a reward that is useful in your game? Maybe they don’t play your game because they like it anymore, but because of the rewards. But maybe you design a game that requires players to think creatively or to find a solution to the puzzle outside the box. It might not be a good idea to include too many rewards or punishments, player since people who are offered a reward become distracted by it and their creativity suffers (Glucksberg, 1962). Try to stay away from time limits, they can make it harder for players to come up with a solution. Some good reads and references http://www.spring.org.uk/2009/10/how-rewards-can-backfire-and-reduce-motivation.php Schmitt, F. F & Lahroodi, R. (2008). The epistemic value of curiosity. Educational Theory, 58(2), 125-149. Berridge, K. & Kringelbach, M. (2008). Affective neuroscience of pleasure: Rewards in humans and animals. Psychopharmacology, 199(3), 457-480. Robinson, T.E. & Berridge, K. C. (2001). Incentive-sensitization and addiction. Addiction (England), 96(1), 103-114. Berridge, K. C. (2007). The debate over dopamine’s role in reward: The case for incentive salience. Psychopharmacology, 191(3), 391-431. Glucksberg, S. (1962). The Influence of Strength of Drive on Functional Fixedness and Perceptual Recognition. Journal of Experimental Psychology, 36-44 Ryan, R. M. & Deci, E. L. (2000). Intrinsic and Extrinsic Motivations: Classic definitions and new Directions. Contemporary Educational Psychology (25), 54-67 Note: This article was originally published on the author's blog, and is republished here with kind permission. Visit to read lots more of Sita's fantastic posts on psychology in games.