Student spotlight: Hesam Ghadimi on game engine programming

Student spotlight: Hesam Ghadimi on game engine programming

02/27/2026 - 15:33

Hesam Ghadimi is a second-year Creative Media and Game Technologies (CMGT) student on the programming track. With a background in computer engineering and professional experience in mobile game development, he has taken on one of the most technically ambitious challenges in the course: building a custom C++ game engine from scratch. In this interview, Hesam shares his journey from Iran to the Netherlands, the technical depth behind his engine, and his ambitions for the future.
Games
  • Stories
  • Student work

Can you introduce yourself and tell us a bit about your background? 

Hesam: ‘I’m originally from Iran and I’m 26 years old, so I’m slightly older than the average student here. Before coming to the Netherlands, I completed a Bachelor’s degree in Computer Engineering. The programme was a mix of hardware and software, but it didn’t include anything directly related to games.’ 

'During my Computer Engineering studies, I realised I was far more interested in games than in traditional engineering paths. I started teaching myself Unity and began building small personal projects. After graduating, I worked for nearly two years at a mobile game studio developing games for iOS and Android using Unity and C#. We published several titles on the App Store and Google Play. That experience was valuable, but the projects were small in scope and the teams were very compact. I wanted to challenge myself with something more technically ambitious.’ 

‘When I moved to Europe, I initially studied German in Hungary, but once I discovered this CMGT programme in the Netherlands, I knew it was the right fit. It stood out as one of the strongest game development courses available.’ 

Which games have inspired you the most? 

Hesam: ‘I grew up playing a lot of video games. RPGs have always had the biggest impact on me. Games like Fallout and Skyrim really inspired me, not just because they’re fun to play, but because of the depth of their systems and worlds.’ 

Can you describe the project you've been working on? 

Hesam: ‘In my second year, block A focused on building a custom engine in C++. As engine programmers, we were given a very minimal base project, essentially just a renderer, and we had to implement everything else ourselves. That included engine structure, resource management, file handling, UI integration, component systems, and more.’ 

‘My engine is built around an Entity Component System (ECS) architecture using ENTT. I implemented reflection and serialisation using VisitStruct to support an inspector system and scene saving/loading. I also built custom reference counting and handle-based resource management, used C++ template metaprogramming for flexibility, integrated Dear ImGui for tooling, and implemented GLTF model loading with TinyGLTF. A major focus of block A was cross-platform development. The games built with the engine were designed to run on both PC and PlayStation 5, which meant carefully structuring the engine to support platform abstraction and portability from the start.’  

‘In block B of my second year, I developed a timeline animation system called Tanim (TimelineAnimation). It allows developers to animate any parameter of any component using sequences in timelines, and keyframes on Bezier curves, similar to how animation works in Unity. It integrates directly into the engine and offers a user-friendly interface. That’s one of the features I’m most proud of.’ 

Can you walk us through the development process? 

Hesam: ‘The first week of block A was honestly confusing. We weren’t even given a ready Visual Studio solution file, so we had to figure out how to properly generate and configure the project using property sheets. After that, we spent time understanding the starting point, and how to develop it to use the given renderer.’ 

‘Each feature required research first. We had to explore multiple implementation strategies, compare them, justify our choices, and document everything in our Individual Learning Outcomes (ILOs). Programming rarely has one “correct” solution, it’s about trade-offs. I regularly discussed design decisions with lecturers and fellow students, and we had weekly feedback sessions.’ 

‘Although it was technically an individual project, there was a strong culture of peer discussion and review. That exchange of ideas was incredibly valuable.’ 

Which technical decisions had the biggest impact on the final result? 

Hesam: ‘Choosing how to handle reflection and serialisation had the biggest impact. Supporting runtime inspection of components and automatic scene saving/loading is complex. I had to decide between compile-time reflection approaches and runtime systems. Each option had trade-offs in performance, flexibility, and complexity.’ 

‘Another major decision was how to store asset references, whether to use custom formats or path-based referencing. I chose to store model paths in the scene file and validate them at load time. That decision simplified some workflows but introduced its own considerations.’ 

Which part of the engine are you most proud of? 

Hesam: ‘The feature I’m most proud of is Tanim, which I developed during block B. It’s a timeline-based animation system that allows you to animate any parameter of any component, as long as the type is supported.’ 

‘For example, you can animate a coin’s position, scale, colour, essentially any exposed variable, through a timeline editor using Bezier curves. I designed it so it can be integrated into any C++ project that is using ENTT for ECS & ImGui for editor tooling.’ 

‘I focused heavily on usability. I tried to mimic the UI and UX patterns of Unity so that designers and visual artists would feel comfortable using it. Even though it started as a block B assignment, I’m continuing to develop it independently. Tanim is open-source & available on GitHub and has documentation that walks you through integrating it into your own engine. A technical article explaining how it works behind the scenes is on the way.’ 

How has your work evolved in block C? 

Hesam: ‘In block C, we’re working in teams to develop a custom engine for a certain genre of games. My team has a strong engine programming focus, so we decided to build our engine by combining and improving elements from our previous projects.’ 

‘Interestingly, another team requested to use my block A engine as their starting point because they didn’t have engine programmers in their group. Seeing others build upon my work has been incredibly rewarding. It’s also a strong form of validation, when other developers choose your architecture as their foundation, it means you did something right.’ 

‘At the same time, working in a multidisciplinary team forces us to make the engine more user-friendly. Convincing visual artists and designers to use a custom engine in block D instead of Unreal requires strong tooling and intuitive workflows.’ 

What did you learn from your time at BUas so far? 

Hesam: ‘Technically, I learned far more about C++, low-level architecture, and engine systems than I ever would have by only using existing engines like Unity.’ 

‘But beyond the technical side, I learned how important research, documentation, and reflection are. The ILO process is demanding, especially the writing, but it forces you to clearly articulate your reasoning and growth. In the industry, you need to justify your decisions as well, so I see the long-term value.’ 

What are your future plans in games? 

Hesam: ‘My goal is to work at a larger studio in the Netherlands, such as Guerrilla Games, Triumph Studios, or Nixxes Software. I really like the country and the strength of its game industry.’ 

‘I want to specialise as an engine programmer. In the long run, I might like to move into indie development, but I believe it’s important to first build deep expertise within a larger studio.’ 

 

Connect with Hesam Ghadimi on LinkedIn: https://www.linkedin.com/in/hesam-ghadimi/ or visit his itch.io page: https://hegworks.itch.io/