MultiAgentLearning / playground

PlayGround: AI Research into Multi-Agent Learning.
https://www.pommerman.com
Apache License 2.0
768 stars 216 forks source link

Bombs graphically show bomb blast strength and bomb life #116

Closed alekseynp closed 6 years ago

alekseynp commented 6 years ago

This is important information that the agents know that is not shown graphically. For a human user to be able to play the game like an agent, it would be worthwhile displaying it. For a human user studying game play, it would be worthwhile displaying it. A human user with partial board observation will not be able to deduce these properties from having observed collected power-ups.

cinjon commented 6 years ago

Agree 100%, we just haven't had the time to tackle this and it hasn't been a priority from the community (until now?). We had briefly discussed implementing this in a few different way:

  1. Numbers on the bomb icon. One for life and one for strength.
  2. Color-coded icons when it's near death (e.g. switch to red when it's within 3 of exploding). This wouldn't cover blast strength though.
  3. Coupling 2) with an outline of the tiles that would be affected by an explosion.

The easiest is 1). Do you want to take a stab at that through amending graphics.py?

weseldridge commented 6 years ago

I can also help you with that and/or answer any questions you have. I can also work on a couple of assets to help.

alekseynp commented 6 years ago

I started with a number for bomb life on top of the bomb icons. I wanted to stop where I am to be sure that you are satisfied with the approach. I am assuming that aesthetics will be handled by someone else. The relevant branch is here

screenshot from 2018-07-23 22-36-33

cinjon commented 6 years ago

This could be an approach. You're certainly right about the aesthetics not being satisfactory ;).

How small can you make it so that it's still ok for humans? What about moving to the corner or changing the alpha?

weseldridge commented 6 years ago

I thought we had an issue for game visual enhancements...

It will be hard to show both of these visually in a meaningful way. I see two ways we can display this information. One is through a number on the bomb. The other is with something like a "health bar" at the bottom of the tile. The first can be used to display the strength of the bomb and the second to display the time remaining until the bomb blows.

I believe in the real Bomberman you do not get a proper countdown until the bomb blows up. If I remember correctly you get a couple different type of wicks that give you an approximation of time reaming.

alekseynp commented 6 years ago

I've updated my branch with some minor aesthetic improvements and the addition of a label for bomb strength. I've certainly met my goal of making the information visible to the player. If the goal is to make a pretty game or a game that is true to Bommerman that my conflict. Personally I don't recommend having those goals. If they are a must, perhaps there needs to be a switch on pom_battle for ugly mode?

screenshot from 2018-07-24 22-44-19

My branch is here

weseldridge commented 6 years ago

OK. Here are a couple of ideas to display info about a bomb.

The color of the timer tells you how strong the bomb is. Then with each step one of the timer blocks disappear.

bombwithtimer1 bombwithtimer2 bombwithtimer3

weseldridge commented 6 years ago

Here is what it would look like during game play.

screen shot 2018-07-25 at 9 20 49 am screen shot 2018-07-25 at 9 23 25 am
suphoff commented 6 years ago

Long initial detonation cord that gets shorter each step?

( Sorry for the bikeshedding - but sometimes it is hard to resist :-) )

cinjon commented 6 years ago

I like this. Any objections to moving forward?

weseldridge commented 6 years ago

I have none. @alekseynp is there anything I can do or provide to help with this? Do you have any questions or concerns?

alekseynp commented 6 years ago

I'll say this. @weseldridge , I think you've proposed a very reasonable compromise between the goals of aesthetics and communication. If I had a full set of assets I would create a pull request that implements them. A bomb has 10 blocks at the bottom of its tile that disappear as its life diminishes. A bomb with default strength has yellow tiles. 3 as orange. 4+ as red.

However! I will not use this feature. This does not meet my goals. I will ultimately use and maintain my own branch that displays the raw values loud and clear in simple readable labels. When I combine this with the player agent that pauses for input (another issue), I will be able to record carefully considered, high quality human game play.

The 10 blocks are nice, though not easily flexed if the game is reconfigured to have more. I don't know the long term goals of the project, but I can imagine interesting scenarios:

Maybe a rule for the 5+ and above bomb strength would satisfy me. 2: yellow 3: orange 4: red 5+ number in a label?

cinjon commented 6 years ago

I wonder if we could unite these goals.

Have you tried playing with the numbers approach @alekseynp? My fear is that it's going to be really hard for humans to digest all of that information. I think what you described at the bottom is pretty reasonable, albeit maybe we have a single color above a threshold rather than the number?

I think it's awesome that you are ready to utilize human gameplay in your research. With that in mind, could you run some trials with these visuals to see which approaches people are capable of absorbing and are comfortable playing?

cinjon commented 6 years ago

@alekseynp , any update?

alekseynp commented 6 years ago

Thanks for the prod. Your last message was wise, and I agree that I should collect some experience. That will take some time and I'll update here when I have done so.

cinjon commented 6 years ago

Ping?

alekseynp commented 6 years ago

Pong.

Unfortunately after reflecting during my recent vacation, I think Pommerman generally is a project that I'm going to have to drop.

I apologize if that means I've been more disruptive than helpful.

cinjon commented 6 years ago

Aye, closing this, however I think that @weseldridge 's solution in https://github.com/MultiAgentLearning/playground/pull/143 is a 👍 direction that we can build off later as necessary.