Welcome Guest! To enable all features please Login or Register.

Notification

Icon
Error

84 Pages«<1920212223>»
Sepefeets Silverfish update (OG, Kara, MSG)
parakeet
#407 Posted : Friday, July 1, 2016 8:48:37 PM(UTC)

Rank: Advanced Member

Groups: Registered
Posts: 128

Thanks: 18 times
Was thanked: 83 time(s) in 69 post(s)
Originally Posted by: Milecar121 Go to Quoted Post
I'm having problems with 121.4SE



The syntax looks a little off. Here is a guide: http://www.hearthranger.com/forum/yaf_postsm27626_silverfish-update.aspx

I think there might be some ";" where there should be ","
ptx
#408 Posted : Friday, July 1, 2016 10:28:43 PM(UTC)
ptx


Rank: Advanced Member

Groups: Registered
Posts: 31
Man

Thanks: 15 times
Was thanked: 10 time(s) in 9 post(s)
Originally Posted by: parakeet Go to Quoted Post
The syntax looks a little off. Here is a guide: http://www.hearthranger.com/forum/yaf_postsm27626_silverfish-update.aspx

I think there might be some ";" where there should be ","


I think that the correct one is:

// Cardvalue Leeroy Jenkins
cardvalue:EX1_116,30

//Knife Juggler (NEW1_019) + Forbidden Ritual (OG_114)
NEW1_019,0;OG_114,0;mana:5;bonus:25;hero:warlock

//Darkshire Councilman (OG_113) + Forbidden Ritual (OG_114)
OG_113,0;OG_114,0;mana:6;bonus:50;hero:warlock
1 user thanked ptx for this useful post.
Milecar121 on 7/2/2016(UTC)
Milecar121
#409 Posted : Saturday, July 2, 2016 3:51:37 AM(UTC)

Rank: Advanced Member

Groups: Registered
Posts: 32

Thanks: 2 times
Was thanked: 3 time(s) in 3 post(s)
Originally Posted by: ptx Go to Quoted Post
I think that the correct one is:

// Cardvalue Leeroy Jenkins
cardvalue:EX1_116,30

//Knife Juggler (NEW1_019) + Forbidden Ritual (OG_114)
NEW1_019,0;OG_114,0;mana:5;bonus:25;hero:warlock

//Darkshire Councilman (OG_113) + Forbidden Ritual (OG_114)
OG_113,0;OG_114,0;mana:6;bonus:50;hero:warlock



Thanks, that fixed it.
spinko
#410 Posted : Saturday, July 2, 2016 6:48:55 AM(UTC)
Rank: Newbie

Groups: Registered
Posts: 1

One thing i've noticed is that sometimes the calculations starts to soon(or if it's some static variable that's not updated, havn't checked the code so can't say).

For instance when dropping a flamejuggler and he hits a minion with say 2 health so that would put him to 1 health, but in the logs he would still be calculated as 2 health.

This makes the bot take very strange decisions sometimes.
Log

Second just wanted to say good job.
sadpwner
#411 Posted : Saturday, July 2, 2016 7:32:55 AM(UTC)

Rank: Advanced Member

Groups: Registered
Posts: 262
Location: somewhere

Thanks: 3 times
Was thanked: 64 time(s) in 54 post(s)
Originally Posted by: spinko Go to Quoted Post
One thing i've noticed is that sometimes the calculations starts to soon(or if it's some static variable that's not updated, havn't checked the code so can't say).

For instance when dropping a flamejuggler and he hits a minion with say 2 health so that would put him to 1 health, but in the logs he would still be calculated as 2 health.

This makes the bot take very strange decisions sometimes.
Log

Second just wanted to say good job.


Yeah, it's a data sync issue. Joy has to fix hearthranger itself to fix it.
hearthbot8899
#412 Posted : Saturday, July 2, 2016 7:34:49 AM(UTC)
Rank: Newbie

Groups: Registered
Posts: 5

Thanks: 3 times
Turn 1, enemy Druid has 2 1/1 saplings. In hand I had Flame Juggler, Huge Toad and King Elekk. I assume correct play would be to play Flame Juggler with Coin for a 66% chance of killing a sapling and a 2/3 body in field. Instead, it decides to play Huge Toad:

http://pastebin.com/z95nDjc6

I have noticed this sometimes already. I forked your GitHub to try and find if Flame Juggler was getting some penalty, but all references that I found in the code didn't show any. I was thinking that a "bonus" could be added proportionally to the likelihood of killing a unit, but I am unable to find where such a logic could be added.

Also, just wanted to say great job with your branch of Silverfish!
Primal
#414 Posted : Saturday, July 2, 2016 8:57:37 AM(UTC)
Rank: Newbie

Groups: Registered
Posts: 4

Thanks: 2 times
Was thanked: 1 time(s) in 1 post(s)
Bot missed obvious lethal.

Played warrior (basic deck). Opponent has 8 health, board is a 4-attack-chillwind yeti. Bot draws Korkron Elite for perfect lethal.
It attacks with yeti, emotes well played and concedes :(

Log
Dre
#415 Posted : Saturday, July 2, 2016 2:14:11 PM(UTC)

Rank: Advanced Member

Groups: HSModerator, Registered
Posts: 888
Man
Location: The Netherlands

Thanks: 216 times
Was thanked: 480 time(s) in 315 post(s)
@sepe Just saw this turn 6:



Best play would just be to play the Savannah. but it did something else.

I allready put a cardvalue (in testing) on deadly shot so it doesnt waste it on minions like this totemgolem. But you should i also use this in case: or??
Code:
// [Nudge] Force [6] Savannah Highmane (EX1_534) on turn 6 a bit
EX1_534,0;mana:6;bonus:50;hero:hunter
sepefeets
#404 Posted : Saturday, July 2, 2016 2:51:07 PM(UTC)

Rank: Advanced Member

Groups: Registered
Posts: 899

Thanks: 1028 times
Was thanked: 584 time(s) in 238 post(s)
Originally Posted by: sadpwner Go to Quoted Post
Can you write a tutorial on how to fix misplays? I think development would go much faster if multiple people were working on it. It would also free up time for you to work on the mulligan and discovery.

Damn, apparently,
hold;all;all;CS2_236/BRM_017 isn't supported

How to fix misplays should be rather obvious to any developer just by looking at past commits. Any developers that need help getting started can just ask w/e specifically they are having problems with. It looks like parakeet just started setting up his dev environment last night so you'll probably start seeing more from him.

The 4th parameter can only be a single card, + and / are only for the required cards list. It's also completely ambiguous what such a rule would even do. Hold up to 1x CS2_236 and up to 1x BRM_017 the way "or" conditions currently work in the required cards? Hold up to 2x CS2_236, or hold up to 2x BRM_017 if there is no CS2_236? Something completely different?
mixarms
#417 Posted : Saturday, July 2, 2016 3:23:09 PM(UTC)

Rank: Advanced Member

Groups: Registered
Posts: 57
Location: Brazil

Thanks: 7 times
Was thanked: 17 time(s) in 7 post(s)
Originally Posted by: parakeet Go to Quoted Post
If anyone wants to try Sepefeets 121.4SE with Speed allowed, here is a version where it can be enabled: http://www.filedropper.com/silver

Set Speed = true in your settings.txt file.

It has its own problems, but also advantages. Just started testing it. I am able to set the calculations super high, because it doesn't recalc after every action. Appears to correctly recalc after MOST random actions. I have seen it not recalc when it should have once so far.

Please don't post issues related to it in this thread.


What about the thousands misplays it had in previous versions?
sepefeets
#419 Posted : Saturday, July 2, 2016 3:27:37 PM(UTC)

Rank: Advanced Member

Groups: Registered
Posts: 899

Thanks: 1028 times
Was thanked: 584 time(s) in 238 post(s)
@Primal - You didn't include all the boards for the turn but it's obviously HR data sync bug. The 2nd board is the first for the turn and shows that SF wanted to attack both minions into face for lethal. HR probably told SF that the Korkron wasn't on the board after it was played.

@Dre - I'm not sure if single cards are even possible in combos? I'm also questioning whether either play there is really better than the other... Deadly shot does need better penalties though, a quick look appears like it's not really ever penalized.
parakeet
#418 Posted : Saturday, July 2, 2016 3:34:11 PM(UTC)

Rank: Advanced Member

Groups: Registered
Posts: 128

Thanks: 18 times
Was thanked: 83 time(s) in 69 post(s)
Originally Posted by: mixarms Go to Quoted Post
What about the thousands misplays it had in previous versions?


You can expect those to remain. I added some random cards to the list of randoms - but that is the only other change besides allowing the speed option.

The code had a comment about temporary buffs (think abusive sergeant) causing issues, but it was playing them okay in my very brief test.

It's 50% WR at rank 15 right now with Midrange Shaman and Hunter after 1 night of playing. After the season ended, that is where the speed disabled version was holding on my system - so it seems comparable.
Dre
#420 Posted : Saturday, July 2, 2016 5:05:26 PM(UTC)

Rank: Advanced Member

Groups: HSModerator, Registered
Posts: 888
Man
Location: The Netherlands

Thanks: 216 times
Was thanked: 480 time(s) in 315 post(s)
Originally Posted by: sepefeets Go to Quoted Post
@Primal - You didn't include all the boards for the turn but it's obviously HR data sync bug. The 2nd board is the first for the turn and shows that SF wanted to attack both minions into face for lethal. HR probably told SF that the Korkron wasn't on the board after it was played.

@Dre - I'm not sure if single cards are even possible in combos? I'm also questioning whether either play there is really better than the other... Deadly shot does need better penalties though, a quick look appears like it's not really ever penalized.


Never tried single card combo's so i dont know :) but yeah going trough my logs deadly shot often clears very low minions. I set a manual penalty now, testing tonight again.
sadpwner
#405 Posted : Saturday, July 2, 2016 11:15:26 PM(UTC)

Rank: Advanced Member

Groups: Registered
Posts: 262
Location: somewhere

Thanks: 3 times
Was thanked: 64 time(s) in 54 post(s)
Originally Posted by: sepefeets Go to Quoted Post
How to fix misplays should be rather obvious to any developer just by looking at past commits. Any developers that need help getting started can just ask w/e specifically they are having problems with. It looks like parakeet just started setting up his dev environment last night so you'll probably start seeing more from him.

The 4th parameter can only be a single card, + and / are only for the required cards list. It's also completely ambiguous what such a rule would even do. Hold up to 1x CS2_236 and up to 1x BRM_017 the way "or" conditions currently work in the required cards? Hold up to 2x CS2_236, or hold up to 2x BRM_017 if there is no CS2_236? Something completely different?


The only thing is, I am not a developer xD so I gotta learn from the basics. Maybe, recommend me a language to learn?
__

Hold 1 CS2_236 (preference) or 1 BRM_017 is what I intended with the line.
_

Btw, just wondering if you read my edit to that post?

The most important bit was finding a way to command the bot to do specific plays in the future rather than using general rules. I feel like just usinga set of rules won't cut it if we ever want optimal gameplay.
sepefeets
#421 Posted : Sunday, July 3, 2016 12:44:08 AM(UTC)

Rank: Advanced Member

Groups: Registered
Posts: 899

Thanks: 1028 times
Was thanked: 584 time(s) in 238 post(s)
It's coded in C#.

I saw it but I'm not going to respond to every little thing anymore...
parakeet
#422 Posted : Sunday, July 3, 2016 1:08:15 AM(UTC)

Rank: Advanced Member

Groups: Registered
Posts: 128

Thanks: 18 times
Was thanked: 83 time(s) in 69 post(s)
Originally Posted by: sadpwner Go to Quoted Post
The only thing is, I am not a developer xD so I gotta learn from the basics. Maybe, recommend me a language to learn?


If you want to learn how misplays are fixed:

1. Go to Sepefeets' version of silverfish on github: https://github.com/sliverfishes/silverfish

2. Click "Commits" near the top left.

3. Review recent fixes.

Some background on misplays:
You noticed the bot misplayed. First step is to rule out data sync. sadpwner, you seem adept at this, so I will skip the 'how to'.

Let's assume you have a misplay identified. The bot is playing a card very poorly or wasting it.

Simulations
When the bot calculates board values that result from an action, it looks up how to simulate that action. The associated code can be found in the "cards" folder on github. Cards are listed by their card ID. To find a card ID from the name of the card, you can use the "_carddb.txt" file in the silverfish folder. Below is an example for Flame Lance.

Sim example

You can check if your misplay is a result of incorrect simulation code. Even if your not familiar with C#, you can piece together what is happening. I have not done any programming in C#, but I see this code is intended to do 8 damage to a minion. If the bot is playing Flame Lance (see "ownplay") then it modifies the 8 damage by your spellpower using the getSpellDamageDamage function. If instead, the enemy is playing Flame Lance, it uses the enemy spellpower - i.e. getEnemySpellDamageDamage. The next line is using another function to apply that damage to a minion - see minionGetDamageOrHeal(target, dmg).

Penalties
Sometimes the fix for a misplay is going to be in its "Penalty". When playing a card, the bot looks up if there is a penalty for playing that card. A positive penalty value represents a decrease in board value. You can find the penalty code in the "Penalties" folder on github. Again you will need the card ID. Try looking up Forbidden Flame (OG_086). You can see:

1. If there is 0 mana, there is a very large penalty for playing Forbidden Flame. Therefore, any simulated board that plays Forbidden Flame with 0 mana will have its value decreased by 500.
2. Otherwise, the penalty is a function of the player's mana.

You can check if the misplay is a result of the penalty. Most cards do not have penalties. Sometimes you can correct misplays by creating a penalty.

If you are uncomfortable using github, you can post a suggested code change here.




1 user thanked parakeet for this useful post.
Somerandombot007 on 7/3/2016(UTC)
parakeet
#423 Posted : Sunday, July 3, 2016 1:27:35 AM(UTC)

Rank: Advanced Member

Groups: Registered
Posts: 128

Thanks: 18 times
Was thanked: 83 time(s) in 69 post(s)
I tried to enable the Speed option but failed. Data sync is causing most of my misplays, and most of the time the bot had the correct course of action planned out at the start of the turn. If silver.exe ignores new information from Hearthranger and just sends its initial actions, many of my data syncs misplays would be eliminated. Of course, silver.exe is still going to need to recalculate after random actions occur. This can be achieved by truncating the list of actions after any 'random' card is modified. There exists a dictionary of random cards - but code is needed to check if any given action modifies a random card. I am hoping Sepefeets can work his magic.

@sadpwner If coding is not your thing, you can also help Sepefeets by identifying which posted misplays are actual misplays. Currently, the majority of posted misplays are result of data sync. You could filter out which posts are actual misplays and summarize for Sepefeets. That might save him the time of looking through logs.
mixarms
#424 Posted : Sunday, July 3, 2016 1:34:48 AM(UTC)

Rank: Advanced Member

Groups: Registered
Posts: 57
Location: Brazil

Thanks: 7 times
Was thanked: 17 time(s) in 7 post(s)
And how to compile AI with the changes I've done?
parakeet
#425 Posted : Sunday, July 3, 2016 2:01:25 AM(UTC)

Rank: Advanced Member

Groups: Registered
Posts: 128

Thanks: 18 times
Was thanked: 83 time(s) in 69 post(s)
Originally Posted by: mixarms Go to Quoted Post
And how to compile AI with the changes I've done?


Here is what I did to compile my own silver.exe:

1. Get Visual Studio Community 2015
2. Create a new Visual C# Console Application, File>New Project
3. Replace the Program.cs code with the Program.cs code from the "External process"
4. In solution explorer, Right click your app>Add>Reference>HSRangerLib.dll
5. Add the ai folder and all associated code (Right click your app>Add>Folder then Right click Folder>Add>Existing Item...)
6. Add the cards folder and all associated code
7. Add the penalties folder and all associated code
8. Build it
9. Find the debug or release folder within the project folder, depending on how you built it
10. Copy the .exe file to the silverfish folder and make sure it is named silver.exe

As Sepefeets mentions - its a good idea to use Link Shell Extension if you are compiling anything beyond silver.exe. Since you will have multiple projects, it lets each project's files source to the same place. If you are editing the HR>program.cs file for example, and making a .dll from the project, you want to make sure you are using the same ai, cards, and penalty files you used to make the silver.exe file. Otherwise its a real hassle to copy them from project to project and keep track.
1 user thanked parakeet for this useful post.
Somerandombot007 on 7/3/2016(UTC)
sepefeets
#426 Posted : Sunday, July 3, 2016 2:39:54 AM(UTC)

Rank: Advanced Member

Groups: Registered
Posts: 899

Thanks: 1028 times
Was thanked: 584 time(s) in 238 post(s)
Originally Posted by: parakeet Go to Quoted Post

3. Replace the Program.cs code with the Program.cs code from the "External process"
4. In solution explorer, Right click your app>Add>Reference>HSRangerLib.dll

You also need another project for the .dll using the code in the HR folder. Things like the mulligan, settings, logging, sending the current board info to the .exe via a txt file are all done by the .dll. You really ought to use Link Shell Extension to make junctions for the ai, cards, and Penalties folders into your external process and HR folders and make your projects in their respective folders so that the two projects share the same copies of those all files.

The reference is only needed if you are building the .dll, your .exe project doesn't need it.
84 Pages«<1920212223>»
Forum Jump  
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Powered by YAF | YAF © 2003-2011, Yet Another Forum.NET
This page was generated in 0.324 seconds.