A Slice of Life & Card game:
I worked as Technical Director at this project.
I made the technical art style and programmed various things.
To see further details, scroll down:

Player controller

WASD Movement & Camera Zoom

Custom Cel-Shader

(alpha Footage)
Works with point lights & directional lights.
See other images of the (final) version in every other screenshot or gif on this site.

Visual Style

Here are different settings of highlights and the smoothing angle of the calculated normals.

Lighting with Unity default lit shader

Lighting with Cel-Shader

Outline Shader
(Custom Render Pipeline Feature)

I made a custom render pipeline feature to add object based screen space outlines. The outline shader works by using
two different edge detection algorithms.
By using the depth buffer it is determining the outer outlines.
The inner oulines are made using a custom buffer,
which renders the gameObjects, marked with the "outline" layer,
with their screenspace normals.
(on the right you can see various settings that allow artists to make atistic choices for the outlines)

(without outlines)

(with outlines)

(with outlines highlighted)

outer outlines
calculated with depth buffer (cyan)
inner outlines
calculated with object normals(red)

special feature
outer & Inner outline

The outlines improve recognition of shapes and complement the Cel-Shader.

Water Shader

I made a water shader using Alexander Ameyes blog post as a tutorial and expanding on it with custom improvements.This Water shader is highly versatile and can bend to many artistic choices, ranging from semi-realistic to cartoony art styles.

application example
water shader ingame

Deckbuilding

Selection of Equipment puts corresponding cards into your deck

Time & Date System

A time and date system controlls the lighting and adds a calendar to the games data.

Character Spawn System

Characters also have a "Spawn Date" from which they can spawn in and a "Kill Date", allowing the creation of date limited events.

Our "Hubworlds" show busy scenes.
We needed a system to give characters a time scedule.
So I developed a spawn system that activates Character acording to the time and their Spawn Table.

Dialogue System

I used the YarnSpinner Package for the dialogue system.
It allows the editors to use a more intuitive writing style for dialogues.
It also adds in localization.
modifications made:
- appearing portraits
- extended controlls with keyboard
- changing speech buble art depending on talking character

Premise

In This Project I wanted to dive deep into shaders, the Unity rendering pipeline and custom inspectors.
Three things I knew absolutely nothing about before this project.
I Also wanted to strengthen my skills as a technical director,
since in this project I was joined by two new programmers to the team.

Context

This was the portfolio project of my 4th semester. Our team consisted of 10 people.
We had three main programmers.
Blood & Sand splits into two parts of the game:
The Card Battler part and the Slice of Life part.
In the slice of life part, the player lives through the life of a gladiator and collects cards for his deck, thus helping him in the card battler part.
One of our programmers already had a functioning card game system, so we chose to split up the team:
- Card Battler Game
- Card Battler Visuals & Animation
- Slice of Life Part, Dialogue & Deck Building (me)
We miscalculated the inexperience of our animations' programmer, which resulted in me having to help out in the card game part of the game.
I made the camera for the Card Battling scene and the UI. We also took a wrong turn focusing on card game mechanics, leaving out the backend of the deck builder.
We ironed out some of those issues by moving one of our 3D artists into the programming department. All these hurdles and wrong turns resulted in a product that had not quite finished gameplay but was technically and visually pleasing.In retrospect, we should have put our entire focus on the card battle part and made a smaller but more polished game.We managed to pass the exam, so it seems that it was okay and the issues were only minor.

Experience Gained

I learned a lot about technical things:- Yarn Spinner (Dialogue System)
- Unitys render pipeline (deferred rendering & outline shader)
Shaders (Cel- & Water- Shader)
- Cinemachine (Camera Systems)
- Lighting
- custom inspectors
- custom structs
With that, I achieved my premise and learned completely new things I had not dealt with before. I was also responsible for the look of the 3D graphics and I am happy with how the Cel-Shader in combination with the Outline-Shader worked out. With custom structs & inspectors, I also found a new passion for creating editor tools.I also learned a lot about teamwork and management:- It is better to aim for way less functionality:
The last 10% of polish really needs exponentially more time and there should be enough time to account for that. I also learned to better estimate the abilities of a new programmer and the time it takes to close the knowledge gap.
- Communication between the backend and frontend is key:
The work between backend and frontend only really works with proper documentation. During production, I told our Card Battler part programmer to document his work, so I could implement the frontend better later. But he argued that he had to constantly rework his backend structure, so I shrugged it off. So I changed my approach. Whenever I needed something, I asked him. This approach seemed not to work, though, because I always had to wait for the other programmer and also, having the freedom to change the backend API meant that certain frontend functions stopped working whenever the backend API changed too much. It is important to set restrictions on the backend in order to maintain a working code with the frontend.