When you click the "link" button in the forum and this prompt appears, you assume that the focus has been shifted to that text field so that you can just ctrl+v. Currently it does not
Just put a quick .focus() here and everyone will be better for it.
This is just a list of glitchless runs, in case there's ever interest in splitting the leaderboard. The purpose of this thread is to add glitchless runs here as they are found, to make life easier in the future.
Making this because there was a glitchless run submitted. I know a lot of the older runs are glitchless, but I'm not adding them here at the moment bc I haven't verified them.
If you play a level for approximately 4.53 years (~1657 days), the timer value wraps around back to 0:00!
Also, if you play for over ~0.31 years (~116 days), the IGT displayed will have this value:
So there's a range of ~1541 days where you will always get this end time, and then after that you're back on 0:00.
The more you know!
Seems like starting from respawn gives you a 0.6s lead over loading from menu? (Relay Away, Elena)
I was suspiciously faster when starting from respawn, even managed to get a 0:10 while being much slower than PB, so I tested the IGT with breakpoints:
When loading from menu, you are actionable at 1s IGT With respawn, you are actionable at closer to 0.4s IGT
Footage shows you're actionable for 37f@60FPS (0.617s) before hitting 1s IGT.
Should mention that one of the respawn loads I checked was different: it was actionable for 0.533s before hitting 1s IGT, instead of 0.617s
But since all the other ones were consistent that might have been a one-off. Breakpoints stopping/restarting the process made DOSBox go very stuttery at times.
So I've been looking into recording demos for full game runs. Success was limited, but here's what I came up with in case anyone else will be messing with it in the future:
-
Using Crispy Doom or Chocolate Doom you can make extended demo recordings for Hexen/Heretic using the -demoextend parameter (lets demos span across several levels)
-
Recording demos will normally make aiming pretty iffy, which you can fix by either using -shortticfix (aim is smoothed while recording, like in Doom), or -longtics which will make it behave as normal but also increases your demo recording size. I find that -shortticfix feels just fine so for me I'd choose that one
-
There's a standard max size for a demo recording, which is 128kB. From my limited testing it seems that these demo recordings (using -shorttic) end up at about 12.7kB per minute, which would limit you to ~10m. There is a parameter you can use to increase the max limit (-maxdemo), so you might want to put that at like -maxdemo 256 or even 512 just to be safe.
All in all, the launch parameters would be something like:
crispy-hexen.exe -iwad "G:\DOS\GAMES\HEXEN\HEXEN.WAD" -shortticfix -demoextend -maxdemo 512 -record demoName
The problem with all of this is that you cannot do saves/loads while demo recording (nor restarting the run via main menu), or it will desync. So as it stands this all works, but you'd have to do the run single segment
Maybe some other port handles saves/loads? Who knows. These are my findings anyway, hope it helps
So currently the rules for timing are as follows:
- Start the timer when you see the mission brief screen
- Timer ends when Plastro UFO blows up and flies away
I want to propose some changes to the timing, where the rules would look like this
- Timing starts on selecting a character
- Timing ends on first completely black screen after killing UFO
The reason for this is that it's much easier to accurately split for these manually. While it is true that when doing retiming, it's easy to find the first frame of explosion upon killing UFO, but it's also harder / more vague as to what is the correct frame when dealing with a rule like "Start the timer when you see the mission brief screen" since it's a fade in. Does it mean the first non-dark frame after fade-out from character select? Does it mean the first non-faded frame?
Basically I think the timing start is too unnecessarily vague to be used in retiming, and both rules are too hard to split accurately to in runs (particularly the ending is hard to time without sacrificing focus on playing, and even then it's hard)
Pls consider timing change :)
Posting here for archival reasons; run invalid because part of the run is missing.
Run done by MrBrax, uploaded 8 sep. 2014-- no diploma glitch.
Because of characters being named differently in Swedish/Finnish they will be referred to by profession. The guy in the mist is just called spooky guy.
Garden - Viola - ? Kindergarten - Mia - ? Baker - Birgit - ? Priest - Sigge - ? Spooky - Svate Sven - ?
[big]Airplane (end of run)[/big]
- Diving Suit
- Diving Helmet
[big]Diving Helmet[/big]
- Weed Thresher (from finishing dog quest)
[big]Dog quest[/big]
Get a random call which is available after having the following:
- Diving Suit
- Level 4
[big]Level 4[/big]
- Built 12 boats total (changing a piece and putting in water counts)
- Have map piece from Baker
- Have water tank from Kindergarten
- Have navigation thing from Kindergarten (requires pews, get from turning in 2x bibles. Do not visit Kindergarten with pews on your first visit, or you'll be softlocked out of getting the piece)
[big]Baker Map Piece[/big]
- Get a random call which is available after visiting Garden
[big]Diving suit[/big]
- Have map piece from Spooky Man
Big thanks to MrBrax for providing decompiled source code, without him we would never have figured out what the flags were!
#Rules
After looking into the game more carefully, these are the new timings for any%
- Timing starts on first frame of seeing workshop
- Timing ends on first frame of the dashboard loading screen when going into the sea cutscene
- All glitches are allowed
#Retimes & Autosplitter
Since this is all about introducing milliseconds to the leaderboards, current runs will be retimed according to these new rules and future runs will be retimed if they're very close to another run. There has also been an autosplitter developed in accordance to these new rules and you're encouraged to use it.
The autosplitter has been tested on the Swedish and Finnish versions on two different systems and will be added to the Livesplit database shortly, but I can't guarantee that it will work for everyone. Using it together with Dxwnd is not a problem, but it definitely will not work with the German version as none of us have it so support has not been added at all.
If the splitter isn't working for you, please contact me and I'll work out a fix.
#Motivations
Starting timing on workshop instead of the intro cutscene is because at that point, the engine technically hasn't switched scenes from the main menu. Furthermore, the intro cutscene plays when loading any file regardless of it's a new game or not, and as such it is considered part of the main menu and not the game itself.
The end timing is a bit more complicated; we'd like to end timing on the first frame of seeing the sea cutscene, but as it turns out it is possible to skip seeing this screen altogether if you alt-tab during the dashboard loading screen. In order to accomodate people doing this by mistake we explored a few options that involved counting the dashboard frames, but it turned that not only is the amount of these frames displayed inconsistent on individual systems by 1-2 frames (at 60fps), it is also inconsistent across different systems. Since all of these options we could come up with depend on the dashboard loading screen anyway, we decided that this should be used for the end timing.
Hello, I'm O_Circles the friendly neighbourhood speed police! It's been brought to my attention that your leaderboard contains some highly toxic category names, which are the following:
- Church%
- Gold%
- Tech%
- Portal%
You may not be experiencing any symptoms right now, but categories which just add '%' at the end of a word for no reason are well known carriers of malaria, ebola and scurvy. I'm not sure how you came across these category names but dealing in them is highly illegal and dangerous; a formal investigation will be launched tomorrow morning and we expect your full cooperation.
For your own safety (and society/SRcom at large), I urge you to burn these category names as soon as possible and stay away until environmental remidation has been carried out by SRcom hazardous materials professionals.
Regards, COMM'r. O_Circles
#Experiment
- Built car in the same way every time with same filename
Filename: a Follows route in my Any% Guide, leaving Junkyard on Screen 6
Mounted parts in order: - Red Wheels Front - Black Engine Front - Seat - Black Wheels Back - Small Engine Closest Back - White Fuel Tank Closest Back - Steering Wheel
Screen 1 is the default Junkyard screen you go to on a new game Screen 2 is one screen left from that, and screen 3 is one more left etc.
[big]Results Here[/big]
#Findings
-
Screen 1 seems to always have at least 1 part
-
Seems like Big Engine and Small Engine very often spawn on the same screen or one screen apart. Maybe I messed up the execution and changed some rng value by alt tabbing once too much or something?
-
Tried to execute as similarly as possible but even when RNG let me build the car without having to sort through parts + no extra clicks (i.e. very similar to control), the Junkyard was still significantly different. Indicates build order not being significant.
-
Needs more data. I wonder if I will ever be bored enough to do this again
[quote]
symbols message startup message timer message pulse
thing darkJedi nolink
sector sect0 nolink
thing searchNode0 nolink
thing searchNode1 nolink
thing searchNode2 nolink
thing searchNode3 nolink
thing searchNode4 nolink
thing searchNode5 nolink
thing searchNode6 nolink
thing searchNode7 nolink
thing searchNode8 nolink
thing searchNode9 nolink
thing searchNode10 nolink
thing searchNode11 nolink
thing searchNode12 nolink
thing searchNode13 nolink
thing searchNode14 nolink
thing searchNode15 nolink
float searchWait=5.0
float searchSpeed=2.0
int searchNodes=-1 local
vector currNode local
int player local
float lastSeenTime local
int looking=0 local
int i=0 local
int debug=0 local
end
code
startup: player = jkGetLocalPlayer(); SetTimerEx(1.0, 1, 0, 0);
for (i=0; i<=15; i=i+1)
{
if (searchNode0[i] >= 0)
searchNodes = searchNodes + 1;
}
if (debug) print("Number of Search Nodes:");
if (debug) printint(searchNodes);
return;
timer: if (GetSenderId() == 1) { if (HasLOS(darkJedi, player)) { SetPulse(0.0); lastSeenTime = GetLevelTime(); looking = 0; } else { if ((!looking) && ((GetLevelTime() - lastSeenTime) > searchWait)) { if (debug) print("Looking for Kyle..."); call StartSearch; looking = 1; } } SetTimerEx(1.0, 1, 0, 0); } return;
StartSearch: currNode = 0; if (GetThingSector(darkJedi) == sect0) { // Boc is in the main chamber currNode = 0; } else { for (i=1; i<=searchNodes; i=i+1) { if (VectorDist(GetThingPos(darkJedi), GetThingPos(searchNode0[i])) < VectorDist(GetThingPos(darkJedi), GetThingPos(searchNode0[currNode]))) { currNode = i; } } } call DJMove; return;
DJMove: if (debug) print("Heading to node:"); if (debug) printint(currNode); AISetMode(darkJedi, 0x200); // awake and active AISetLookPos(darkJedi, GetThingPos(searchNode0[currNode])); AISetMovePos(darkJedi, GetThingPos(searchNode0[currNode])); AISetMoveSpeed(darkJedi, searchSpeed); SetPulse(0.5); return;
pulse: if (debug) printflex(VectorDist(GetThingPos(darkJedi), GetThingPos(searchNode0[currNode])));
call DJMove;
if (VectorDist(GetThingPos(darkJedi), GetThingPos(searchNode0[currNode])) < 0.2)
{
if (debug) print("Reached Node:");
if (debug) printint(currNode);
// Dark Jedi has reached a node
SetPulse(0.0);
if (currNode == searchNodes)
{
currNode = 0;
}
else
{
currNode = currNode + 1;
}
call DJMove;
}
return;
end [/quote]
If anyone has any findings, post 'em here!
The reason I'm posting this thread is, while we have ColonelSanders explanation of how to replicate this glitch, it's also possible to have the glitch persist over the entire run and not just individual levels as he is talking about.
IFS persisting over several runs for LifeL1ke
ColonelSander's method of replicating this:
Save file with the glitch active: (the files weren't named so I just uploaded all of them. In game, the save is named 00_Inf_Speed)
https://dl.dropboxusercontent.com/u/13839030/o.zip
Looked into some related memory stuffs:
Updated 2017-06-29
Yun 2 Quick Kill
Spamming lightning is way faster than holding
MAW Quick Kill
Very consistent
Make sure you wait until MAW comes to a full stop on the 2nd phase before throwing, and also that you have visibility on all the boxes
MAW Quick Kill 2 (inconsistent but fast)
RTA viable cuz of quick retries when you save as he floats away, but sometimes it seems like you don't deal enough damage initially and killing him like this is impossible on that save. Wouldn't go for this method unless I had to make up time.
Jerec Quick Kill
- Lure Jerec sideways so that he has to round the corner sharply to get into the updraft
- Force jump up, pull sequencers after you're out of Jerecs line of sight so he can't pull them
- Place 7 sequencers right besides the hole (NOT on), quicksave
- Place 1-3 more
4.a (lol) If Jerec is early, load quicksave and try to fall out very quickly in different directions, you can kill him with 7 sequencers. If you have time to place another sequencer or two and quicksave again for quicker retries that might be good too. Don't try this too many times.
- Fall out, don't die
- If it hasn't exploded already (early jerec), quicksave and wait for Jerec to go up
- Wait for explosion. If he doesn't die, load quicksave and change position 7.a If he takes a long time to come up after your quicksave, you can wait a bit and quicksave again so you get faster retries