Collecting memory glimpses

Collecting memory glimpses

Besides interacting with the 3 girls in the game, there are other things you can do in Life Pictures. One of those things is finding memory glimpses in the small world you inhabit. There are 4 sets of glimpses you can find: one for each of the 3 girls, which are optional, and one that you need to finish the game, representing your beliefs in life.

Before you can find these glimpses, you'll need to complete another set of objectives - we'll talk about those at a later date. Once the glimpses become active, when you find one you have to touch it. As you do, a little piece of paper will spring out and you can collect it. Collecting more and more pieces, you'll notice that they connect with each other. Combining them correctly will let you see a short hint of something you believed in during your life. Or not. Because the choice of what you actually believed in is yours to make. Once you choose a belief and live out a life according to it, you will experience one of the game's endings. There are 3 beliefs, each accounting for one of the 3 endings of Life Pictures.

Each of the 3 girls in the game has a corresponding set of memory glimpses you can find. Before you can do that though, you need to interact with the girls first. As you go through the memories you have with a girl, her memory glimpses will be in the world for you to find. As you touch a glimpse, you will receive a small fragment from a letter the girl once wrote you. While finding these fragments and combining them to read the letter is optional, we strongly recommend it as it will give you a better understanding of what happened in your past.

There are a total of 48 memory glimpses you can find in Life Pictures, 12 for each of the 4 sets described above. If you're wondering how you'll be doing that, well, you'll have to use your eyes and ears. While the beliefs glimpses are pretty easy to find thanks to their visual design, the optional glimpses are a bit trickier and, hopefully, more fun. But instead of explaining it, why don't you see for yourself in the video below!

If you're curious about how we made the effects for the memory glimpses, read on! But a small warning first: don't expect anything revolutionary, we're just using the power of Unreal to make something simple but effective. That's our development mantra: simple but effective!

Let's decompose the belief glimpse. The first obvious thing is that we're using a beam particle emitter, emitting just one particle with infinite life. The second emitter, the one in the center, is a regular sprite emitter that spawns particles on the surface of a cylinder. These particles have an upward speed, they get smaller and fade out as they reach the end of their lifetime and their color also varies a bit in intensity. To obtain the movement of the particles getting closer to the center as they go up, we use 2 point attractors, the first one a bit lower, to start making the particles gather up, and the second one a bit higher and more powerful, to finalize the vacuum effect. The third emitter is again a sprite emitter, but simpler, with only the particles upward speed, change in size, alpha and color over lifetime. The point attractor is not active for now, it's only used during the collect animation that we'll analyze below. To get the spiral effect, we use 2 spiral emitters, placed with an offset to the left and right of the center emitter. The spiral emitters emit particles that go upwards in a straight line. But when we rotate the entire system, the particles are spawned in a spiral. Having 2 spiral emitters makes for a nicer effect with some intersecting spirals.

The letter glimpse is a much simpler effect, using the same spiral emitters as the belief glimpse. This time they are placed one in the center of the system and one with an offset. When we rotate the entire system, we get the effect of a spiral going around a central line of particles. To get the color variations for the 3 girls, we used a dynamic parameter in the color over life module and we set the color in our corresponding blueprints.

The animation for when we touch a memory glimpse is almost the same for both types of glimpses. First off, we disable the emitters. We move the spiral emitters in the center of the system. Then we crank up the strength of our point attractors in all 3 emitters: the spirals and the center one. As all the point attractors now have the same position, the resulting effect will be that all particles that are still alive, from all 3 emitters, will be pulled towards the same position in space. After a small delay, enough for all the particles to gather up, we set the strength of our point attractors to a very low value, which will create an explosion of the particles. For the belief glimpses we also turn off the beam emitter at this time.

And that's what the collectibles in our game are and how we made them. We hope you'll have fun collecting everything in Life Pictures. Thank you for reading!

The Eyes of Life Pictures

The Eyes of Life Pictures

In this article we're going to talk about the Unreal material we use for the girls' eyes in Life Pictures. It's a very simple material, easy to understand, create and use even by beginners, but with a pretty nice visual output. Below you can see the final result. If you like it, then read on to see how we made it!

To get started, let's see what we have when we import a girl model from iClone Character Creator, the software we use to make the girls.
Above you can see the 3 textures: base color, specular and normal. The starting material is a very simple one, using the above textures as input into their corresponding nodes. The result is in the screenshot below, which is not really what we're looking for.
But before we work on the look, let's first improve its reusability. Since we're going to use the same material for all the 3 girls in Life Pictures, we can reuse the normal and specular - we're actually getting rid of the specular but more on that later. However, as it is now, the base color needs to be a different texture for each of the girls, as their eyes colors differ. Since only the color is different and not the actual patterns in the iris, the first thing we're going to want to do is to control the color through a material parameter and convert the current texture into a grayscale. As I'm sure you've guessed, we can't simply multiply the color with the grayscale, as that would affect the entire texture, including the white area and the capillaries. In fact, we're only converting the pupil area into a grayscale and we're also going to use a mask to multiply only that area with our intended color.
Now we can control the color of our eye from a material instance, tweaking our color parameter. Below you can see two examples of doing that.
What we have so far is probably good enough in terms of reusability, but we like to have more control than that. So we made a more complex mask, using all 4 channels to separate the various areas of the eye. The red channel colors the outline of the iris, the green channel colors the iris, the blue channel colors the pupil and the alpha channel is used to color the white area. We now have 4 parameters to control all those colors: Outline Color, Iris Color, Pupil Color and Lightness - the last one is just a scalar and is used to make the white area lighter or darker. If you want to actually change its color, it's simple enough to change it to a vector parameter. Below you can see the final mask, the material for this phase and a freaky example that you definitely won't see in Life Pictures, but shows how much variety we can now get.
We're done with the reusability factor of our material, so now it's time to work on the looks. First of all, we add a parameter to control the emissive color of the white area. We do this to make sure the eye doesn't look too dark in a more shadowed environment. To affect only the white area, we use the alpha channel from the mask, just as we did for the lightness parameter. With that taken care of, let's get rid of the specular and switch to roughness. We want to have different roughness between the white area and the iris area, so we can have different grades of reflection. We add 2 parameters to control this, Base Roughness for the white area and Pupil Roughness for the pupil and iris. We again use the alpha channel from our mask to separate the two areas.
Starting to look better, but we're not there yet. We need to tweak the metallic value of the iris area, so we can get some proper reflections. We do that with a Metallic scalar parameter and, once again, multiplying it with the alpha channel from the mask. Don't forget to include a reflection sphere or cube around the character.
One last thing to do. We're not very happy with the normal map on the eye. To get a nice wet look, we're going to use a different texture and get rid of the one we used so far, as it didn't help much anyway.
After tweaking the various parameters we implemented so far, we got the final look below. You can also check out the final material and the settings we used.

That's it, a nice, simple, reusable and pretty cheap to render eyes material. Nothing fancy, but we're very happy with the results. We hope you find it useful! You can copy paste it from here and use it in your projects. Thank you for reading!

The team behind Life Pictures

The team behind Life Pictures

Life Pictures is being created by a small team inside Mobility Games. Each member has a lot of experience in making games, but this is our first indie game and our first Unreal project. We worked for many years with Unity before Life Pictures, but after a long time we wanted to diversify a bit and test a new engine.

Mobility Games is a Romanian gamedev company, located in Iasi. It's been around for more than 11 years, building a portfolio of games and products on mobile platforms starting with J2ME up to iOS and Android. While its main focus over the years has been finding the best clients to partner with, in order to stir things up a bit, both internally and externally, it has set aside a small budget to make independent games. And now it's dipping its toes in something completely new.

One of those independent games is, of course, Life Pictures. And here is the team working on it:

Catalin Marcu - Talin
Talin is the game director of Life Pictures and he is in charge of design and story. He is also contributing on programming and art. He has 9+ years in Mobility Games, where he worked as a programmer, designer, coordinator and game producer. He is an avid game collector and is constantly complaining about the lack of time to play all the games he has.

Florin Covit - Floky
Floky is the lead programmer of Life Pictures. He has 8+ years in Mobility Games, being the most passionate and experienced programmer in the team. His hobbies include programming, spending time on coding forums, experimenting with new tech, reading engine source code and thinking in binary.

Emanuel Peia - Emi
Emi is working on programming. His experience is a mixture of game and non-game coding, making him a philosopher of good coding practices. He is also a life philosophy fan and has a third eye for behavioral patterns in humans. He is the only one in the team able to communicate with Floky in binary.

Ioan Chirita - John
John works on art, including concepts, modelling, texturing and plain old drawing. He has been with Mobility Games for more than 7 years. He is the guru 2D artist in the company and likes to throw his hat on the floor when he knows he is right. His hobbies include being awesome at gaming and he is always ready for a challenge in Overwatch or Bloodborne.

Alexandru Boaca - Alex
Alex works as a technical artist, which includes modelling, texturing and bridging the transition from pretty art thingies to game assets. He is the oldest member of Mobility Games, with more than 11 years in the company. When he is not growing roots, he loves to ride the bike and take photos. If there isn't one yet, he'll stir up a controversy for just about anything.

The team says hi and thank you for reading about us! We're very excited to work on Life Pictures and we hope you'll play it when it's ready! Until then, keep an eye on and follow us on facebook, twitter and youtube for more info every week.