Projects I Worked On

Vizex VR Labs 2019-2024

These have been the most exciting years of my career at Vizex, where I had the opportunity to start a new initiative: virtual laboratories for schools. It all began as an experimental Tech Demo project—a virtual electrodynamics lab. Since then, this field of programming has captured my heart, and I’ve rewritten various electricity simulation models more than four times, both at work and for personal projects.

We utilized these simulations in our work projects, including electrodynamics, electromagnetism, robotics, and logic circuit simulations. I also incorporated them into my own game jams and pet projects.

I believe this journey deserves a detailed story because everything started from scratch.

Electrodynamics-Magnetism-Electrostatics: The Beginning of VR Labs

This series of projects marked the beginning of our VR Labs direction. Our company decided to venture into a new field of development—virtual physics laboratories for high school students. We were given three months for the technical demo, and it was an incredible challenge for several reasons.

How it started (2019)

How it goes (2022)

To implement the project, we chose WebGL, as it was required to integrate it into the online web platform of electronic schools. Up to this point, all our projects had been developed for mobile and desktop platforms, and the switch to WebGL was a new challenge for us. Additionally, there was a requirement that these laboratories work in 4K resolution on devices with an integrated graphics card and an Intel Core i3 7th generation processor.

The transition to WebGL required us to fundamentally rethink our development approaches. For the next five years of development, our motto was: “Optimization, optimization, and more optimization.” We fought for every millisecond of CPU/GPU time and eventually achieved a stable 30 frames per second in 4K resolution on the target hardware. After such optimization, performance issues on devices like iPads and laptops were no longer a problem, and we achieved 60+ frames per second effortlessly.

These years were filled with challenges. We already had a wealth of assets, but many of them were incompatible with WebGL due to multithreading. Additionally, debugging applications in WebGL proved to be much more difficult, as it was impossible to connect using a standard debugger, and some bugs only manifested in WebGL. For example, the old input system had issues with touch events, and we had to write our own wrappers.

Solving the problems of electrodynamics and electrostatics added further complexity. One of the most significant challenges was incorporating electrostatic calculations. Initially, I couldn’t solve the equations in a way that matched our measurements and real-life experiments. Various minor issues often became stumbling blocks, requiring meticulous work and testing.

The result of our work was a laboratory that teachers loved (now Vizex has 2.8m users). The company received several orders, and we formed several product teams. Over the years, we created more than 20 laboratories, and I participated in nearly 10 of them as a technical lead and sometimes as a team lead. We are a small company, and roles on projects often shifted based on our competencies.

This project became the foundation for the company’s subsequent successes and the development of our VR Labs direction. We overcame numerous technical difficulties and achieved high performance and quality, which allowed us to gain recognition and new orders. The experience gained during the development of these laboratories was invaluable and continues to inspire us to achieve new milestones.

Mechanics-Archimedes Projects

This project involved a series of lab experiments focused on mechanics, hydrostatics, pulleys, friction forces, and Archimedes’ principles. We used PhysX as the core engine, around which we built several additional systems to enhance its capabilities. Below, I’ll share some insights into these fascinating tasks!

Hydrostatics

We developed our own solver for pistons, built on a system of impulses transferred between colliders. Initially, I planned to base it on force calculations, but it turned out that PhysX is a stateless system, providing only the resulting velocities without access to the forces acting on objects. The highlight was calculating these pistons with the pressure of vertical water columns taken into account.

Pulleys and Ropes

Another intriguing topic was pulleys and ropes. In the first version of our application, we managed to compute only a simplified system, where forces were strictly distributed vertically for suspended objects. However, after discovering an excellent article, we significantly improved our implementation, enabling more complex and realistic simulations.

Archimedes’ Principle/Buoyancy

At first glance, calculating buoyancy seemed straightforward: determine the volume of a submerged object, find its center of mass, and apply Archimedes’ force. However, using a combination of materials—a wooden block in a mercury-filled aquarium—introduced significant challenges. The vast difference in material densities caused instability, with the system exploding across the scene. We had to employ various tricks and hacks to manage such a disparity in forces and maintain stability.

Communicating Vessels

A fascinating aspect of our hydrostatics work involved developing a solver for communicating vessels. Initially, we focused on systems containing a homogeneous liquid, ensuring the liquid levels equalized correctly across the interconnected containers. Building on this, we tackled the more complex scenario of vessels containing liquids of varying densities. This required careful calculation of pressure differences and fluid dynamics to accurately simulate the equilibrium state. The challenge was maintaining numerical stability and realistic behavior, particularly when dealing with liquids that do not mix uniformly, leading to intricate interactions and pressure gradients.

Silaeder-Drawing projects

This series of laboratory projects focuses on 2D drafting and 3D modeling for schools, serving as a practical exercise in algorithms and data structures.

2D Drafting: A vector-based editor that feels like a raster tool. It employs AABB trees for intersection detection, KD trees for snap searches, and advanced algorithms for intersections of arcs, Catmull-Rom splines, and segments. SDF functions are used for vector graphics rendering.

3D Modeling: A child-friendly 3D editor designed to develop basic spatial thinking and modeling skills.

Key algorithmic challenges tackled:

  • Implementing Bézier curves
  • Kinematic operations like rotation, extrusion, and contour following
  • Complex Boolean operations, supported by a custom algorithm and half-edge data structure for meshes with smooth groups

Additional tasks included graph handling, 3D AABB trees for intersection searches, ray casting in 3D splines, and dynamic step spatial grids with distance-independent line thickness.

Additional Projects

On several projects, I contributed as a consultant and crisis engineer.

Surrounding World: A project for elementary students covering topics in natural science, physics, and environmental studies. Our team initially made significant estimation errors, resulting in an overwhelming amount of content—dialogs, 3D models, logic branches, and mini-games. I stepped in as a crisis engineer to reorganize tasks and identify core functionalities, ensuring timely project completion. The result was a charming, stylized low-poly educational game for children.

Molecular Physics, Non-Organic Chemistry, and Optics: At the outset, I assisted as an interaction logic programmer. They feature impressive mathematical models, but most my work there was about shaders, particles, and parts of core interactions logic

Logical Circuits – Robots – Robo Competitions: On this project, I helped port my electrical circuit simulation library and frequently acted as a crisis engineer when the team lagged in developing logic for circuits and connectors. I also provided extensive consultation on PhysX and various Unity systems (URP, Input System, Shadergraph).

Vizex Info 2016-2019

In the first three years of working at Vizex, I observed the company’s growth and participated in its development. In 2017, Vizex was engaged in big data analytics and visualization for banks and large businesses, creating situational centers and digital twins for top management of companies like Société Générale, Sberbank, Gazprombank, Russian Post, and GIS Housing and Utilities. Each project was unique and required new approaches and solutions.

Situational Centers

One of our key areas was the development of situational centers that provided managers with access to critical real-time data, helping them make strategic decisions. Examples of such centers include EMIAS and GIS Housing and Utilities.

EMIAS (Unified Medical Information and Analytical System)

One of the projects I worked on was EMIAS—a comprehensive solution for managing medical services, including doctor appointments, information on the accessibility of medical facilities, and real-time information on doctors’ availability. EMIAS also functioned as a situational center for healthcare management.

My task was to create a 3D digital twin of Moscow with medical facilities based on vector maps. This included cache validation and versioning, data storage optimization, and ensuring high-speed performance. The application had to work equally well on PCs, iPads, Linux, Windows, and Android.

The application processed gigabytes of real-time data. We worked closely with analytics and backend teams to connect interactive informers to data marts. We developed our own mapping service on Unity, which could display any geolocation-based indicators. In addition, we created the iDVP product—a tool that allowed users to create their own informers and connect them to data marts.

Digital Twins Projects

We have implemented several significant projects related to mapping services for displaying various types of information in the B2B and big data sectors. One of the most impressive projects was GIS Housing and Utilities. The goal of this project was to create a digital twin of the utility system. This innovative platform enables real-time monitoring and management of utility services, providing cross-platform functionality on various devices.

Key Tasks and Achievements

  • GIS Tasks: Creating 3D digital twins using vector maps.
  • Cross-Platform: Ensuring consistent application performance on PCs, iPads, Linux, Windows, and Android.
  • Data Optimization: Cache validation, data tile optimization, and high-speed performance.
  • Big Data Processing: Handling gigabytes of real-time data and collaborating with analytics teams.
  • Interactive Visualization: Creating interactive informers and connecting them to data marts through the iDVP product.
  • InHouse Development: Developing the mapping service and the iDVP product.

These projects allowed me to significantly develop my skills. Later, we shifted to developing virtual laboratories, which opened new opportunities for applying my abilities.


Toonidee, 2016

In 2016, I worked at Toonidee, a cozy studio located at the Amedia film studio. This place was a true hub of creativity, where we produced TV shows about computer games for the 2×2 channel. However, the most exciting part of my job was developing AR games for preschool children.

Interactive AR Coloring Books

One of our main projects was creating interactive AR coloring books. Picture this: a child colors a picture on paper, points a tablet camera at it, and sees their creation come to life on the screen as a cartoon or a mini-game. Seeing the children’s delight was truly priceless.

Challenges and Solutions

Of course, we faced some unexpected challenges. Children didn’t color pictures the way we anticipated—they used markers instead of crayons, colored outside the lines, and added their own creative touches. To address this, we developed a system of trackers that helped recognize and reconstruct the picture from the intact parts.

Team and Achievements

Our small but dedicated team consisted of a producer, two developers, and three artists. In less than a year, we released three complete magazines: “Super Rescuer,” “Super Rescuer 2,” and “Paperworks.” It was an intense and highly productive period, and I’m very proud of what we accomplished.

My Role in the Project

As a developer, my main responsibility was working with Unity. I was involved in:

  • Developing the core logic of the project
  • Creating the asset loading and versioning system
  • Writing shaders
  • Designing algorithms for color recognition on the coloring pages
  • Implementing the logic for various mini-games, such as “Match 3,” finding identical objects, mazes, and more

Unity was our primary development platform, and I leveraged its capabilities to create interactive elements and ensure the application ran smoothly. This project not only deepened my knowledge of Unity but also gave me unique experience in developing children’s AR applications.