X

About Me


My name is Ivan Mitsov and I am a gameplay programmer, working mostly in Unity, C#, Unreal Engine and C++.





Unreal Engine Multiplayer Casino


Company project


An Unreal Engine multiplayer game made to simulate a casino in a virtual world with social features. Developed at my internship at Animajor - Sofia, Bulgaria.
My responsibilities:


• Game Logic - The logic of classic casino games to be implemented into the game.
• Multiplayer - Every game had to be with multiple seats and work in multiplayer while everything is synchronized.
• API - A backend had to be used to keep track of players' profiles and balance.
• UI - Implementing all of the UI from Figma to Unreal.
• Motion Capture - Setting up a mocap environment and suits and importing the animations and retargeting them.

Car Simulation in Unity


Personal project


A prototype of a car simulation made in the Unity engine aiming to use real life values to create and configure cars to be used in games.


• Suspension - it keeps the car above the ground and responds to unevenness in the terrain. It is highly customizable and will work for any type of car, even monster trucks.
• Ackerman Steering - I've implemented a technique for steering used in cars in real life in which the front wheels rotate by a different angle to accommodate for the difference between the distance to the turning circle center.
• Customizable engine - the engine script has a graph in the inspector which allows me to input any engine properties and the code will adapt accordingly. It uses real life values for all calculations.
• Gears - Added manual gear switching which also uses real values of the car's gearbox and it's gear ratios.
• Flexibility - The code is well adapted and importing new cars involves dragging in a new model and adjusting it's numbers(engine, weight, gearbox)

Online Multiplayer Game in Unity


Personal project


A project made in Unity to learn and experiment with Unity Netcode for Game Objects. A free for all first person shooter deathmatch.


• Networking - this project uses Netcode for GameObjects and Unity's Relay system to easily host and join a lobby without the need for dedicated servers and port forwarding
• Shooting - A hitscan method is used to detect bullets and then a trail system shows the trajectory. A simple recoil system, sounds and particles were added to improve game feel.
• Movement - The movement is highly customizable and was tweaked to give the best responsiveness to the player. It has custom gravity for the jump, custom acceleration and decceleration. The slide mechanic allows the players to quickly gain speed and gains even more if sliding down a slope.

Download Game

The Chair


Group project


A VR seated horror experience in Unreal Engine.


• Scripting - I implemented tools to help artists easily add sounds and effects at a specified time and a function to wait until the player is looking towards the action before playing key animations.
• Graphics - I was in charge of post-processing to make sure I set the correct mood and lighting while keeping in mind the performance.

2D Platformer in Unity


Personal project


A base project for future use which includes the most common features in platformer games.


• Custom acceleration and decceleration - Custom physics calculations still using Unity's Physics System.
• Coyote Time - Allows the player to jump shortly after leaving the platform.
• Jump Buffer - If the player presses jump before landing it buffer it until the player touches the ground.
• Jump Curves - Custom control over the gravity at any point of the jump.

Play In Browser

C++ RPG


Personal project


Produce Abuse is a small turn-based game inspired by Pokémon made with C++ and SFML. It's made with OOP in mind and characters' data is read from text files. It has a simple AI and high scores. Code structure is based on custom GameObject class I made, which is meant to be similar to Unity's, because that's what I'm most familiar with.


Bleached


Group project


A prototype of a rouguelike made in 3 weeks in Unity by 6 people.


My contributions:


• Gameplay - I developed the movement to feel good and responsive, including some vector calculations to take the isometric perspective into account.
• Rolling - Using raycasts I made it so you can roll through specific objects and testing if there's an obstacle on the other side and prevented clipping into walls.
• Shaders - All of the shaders - grass, bushes and see-through material.
• Random level sequence generation
• Saving/Loading.
• UI, Pause screen, other misc.

Plastic Tide


Group project


A prototype of a rouguelike made in 3 weeks in Unity by 6 people.


My contributions:


• Gameplay - I programmed boat controls for all types of controllers, using exponential graphs for turning to make it more fun to play.
• Fishing Minigame - Including probabilty sliders and other designer tools.
• Menus - Sound options, tutorials, main menu.
• Shaders - Water shader re-used from Shader Personal Portfolio, but I cartoon-ified it.

Itch io page

Shader experimentation


Personal project


I wanted to experiment with shaders and learn something new with each of them so I created a few to learn a new technique with each of them. I set up a Unity scene and decided to make a MOBA-type character controller, so I can have more freedom in the theme of things.


• Outline shader - By expanding the mesh I found I can achieve a somewhat good outline effect.
• Shield shader - Experimanting with UVs, time, transparency and emission I created a shield effect.
• Grass shader - A shader which uses time to displace the top o the grass blades to make it look like wind blows, and using the player's position to move them apart when he's passing through.
• Portal shader - Learning about Unity's depth texture and distortion I made a swirling portal.
• Water shader - Using gerstner waves I managed to make a somewhat realistic water shader and combining the portal distorion in it.

Active Ragdoll Experimentation


Personal project


My goal was to learn about procedural animation by making a ragdoll which can play animations.
My inspirations were Gang Beasts and Human Fall Flat.


• Inverse Kinematics - Using a basic setup I am setting the IK goal's position to where the raycast hits.
• Automatic Stepping - After the leg's goal gets too far away from the body I move it to the opposite side and lerp the position with a sine wave.
• Ragdoll - The character is set up with a collision and RigidBody on each bone and a configurable joint connecting them all.
The joint also has the spring force enabled to try to adjust the rotation to the default pose.
• Copy Animation - By setting the target rotation of the joints to be the same as those of an animated copy of the character, the ragdoll should be copying the desired animations.

Other Games


Other games I've made all by myself inclduing all assets


3D platformer in Unity


Binding of Isaac style game in C#, with random level layout