import textwrap#pip install textwrap
text = "Твой текст который условно нужно вывести"
max_width = 20#максимальное кол-во символов в строке
wrapped_text = textwrap.wrap(text, width=max_width)#-> list : вернет весь текст разбитый на куски до 20 символов(слова не обрезаются, без переноса)
print(wrapped_text)#['Твой текст который', 'условно нужно', 'вывести']
Вы затронули другие движки которые не стали успешными. Мои мысли на этот счет.
Упомянутые вами движки созданы на C / c++ / c#, возможно у unreal еще и assambler местами есть. От этого бешенная сложность. В моей идеи я упомянул что под капотом будет pygame. В нем уже все сделанно за меня. Мне остается прописать шаблон поведения, распихат ьвсе по классам, и сделать простой графический редактор.