Introduction
Welcome! This is Arman Papikyan's Portfolio Page.
Here are some social networks where you can find my activity or reach out:
Graphics Engineer, Game Developer
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 👉.
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).
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 ProgrammerVStory 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 ProgrammerThe 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 DeveloperThis 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 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
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 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.
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).
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.
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 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).
"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
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.