Hi, I'm Martin Gulis.
Self-driven senior software developer with a passion for problem-solving and programming.
Learning new languages or technologies is never a problem.
Experience
- Designed, developed, and deployed real-time collaboration applications for Windows, macOS, Android and iOS using Unreal Engine (C++).
- Created automated unit and integration tests following Behavior-Driven Development (BDD) methodology to ensure accurate and maintainable application behavior.
- Automated CI/CD pipelines for Unreal Engine projects using Jenkins (Groovy), improving build efficiency and deployment reliability.
- Analyzed backend REST API built with .NET (C#) and PostgreSQL database to visualize the data model and understand Azure cloud service integrations.
- Reviewed Angular frontend (TypeScript, JavaScript, HTML), identifying and resolving issues affecting functionality.
- Experienced with version control systems, including Git and Perforce.
- Practiced Agile development with Scrum, using Jira for task management, sprint planning and collaboration.
- Translated complex client requirements into clear software specifications to align development with business goals.
- Mentored junior developer, supporting technical growth and team productivity.
- Developed and delivered interactive VR/AR applications for Windows, Android and iOS using Unreal Engine, Unity and XCode (C++, C#, Objective-C, Swift).
- Designed and developed RESTful API with WCF Service (C#), integrating SQLite database and OPC server for data communication.
- Created cross-platform console applications and automation scripts for Linux and Windows (C++, C#, Python).
- Implemented and integrated libraries as plugins into Unreal Engine projects (C++).
Projects

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.
- The simulation is performed in a background thread for maximum performance.
- Features:
- Define electronic circuits by netlists. A netlist consists of a list of electronic components and the nodes they are connected to.
- Start the analysis 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 multiple analyses are started simultaneously, they are scheduled to run one by one, because ngspice can solve only one at a time.
- Tools: Unreal Engine, C++, Blueprints

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

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

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

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

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
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

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

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

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

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

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

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

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++

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


Libraries, Frameworks & SDKs











Languages





-Logo.png)







Databases




Other




Education
Bratislava, Slovakia
Date of achievement: June 19, 2023
Valid until: October 18, 2026
Bratislava, Slovakia
Date of achievement: November 24, 2023
Valid until: November 25, 2026
Bratislava, Slovakia
Date of achievement: March 31, 2023
Valid until: April 1, 2026
Bratislava, Slovakia
Date of achievement: October 17, 2023
Valid until: October 18, 2026
Slovak University of Technology in Bratislava, Slovakia
Degree: Master's degree
Field of study: Intelligent Software Systems
Date: 2017-2019
Slovak University of Technology in Bratislava, Slovakia
Degree: Bachelor's degree
Field of study: Informatics
Date: 2014-2017