My name is Ivan Mitsov and I am a gameplay programmer, working mostly
in Unity, C#, Unreal Engine and C++.
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.
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)
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
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.
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
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.
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.
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
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.
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.
3D platformer in Unity
Binding of Isaac style game in C#, with random level layout