Introduction

Welcome! This is Arman Papikyan's Portfolio Page.
Here are some social networks where you can find my activity or reach out:

Experience

About

I'm a Graphics Software Engineer with 10 years of experience in game development, including 5 years specializing in graphics and rendering. I've developed games and real-time 3D applications for a variety of platforms, from mobile (iOS and Android) to AR/VR, PC, and consoles. For the past 4 years, I've also led a distributed team of engineers using agile methodologies, collaborating with stakeholders and non-technical team members (artists and designers) to realize the game's vision.


I've compiled a portfolio of my projects, including descriptions, screenshots, and videos. You can explore them by clicking on the year sections to the right 👉.

Ubisoft Ukraine - Anvil Pipeline (AC Shadows)

Since January of 2024, I have joined the Anvil Pipeline's Low-Level team - working close to the hardware as a Graphics Engineer / 3D Programmer.

Title: Technical Lead
Technology Stack: Proprietary Engine, C++ 17, Modern Graphics API (DX12 / Metal, ...)
Contributions & Responsibilities:
• Mesh shaders, tessellation and raytracing Hardware Abstraction Layer (HAL) implementation on Metal API.
• DirectX12 optimizations and bug fixes (barriers, command lists, memory pools) for PC and Xbox.
• Contributions to maintenance and optimization of the custom Scene Graph.
• Debugging and profiling on Playstation (PS5 / PS5 Pro).

Ubisoft Ukraine - Rainbow Six Mobile

I have been working on Rainbow Six Mobile for 3.5 years, leading the Rendering team in collaboration with art direction to achieve the ambitious goals of the project on the huge segmented space of mobile devices delivering a competitive and fair game that can be beautiful on high end and support low end with the same gameplay experience.

Title: Lead Render Mobile Programmer
Technology Stack: Unity 3D, C#, C++
Contributions & Responsibilities:
• Leading and owning all technical aspects of real time rendering.
• Iterating with the art and design direction to achieve the visual quality and performance on mobile devices.
• Reducing total Draw Calls from 1800+ to under 300 in any gameplay scenario.
• Implementing rendering techniques (batching, culling, lighting, VFX, etc).
• Creating tooling, workflows and providing support for artists.
• Defining and enforcing technical budgets and requirements for content with automated validations.
• Being the technical point of contact with third party partners. Pushing the game's needs.
• Growing the team: hiring (3 -> 8 engineers), mentoring, coaching, enabling growth and specialization.
• Coordinating a distributed team of 8 engineers across Asia, Europe and North America, with 5 direct reporters.

LVGameDev (Contractor) - SimCasino

Title: Senior Unity Developer - Render
Technology Stack: Unity 3D, C#, HLSL
Contributions & Responsibilities:
• Instanced skeletal meshes (with variations - skin, height, color, animation, etc) fully on GPU.
• Wall and Floor procedural mesh generation system (variations and skins, etc).
• Batched floor tiling - allowing texture variations with a single draw call.
• Brushes for painting the walls and floors (textures, colors, etc).

Vectuel - VStory

VStory is a powerful 3D architectural software with extensive functionality. I have been working with a team of developers, designers and testers. My work mainly consisted of refactoring the legacy codebase, implementing new features and creating designer / artist focused tooling to make their life easier.

Title: Unity Programmer
Technology Stack: Unity 3D, C#, SQLite
Contributions & Responsibilities:
• Remodeled and refactored legacy code and user interface.
• Identified and resolved bottlenecks (profiling and optimization).
• Enhanced existing features and implemented new ones.
• Upgraded and remodeled the database.
• Debugging and maintaining the product.
• Writing unit tests and documentation.
• Giving feedback on the product for possible user experience improvements.

Betconstruct (PandaVR) - VR Casino

The whole casino has many features and games like different Slots, lounges. My work was developing the BlackJack Live Dealer, which uses a green-screened live feed, overlays it on VR elements like the 3D table, handles user input and creates a totally realistic Mixed Reality experience.

Title: VR Unreal Engine Developer
Technology Stack: Unity 3D, C#, SQLite
Contributions & Responsibilities:
• Integrated the existing web (REST) API communication with the server.
• Developed blueprint library in UE4 using C++.
• Created Mixed Reality live dealer for VR casino.
• Communicated with the team to achieve the best user experience.

3D Point Cloud with Lidar

This is my work with a Lidar (a piece of hardware that shoots lasers and returns rotation angle and distance to the first hit), aiming to collect, refine and visualize the environmental data.

This project consisted of multiple steps:
• Capture of the 3D points (video LINK) of the environment using the RPLidar device. Those points are collected, refined (transformed from cylindrical coordinate system to cartesian) an displayed using a custom point shader. All of the above mentioned is achieved using multithreading to ensure responsiveness of the application and give control to the user to start / stop the scanning while all the calculations are being done in the background, so the new points can be shown in real time.
• A ray is constructed from a mouse point through the camera look direction, which is later used to calculate the closest point to the ray (which point the mouse is hovering on).
• The points are grouped and separated into individual chunks by their spatial locality to avoid unnecessary calculations.
• A custom compute shader has been written that calculates the distance for each individual point and returns a single 3D point that is the closest to the ray. That point is later stored and the distance between chosen points is shown.

Ingrad

Ingrad is a free AR mobile and tablet application that allows exploration of already built or building complexes and structures with intuitive interactive UI and helpful comments that guide the user towards a potential purchase.

I have refactored already existing code, fixed some issues and added new features.
Contributions & Responsibilities:
• Dynamically downloading new packages (conversing disk space and optimize build space).
• Optimizing and polishing the performance.
• Refactoring textures and UI according to the Unity best practices.

App Store Link - https://apps.apple.com/us/app/ingrad-ar/id1469951430

Dodge The Meteor - Android / iOS

This was my first self-published game. After completing many projects on hire I wanted to create my own game.

The objective is to dodge the flying meteors that keep multiplying and accelerating.
The game was originally developed around 2013 with simplest of mechanics. Gradually I kept returning to it, changing mechanics, the controls, experimenting and adding visual assets.

Crazy Wheel - Android / iOS

Crazy wheel is a casual game where you have to click when the dial matches the ball color.

You need to catch the brief period where the ball matches the dial, if the ball leaves the dial without you scoring - than you lose a heart and consecutively the game after 3 hearts.
The catch is that the ball keeps going faster with each rotation and the only thing you can do at that point is to rotate the ring to keep up.
You also have the controls (Rotate Clockwise / Rotate Anti-Clockwise), to spin the wheel along with the ball to give yourself more time to react.

Procedural Dungeon

The task before me was to create a procedurally generated structure consisted of rooms, which share at least one common wall between each other. Also, according to the task given, each room should consist of 2 to 5 cuboid units, and some random doors connecting the rooms.
I have generated the dungeon using recursive random walker, after which I am generating meshes (two side walls, floors, ceiling) for each room (each room is a seperate mesh).

Air Hockey

A simple Air Hockey game where the enemy is customizable (Easy, Hard, Insane difficulties) with just a tweak of couple of variables such as Kicking distance, Moving Speed, Reaction Speed, Protectiveness, etc.

Procedural Deformable Mesh + Terrain Brush

This is one of my short works, an example of procedurally generated Mesh (in the Edit Mode) and a brush tool to deform it like a terrain but in PLAY MODE! And since all the links between the vertices are made while generating the mesh itself (every vertice have a link to its neighbour) its super easy and fast to deform or do really anything with this custom plane Mesh in the Play Mode. This is done purely working with meshes no shaders are involved in the deformation.

Pathfinding in Unity

Pathfinding in a dynamically pulled array of obstacles. Everything works in real-time.
The enemy is using this pathfinding to find the optimal path. There are also some gameplay mechanics (lose and win conditions) and a some shader driven animations (dissolve, deformation).

    Publications

    "Behind thet Smoke and Mirrors" Presentation
    Gyumri Game Conference 2024
    Location: Gyumri, Armenia

    Slides in English (pptx) , Linkedin article

    "Mobile Graphics - Vulkan" Presentation
    Game Developers Conference 2023
    Location: Yerevan, Armenia

    Slides in English (pptx) , Talk in Armenian (Youtube)

    Time Space complexity and Performance Analysis 2020

    Medium Article (Link)

    Vulkan Renderer (3D Game Engine)
    Coding Project - C++, Vulkan, CMake


    Github Link

    "Data Oriented Design" Presentation
    Game Developers Conference 2020
    Location: Yerevan, Armenia

    Slides in Armenian (pptx)

    Physics (Nano-Electronics)
    White Paper - 2017
    Link

    Skills

    General purpose programming languages: C, C++ 98 / 17, C#.

    Graphics Technologies: Graphics API (Vulkan, DirectX12, Metal, OpenGL), GLSL, HLSL.

    General Technologies and Frameworks: Game Engines (Proprietary, Unity3D, Unreal Engine 4), Git, VR / AR.

    Knowledge and specializations: Algorithms and Data Structures, Linear Algebra / 3D Math, Profiling and Optimization, Object Oriented Design, Data Oriented Design, Procedural Generation.