![]() |
![]() |
![]() |
![]() |
![]() |
|
Core Dump - Work In Progress
Episode 65May 6, 1998 : Implementation of difficulty levelsAnd nice pictures, too! Let's assume for the moment that there is only one type of enemy in the game, let's call it X. It can exist in any zone we want. Now, we want the game to become harder when we play it. Counting the amount of items and the time, or something like that, we can compute a percentage P of how far we've played into the game. Thus, a player starts with P=0%, and will see the enddemo when P=100%. Enemy X is everywhere on all the maps. But now comes the clever part. When P=0%, only one out of four enemies appears when you play, and when P=100%, they all appear. This is also used for the firing speeds. When P=0%, enemy X will fire every 4 seconds, and when P=100%, enemy X fires every 0.5 seconds. All values in between are computed automatically. The same can be used for jump height, chase speed, etc. etc. It is somewhat more difficult when many types of enemy are created, but the principle is the same: according to P, the attributes of the enemies are computed, so that they are easy to defeat when P=0%, and very hard to defeat when P=100%. Difficulty settings Let's say we compute the progression factor (which was called P in the previous section) into another variable G (Game progression). This runs from 0% to 100%. Every enemy determines its own difficulty from D (game Difficulty). D is defined as follows:
I even use a statistical method to determine the speeds and such, to scatter the values somewhat. Factors D and G are only adjusted when the player enters a door, because it would be too time-consuming to compute them every time the player picks up an item or bonus. This method only works when the progression factor G can be computed in a sensible way. So I had to develop a way to relate G to all that stuff with plot lines and such.... pfff! But it turned out quite okay, and it works like a charm in practice. Progress through the game, and it becomes gradually harder!
|
![]() |
![]() |
![]() |
![]() |
![]() |