• Register

Explore a series of impossible, cyclopean mazes and fight ancient alien beings in this retro first-person shooter. Paradox Vector is inspired by the old-school vector graphics games of the early 1980's and the non-Euclidean geometry of M.C. Escher.

Post feature Report RSS How is this Game Rendered?

I wanted to experiment with a different approach to rendering a 3D level. Here is the result...

Posted by on

Recently, I made a small, experimental game called Horror in the Museum and submitted it to #LowRezJam over on itch.io. The main requirement of that game jam is for games to be limited to 64 x 64 pixels. Here is a screenshot from Horror at the Museum game as it appears there:

Screenshot 005

I started this game with a very simple idea in mind. I wanted to come up with a different way to render a 3D level. I'm going to share the techniques and thought process behind it here.

Vector Graphics:
As a bit of background information, you should know that I am working on another much larger, more complex game called Paradox Vector. That game uses 3D line draw commands to emulate the vector graphics games of the early 1980's. I wrote about how I was able to use this process to draw 3D objects in this article. It is my feeling that vector graphics are a source for real artistic potential that has remained untapped for the past few decades, since raster graphics effectively took over the video game scene back then.

Paradox Vector attempts to look like those early arcade games, but it also tries to create a more complex world than any vector graphics games were able to.



A Different Approach:
Horror in the museum does not look like a vector graphics game at all, but it actually is. Allow me to explain. Instead of using vector lines to draw the outlines or shapes of game objects, as I do in Paradox Vector, I decided to use them to define the space between objects, the negative space.

The green fog you are seeing is not typical 3D "fog" but actually a large number of straight lines that are drawn each frame, in a pattern around the player's camera. They extend in all directions, some being roughly parallel to the player's view, while others perpendicular, and still others traversing the player's view at various angles.

Here's what the game looks like at its full resolution...



This is not some kind of 2D filter placed over the image, but the 3D lines themselves. As the camera sees further, it can see more of these lines in the distance, and the "fog" therefore gets brighter, as more lines overlap one another. The dark shapes stand out as they effectively hide any lines that would be drawn through or behind them.

Originally I had lines drawing all at right angles to one another. This created a grid-like effect and I found it very interesting. It definitely provided a different feeling, but it looked too calm and organized for a horror game. I later added lots of different angles to the lines, and also caused the lines to switch directions randomly, to create the flashing, strobing effect. Here's what it looked like when the lines were all perpendicular and static...



I think this is something with a lot of potential, that I would also like to explore further, but perhaps in a different game.

Some things like the sky and reflective water are done with the standard, built-in rendering tools that come with any 3D engine. Those have nothing to do with the 3D lines.

Why 64 x 64?
I reduced the screen resolution to 64 x 64 pixels just to be able to submit this to LowRezJam. So, while the scenes are created with vector lines, the game's camera filter ends up converting it into a low resolution pixel game. It reduces the resolution and gives the impression of some kind of scratched film effect.


Why Am I Doing This?
Working on Paradox Vector made me realize the vast potential of vector graphics in terms of offering new ways of generating imagery. I just think it's something that has not been deeply explored since the 1980s, and I think it has a lot of potential. I would love to see other game developers taking up this idea, to explore it further.

In this case, I feel like the experiment was a success. I used vector graphics to create a different way of rendering a 3D scene. I was surprised that it ended up looking so much like the standard 3D fog, but it also has its own distinct look and feel. Ultimately, I feel I accomplished what I had set out to do. I hope to hear any thoughts or feedback you might have about this method, or about my other games. I am also happy to answer any questions you may have.

Post comment Comments
bluepulsargames
bluepulsargames

Yes for original rendering techniques! Great refreshment in the vast field of PBR/cartoonish PBR. Thanks for sharing, nice read!

What is your typical frame time in full resolution? This technique probably suffers from high overdraws of very thin primitives, but is it important on today's hardware?

Reply Good karma Bad karma+3 votes
MKSchmidt Author
MKSchmidt

It actually runs very smoothly on my 10 year old rig :) The level is pretty small, and there is not much else going on, but I think it could stand a lot more before the frame rate became low...

Reply Good karma+2 votes
MKSchmidt Author
MKSchmidt

By the way, it is not many objects, but one object that draws all the lines. It uses many vertices to designate the beginning and end points of each line. I describe how this is done in my other article...
Indiedb.com

Reply Good karma+2 votes
bluepulsargames
bluepulsargames

Thanks!

Reply Good karma Bad karma+2 votes
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: