Не пойму как лучше хранить все объекты и существ в памяти, ведь все это многообразие будет разных размеров.
А что не так с размерами?
Вообще есть достаточно неплохая методика - ECS.
Каждый объект - это Entity, по сути просто уникальный идентификатор, чтобы можно было отличать одну entity от другой.
Для каждого "атрибута" создаётся component - это может быть, например, текстура, размеры, координаты на карте, хитбокс, и так далее. Для персонажей это может быть hp и отношение к "стороне" (друг к игроку или враг, например).
А для всей игровой логики создаются system - они должны будут реагировать на события, которые посылают другие системы или отрабатывать каждый условный кадр, например.
В них как раз определяется и отрисовка всех текстур/спрайтов, проверяется, нужно ли нанести урон игроку, и так далее.
Советую поискать готовые ECS-фреймворки для вашего языка, чтобы не велосипедить с нуля.