Мне примерно такое нужно и тут вроде как без всяких массивов
Вот это выглядит как будто Character.new возвращает табличку, с перегруженным __call-метаметодом, который принимает строчку, добавляя её в какой-то глобальный экшн-лист с собственным контекстом. Все строчки кода вызваны сразу и мгновенно, но где-то хранятся в каком-то списке, и из этого списка по очереди (событий) выдёргиваются и выводятся движком. Как именно оно устроено — на твоё усмотрение.
Но у подобного подхода весьма ограниченная сложность. Тут не получится сделать нормальную вариативность.