Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
printz

Doom port that works full screen on 3 monitors?

Recommended Posts

Has anyone made a Doom port that works full screen on 3 monitors, single computer? The left and right monitor should show what is around you at 90 degrees each. I understand this is how id tried with very old Doom (-left and -right command-line parameters), but it required 3 computers in a network. What I want to see here is something strictly local. Is there anything of this sort available for download?

Share this post


Link to post

Well, if you can live with a port "cheating" by using multiple local multiplayer clients, then Chocolate Doom does the trick. It can be done on one computer with no external network, so I guess it qualifies?



But IMO, 3-monitor support without some form of geometric correction for the "drone" screens is nausea-inducing.

Share this post


Link to post

ROFL at the huge FOV causing distortion in the corridors...

Interesting. I hope I can make it run.

With the SDL2 support active, can you now spawn 3 separate windows which you can place on the individual monitors? Can they even be made fullscreen?

I hope it works on Mac...

Share this post


Link to post

Well, under Windows the rules were pretty clear cut: if you configured multiple monitors as several independent desktops (and not a single extended one), then you can maximize individual windows in specific monitors.

Under Linux and other OSes using X-based GUIs and window/desktop managers...YMMV.

Share this post


Link to post
printz said:

With the SDL2 support active, can you now spawn 3 separate windows which you can place on the individual monitors? Can they even be made fullscreen?

Probably, but that's a feature that's likely better suited for Crispy Doom or Doom Retro or what have you.

Share this post


Link to post
printz said:

With the SDL2 support active, can you now spawn 3 separate windows which you can place on the individual monitors? Can they even be made fullscreen?

Yeah, this is something I hope we can make work better with the SDL2 port, since it's now possible with the new API to reference particular monitors. Currently it's kind of a pain.

Share this post


Link to post

PrBoom-Plus supports arbitrary aspect ratio based on your resolution.

I can't speak to Mac but on Windows I set three 1920x1080 displays as one and got 5760x1080. PrBoom-Plus will see and allow me to set that resolution and it all works properly.

Problem is the far left and right views are heavily distorted... can't stand it. So I never play that way anymore.

Share this post


Link to post

Is it worse than that Chocolate Doom video?

Share this post


Link to post

No, the distortion is comparable to modern PC games when run at such a resolution and field of view.

http://imgur.com/a/EsZw8

Notice the flats and the wall textures on the extreme left and right. That gets really disorientating to me in my peripheral vision after a while.

Nvidia seeks to resolve this problem through something called Simultaneous Multi-Projection, but I think it will require titles to support it explicitly.

http://www.tomshardware.com/reviews/nvidia-geforce-gtx-1080-pascal,4572-3.html

Part of the issue is that people rarely set their monitors directly flat, they tend to rotate the left and right monitors since it's more comfortable (myself included). The game has no way to account for this and that only further exacerbates the problem.

Share this post


Link to post

That's just how every other game does ultrawide rendering as well.

Nvidia's multi projection is really essentially just doing Chocolate Doom's approach but at much smaller angles than 90 degrees, then transforming the result a bit.

Share this post


Link to post
MG_Man said:

Nvidia's multi projection is really essentially just doing Chocolate Doom's approach but at much smaller angles than 90 degrees

This. Not sure why people think Chocolate Doom's rendering is distorted since if you had your monitors perpendicular to the primary and you sat in the middle of them (really awkward setup I suppose) it should look fine.

Share this post


Link to post
Blzut3 said:

This. Not sure why people think Chocolate Doom's rendering is distorted since if you had your monitors perpendicular to the primary and you sat in the middle of them (really awkward setup I suppose) it should look fine.


If you looked at one monitor at a time, yes. But Doom's view is distorted to begin with, with noticeable tearing at the left and right edges (this actually is deliberate, performed through a crude trigonometric transformation in the renderer).

So placing 3 such views side by sides would result in an alternation of L/R, L/R, L/R distortions, now adjacent to each other. It would be like sitting in the middle of a glass cube: as long as you looked through a side's center, everything would look normal, but if you tried to view something through the cube's edges as you rotated between one side and the next, it would look distorted.

Share this post


Link to post
Maes said:

If you looked at one monitor at a time, yes. But Doom's view is distorted to begin with, with noticeable tearing at the left and right edges (this actually is deliberate, performed through a crude trigonometric transformation in the renderer).

Tested this myself and it doesn't look to be anywhere near as bad as you suggest. There is a somewhat interesting phenomenon though, from a distance it looks pretty distorted, but when I put my head awkwardly in the middle the distortion goes (mostly) away.

Took some sample pictures: http://maniacsvault.net/loosefiles/chocolate-multihead/

Not perfect, but definitely serviceable if one can somehow meet all the requirements of the setup.

Edit: Added some edited images removing monitor spacing.

Share this post


Link to post

OK Blzut3, then how about the Chocolate Doom video above? Made by the man himself (Linguica), and presumably with the default FOV on each screen. Obviously, Doom's crude fish-eye effect is something so normal (and, actually, pretty mild and limited) that one hardly ever notices it during normal play and normal viewing conditions. Unless one's attention is drawn to it by making a video like the above, using screens with an unusual simultaneous perspective.

Share this post


Link to post

I wouldn't bother rearranging monitors that way though. I'd rather keep them normal, and pretend they're like side mirrors or cameras. Mind you, this is cheating and may make the game easier, especially when it matters (nightmare mode).

Can you record vanilla Doom single-player demos? Or do those "drones" interfere?

Share this post


Link to post

I guess you still can, but using this mode also means entering multiplayer mode (notice the extra pickups at the beginning of MAP01?). You can record demos, yup, but they will be multiplayer ones.

Share this post


Link to post

Maes: Chocolate Doom doesn't have a configurable FOV. The three-screen mode is an obscure vanilla Doom feature that it emulates, it was intended to be used on three separate monitors (and with vanilla, that means three separate computers too).

Share this post


Link to post
chungy said:

and with vanilla, that means three separate computers too


Never heard of multitasking DOS? ;-)

Though I doubt that any of those "multi-DOS" variants could actually run three processor-intensive VGA-mode games, while at the same time keeping a functional, shared network stack. Maybe OS/2?

Share this post


Link to post

Please stop bringing up red herrings. In the way vanilla Doom works, you *need* to run the three processes on unique IPX addresses and on separate physical monitors. Maybe somebody could hack up a variant of FreeDOS to do the first, but I doubt you'll get multi-head running cleanly at all.

Share this post


Link to post

Why three physical monitors? Windows 95 and before that, OS/2, did a pretty good job at virtualizing VGAs in Windows, all thing considered. Ofc, YMMV.

Share this post


Link to post
Maes said:

OK Blzut3, then how about the Chocolate Doom video above?

What's different about the video? Am I less qualified to run Chocolate Doom then Linguica or something? My point is that most of the "fish-eye" effect you think you're seeing is because you're not restricting your physical FOV and the side views are not projected correctly (due to limitations of 2D video). In reality if you have the right setup the distortion is *small enough* that my brain at the very least is able to ignore it. That is: looking through the edge of the cube looks more or less like looking through the edge of a cube. This can be seen in my edited images (removing monitor bezels) where outside of a slight angle change at the seam the screen shots look pretty normal.

Share this post


Link to post

You seem to imply that the fish-eye effect is something only I can see, and that it's not really there. Can't really agree with that. Lin's video showcases it beyond doubt. It may be made more evident in certain spots e.g. blue room, and when things are in motion, vs a dark, grainy static image, but it's always there, just not always so evident. Of course, the extra views are supposed to be at 90 degree angles, and with actual monitors placed at those angles, it might not be as noticeable. They are not meant to be viewed as in the video.

Share this post


Link to post
Maes said:

You seem to imply that the fish-eye effect is something only I can see, and that it's not really there. Can't really agree with that. Lin's video showcases it beyond doubt.

Maes said:

They are not meant to be viewed as in the video.


There's your answer.

Share this post


Link to post
chungy said:

There's your answer.

Yeah, it's basically the same renderer, with the player angle turned left or right 90 degrees on the side views. It's literally the same as if you turned the player 90 degrees left, painted the left view, turned 90 degrees right, took the middle view, etc. So, obviously the monitors should be arranged to match.

It would be interesting to be able to provide the angle on the command line to, say, 45 degrees. That way, you can have a chance at actually seeing all the monitors at once, with them turned properly. Right now, as it stands, it's as if you're inside a car, looking out the side windows, and/or the windshield.

Share this post


Link to post

So, at the end of the day, all id did was implementing a 90s poor man's VR rig ;-) After all, Doom was marketed as "interactive, Virtual Reality adventure", and some token support for external controllers, 3D goggles, multi-screen setups etc. "had" to be included, even if it would be of almost zero practical value to anyone.

What would have made it actually hilarious (or frustrating) to use, is that in a RL scenario, esp. with 90s hardware, the "drones" would not necessarily keep in frame lock/sync with the master: the frame rates could vary depending on what was being "seen" by each of them, easily sending the 3 adjacent monitors off sync with each other. Now THAT would've been nausea inducing, distortions aside ;-) If you thing VSYNC tearing is bad, wait until you see three adjacent screens updating at different rates...

Share this post


Link to post
Maes said:

After all, Doom was marketed as "interactive, Virtual Reality adventure",

I assumed "virtual reality" in that context merely meant that it's an immersive game where you play in the eyes of the hero.

Share this post


Link to post
Maes said:

So, at the end of the day, all id did was implementing a 90s poor man's VR rig ;-) After all, Doom was marketed as "interactive, Virtual Reality adventure", and some token support for external controllers, 3D goggles, multi-screen setups etc. "had" to be included, even if it would be of almost zero practical value to anyone.

What would have made it actually hilarious (or frustrating) to use, is that in a RL scenario, esp. with 90s hardware, the "drones" would not necessarily keep in frame lock/sync with the master: the frame rates could vary depending on what was being "seen" by each of them, easily sending the 3 adjacent monitors off sync with each other. Now THAT would've been nausea inducing, distortions aside ;-) If you thing VSYNC tearing is bad, wait until you see three adjacent screens updating at different rates...

They are network nodes, so all PCs are in sync, by the nature of how the net code works (unless I'm really missing something). In fact, each node, including the "master" reads it's local tics from a network packet vs. locally. I suppose this was to eliminate any possible difference between local and network. And, it induces a slight delay, just like the "drones" would experience. It's as closely synced as reasonably possible.

Of course, if you were really setting it up proper, you'd use nearly identical equipment for all 3 views. And, again, when set up "properly" (monitors angled 90 degrees apart, with the viewer in the middle), it's nearly impossible to see more than 2 screens at any given time. Sure, maybe a bit of peripheral, but then, you'd be focused on the center screen.

As far as the distortion goes, imagine a setup with 9 screens, one in front, 2 on the sides. 6 at angles inbetween. The *width* of the monitors comes into play here. You'd want to create a half-circle with them, totalling, say, 180 degrees. From center to left, you could do 0, 22, 44, 66, and 88 degrees, and do the same on the right.

Now, take away all but the original 3 monitors, and notice how far apart they are. That's the place where there's minimal distortion. My point is, if you push all 3 monitors directly together, and put your face inbetween them, there's gonna be some distortion. Spreading them out seems to make sense (I haven't done the math, but it seems logical to me).

What would be *really* cool is to project the scene onto a 180-degree curved screen in front of you, compensating for the reverse birds eye distortion by multiplying with the cosine of the angle. If done just right, the screen would "disappear" in your mind, and you'd be immersed. And, this is slightly less cool than something like the Oculus Rift, which gives you a real 3rd dimension by feeding each eye a view generated by strafing the player view left, then right, the distance equivalent to the real-life distance between your eyes. That, combined with stereo sound, is nothing short of incredible.

Share this post


Link to post
kb1 said:

They are network nodes, so all PCs are in sync, by the nature of how the net code works (unless I'm really missing something).


There are two kinds of "sync" to consider here: gametic sync (that indeed, may be as "lockstepped" as the network code and latencies allow) and rendering sync. AFAIK, there's no requirement to keep the display rendering in absolute sync with the game world's status, and in fact, if not enough time is available to render the screen after updating the game's world, rendering of certain frames may be skipped.

If all clients in a multiplayer game were required to be render-synced and render every frame, then there would be a global multiplayer game slowdown (each player would see his effective gametic rate slooooow doooown to accomodate for the slowest node on the network). Of course, no modern multi-player game does that: even if there are no network latency problems to speak of, if you have a slow PC and you simply can't render things as smoothly as other players, it's your problem and yours alone.

So, hypothetically speaking, in a classic Vanilla Doom scenario, if I load e.g. NUTS.WAD on a "master" that has enough CPU horsepower and RAM to handle it (e.g. a Pentium III-class PC) and use two lowly 486s as "drones" (assuming they can at least load it RAM-wise), what do you think would happen to the drones? And what to the master? That's a scenario of extreme processing power disparity, of course, but even smaller disparities would be enough to create noticeable discrepancies in the drones' views.

Share this post


Link to post

True. So...don't do that! I mean, if you're serious about creating an interesting, smooth multi-screen setup, yes, you need boxes that are up to the task. Preferrably identical PCs, monitors, etc. With the source, it's easy enough to lock the renderer to the receipt of all the node's packets, which probably is a good idea. Then again, the goal of a fast frame rate is that the human eye is supposed to not be able to distinguish individual frames. For me, though, 35 fps is way too slow.

There's an interesting effect I have noticed: When watching a movie, I rarely am aware of individual frames, which might be as slow as 24 fps. But, when watching a video game, frames are detectable, for me, well above 60 fps, especially when the player is turning. To investigate this phenomenon, I checked out individual frames of movies during high-speed action. The difference? In the movie, all the high-speed action is blurred. Modern games have started trying to emulate this blur. While counter-intuitive, I think the blur actually *improves* the quality of high-speed, high-action rendering, as you can no longer distinguish between individual frames, so it *looks* like a higher frame rate.

I might try some blurred rendering, though it'd be extremely slow to do with software rendering. Hardware-renderer port authors should give it a shot.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×