Допустим надо добавить кого-нибудь ещё, то ты его заного будешь учить ходить?)
Вот в этом и суть движков. Учишь одного - научиваются все ). образно.
Поэтому надо например для всех персонажей, какой-то интерфейс придумывать, чтобы не надо было каждого учить одинаковому, а чтобы их отличия состояли только из их свойств. И затем можно будет сделать сразу(образно) много персонажей)). Кроме того, если вдруг найдётся то, чего неустраивает, не прийдётся исправлять всех по отдельности, достаточно будет изменить этот "интерфейс". Это один из принципов OOP (Object Oriented Programming - Объектно Ориентированное Программирование).
Вообще ненавижу фанатов OOP. Они начинают умно говорить о всяких абстракциях, интерфейсах, делегировании, обобщённых классах и прочей фигне, которая на самом деле, ничего иного как метод реализаци OOP. Фанатеть можно сколько угодно, а для меня OOP важно только парочкой принципов: объекты можно сказать "сами за себя отвечают"(не важно какая у них внутри реализация, если сказал ему идти то он идёт), скрывать от другого программиста "критические" переменные (при изменении которых может произойти сбой). Ито, и эти принципы не обязательны.