---
# System prepended metadata

title: Juha Oinonen portfolio

---

# Juha Oinonen portfolio
# Menu
[Introduction](#Introduction)
[NodeJS](#NodeJS)
[MySQL](#MySQL)
[C++ math modules](#C++)
[Unity](#Unity)
[Unreal Engine](#Unreal)
[3D](#Blender)

# Introduction

Looking for internship opportunities.

Currently in process of finishing my studies at Karelia University of Applied Sciences in Business Information Technology with a focus in software and game development.

I am very familiar with NodeJS, Unity and Unreal.

I'm always eager to learn and I love problem solving. I live and breathe PC gaming and am very passionate about e-sports.

My main qualities are patience, perseverance, and humour.

LinkedIn:
https://www.linkedin.com/in/juha-oinonen/

Contact email:
juha@oinonen.nl / 1900898@edu.karelia.fi

# NodeJS

REST API
--
A REST API Server & Client for a spaceship switchboard.

Done initially for a course project.

Also includes Swagger documentation for REST server that can be found on /api/docs/.

https://gitlab.com/nadyli/switches

IRCBot
--

IRC chatbot developed from the ground up. Most of the work done by me and some of the functionatility done by my friends.

A NodeJS app that includes:
- Sockets
- Events
- Enviroment files
- Services

Functionatility:
* Setting up and maintaining connection to QuakeNet network.
* Authenticating with the Q service
* Automatically joining wanted channels
* Getting a topic from website when detected
* Handling different twitch streams and seeing if they're online or not with a command
* Basic command adding/removing for basic text
* Basic CI/CD workflow from Gitlab through SSH

https://gitlab.com/nadyli/ircbot

[Top](#Juha-Oinonen-portfolio)

# Misc

## MySQL

Design documents and creation of a database
https://gitlab.com/nadyli/mysql-showcase

[Top](#Juha-Oinonen-portfolio)

## C++

Math modules
https://gitlab.com/nadyli/vectormath

[Top](#Juha-Oinonen-portfolio)

# Unity

* Pathfinding A*
    * Basic A* pathfinding functionality
    * ![](https://i.imgur.com/tXwgdFq.png)
    * [Link to demo](http://oinonen.nl/reittihaku/)
        * Controls: 
        * Left click:
            * Pick up dynamic barriers (blue)
            * Select movable objects (white)
        * Right click
            * Find path to selected grid position
        * Bottom left button
            * Toggle grid visibility
* Mazebuilding
    * Build & pathfind a solvable a basic maze
    * ![](https://i.imgur.com/Zd9YOjQ.png)
    * [Link to demo](http://oinonen.nl/mazepath/)

[Top](#Juha-Oinonen-portfolio)

# Unreal
* SideScroller

[![2D Side Scroller](http://img.youtube.com/vi/cSQupKM8wJE/0.jpg)](http://www.youtube.com/watch?v=cSQupKM8wJE "2D Side Scroller demo")
Image will open YouTube video

## Functionatility
* Behaviour Trees

This robots actions are being determined by behaviour tree.

[![Behaviour Tree showcase](http://img.youtube.com/vi/H3m3gPzHr0s/0.jpg)](http://www.youtube.com/watch?v=H3m3gPzHr0s "Behaviour Tree showcase")
Image will open YouTube video

* Dialog Tree

[![Dialog Tree showcase](http://img.youtube.com/vi/eoEopo7ch6o/0.jpg)](http://www.youtube.com/watch?v=eoEopo7ch6o "Dialog Tree showcase")
Image will open YouTube video

* Perception

[![Perception showcase](http://img.youtube.com/vi/5j5NkqmPJn4/0.jpg)](http://www.youtube.com/watch?v=5j5NkqmPJn4 "Perception showcase")

* Utility Function

This cleaning robot uses utility function to determine if he should be cleaning, recharging or emptying his internal container.

[![Utility Function showcase](http://img.youtube.com/vi/LVcBjxZ7_dc/0.jpg)](http://www.youtube.com/watch?v=LVcBjxZ7_dc "Utility Function")
Image will open YouTube video
* Enviroment data (EQS)

This little robot uses EQS data to hide from the player.

![](https://i.imgur.com/OTC1mwv.png)

[![Enviroment data (EQS) showcase](http://img.youtube.com/vi/inRo1vGfjb8/0.jpg)](http://www.youtube.com/watch?v=inRo1vGfjb8 "Enviroment data (EQS)")
Image will open YouTube video

* Rotating surveillance camera with player detection

![](https://i.imgur.com/ZwpubZW.gif)

[C++ code](https://gitlab.com/nadyli/unreal-code-showreel/-/blob/main/SurveillanceCamera.cpp "C++ code")

* Asteroid Field spawner

Dynamically create asteroid field around the player.

[![Asteroid Field spawner showcase](http://img.youtube.com/vi/3b0VPbaqRaE/0.jpg)](http://www.youtube.com/watch?v=3b0VPbaqRaE "Asteroid Field spawner")
Image will open YouTube video

[C++ code](https://gitlab.com/nadyli/unreal-code-showreel/-/blob/main/AsteroidField.cpp "C++ code")

[Back top](#Juha-Oinonen-portfolio)

## FX

- Sparks

![](https://i.imgur.com/yJr8kf6.gif)

- Explosion

![](https://i.imgur.com/R20bCz9.gif)

- Guide To Object

![](https://i.imgur.com/sJsk4Fx.gif)

[Top](#Juha-Oinonen-portfolio)

# Blender
Hugo
--
![](https://i.imgur.com/te1nfzQ.gif)
Beartrap
--
![](https://i.imgur.com/D38o1Q7.gif)

[Top](#Juha-Oinonen-portfolio)
