Editor, Skilled player (1536)
Joined: 7/9/2010
Posts: 1319
Here's a WIP of E1M1 and E1M2: User movie #23321172006617535 Nothing interesting, so don't expect anything entertaining. Link to video Link to video Sorry for the camera shaking, but there's a trick with it to built up speed. Rotating and pressing the c-left or c-right on the right angle will change the speed direction and value. In the end of E1M2 a damage boost can probably be added.
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
YaLTeR
He/Him
Joined: 12/2/2011
Posts: 129
Location: Moscow, Russia
I'm assuming the movement / strafing works close to how it does in the PC version?
Joined: 7/13/2012
Posts: 25
[changed my mind]
Editor, Skilled player (1536)
Joined: 7/9/2010
Posts: 1319
Yeah, that trick makes the run look not smooth. My primary interest is going for time without speed/entertainment trade-offs though. I don't know if there's differences between n64 and pc versions... Also this is a low priority project right now, if people want to co-author, it would be nice.
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
YaLTeR
He/Him
Joined: 12/2/2011
Posts: 129
Location: Moscow, Russia
Strafing makes a huge difference though, at least when the game is running at a decent FPS.
Editor, Skilled player (1536)
Joined: 7/9/2010
Posts: 1319
So after a long time I started e1-m3, but I'm stuck doing the grenade jump. How does it work, if it works in the n64 port at all? Here's a WIP up to it: User movie #31633952658470542 Edit: something better, but still not enough: User movie #31661858610797929 I guess it's not possible then...
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
Editor, Skilled player (1536)
Joined: 7/9/2010
Posts: 1319
Does anyone know how to find the map collision layout for this game? Also a list of all objects loaded in the level? I know where the objects are in memory, but I haven't found any structure that allowed me to cycle each loaded object. I used the documentation for the PC version on GitHub for help, but wasn't successful. But I have found some stuff in the player struct, here, uses mostly the same terminology as in the documentation for the PC version. I have more stuff at hand, but those aren't of much use. And is there a way to automate strafing? I know for the PC version such thing exists, but I don't know how it works.
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
YaLTeR
He/Him
Joined: 12/2/2011
Posts: 129
Location: Moscow, Russia
As far as I know, in the GoldSource engine (based on Quake and very similar in these kinds of aspects I imagine) the maps have collision information compiled in in form usable by a line tracing algorithm. There are three collision models for a map for three different "hull sizes" - point, ducking player and standing player. Unfortunately the format it's stored in, while being really good for line tracing, isn't visualizable or even convertible back to viewable forms. You can also encounter map compile bugs (having collision in the air in this particular spot). There is an array of entities over here, in a global variable. Now on to the strafing. It's not very hard to write the player movement code as formulas and derive the angles for optimal strafing from them. We did it a bunch of times for GoldSource, this should be applicable to Quake for the most part except some changes in the order of execution, and maybe friction functions. Here's the maths if you're curious. The actual movement code is around this file. The thing about the PC version is that after calculating the perfect angle you can just set the player angle. As far as I understand on the console you can only rotate the camera a fixed angle difference per frame? Not sure how this would work for that, and it's likely the solution would be different under this constraint (for example strafing before the optimal angle is reached because doing so will waste the speed, but save the camera rotation frames so it might pay off).
Dimon12321
He/Him
Editor, Reviewer, Experienced player (596)
Joined: 4/5/2014
Posts: 1222
Location: Romania
YaLTeR wrote:
As far as I understand on the console you can only rotate the camera a fixed angle difference per frame?
With the help of Virtual Pads (TAS Input analogue) in Bizhawk, it's possible to rotate the camera on a specific angle, depending on stick coordinates. It looks like that. However, getting a perfect angle for every turn will be pain in the ass without the automatization.
TASing is like making a film: only the best takes are shown in the final movie.
Editor, Skilled player (1536)
Joined: 7/9/2010
Posts: 1319
I use TAStudio, it's only idiotically pressing up or down arrow on keyboard, not really hard, but still annoying.
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
Joined: 1/23/2007
Posts: 77
Location: Montreal
Why you didn't boost with the barrel in E1M1 is it because of joystick sensitivity ?
Editor, Skilled player (1536)
Joined: 7/9/2010
Posts: 1319
Yes, it's not possible to rotate it that quickly without losing speed. And then there're enemies blocking the way too.
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
Editor, Skilled player (1536)
Joined: 7/9/2010
Posts: 1319
YaLTeR wrote:
There is an array of entities over here, in a global variable.
There's some list with loaded objects at $08A8F3 with positions, angles and model name, but no way to get to the actual objects struct with all properties.
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch