Nice

I believe you should have made clear the differences between both interfaces. Anything can be a GameDLL provided it exports a GiveFnptrsToDll and either GetEntityAPI or GetEntityAPI2 (the rest is facultative). The engine, on the other hand, needs to provide a fixed set of functions, all of which being in a fixed order. The difference between engine versions (starting from the SDK 2.0 version) being the length in bytes of this function table.