Я проделал приличную работу в XNA, и из моего опыта есть 2 способа нарисовать 2D-сцену:
1) Строго 2D. Этот метод намного проще, но имеет несколько ограничений. По сути, здесь нет «камеры», все, что вы делаете, это перемещаете все под фиксированную 2D «камеру». Я говорю «камера» в кавычках, потому что камера исправлена (насколько я знаю). Преимущество в том, что это легко, недостаток в том, что вы не можете легко увеличивать или уменьшать масштаб или делать другие эффекты камеры.
2) 2D в 3D. Настройте 3D-мир с 2D-плоскостью. Это более гибкий инструмент, но с ним также сложнее работать, потому что вам потребуется настроить 3D-мир и 3D-камеру. Если это ваша первая попытка сделать игру, я настоятельно рекомендую против этого метода.
Я действительно знаком только со строго 2D-методом, и вам нужен список объектов карты, имеющих 2D-координату. Вы также хотели бы сохранить, какой раздел карты вы смотрите, я делаю это с помощью Rectangle или Vector2, в котором это хранится. Это значение будет двигаться вперед по мере продвижения персонажа. Затем вы можете взять координаты объектов 2D-карты и вычесть (X, Y) верхнего левого угла того, на что вы смотрите, чтобы определить положение экрана на объекте. Итак:
float screenX = myMapObject.X - focusPoint.X;
float screenY = myMapObject.Y - focusPoint.Y;
Еще одна вещь, которую стоит отметить: используйте поплавки или Vector2 / 3 для хранения локаций, вы можете и не подумать, что это требуется сейчас, но это будет не так.
Возможно, это излишне, но мой SF-проект использует XNA для рисования строго 2D-сцены, которую вы можете перемещать: http://sourceforge.net/projects/asteroidoutpost/
Надеюсь, это поможет.