So ein Vorhaben wie deins würd ich auf jeden Fall mit
DirectX machen. Über kurz oder lang kommst du sowieso nicht dran vorbei, und so sparst du dir den Ärger, alles umzuschreiben.
@Sidorion:
2D-Array ist ja an sich schon mal eine ganz gute Wahl. Aber die Elemente sollten bei der Komplexität die sie aufweisen auf jeden Fall Objekte sein. Das wird ja sonst ein Wust aus
procedure XYZ(var Element: TElement;...);