Hi, I'm Martin Gulis.

Self-driven Senior Software Developer with a passion for problem-solving and programming.

About

My main focus during my professional career is 2D/3D Graphics and Game Engines. Learning new languages or technologies is never a problem.

  • Engines & Platforms: Unreal Engine, Unity 3D, Microsoft Azure
  • Libraries, Frameworks & SDKs: ARKit, ARCore, OpenCV, OpenGL, Three.js, .NET, Django, Angular, React, WPF, Node.js
  • Languages: C, C++, C++/CLI, C#, Python, Java, Objective-C, Swift, TypeScript, JavaScript, Go, HTML, CSS
  • Databases: PostgreSQL, SQLite, Redis, Elasticsearch
  • Other: REST API, UML, Git, Perforce

Experience

Developer
  • Designed REST API and implemented WCF RESTful Service tailored for offline-first data synchronization using C#.
  • Designed and developed offline-first multi-platform 3D editor using Unreal Engine and C++.
  • Developed libraries for Linux and Windows to automatically convert and simplify 3D model files from CAD to triangle mesh formats using C++, C++/CLI and C#.
  • Performed all aspects of the development lifecycle, including translation of client requirements into software requirements, time estimation, development and deployment of 3D virtual reality applications for Windows using Unreal Engine and C++.
  • Developed and shipped interactive 3D augmented reality applications for iOS and Android using Unreal Engine, C++ and Objective-C.
  • Developed application prototype for 3D scene reconstruction running on iOS using LiDAR and Swift.
  • Developed application prototype for Vuzix augmented reality glasses using Vuforia Engine, Unity 3D and C#.
  • Developed an algorithm to detect whether objects have moved relative to each other from their original position using OpenCV and Python.
July 2019 - Present | Bratislava, Slovakia
Application Developer Junior
  • Integrated an open-source C++ simulator for electronic circuits into Unreal Engine in the form of a plugin.
  • Implemented and integrated a data collection plugin based on the Experience API specification into an existing Unreal Engine project using C++.
  • Developed a C++ library for parsing DICOM files.
  • Implemented shaders for volumetric ray marching in Unreal Engine.
July 2017 - June 2019 | Bratislava, Slovakia

Projects

Spice plugin logo
Spice - Plugin

A plugin made for Unreal Engine to solve electronic circuits

  • This plugin solves electronic circuits and displays the results on an interactive graph.
  • The plugin utilizes ngspice - the spice simulator for electric and electronic circuits.
  • Features:
    • Define electronic circuits by netlists. A netlist consists of a list of electronic components and the nodes they are connected to.
    • Start the anaysis in a background thread.
    • Pause and resume the analysis.
    • Alter device and model parameters of the circuit while the analysis is paused.
    • Modify and simplify data for displaying on graphs.
    • Visualize data on an interactive graph. Drag, zoom and hover over the graph to display the specific value.
    • If there are more than one circuit, they are scheduled to start one by one, because Ngspice can solve only one at a time.
  • Tools: Unreal Engine, C++, Blueprints
Archer in the forest game screenshot
Archer in the forest - Game

A game made in Unity 3D

  • This game is a school project developed during the Game Development and Design Course.
  • It is a single-player action role-playing game with permanent death. The game is 3D with top-down (isometric) camera.
  • Player character is an archer surrounded by a forest.
  • The visibility of the environment around the archer is reduced by a fog of war.
  • Shoot arrows to hunt animals.
  • Arrows are the main resource which can be crafted using branches found in the forest.
  • Animals drop hides when killed which can be used to upgrade or heal the archer.
  • The main theme of the game is exploration. The world is infinite and procedurally generated.
  • Tools: Unity 3D, C#, HLSL
Portal 2D Game screenshot
Portal 2D Shooter - Game

A game made in Unreal Engine 4

  • This game is a game jam project I did during summer break.
  • The developement duration for the whole project was only 2 weeks.
  • The goal was to make a game during short period of time and prioritize, so it is missing many features.
  • Player character is trapped in a closed space.
  • Turrets spawn periodically and the player needs to destroy as many as possible before he is killed.
  • The player also needs to avoid falling debris from the ceiling.
  • The player needs to create two-way portals around the room to redirect falling debris or turret projectiles back at them.
  • Tools: Unreal Engine 4, Blueprints
Warehouse application screenshot
Warehouse - Application

An application made in Unreal Engine 4 for virtual reality

  • This is a sandbox application to develop many reusable features for virtual reality in Unreal Engine.
  • It is a base engine that was customized for specific clients based on the assignment.
  • The applications were used mostly for virtual trainings.
  • Examples of the reusable features:
    • Controller models in 3D - highlighting which buttons are currently pressed.
    • Teleportation and movement of the user.
    • Object interaction based on object collisions near the controller.
    • Object interaction based on capsule trace to pull an object towards the controller and pick it up.
    • Object interactions - pushing buttons, picking up objects and opening doors.
    • Object snapping based on collisions.
    • Interaction with 3D Widgets.
    • 3D Inventory space.
    • Board to display workflow.
    • Account management.
    • Tracking user statistics during the virtual training and exporting them to files.
    • Showing outline or inline for objects of interest using post-processing.
  • Tools: Unreal Engine 4, C++, Blueprints
Sfera AR application screenshot
Sfera AR - Application

An application made in Unreal Engine 4 for augmented reality

  • This is a marketing tool to display models in augmented reality.
  • It was developed in Unreal Engine for iOS and Android platforms.
  • The application utilizes image detection to detect images and display models on top of them.
  • Users can move, rotate and scale the models.
  • Additional features included:
    • The ability to slice the models to see the insides.
    • Breakdown (Explode) of the model parts using animations.
    • Showing names of specific parts of the models.
    • Playing audio for the specific parts of the models.
    • Showing media flow in tubes using arrows.
    • Showing temperature in tubes using color gradients.
    • Pausing the flows.
  • Tools: Unreal Engine 4, C++, Blueprints
AOI application screenshot
AOI - Application

An editor application made in Unreal Engine 4

  • This is an editor application for Microsoft Windows, iOS and Android platforms.
  • It was developed in Unreal Engine primarily for virtual and augmented reality, but perspective and orthographic modes are also supported.
  • The main purpose is object layouting, creating workflows and displaying data from embedded systems.
  • A client-server model is used. Users create scenes that are sent to the server.
  • The created scenes are synchronized across all of the devices in real-time using simple polling.
  • The application can also be used offline. All changes are synchronized when the user comes back online.
  • The primary scene object types are texts and models.
  • Texts can be static or change dynamically.
  • Models are downloaded from the server and loaded at runtime.
  • PBR materials including textures are supported.
  • Tools: Unreal Engine 4, C++, Blueprints, Objective-C, C#, SQLite, REST API
Mesh Decimator screenshot
Mesh Decimator - Tool

A tool made using OpenCascade and Assimp in C++

  • This is a tool for importing CAD model files and exporting triangulated model files.
  • The CAD file is imported and triangulated using OpenCascade.
  • The data is transformed into Assimp structures for simplification, post-processing and export to a new file.
  • The tool was originally compiled as a command-line application for Windows and Linux.
  • Later I created a C# wrapper for calling functions using P/Invoke and a C++/CLI wrapper for calling functions from C#.
  • Finally, I created a nuget for easy integration of the tool into the system.
  • Tools: C++, C++/CLI, C#, .NET, P/Invoke
CMSimulator logo
CMSimulator - Application

An application made in Java for Android

  • This application is one of the results of my bachelor's degree project.
  • The Java application offers a simulator of counter machines in a unified environment for the Android platform.
  • Four major families of automaton were implemented:
    • Finite-state machine.
    • Pushdown automata.
    • Linear-bounded automata.
    • Turing machine.
  • The main emphasis was placed on the visualization of the simulation.
  • More students worked on the application before and after me, so the application may be in a different state now.
  • Tools: Android, Java, SQLite
Code optimizer applications screenshot
Code optimizer - Applications

Applications made in Java

  • This is one of the results of my master's degree project.
  • The solution consists of a user client application, an admin client application and a server application.
  • Users can load projects written in Java using the client application.
  • Source codes are analysed using an Abstract Syntax Tree and design patterns are detected based on their characteristics.
  • The server contains a database of design patterns that are compared with the client design patterns using an Abstract Syntax Tree.
  • The admin client application initializes the database on the server.
  • The server application was deployed on the Heroku cloud application platform, but is no longer available.
  • Tools: Java, JavaFX, Spring Boot, Tomcat, SQLite, PostgreSQL, Hibernate, REST API, Heroku
Model-viewer project screenshot
Model-viewer - Project

A project made using model-viewer web component

  • This project utilizes the model-viewer web component.
  • It is used at work to display models in augmented reality on Android and iOS mobile devices.
  • The goal was to make it simple without any style. Style was set for the specific client based on his preferences.
  • Scripts assign models to the model-viewer based on the URL parameters.
  • On iOS, the iOS AR Quick Look application starts as soon as possible.
  • Tools: Model-viewer, JavaScript, HTML, CSS
Medicine prescriptions project screenshot
Medicine prescriptions - Project

A project made using Angular in TypeScript and ASP.NET Core in C#

  • This is a school project developed during the Web in Cloud Course.
  • The solution consists of an angular single-page application and an ASP.NET Core web-api.
  • A doctor can create, read, update and delete medicine prescriptions for a patient.
  • The records are stored in a database on the back-end.
  • The back-end calculates time overlaps in prescriptions based on the first and last day of medicine use.
  • The single-page application and web-api were deployed on the Microsoft Azure Web Sites cloud platform, but are no longer available.
  • A simplified version of the single-page application with mockup data is available. Note that redirections in angular projects do not work on github pages.
  • Tools: Angular, TypeScript, HTML, CSS, ASP.NET Core, C#, SQLite, Docker, Kubernetes, AWS
OFCSA project logo
OFCSA - Project

A project made using Django in Python

  • This is a school project developed during the Team Project Course.
  • We worked in a scrum team based on agile methodology.
  • The goal of the project is to create an application for the management of certification schemes according to which cloud services are certified.
  • The certification schemes consist of controls, which are complex sentences written in natural language.
  • The application allows the user to formalize the certification schemes using an ontology.
  • Natural language processing (NLP) is used to automate the transcription into the ontology.
  • The application is tested with unit tests using unittest.mock library and integration tests using Selenium.
  • Tools: Django, Selenium, unittest.mock, Python, PostgreSQL, ElasticSearch, Stanford CoreNLP
Data visualization project screenshot
Data visualization - Project

A project made using Three.js in JavaScript

  • This is a school project developed during the Data Visualization Course.
  • The topic of the project is the data visualization using the height/heat map method in 3D space.
  • The solution provides overview, filter, details on demand and advanced visualization interaction methods.
  • The scalability of a large number of records is achieved by data aggregation.
  • Use mouse to move the camera and ctrl + mouse to select/deselect data points.
  • Tools: Three.js, JavaScript, HTML, CSS
Computer vision project screenshot
Computer vision - Project

A project made using OpenCV in C++

  • This is a school project developed during the Computer Vision Course.
  • The goal of the project is to detect sea animals in underwater videos.
  • The algorithm included:
    • Resizing of frames to achieve real-time video processing.
    • Calculation of Farneback optical flow from two consecutive frames.
    • Optical flow thresholding based on neighbouring pixel changes.
    • Finding contours and approximating them to polygons.
    • Segmentation of detected objects using GrabCut algorithm.
  • Tools: OpenCV, C++
Computer graphics project screenshot
Computer graphics - Game

A game made using OpenGL in C++

  • This game is a school project developed during the Computer Graphics Course.
  • Player moves a green turret and shoots small yellow pellets at the mouse position.
  • Blue turrets spawn periodically around the closed room and shoot rockets at the player.
  • The goal is to destroy as many as possible.
  • When the player is destroyed, the final score is displayed.
  • Tools: OpenGL, C++, HLSL, GLEW, GLFW, GLM

Skills

Engines & Platforms

Unreal Engine logoUnreal Engine
Unity 3D logoUnity 3D
Microsoft Azure logoMicrosoft Azure

Libraries, Frameworks & SDKs

ARKit logoARKit
ARCore logoARCore
OpenCV logoOpenCV
OpenGL logoOpenGL
Three.js logoThree.js
.NET logo.NET
Django logoDjango
Angular logoAngular
React logoReact
WPF logoWPF
Node.js logoNode.js

Languages

C logoC
C++ logoC++
C++/CLI logoC++/CLI
C# logoC#
Python logoPython
Java logoJava
Objective-C logoObjective-C
Swift logoSwift
TypeScript logoTypeScript
JavaScript logoJavaScript
Go logoGo
HTML logoHTML
CSS logoCSS

Databases

PostgreSQL logoPostgreSQL
SQLite logoSQLite
Redis logoRedis
Elasticsearch logoElasticsearch

Other

REST API logoREST API
UML logoUML
Git logoGit
Perforce logoPerforce

Education

Bratislava, Slovakia

Date of achievement: June 19, 2023
Valid until: October 18, 2025

Bratislava, Slovakia

Date of achievement: November 24, 2023
Valid until: November 25, 2025

Bratislava, Slovakia

Date of achievement: March 31, 2023
Valid until: April 1, 2025

Bratislava, Slovakia

Date of achievement: October 17, 2023
Valid until: October 18, 2025

Faculty of Informatics and Information Technologies

Slovak University of Technology in Bratislava, Slovakia

Degree: Master's degree
Field of study: Intelligent Software Systems
Date: 2017-2019

Faculty of Informatics and Information Technologies

Slovak University of Technology in Bratislava, Slovakia

Degree: Bachelor's degree
Field of study: Informatics
Date: 2014-2017

Contact