|  
         Adaptive 
          techniques in difficulty management: Do they hold 
          a prominent position in the future of computer gaming? 
        by 
          Robison Bryan of Inspired 
          Code.net   
           
           
        Part 
          1. 
        I will 
          share with you my thoughts on the subject and let you decide for yourself. 
          Implementing these concepts could afford your games an almost human 
          intelligence toward providing the best gaming experience for all concerned, 
          for as long as possible each time they play, and for as many replay 
          times as possible. While I will try to be general about these ideas, 
          I may use some language you consider to be a bit technical. I'll also 
          try to explain my terms in simple language, and you can also probably 
          get most 
          of it from context. So if one thing seems odd, keep going and it should 
          become clear. And one last note: I am not an expert. This is intended 
          to be a theoretical piece, and reducing such to actual practice by necessity 
          follows, rather than precedes such theoretical work. With that said, 
          here goes: 
        What is 
          your game's replay value? Does it give certain people an unfair advantage? 
          You can control the answers to both of these questions by using adaptive 
          techniques. The two basic questions are answered by two basic techniques 
          that use some of the same methods within them. This article will deal 
          with them in a purely theoretical sense, allowing you to utilize them 
          in any language, whether C++, VB or PEAL (Plain English Adventure Language). 
         Equalizer 
          An 
          equalizer is a method of anticipating and or detecting any unfair advantages 
          the player might have, and adjusting the difficulty accordingly. The 
          most basic equalizer is a "set and forget" system, which is 
          like saying you wind it up and let it run, instead of constantly taking 
          measurements and adjusting it. (Geeks like me would call this an open 
          loop system). The advantage of it is that although it compensates for 
          certain prevailing conditions it allows the player to progress and reap 
          the rewards of getting better without being penalized for ability. 
        AutoLevel 
          An 
          autolevel is a system that reacts to its own output. (Geeks like me 
          would call this a closed loop, or servo system). A perfect example of 
          this is the automatic recording level (compressor) that many older tape 
          recorders have. You can hear the results of this during commercials 
          on TV. It keeps adjusting the volume so that the output constantly stays 
          at the maximum allowable (yet annoying) sound pressure level. The use 
          of an autolevel in gaming can keep a player constantly challenged, but 
          can also give them the feeling that they'll do just as well if they 
          try hard or slack off. 
        The 
          Best of Both Worlds. 
          By combining these two general methods together, you can get results 
          that are much more fun than either method alone. This becomes possible 
          when you consider that difficulty in a game is not one dimensional. 
          You can have many kinds of settings in a game. Just as you can have 
          north or south, east or west and up or down, you can also have things 
          like hot or cold, wet or dry, fast or slow and so on. Each of these 
          dimensions of possibility is called a parameter. Your stereo has three 
          parameters called volume, treble and bass. In your game, you can set 
          up and use a great number of parameters to control difficulty. Certain 
          parameters can be treated with an equalizer 
          and other parameters can be treated with an autolevel. You can even 
          export the amount that your autolevel had to adjust things into another 
          parameter so as not to lose the significance of the parameter that you 
          squeezed with the autolevel. 
        Here's 
          an example of an autolevel that still manages to salvage something extra 
          out of the fact that the player is really good: 
        The earliest, 
          simple yet effective adaptive technique: increase the speed. Suppose 
          your game is a first person shooter. You can have the game adapt to 
          the player's ability by making the enemies keep getting faster and more 
          powerful. But the player might say what is the point in trying when 
          the game just compensates? The answer is in the fact that the more powerful 
          the enemy, the more points you get for shooting him down. That way no 
          matter how good or bad he is, the player stays on the edge of his seat 
          in order to just stay in the game. But his extra capability is rewarded 
          by the number of points he racks up against the enemy ships, and perhaps 
          by the ability to stay in the game for a longer total time each time 
          he plays.  
          This is the most simple method of adaptive difficulty control, and was 
          present in early 
          games like Asteroids. The enemy ships just kept getting faster, but 
          the best players were able to stay in the game long enough to rack up 
          the most points. Even this simple approach has lots of replay value, 
          because the player can stay in the game at first and eventually is so 
          challenged that he falls out of the game. Those are the advantages. 
          But the method also has some limitations. 
         Dead 
          heroes don't solve puzzles 
          Suppose you want to influence future text role play by the outcome of 
          a fast paced battle scene? Then it is not very convenient to guarantee 
          that your player will die in battle either sooner or later, depending 
          upon his ability. Tron would never get to hack the operating system 
          if he got killed on the game grid. In the movie he actually ran away 
          through a crack in the wall. But if your player's text adventure character 
          is someone else other than his battle character that might work out 
          anyway. An example of this would be if in the story the player were 
          controlling a fighter robot by remote control. Two more examples would 
          be Angels fighting demons overhead on behalf of the praying player, 
          or else a general dispatching troops who can win or lose the battle 
          by various quantities of casualties. The above technique is not the 
          only way that a game could adapt to the player's ability. This method 
          also adapts in only one way, that of speed. Thus the person with the 
          fastest reflexes will more often win. Also it gives an unfair advantage 
          to the player who can visually see the enemy. Furthermore, since the 
          player temporarily becomes someone else for the duration of the lethal 
          battle, you could not really call it a first person shooter in the truest 
          sense of the term. 
        Better 
          adaptive techniques needed 
          It can be seen from this that to successfully mix first person action 
          with an ongoing puzzle, text adventure and or mystery saga, what is 
          needed is more detail, more intelligent control over the difficulty 
          level, without sacrificing the rewards obtained by playing well. The 
          player must get a sense of reward that is proportional to his progress 
          in how well he plays. 
          I had at the beginning of this paper talked about two basic techniques, 
          the equalizer and the autolevel. The space invaders approach is almost 
          entirely an autolevel. The game reacts to how long the player stays 
          alive by compensating with faster enemies. Only the number of enemies 
          shot down preserves for the player the benefit of how well he plays. 
          The simplicity of this approach also can allow certain players to leverage 
          their own 
          advantages, fair or otherwise. 
        The 
          simple equalizer in action  
          An equalizer can be used to compensate for a certain specific known 
          advantage. For instance, what if you wanted to write a game that the 
          sighted and the visually impaired would find equally challenging. To 
          provide the stimulation of all senses available without 
          allowing the presence of certain senses to yield an unfair advantage 
          requires an intelligent method that does not give the visually impaired 
          player an easy way out or the baby treatment, either. The simplest way 
          to do that is to honestly evaluate what areas the sense of sight yields 
          an inappropriate advantage. In other words, which of the game's parameters 
          are influenced by the presence of that sense. Then to the appropriate 
          degree, adjust those parameters to compensate. The result is that if 
          the sighted player were to turn off the visual display and he would 
          rack up the same 
          number of points, or gain the same measure of success, whatever the 
          challenge is. This is a simple "set and forget" concept. The 
          steps are simple. 
        
          - Determine 
            whether the sense of sight is being used.
 
          -  Have 
            a preconceived notion about which game parameters are affected, and
 
            how much, by this sense. 
          - Adjust 
            the difficulty settings along those parameters in the opposite
 
            direction by that said amount, before any playing has even occurred. 
            Thus the outcome will be similar whether or not the sense is used. 
         
        But this 
          is not the only possible source of excessive advantage. 
         Compensating 
          for various kinds of individual strengths and weaknesses 
          As previously mentioned, a player might have lightning fast reaction 
          time. If the only way to influence certain adventure details is by means 
          of how well he does in battle, the more normally paced players may never 
          get to the place where their analytical skills would pay off for a more 
          consistent challenge all around. Likewise if the lightning fast player 
          is not a Sherlock Holmes by any stretch of the imagination he may never 
          get to the battlefield where he could show his stuff. Rather than insisting 
          that the player be good at everything in order to really enjoy any of 
          it, it would be helpful to allow the player to progress using what he 
          has more or less successfully, by the outcome of his labours in any 
          endeavour (whether on the battlefield or on the beat as a detective) 
          would yield quantifiable rewards that can be leveraged to his benefit 
          when he is challenged in his particular area of weakness. For those 
          players that are not very good at any of it yet, there can be different 
          general difficulty levels that can be selected from the menu, such as 
          bantam weight, lightweight and heavyweight. Any scores would be within 
          that particular difficulty group or weight class and would be understood 
          to apply to such. 
          But getting back to the adaptive aspect, within each difficulty class, 
          the different parameters of a person's ability should be compensated 
          so that he can stay in the game and get a sense of his own improvement 
          overall. 
        A new 
          fly in the ointment  
          Before proceeding to describe how to compensate for many parameters 
          at once, there is another aspect that should be considered, as it will 
          have to be dealt with at the same time. The new consideration is the 
          answer to the first question at the top of this paper. 
          What is your game's replay value? This is best answered by making the 
          very structure of the game different every time it is played. This can 
          be accomplished by allowing random numbers to dictate the generation 
          of maps, of locations, of tools, of monsters or any combination thereof, 
          as well as all of the properties of such items. I recognize that it 
          is a good thing also to save a game that is in progress and continue 
          playing it later, much 
          as one would put down a great novel and continue reading it later. I 
          will ignore the mechanics of doing so and consider such to be merely 
          a continuation of the same playing of the game. 
         Let 
          the numbers decide 
          In order to accomplish this versatility, as well as to adaptively control 
          difficulty, everything in the game must be controlled by variables. 
          Rather than having a monster always living at a certain precise location, 
          and behaving in exactly the same way each time you encounter him, it 
          would be better to assign details according to variables that are modified 
          by rules of logic that depend upon arbitrary numbers, and then seed 
          them with random values. If there is no way around certain preset values, 
          then have a table of all such possible preset values that you can assign, 
          like a spread sheet. Then have a variable index each dimension of the 
          array and the result that gets grabbed from the box at that address 
          will decide how to make the world you are setting up. In this way you 
          can create a number of monsters, enemies, towns and even situations 
          the player may 
          encounter. You can specify their personalities and write in plenty of 
          detail about them as text. Thus the descriptions can be quite vivid, 
          complete with behavioural tendencies and detailed kinds of capabilities 
          to match, while at the same time never being expected by the player. 
          The unpredictability can also be enhanced by mixing and matching whenever 
          possible, assigning certain attributes randomly from each list, complete 
          with detailed descriptions of just that attribute. A different random 
          number would select a different detail from each list. 
        An example 
          of replay variety that points to difficulty management  
          For example, your monster might be randomly issued a weapon from a list 
          of twenty possible weapons. There is detailed description of what the 
          weapon looks like, what the damage it does looks like, and there could 
          even be wave files associated with the firing of it. Furthermore, the 
          weapon could have rules associated with what it can and cannot harm, 
          as well as what kinds of defence are effective against it. Additionally, 
          any time numbers are used in the weapon's details there is an opportunity 
          to modify them by random and or adaptive means. The random means can 
          help to make each monster truly 
          unique. The adaptive means brings us full circle back to the topic at 
          hand. Every number involved in the details of a monster can have an 
          effect upon how difficult he is for the player to deal with. For every 
          monster, each of those numbers can have an allowable range, which is 
          how far the number can be stretched in either direction. This allows 
          the monster to retain his personality. It is also possible to specify 
          that for a given monster if one of his numbers gets stretched in one 
          direction, a different one of his numbers will be stretched in the same 
          or opposite direction, whatever will allow him to be modified in difficulty 
          while maintaining his unique personality. 
        Parameters 
          of Monster Challenge 
          After 
          a number of potential monsters have been created, they can be classified 
          according to type and difficulty, by prediction and or testing. Their 
          unique qualities will present varying challenges to various players. 
          Player 1 may have more trouble with Monster A rather than Monster B. 
          Player 2 may have the exact opposite experience. 
          He may find that Monster B is more difficult than Monster A. All things 
          being equal, why did one player have more trouble with one Monster while 
          the other player had more trouble with the other monster. Each player 
          thinks that his favourite monster is simply tougher. What accounts for 
          this difference? The difference is that the monsters are not the only 
          ones that have different parameters and aspects. The players are also 
          unique monsters in their own rights! Each player is stronger according 
          to certain parameters and weaker according to other parameters. It is 
          as if the aspects of each human player were also randomly selected from 
          a table, complete with detailed descriptions and number ranges. This 
          may be LOL hilarious but it is also true. Each person is not only uniquely 
          responsive to various monsters, but also to various other kinds of challenges 
          or partial aspects of challenges. 
        Having 
          carefully set the stage in Part 1, I will share in Part 2 my own 
          proposed integrated approach to accomplishing near infinite replay value 
          and 
          adaptive difficulty management within a multi-mode game. 
        This 
          article was written by Robison Bryan of Inspired 
          Code.net and is reprinted from Audyssey Magazine with permission 
          by the author. Robison Bryan is currently developing the Audio 
          Adventure Engine.  
         
        (C) 
          Robison Bryan 2003 
       |