Company: Super Evil Megacorp
Role: Staff Technical Engineer (Core Tech Team)
Engine: Evil Engine
Language: C / C++
Platforms: Windows, MacOS, Android, iOS, Switch
Work Period: February 2024 – Present
My Work
At SEMC I am currently working as part of the Core Tech team. My main responsibilities are to maintain and develop new features for our cross-platform engine and tools, the Evil Engine. Our engine is used to develop all the games we work on, primarily mobile games but the engine is also being ported to all consoles.
This is some of the work I’ve done at SEMC:
- Developed a resource loader from scratch with asynchronous and multithreaded resource loading support to reduce loading times and minimize mid-game hitches
- Refactored the rendering code to run on a dedicated thread, improving performance on lower end mobile devices
- This involved refactoring code all over the engine: from the engine rendering logic to the low level graphics API code for each platform.
- Implemented a memory tracker that tracked all allocations made by the engine to be able to report statistics and find memory leaks by using snapshots.
- Built in-engine to work on our target platforms without requiring any third party library. Platforms included: Windows, MacOS, Android, iOS and Switch.
- Implemented in a plug-and-play manner, no need to change anything in the engine to start tracking allocations.
- Ability to get memory snapshots that would then be used to report statistics and differences in memory allocations between each snapshot. This was useful to identify memory leaks and highlighting places that allocated a high amount of memory or made too many allocations.
- Identify allocations by call-stack to quickly navigate to the place where each allocation happens and understand the context in which the memory is used.
- Efficient implementation that maintained a low memory overhead/fragmentation and minimum performance overhead, the memory tracking could be enabled wile keeping the game running at high frame rates.
- Extensive categorization that included: name of the library making the allocation, container and other user defined categories.
- Refactored the Timeline Editor to improve stability and user experience.
- Removed unnecessary abstraction layers while keeping the same functionality and making it more flexible. This reduced the complexity of the code base while making it easier to extend.
- Improved performance by refactoring algorithms and replacing some data structures, improving performance by orders of magnitude and being able to support more events in the Timeline.
- Improved the tools and asset pipelines to create a more seamless experience for the users, allowing them to achieve their goals with more ease, some examples are:
- Profiled and optimized editor asset loading times, which lead to cutting loading times by half on huge levels.
- Implemented a new toolbar for the main editor to allow easy access to common operations.
- Added visual feedback to operations that cannot be performed. For example: red highlight and text explanation tool-tip about the problem.
- Integrated the RAD Telemetry profiler on all our platforms to find bottlenecks and plan optimizations.
- Coordinated the port of the graphics backend from OpenGL to Vulkan, which allowed us to have asynchronous resource loading and asynchronous render thread on Android devices, improving performance significantly.
Games
SEMC works on several games at the same time, here you can see the games I’ve worked on and their target platforms.
Blood Line: A Rebel Moon Game
- Official Website: Blood Line: A Rebel Moon Game
- Platforms: Android, iOS
Teenage Mutant Ninja Turtles: Splintered Fate
- Official Webpage: Teenage Mutant Ninja Turtles: Splintered Fate
- Platforms: Windows, iOS, Switch, PS4, PS5, Xbox, XBX
- Project Specific Work:
- Optimized the Switch port: Fixed hitches and improved overall frame performance by 5ms.
Leave a comment