Threads
Skåne, SwedenO_Circles3 years ago

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

Skåne, SwedenO_Circles3 years ago

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 :)

Skåne, SwedenO_Circles4 years ago

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.

http://www.twitch.tv/mrbrax

Skåne, SwedenO_Circles5 years ago

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!

Skåne, SwedenO_Circles5 years ago

#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.

Skåne, SwedenO_Circles5 years ago

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

Skåne, SwedenO_Circles6 years ago

#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

Skåne, SwedenO_Circles6 years ago

[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]

Skåne, SwedenO_Circles7 years ago

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:

http://pastebin.com/QFvwSPcY

Skåne, SwedenO_Circles7 years ago

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

  1. Lure Jerec sideways so that he has to round the corner sharply to get into the updraft
  2. Force jump up, pull sequencers after you're out of Jerecs line of sight so he can't pull them
  3. Place 7 sequencers right besides the hole (NOT on), quicksave
  4. 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.

  1. Fall out, don't die
  2. If it hasn't exploded already (early jerec), quicksave and wait for Jerec to go up
  3. 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
About O_Circles
Joined
7 years ago
Online
2 days ago
Runs
196
Games run
Duke Nukem 3D
Duke Nukem 3D
Last run 2 years ago
71
Runs
Katana ZERO
Katana ZERO
Last run 4 years ago
29
Runs
Star Wars Jedi Knight: Dark Forces II
20
Runs
Star Wars: Dark Forces
Star Wars: Dark Forces
Last run 5 years ago
15
Runs
Blood
Blood
Last run 6 years ago
7
Runs
Hexen: Beyond Heretic
Hexen: Beyond Heretic
Last run 3 years ago
7
Runs
Redneck Rampage
Redneck Rampage
Last run 6 years ago
5
Runs
Games followed
Star Wars Jedi Knight: Mysteries of the Sith
274
visits
Star Wars: Dark Forces
Star Wars: Dark Forces
Last visit 1 year ago
687
visits
Dink Smallwood
Dink Smallwood
Last visit 1 year ago
93
visits
Redneck Rampage
Redneck Rampage
Last visit 2 years ago
59
visits
Bygg bilar med Mulle Meck
Bygg bilar med Mulle Meck
Last visit 1 year ago
576
visits
RONIN
RONIN
Last visit 3 years ago
154
visits
Croc 2
Croc 2
Last visit 1 year ago
12
visits
Ion Fury
Ion Fury
Last visit 2 years ago
185
visits
Games moderated
Duke Nukem 3D
Duke Nukem 3D
Last action 29 days ago
67
actions
Duke Nukem 3D: 20th Anniversary World Tour
52
actions
Star Wars: Dark Forces
Star Wars: Dark Forces
Last action 1 year ago
29
actions
Bygg bilar med Mulle Meck
Bygg bilar med Mulle Meck
Last action 1 year ago
21
actions
Star Wars Jedi Knight: Dark Forces II
15
actions
RONIN
RONIN
Last action 3 years ago
10
actions
Hexen: Beyond Heretic
Hexen: Beyond Heretic
Last action 7 months ago
7
actions
Ion Fury
Ion Fury
Last action 3 years ago
7
actions