King's Bounty is a turn-based strategy game. The objective is to recover the Sceptre of Order. Map pieces that reveal the location of the sceptre are gained by defeating villains and finding special artifacts. A normal play session would involve exploring four large continents and battling hundreds of creatures, but in this movie nobody gets killed and everyone is happy. After the game begins (at frame 585) it takes 25 frames to complete it.
Plays at hardest level
Aims for fastest time
Manipulates luck
Ignores semi-important goals in the game
If someone wants to improve it, watch these RAM addresses:
00FFE8A8 (sceptre x-coordinate)
00FFE8AA (sceptre y-coordinate)
{11,5} would be the perfect coordinates, but a) I'm not sure if the sceptre can be under the starting location and b) it may take more time to manipulate that than it takes to walk to the location I got, {11,4}.
adelikat: Accepting this run. The response is good and the run shows amazing luck manipulation. This should be the easiest job an encoder will ever get :p Hell, compressing the .png screenshot will probably take longer than the .avi. Come to think of it, there isn't much to choose from in the screen shot considering only 25 frames of gameplay :p
Bisqwit: Submission file replaced. According to the author, it is now 5 frames faster. It is indeed now only 610 frames long.
Reading all this has brought me tons more joy than watching the old run ever did. And the run is cool as hell.
Good work, dudes.
This post is so nice, I'd like to see it twice.
asside:
frames/time(s)=60 (you know, approximately)
If your final time was infinite frames, then we'd end up with 1=60 assuming the final time in seconds is also infinite—and I wouldn't want to do that to the universe!
Great to hear that the move will finally be pushed to its limit!
Aqfaq wrote:
There seems to be variation in the fading time after the character selection screen. I never noticed it before. I tested it briefly and it seems that even with 2 frames of more time wasted in the character selection screen can result in 1 frame faster overall time, so there is sometimes at least 3 frames difference in the fading time! This means that at least all 9-frame and 10-frame iterations need to be tested in order to find/verify the optimal movie.
I'm positive that's because the game keeps placing sceptre on wrong positions (where there's a building on the map), thus calling RNG many times after checking its position.
Aqfaq wrote:
Because of the varying fade time, I can't tell what is the exact maximum amount of luck-manipulation that is allowed.
I doubt the fade would vary by more than 3 frames or so.
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
AnS wrote:
I'm positive that's because the game keeps placing sceptre on wrong positions (where there's a building on the map), thus calling RNG many times after checking its position.
Then that means the fade time is not directly related to timing of the final luck-manipulation input, so it is indeed possible that 9-frame or 10-frame iterations produce faster result!
So, gia, would you like to organize the task so that you provide us with bots set to work a predefined segment of 100 000 movies? People could then download one of your differently configured bots and just run the bot and report the results. People would not need to configure anything, so it would stay organized as long as people inform what segment they downloaded.
Download the bot at TAS laboratory, it has support for that.
First guy run the generator, copies generator.save and sends to second guy. He generates second batch, and sends .save to third, etc.
Each run creates +-25 000 movies and will tell how many combinations so far it has created, so you can use that number to config the bot of the next guy (as they will start with the next movie). So if you want batches of 100k just run 4 times and send the save to second guy, etc.
To know how many segments there are (for me to offer downloads for each) I would have to either calculate or generate the movies. Both take time, and I bet 10 frames will be big enough so as to offering downloads for 100k segments will end up with a lot of segments, i prefer you copy/paste the save file and config the single line on the bot config.
(hell as you go you could package the folder with the save and bot config in place so they just run the thing).
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
Thanks again.
Well, I'll just run these 9-frame movies, even though the 400 000 seems a bit low number for them. I have lots of disk space still available, so that is not the problem. Is there a limit to how many files can be in the same folder?
Well, if you, alden, want to try it out, just begin with the 10-frame configuration. Generate as many files as you like and then pass the generator.save file to the next person, whoever wants to pick it up.
Edit: Oh, feel free to ask, if you have any questions. It took me some time to understand this tool too. :)
Edit-2: If you have sound enabled on the playback bot, it should sound something like this: www.freewebs.com/aqfaq/giabotsound.mp3
gia, I would appreciate your help.
I only have 2 to 3 frames that need manipulating (different game), but they access the RNG a god awful amount of times. Is there any way you could write your bot to attempt every possible input for those few frames, then check memory values?
That means up, up down, up down left, up left, up down left right, up right.... i.e., all 256 different button combinations...
Sage advice from a friend of Jim: So put your tinfoil hat back in the closet, open your eyes to the truth, and realize that the government is in fact causing austismal cancer with it's 9/11 fluoride vaccinations of your water supply.
yawn, there's the source, if you can't use it, finish that code and i c/p into the source
you say something like not adding any extra frames just using the ones already available and you got their numbers right?
just complete this:
switch( j )
{
case 0:
baseinput[startpointf4 + i].Controller[0] = ""; //idle
break;
case 1:
baseinput[startpointf4 + i].Controller[0] = "^"; //up
break;
case 2:
baseinput[startpointf4 + i].Controller[0] = "Z"; //select, this is the only button different than usual tas-movie-editor syntax
break;
etc
}
change "case" numbers and what's between ""s
yawn, there's the source, if you can't use it, finish that code and i c/p into the source
you say something like not adding any extra frames just using the ones already available and you got their numbers right?
change "case" numbers and what's between ""s
I sent you the completed code, and hopefully this will benefit more people than just me.
Essentially, I have the first 6 seconds of input. The bot needs to do 3 frames of input, and then frame advance once, and check 3-5 memory values.
Sage advice from a friend of Jim: So put your tinfoil hat back in the closet, open your eyes to the truth, and realize that the government is in fact causing austismal cancer with it's 9/11 fluoride vaccinations of your water supply.
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
The bot has finished running the 9-frame luck-manipulation patterns.
There were 401 328 files to run. (I'm not sure if that was all of the 9-frame movies, but as mentioned earlier, that is all the generator generated for me.)
It took about 24 hours to run all those movies with frame skip set to 50.
There are 17,8 MB of .txt logs, if somebody wants to analyze them. :)
Here are the not-so-exciting results:
83 movies got coordinates {12, 4}. I believe this coordinate might be a good shot for a console speedrun, since it is seen "often". (Oh, but that might not be the case, when more frames are wasted in the beginning.)
Coordinates {10, 4} were achieved once. It was movie 335068. Rather strange how there was only one of these coordinates so far, of all the 1-9 frame luck-manipulation patterns.
All these 84 movies (with Y-coordinate: 4) require 12 frames of walking and complete the game around 607 frames at best. That is not a good time anymore.
Two movies managed to get 597 frames completion time with coordinates {11, 5}. These two movies were 238455.gmv and 323348.gmv.
There were four other movies that got coordinates {11, 5}, but those four had 1 frame more fade time, thus achieving 598 completion time. That is not a promising result. With inductive reasoning, I would believe that some of the 10-frame movies will complete the game in 598 frames and some in 599 frames, but I can't see the possibility for 595 there, maybe not even 596. But who knows before the 10-frame movies are tested...
To achieve 595 frames, some of the 10-frame combinations must achieve 3 frames less fade time than the winning 8-frame combination got. Maybe it's not possible.
An awfully lot of the movies get 0,0,0 and are not reported as FAILED. I suppose all of those are the movies that press Start immediately after Left or Right and the game fails to begin. I would strongly recommend reducing the tested patterns so that there's always an idle frame before the start button. But ofcourse, as you (gia) mentioned, it is not a bad thing to run extra movies. There's just so many of them...
I would like to let other people run the bot for now, if they want to. I've already run more than 520 000 movies. It was fun and I learned new things. I'll consider running bots for other games in the future, if opportunities arise. Oh well, if the ball gets rolling with the 10-frame movies here, then I might run some of those just for fun.
In conclusion, the project has been a huge success already! Congratulations to gia for a great TAS achievement!
Also, many thanks to people who joined the happy discussion and offered help.
I would not hurry with the submission-package yet. I also still don't care who is the "author" of the movie, but I bet gia did the hardest work to achieve it.
P.S. The 401 328 movie files take some disk space, but I'll keep them available a few months, if somebody wants to see a specific file. Same goes for the bot logs.
The bot has finished running the 9-frame luck-manipulation patterns.
There were 401 328 files to run. (I'm not sure if that was all of the 9-frame movies, but as mentioned earlier, that is all the generator generated for me.)
It took about 24 hours to run all those movies with frame skip set to 50.
You only set frame skip to 50?!?!
Man. How slow is your computer? I'm running it at 5000. It's not over 9000, but it's still fast. I'm running about 60,000 418 frame movies in a half hour.
Sage advice from a friend of Jim: So put your tinfoil hat back in the closet, open your eyes to the truth, and realize that the government is in fact causing austismal cancer with it's 9/11 fluoride vaccinations of your water supply.
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
I studied the fading time a bit more and guess what!
After the final Start button (before the game begins):
The old published movie has 174 frames of screen fade time.
By a lucky coincidence, the new best movie has only 173-frame screen fade!
The hypothetical optimal movie, which starts the game as fast as possible, has 174-frame screen fade! In order to achieve 173-frame fading time, the optimal movie needs to idle 1 frame, negating the gain. :D So, you could say that in a sense our new movie plays the screen fading part faster than optimally. LOL?
But not quite...
If I'm right, the winning 10-frame combination would need 171-frame fading time. By testing manually, I know that this kind of fade time is possible. So, ok, I'm willing to run some more movies, because I know for sure that there is still a (very small) chance for an improvement. The bot can run with the same old configuration. I will pick up the .save file at some point, if it gets tossed around here. Thanks.
DarkKobold wrote:
You only set frame skip to 50?!?!
Man. How slow is your computer?
I used frame skip 4000 first, but I wanted to do other stuff with the computer too, so I changed it to 50 at some point. If I had let the computer run without touching it, it would have worked much faster.
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
I generated all the 10-frame luck-manipulation files recently. It is 1.3 million files. I'll run those files someday soon and if no improvement is found, we will likely submit the 596-frame movie.
Definately waiting for an improvement of this.
Once you have that all figured out, will it actually be the fastest it can be? I guess there's still no way to tell.
Super Mario Bros. console speedrunner
- Andrew Gardikis
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
andrewg wrote:
Once you have that all figured out, will it actually be the fastest it can be? I guess there's still no way to tell.
Your guess is right, there is no way to tell it for sure. In any case, it is definitely VERY close to perfect.
I finished running the bot and there was no further success. So, 596 frames is likely the new record. I have sent a PM to gia about submitting the movie, but he has not received it yet.