About

Short

I’m a UE5/C++ programmer with over five years of experience, primarily working in studios like Dead Mage, NoOpArmy and Cybersoul. I’m passionate about creating innovative projects and problem-solving. I believe simplicity is the key and try to avoid useless abstractions.

Long

My journey into computer programming began eight years ago with web development. As I delved deeper into the field, I felt the need to transition to desktop programming, which led me to start learning C++ seven years ago. I initially picked up C++ through a Wrox programming book called “Professional C++.” At the time, I lacked knowledge about computer architecture, hardware, and other essential aspects of software engineering. It was a period of learning syntax and grappling with the language itself. Over the course of three years, during my high school years, I delved into C++, C#, and SQL Server to some extent. Eventually, I discovered my passion for game programming and, together with some friends, co-founded our own game studio called CyberSoul Studio. We started small, working out of my uncle’s spare house and using Unity as our game engine. I studied computer science at a university in Tehran, where I explored low-level topics like operating systems, assembly language, and software architecture. I also learned a lot from resources like the ‘Game Engine Architecture’ book and online articles. Recently, I’ve been really enjoying Casey Muratori’s course on ‘Performance-Aware Programming.’ Casey and his course are awesome.

During this time, we were particularly drawn to making games like Katana Zero and pixel art games in general. We dedicated ourselves to learning Unity, as well as the fundamentals of game development, team management, collaboration, mathematics, art, animation, and more. We also joined a growth center for game developers called HUB, located at Shahid Beheshti University in Tehran, where we expanded our network and learned about mobile game development. This led us to develop a game called Samurai Rush, an endless runner, which we published on a local Android store called Bazar.

As our interests shifted towards creating premium 3D PC games, we embarked on learning Unreal Engine, Maya, and other necessary tools. I focused on honing my C++ skills and delved into Unreal Engine 4. Over the course of three years, we continuously improved our skills, working on prototypes and exploring various aspects of game development. I personally delved into AI, procedural generation, UI, gameplay systems. We made a concerted effort to enhance our soft skills as well. We engaged in extensive discussions to effectively manage our team.

After that journey, by Realizing the importance of gaining experience in larger game studios, I joined Dead Mage Studio as a gameplay programmer, where I contributed to Wizard of Legends 2 as a gameplay programmer. As a result of my university classes I couldn’t be able to continue in Dead Mage as a full time programmer. Although my time at Dead Mage was short—only three months(the summer between my semesters)—it provided invaluable insights into working within larger teams and marked my first professional experience in the industry.

Toward the end of my time at Dead Mage, I started working on my own AI framework for Unreal Engine 5, something I’ve always wanted to do. I collaborated with Ashkan Saeidi, the lead programmer and studio head of NoOpArmy, whom I had known for some time. Together, we worked on implementing a Utility AI system. While I focused on Unreal Engine implementation, Ashkan provided guidance based on his knowledge of Utility AI from books and discussions also he published the tool. Eventually, I completed the project, and learned a lot about Slate and related things for plugin development in unreal. I aimed to ensure that the plugin felt seamlessly integrated into Unreal Engine, and I’m proud to say that our efforts were recognized through positive reviews in the marketplace. It’s incredibly gratifying to know that people appreciate the plugin, sometimes even more than the built-in Behavior Tree system.