Рисование спрайтов в нужном месте не так уж сложно. Формула проекции:
screen_x = sprite_x - sprite_y
screen_y = (sprite_x + sprite_y) / 2 + sprite_z
sprite_x и sprite_y являются значениями с фиксированной точкой (или плавающей точкой, если хотите). Как правило, точность фиксированной точки - это количество пикселей на плитке, поэтому, если размер вашей плитки составляет 32x16 (квадрат 32x32), точность будет равна 5 битам, т. Е. 1/32 от плитки.
Действительно сложная часть состоит в том, чтобы отсортировать спрайты в порядке, который отображается правильно. Если вы используете OpenGL для рисования, вы можете использовать z-буфер, чтобы сделать это действительно легко. Используя GDI, DirectX и т. Д., Это действительно сложно. Транспортный магнат не правильно отображает спрайты во всех случаях. У оригинального Transport Tycoon был самый ужасный движок рендеринга, который вы когда-либо видели. В нем реализованы три уровня масштабирования - три экземпляра массивного макроса masm. ТТ была написана полностью на ассемблере. Я знаю, потому что я портировал его на Mac много лет назад (и также сделал классную версию для комплекта разработчика PS1, хотя для этого потребовалось 6 Мб).
P.S. Одна из маленьких графических фигур в бунгало в игре была основана на доме, в котором жил Крис Сойер в то время. У нас возник соблазн добавить Ferrari, припаркованный на проезжей части, для версии для Mac, так как именно эту машину он купил с гонорарами.