Evelina Foxberg

Evelina Foxberg


FoxbergArt on Instagram
FoxbergArt on INPRNT

My life as a Game Design & Graphics student

2016 > 06

Hello and welcome back to my daily blog-spamming!

It occurred to me that I haven't talked a lot about the actual game we made during the project, except for the short introduction that I gave in this post. In short, Slumber is a game that is supposed to help the player sleep. It's intended to be played on a smartphone or a tablet, in bed, before going to sleep.

In my last post I promised to explain what a nudibranch is and why we are making a game about it! Nudibranch means "naked gills", and they are a kind of sea slug that can be found in almost any ocean. They all have exposed gills, which is the rosette-like thing you can see on their back. Some of them eat poisonous sponges and collect the poison inside themselves, which renders them quite untasty for predators. They come in a lot of amazing colours and patterns - the picture below is from here, where you also can read a bit more about these adorable and crazy creatures. So why a nudibranch? When I was thinking about the setting of the game I figured being underwater and exploring might be one of the most relaxing things out there, and that works well with a game that is supposed to help you sleep. The nudibranch got chosen simply because it's so darn cute, and also more people should know about it!

Some other things that we did in the game to make it adapted to sleep were:

  • Avoiding the colour blue. As it is becoming increasingly common to interact with phones and tablets before going to bed, we wanted to design a game for those platforms that did not share the same problems that other games might have. One of the biggest problems with interacting with screens before going to bed is the light that the screens emit, which prevents the player from feeling more sleepy. This is especially true of blue light, which is the most effective at stopping the production of sleep hormones in your body, preventing you from feeling sleepy. Therefore Slumber is designed with a reddish colour scheme, which is on the opposite side of the spectra from blue.
  • No dangers in the game. Having dangers in the game could make the player more stressed, and prevent them from feeling sleepy. The environment is entirely safe, and 
  • No stress. No time-limits, nothing to make the player feel like they have to play for another 30 minutes in order to gather those points they need to reach a certain goal. Our goal is to make the player feel like they could leave the game at any time in order to go to sleep, without losing progress.
  • Balance between engagement and relaxation. This is a tough one. Allthough we want to provide a safe and calming environment for the player, they also need to not be bored by the game because then why would anyone play it? We solved it by adding a system for befriending fish, which is done through giving them food. The player then has to collect algae around the world which they can use to feed the fish. This provides an extra goal for the player, who now get to explore AND look for fish food, as well as create an even more friendly environment because you're surrounded by potential friends. 
  • Reward sleeping. Slumber will detect when you fall asleep, and when you sleep you will gather "sleep energy". This energy is then used to create content in the game that you can explore the night after, giving you new things to explore and play with. This is also meant to provide an opportunity for the player to create better sleep routines by continously coming back to play Slumber before going to bed.
Cheers and thanks for reading!

Happy friday everyone!

In my last post I talked some about how to make the Slumber fish in 3D, including modelling, rigging, and animation. Today I'm going to talk a bit more about the same fish, but focusing on the textures instead! As an example I will go through the process of creating the juvenile Koran Angelfish below (credit to http://fishy-bizness.com/ for the picture). We chose to depict the juvenile version because it has a much more clear and readable pattern than the adult fish.

Since you will rarely see both sides of a fish at the same time (they are quite flat), I chose to mirror the UVs and use the same texture on both sides. In the first draft (1) I just tried to get the basic shapes and colours down. When we put this into the game, however, it looked a little bit dull and not as "watercoloury" as we wanted. Therefore for version two (2) I experimented a little bit with smudging the edges of the patterns, as well as applying a watercolour texture on top of everything. This looked a little bit better, but when you only have a little bit of smudging in there it runs the risk of looking sloppy rather than intentional. So for the final version (3), I went full on watercolour. This might look a bit extreme, but it fits a lot better into the context of the game, and clearly communicates the watercolour effect we were going for.

You might notice that the fish lacks side-fins and eyes! That's because they were added onto the fish as sprites and animated in Unity by Sebastian, and he explains a little bit about it in this post. You can see what the Koran Angel fish fin looked like to the right - yep, it's the blue thing there. We actually desaturated the whole texture a little bit and changed the hue to make it less blue, as we were trying to avoid the specific colour to allow for melatonin production in the players.


Hello again!

Two weeks has now passed since Gotland Game Conference, and I've spent [insert relatively large measurement of time here] eating delicious noodle soups and writing the obligatory report that comes with the course. Now I have some blogging to do, so I thought I might explain how the Slumber fish came to be! Excited?? Great! Here goes.

Slumber is a 3D game, so naturally the fish must be in 3D. That means we will need a mesh, textures, and animations. Since we wanted the game to work on mobile phones as well as tablets, and we didn't know beforehand exactly how much they can handle in terms of textures and mesh sizes, I had to play it safe and start small. To optimize performance AND production time we also wanted the fish to share animations. None of us had any experience in rigging and skinning using anything but a default CAT-rig for humanoids, so this part was a little risky for us at first.

So the goal here was to create a test fish mesh in 3DS Max, that I could put a simple animation on top of, and try to get all things to work well in Unity. This was done to test the workflow to see if it works at all before getting gritty with textures or details. We also wanted to test if animations were transferable between fish meshes, which would spare us both production time and optimize performance.

To the right you can see what the first test fish looked like! We later realized that the best way to add side-fins was to create separate planes and animate them in Unity. Good thing we made a test-run! After creating the basic fish mesh I then needed to add a skeleton which would allow the fish to move. This part was a lot of trial and error for me as there were no clear direction to go. After testing several different ways to go, I ended up just creating the fish skeleton starting from a hip bone and then adding bones in both directions from there, including a head and a few tail bones. You can see what that looked like after it was rigged in the picture below!

Note: It's very important to save the rigged and skinned mesh to a separate file, let's call it Fish_Rig in this particular case. Then you can always use that as an empty slate or a starting point for when you make different animations (Fish_Swim, Fish_Idle, etc). You also want to keep the unanimated rig if you want to use the same animation on several fish. What you do in that case is that you modify the mesh so that it looks like a new fish - DO NOT change the rig in any way at this point because that might render your animation unuseable on that fish. You will however have to reskin the fish after you modify it. Then you can save the new fish with the same rig under a different name, let's say Fish2_Rig (that's a lousy name, don't use that. (but for the sake of this example, let's use that. (got it? okay got it))).  

Skin the mesh to the rig, and then you have a fish mesh that could potentially move around in the ocean! The next step is to add a simple animation in 3DS Max and save it as a new file (see note above!), and import both mesh and animation into Unity.

Once the fish and the animation worked well in Unity, it's time to make a new mesh USING THE SAME RIG so that the same animation could be used on this one. To do that I duplicated Fish_Rig and named it Fish2_Rig, and then started modelling to create another kind of fish. Since I already tested the first fish in Unity I was a little more sure that it would work, so I spent a little more time working on this fish. After the remodelling was done, I have to fit the new fish to the old rig, and then export it to Unity.

Note on making fish of different sizes: All fish are not the same size in the ocean, right? But all 3D fish that are using the same rig are going to need to be the same size because they need to fit the same rig, and you can't scale the rig because then your animation might get wonky on that particular fish. So how do we solve this? You scale the fish in Unity. BOOM. Mic drop. This might be obvious to some of you, but I had no idea.

That's all for now! I hope that was helpful to anyone who is also going to model fish.