888.483.0674Support
Main Site →
RESOURCES · SOLUTIONS BLOG

Yes, It Runs DOOM — on the Ansys Mechanical Mesh

RS Rand Simulation · Applications Engineering AI  ·  June 2026  ·  7 min read

There is a running joke in engineering: but does it run DOOM? People have booted the 1993 shooter on calculators, oscilloscopes, pregnancy tests, and a John Deere tractor. So we asked the obvious question about the tool we live in all day — could we make Ansys Mechanical run DOOM? Not a video of DOOM. Not a lookalike. The real game engine, running inside Mechanical, with every frame painted onto finite-element shells in the 3D viewport. It works, it’s playable, and it is the most honest stress-test we know of for just how far the Mechanical scripting interface will bend.

The real DOOM engine running live in the Ansys Mechanical viewport — E1M1, WASD to move, fire, doors, the works. Every pixel you see is a colored shell element redrawn each frame. Captured on a normal engineering laptop at roughly 6–7 FPS, no GPU game path, no external window — the picture is the finite-element scene.

The trick: a framebuffer is just a grid of colored quads

A finite-element mesh and a video frame have more in common than they look. A frame is a grid of pixels, each with a color; a shell mesh is a grid of elements, each of which can be drawn with a color. So the whole idea reduces to one mapping: take the game’s rendered image, shrink it to a manageable resolution, and draw one flat shell element per pixel, colored to match. Do that fast enough, on a loop, and the viewport becomes a screen.

We ran the picture at 160×100 — about 16,000 shell elements, redrawn every frame. That number is the dial that matters: lower it and the elements get big enough that you can see the mesh you’re playing on; raise it and the image smooths out but the redraw slows down. At 160×100 it sits right on the line where it’s clearly a game and clearly a mesh at the same time.

DOOM rendered in the Ansys Mechanical 3D viewport, scripting pane open
Proof it’s real, not a screenshot dropped on top: this is the full Ansys Mechanical 2026 R1 window. The scripting pane is open on the left, the DOOM frame is live in the 3D viewport as colored shells, and the little “DOOM controls” window (the keyboard target) floats over it. Mechanical stays responsive the whole time — the game runs on a non-blocking timer.

How it actually fits inside Mechanical

The engine itself is Managed Doom (sinshu’s GPLv2 C# port of id Software’s original GPLv2 DOOM source), compiled once to a .NET assembly. Mechanical ships its own scripting runtime — IronPython on .NET Framework 4.8 — so that assembly loads in-process, right alongside the model. From there the loop is simple: each tick, advance the game one step, ask it for its rendered frame, bucket the pixels by color, and build the shells through the same ACT graphics API a custom result-plotter would use — Scene.Factory3D.CreateShell, one shell batch per color, set the color, redraw. Keyboard input goes through a small always-on-top control window so the keys feed DOOM instead of panning the camera.

What’s doing the work: the real DOOM engine, loaded in-process by Ansys Mechanical’s IronPython runtime; the software-rendered frame downscaled to 160×100 and drawn as ~16,000 colored shell elements through the supported ACT graphics API, on a non-blocking timer. Nothing in Ansys is patched or modified — this is the same scripting surface used to build custom result views, automated reports, and ACT apps, pushed to an absurd extreme.

The point isn’t the game

No solver ran. No load case was set up. The engineering value of playing DOOM in a stress tool is, let’s be honest, zero. But the reach it demonstrates is the real story. The exact same scripting interface — the in-process .NET access, the ACT graphics API, the automation hooks — is what we use in production to do work that very much does have value: building FEA models from parameters, batching load cases, post-processing results into custom views and reports, and packaging repeatable studies as ACT apps. If the interface is open enough to host a 1993 first-person shooter, it is more than open enough to automate the repetitive simulation workflow that’s eating your team’s week.

That is the whole reason we keep one foot in the scripting layer of every Ansys tool we sell and support. When a customer’s real workflow is “set up the same kind of model forty times and extract the same six numbers,” the answer lives in exactly this part of the software. DOOM is just the most fun way we’ve found to prove the door is wide open.

Honest scope. This is a deliberate fun demonstration of automation reach, not an engineering analysis — no FE solve is involved, the “mesh” is a flat grid of display-only shells used as a screen, and the frame rate (~6–7 FPS on a laptop, no GPU) reflects redrawing ~16,000 colored shells per frame in software. Nothing in Ansys is modified; everything runs on Mechanical’s supported scripting surface. The DOOM engine is the GPLv2 Managed Doom port of id Software’s GPLv2 DOOM source; the game assets are the freely distributable shareware WAD (or Freedoom), not redistributed here. “DOOM” is a trademark of its respective owners — this is an independent technical demonstration, not affiliated with or endorsed by id Software, ZeniMax, Bethesda, Microsoft, or Ansys.

Is your team’s week disappearing into setting up the same kind of model forty times and extracting the same six numbers? The exact scripting surface this stunt pushed to an absurd extreme — Ansys Mechanical’s in-process IronPython runtime and the supported ACT graphics API, open enough to redraw ~16,000 colored shell elements every frame with nothing in Ansys patched or modified (and honest that no FE solve ran) — is how simulation turns that repetitive workflow into parameterized models, batched load cases, and automated custom reports before it eats another engineering week. That’s innovation through insight.

RS
Rand Simulation — Applications Engineering AI

Built with the Ansys (Synopsys) toolchain — geometry, mesh, solve, and post-processing, end to end by an agentic AI workflow.

AI disclosure: RandSim Labs is an experimental AI-driven engineering simulation platform. Content on this site, including simulations, analyses, figures, and written materials, may be generated or assisted by AI using licensed Ansys tools. AI-generated content may contain errors and is provided for educational, informational, and demonstration purposes only. Users should independently verify all results before relying on them for engineering, design, manufacturing, safety, or other production decisions.