Возьмём для примера игровой симулятор, вроде Cities Skylines. В него можно играть долго и упорно совершенствуя структуру дорог. Поставить дополнения для точечного строительства зданий, тогда и вовсе упороться.
Другой пример Starcraft 2. Стратегии реального времени уже многим поднадоели, но всё же они могут затянуть и это опять же строительство. Но даже взять героический шутер такой как Overwatch или что-то ещё, даже если нет элементов строительства, всё равно игра привлекательнее работы.
Игры имеют музыкальное сопровождение. А музыка как известно сбивает концентрацию, но только, если альтернатива ей абсолютная тишина. Опять же слушать музыку приятнее, чем сидеть в тишине. Даже если музыка снижает производительность в единицу времени, зато позволяет просидеть дольше.
https://www.youtube.com/watch?v=IBZQfgM9rj0
Так же в играх есть звуковое сопровождение. Оно оповещает не только о внешних событиях, но и событиях, которые произвёл сам игрок. А в офисных программах нет ни того, ни другого.
Я пишу этот текст и что, никто мне не говорит, что вы дескать написали предложение или абзац. Никто не чешет моё "Чувство Собственной Важности", что я чего-то достиг. А может я на самом деле ничего не достиг или вовсе ничего не делал, раз не было уведомлений.
https://www.youtube.com/watch?v=dcQBwphHqYY
И получается отличие игр от работы в интерактивности. Да, это теория, но всё же. В работе нет никакой цели, которую могла бы автоматически засечь программа, тот же текстовый редактор. Нет оповещений при каждом действии, что ты делал что-то, что не делал, всё одинаково.
Есть такой термин, геймификация, от слова гейм, игра. Это когда работу пытаются превратить в игру. Но чтобы сделать работу, всё равно придётся сделать те же самые действия, как если бы геймификации не было. То есть геймификация не может изменить сам процесс работы, но может его дополнить всякими свистоперделками.
Прежде всего геймификатор должен перехватывать события мыши, клавиатуры и возможно ещё каких-то устройств.
1) Глобальный перехват событий во всей системе.
2) Локальный перехват событий только в приложении.
И то и другое стандартные практики и имеют готовые решения. А там уже производить некие действия.
Так же нет ничего сложного, чтобы запускать чужие программы и управлять их процессами. Я по крайне мере знаю класс QProcess, но думаю решений предостаточно помимо связки C++/Qt.
Опять же можно сделать планировщик задач с помощью таймеров.
Ещё хотелось бы отметить, что какая-то игра субъективно может ощущаться как бессмысленная и нудная работа. Над этим тоже стоит поразмыслить.