Matrix Operator's Console

Similar projects worth following
This will be a replica of the operator console from the movie The Matrix. It will be both a physical replica, meaning that it looks very similar, and also have a game to play in which you as the operator have to help someone escape from the matrix.

As much as possible, we're going to try to build this out of crap we have laying around.  We have loads of old/crappy/partially broken LCD monitors which can be scavenged into an array, and we've got enough video cards and slots to run at least 10 screens from a single motherboard.

The software side will be fairly intensive as well, the game will probably be a single XWindows program in C, called from a set of scripts which configure everything.  The game will feature the user as an "operator," who can direct the human inside the matrix to achieve his goal and escape the agents.  The operator will have to use this massive array of screens to acquire the necessary data so he can instruct the human on the inside correctly.  The human inside the matrix can either be a human, or, ironically, an AI with speech recognition.  I plan on releasing the code under the GPL, though some of the scripts may not be all that portable.

  • 3 × 17 inch LCD Screens ViewSonic
  • 3 × 15 inch LCD Screens 2xToshiba, 1xIBM with added touchscreen
  • 6 × 15 inch LCD touchscreens ELO 1525, ELO 1529
  • 1 × Computer system Slackware 12.2, at least 3 PCIE X16 slots
  • 3 × GPUs ATI Firepro 2450

  • General Update

    kittan04/27/2014 at 14:29 0 comments

    Looks like the software end of things is a fair bit more complex, even to get the basic framework down, than we at first assumed. That's also made more significant by that neither Novak nor I have done any graphics programming before. I volunteered for some support code once the hardware was done, but he's been busy advancing his OpenGL knowledge from "literally nothing" to "a functional multiplayer game" as fast as possible - which isn't fast enough for the project deadline.
    Maybe we should have just built a RPi-powered 3D printer that assembles pop culture references by sticking Arduinos together.

  • Hardware Complete

    kittan04/24/2014 at 03:19 0 comments

    04.23.2014 (Kittan)
    The frame has been finished and bolted to a foot plank. All screens are mounted in final position, all cables (including serial and USB lines for touch interfaces) are run and secured. The whole thing has been shifted out of workspace into what is likely its more-or-less permanent home against the back wall of the shop. Basically everything left is software - drivers for RS232 converters and all touch interfaces, maybe even the wireless card (not necessary but handy), and then start pushing the game code over to it. I'm not sure how much of that we're going to have operational in the next 5 days but we'll do our best. If nothing else, the hardware so far is pretty dern sexy.

  • Hardware 95%

    kittan04/23/2014 at 04:26 0 comments

    04.22.2014 (Kittan)
    Sometime I still need to redo the base of the frame, and run the USB/serial lines for all the touch interfaces and optical drive, but that's pretty much it. All screens are mounted, as well as the keyboard, optical and the control box. All power lines are run - oh yeah, I still need the signal line from the ATX to the 12V screen power. That's fairly trivial though.
    Novak was out sick most of the day. He did have time to go over the map data parser and sample map files he wrote though, so I can get started on the city generator. That's going to be all sorts of ridiculous. I can't wait to see what the map render output looks like. The map generator will be a fun trip into modular framework - city will call block, block will call building, building will call floor, floor will call room, room will return coordinates of all border lines of all objects within the room, and everything determined by weighted random generators coupled to sample object data and user-definable zoning distribution curves. It'll be a fun couple of days trying to slam that out, with only a sample parser and no renderer yet to run outputs through... Good thing we're making the format approximately human-readable.

    This optical drive housing used to be an IDE passthrough,but has been replaced with a USB controller. The internal power was also replaced with a 12V line in and internal 5V buck. The control box on the left I threw together this evening. The key is a 4-contact rotary switch and I left two contacts open; a momentary clockwise turn kicks the machine on, and a momentary counterclockwise hits the reset. Green LED for power, orange for activity - except the activity light is screwing up on me. The first LED didn't work at all, the second worked but only until I glued and screwed everything in place. Now I don't know what's going on but it's annoying.

  • Frame Completed

    kittan04/22/2014 at 04:52 0 comments

    04.21.2014 (Kittan)
    Well the frame is pretty much complete. I might still add some bracing, and at some point do something better with the base than the 1x4 screwed in there to keep it from racking, but it's functionally complete. We've got all 12 screens in a semi-haphazard organization, as well as the keyboard, a floating optical drive and a bracket for the keyed on/off/reset. Tomorrow I'll mount up the 12V supply and run power leads to everything, but for now it's time to hit the couch and relax a bit. Tomorrow might also see some of Novak's code running on the machine, that'll be great. I haven't actually seen anything operating since the collision-detection and motion vector tests a little over a week ago.

  • Ignore the product placement

    kittan04/20/2014 at 21:27 0 comments

    04.20.2014 (Kittan)
    Got the easy ones mounted on the frame. I'll need to add a second row of rail and figure out how best to mount the bottom 5 screens (making sure to leave room for keyboard arms and accessories), but it should be done sometime Monday. Then I'll need to work on power distribution. Most of these are run through temporary daisychained 12" extension cables and I ran out, hence why the right middle screen is unpowered. I'm almost out of steel -already cut up all my long sections of angle iron - so I might have to actually go buy some. All that was made from scrap pieces I've been collecting for a few years. If nothing else, this project has been really good for using up my junkpiles. Total cost so far (referring to specifically-acquired materials like GPUs and building supplies) is still under $200.
    Hopefully one of these days Novak will actually update on what he's doing with the software. The guy's been just as busy, with no updates to show for it.

  • Hooray! etc

    kittan04/19/2014 at 17:04 0 comments

    04.19.2014 (Kittan) Turns out the backlight issue was actually a power delivery issue, which has been resolved. Also the RS232 USB adapters came in so we can hopefully get every touchscreen interfacing. Now I guess I get to start designing the frame, and Novak will have full run of the hardware for some code-o-rama. Gonna be fun seeing some of the actual game render running on this thing.
    Some of the frame is cut and welded up. I don't want anything to look terribly organized (it should be solid, but appear fairly haphazardly arranged) so I basically am attaching some VESA arms (chopped from some old HP stands I hadn't tossed yet, fortunately I had exactly 12) to the screens in their current configuration and welding rails the arms will screw to. I've got the top row rail on legs, with arms drilled and mounted for the top center 3 screens. Need to check placement on the other 2 top-level, then mount the top corners, then I get to figure out what to do about the bottom row - they're all gonna need to tilt upward a bit for better readability so I'll have to make some adjustments there. Fortunately they're all the same size. I do need to make sure I pad some room for keyboard arms, external optical drive and maybe a cupholder and other crap.

    Probably going to build a sweet keyed on/off switch for the machine too. I've already got a loosely assembled keyed "reset" switch, another contact can be used for on/off and put the whole thing in a box to mount up. The screen supply will be wired to kick on with the rest of the machine, so turning the key should fire up the entire unit all at once. That'll be pretty cool.
    Tomorrow' Sunday so probably not a lot will get done, only got a couple hours. Monday might see the frame completed.

  • Cheeseburger Day

    kittan04/19/2014 at 07:27 0 comments

    04.18.2014 (Kittan) Friday is officially Cheeseburger day around here.

    Also it took a day longer than it should have but we finally this afternoon got the multihead stuff to work. I fiddled with some older drivers last night, and Novak came in today with some ideas to stack on top of it and by about 1PM we had screens showing up on multiple GPUs. Stupid XRandR is mandatory in newer versions of the FireMV driver from ATI, and it also hoses up multi-GPU, so we had to use a driver from 2009 where it was still disablable. After ironing out some modeline info in xorg.conf we got up to 8 screens running beautifully before stopping for the day's cheeseburgers.

    (Machine as it was at cheeseburger time)

    That's the GLMatrix screensaver running, which has some decent 3D effects. It actually ran a lot smoother than I was expecting. Looked pretty smexy. After cheeseburgers I cleaned some more shopspace and shifted the whole assembly over to a different table, so I can free up that temporary worktable space to build the frame. Probably I'll start on that tomorrow.
    I went ahead and hooked up all 12 screens and piecewise got them enabled in the system, checking alignments and modeline stuff as I went, and left plenty of notes for Novak when he comes in. Unfortunately the GLMatrix screen saver crapped itself past 8 screens, so I had to use a cheesier 2D one for further testing.

    So here's the monitor arrangement as it is now. That's approximately the final layout. When I build the frame some things are going to shift a bit, vertically horizontally or both, but that's basically what we'll be looking at. The two blank screens on the left there decided to develop backlight issues, which is unfortunate and I'll have to slap them around a bit.

    Also in the back corner there you can see my workbench with its array of 8 22" screens, one of which is displaying the Hackaday Sci-Fi contest entry page. The other corner has Novak's workbench with his array of four custom-built 17" 1920x1200 screens. Apparently we like screens around here.

  • Thursday grumble grumble

    kittan04/18/2014 at 03:53 0 comments

    04.17.2014 (Kittan)
    Today was an interesting day. Well, not really. I got the housings finished up for the screens and all screens mounted within said housings. Last night we loaded some debian on the NotSoGreatway and found it lacking driver compatibility, so today we played with older versions of debian and an old version of Slackware. Then spent the entire rest of the day jacking with ATI drivers and xorg.conf, to see if it was possible to display more than 2 monitors without X eating itself and requiring a hard reset. If we can't figure it out soon, we're either gonna have to try newer drivers and my good EyeFinity 6 cards, or load Windows on it and hope all the OpenGL code is portable enough to finish dev without any real problems. Neither option is really desirable.

    Hopefully tomorrow I'll be able to haul out another load of monitor scrap and free up some more floorspace. I'll push everything over to a folding table at the end of the toolbench and open up this temporary workspace for designing and welding up the frame to mount it all. Probably won't have much done on that tomorrow, maybe Saturday. Hopefully by then Novak's worked some magic with the GPU configs, or figured out an alternative.

  • Title? Pfft.

    kittan04/17/2014 at 02:24 0 comments

    04.16.2014 (Kittan)
    First coat of paint on the monitor housing faceplates. Novak and I took 'em out and shot 'em up with a .22 so they'll look all battle-hardened. Don't tell anyone, but first we tested penetration and shatter by shooting some plywood blanks in the shop with a saw running for background noise because I think it's illegal to discharge firearms in town.
    Side panels for the housings were all cut and mostly snapped together; the compressor tripped out about five minutes before finishing and I just a bit ago got it working again so I have 2 housings not done painted yet. Tomorrow they'll all get finish paint, give the bullet holes some detail and then give everything a quick dusting to make them look crappy. Tomorrow night we should have all screens installed in fully painted housings and I'll start work on the frames.
    We got the third 2450 in today and installed it alongside a wireless card since that was easier than running a jillion-foot ethernet cable. Debian installed, tomorrow Novak's gonna get xorg.conf figured out with 3 GPUs and 12 screens then start shifting over some of the code. By tomorrow or Friday we should be able to post some samples and have actual render output; by Friday I hope to have all screens mounted on the frame and basically be done with hardware then start helping out with the software.
    Oh yeah and I also rebuilt an old external IDE CD drive (seriously, it came with a PCMCIA IDE card...), converted to USB and running off a single 12VDC bus common with the screens. That'll be the drive to Tank's left just kinda hanging out there. Also got arms mostly figured out, for the floating keyboard. This whole thing's getting pretty sexy. When did we start this thing? Friday? Not a bad week so far.

  • Frames and stuff

    kittan04/16/2014 at 02:40 0 comments

    04.15.2014 (Kittan) Novak left early, something about having to go be awesome and buttkicking, I dunno. But I think he got some work done on parsing map data and rendering. We'll probably reload the NotSoGreatway with debian tomorrow or someday soon and start playing with code on it. I stripped down the last 5 LCDs, three of them needed power rewiring. Fetched some materials to make frames. We already had plywood but I needed some 1x4 for the sides, added about $45 to the project cost. I got all the frame faceplates measured and cut, then routed the inside edges with a 1/4 radius roundover so they don't look like crap. Well, not complete crap. I wasn't being careful at all because they're not supposed to look smooth and precise. Definitely no CNC work here (which we don't have any CNC equipment anyways).

    (imagine this with black frames and bulletholes, that'll be tomorrow's update. Imagine it vertical, hopefully that'll be Friday's)

    All 7 touchscreens are mounted to faceplates. Five are currently connected and functional, the other two are an RS232 adapter and a hardware ID conflict resolution short of being team players. Tomorrow first thing I need to cut and drill some metal tabs to fit to the other 5 screens so I can mount them securely to their faceplates. Once I know all the mounting is good they'll be getting a rough paint job, and hopefully sometime afternoon we're gonna take 'em out to the woods and shoot at them (with the screens removed of course, just the wood parts). Then nail the sides on and repaint everything, make sure screens without VESA mounts get retrofitted for them and ready to rock&roll.

    (obligatory multiscreen code rain, courtesy of matrix_ks screensaver)

View all 15 project logs

Enjoy this project?



Dylan Brophy wrote 02/01/2018 at 14:17 point

i love this! I will probably look at this again to understand how all that code works.

  Are you sure? yes | no

Gadgetglenn73 wrote 05/02/2014 at 04:28 point
this looks like its gonna be really awesome when you complete it i can't wait to see it

  Are you sure? yes | no

novak wrote 04/09/2014 at 22:53 point
Probably not particularly playable. We're looking at this more as an awesome custom arcade game than just a video game. If you just messed with the interface some it might not be too difficult, though.

  Are you sure? yes | no

Eric Evenchick wrote 04/09/2014 at 17:45 point
Lots of depth to this one. I wonder how playable the game will be on rigs with fewer monitors... that's a lot of monitors.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates