Обычно, делается с помощью "дерева" зависимостей.
Нужно различать "скелет", "шкуру", а так же поведенческий класс: роль в сюжете игры и обработка реакций на игровые события: попали в меня, вижу противника/препятствие в радиусе R и т.д.
Т.е. передавать для создания нужно:
1. Координаты
2. Дерево спрайт-объектов (идентификаторы спрайт-объектов, относительные координаты (от центра всего объекта), их центры вращения, зависимости преобразований при вращении объекта или каждого спрайта в отдельности)
3. Спрайт-карту для этого дерева (частично/полностью статичную или анимированную)
4. Имя поведенческого класса (роль объекта с обработкой реакции на игровые события)
Как правило не делают сложных зависимостей и всегда хватает обычных объектов и дальше делается из них attach/detach (то же самое дерево зависимостей координатных перемещений и поворотов), чтобы создать сложный (шагающий робот и т.п.).
Если пустое место должно чем-то быть заполнено, обычно не делают его реально пустым, а ставят другой идентификатор, указывающий, что там, например, слот для пулемёта. Но в тоже время не дают ему атрибут SOLID (непроходимый).
Тонкостей - ВАГОН)