Akil Fernando
Welcome to Akil's corner of the web!

Research / Proposed MSc work

Understanding bugs
across code and assets.

Incoming MSc student in Computer Science at the University of Calgary. Exploring how game bugs connect source code and assets, and what those connections can tell a developer.

01 / The research question

Empirical Analysis of Code and Asset Co-Fixing in Open-Source Video Games

What changes when the fix spans code and assets?

In Unity, behavior lives in source code and in scenes, prefabs, materials, animation, and configuration. A bug can sit in the relationship between them. Looking only at code can miss part of the explanation.

My proposed research with Dr. Nimmi Weeraddana starts with repository histories from OSSGameBench. The plan is to examine coordinated code and asset changes, build a taxonomy of the defects behind them, and use that evidence to inform bug localization.

A bug can cross the code and asset boundary Illustrative Unity dependencies: a scene references a prefab, which references a script and a material. A fix may involve more than one of these files. This is a conceptual example, not a study result. ScenePrefabC# scriptMaterialCODEASSET references
One bug. Several connected files.Illustrative Unity dependencies
  1. How often do fixes cross that boundary?

    Study bug-fixing histories in open-source Unity games to measure when source code and assets change together. Scenes, prefabs, materials, animation, and configuration are part of the system being studied.

  2. What kinds of defects need coordinated fixes?

    Develop a taxonomy of code and asset co-fixing patterns. The aim is to describe the relationships behind the changes, so a commit touching several file types becomes something more informative than a file count.

  3. Can those relationships help locate a bug?

    Design and evaluate GameLoc, a proposed structure-aware approach to bug localization. Compare its ability to retrieve relevant code and assets against information retrieval baselines.

02 / Proposed approach

GameLoc:
following the relationships.

The proposed approach combines lexical retrieval, semantic embeddings, and graph relationships between game artifacts. Unity GUID references offer one way to connect assets with the code and other assets they depend on.

The planned evaluation will compare this approach against information retrieval baselines. The question is whether adding structure helps identify the files relevant to a bug, particularly when the repair crosses from code into assets.

03 / Earlier exploration

Earlier diagnostic
prototypes.

PythonSynthetic data

CI build duration analysis

A prototype that parses build logs into phases and explores relationships between phase duration, asset changes, and timeouts. Real build telemetry would test its assumptions against runner contention and cache variability.

.NET 8 / C#Synthetic data

Game engine crash triage

A prototype for normalizing stack traces, grouping repeated crashes, and mapping frames to possible source changes. Real crash reports would test the assumptions against inlining, interleaved threads, and less tidy failures.

Read the prototype walkthrough

04 / Practical grounding

Engineering is the starting point.

At Ubisoft Halifax, I worked on gameplay systems in Unity and C#. At Teams Squared, I build internal software and lead IT operations and cybersecurity. My personal work ranges from low-level graphics to OpenQuire, an open-source PDF toolkit.

Those experiences help me recognize problems worth asking about. Research is the work of finding out whether the explanation survives closer examination.