forum.stunts.hu, 2025-12-04 | Main page
---------------------------------------------------------------------------------------

Saved from web.archive.org, with Lynx.
---------------------------------------------------------------------------------------
   #help contents search Stunts Forum - RSS Stunts Forum - Atom next index

     * Welcome to Stunts Forum.
     * Log in
     * Sign up

   [English________] Go
   ____________________  [This topic__] Search

Stunts Forum

   Simple Machines Forum
   December 04, 2025, 09:06:42 PM

News:

   Herr Otto Partz says you're all nothing but pipsqueaks!
   Main Menu
   Main Menu
     * Home
     * Search

     * Stunts Forum
     * |> Stunts - the Game
     * |> Stunts Reverse Engineering
     * |> Bridging ReplDump + R5E for cool multiplayer replays of (live)
       races

Bridging ReplDump + R5E for cool multiplayer replays of (live) races

   Started by Cas, March 15, 2023, 07:15:24 AM
   Previous topic - Next topic
   Print
   Go Down Pages1 2
   User actions

Cas

     *
     * * * * * * *
     * Drinks Stunts
     * Posts: 2,522
     * Think different. That's OK... as long as you think
     *
         1. ICQ - 242187408
         2.
     *
         1.
     * Location: Argentina
     * Logged

   Bridging ReplDump + R5E for cool multiplayer replays of (live) races
   March 15, 2023, 07:15:24 AM
   Introduction
     >:( I'm very upset because I lost everything I had written when I was
   trying to upload the image file by dragging it. Recommendation: if
   you're going to include an image, do it first, then type!  Otherwise,
   just do it by "browse" button. Avoid dragging.
   Now to the point. Feel free to skip sections that you're not interested
   in. I guess some of you will want to know the whole thing, but most
   will want to skip the part of the coordinates and angles, so I've
   marked those as "hardcore".
   What this is about
   I've been working on a project to create a bridge between ReplDump,
   which extracts detailed information from replays, and R5E, my graphics
   engine. This idea came from Daniel3D and Duplode has been helping me by
   providing ReplDump source code and explaining the game structures. I'm
   thinking now that the possibilities here are so great that this
   definitely deserves a thread.
   My work today
   So... this evening I began by looking at my R5E code and realising I
   haven't commented it well enough. After an hour or so of examination, I
   found where to plug my new code. I created a new routine to allow for
   loading of car shapes. Until now, the engine was working exclusively
   with track element shapes. The difference is minor, but a special
   routine was necessary. I tested and it works well. It now renders cars
   at any desired paint job. No wheels for now, though.
   You'll notice that some track elements, such as the tunnel, result in
   glitches. This is because, while I'm using a painter's algorithm, same
   as Stunts, it's impossible to guess the exact details of another such
   algorithm and some of the shapes rely on these details. This can be
   solved by switching to Z-buffering or by recreating some of the track
   elements in a way that won't produce the glitches. But let's leave that
   for later.
   Beginning to explore the output of ReplDump (hardcore)
   With this working, I started to examine the source Duplode gave me,
   with the game memory structure and creating test replays to carefully
   analyse the binary that comes out of ReplDump. I quickly found where
   the current car coordinates are. However, there are two sets of them,
   very similar, but not quite the same. Don't know why that is, but
   taking the first set should work. Right after that, comes the rotation
   values and there's a funny comment in the source code stating that this
   is a source of confusion. After some work, I found out why it appeared
   confusing.
   Explanation of the angles used inside Stunts (hardcore)
   Stunts works with Euler angles in the same order as my engine, which is
   the most logical thing to do in a cars game. But it has some curious
   quadrant representation. First of all, azimuth, that is, the rotational
   dimension that's change with yaw, always takes precedence. This value
   is always zero or positive and goes from 0 to 1023 on a full turn. It
   grows counter-clockwise. Now comes the interesting part.
   Banking/roll is the last angle and 0 is what you get when the car is
   standing. If you roll to your right, the car will bank left and this
   value will get negative until you're upside down at -512. You'd think
   that it'd now wrap around, but no, it continues to grow negatively for
   another quadrant and when it gets to -768, it becomes +256, which means
   90 degrees of banking right.
   I've saved the middle one for the end of the explanation because it's
   what I believe caused most of the confusion when this was first
   inspected. Say you're approaching a loop. Your pitch is 0 because
   you're standing on the ground, but then you begin to climb and pitch
   grows positively. When you're around 67 to 70, you're climbing at a
   typical ramp angle, which I think is 30 degrees. When you get to 90
   degrees, this value is +256. What happens past this seems crazy, but is
   very simple if you think about it. As the car continues through the
   loop, it's not really climbing anymore. It's pitch is now decreasing,
   but its yaw and roll have suddenly both been inverted. This has to
   happen because azimuth is the main angle. So now pitch keeps going down
   and it becomes zero again when you're upside down. As you keep on
   moving, it becomes negative because now you're going downhill, even
   though inverted. Then you reach the point when you're looking straight
   down and roll and yaw suddenly get inverted again and pitch is still
   negative, but begins to grow until it reaches zero again at the end of
   the loop.
   What we will be able to do with this
   Being able to connect these two tools means a lot. I means, for
   example, that we will be able to take a set of replays run on the same
   track and render a video of all cars of different players together,
   running on the track in high resolution. It also means we can place a
   camera anywhere we want on a track and create a replay from a
   perspective that wouldn't be possible natively in Stunts. Needless to
   say, we'll be able to generate pictures combining cars and track
   elements in hi-res very quickly. It also is a first step in doing
   something useful with the engine for the first time!
   Questions or suggestions?  Shoot. Also, I'll keep you posted on
   whatever news come up!
   *  cars.png
   20.54 KB, 1023x678
   viewed 37 times
   Earth is my country. Science is my religion.
     __________________________________________________________________

Daniel3D

     *
     * * * * * *
     * Inline 16V
     * Posts: 2,235
     * so many ideas....
     *
         1. danieljong@outlook.com
         2.
     *
         1.
     * Location: Gaia Alpha Sector E
     * Logged

   Re: Bridging ReplDump + R5E for cool multiplayer replays of (live)
   races
   #1
   March 15, 2023, 01:17:07 PM Last Edit: March 15, 2023, 01:25:09 PM by
   Daniel3D
   My mind functions a bit differently from most people apparently. Even
   now, while I have medication to dampen the effects, I still have more
   plans, ideas and whishes than I can handle.
   The above story started about 40 hours earlier with the following
   message to duplode..

     Quoteok,
     brain fart.,.
     i still had the lambdacube-stunts page open and rememerd there was
     an youtube video of it.,
     then i noticed that the lambdacube-stunts is only yhe graphic engine
     and they added bullit physics to it to make it drivable...
     so i was wondering......
     is it possible to process cartography data through to generate high
     res stunts footage..
     (i guess the answer is yes but it is a lot of work to make it so...)
     in the same line, could we use CAS his graphic engine for it?
     so not for actual racing, but to process replays through,

   That snowballed quickly after that.    8)
   Edison once said,
   "I have not failed 10,000 times,
   I've successfully found 10,000 ways that will not work."
   ---------
   Currently running over 20 separate instances of Stunts
   ---------
   Check out the STUNTS resources on my Mega (globe icon)
     __________________________________________________________________

Overdrijf

     *
     * * * * *
     * Highway Horror
     * Posts: 1,403
     * Professional idiot
     *
     * Logged

   Re: Bridging ReplDump + R5E for cool multiplayer replays of (live)
   races
   #2
   March 15, 2023, 03:02:10 PM
   That looks really cool. The draw distance, the detail! The Melange
   flying without wheels! ;)
   It almost makes me want to start remaking track 3D models with a higher
   polygon count. Almost...
     __________________________________________________________________

Cas

     *
     * * * * * * *
     * Drinks Stunts
     * Posts: 2,522
     * Think different. That's OK... as long as you think
     *
         1. ICQ - 242187408
         2.
     *
         1.
     * Location: Argentina
     * Logged

   Re: Bridging ReplDump + R5E for cool multiplayer replays of (live)
   races
   #3
   March 15, 2023, 07:59:16 PM
     8) Drawing wheels has been a pain and I haven't managed to find a
   good way to achieve it yet. Removing the artifacts on some track
   elements will be easier. One thing I know how to do, but probably will
   leave for later too because it's kind of annoying to do is having
   animation like windmills and Joe's.
   It was great that Daniel came up with his. I hadn't thought of this
   possibility and it's really very feasible.
   Earth is my country. Science is my religion.
     __________________________________________________________________

Daniel3D

     *
     * * * * * *
     * Inline 16V
     * Posts: 2,235
     * so many ideas....
     *
         1. danieljong@outlook.com
         2.
     *
         1.
     * Location: Gaia Alpha Sector E
     * Logged

   Re: Bridging ReplDump + R5E for cool multiplayer replays of (live)
   races
   #4
   March 15, 2023, 09:19:08 PM
   There are several on here that are capable of adapting a model.
   Edison once said,
   "I have not failed 10,000 times,
   I've successfully found 10,000 ways that will not work."
   ---------
   Currently running over 20 separate instances of Stunts
   ---------
   Check out the STUNTS resources on my Mega (globe icon)
     __________________________________________________________________

Cas

     *
     * * * * * * *
     * Drinks Stunts
     * Posts: 2,522
     * Think different. That's OK... as long as you think
     *
         1. ICQ - 242187408
         2.
     *
         1.
     * Location: Argentina
     * Logged

   Re: Bridging ReplDump + R5E for cool multiplayer replays of (live)
   races
   #5
   March 16, 2023, 01:52:37 AM
   Thanks. I'll try to first get this working and then, we'll tune the
   fine details. I guess some adaptations will make it look much better
   then. One thing I specially dislike on the current look is how the
   black lines inside tunnels can be seen through the walls.
   Earth is my country. Science is my religion.
     __________________________________________________________________

Overdrijf

     *
     * * * * *
     * Highway Horror
     * Posts: 1,403
     * Professional idiot
     *
     * Logged

   Re: Bridging ReplDump + R5E for cool multiplayer replays of (live)
   races
   #6
   March 16, 2023, 08:08:39 AM

     Quote from: Cas on March 16, 2023, 01:52:37 AMOne thing I specially
     dislike on the current look is how the black lines inside tunnels
     can be seen through the walls.

   Also there's no roof on the front one.
   Might be something with the Z-bias or with polygons set to 2 sided. Or
   maybe something with the rendering of lines (which would be harder to
   fix, but we could try replacing the lines with thin polygons
   specifically for the rendering model set.)
   I'll have a look at the tunnel model, see if I can find something.
     __________________________________________________________________

Daniel3D

     *
     * * * * * *
     * Inline 16V
     * Posts: 2,235
     * so many ideas....
     *
         1. danieljong@outlook.com
         2.
     *
         1.
     * Location: Gaia Alpha Sector E
     * Logged

   Re: Bridging ReplDump + R5E for cool multiplayer replays of (live)
   races
   #7
   March 16, 2023, 09:54:06 AM
   It's not for in game use, so the lines can be removed completely.
   Same with the barn. We can remove the lines and use white polygon
   strips. Looks better for video.
   Edison once said,
   "I have not failed 10,000 times,
   I've successfully found 10,000 ways that will not work."
   ---------
   Currently running over 20 separate instances of Stunts
   ---------
   Check out the STUNTS resources on my Mega (globe icon)
     __________________________________________________________________

Daniel3D

     *
     * * * * * *
     * Inline 16V
     * Posts: 2,235
     * so many ideas....
     *
         1. danieljong@outlook.com
         2.
     *
         1.
     * Location: Gaia Alpha Sector E
     * Logged

   Re: Bridging ReplDump + R5E for cool multiplayer replays of (live)
   races
   #8
   March 16, 2023, 10:31:51 AM
   CAS, what would be the simplest way to fix it?
   In other words, what is practically causing it. Explained in a few
   sentences  ;)
   I think that it is the lines in general, but I'm not sure.
   Edison once said,
   "I have not failed 10,000 times,
   I've successfully found 10,000 ways that will not work."
   ---------
   Currently running over 20 separate instances of Stunts
   ---------
   Check out the STUNTS resources on my Mega (globe icon)
     __________________________________________________________________

Cas

     *
     * * * * * * *
     * Drinks Stunts
     * Posts: 2,522
     * Think different. That's OK... as long as you think
     *
         1. ICQ - 242187408
         2.
     *
         1.
     * Location: Argentina
     * Logged

   Re: Bridging ReplDump + R5E for cool multiplayer replays of (live)
   races
   #9
   March 16, 2023, 11:46:07 PM
   Alright. I'll try to explain. Some details are not that fresh in my
   head because it's been several months since I was last working on the
   core of the engine... maybe a couple of years, but it goes more or less
   like this:
   To properly sort and draw, Stunts engine has several tools:
   2-sided/1-sided polygons, Z-bias, culling flags and sorting polygons by
   distance. My engine does not have culling flags, but it supports 2 bits
   of Z-bias instead of 1. Polygons are first converted to triangles and
   then sorted.
   The idea in both cases is the same, what's called a Painter's
   Algorithm. Polygons that are further away are drawn first. The problem
   with this is that two polygons may be overlapping in terms of distance.
   If you take the nearest point or the farthest point or the middle point
   in a polygon and measure the distance to the camera, then you sort and
   you will not get the same order, so even though all of them make sense,
   not knowing which is being use by an engine will mean that some 3D
   objects will look somewhat different on different engines. Besides,
   because I split polygons into triangles before sorting, there's a
   chance that Stunts doesn't. It sure does split to draw, but maybe
   distance is taken before that. So that adds another possible
   difference.
   Another problem happens when you have two polygons that are one
   directly on top of another. This is what the Z-bias is for. In Stunts,
   you have only two layers. My engine allows for four layers, so you can
   have a polygon with another on top and another on top of that one and
   so on, four of them. You need to tell the engine which one is on top
   and that gives priority. To me, it was clear what this meant, but when
   I apply what was obvious to me, it looks like Stunts uses it
   differently.
   It is possible to designe track elements in a way that they are
   compatible with any Painter's algorithm. It's more restrictive, but
   it's the "safe" way. I suggest not making any polygon 2-sided unless
   this is really needed and make all polygons strictly convex. If you're
   going to draw a concave polygon, use two polygons. This guarantees
   (almost) that it will look good.
   What I can do is give my engine a configuration file that allows you to
   add an object that you create so that you can test with the engine to
   see how it looks in it.
   Earth is my country. Science is my religion.
     __________________________________________________________________

Cas

     *
     * * * * * * *
     * Drinks Stunts
     * Posts: 2,522
     * Think different. That's OK... as long as you think
     *
         1. ICQ - 242187408
         2.
     *
         1.
     * Location: Argentina
     * Logged

   Re: Bridging ReplDump + R5E for cool multiplayer replays of (live)
   races
   #10
   March 17, 2023, 04:31:49 AM
   An update. I recorded a replay on Napalm and dumped the output from it.
   Now I'm reading it and scaling the output into my engine. At this
   point, the engine can only rotate objects around the vertical axis
   because this is sufficient for track elements. I added the car as an
   extra track object, so it can't rotate in the other two ways, but
   that's easy to solve.
   For now, I'm trying to calibrate the coordinates. Taking them from the
   dumped information and just scaling them, I can't find a good scale.
   The best number I found so far is 33800. What I mean is, I grab the X,
   Y and Z from the dump and I have to divide those by 33800 to more or
   less get the coordinates in my engine's system (which is 1 = 1 tile).
   Using this divider, I can see the little Melange racing through the
   track and it clearly follows it, but there's some offset sometimes.
   Besides, 33800 is a really ugly number. I expected something like
   32768, but no. So my conclusion is there must be some offset, some
   absolute value I have to add to the linear equation. In other words,
   (0, 0) in Stunts does not mean the point at the corner of the track
   field. At least, no when taken relative to the centre of the car. Any
   ideas?
   Rotation around the vertical is perfect. I converted it to radians and
   it works just fine. It looks like I'm going to have no problem with
   that.
   I'm having some extra difficulty, but it has to do with the design of
   my engine so far, which is only prepared for track elements. Sometimes,
   the car is drawn before the road it's on. I can fix this by forcing all
   cars be drawn after all track elements. This will have the side effect
   of the car being sometimes visible through track elements. Where have I
   seen this before?
   Anyway, the Painter's Algorithm sucks. It appears simpler and faster,
   but you have to do lots of things to make it look decent because deep
   inside, it really never is. It is very tempting to just completely
   switch to a Z-buffer-based engine core, but I guess that's for later.
   *  carontrack.png
   18.78 KB, 1021x699
   viewed 23 times
   Earth is my country. Science is my religion.
     __________________________________________________________________

Daniel3D

     *
     * * * * * *
     * Inline 16V
     * Posts: 2,235
     * so many ideas....
     *
         1. danieljong@outlook.com
         2.
     *
         1.
     * Location: Gaia Alpha Sector E
     * Logged

   Re: Bridging ReplDump + R5E for cool multiplayer replays of (live)
   races
   #11
   March 17, 2023, 07:54:19 AM

     QuoteIt is possible to designe track elements in a way that they are
     compatible with any Painter's algorithm. It's more restrictive, but
     it's the "safe" way. I suggest not making any polygon 2-sided unless
     this is really needed and make all polygons strictly convex. If
     you're going to draw a concave polygon, use two polygons. This
     guarantees (almost) that it will look good

   You mean, make all polygons triangles?
   Edison once said,
   "I have not failed 10,000 times,
   I've successfully found 10,000 ways that will not work."
   ---------
   Currently running over 20 separate instances of Stunts
   ---------
   Check out the STUNTS resources on my Mega (globe icon)
     __________________________________________________________________

Duplode

     *
     * * * * * * *
     * Eats Stunts
     * Posts: 5,488
     * the wrath of the devil / was also given him by God
     *
         1.
     *
         1.
     * Location: Sao Paulo, Brazil
     * Logged

   Re: Bridging ReplDump + R5E for cool multiplayer replays of (live)
   races
   #12
   March 17, 2023, 11:52:39 AM

     Quote from: Cas on March 17, 2023, 04:31:49 AMFor now, I'm trying to
     calibrate the coordinates. Taking them from the dumped information
     and just scaling them, I can't find a good scale.

   The conversion factor between tiles and carstate coordinates is exactly
   65536 (2^16), with no offset. That is what I use in Cartography, and it
   works perfectly. Any divergence from that probably originates from how
   track graphics are scaled in the engine -- besides the extra factor of
   two there seems to be somewhere, one thing I can think of right now is
   how 3D shapes for track elements are usually a little larger than a
   tile, which is exactly 1024 x 1024 in Stressed units.
     __________________________________________________________________

Cas

     *
     * * * * * * *
     * Drinks Stunts
     * Posts: 2,522
     * Think different. That's OK... as long as you think
     *
         1. ICQ - 242187408
         2.
     *
         1.
     * Location: Argentina
     * Logged

   Re: Bridging ReplDump + R5E for cool multiplayer replays of (live)
   races
   #13
   March 17, 2023, 06:13:24 PM
   Thanks. Yesterday night, after had posted, I actually found it. My
   engine wasn't using 1 = 1 tile, but 2 = 1 tile. This is because I
   wanted the "radius" to be 1, that is, so that track elements that fit
   in one tile would have a max radius of 1. I had forgotten about this.
   So I made a little track to measure more precisely and recorded a
   replay in which I was driving on the centre line. Then I assumed 32768,
   which was the closest power of two (this to 2 is like 65536 to 1, so
   it's the same) and I got an offset of -1. I'm pretty sure now this has
   to do with how I loaded the elements on top of the track, so with this,
   problem solved.
   Now I'm having another issue, this time, with rotation. I look at the
   values and yes, the angles are correct, but when I rotate the car,
   obviously I'm doing something wrong because it looks super weird in
   some combinations. I tried inverting the order of the angles because
   it's being done prior to camera rotation, but that doesn't seem to be
   the problem. I'll keep on researching.
   Earth is my country. Science is my religion.
     __________________________________________________________________

Overdrijf

     *
     * * * * *
     * Highway Horror
     * Posts: 1,403
     * Professional idiot
     *
     * Logged

   Re: Bridging ReplDump + R5E for cool multiplayer replays of (live)
   races
   #14
   March 17, 2023, 08:01:58 PM Last Edit: March 18, 2023, 08:27:58 PM by
   Overdrijf

     Quote from: Daniel3D on March 17, 2023, 07:54:19 AM

     QuoteIt is possible to designe track elements in a way that they are
     compatible with any Painter's algorithm. It's more restrictive, but
     it's the "safe" way. I suggest not making any polygon 2-sided unless
     this is really needed and make all polygons strictly convex. If
     you're going to draw a concave polygon, use two polygons. This
     guarantees (almost) that it will look good

     You mean, make all polygons triangles?

   Or at least make all polygons in such a way that they will still look
   the same if the program automatically splits them into triangles.
   This is pretty good car design advice in general. If doing triangles is
   too much work you can use rectangles, but make sure all of them are
   actually flat planes, there's no two ways about interpreting them. In
   other words: if you would replace the rectangle by two triangles split
   along the line from point a to point c the resulting shape would be
   exactly the same as if you used triangles split along the line from
   point b to point d. Concave shapes, think Pacman, are also a "bad"
   practice. If the program tries to automatically assign triangles to
   replace that shape the mouth is probably going to be fully or partially
   filled in.
     __________________________________________________________________

   Print
   Go Up Pages1 2
   User actions
     * Stunts Forum
     * |> Stunts - the Game
     * |> Stunts Reverse Engineering
     * |> Bridging ReplDump + R5E for cool multiplayer replays of (live)
       races

   User actions
   Print

     * Help | Terms and Rules | Go Up ^
     * SMF 2.1.6 (c) 2025, Simple Machines
---------------------------------------------------------------------------------------
Saved from web.archive.org, with Lynx.
 
Main page
 
© 2022 Matei. No cookies®