David Fenner's 'Dreamwalker' is a game tells about reconstructed memories. It makes heavy use of 3D scanning to create eerily realistic, yes slightly glitchy scenes - a perfect match for the theme. I talked to David about his project.
Hi David, can you tell us a bit about yourself?
From a social point of view, I guess I'm what they call a "CG artist", in the sense that CG art is what I do for a living. I’ve worked in many animation projects for film and broadcast as CG lead, mainly at loica.tv where Blender is the main tool! Some highlights of our work:
From a personal point of view, I can tell you that I'm interested in pretty much everything, with emphasis on films, videogames, philosophy, psychology, science and art in general. I’m from Chile, happily married and I have two kids.
What is Dreamwalker about?
Dreamwalker is about ourselves, about what makes us who we are. It is a profound and honest journey into the human mind, with a solid connection to modern psychoanalysis (in fact I’m writing the script with the help of a psychotherapist). It is also an immersive interactive experience, with a completely original concept and gameplay, great character development, lots of intrigue and stunning visuals. We are trying to make something really unique and interesting.
What inspired you to make it?
I don't think I can point at any specific thing. It's like I suddenly found the concept that could support and drive all the things I wanted to say, from a story and an artistic point of view. Dreamwalker started a long time ago (6 years) before I even graduated, and it has slowly matured to what it is today. I guess what inspired me is the sum of many different stories that I had to write combined with many ideas and feelings that were sort of waiting to be translated into work. From a certain point onwards I’ve felt I need to make this game.
What makes the game unique?
Many things, I believe. I don't want to spoil too much or promise too much, but I believe that the angle from which you play and experience the human mind, with all its thoroughly developed metaphors, dreams, symbolism, etc. and how they are connected to the story and gameplay is something that as far as I know is completely original. Now we are on the “teaser” stage but soon gameplay trailers will come that will shed more light into why it is unique and interesting. And that is from a gameplay and story perspective. From a visual perspective, there is also a very original/unique concept: A machine (brain scanner) can retrieve actual images from the memories of your character, and then it finds which ones belong together in time and actually reconstructs 3D-geometry from these images by matching points and elements that repeat in them, just like real photogrammetry does with images we take from reality.
The result is this “stitched together” mesh and textures that come out naturally from a process like this, just that this time it brings also other elements of the mind that are harder to interpret. And then as a player you can go through these memories and try to interpret all the emotional aspects that this "brain photogrammetry" can miss, and well, then the story unfolds and gameplay expands from this... but the visual style that comes out of this and it’s connection to gameplay is also quite original I think.
How do you generate the 3D scans for the environments?
We start with doing a location search. When we find the place that fits best to the characters memory, we then have to do some “production work” and adapt the place: Place posters, add or remove things (for example there is a memory that occurs in the 90´s), clean, make dirty, whatever the story demands. Then, we take pictures, thousands of them. And then, we scan them in a photogrammetry software, which is fairly straightforward, to get the 3d reconstruction. The hard part comes in adapting things to real-time and doing art direction, which gets us to the next question…
What does your workflow look like to generate real-time assets from the heavy 3D scans?
This is tricky. Sometimes it’s simple, sometimes it requires hours and hours of manual clean up. The story/concept demands that 3d geometry generated from images of your brain shouldn’t be perfect, but a fully automatic process with no art direction looks amateur-ish and unpolished. So we basically have first to identify which scan errors are “fortunate”, and fix the ones that are “unfortunate” (from an artistic point of view and with overall coherency in mind). For this, we usually have to do more than one scan with different settings, try to get the best of them, and then start a manual process of cleanup, making on-purpose “scan errors”, and fixing ugly errors. All this while being faithful to the script which demands some parts to be one way or another.
The process looks like this (mostly):
- Generate the 3D scan as detailed as possible, maybe more than one version.
- Do an automatic decimate but maintain all the important detail to make it more workable.
- Mix the versions with the part that turn out best.
- Start manual fixing, polishing, making on purpose “scan errors”, beautifying parts, cleanup of unnecessary flying geometry, tubes, holes, etc. Then do manual brush-based decimate on all the parts that don’t need much geometry, then polish again, re-model some parts, retopo other... (all this is done in Blender, mainly with dyntopo)
- Finally, when we like the overall shape and we have an technically-ugly-but-workable mesh, then comes the tough part of making decent UVs that hopefully don’t have an overkill amount of islands, which is actually hard to do even with powerful algorithms, since the mesh can be so weird and everything is connected. For example, is really hard to find decent seams on a living room in which all chairs are connected to the floor. And automatic algorithms find their way but then you have a mess of a texture and many islands which is not good for the renderer, that already has to handle lots of polys. So UV’s can be quite annoying if we want to really optimize things, which we try to do our best.
- Then when we have a final mesh with final uvs, we bring the model back to the photogrammetry software to project the images to our UV’s.
- And then again, manual work is needed to the textures, for what we again use Blender tools like image projection, stencil projection, cloning, softening, etc. We then have to connect the different rooms with patches. We were very relieved when Sergey committed a patch a few weeks ago that speeded up painting and loading of hi-res images by more than 2x!. Downloaded a build and everything was better, I guess that’s the beauty of Blender.
And then we finally can bring it into the game engine (Unity)!
What is the current status of the project?
Dreamwalker consists of 5 episodes, and each episode is a full game in it’s own. Currently we are developing episode 1, which is the story of Johanna, a successful lawyer that fell into sudden depression with no hint of its cause. Episode 1 is going really well! Currently you can actually play the first chapter of the episode from start to finish. Main characters and environments are done, as well as gameplay mechanics, and the first part of the game is fully playable. We just have to keep going forward.
Johanna (Cycles render):
What are the next steps and when will the game become available?
The next step is to keep polishing what we have to participate in festivals, and currently we are participating in Indie-Cade Europe, which is a very good place to showcase indie-games and try to get into the official selection. We have some funding for the game but it is running out soon, so it is imperative we start showing more and try to find some more funds to keep going and finish the game. We hope to release it in early 2017, but it depends on how things go.
Whatever the case, we are committed to keep going with or without funds and to make this game perfect! We'll never put deadlines that could hurt the development or the artistic goals of the game.
Game-Designer of independent game “Dreamwalker”.
CG artist reel (About 80% or more was done in Blender and After Effects):