Лучший способ кэшировать измененные изображения с помощью PHP и MySQL

Подводя итог вашим требованиям:

  • У вас есть некоторый общий код игрового движка, который является достаточно общим, чтобы делиться между несколькими различными играми;
  • Однако движок зависит также от некоторого кода, специфичного для игры это специфично для каждой игры;
  • В настоящее время вы решаете эту проблему, настраивая специфическое поведение игры во время компиляции;
  • Вы хотели бы найти решение, в котором было бы проще разделить игровой движок между различными играми, например, для объединения нескольких игр, которые пользователь мог выбрать при запуске (через панель запуска).

Если это правильно, вот некоторые мысли, которые помогут вам в дальнейшем:

  • Нет способа элегантно изменить элементы времени компиляции (включенные) во время выполнения.
  • Создание модуля запуска, который получает доступ ко всему исходному коду для перекомпиляции в потоке, кажется не правильным решением (поскольку пользователю необходимо предварительно установить среду компиляции с установленными всеми библиотеками, зависимостями и цепочками инструментов и в любом случае, запуск игры занял бы слишком много времени).
  • Тогда правильным подходом будет более широкое использование полиморфизма и рефакторинг игрового движка, чтобы он полагался на инкапсулированные игровые объекты (используя понятный интерфейс и поддерживая связь как можно ниже). например, с использованием SOLID .
  • Как только достигается такая степень полиморфизма, вы можете при запуске игры вводить в движок специфичные для игры элементы (например, абстрактная игровая фабрика , которая позволяет движку инициировать семейства связанных игровых объектов). без необходимости знать особенности игры). Вы можете выбрать, использовать ли отдельную основную часть для каждой игры (выбор времени компиляции игры) или оставить пользователю выбор из нескольких при запуске (выбор времени выполнения).
  • В качестве альтернативы, вы также можете построить свою систему на основе чистого API между игровым движком и динамической библиотекой (например, DLL под окнами), которая динамически загружается во время выполнения (и которая затем может загружать вновь доставленные игры, упакованные как игровые ресурсы DLL +, и добавляемые к уже установленным играм, когда это необходимо. ( Джон рекомендовал эту замечательную ссылку в комментариях, есть также , эта , и, конечно, пара о других. Но имейте в виду, что это уровень дополнительной сложности, который должен очень хорошо понимать ограничения DLL - так что, возможно, оставьте это в качестве последующего шага для вашего рефакторинга)

14
задан Chris Hawes 26 September 2008 в 17:13
поделиться