Because your TGameEngine.Create is asking for a TImage and you're passing it a string.
Changes:
Function Create:TGameEngine(filename:string)
Local GameEngine:TGameEngine = New TGameEngine
CreateObject(GameEngine, filename, 0, 0, 1.0)
Return GameEngine
End Function