In delving into game programming, I have encountered both "SDKs" and "game engines". What are their relationships and differences to each other?
To be as concise as possible, an SDK is engine + tools. It gives you all you need to make a game for that platform.
Sometimes you don't need specialised tools to make a game; in that case you only need an engine. Sometimes they are required or at least very helpful.
To give a few examples:
- UDK, in addition to the Unreal engine, includes editors to create content suited for the engine.
- Back in the cartridge console days, the console vendor would give you a kit with hardware tools, such as a doohickey (like gameshark/gamegenie) that you plug in between the cartridge and console, which gives useful diagnostic output. Sometimes they will also give you a special development version of the console that amounts to the same thing.
Of course, you can have SDKs for things that aren't engines, which adds a bit of confusion. The DirectX SDK for example doesn't include a game engine, as DirectX is a graphics/multimedia framework.