Game Difficulty Level
Moderator: Moderators
-
Celius
- Posts: 2159
- Joined: Sun Jun 05, 2005 2:04 pm
- Location: Minneapolis, Minnesota, United States
- Contact:
Game Difficulty Level
So I'm currently working on my platformer, and the engine seems to be coming along rather nicely. All the logic seems to be working, however, I'm starting to have to pay attention to the fact that the game needs to have a stable level of difficulty (it has to be fun). With my current physics, stuff is either way too easy, or impossible. So I'll have to do some tweaking to make sure that you can barely make that one jump if you're good, or that you can dodge that enemy if you're quick enough, etc.
But besides that, I am planning on allowing the player to select a difficulty level from the title screen. What I'm concerned about is what that difficulty level will effect. For now, I'm thinking of just having enemies do more damage, or the player looses health more quickly depending on the level of difficulty. I suppose I could make enemies move faster, but that might be too difficult and time consuming (CPU processing time, not my own free time where I can program). Do any of you have ideas/thoughts about this?
But besides that, I am planning on allowing the player to select a difficulty level from the title screen. What I'm concerned about is what that difficulty level will effect. For now, I'm thinking of just having enemies do more damage, or the player looses health more quickly depending on the level of difficulty. I suppose I could make enemies move faster, but that might be too difficult and time consuming (CPU processing time, not my own free time where I can program). Do any of you have ideas/thoughts about this?
-
Celius
- Posts: 2159
- Joined: Sun Jun 05, 2005 2:04 pm
- Location: Minneapolis, Minnesota, United States
- Contact:
That is a great idea. Surprisingly, I hadn't thought of that yet. I was mostly thinking it was just for satisfaction. But yeah, difficulty level will definitely affect the ending now that you mention it. It might also affect the entire story throughout the game. Maybe there'll be different levels or something like that.WJYkK wrote:Make up different endings based on the difficulty, e.g. the hard it goes the better the reward is.
However, what I'm wondering is what kinds of things will make the game more difficult. Like will enemies move faster, or will level design possibly change? Things like that. Any ideas would be nice. I am hoping for a simple (not necessarily lazy) and effective solution.
Take a page from Turtles in Time, Tetris Attack, and Super Puzzle Fighter II.
Play on very easy: "Conglaturation, a winner is you! Try again on easy." halfway through.
Play on easy: "Conglaturation, a winner is you! Try again on medium." just before the final boss.
Play on medium: "Conglaturation, a winner is you! Try again on hard." after the final boss.
Play on hard: An actual ending. But then hard would involve subtle changes to the levels (mute if at work) or the physics (expect anger) or perhaps just a huge speed boost and stealthier enemies.
Play on very easy: "Conglaturation, a winner is you! Try again on easy." halfway through.
Play on easy: "Conglaturation, a winner is you! Try again on medium." just before the final boss.
Play on medium: "Conglaturation, a winner is you! Try again on hard." after the final boss.
Play on hard: An actual ending. But then hard would involve subtle changes to the levels (mute if at work) or the physics (expect anger) or perhaps just a huge speed boost and stealthier enemies.
An underused difficulty feature is different AI for enemies on different difficulty levels.
For example, give enemies additional moves on higher difficulty levels.. or make their moves more sparatic and random so they're less predictable. Or maybe even make them "smarter" and have them respond to player movements differently.
Other staples of high difficulty levels:
- Enemies take more hits to kill
- More enemies (ie: hide some enemies in Easy)
- enemies hurt more
- dropped items (life refills, etc) occur less frequently
For example, give enemies additional moves on higher difficulty levels.. or make their moves more sparatic and random so they're less predictable. Or maybe even make them "smarter" and have them respond to player movements differently.
Other staples of high difficulty levels:
- Enemies take more hits to kill
- More enemies (ie: hide some enemies in Easy)
- enemies hurt more
- dropped items (life refills, etc) occur less frequently
-
Celius
- Posts: 2159
- Joined: Sun Jun 05, 2005 2:04 pm
- Location: Minneapolis, Minnesota, United States
- Contact:
These are all good ideas, thank you. I have to consider some of my current limits. I would have to modify the spawning engine to load "hidden" enemies. Currently, I have a system where there is a 512 pixel region (my game only scrolls horizontally, and 512 pixels would of course refer to two screens) that houses enemy activity, and that region includes what's on screen, and off screen 128 pixels on both sides. In that region, only 8 enemies can be active at the same time (enemies, not objects. A bullet could be considered an object, but that doesn't count as an enemy's AI is responsible for handling it's own projectile weapons). So in designing levels, I have to make sure in each 512 pixel wide region, no more than 8 enemies would be running around. This is mainly due to RAM limitations. And if I were to have "hidden" enemies, I would have to keep the number of unhidden enemies under 8, still. This may create a problem, if I have too few enemies on easy mode.
Also, with having different AI depending on the mode, I do have to keep space in mind. This is an NROM project, and I don't really have much space to work with. If I were thinking about saving time, I would want to have a look up table that's indexed with the current difficulty level, and each entry in the table points to AI code corresponding with the difficulty level like so:
Difficulty can equal 0, 1, or 2. 0 is easy, 1 is medium, 2 is hard.
Or something similar. Now if I were concerned with space, I would have one piece of AI code that branches depending on the current difficulty. This, however, could waste a lot of time. I suppose I shouldn't limit myself to only two options; there are alternatives, I'm sure. Sorry, I guess I'm just sort of thinking out loud about how to implement this...
In terms of damage, though, that would be a lot easier. I could just have a universal routine that takes the total amount of damage done to the player, and multiplies it by 1, 1.5, or 2 depending on the difficulty level (or some similar numbers). Then I could have a universal routine to reduce the amount of damage done to enemies depending on the current difficulty level. Speed might also be something more simple. I could multiply enemy speed like I would do the amount of damage done. But completely different decisions, more enemies, and level alterations would be more difficult.
For the record, different cutscenes and endings will be happening. Both, however, will not suck (hopefully) for easier levels of difficulty.
Also, with having different AI depending on the mode, I do have to keep space in mind. This is an NROM project, and I don't really have much space to work with. If I were thinking about saving time, I would want to have a look up table that's indexed with the current difficulty level, and each entry in the table points to AI code corresponding with the difficulty level like so:
Difficulty can equal 0, 1, or 2. 0 is easy, 1 is medium, 2 is hard.
Code: Select all
AICode:
.dw Enemy1AIEasy, Enemy1AIMedium, Enemy1AIHard
HandleAI:
lda Difficulty
asl a
tax
lda AICode,x
sta TempAddL
inx
lda AICode,x
sta TempAddH
jmp (TempAddL)
In terms of damage, though, that would be a lot easier. I could just have a universal routine that takes the total amount of damage done to the player, and multiplies it by 1, 1.5, or 2 depending on the difficulty level (or some similar numbers). Then I could have a universal routine to reduce the amount of damage done to enemies depending on the current difficulty level. Speed might also be something more simple. I could multiply enemy speed like I would do the amount of damage done. But completely different decisions, more enemies, and level alterations would be more difficult.
For the record, different cutscenes and endings will be happening. Both, however, will not suck (hopefully) for easier levels of difficulty.
Well, I'd say something : Personally, I hate difficulty select in games. I think it's a way from the programmer to hide the fact they weren't able to fix the difficulty right away and weren't able to make a proper learning curve.
A good game IMO should start easy and end hard, and you shouldn't have to select anything.
And be careful, because you're the one programming the game, you know everything how the enemies move and all, and it will likely be MUCH easier in your eyes than in any random gamer's eyes. It it looks impossible to you there is NO way anyone else will find it possible. If it looks very easy to you it might as well seems normal / cause some trouble on another gamer who don't know all patterns and all levels by heart.
When it comes to how make any enemy easier or harder to beat, changing the speed at which he acts is a good way to do so (the faster, the harder it's to avoid). Also the amount of hits it takes to die. Finally, make your enemies have some visual sign before they attack so that the player can (if he's fast enough) get out of the way of the attack.
A good game IMO should start easy and end hard, and you shouldn't have to select anything.
And be careful, because you're the one programming the game, you know everything how the enemies move and all, and it will likely be MUCH easier in your eyes than in any random gamer's eyes. It it looks impossible to you there is NO way anyone else will find it possible. If it looks very easy to you it might as well seems normal / cause some trouble on another gamer who don't know all patterns and all levels by heart.
When it comes to how make any enemy easier or harder to beat, changing the speed at which he acts is a good way to do so (the faster, the harder it's to avoid). Also the amount of hits it takes to die. Finally, make your enemies have some visual sign before they attack so that the player can (if he's fast enough) get out of the way of the attack.
Useless, lumbering half-wits don't scare us.
-
Celius
- Posts: 2159
- Joined: Sun Jun 05, 2005 2:04 pm
- Location: Minneapolis, Minnesota, United States
- Contact:
Actually, I'd have to disagree with that. I think if you can play through a game on different difficulty settings AND get different rewards for doing so, it gives the game replay value. With one difficulty, once the user beats the game they may feel they have no other reason to play it. Giving different difficulty options just expands the replay value.Bregalad wrote:Well, I'd say something : Personally, I hate difficulty select in games. I think it's a way from the programmer to hide the fact they weren't able to fix the difficulty right away and weren't able to make a proper learning curve.
I agree that a game should progress in difficulty from start to end. What I think a universal difficulty level would do is take the native difficulty of a stage/level and multiply it depending on the difficulty setting. Each level would maintain the same ratio of difficulty with one another, each level would just be universally made more difficult. So if stage one is half as difficult as the last stage, all "Hard" mode does is multiply the difficulty of each stage by 2, so both stage 1 and the last stage would be twice as hard. This way, the progress of difficulty would still be present.
This is very true. This is why you should have people test it for you. Though I do try and see things through the eyes of other people as much as I can when making a game/designing a program.Bregalad wrote: And be careful, because you're the one programming the game, you know everything how the enemies move and all, and it will likely be MUCH easier in your eyes than in any random gamer's eyes. It it looks impossible to you there is NO way anyone else will find it possible. If it looks very easy to you it might as well seems normal / cause some trouble on another gamer who don't know all patterns and all levels by heart.
Thank you for reminding me of that, actually. Many of the enemies in my game will probably be holding guns, and since their sprite is already holding a gun, I might have just had them stand still with no animation for shooting. I do have to remember limited CHR space, but I'm sure I'll find some way to indicate an enemy is about to attack.Bregalad wrote: When it comes to how make any enemy easier or harder to beat, changing the speed at which he acts is a good way to do so (the faster, the harder it's to avoid). Also the amount of hits it takes to die. Finally, make your enemies have some visual sign before they attack so that the player can (if he's fast enough) get out of the way of the attack.
I think I'll program everything where it assumes the default mode is "Easy". So no alteration to speed, damage taken, or damage dealt will happen on Easy mode. However, for Medium I believe I will decrease the amount of damage dealt by the player, and leave the amount of damage dealt to the player the same. But for Hard mode, damage to enemies will decrease AND damage to the player will increase. I think this works. And I will be thinking about some other things to apply in addition to this.
Don't forget about Adaptive Difficulty either, where a game automatically gets easier or harder depending on how well the player plays.
Some arcade games used to increase in difficulty, then decrease when you die. Kept you putting quarters in the machine.
Some arcade games used to increase in difficulty, then decrease when you die. Kept you putting quarters in the machine.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
-
Celius
- Posts: 2159
- Joined: Sun Jun 05, 2005 2:04 pm
- Location: Minneapolis, Minnesota, United States
- Contact:
I won't be giving in to the malicious money-making nature of arcade games and slot machines! Haha, no, you bring up a good point though. I suppose that could happen, if I just had 3 settings of difficulty, and it would automatically switch to any of them mid-game depending on the player's score or something like that. But I think I will stick with the 3 standard difficulty levels. It's food for thought, though.
I will caution you that if you take it too far, you risk turning your game into Battle Garegga, where you have to die on purpose just to get the difficulty level down so that you can progress.Celius wrote:if I just had 3 settings of difficulty, and it would automatically switch to any of them mid-game depending on the player's score or something like that.
-
Celius
- Posts: 2159
- Joined: Sun Jun 05, 2005 2:04 pm
- Location: Minneapolis, Minnesota, United States
- Contact:
I agree that I like when a game gradually increases it's difficulty. For my game, the last level on "Easy" would still be significantly harder than the first level. But the last level would be much harder on "Hard" than it would be on "Easy". I don't really know why you'd make a game the same level of difficulty the whole way through. I suppose it sounds ambiguous when I say "difficulty level" for this reason. On a scale from 1 to 10 of difficulty with 10 being the hardest, here's how each level would be rated on easy:tokumaru wrote:Bregalad has a good point. I never thought of it that way, but it's true. Most games I have liked don't have difficulty selection, they gradually increase it. Maybe that doesn't work for everyone, but it's definitely how I like it.
3, 4, 5, 5.5, 6, 6.5, 7
If there were 7 levels. Then on medium:
4, 5, 6, 6.5, 7, 7.5, 8
Then on hard:
5, 6, 7, 7.5, 8, 8.5, 9
So you it still gradually gets harder with each stage, it just starts out more or less difficult depending on the difficulty level. I think this system works the best. It just depends on what kind of player you are. If you're not an experienced side-scrolling shooter player (wow that sounds dumb), you can play the game on easy, and it will challenge you more and more as the game goes on. It just is more suitable for your level of experience. But if you're a hard-core player, you can play it on hard so you don't have to play a game that you think starts out as too easy. It's just a matter of preference, and it becomes more rewarding as each difficulty level increases, so it actually encourages you to become a better player. Personally, I see only benefits with this system. It still has the progression, and it starts off on normal difficulty, which is how it would be if there were no difficulty level selections. The two other modes, easy and hard, just expand to fit other player's needs. Because let's face it: some games are easy to some people, and hard to others. So I don't believe that one difficulty, even if it progresses with each stage, fits every player's needs.
Yeah, I don't think I'll be implementing this now that I think about it. I remember playing some game like the Arcade version of Caveman Ninja that was impossible if you did really good. Then I died about four hundred times and it was easier. Of course, I did this playing it on MAME so I didn't have to spend the moneytepples wrote:I will caution you that if you take it too far, you risk turning your game into Battle Garegga, where you have to die on purpose just to get the difficulty level down so that you can progress.