Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2178
Location: A little to the left of nowhere (Sweden)
elitist_jerk wrote:
It'll take me a while to set up a VM and get Hourglass running, but sure. I'm not sure how much of a movie file it would be, though, since I still won't be able to bypass Guest. Also I love you dude, thanks for being willing to help/translate this.
The movie file does not need to be playable, I wanna examine it in a hex-editor, so if the mouse works but isn't recorded, just click past Guest and record input for 10-30 frames, just so I will have something to look at.
Joined: 7/2/2007
Posts: 3960
I believe the logic being discussed is simply that the game will attempt to do 60 physics updates per second, and if it has spare time after that, it will dedicate it to doing extra display updates. Thus for example, if your computer is fast enough to do 2 display updates per physics update (and you have a 120Hz display, of course), then you'd see something like this (for an object moving at a speed of 5px/sec):
Physics tick   Displayed position
1              0
1              2.5
2              5
2              7.5
...
Of course, given that most people have displays updating at 60Hz, in practice this does not make a significant difference, but it can be very useful if your physics tick is expensive, since you can bring the physics framerate down (e.g. to 20 or 30Hz) without making the display all jerky. For a TAS, I suspect that locking the display rate to the physics rate will greatly simplify the TASer's life.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Joined: 4/10/2013
Posts: 19
Location: Seattle
Sorry for the inactivity. I have a virtual machine created with VMWare player - Windows XP Home? How should I find an install disc for it? I might need a bit of help setting up Hourglass but now that school is done I'll be able to do it this week.
Joined: 4/10/2013
Posts: 19
Location: Seattle
Yeah this'll definitely need to be put on indefinite hold since I need to get a computer that can run this in VM without choking constantly. And there's the whole mouse input dealie... Well I suppose I can be patient.
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2178
Location: A little to the left of nowhere (Sweden)
I am actually working on mouse input right now, but I ran into a problem which I am hoping can be resolved during next week. Without fixing the problem, I have nothing to test support with, and I am sure I accidentally put some bugs in that code. I cannot give any ETA on actual support being done, so many things that can bug out.
Joined: 4/10/2013
Posts: 19
Location: Seattle
So warepire, does that troubleshooting build for super hexagon also work with dustforce? it'd be good to at least get an idea of what's going wrong before I get a better computer that can actually, y'know, play the game. i still would like to work on this.
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2178
Location: A little to the left of nowhere (Sweden)
The troubleshooting build for Super Hexagon is only supposed to write a minidump in the event that a DLL fails to load in such a way that the game throws an exception Hourglass cannot handle (which the game does for at least one core dll when launched in Hourglass). It also does not create stable movies etc. I doubt it would be useful for Dustforce. We however have made some progress on mouse support, it's unfortunately still not possible to tell if it's ever going to work properly but some games that didn't boot before now does. We still have issues getting the data to the game properly. And when it comes to Windows Messaging mouse input, we still have work to do on translating the coordinates, because currently we can't because of how the window-hooks are done. It also does not help that I have to focus on other things right now which gives me very little time to work on it. (Same goes for the others).
keylie
He/Him
Editor, Emulator Coder, Expert player (2840)
Joined: 3/17/2013
Posts: 392
Did somebody actually launch Dustforce through Hourglass and was able to see the introduction cutscene ? I couldn't get it to work.
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2178
Location: A little to the left of nowhere (Sweden)
keylie wrote:
Did somebody actually launch Dustforce through Hourglass and was able to see the introduction cutscene ? I couldn't get it to work.
Atma claims to have done it according to others, try to throw him a PM and see if he remembers how to do it.
Former player
Joined: 9/1/2005
Posts: 803
Can't say I do. Don't recall using any special settings to get it to run in hourglass though, but there were 2 issues I had with it anyhow: 1) It didn't seem to actually register (non mouse) input, so i couldn't skip the cutscene anyway. 2) It ran at like 2fps in a vm.
Joined: 4/10/2013
Posts: 19
Location: Seattle
keylie wrote:
Did somebody actually launch Dustforce through Hourglass and was able to see the introduction cutscene ? I couldn't get it to work.
I did at one point but the same combination of settings (which I've by now forgotten) resulted in a crash the last time I tried it. And yeah, the game seems to run awfully in a VM for some reason - it didn't accept input due to massive lag even when I ran the dumped .exe in the VM without booting it in Hourglass.
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2178
Location: A little to the left of nowhere (Sweden)
I have since acquired Dustforce thanks to keylie, so I have better debugging abilities for this game now. Adding mouse input however exposed another problem with how we do windowing, which has to be resolved before we can finalize mouse input. Adding mouse support is a lot more work than we thought.
Joined: 3/10/2014
Posts: 10
Location: United States
While the first post does a good job of explaining the basics, It is slightly innacurate in places, and does not include all the tricks. Runs at 60fps Goals include SS All Levels (100%) Any% All Levels NG+ (Any% done from a completed save) Low% All Levels NG+ (lowest dust collected possible on each level, determined by the combo meter, segmented run of this is currently in progress by myself) Dust on surface Dust Blocks/Dust Tiles and Enemies Super is gained after gathering 100 dust, An enemy hitting you will give 5 dust each hit (some enemies can multi hit several times to charge up a super in any% very quickly) Mouse exits click twice on the same frame, clicking on the "yes" box will skip load and menuing time and take you outside the sub-area-nexus (the forest or city etc.) to the main nexus, Used after completing every level in an area, and in a few other places in Lab and City to save travel time (before finishing all the levels, you mouseexit, immediately enter back into the area to reach the next door faster) Controls can be re-bound Jump takes 8 frames, speed decreases over these frames, By jumping on the very last frame(s) you are on a ledge (and about to run off of it) you can cancel these frames and save speed in midair. Called Ledge-Jumping Jumping uses up 1 air-charge (Killing an enemy replenishes aircharges to maximum, Supering also recharges to maximum, Dustkid has 2 aircharges all other characters have 1) Light attacks deal 1 damage, can be spaced out instead of spammed to preserve hang time in the air and clear large gaps easier. Killing an enemy gains you a few pixels of vertical height Heavy Attacks deal 3 damage, will scatter dust onto surfaces. each takes roughly 0.4 Heavy and light attacks can be cancelled via dashing and jumping to end the animation cooldown early and initiating a new attack after jumping/dashing, can be used to heavy attack roughly twice as fast (but of course you are then jumping and dashing in between each attack, so you must position carefully) By pressing all 4 (jump, dash, light, and heavy) buttons on the same frame after a heavy attack, you can ground-dash cancel the heavy attack and will heavy attack afterwards, based on timing. Ground-dash cancelling heavy attacks is otherwise impossible. Writeup on this here: https://docs.google.com/document/d/1RPyZryeTh7ADiWP6-S5q8Y7Ofb5KIA91U7kPptgj95c/edit?usp=sharing Supers on 1 enemy takes 0.7ish, and adding 0.116 for each additional enemy. Dashing on Dustworth does not take to maximum run speed, have to dash once and then let him run to gain speed. Dashing uses 1 aircharge, Dashing to maintain boosts is done roughly 4 and a half times a second, with 12 frames in between each dash. Wall jumping or dashing does not use an aircharge Can press Dash and Jump on the same frame to reverse momentum in midair to dash speed instantly, Can only be done at near 0 Y speeds. Your hitbox does not change when falling, rather spikes do not stick out from the tile at all, it is purely a visual. Your character hitbox can fit through 3 pixels in between spikes on both walls in a 1 tile wide gap without touching the walls. Ground boosting can be done from higher heights the more speed you have (including boost speed) want X and Y speed values to be roughly the same to achieve boost, Boost in approximately a 50% speed increase over dash/run speed. Attack cancelling does not need to be done in midair. as mentioned earlier Jumping from a 45 degree slope going to the right is faster then dash/run speed, Going to the left however is slower. (includes spikejumps) Landing on the very edge pixel of spikes is possible (can also hit this pixel on walls and non-90 degree walls as well) landing on the very edge pixel of a dust block/dust tile will not destroy that tile until you move (can be used in low% to avoid picking up dust tiles but still being able to land on them) Clipping can be done in several geometric configurations. The one used in the Grass Cave Best Time IL takes 7 jumps to clip through the wall. must dash into a 45 degree configuration to clip through (seen in Core Temple Best Time IL) Block breaking height is roughly 80% of terminal velocity. Tile #'s should be accurate. I believe dustgirls fall start is actually 3 frames faster then dustman. Does not reach terminal velocity faster (and not only on slopes) instead just starts the fall sooner. Keeps more speed during wall runs is something I have not heard and is confirmed, would need testing. Dustworth's "slower" speed is likely due to the dash acceleration I mentioned earlier. The Single Segment WR's are now 50:08 by Krankdud for SS All Levels, and 33:25 by Luffy for Any% All Levels. The IL times for the segmented are also outdated by now obviously. Some things not mentioned at all -Ceiling slides are faster then dash/run speed initially, but reduces over time of the cling, release cling early for small speed boost. -Attack hitboxes of Down and Up heavys can reach through walls/floors/ceilnigs etc. See Firefly Forest SS -Jump and attacks are disabled at the start of the tutorial level. -"spikejumping" on 45 degree dust tiles will not destroy the dust tile, can be used to skip dust in low% -porcupines shoot spines which can be deflected into enemies to instantly kill them, overlapping enemy hitboxes can result in 1 spine killing 2 enemies. -Wall slides downward are quite slow, instead use "superdrops", freefalling slightly off of the wall and using attacks while falling to clean the dust on the wall (Night Temple SS) -Attacking spines shot by porcupines will gather dust (Grass cave SS used to get a 2nd super)These function like apples, so heavy attacking all 3 spines+the porcupine itself will give 10 dust, from a 1 hp enemy(not including any dust spread onto surface) -Enemies who fall into deathzones are considered killed/cleaned for the purpose of SS ranks, Skipping them to save time if they will fall into a deathzone is possible and still get SS rank. -Because heavy attacks are slow, light attacking an enemy so he will be in range for you to heavy attack it and another enemy can save time (1 light+1 heavy=faster then 2 heavys) -Light attacking with Dustkid is faster then heavy attacking For all other characters 2 light attacks are faster then 1 heavy attack (useful on 5 hp enemies) -Ingame replays are available for all IL's for any% and SS, can be used as an excellent place to start getting an idea for routes and improvements. -Occasionally an enemy will not be tied to the goal flag and does not need to be killed for any% (though it might be faster to with a super rather then waste time avoiding it) -Spikestand can be done on angled surfaces(concrete temple best time) 1 tile above is 5 pixels of width, 2 tiles of height above it becomes impossible due to you sliding on the sloped floor. -by jumping repeatedly very fast on 26 degree walls, you can infinitely climb them -Checkpoints can be used to deathwarp (Moon temple best time, peta difficult best time) useful for any% and low% -lower left part of character hitbox will not be killed by spikes. Can be used to jump and ledge climb over spiked surfaces. -Dustman and Dustgirl cannot get up the wall from Knight hall to Tower -Dustworth has the fastest groundboost speed -Rooted slimes can be hit into a sling animation and killed with 2 lights, normally would take 4 -Wiring SS is based off of specific "fake" dust patches, and specific "real" dust patches, not based on a # of dust collected etc. -Dustkid and Dustworth have a slower maximum fall speed -Character will potentially unload (softlock of the level, must restart from beginning) if too far outside of camera. Camera nodes are wonky. I'll edit this after I get back from lunch with anything else I remember. dustforce IRC and Eklipz/Myself are the ones to contact for more info on stuff, we are the most knowledgeable about the game.
Joined: 4/10/2013
Posts: 19
Location: Seattle
Thanks. I was just getting the tricks from you guys and I know I got some stuff wrong. I can replace my OP with your post.
Joined: 3/10/2014
Posts: 10
Location: United States
Combining them would be good since I didn't go over everything if you got it correct
Player (230)
Joined: 4/25/2012
Posts: 73
TheBirdOfPrey wrote:
-Wiring SS is based off of specific "fake" dust patches, and specific "real" dust patches, not based on a # of dust collected etc.
I've done some testing, and I'm pretty sure that it's the old bug with dust blocks not counting for the total... the dust blocks at the end are worth exactly 21 combo, and you seem to be able to miss exactly 21 combo worth of dust throughout the level and still SS. I tested and there are no specific patches of dust that can't be skipped and still get an SS... aside from those patches of dust that are just impossible to skip whatsoever due to their positioning. It's possible to SS with a 269 combo at the end (even less if you kill the last enemy with an attack rather than a super, but that's because of some strange properties of the level end trigger... a super which ends the level counts the combo of the last things it cleans, attacks that end the level do not), and it's possible to AS with a significantly higher combo, but that's due to heavy attacks scattering dust. That dust can be picked up to increase your combo, but it also adds to the total dust count of the level. Notably, the blobs in the level have 3 HP and thus are worth 3 combo... but there's no partial credit. If you hit a blob twice and skip 19 or 20 other dust, you'll get an AS rather than an SS as if you had lost out on all 3 combo from the blob.
Joined: 3/10/2014
Posts: 10
Location: United States
Yeah i never really tested it thouroughly myself tbh, Although i have gotten A\S es with higher combo then SS's but that can be explained via heavys spreading dust etc.
Post subject: Dustforce DX
Joined: 3/10/2014
Posts: 10
Location: United States
Game recieved an update today, Dustforce DX adds 19 new levels (removes 1 old level) an entirely new sub-nexus area, and several bugfixes. aswell as no longer being coded in angelscript. I tested it out today, I was able to get past the intro by running the game once beforehand (without hourglass hooked into it) and set the automatically skip intro setting) This got us past the intro for the first time, I'm currently brickwalled by the Login menu. If someone can figure out a setup to get past it, a TAS should be possible. The game is running quite poorly and for some reason not recognizing my keyboard inputs to get past the login screen. But if we can find some settings that work, We could be good to go.
Post subject: TASing IL's is possible and underway!
Joined: 3/10/2014
Posts: 10
Location: United States
http://dustkid.com/composer.php This essentially decompiles the replay files that can be played from the leaderboards ingame into their input strings and then allows you to edit the string in order to essentially alter the inputs frame by frame. This currently only works for Individual Levels since those are the only thing that has replays(so no overworld movement is possible to TAS yet) http://dustkid.com/records If you scroll to to the right on the above page you can see TAS's as they are completed. We are currently mostly focusing on SS>Any%>Low% and mostly covering an entire hub area before continuing. I will eventually do every IL and every Category but it takes a long time. So super happy that a Dustforce TAS is finally possible
Player (230)
Joined: 4/25/2012
Posts: 73
Working with the replay format is pretty awkward, since it seems to allow for a variety of impossible inputs... e.g. up+downdash, downdashing and then dashing on the next frame, etc. Also I'm a bit confused by how inputting jumps works, since if you don't put a string of 1s in the jump column, you get a short hop, but if your string of jumps is too long you get an airjump, and "too long" can vary. It's also pretty annoying having to rewatch your entire TAS to see the effect of the changes you made at the very end. However, the possibilities are still quite exciting. I'm messing around with a Dustkid:Ruins:Score TAS and it's going pretty well so far, though I think I may have accidentally "published" an unfinished run >_>.
Post subject: Submission Questions
Joined: 3/10/2014
Posts: 10
Location: United States
Currently due to Hourglass not working with Dustforce, we have been using the community-made replay editor to TAS the game. That page is here: http://dustkid.com/composer.php The game's replays are quite robust and allow us to use them through the game as an emulator of itself. We can create fake replay files using the composer, and then edit the input strings that the replay plays back in order to frame-precisely create and edit TAS's of the game. Due to the files being replays however, they need to finish. What that means is we can currently only TAS the Individual Levels of the game. There is an overworld, and the gameplay of the overworld is the same to the gameplay inside of levels. We can use the game's Level Editor in order to copy the overworld and turn it into a Custom Level, and then we can create a fake replay, using the composer again, in order to TAS the overworld movement. This is not ideal, but the functionality of it exists. What this means is that if we were to complete a TAS of the game, as we are currently able to do (eventually, still lots of work to be done) we would have the entirety of it saved in these fake replays as segments. From there, a spliced video file, made from these segments, could be created. This is obviously an unconventional method to create a TAS, and to my knowledge, does not currently match the submission/publication guidelines on the site. My questions are mostly focused around a theoretical future date, in which the game has been completely optimized, but Hourglass still does not work with the game. How would/should we go about making a submission to tasvideos? The segmented video file is quite a problem in itself, as the number of segments would be quite large (150~) The legitimacy of the segments can be verified however, for example: http://dustkid.com/replay/-7428755/showinputs That page shows all of the input strings used to create that TAS-IL, and such a page would exist for all segments in the completed run. These segments will sync for any computer that is powerful enough to run the game without lag, and matching the OS used to create the replay (Windows is what we use currently, Linux and Mac versions of the game that attempt to watch those replays made in Windows may desync in places) I understand this is a somewhat unique and unconventional situation to be in, especially for myself as I have not made any submissions to tasvideos before. I believe a site admin or Senior Judge is the type of person that would need to make judgement on this. If anyone has any questions, feel free to ask, as I understand making an exception to these types of things is not done very often.
Joined: 3/10/2014
Posts: 10
Location: United States
Still need to talk to a Site admin/ Senior Judge i believe for how we would go about publishing the run on the site officially with our sorta weird setup atm. There's been lots of updates, and the run is nearing the end of being fully completed.
Joined: 3/10/2014
Posts: 10
Location: United States
We would like to submit the run to be published soon on tasvideos if possible. Due to hourglass not functioning with Dustforce we cannot provide a listed approved way of submitting the completed TAS. A community member (msg555) has been adding functionality thru a more open version of the game known as "Dustmod". Notably, it allows frame advance, subframe advance, savestates, speedup and slowdown, and what is known as "Nexus Scripts". Basically the game can now act as an emulator of itself. Previously this was only possible via the replay format the leaderboards used. This worked for individual Levels but did not work for the overworld movement. Previously our workaround solution was segmenting the overworld movement via video files. I want to emphasize that this is no longer an issue and this method would no longer be used. Instead the "Nexus Scripts" allow us to playback a string of inputs from a loaded text file and functions in the overworld, it also includes menuing which was previously not- TAS- controllable, and mouse position and input, which afaik is still not possible even in Hourglass but is used once in the run currently to perform a menuing trick. This has allowed the quality of the run to increase significantly from how the previous workarounds would have resulted. It also means there needs to be 0 segmenting done. We can simply submit the Script files and complete the TAS from start to finish in full. This verification would require the use of Dustmod from the Judge(s) but would be extremely easy to setup and a walkthrough of how to do so and watch the TAS submission could be made upon when we are 100% ready to submit the completed TAS. My previous comment still stands, I believe we need to talk with a Site Admin and/or Senior Judge in order to verify that our submission would be within the guidelines of the site.
Player (36)
Joined: 9/11/2004
Posts: 2630
TheBirdOfPrey wrote:
My previous comment still stands, I believe we need to talk with a Site Admin and/or Senior Judge in order to verify that our submission would be within the guidelines of the site.
I'm neither, but I can tell you that the method you describe is not be within the guidelines of the site, unless you can demonstrate that if you fed the keystrokes into an unmodified version of the game it would function in the same way (and then only maybe, it will be slightly contentious).
Build a man a fire, warm him for a day, Set a man on fire, warm him for the rest of his life.
Player (230)
Joined: 4/25/2012
Posts: 73
To be completely honest, a vanilla game would probably play back the inputs properly. Not as in "we're pretty sure that it works the same," but "there's unpredictability in the vanilla game." Dustforce as a game was designed with a lack of randomness in mind. In theory, everything should happen the same way every time if you use the same inputs. However, there are a few situations with asynchronous race conditions that make this not necessarily work out. For example, rarely during level loading, an extra frame worth of world time will take place before the timer starts and the player gains control of their character, making enemy positions line up slightly differently over the course of the level. Little quirks like this make syncing playback reliably almost impossible, and the fact that unintended randomness could potentially make or break an IL is nightmare for the competitive scene as well, so one of the Dustmod features is to force things to work out as they most commonly would on vanilla and remove those hiccups. This does mean that if one were to try and make a pure input+timing sequence that would play on the vanilla game, however, it would most likely desync somewhere in one of the 150+ level fadein/fadeouts over the course of the game. All that said, however, we've also done our best to ensure that Dustmod remains mechanically identical to vanilla Dustforce. Composed replays play back identically on Dustmod as they do on the original (Windows) game... again, exception being that if your computer is lagging during level loading or something similar, a replay might desync on the original, but will always work properly on Dustmod.