Vanilla Doom uses all kinds of constructs to go from one height to another, such as stairs, lifts, etc. And on some occasion a ladder is simulated with a set of very narrow steps. But that does not look very convincingly like a ladder.
Enter GZDoom with its ability to render 3d sectors. Constructing the ladder itself is quite straightforward. Where it becomes interesting is in the implementation of the climbing action. Several mappers came up with options like a variation of the action special ThrustThingZ, or swimmable sector, or using SetPlayerProperty. While these approaches do make the player "climb" the ladder, they do feel somewhat less believable of climbing a ladder.
This approach uses 3D sectors for offsetting the rungs of the ladder, akin to actual steps.
As one can see, the lowest rung is closest to the front of the ladder and consecutive rungs are offset towards the back. Now, when ascending the ladder it gives the impression of climbing upwards and also being able to stop midways.
One drawback is that the ladder must be wider than the player's bounding box, ca 33 mu
or the player will not be able to climb the ladder.
This approach uses 2 sets of 3D floors, one set for rungs placed inline
and another set for invisible 3D floors to facilitate the climbing action.
The advantage of this method is that the ladder can be quite small and narrow, for example
When constructing the step sectors in front of the ladder, you have to pay attention to the opacity of the linedef textures,
to make them invisible.
Example PWAD for Ladder 2