Как правильно интегрировать внешний ChessEngine с моим проектом Unity? - PullRequest
0 голосов
/ 12 мая 2018

Я занимаюсь шахматной игрой в Unity.Я не пишу AI самостоятельно, а использую шахматный движок с именем MadChess .

Я загрузил исходный код движка (который написан на C #), а также исполняемый файл с именем " MadChess.exe " (который в основном представляет собой командную строку, с помощью которой мы можемпоговорите с движком, следуя протоколам UCI )

Раньше я фактически не интегрировал движок шахмат в проект Unity, а также не смог найти в Интернете много ресурсов о том, как это сделать.

Подход 1: Изначально я написал скрипт на C # в Unity, который создает отдельный процесс для связи с " MadChess.exe ", но позже я понял, что этот подходглючитЭто связано с тем, что когда я создаю свой Unity Project как отдельное приложение для Windows, он зависит от физического файла " MadChess.exe ", расположенного на моем ПК, т.е. он не собирает все (код My Unity Projectвместе с кодом Chess Engine) в одно исполняемое приложение.Это, по моему мнению, является ошибочным и может быть исправлено только путем создания установщика игры, который вставляет файл " MadChess.exe " вместе с моим основным кодом Unity.

Подход2: Теперь я пытаюсь просмотреть исходный код проекта шахматного движка MadChess и в основном создаю файлы .dll проекта шахматного движка, которые планирую использовать в качестве плагинов в своем проекте Unity.Я бы в конечном итоге взаимодействовал с ними через мой код C # в Unity.Это правильный путь или нет?

Я застрял в этом около недели или около того и до сих пор не могу найти ясного пути.Я не хочу тратить еще одну неделю, чтобы понять, что я делаю это неправильно.Даже если я ошибаюсь с самого начала, пожалуйста, дайте мне знать.Я просто хочу интегрировать шахматный движок с моим проектом Unity.Если у кого-то есть какие-либо предложения или идеи или кто-то уже делал это, пожалуйста, направьте меня.Буду признателен.Спасибо за то, что терпели меня здесь.

1 Ответ

0 голосов
/ 13 мая 2018

Я рекомендую использовать подход 1

Оба подхода звучат корректно, но я рекомендую использовать подход 1 для связи с MadChess.exe как процесс, потому что это намного меньше работы, чем подход 2, особенно если у вас уже работает первый подход ( кроме вопроса сборки).

Кроме того, кроме исходного кода, если проект MadChess предоставляет только файлы exe, а не файлы dll, то я думаю, что безопаснее придерживаться подхода, который неявно "рекомендуется" проектом. Вы не знаете, с какими проблемами вы столкнетесь, когда попытаетесь сами создать dll-файлы (и, похоже, вы уже сталкивались с проблемами).

Несмотря на то, что возможно использование dll-файлов, я думаю, что предпочтительнее выбрать подход, который позволит вам быстрее прогрессировать в вашем проекте. Вы всегда можете перейти к подходу 2 позже, если столкнетесь с другими проблемами.

(Обязательно укажите соответствующие ошибки в случае, если MadChess.exe не найден, чтобы можно было быстро устранять неполадки.)

Как включить MadChess.exe в состав вашей сборки

Вам необязательно нужен установщик, чтобы включить в игру файл MadChess.exe . Вы также можете скопировать MadChess.exe как часть Build Player Pipeline . Используя BuildPipeline.BuildPlayer или PostProcessBuildAttribute, вы можете получить путь к построенному проекту, а затем использовать FileUtil.CopyFileOrDirectory для копирования MadChess.exe на этапе сборки.

Кроме того, как @AdrianSgro упоминается в комментарии, StreamingAssets также работает. (Но обратите внимание, что в документации явно упоминается, что файлы DLL в этой папке не включены, если вам нужно включить какие-либо зависимости dll.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...