• Advertisement
Sign in to follow this  

Balancing in a procedural RPG

This topic is 2632 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Consider a rpg in which creatures are procedurally generated. Sure, there are pre-designed skills and traits, but you can't really predict how powerful this creature will be compared to the player (who could utitlize different skill trees etc.). The only thing you could do is to tell if the creature is good or bad in some special domain, but this is not really meaningful.

Lets assume that the best thing you could identify about a creature is that it is most probably too powerful(level 1 vs dragon => bad).

So, with this background, what would be a good approach to handle balancing in such a game ?

A. You don't need any balancing !
When you don't apply any balancing the player will have to find out how dangerous a creature is by himself. The problem with this approach is, that the reward for fighting a creature (i.e. quest/access to treasure) is not in relation to the difficulty of fighting the creature. A solution would be to track the "stress level" of reaching a certain goal and to adjust the reward.

B. The cheating creatures.
This is one way of adaptive gameplay. The creature will keep track of how powerful it is compared to the player. If it is too weak it will use more powerful abilities (healing, range attacks, magic), whereas if it is too powerful it will avoid powerful special abilities. This is some kind of cheating and could make the difficulty too smooth.

C. Adjust the frequency of encounters.
This is an other way of adaptive gameplay. Instead of adjusting the abilities of a creature, the game will adjust the frequency of encounters. More powerful creatures will spawn or regenerate less often, weak creatures will start respawning more often and in greater numbers.

Any comments ?

Share this post


Link to post
Share on other sites
Advertisement
I think here, a level system doesn't work for the player.

If you're going to have random encounters, the player should have the ability to deal with all of them to some degree.

A form change system, like FF13 would be good, allowing the player to be all 'classes' or have certain resistances/offensive attacks when they change.

This way when you run into an encounter things wouldn't be completely hopeless no matter what, just the player would need to learn the ins and outs of each monster species and area progressively.

Combat would be a lot more strategic and it would fit in with the random nature of encounter generation.

That's just my take on it though, I'm also a fan of random systems that allow you to encounter high level creatures at low levels.
But that kind of hardcore generation is also subject to the opposite effect, where the game becomes a complete cakewalk for some and a punishing exercise in patience for others.

Share this post


Link to post
Share on other sites
Some quick thoughts:

- Creatures could be placed by zones such that the zones have progressively tougher creatures as you travel away from the player's starting position. Or if you want zones more randomly placed, perhaps give some indication of a zone change by a change in terrain type. Then the player should at least be expecting different types of creatures coming up.

- Player that encounters bodies of adventurers that have stuff comperable to his own. Or perhaps bodies of creatures that he's already encountered and knows the toughness of. Or maybe there's something to be learned by examining the body of a creature that hasn't been encountered yet.

- Give the player a chance to observe the creature's behavior.

- Information from NPCs.

- Maybe some kind of message based on PC intuition ("I may be just starting out but it's just a small dragon, I can take 'em.")

Share this post


Link to post
Share on other sites
Balancing will be important for any approach that you take, as the extra randomness factor of procedural creatures has the potential to be extremely unbalanced no matter what you do.

I would take a couple of different tacks at once:

-You'll still have types of creatures, and it might be worth having bounds for different species of monster. Sure, a particular bear's strength may not be readily apparent, but a bear should never be more powerful than, say, a dragon. So while one bear may be more of a challenge than another, just seeing what the creature is should give the player some idea of whether or not it is going to be impossibly challenging.

-For specific quests and dungeons, you may want to use a restricted set of creatures. That way you can balance the reward for completion with the general level of challenge, even if you still procedurally generate creatures in that creature set.

-Consider the implications creatures of a given strength would have on the game world. If a player can encounter a roving apocalypse dragon 20 minutes out of town, it would seem odd for that town to still exist.

-Give some way for a player to estimate a creature's strength. Some adjustment to the monster's graphic (size, color, etc.) might suggest a more dangerous creature than another. Or perhaps a spell or ability that would give some pertinent information, although exactly what information this is would depend on how random you want the encounters to feel.

-Making running away from battles easier, so that an overmatched player won't automatically die because he or she was unlucky with the random encounter.

-Make saving easy to do frequently, at least outside of dungeons where the encounters have the greatest potential for randomness.

Share this post


Link to post
Share on other sites
I suppose an important question is, what sort of experience do you want the player to have? (I mean, what sort of game play do they go through not what experience points get collected). Figure out what game play you want and make the numbers fit that instead of making the gameplay fit the numbers that you think you want.

Share this post


Link to post
Share on other sites
Quote:

- Creatures could be placed by zones such that the zones have progressively tougher creatures as you travel away from the player's starting position. Or if you want zones more randomly placed, perhaps give some indication of a zone change by a change in terrain type. Then the player should at least be expecting different types of creatures coming up.

- Give the player a chance to observe the creature's behavior.

These are good starting points.

Quote:

- Player that encounters bodies of adventurers that have stuff comperable to his own. Or perhaps bodies of creatures that he's already encountered and knows the toughness of. Or maybe there's something to be learned by examining the body of a creature that hasn't been encountered yet.

- Information from NPCs.

- Maybe some kind of message based on PC intuition ("I may be just starting out but it's just a small dragon, I can take 'em.")

This will not work. The game don't know how powerful a creature will be. Most games "design" creature and try to balance them by testing etc. In a game where creatures are generated on the fly, you don't really know how powerful it will be (think of a spore like RPG).
Sure there will be certain parameters to tweak the difficulty, but eventually you will not be sure if this little,weak critter over there has some potential and deadly skill cocktail.

Quote:

Balancing will be important for any approach that you take, as the extra randomness factor of procedural creatures has the potential to be extremely unbalanced no matter what you do.

I would like to try some experiemental gameplay. The question is not how to fix the balancing in a game, but to how to handle balacing when using procedural generated creatures.

Quote:

-You'll still have types of creatures, and it might be worth having bounds for different species of monster. Sure, a particular bear's strength may not be readily apparent, but a bear should never be more powerful than, say, a dragon. So while one bear may be more of a challenge than another, just seeing what the creature is should give the player some idea of whether or not it is going to be impossibly challenging.

-For specific quests and dungeons, you may want to use a restricted set of creatures. That way you can balance the reward for completion with the general level of challenge, even if you still procedurally generate creatures in that creature set.

Some kind of classification and avaiable traits and skills for each creature type would help.

Quote:

-Give some way for a player to estimate a creature's strength. Some adjustment to the monster's graphic (size, color, etc.) might suggest a more dangerous creature than another. Or perhaps a spell or ability that would give some pertinent information, although exactly what information this is would depend on how random you want the encounters to feel.

Yes, I already thought about mapping some creature features to visual attributes. I.e. a fire spider will get a red glowing skin, health can be mapped to skinny/"fat" , strength to size etc. .

Quote:

-Making running away from battles easier, so that an overmatched player won't automatically die because he or she was unlucky with the random encounter.

One-hit and omg-what-happens creatures are a no go. Every character will receive skills to escape from a battle.

Quote:

-Make saving easy to do frequently, at least outside of dungeons where the encounters have the greatest potential for randomness.

Save/loading will not be supported. You will respawn (MMORPG like).

Quote:

I suppose an important question is, what sort of experience do you want the player to have?

The game is dungeon based. Every dungeon should introduce a new kind of challange. When you encounter a spider which looks different than the one you already know, you should first try to approach carefully and observe it. You need to
adjust your skills (think of guild wars "skill builds") and strategies. Maybe there're creatures you can't really beat and should be avoided, in this case you should use other ways to reach your goal.

Share this post


Link to post
Share on other sites
It will depend on the procedure that you are using to generate the content.

If the procedure is a static one (that is it is it doesn't change while the game is played), then you will have to predefine monster difficulties and have the algorithm base the locations of the monsters off of that.

However, if the procedure is a dynamic one (that it it changes as the game is played), then you can use statistics from the game world to reposition the monsters relative to player skill.

However, with either way you can use a kind of "simulation" to define monster locations. you can do this by having monsters fight over territory.

If you have territory near settlements as poor monster territory (mabe the monster wants to avoid being near potential threats), then when each monster type fights, the loser is moved closer to human settlements.

Ok, imagine the world as a grid of territories. Each grid cell has a rating of value to the monsters. This won't necesarily effect the power of a monster, it is just a measure of desireability for the monster territory.

The grid cells are supposed to be a semi-abstract representation of where monster are located and you would expect some overlap in monster instances and even some monsters to be in locations no where near their grid cell. It is more a representation of the concentration of the monster type in question.

Each cycle of the world (if this is a static one, this can be done before the game starts, of if it is a dynaimc system, then this can be done at regular intervals or be triggered by certain events) neibouring monsteres (that is ones with adjacent grid cells) can enter into fights, with the attacker being the one trying to move from a less desierable grid cell into the more desierable grid cell.

The winner takes (or retains) control over the more valueable grid cell, and the looser is forced into the lower value grid cell.

With a static system, you would randomly place monsters and then run through several cycles to cause the monsters to move around. With a dynamic system you can get really interesting influences as player actions could trigger an attempted move by a monster, and also could cause an effective weakening of a monster (which might make a new monster be able to move into a cell it might not have previously been able to conquer).

Also, with a dynamic system, the actions of the monsters could be represented in game. When the monsters are in conflict, you could have various members of the monsters actually walk around and fight each other, and/or, when one monster group defeats another, you could have them actually move from one location to another.

If you want to get even more complex (mainly just ot show how far you could take the simulation aspect), you could have alliances between monsters of similar types (so two goblin groups might ally to take over better locations for each other and they add their power to the other). Also, different monsters could have different ways of valueing territories so that some monsters will find certain grid cells more desierable than others (and if two groups value each other's teritory as being better than their current one, they can swap without conflict).

Share this post


Link to post
Share on other sites
Quote:
Original post by Ashaman73
Quote:

- Player that encounters bodies of adventurers that have stuff comperable to his own. Or perhaps bodies of creatures that he's already encountered and knows the toughness of. Or maybe there's something to be learned by examining the body of a creature that hasn't been encountered yet.

- Information from NPCs.

This will not work. The game don't know how powerful a creature will be. Most games "design" creature and try to balance them by testing etc. In a game where creatures are generated on the fly, you don't really know how powerful it will be (think of a spore like RPG).
Sure there will be certain parameters to tweak the difficulty, but eventually you will not be sure if this little,weak critter over there has some potential and deadly skill cocktail.


Then find out. During world generation, simulate a few battles with the creature against opponents of known stregth, abilities, and resources. It doesn't have to account for strategies that a player might come up with, it just has to give you some sort of benchmark to work out approximate dangerousness. If it's wrong say 5 or 10% of the time (or whatever), so much the better for throwing something unexpected at the player. Also maybe those simulated battles can be worked in as game content somehow.

Edit:
(Just noticed Edtharan suggested to go the simulation route first).

Share this post


Link to post
Share on other sites
When designing your procedural generation system, include a 'points' system for creature powers.

Kind of like Challenge Ratings used in some Pen and Paper games, you base the power of an encounter on a rough rating of all included opponents, and this gives you a general idea of how powerful something is.

Generate them with predefined 'powers': Each HP 'power' could be 1 point, each strength 'power' could be 2 points, ability to breath fire could be 10 points, etc.

You add up all the creature's points, and establish a rough idea of where they are in a power scale.

Share this post


Link to post
Share on other sites
Quote:
Original post by Ashaman73
Consider a rpg in which creatures are procedurally generated. Sure, there are pre-designed skills and traits, but you can't really predict how powerful this creature will be compared to the player (who could utitlize different skill trees etc.).

Of course you can. You have all the player's data, you have all the creature's data, and you know exactly how your combat system works because you wrote it.

If you can't predict an encounter's resolution with a very significant degree of accuracy from this information, then you don't yet understand your game mechanics well enough.

Others have suggested using simulation to determine the relative strengths, which is reasonable enough, but really I think you should strive to better understand the balance of your game.

For example, you mention a player "could utilize different skill trees". You should know which skills are relevant to combat, and should know exactly how relevant they are - for example, how they modify your damage-per-second or that of the opponent. With the relevant DPS scores you can predict the outcome.

But... assuming you don't want to do this, I'd just say the best approach is to ensure that a player can escape a dangerous situation. I think players are happy to hit encounters that they can't win, as long as they can run away, train up, and go back later to finish the job.

Share this post


Link to post
Share on other sites
Id just like to add a side note that if you allow the player to run away from hard battles with the expectation that they will need to do this, then any experience system you use should be based on progress during the fight, not the actual killing blow. Players aren't going to like using up resources to recover from a bad fight when they didn't even "progress" their character any.

Share this post


Link to post
Share on other sites
Quote:
Original post by JasRonq
Id just like to add a side note that if you allow the player to run away from hard battles with the expectation that they will need to do this, then any experience system you use should be based on progress during the fight, not the actual killing blow. Players aren't going to like using up resources to recover from a bad fight when they didn't even "progress" their character any.


True, basing experience on 'combat encounters' would be a better option. The goal should be to defeat the encounter, not necessarily killing everyone.

Have the option of the system generating encounters where the main goal can be getting an item out of a vault in a building. If you get the contents of the vault out of the building and get away safely, then your character has completed the 'encounter', and therefore has earned all the experience generated by the encounter. Killing each and every guard might get you a little more, but the important thing was defeating the security of the encounter, not the guards themselves. Treat traps and hazards the same as an enemy unit when deciding how valuable the loot and experience is.

Some encounters can have a 'main goal', get the loot/kill the 'boss', and then a secondary goal, get away with your skin intact. This way you can almost always accomplish the secondary goal by running away like a little girl at the first contact, and getting a little boost from it to help advance your character so you can come back later and complete the main quest.

Share this post


Link to post
Share on other sites
The Pen and Paper D&D 4th edition has formalised a system for non combat encounters called "Skill Challenges".

As I run many of these games, I have used skill challenges combined with combat challenges to create a method that allows players to overcome encounters by using skill challenges. I work it so that the XP of the skill challenges matches that of the combat challenge.

One of the tricks I use to make it interesting is that not all of these are a straight choice between a combat or skill chanllenge. What I do is have the skill challenges reduce (or even sometimes increase) the number of monsters that are fought in the combat challenge. This way a party that is more geared to skills than combat can influence the battle that they end up facing.

In a procedual generation system for a game, you can use components, like a lego set, to build your encounters. Some of these components will be combat, and some will be skill challenges. You can then have multiple paths through the encounter depending on whether the player choose to do something, failing a part of it (failing a combat could be running away - not just getting killed) or even just random selection. It means that each time the player has a significant role to play in the encounter and that the encounter is more repeatable.

An example would be
1) Goblin Guard
If the players can speak goblin, then go to 2, else go to 3

2) Skill challenge: Negotiaton
IF the players succeed at a skill challenge of convincing the goblins that they are friendly, go to 4, else go to 3, or if the players leave go to 6

3) Combat
The Goblins attack. If the players win, go to 4 else go to 5

4) The goblin guard is killed or lets the players through
Go to next encounter (Maximum XP)

5) Retreat 1
The player's are forced to retreat and the goblins are much harder to convince that the player are friendly in part 2. Start at step 1 next time the players encounter the goblins (Moderate XP)

6) Retreat 2
The players willingly retreat without violence. Start at step 1 next time the players encounter the goblins (Minimum XP)

Share this post


Link to post
Share on other sites
@Edtharan
Your dynamic simulation approach sounds quite interesting, but it focused more on creature distribution and creature vs creature combat. I'm looking for a more player vs creature centric approach.

@kseh
Quote:

Then find out. During world generation, simulate a few battles with the creature against opponents of known stregth, abilities, and resources. It doesn't have to account for strategies that a player might come up with, it just has to give you some sort of benchmark to work out approximate dangerousness. If it's wrong say 5 or 10% of the time (or whatever), so much the better for throwing something unexpected at the player. Also maybe those simulated battles can be worked in as game content somehow.

Hmm... this one is really an interesting approach. I could define some "common" player skill builds and the combat simulation would rate the creature vs. skill build. I could even restrict the selection of skill builds on known parameters (class,race,level). I really like this idea.

@Talroth
I've already implemented such a system. The player and creature are able to "buy" passive/active spells. It is similar to a level sytem. When balancing the skills (which could be difficult), you could atleast have a rough estimation of a creature power. Still some skill cocktail could be quite difficult to overcome.

@Kylotan
Quote:


Of course you can. You have all the player's data, you have all the creature's data, and you know exactly how your combat system works because you wrote it.

If you can't predict an encounter's resolution with a very significant degree of accuracy from this information, then you don't yet understand your game mechanics well enough.


I dont really agree with your thesis. The prediction of the outcome of a battle with very significant degree of accurracy might hold true if you regard a simple combat situation (melee and dps only), but once you introduce a range of special abilities/spells , you can't really predict it, can you ?
Think about a simple healing spell, there're encounters which changes from really easy to pure nightmare if the creature is able to heal itself or allies. What about drain, damage reflections, evasion, armor, shield,buffs,dots,aoe effects which can be used in an unpredictable order. Most designed games got huge problem with balancing this kind of special abilities.
I don't target a high accuracy of prediction, on the other hand I don't believe that there's a deterministic approach to solve even this goal.
Thought, the conclusion could be to simplify my skill/combat system.

Quote:

But... assuming you don't want to do this, I'd just say the best approach is to ensure that a player can escape a dangerous situation. I think players are happy to hit encounters that they can't win, as long as they can run away, train up, and go back later to finish the job.


I'm not convinced that your sugguestion works, the escape approach fits better in my time budget :-)

@Edtharan
Quote:

What I do is have the skill challenges reduce (or even sometimes increase) the number of monsters that are fought in the combat challenge. This way a party that is more geared to skills than combat can influence the battle that they end up facing.


I already thought about an similar approach. When you could ensure that a creature is not a one-hit killer and somewhat weaker than the player, then you could adjust the difficulty by the number of monsters. The AI director of L4D is a nice example of how to adjust difficulty and stress by timing attacks. A single not special zombie is a simple target, but 30 zombies running at you with one special infected in the mix is quite a challange.

Share this post


Link to post
Share on other sites
Quote:
Original post by Ashaman73
@Edtharan
Your dynamic simulation approach sounds quite interesting, but it focused more on creature distribution and creature vs creature combat. I'm looking for a more player vs creature centric approach.

Yes, the idea is to allow creatures to develop an order that reflects their power levels. More powerful monsters will move towards the areas you have designated as desierable. If you designate areas near where low level players are as less desierable and locations where high level players are going to be as more desierable, then monsters will gravitate to these areas and players will experience this distribution.

However, it also allows monsters to be seeded randomly and then they will self organis into the desired arrangement.

The idea is to create a world that is in some way more believable because there is an apperance of monster ecology occuring. As humans are really good at pattern recognition, then players will quickly notice the patter the monster arrange themselves into and utilise this as they explor. Often in a pre-set system, the placemnt of monster is asthetic rather than functional. As asthetic patterns are much harder to determine than functional ones, players will have more difficulty in identifying these patterns.

If, however, a placemtn system that is more reliant on randomness is used, then this system will lack any strong patterns and players will probably not notice any and the world will feel arbitary, and this will degrade the sense of believability of the game world.

Share this post


Link to post
Share on other sites
Quote:
Original post by Edtharan
Quote:
Original post by Ashaman73
@Edtharan
Your dynamic simulation approach sounds quite interesting, but it focused more on creature distribution and creature vs creature combat. I'm looking for a more player vs creature centric approach.

Yes, the idea is to allow creatures to develop an order that reflects their power levels. More powerful monsters will move towards the areas you have designated as desierable. If you designate areas near where low level players are as less desierable and locations where high level players are going to be as more desierable, then monsters will gravitate to these areas and players will experience this distribution.

However, it also allows monsters to be seeded randomly and then they will self organis into the desired arrangement.

The idea is to create a world that is in some way more believable because there is an apperance of monster ecology occuring. As humans are really good at pattern recognition, then players will quickly notice the patter the monster arrange themselves into and utilise this as they explor. Often in a pre-set system, the placemnt of monster is asthetic rather than functional. As asthetic patterns are much harder to determine than functional ones, players will have more difficulty in identifying these patterns.

If, however, a placemtn system that is more reliant on randomness is used, then this system will lack any strong patterns and players will probably not notice any and the world will feel arbitary, and this will degrade the sense of believability of the game world.

It is not really what I were looking for, but it is just too interesting to be ignored :-)
I already have a dungeon (=my world) generator which populates my dungoen with mobs/decoration etc. I could generate a history over X time steps. At each time step each population can move, battle others, expand, die, search for certain goals or be attracted by certian loctaions. I think that this will lead to a more believable dungeon setup, the player will find remains from battles, ruins of previous population etc. (I think that dwarf fortress works in a similar way).


Share this post


Link to post
Share on other sites
Quote:
Original post by Ashaman73
@Kylotan
Quote:


Of course you can. You have all the player's data, you have all the creature's data, and you know exactly how your combat system works because you wrote it.

If you can't predict an encounter's resolution with a very significant degree of accuracy from this information, then you don't yet understand your game mechanics well enough.


I dont really agree with your thesis. The prediction of the outcome of a battle with very significant degree of accurracy might hold true if you regard a simple combat situation (melee and dps only), but once you introduce a range of special abilities/spells , you can't really predict it, can you ?
Think about a simple healing spell, there're encounters which changes from really easy to pure nightmare if the creature is able to heal itself or allies. What about drain, damage reflections, evasion, armor, shield,buffs,dots,aoe effects which can be used in an unpredictable order.

But you know what all of these do, and you know when they can be used. It might be tricky to consider all the permutations, but it's not impossible. People write chess programs that can beat almost any human, when there are something like 20 possible moves at each step. In most RPGs there aren't as many as 20 choices you can make, and some of them can be ignored anyway. (eg. If you have 2 similar spells but 1 is weaker than the other, you don't need to consider that one.)

Even if you feel your system is too complex to completely predict, you should still be able to make a good enough estimate to pitch the encounter at roughly the right level.

Share this post


Link to post
Share on other sites
Well, I'd probably need a procedurally generate-able script engine. I don't think I could make an AI to code up believable scripts on its own, so I'd probably have a library of individualized "traits". These would be scripts that do things like have the entity walk to a destination, have the entity attack the player, have the entity feed any nearby dogs, etc... Then the engine could patch together a group of traits to create randomized entities. I'd also need to include stats and an inventory for entities where such things were relevant (guys you could fight, pretty much). From there, (assuming a map the player can explore), I'd need to define what difficulty of enemies would reside at which locations. For this I'd probably use some perlin noise. Then, I'd plot a set-length course that ran from the easy areas to the hard areas progressively, such that the plot of the game could be run through a randomized map at the same pace each time.

From there, I'd randomize the script that acts as a manager to the scripts that act as the cities on the map, which in turn act as managers to the districts and then inhabitant scripts. This overarching manager script would essentially act as a God to the player, and a different one each time. Sometimes it would directly intervene (if the randomized script was an extremely evil one, for example, and the player was being extremely good, the God script might have certain cities treat the player suspiciously, searching his inventory on entry and locking him out at night).

From there I would insert a random number of specialized scripts into the game. These would still be randomized scripts, but they would get processing time outside of the time when they are immediately relevant to the player. This would allow them to act as more prominent NPCs or Boss-Enemies within the game world.

But right now, I need to get some sleep.

Share this post


Link to post
Share on other sites
Re: Ashaman73

Is your game single-player?
Is the world persistent?

Since you mentioned that your map is a dungeon,
can a player walk pass a creature that they can't defeat?

Share this post


Link to post
Share on other sites
Quote:
Original post by Wai
Is your game single-player?

Single-player.

Quote:
Original post by Wai
Is the world persistent?

Standard load/save persistency.

Quote:
Original post by Wai
Since you mentioned that your map is a dungeon,
can a player walk pass a creature that they can't defeat?

Yes, most likely if not blocked by other creatures. (But it is somewhat more complicated. You build your own dungeon with your own creatures which can help you to some degree. On the other hand a powerful hostile monster can rip through your dungeon and minions delivering a fatal strike to your dungeon economy).

I don't know, maybe a game does not need to be balanced on per creature encounter ? (somewhat refering to the topic Why must games be fair?)

My current assumption is,that you can't really predict the power of a creature, you can only tell if it is much stronger or much weaker than the player. With this assumption my current approach is to try to make each creature atleast weaker than the player and try to controll the challenge dynamically by adjusting the number of creatures a player will encounter (=> similar to the AI director of L4D). Each spawn point (=nest) of a creature can produce unlimited number of creatures, whereas each nest can produce three different classes of a single creature type (grunt<veteran<elite). I track the 'stresslevel' (=>L4D) of the player to adjust the number and class of a spawn. You see, the game is not really about scripted events, the encounters are more or less procedurally generated (=>diablo I).

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement