首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将外部ChessEngine与集成的正确方法是什么?

将外部ChessEngine与集成的正确方法是什么?
EN

Stack Overflow用户
提问于 2018-05-12 18:31:33
回答 1查看 978关注 0票数 0

我正在开发一个国际象棋游戏在团结。我不是自己写人工智能,而是使用名为MadChess的国际象棋引擎。

我下载了引擎的源代码(用C#编写)以及名为“MadChess.exe”的可执行文件(它基本上是一个命令提示符,我们可以通过它按照UCI协议与引擎对话)。

我以前还没有把国际象棋引擎和统一项目集成在一起,也无法在网上找到很多关于如何做的资源。

方法1:最初,我在团结中编写了一个C#脚本,它创建了一个单独的进程来与"MadChess.exe“进行通信,但后来我意识到这种方法是错误的。这是因为当我将Unity构建为一个独立的Windows应用程序时,它依赖于位于我的PC上的物理"MadChess.exe“文件--也就是说,它不会将所有东西(我的统一项目代码和象棋引擎代码)一起构建到一个可执行的应用程序中。根据我的说法,这是错误的,只能通过创建游戏的安装程序来纠正,该安装程序将"MadChess.exe“文件与我的主统一代码一起注入。

方法2:现在,我正在尝试浏览MadChess象棋引擎项目的源代码,并基本上创建国际象棋引擎项目的.dll文件,我计划在我的统一项目中使用这些文件作为插件。最终,我会通过C#代码与他们进行接口。这样做对不对?

我被困在这大约一个星期,仍然无法找到一个明确的方式。我不想再花一个星期的时间来意识到我做错了。即使我从一开始就错了,请告诉我。我只是想集成一个国际象棋引擎与我的团结项目。如果有人有任何建议或想法,或如果有人曾经这样做过,请指导我。我会很感激的。谢谢你一直陪着我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-13 13:52:14

我建议使用方法1

这两种方法听起来都是有效的,但我建议使用方法1作为一个过程与MadChess.exe进行通信,因为这比方法2要少得多,特别是如果您已经使用了第一个方法(除了构建问题)。

此外,除了源代码之外,如果MadChess项目只提供exe而不是dll文件,那么我认为坚持该项目“建议”的方法更安全。当您尝试自己创建dll文件时,您不知道会遇到什么样的问题(听起来您已经遇到了问题)。

尽管应该可以使用dll文件,但我认为最好选择一种方法,让您在项目上取得更快的进展。如果遇到其他问题,以后总是可以切换到方法2。

(只需确保在找不到MadChess.exe时显示适当的错误,以便您可以快速解决问题。)

如何将MadChess.exe作为构建的一部分

您不一定需要安装程序将MadChess.exe文件包含在游戏中。您还可以将MadChess.exe复制为建立播放器管道的一部分。使用BuildPipeline.BuildPlayerPostProcessBuildAttribute,您可以获得构建项目的路径,然后在构建步骤中使用FileUtil.CopyFileOrDirectory复制MadChess.exe。

此外,正如@阿德里安·斯格罗在一条评论中提到的那样,StreamingAssets也同样有效。(但请注意,文档明确提到,如果需要包含任何dll依赖项,则不包括此文件夹中的.dll文件。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50309449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档