1/ Round based survival
UNREAL ENGINE / BLENDER
A solo dev game project I started during my first year of studies at XAMK. This is probably going to be a long term project I develop on my free time. The goal is to learn all steps of game development, learn Unreal Engine, develop and eventually release a full game.
/ PROGRESS REPORT 1 /
14.05.24:
/ First I started the project using Unreal Engines third person character template, then I made a new player character using metahuman creator plugin.
/ After the character was done, I started looking and collecting clothing assets. After gathering these assets, I started adjusting the third person template to first person camera for "true first person".
/ Then I changed the default mannequin mesh to metahuman character mesh I created previously. After successfully replacing the mannequin, I exported the metahuman character to blender. In blender I modeled pants & boots previously acquire to the characters body mesh, then I exported this new body back to Unreal Engine.
15.05.24:
/ This day went by modeling a vest to characters body mesh. I also tried creating another character with metahuman and adding custom textures. I eventually scrapped the second character because metahumans are too performance heavy and optimizing would be hard using multiple metahumans. I looked up tutorial series to follow for creating the base foundation of the game.
19.05.24:
/ Here I adjusted the player movement & made sprinting. I also added assault rifle asset to the game, then I adjusted characters hands and pose by making a weapon socket & left hand ik socket. Lastly I coded and modified weapon sway when moving.
20.05.24:
/ Made weapon base blueprint for upcoming weapons, first being the assault rifle. Then I proceeded coding basic procedural recoil system & raycast firing. I also coded server replication for player movement, firing and sound. Lastly I made aim down sights mechanic.
21.05.24:
/ Here I started making the base item data table & data structures. After success, I coded weapon switching and added server replication. After a break, I coded bullet reducion logic & reloading.
23.05.24:
/ Continued to follow the tutorial series & coded a basic item drop and pickup.
26.05.24:
/ Added a pistol to the game & coded a single fire logic for it, as the base logic is autofire.
27.05.24:
/ Edited pistol aiming offset to match center of the screen, also edited pistol animation state. Made a leaning system from the tutorial series as well, but ended up scrapping it because I'm not planning on having leaning on my game. Then I coded and added bullet hit decals for different surfaces.
28.05.24:
/ Here I googled and searched up couple discord groups on how to create a magazine system, as I only had bullets from the tutorial. I faced multiple issues during this, trying things different ways until finally managing to make something that worked. I also continued modifying pistol animation states, then I made multiplayer replicated bullet projectiles to replace the raycast firing.
20.08.24:
/ This day I spent fixing some bugs in the code, like canceling the fire code when switching weapons or reloading using boolean variables. I also made shell ejection system, so when player is shooting the gun is spitting shells. Added multiplayer replication for this as well.
21.08.24:
/ I looked up how to create custom animations in Unreal Engine and started making my first custom animations for walk, idle, run & aim states while player is holding assault rifle. Also made minor updates/fixes on code.
22.08.24:
/ Continued making custom animations, this time for when player is holding a pistol. After I was done creating all the animations for both gun poses, I figured an issue where my pistol animation state had slightly different body pose than rifle animation state. This issue caused the camera that is attached to players neck bone to zoom slightly in and out when switching weapons. I tried fixing the issues by changing camera to a socket instead of bone, but it didn't work. Next best thing I came up with was to re export all the pistol animations again after changing the character body location & rotation axis to match rifle state. This fixed the issue.
23.08.24:
/ Modified code and animation states so when player is jumping with weapon in hand, the character upper body pose is idle. I also looked up how to make crouching and implemented this to my game. Finally I modified the handsway for more realistic feeling.
24.08.24:
/ Started making custom weapon reload animation for the assault rifle. Added server replication for the custom animation so it plays on multiplayer environment for other players as well. Then I edited anim states based on movement or action.
25.08.24:
/ Refined weapon and movement logic code. Made custom equip animation for assault rifle, inspired by Counter Strike 2.
26.08.24:
/ Made custom equip animation for pistol & fixed some bugs.
27.08.24:
/ Playtested the game and noticed that the weapon equip animations feel little too slow for my taste, and speeding them up would look kinda funny, so I decided to make a universal equip animation for all weapons. Some code fixes.
28.08.24:
/ Searched up how to create widgets in Unreal. Added crosshair, added and coded ammo count & magazine count UI. Modified the code to stop player using interrupting actions when reloading or switching weapons.
29.08.24:
/ Added shotgun to the game, modified firing code for shotgun. Added LMG to the game, made custom reload animation for LMG. Made custom pistol reload animation. Some bug fixing.
03.09.24:
/ Added first enemy to the game, a zombie model. Looked up how to do hit detection in Unreal, then spent hours trying to implement that on my code base. I needed to add a custom collision channel for bullet projectiles, because otherwise they would always collide with the enemy capsule no matter what base channels I set, causing bone hit data to come back as none. In my system the bullet projectile sends out damage value based on what bone it hit, then multiplying the base weapon damage retrieved from weapon data table.
/ PROGRESS REPORT 2 /
05.09.24:
/ Added death code for enemy in take damage function. Made hitmarker code & logic, also replicated the hitmarker. Started making base enemy AI, added animation states to enemy, made code for enemy attack, player receive damage & health restoring.
07.09.24:
/ Added temporary bloodscreen border image to project & made code for it to trigger when player gets hit. Made code for player fall damage & enemy fade out after death.
08.09.24:
/ Made basic enemy spawner & game mode with round system, which increases zombie stats every round. Added damage indicator & code when player gets hit. Made points system & code for it, enemy hits & kills increase points.
14.09.24:
/ Made base stamina system. Debugged & fixed a bug in round system where zombies alive counter would subtract zombies even after death.
15.09.24:
/ Fixed bugs in stamina system, causing the stamina regeneration to stall. Fixed a bug in pistol jump anim state, caused by run state stop left hand ik function.
16.09.24:
/ Overall minor bug fixes, adding conditions to reload & weapon switch. Fixed hit detection by making enemy physics body parts smaller. Fixed enemy collision with each other. Cleaned up the blueprints code.
17.09.24:
/ Trying to solve replication issues from new code. Fixed movement replication. Decided to focus on gameplay first, and come back to replication later on in the project.
22.09.24:
/ Made interaction system base code.
23.09.24:
/ Started making code for weapon purchase & ammo purchase. Troubleshooting issues with the code & fixing.
24.09.24:
/ Reworked weapon switch & weapon structure. Made code for player weapon slots. Made code for weapon purchase & ammo purchase. Troubleshooting, fixing issues & cleaning up old code. Reworked the ammo system. Replaced bullets & mags system with more traditional ammo & reserve ammo system.
25.09.24:
/ Reworked weapon equip code, weapon switch code & weapon switch animations. Updated weapon & ammo purchase code. Fixed some bugs & cleaned up code.
27.09.24:
/ Continued refining weapon & ammo purchase code. Fixed a bug in health restoring, so it stops when player gets hit.
28.09.24:
/ Started learning level creation tools in Unreal Engine. Created first level with custom assets and modified lighting, fog & post processing effects. After 12 hours of playing around, I decided to move some assets to another folder, which caused the whole level to break down. Added a marketplace asset "procedural dismemberment kit" to project to test on enemies.
29.09.24:
/ Made the first level again which broke previously. Updated bullet collision code, updated bullet decals, idealizing possible level design.
30.09.24:
/ Made interactable doors. Modified enemy spawner code to randomize enemy spawning between different spawners, and based on which area is open. Made base code for stabbing, made custom stab animation, made line trace for stabbing, enemy hit & object hit code. Bug fixing.
01.10.24:
/ Edited level lighting & troubleshooted performance issues.
02.10.24:
/ Tested out another character model, rigged the character to epic skeleton in blender, but ended up scrapping because didn't work out as I thought. Also tested adding gloves to metahuman in blender, but ended up scrapping that as well for now.
03.10.24:
/ Troubleshooted performance issues and found out travelling projectiles have a huge impact. Reworked the whole shooting code, moved from projectiles to traditional line trace for improved performance. Added hitmarker effect for knife hits as well. Overall bug fixes.
06.10.24:
/ Tested out different character mesh again on player. Realized that even the original metahuman character mesh had come up with deformation issues. Planned workflow to refining pistol animations for better hand placement.
07.10.24:
/ Reworked all pistol animations. Run, walk, idle from scratch, reload using the old reload animation sequence I made.
09.10.24:
/ Continued refining pistol reload animation. Troubleshooted the mesh deformation issues. Fixed the issue by changing the skeleton retargeting options. Fingers still had minor deformations, only way I managed to fix this is by setting minimum LOD to 1 (weird, but it works).
10.10.24:
/ Refined pistol reload animation. Modified rifle animations but ended up not using them. Made the level smaller, modified the lighting to night scene, added moon, modified enemy LOD to minimum 1 for improved performance.
14.10.24:
/ Made physics based sliding. Modified player movement. Added more blending time for animations. Refined the sliding & movement.
18.10.24:
/ Fixed slide to jump bug, which caused run animation to slightly pop up before desired idle state. Fixed knife while aiming bug by disabling knifing when aiming. Fixed reload - aim - run state change animation bugs. Adding automation with action after function & conditions if player holds down keys while performing other actions.
21.10.24:
/ Fixed movement run axis, so player can't run backwards or sideways. Overall bug fixing & action after modification.
23.10.24:
/ Stab, run, jump, aim, shoot state change bug fixes & improvements.
/ PROGRESS REPORT 3 /
29.10.24:
/ Fixed zombie hazmat suit materials, fixed bug in enemy give damage that caused the enemy to sometimes give player damage even after death.
12.11.24:
/ Started creating a new main level, made elevator blueprint base.
18.11.24:
/ Upgraded project from engine version 5.4 to 5.5, testing if everything still works.
13.12.24:
/ Continued creating the new main level & learning level design tools in Unreal Engine. Added new skybox, "greyboxing" a prototype of the level, testing materials.
14.12.24:
/ Continued figuring out the level design & testing Unreal Engines box brush, and modeling tools. Created a landscape using heightmap & learing about texture tiling possibilities.
15.12.24:
/ Tried removing camera shaking caused by controller recoil, did not succeed yet. Some level design.
16.12.24:
/ Level design for the new main level.
17.12.24:
/ Continuing level design for the new main level, learning about lighting and greyboxing from YouTube videos.
18.12.24:
/ Level design, replaced the old box brush meshes with Unreal Engines modeling tool meshes for improved features and polycounts. Creating a modular kit for building.
19.12.24:
/ Level design and bullet hit emitter spawn normal fix.
28.12.24:
/ Clearing up project from unused assets and files. Preparing project for updates.
29.12.24:
/ Remade sliding and crouching code, adding animation for sliding & crouching, tweaking sliding and crouching code, bug fixing.
03.01.25:
/ Improved player body aim rotation and movement animations. Slide, crouch, walk, run state tweaking.
04.01.25:
/ Tried replacing the player character with new optimized metahuman, troubleshooted issues during the process, reversed changes and planned a new method.
05.01.25:
/ Fixed foot iks for the metahuman skeleton, but left disabled for smoother movement on ramps. Replaced the player character with new game optimized metahuman, remade and tweaked animations, fixed bugs in movement state changes, cleaned up code and project.
06.01.25:
/ Learning about adding and sculpting clothing assets for the character mesh in Blender, troubleshooting rifle arm position mismatch with the animation. Fixed rifle pose arm bending and animation mismatch issue by modifying left hand ik code and animation. Testing adding a jacket for the character mesh using Blender, but had issues with the jacket mesh clipping body in undesired way on some animations.
07.01.25:
/ Tried to modify the jacket and gloves for better deformation on character mesh using Blender. Weight painting and sculpting, but still having issues here.
09.01.25:
/ Fixed player, camera and gun wall clipping with new first person field of view scaling option in Unreal, adjusted near clip plane as well.
10.01.25:
/ Reworked and improved movement and input action states significantly, cleaned up blueprints code.
13.01.25:
/ Code improvements, cleared project from old animations. Continued finding and fixing bugs in input action states and state switches, fixed stab/reload and crouch/weapon switch bugs.
14.01.25:
/ Modified reload code, if 1 or more bullets left in mag when reload -> eject shell (just a random temporary solution, until i make another reload animation for bullets left state). Play testing and tweaks, cleaning and improving project and code.
15.01.25:
/ Enhanced dismemberment system by adding linked bones and bones to ignore. Made a new take damage after death function on enemy. Polished action states and state changes code, changed field of view and camera height. Cleaned project from old animations and remade pistol animations to match rifle pose for precise camera position on both anim states. Cleaned old data table rows, added new "invisible" body mesh to be used with clothing. Fixed dismemberment system performance issues by pre baking meshes, modified enemy start attack range, modified round system enemy difficulty, modified blood effects/decal.
17.01.25:
/ Modified blood spawner life span and decal despawn rate.
19.01.25:
/ Improved player + enemy collision, improved limb collision, fixed player state bug when reloading and buy gets declined, fixed bug on dismemberment system that sometimes caused unwanted invisible collision after dismemberment.
20.01.25:
/ Added flip flop for courching, modified check action after function to work with controller as well, improved crouch state and slide state checks, added two new weapon assets, implemented deagle weapon asset and added fire animation for the weapon, added new sounds, tweaks.
21.01.25:
/ Made reload animation for deagle, added and made new reload sounds by combining free sound assets, modified reload code to include reload sound per weapon data table info, and stop sound when reload is canceled.
22.01.25:
/ Modified reload sounds in Vegas Pro, testing.
PROJECT STATUS: ACTIVE
X
TOTAL WORK HOURS: 444
Issues Detected/ Severity: low
/zombie ai needs work.
/new updates have not been replicated yet.
/lighting, level design, audio, effects & optimization needs work.
2/ Lada Space Trainer
UNITY ENGINE / 3DSMAX
Endless runner game made as a team project. The goal of the project was to learn the basics of Unity Engine, C# programming, and overall game development. In this project, the three of us rotated between roles like programming, UI design, and asset creation to gain as much experience as possible.
/ PROGRESS REPORT /
04.09.24:
/ We got together as a team and brainstormed ideas for the game we were going to make. We created a short Game Design Document (GDD) to outline the project's goals and define our approach. Once the GDD was completed, we set up a Git repository for our project.
11.09.24:
/ We started experimenting with Unity Engine and setting up the base of the game. I worked on a ground spawner script to generate the endless road as the car moves forward. The script spawns 15 tiles initially, and as the vehicle progresses and passes a tile, the previous tile is removed, and a new one is added at the end. I also replaced the default skybox with a free asset from the Unity Asset Store, modified the level lighting, and added a boosting ability to the vehicle script. However, we later decided to scrap the boost feature.
18.09.24:
/ I modified the ground spawner script to select randomized tiles from an array, allowing us to create prefabs from road pieces and randomize their spawning. Once the ground spawner was complete, I added a trigger for player collisions with obstacles and updated the player movement script.
25.09.24:
/ I created the game over UI, implemented code to trigger it when the player crashes, and added a restart button with functionality.
02.10.24:
/ I made new prefab tiles with obstacles, edited the player movement code, and troubleshot various issues.
09.10.24:
/ I adjusted the game over UI layout and updated the speed variable to use an animation curve instead of set values, making it easier to adjust the difficulty curve.
16.10.24:
/ I corrected the in-game UI score anchoring. Additionally, I designed a new obstacle in 3Ds Max, UV unwrapped it, and textured it in Photoshop.
30.10.24:
/ I found and fixed a bug in the ground spawner that caused tiles to overlap. I also started creating a new moving obstacle in 3Ds Max.
13.11.24:
/ I UV unwrapped the new moving obstacle, created textures for it in Photoshop, and then imported it into Unity. Afterward, I made a new tile prefab with the obstacle.
20.11.24:
/ I created a platform for the car selection scene in 3Ds Max, UV unwrapped it, added textures, and imported it into Unity. I also edited the car selection scene, adjusted the scene lighting, and fixed score UI anchoring.
27.11.24:
/ I resolved some UI scaling issues and designed another moving obstacle. I then created new tile prefabs using the obstacles we had so far.
04.12.24:
/ I continued making new obstacle tiles and modified the ground spawner code to spawn specific tiles at certain difficulty levels while maintaining regular tiles between moving obstacle tiles.
11.12.24:
/ I downloaded a free motorcycle asset from the Unity Asset Store and added a previously created character as a rider. I integrated the new vehicle into the car selection scene and updated the code to make it functional. I also fine-tuned the fonts in the game over UI.
12.12.24:
/ I updated the game code to disable the cursor while playing and enable it when navigating menus.
18.12.24:
/ We participated in the Demo Day event, showcasing our project alongside other students in game programming and game technologies.
PROJECT STATUS: COMPLETED
3/ Portfolio Website
HTML / CSS / JAVASCRIPT
/ Portfolio website designed & made from scratch using HTML, CSS & JavaScript on Visual Studio Code.
This project was completed as part of the final assignment for the "Website Basics" course. Through this assignment, I gained valuable insights into the website development process.
/ The plan was to create a modern looking website, responsive for both mobile & desktop use.
Starting off, I made the site foundation by creating a responsive navigation system & main div with styling.
/ Navigation system is handled with JavaScript for UI smoothing.
Functions like showSidebar() and hideSidebar() control the sidebar's visibility and animations, while toggleMenuButton() enables easy toggling of the sidebar.
handleResize() ensures that navigation stays clean & doesn't break by adjusting elements based on window size changes.
/ At home page, the "welcome" text is animated in CSS. Video background is recorded by me, blurred & looped.
PROJECT STATUS: COMPLETED+UPDATING
Issues Detected/ Severity: Low
/site view starts to break when screen width is less than 300px.
/home page can have some overlapping issues if screen height is less than 300px, while screen width is more than 1150px.
/some progress updates are very long and can glitch out on mobile, usually fixes itself after reopen.
4/ insinööri board game
design / planning
/ Board game I designed as a final assignment for "Introduction to game production" course.
This project was completed as a group assignment, where my task was to design the board.
/ Starting off, we planned the root idea together, then I started to plan and design the board solo.
/ First I made a draft version with paper and pen, then later I designed the final version with Photoshop.
/ The narrative is to describe route to engineer. Game pawns are moved with dice, but there is a trick.
You have to get exact right number to advance on to the next "course".
/ So, if you roll 6 you move to 6. Then next round you roll 4 you move to 8. Why? Because of the colored courses.
You rolled 1 extra of the 9 where course would end, so you have to move that 1 back. You have to get exact number to get to next course.
/ Game also contains cards for each courses numbers, so when you land on a number you need to complete a task or next round your turn is skipped.
The cards also contain some "fun" stuff, but you'll have to play to find out.