Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
There is no "monsters' loot table" in simple understanding.
There are hell of a lot of rules where you can easily be buried.
That's why I'm saying that there is a lot of human factor.
Because human may make plenty of mistakes in those rules evaluation,
to figure out which item may or may not drop here and there.
And yes Mothrayas nice catch.
Variety of RNG is not so large.
AFAIR RNG seed of drop is only 64 bits comparing to variety of potential drops.
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
igloosPat wrote:
This is a heavily (ASTRONOMICALLY) luck manipulated run, meaning the run takes full advantage of the game's theoretical limits and parameters.
I doubt in legitimacy in this spot.
There is a lot of human factor here, unless you have made a lot of work to actually manipulate RNG.
I know d2 internals a lot, belive me or not :)
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
NICE.
At last!
Short setup zips are awesome.
Middle time setup zips looks fine too.
My subjective feeling of long time setups:
Fort Redstar 3
Disco Fever 3 (two of them)
Dis Industries 1, 2, 3 - all of them looks long
For me, 13 shifts is long for sure.
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Link to video
As you can see, from first 'wedge' you can get (0xC5D0400-0xC584500)=0x4BF00 more if you run with speed 0x50500.
You can't get more with this speed.
But you may have 0x50F00 speed, and in that case I guess result will be 0x4BF00+0x50F00-0x50500=0x4C900 - but this is not confirmed.
Also, each one iteration gives 0x4600, this means, you may skip 17 of them!
Sorry, I did update maps yet again. I noticed that places with teal is semitransparent where they should not be, only when I opened it with PaintDotNet. :(
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Link to video
for zips down you need to push direction to the wall, and be as much as close to the wall.
for zips up you need to push direction to the wall, be as muc has close to the wall, and have wall at least 3 blocks, because difference between head-hit-ceil point and floor check point is 32 pixels = 2 blocks exactly, and it's not enough, you need more.
That one in redstar 3 doesn't work because there are exaclty two blocks below.
So, not enough wall in that place.
So, atm I know useful zips from Exonym: Bell castle 3 wall zip, Disco fever 2 tube zip, Dr Dis 1 barrel zip.
Also tried and verified:
1) Disco fever 3 wall zip after 2-nd checkpoint. (right in the middle of the map)
2) Dr Dis 2 wall zip close to head.
Update: Actually in Redstar 3 you can zip into bonus item room and use cannon, then you'll have to break wall from which you jump normaly, and make tricky jump from floor instead.
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Final version of maps:
http://www.mediafire.com/file/1q2l3k49eehmtb6/Aero%20the%20Acro-Bat%202%20maps2.zip
Update 1: changed in 50_1, 51_1, 52_1 switch position into "open".
Update 2: fix of update 1.
I don't plan to change them anymore, except if someone find some bug in it.
Ah... Changes: alpha channel, palette fix, priority, height based on floor, left/right flips.
Next, I want to check how actually some of zips works.
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
So, after making 157 screenshots and croping 32 sprites, and hardcoding a lot...
I have finished all levels up to performers dungeon (not including).
It's intermediate result.
http://www.mediafire.com/file/phbp9uuv36fvdts/Aero%20the%20Acro-Bat%202%20maps1.zip
here it is.
Two notes:
1) any object position might be slightly off, just because many of them are using ground level which I haven't implemented.
2) any object may have wrong palette, because I've used screenshots.
Update: all maps inside
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Script updated again: https://pastebin.com/mgLLaCnV
I thought assembly has bug, but nope... today I checked it again, and now script is more correct.
There is no longer blue regions, because they has no use.
Green regions: you can jump from below.
Teal: most likely you can't.
But it won't push you down if you don't have increasing height (speed y negative).
All maps without enemies: http://www.mediafire.com/file/djmwhy10kti20lt/Aero%20the%20Acro-Bat%202%20maps.zip
To mark enemies I need to hardcode pics for each one.
Maybe later.
Same thing about "support objects": platforms, checkpoints, switches, etc.
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Game mechanics of genesis version is known to me.
But I've never thought about its glitches.
Regarding laps: there are checkpoints on the map.
All you need is to visit them one by one.
Visiting checkpoint is visiting the cell.
So, you only need to have at least once your position inside that cell.
There is counter of checkpoints, you need to find it using RAM search.
Maybe few of first races you can skip by "giving up" after picking all money on the map.
Also you may switch planet/division as soon as you have enough points.
And... changing vehicle is not required. You can finish the game using marauder.
But, of course faster you moving, faster you finish.
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
r57shell wrote:
Normaly ceil check does check against two blocks vertically.
So, you have to somehow slip through 16x32 segment.
Hmmm. Looks like it checks again 16x32 only if you have vertical speed UPwards.
If you falling down: it depends on block. On those blocks where you slide down on its own -> looks it does nothing.
On plain solid blocks -> it push from it, or make you stand on corner <- idk logic atm.
Fixed my script, redownload it.
This place: https://i.imgur.com/XhszzNz.gifv
One additional note: if in cell no "ceill" then it won't look for cell below. This is why this zip works!
In theory, you could do same zip without dash if you could cross that corner without that dash. I call it dash by analogy with sonic.
BTW: do you use fractional parts of values? For example, max speed is 0x50000, but if ground increase it by 0x900, then you may have 0x50900 which is 5.03515625 pixels per frame :b, and it will gain 1 pixel after every 28.44(4) frames. (approximately each half of second).
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
After I made script for collisions data, and I became more impressed.
Just random pic of Disco level
I'm impressed by you guys. You found zip when script shows like it's impossible:
This moment in last encode is at 7:10 time.
:O
Script is showing items, spikes, and collisions.
Green ground -> you can jump from below.
Teal ground -> you can't jump from below.
Blue color -> height of "ceil"
Updated script still has same URL: https://pastebin.com/mgLLaCnV
Normaly ceil check does check against two blocks vertically.
So, you have to somehow slip through 16x32 segment.
I'm really curious how it looks with collision overlay.
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
I have second my test, I haven't publish it yet.
So, here it is: https://youtu.be/7KGDc8V57RQ (fixed)
Just to make anyone who wants see it to be able to.
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Question about difficulty selection for me is more like question about how much technically hard you want your TAS.
For me, it is not much fun to bomb bosses. It's easy.
From other hand, if you have bombs then you have to use them.
Just because your goal is to finish game ASAP.
In "normal" mode you don't need too much coins to have enough magic orbs.
And thus, you don't need to think too much about decision where you need to pick them up.
Easier routing is reducing technically difficulty very much.
I see only one boss that you'll have to fight with sword twice: scorpion.
Also, picking 1p vs 2p seems to me as another kind of difficulty selection.
Just because with 2p you skip many of boss fights.
And with 1p you'll have to boost your sword, and grab coins more carefully.
For me, it looks like there is 4 difficutly: 1p/2p and hard/normal for each.
And, in the end... Anyway you'll have to choose luck/sword hits.
This is tricky. Best option is to try some of them.
Or, you need to make statistic about bosses: I-frames, hp, sword hits required with each level of sword.
And then, plan how many sword levels you need, and which sword-max-hit you select in the first place.
By the way, I was wrong when I was saying that some bosses doesn't take double damage from yellow swing.
In fact, all of them affected by yellow swing.
So, for each boss you need to consider how many double-damage swings you can apply on them.
Update: http://tasvideos.org/Guidelines.html#SelectYourDifficultyWell
Oh, looks like normal should be selected, because:
Faster bossfights on repetitive bosses, especially if their lower health can lead them to be one-cycled, and they are not interesting to fight for longer periods
And all of bosses in this game are boring.
I find it upsetting. And, it's not rules, it's advices.
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
ais523 wrote:
For example, if we discover that holding down the Select button on the first frame of the game has no influence on the game's memory, we can prune all the sequences which hold Select on frame 1, as they'll necessarily tie with the equivalent sequence that doesn't use Select.
ais523 wrote:
There are more complex examples of pruning, though. For example, if the memory states differ but the addresses that differ will necessarily be overwritten before they're read (say some memory address holds "buttons held on the previous frame" but it's only used in certain circumstances that don't apply here)
Most of games are using input buttons data as:
1) read current joypad state
2) read from memory previous holded keys
3) compare them to find all new pressed buttons (key Down event)
4) store key down into dedicated variable
5) store current joypad state as "previous holded keys"
So: it's readed & overwritten straightforward.
Also, key down depends on previous frame.
So, character state should also have previous input in it.
Because, it matters.
If everything else is same, but previous input isn't, then it's different state,
because in one of them you can jump on right next frame (for example),
and in other state you have to wait one frame to release jump button, and press it back.
This potentially may lead to 16 "duplicates" of same state in some sense.
Where 16 is all different variants to hold Left Right Jump Action (some).
ais523 wrote:
However, there are algorithms like A* that can be used to produce a good reordering given pretty much any assumption about how the game can act, and are known to find the optimal answer first if the assumption is correct.
I want to dwell on this topic more.
First, few properties of A*:
1) It always finds an optimal path if heuristic is suitable.
2) This optimal path is always first that is reaching goal.
3) It postpond many shorter paths to later moments, and looking among longer paths earlier.
4) One of crucial property of space for A*: point in space never "changes".
To understand idea of A* you may imagine all possible paths to all points in space where we looking for path from start to goal.
All routes from this set is starting in "start" position, but it may end in any point.
Now, imagine you did sort all routes by its cost.
In our case, cost is time.
Then, if you try all routes in this order, you'll end up with eventually stumbing accross lowest cost path to the goal, which is same as shortest in time.
Dijkstra's algorithm is essentially same algorithm but with very optimized method for iterating over paths in such order (by non-decreasing cost).
A* adds following trick.
Imagine that for any point in space p, you know that you need at least h(p) cost (time).
This h is called "heuristic".
Now, recall why we are sorting paths by non-decreasing cost?
We do it because we want to try all paths with lowest cost (time),
then all paths with a bit bigger cost (time), and so on, in exhaustive manner.
All longer paths is some shorter path with additional step.
If we don't reach goal after walking this path, then we need some additional steps to reach the goal.
Thus, for each shorter path we can estimate how many additional steps we need, to reach our goal.
If we make our estimation that it will never be more optimistic than real situation, then h(p) where p is end point of path - is always less than real cost to travel from p to goal.
And cost of path with best addition is always greater than cost(path) + h(p).
Now, because it's always less than real best path, you can reorder paths by cost(path)+ h(p) instead.
This will scan optimistic paths first. But if it doesn't find solution earlier, it will anyway try all possible paths.
Here some comparison: https://www.youtube.com/watch?v=cSxnOm5aceA
2:01 such case where A* try almost all possible paths.
Other case is if you make vertical wall from top to bottom with only one hole in bottom. A* will try many cases.
This was explanation why (1), (2) is true. Also, it shows why and how (3) happen.
(4) is seen on picture itself. It seen that none of dots is filled twice.
For example. when it checks some cell in opposite direction from goal, it doesn't start to recheck all cells towards to the goal.
But in many games you may find advantage in moving backwards for some frames.
So, you have to recheck cell.
This is because cell is not state. State also has enemies and so on.
This means, that A* implementation for game, with following "map" of obstacles:
Here: black - walls, green - "first" chunk of search, and red - "second" chunks of search.
Because space points are changing (enemies, rng, and so on), after each advance in green chunk, you'll redo part of red chunk.
Remember, red part will be fully only at very end, when it'll try best path itself.
(confirmation: https://imgur.com/a/ou3RTVi)
Conclusion: with A* there are three problems:
1) states (points in space) is not consistent, you have to recheck them when you make change in earlier frames.
2) heuristic is not known, and always under suspicion
3) branching factor is big. (variety of inputs)
It's not full list.
Even if you make very good heuristic, these "rechecking" and branching factors will doom your performance.
Regarding other topics:
Good luck with proving that some game has no ACE or zips.
Lag frames: substituting one goal by another is good idea. Also you may change goal from shortest input, to shortest non-zip / non-ACE input ;)
ais523 wrote:
Finally, there's the concept of parallel simulation: you have two gamestates that genuinely are different, but which are similar enough that you can emulate them at the same time rather than having to emulate them separately.
Idk how you would do that. Are you planning to make emu with such feature? :)
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
p4wn3r wrote:
As an example, Deep Blue, that beat Kasparov in chess, was a supercomputer.
Difference between chess and most of games: chess has well defined simple rules.
Warp wrote:
r57shell wrote:
If you try to brute force all orders of grabbing blue spheres - that's 64! approximately 10^89 - not feasable again.
But! Imagine you did that. You did try all orders of grabbing blue spheres...
That's not enough. You also may grab them from four different directions.
This adds 4^64 (approximately 10^38) variants for each.
So, total approximation is 10^127.
And if you try all the possible permutations in the example I gave, it would take at least 77 years to go through. Conclusion: It's impossible to build a comprehensive list of words in a feasible time?
I think you are missing my point.
Your example completely irrelevant.
In SMB / Sonic for example, no such thing as dictionary.
You can finish game in infinite amount of ways.
If you define that list as all inputs with minimum time to finish...
Warp wrote:
The trick is that you don't need to go through all the possible permutations of those 20 letters. When creating permutations, when you have taken two letters, you can check if any words start with them, and if they don't, you can skip all permutations that begin with those two letters. (The same goes of course for permutations of the first three letters, and so on.) This reduces the number of permutations to check to a microscopic fraction of the total.
Then you can't say for any prefix: can you finish game in minimum time or not?
If you would know this, you'll be able to make shortest input movie.
But this is because you know something, which is called "knowledge".
And this case perfectly fits my explanations.
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
If you try to reduce game to totally valid model with all effects in game included, you'll end up having same impossible in real life times for search.
Easy example. There is well known blue-spheres bonus in sonic.
There are around 64 blue spheres, which you should grab.
Basically it's kind of "Travelling salesman problem".
If you try to brute force all inputs - not feasable (already discussed).
If you try to brute force all orders of grabbing blue spheres - that's 64! approximately 10^89 - not feasable again.
But! Imagine you did that. You did try all orders of grabbing blue spheres...
That's not enough. You also may grab them from four different directions.
This adds 4^64 (approximately 10^38) variants for each.
So, total approximation is 10^127.
Direction is important because you waste a lot of time for turning.
Okay, lets say we want to reduce options by assumption that having same position & orientation & grabbed spheres = same outcome for same input.
This will damage outcome just because there is speed up timings.
Longer you're in bonus stage, faster you go.
This may be wrong assumption. But it may be used as approximation.
More than that. If you make some wrong proofs that you claim is correct.
Then you may build wall to valid options, and people won't try them, because of authority basis.
He said that it's impossible, then it's impossible.
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Warp wrote:
You seem to be arguing something like "you can't call it exhaustive if you don't go through every possible input", when that's not the point.
Yes, but my "support" of this point is different:
Warp wrote:
Depending on the game, there may be combinations of input that cannot lead to an optimal solution, and thus can be skipped.
How do you know?
How do you know that this cannot lead to optimal solution, or other way may lead.
"r57shell wrote:
Most of time, you don't know where may lead this possibility, or may not.
"r57shell wrote:
You may start proving based on code that something is not possible, and step by step simplify simulation of game to make it more predictalbe.
But then you'll have possibility that you've made mistake in your proofs.
So, my point: if you take some assumptions, then it's exhaustive with assumptions.
It's no longer purely exhaustive. And thus, you may miss something.
Possible outcome: "my exhaustive search tells me that it's impossible."
Later someone: "It is possible, I found the way to do it."
Side note: I was saying that you may find optimal solution without exhaustive search, because it may happen that common way of TASing just leads to optimal input for some games.
But presence of short input doesn't prove that all possibilities are exhausted.
Experienced Forum User, Published Author, Player
(107)
Joined: 12/12/2013
Posts: 380
Location: Russia
Warp wrote:
Just saying that finding a perfect solution doesn't necessarily require trying every possible combination of inputs.
Yes, it's not recessary.
But exhaustive means that you exhausted all other options.
So, there is no shorter input that finish game.
But you can't know that, just because you can't try all of them.
r57shell wrote:
You have to somehow cut possibilities.
To able to cut the search, you need knowledge.
Most of time, you don't know where may lead this possibility, or may not.