Ludum Dare 36 – Lens

Basic Info:

Ludum Dare is always a thing that I’m looking forward to, and as always I joined the jam and started working. I will talk about the things I’ve done in chronological order (with time stamps).

I chose to jam solo, this means I made all assets and scripts alone.

 

Basic Idea:
The theme of the jam was: Ancient Technologies.
I choose the myth about Archimedes, who used mirrors to burn invading Roman boats. The player will control a tower that can shoot sun rays towards boats (by aiming the mouse and pressing the left mouse button). These boats will spawn by numbers increasing by the day and sail towards the center of the screen where your island is placed. The player is able to buy upgrades after each day to help him or her survive.

 

Design (48 hours left):

Mirrors are harder to make as a playeable character. If the mirrors are on the ground, it will be a hard time to shoot sun rays all across the island. I decided to mount the mirror on a tower top to give it more mobility.

 

Modelling (44 hours left):

I knew I needed atleast a tower, a standard boat, houses and an island.
For the boat I choose to make a trireme (greek ship) and to animate the peddles to make it less idle. The (now changed to) lens must be able to look at the position of the mouse press, so it needed to be skinned to a separate joint than the rest of the tower.

 

Basic Lens Scripting (43 hours left):

First I needed to program the raycast from tower position to mouse position. This was rather easy, but I also needed to make it visual. A ray mesh would be used, with a joint by the base and a joint by the end. The base joint would be linked to the lens tower and the end joint would be linked to mouse position when pressed. A little detail I added was making the ray invisble when not pressing, otherwise it would be confusing for the player when he or she isn’t pressing the mouse button.

 

Basic Enemy Scripting (40 hours left):

This was really the basic part of the enemy (no fancy stuff here).
Making the boats spawn in a pattern (the first pattern was an arrow shape) and let them sail towards the island. At first the boats didn’t stopped when they reached the island creating some funny moments.

I also gave the boats a moving speed, attack speed, damage, health and dificulty variable. But they weren’t used up to this moment.

 

Basic Interaction Scripting (38 hours left):

Whats a sun ray and a boat if it can’t interact with each other? Atleast it isn’t a game!
I needed to script the interaction (damage) the boats will have with the sun ray. This was rather simple and just a matter of variables decreasing. For the death state of the ship I choose to add a rigidbody and release an explosion force and instantiate a explosion particle on death. I choose to add a burning state for the boats. If you decreased their health bellow a certain point they would start to burn (like ants and a magnifying glass glass). When a boat is burning it will take a small amount of damage over time. This created a situation where the player can choose to set all boats in fire or take more time per boat to totally destroy them.

 

Sleep, eat and other things (30 hours left):

Also important!

 

Scylla enemy (28 hours left):

I wanted to create another enemy. A boss enemy. I decided to take the Scylla and create a boss enemy from that. This was a homage to the game Age of Mythology, that I’ve played alot as little kid. The Scylla is bigger and stronger than the boats but won’t spawn as often.

 

Island health (27 hours left):

It would be weird if you can’t lose the game, wouldn’t it? The island needed health to be able to lose the game. The boats also needed to do damage once they are next to your island. The healthbar is visible on the top center of your game.

 

Multiple patterns and spawn points (23 hours left):

To make the game less predictable I made multiple spawn patterns for the boats.
There is the strong arrow, weak arrow, square, split, line and donut spawn pattern. I wanted to create the patterns purely by script. But with the time limit in mind I created them as pattern prefabs with the spawn prefabs within. These prefabs communicated between each other to determine the dificulty and number of spawning ships.

P.S. There’s a random bug in the game that makes all the boats in a pattern do a barrel role. I found it funny enough to keep it in the game, giving it a quirky effect.

 

Rest time (21 hours):

I took a nice walk with a friend of mine who was also jamming. Clearing the mind and discussing things in life.

 

Difficulty per day (19 hours left):

As said in the pattern creation, the patterns had a difficulty setting. This variable determined how many ships were spawned within the pattern and if a Scylla was able to spawn. I linked this variable to the Game Manager which changed the dificulty based on days the player survived.

 

Upgrades per day (17 hours left):

If the player only needed to destroy ships the same amount of boats the game would become very dull and boring. However by changing the amount of boats based on days the player survived, would make the game impossible after surviving for some days. And still a bit dull to be honoust. I decided to add upgrades to the game. I started with 8 slots but changed it to 4 after realising I hadn’t enough time to create 8 unique upgrades. The first upgrade was the lens upgrade, which increased your attack. The second upgrade was the shield. A sphere that grows and pushes back enemies. The third upgrade heals your island back to health. The fourth upgrade places mines as bellow.

 

Sleep, eat and other things (13 hours left):

Still important!

 

Small details (7 hours left):

There are some little details that makes a jam game for me. If you only add the necessary thing you forget to have fun. And fun is one of the important parts of the jame. I added a wave particle. These are particles that spawn from the (big) shell and have a negative speed. This way they moved inwards.
Another thing I really wanted to add was the possibility to destroy your own buildings. It doesn’t serve any goal but it’s just a little detail that create more fun for the player. After making the houses explode able I discovered that it felt a bit empty. I decided to add a character UI that would comment on your action making you more conscious of what you are doing when you are destroying your own buildings.

Peasant talking (3 hours left):

After adding the peasant comment on destroying your own building I decided to add more comments when doing certain tasks. This way I could give instructions to the player or give them little hints or game “flavour”.

 

Small polishes (1.5 hours left):

A friend gave me some feedback on the text the peasant character said when destroying the buildings. He said it was a generic text and it needed more “randomness”. So I changed the text and made a little randomization between texts, giving the character mutliple lines he could say per action.

 

The game is now finished and is downloadable here.

The soundtrack.

 

Retro:

The project started easy with the idea being the second idea I had. Normally it takes around 4 to 5 ideas before I’m convident enough that I will start working on it. The jam actually went very smooth, however I wanted to add more things. As mentioned before, I wanted to create more upgrades letting the player have more freedom in his or her tactics. More enemies were also on the additional to do list. I wanted to have more variety in the enemy waves but the deadline was comming to close to make them.

However, putting aside all the things I wanted to add.
It was surpising to see how fast the production went. Creating the core of the game went really smooth and fast. If I had decided to do the Ludum Dare Jam instead of the Ludum Dare Compo, I would have been able to add much more details like the talking peasant and I would even been able to add the additional enemies and upgrades.
The thing I’m most proud of is the simple but yet pleasing visual style. It’s rather simplistic but the right effects and lighting makes the style do what it needs to do.
To do the Compo instead of the Jam was a conscious choice. The Jam would keep me occupied untill Tuesday. Being back from vacation, I wanted to get back to work on Monday and don’t use the additional day the Jam gets in comperison of the Compo, and as mentioned in the basic info, I worked alone and created the game from scratch, therefore classifying as a Compo project.

 

Jam Rating: 4 out of 5.

 

Character Customisation

Basic Info:
I made a character customisation scene in Unity for my graduation project. The focus of the project was to make a character customisation where the player or developer was able to create characters freely with wide ranging options. The final character (with all customisations applied on it) will be baked on a new mesh. This way the character can be used in game withouth overhead of the blendshapes used for the customisation. This was an important issue for me. It doesn’t matter if your character customisation works flawelessly if you can’t use the characters themself.

 

1, Research, Research & Research

I started my project with the usual research phase. My research concisted of ethnotype research, other character customisations and anatomy transfering into topology. After these steps (especially the last one I mentioned) I was able to start my project and start modelling my base face mesh.

 

 

2, First Prototype:

When the research was done, I was able to start my first prototype. The first question I needed to anwser was if my character customisation is going to be a “Addable” character customisation (a character customisation where the player or developer is able to add certain thing to a character, but never being able to really change the face mesh. The player or developer is able to change the shape of things like the nose into other shapes, but isn’t able to change certain parts of the nose for the nose is a loose object placed on the face).

or a “Addjustable” character customisation (a character customisation where the player or developer is able to change very specific points in a face of a character. Things like the size of the nostrils or other small details. The whole mesh is able to be changed and therefor this way of character customisation has more depth).

 

 

I chose for the last one, this choice was based on the idea that I will be able to create more parts of a character customisation this way. Another big influence was that I wanted the players of developers to make characters they wanted to make. It’s important that they can change as much as they like for that would increase the players enjoyment while using the character customisation.

 

My first prototype used joints to change the basic shapes in the face based on the “addable” character creation system. The mesh is weight painted and reacts on the joints when they are moved around using a rigidbody drag system.

 

I started to implement the same system on a more detailed mesh based on the “addjustable” character creation system. This was the moment I figured out that joints weren’t the way I wanted to go. The joints were producing to much strange artefacts or stretching when they were used on a higher detailed mesh.

I found out there was a better way, using blendshapes. This resulted in a smoother, visually better changeable mesh.

 

 

2, Eyes:

I started creating the eyes. Most people I asked said that they think the eyes are the most important part of a character. The first eye shader was made in Maya. This shader had procedural generated stripes in the iris. The player or developer was able to change the number of stripes and the density of those stripes.

 

When implementing in Unity I wanted to create a customisation option for the color of the eyes. I found out that for a smooth looking result it’s better to use 2 change able colors for the eyes. The first is the center of the iris and the second is the ring of the iris giving it a more divers look. Eyes in real life are never just one plain color, this is something that needs to be reconsiderd when making eyes in 3d.

 

 

3, Skin Shading:

After completing the eyes I started to work on the skin shader (well, actually I started modelling the face, but the modelling part wasn’t really innovative compared to other models so I won’t be talking about it in this entry).

For the skin I wanted to create a system that made it able for the player to change the color of certain spaces of the face.

 


 

 The project can be found here.

Four Nomads – Shaders

Subdivision Shader:

A shader that looks at the texture, and based on the image, subdivides itself to create depth diverences in the used mesh. The shader looks at the brightness of the image and bases the depth on the level of light tints used in the image. This could be used to bake depthmaps fast and flexible making it a fast way to create depth contrast in your floors or ground. The shader can be changed with a slider to change the level of subdiving the shader is able to do. The more the slider is moved to the right, the more subdivision you allow the shader to make. This comes in handy when you don’t want to have too much polygons. The topology isn’t that clean though, this is something I want to come back to on a later time. The animation at the top of this text is captured real time in Unity.

 

Semi Flat Shader + Models:

A shader that combines flat shading with the light in the scene. I always like flat shaded games or scenes, but most of the time these scenes lack good readability for the lack of effect the lighting has in the scene. This is why I created a shader that combines the flat shading technique with the lighting in the scene. This way a semi flat look is created that is usable for low poly scenes. The shader calculates the light intensity per polygon and looks at the color of the light that is effecting the polygon. Based on these calculations the shader blends the vertex colors or texture with a soft version of the light that is hitting the object.

 

Ground Color Gradient Shader:

This shader is created to make the transition between the ground and the foilage on the ground smoother. Before I made this shader, Survive & Thrive had a clear edge dividing the ground and foilage models from eachother. This was bothering me because it destroyed a big part of the immersion.

The shader observes the (world) position of every polygon. If the polygon is closer to a 0 in the Y coordination it will blend more with the chosen “ground color” color. This way a small transition between ground and the model is created on the bottom of the mesh, creating a smoother transition. The distance from which a mesh starts to blend with the chosen “ground color” color is editable with the use of a slider.

 

Distance Alpha Shader:

The trees were in front of the player during playtest of Survive & Thrive. This was really disorientating for the player and needed to be fixed. Especially when the player was walking through thick jungle landscapes. I designed a solution in form of a shader that would make objects like trees and other plants become more transparant if they came to close to the camera. This needed to happen in a transition. We didn’t want any popping to be seen on the screen.

The shader hugely increased the readability of the game and as a bonus created an intriguing effect.

The shader observes the (world) position of every polygon and the (world) position of the camera. It than calculates the distance between the camera’s (world) position and every polygons (world) position. When the distance reaches a certain “variable” of distance the object start transitioning to a transparant object (by using the alpha channel). The shader looks at the given “variable” of thickness (how fast the object needs to become transparant when it comes closer by the camera) and accordingly changes the transparancy. This happens on a polygonal level, creating a disolving effect from top to bottom of the mesh. Making the transition between solid and transparant smoother.

 

Sun Rays Particle:

A particle effect instead of a shader. This particle effect is created to make more “feel” in the game. We couldn’t use the sun shadts effect in Survive & Thrive because the perspective was turned down, towards the player. We wanted to make the light more present, especially when you walked through thick jungle landscapes where sun shafts are common. I faked the sun shafts by creating a particle effect that spawn planes which pivot point are placed on the top. These planes are rotated, this way they rotate around the particle emitter with the top op the sun shaft (plane) still on the emitters position and the bottom on a random position. Creating an illusion of light shining through a pack of leaves.

Diamond Studies

Reflections & Refractions:

The picture above are two diamonds made for an external client. These diamonds aren’t using a texture image. The shading only uses light reflections and refractions. The whole diamond “feel” is purely created by the lights and reflections and light bounces of the the mesh. This is in style of how real diamonds get their aesthetics and look & feel. The diamond consist of two meshes of the diamond shape within each other. This is so the diamond calculates the light it bounces of the edges and polygons (the outer mesh) and the light that bounces and reflects inwards (the inner mesh).

If you combine these two meshes they create a network of light reflections and refractions, simulating the effect of a diamond.

 

 

Low Poly

Basic Info:

Here’s a small collection of low poly models I made for different projects. I found that a post per picture would be a bit too mutch, so I bundled them into one post.

 

Low Poly Axe:

This axe was a model that was created for the first prototype of Survive & Thrive  (project for Four Nomads). It’s an axe created in a low poly style with a photoshop shapes texture. This model was replaced later in the game because we wanted to keep the anatomy of the character realistic thus the shape sizes of the axe were off.

 

Low Poly Portrait:

This portrait was a model that was created for the first prototype of Survive & Thrive  (project for Four Nomads). It was an expiriment on making a low poly bust with enough possibilities to customise it for multiple characters. The bust is very low poly containing less than 150 polygons. The topology follows the facial shapes (cheeckbones and jaw) closely to create a facial silhouette without the use of many polygons. Combined with a semi flat shader in Unity it could do its magic.

 

Carrot Warrior:

A simplistic carrot warrior I created when I had some hours of free time with nothing to spend it on. It was a 3d low poly sketch for a game idea I had about assembling a small tribe of vegetables and taking care of them. I used the leaves coming out of the top of the carrot as skirt for the carrot warrior. The boots were made curly to fit more with the carrot shape of the character.

 

 

 

The Prince 3d version:

This is the 3d version of the vector character “The Prince”. As I wrote in the flat design post, I really liked the flat style character. So I tried to convert it in a 3d low poly style. I used a flat design color palette and made facial planes for the eyes and mouth. This was a hommage to the technique used by Animal Crossing. This made me able to change the image texture in the facial plane material. Changing the emotions or expresions of the character.

 

The T-Rex:

This is a low poly dinosaur I made for the Global Game Jam 2015. Our team decided to make a game where you play a dinosaur and you had to do little tasks. With each player (of the four players) controlling another part of the dinosaurs body. The players needed to work together to reach the goal of the tasks. These could be weird things like biting a rubber chicken or playing piano. The model didn’t got a texture to save time on the asset making proces. It was a jam after all. If we uv-unwrapped the dinosaur, all the other objects would have needed to be too.

 

Secret Santa Jam:

Our class had the tradition to do a “Secret Santa” jam. This ment that in the holiday vacation you would get assigned to a random classmate in secret. You than create a picture, asset or game about that person in your style. I was assigned to one of the Grotman members and chose to not only make him as a character, but also the two most used characters within the game (Tribal & Error) they are developing. This were the robot you played within the game and the caveman which you needed to gife orders.
I started by making the base shape and important details of the characters. With overdoing some of the important parts for more contrast (like the cavemans nose and the buttons on the robot). I kept the person I was making as a placeholder for I wanted to spent the most time on getting him right.

 

After this crude setup I decided to start on the person I was assigned to. The person I got has rather “generic” facial features which made him hard to convert in a simplistic style. This isn’t a bad thing at all but it makes it rather hard to create a character looking like the person because you can’t exaggerate aspects of his face. I chose to make him in a style that looked a bit like the Mii’s of Nintendo. This choice was backed with the idea that if it would be hard to convert the person in a simplistic style, I could also use a style where the character itself looks a bit generic matching the “generic” facial features of the person.

 

The person I was assigned to was the lead programmer of Grotman so I decided to make “bugs” that were attacking him and the two other characters. I placed the cave man in a smashing position, the robot is floating while covering its face in shock and the person himself defends himself with his keyboard, his tool of choice. The “bugs” felt a bit static, this is the reason why I added code referencing particle systems. This ofcourse accentuate them being bugs and all.

 

You can download the project here.