Marlin is a project I started to practice modern realtime graphics techniques, and to play around with some ideas on weird controls and graphical style.

The controls are dual analog stick based, with a similiar philosophy to Walaber’s Gymnast. Conceptually, one stick is associated with each engine of your aircraft, which means that control of roll is just as intuitive as lateral movement. The controls take some getting used to, particularly for people who are used to traditional flight sims, but they are fairly enjoyable to use.

Graphically, I wanted something that would look good without too much effort, and I was inspired by the goals of the demoscene. Trying to produce a really small executable requires building everything procedurally. I wanted to do this while still using a decent diffuse light approximation, which lead to building everything out of rounded cylinders. This allows me to use specialized algorithms for fully dynamic real time soft shadows and ambient occlusion (similiar to the analytic AO described by Iñigo Quilez).

These effects are per-pixel and run the same on all objects (even ambient occlusion on static objects is recomputed each frame). This slows things down considerably at higher resolution. Currently I run at a puny 640 x 360 to get frame rates comfortable for playing, but there is still plenty of optimization to be done. It’s not a technique which would be usable on a big commercial game, but I suspect I can get it running acceptably for what I’m doing. (If not, I wait for hardware to catch up – I haven’t run it on anything better than an Nvidia 8600GT yet.)

Marlin is currently 40 kilobytes on Windows, 50 kilobytes on Linux, 60 kilobytes on 64bit linux, and about a meg on a Mac (anyone know how to dynamically link SDL on Mac?). The environment is created mainly by randomly instancing parametric buildings, and all models were built in code. I hope to do a proper release of Marlin at some point, but right now there is no sound, practically no AI, not much gameplay, and it hasn’t been tested with very many game controllers/video cards/etc.

In the meantime, here are some videos (available in higher res on vimeo, click on “vimeo” in the lower right of the videos to view):


3 Responses to “Marlin”

  1. Eric Monkman said

    You’re game looks pretty neat. I wasn’t sure how a game in which everything is composed of capped cylinders (which are not the same as lozenges, I have learned) would turn out, but they seem to have worked very well.

  2. Tony said

    Wow, that’s impressive man, can you put a download link for people to play it?
    Btw have you done/are willing to do any scripting work in the UDK?

    • danieldresser said

      Hey, thanks a lot.

      It’s not really in a state to release at the moment – unfortunately there’s some boring technical stuff that would have to fixed at the absolute minimum before doing a public release (last I checked I was hitting a lot of rendering bugs on ATI cards, although new drivers might have fixed this). In any case, I would definitely love to do a proper release of it at some point, but I would also like to put a bunch more work into it first. I’m currently busy on other projects, but I do have a friend looking at building an audio engine that could be great for starting the sound design. So yeah, stay tuned for some time in the indeterminate future.

      As for UDK, I’ll likely try one of the big commercial engines at some point, but I can’t see it happening any time soon.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: