Предположим, у вас был язык без каких-либо пространств имен или пакетов (в некоторых языках, таких как Java, пакет является программным модулем и пространством имен одновременно ...). Чтобы избежать конфликта имен, вы должны использовать префиксы. Но вы должны позаботиться о том, чтобы правильно назвать все элементы программы и писать некоторые символы каждый раз, когда вы вводите что-то новое. Таким образом, решение будет заключаться в том, чтобы ввести пространство имен в язык, конструкция, которая будет автоматически добавлять каждый элемент к какому-либо имени, которое вы можете указать в одном месте (избегая опечаток). Теперь, пока имена пространств имен не классифицируются, вы в безопасности. Пространства имен позволяют указывать префикс в одном месте, так что вы можете легко использовать более длинные имена и, следовательно, избежать конфликта, не вводя больше каждый раз. Посмотрите, например, как названы пакеты некоторых библиотек - они используют пространство имен uri (например, country_abbreviation.compay_name.product_name.program_module). Однако написание полных имен идентификаторов с именем пакета, как правило, утомительно, поэтому многие языки придумали конструкции, которые позволяют использовать имена из пространства имен, как если бы вы использовали их прямо в пространстве имен (например, использование, импорт и т. Д.). Но это возвращает нас к исходной ситуации. Решение состоит в том, чтобы избежать использования неявных пространств имен для элементов программы, которые могут измениться, как в вашей ситуации. Поэтому решение, которое вы хотите, - это использовать пространства имен для разных игр, чтобы вы могли указать в компоненте GUI, какой именно элемент игры вы имеете в виду, указав полное имя с именем пакета.