为可收集的纸牌游戏加载超过一百万张图像的有效方法是什么?

时间:2013-01-23 02:40:20

标签: c# algorithm architecture monogame

我正在使用C#和MonoGame,我想知道为一个可收集的纸牌游戏加载超过一百万张卡片图像的有效方法。在未来的更新中会不断添加更多的卡片。我敢肯定,有一些天才的方法可以实现这一点,既优雅又高效。我希望能够对其他人如何解决这个问题有所了解。

这些卡将全部位于用户下载的客户端应用程序上。服务器将确保玩家不作弊。我正在试图找出在客户端管理大量卡片图像的有效方法,包括加载和卸载卡片。

我知道卡片应该加载并仅在必要时显示。但是,游戏中有一些点可以让用户查看整个集合。我正在考虑使用滚动条或类似的东西。他们可以根据卡的某些属性过滤他们的卡。在这种情况下,我如何实时管理卡的加载/卸载,使其无缝且高效。

3 个答案:

答案 0 :(得分:2)

您不会一次加载所有图像。无论这是否是在线游戏,一次加载所有这些都是非常低效的。解决这个问题的一种方法是将它们全部放入某种数据库中,只在需要时加载所需的卡片,比如当新手发出时等等。如果你担心查询速度会减慢你的游戏速度,请查看{ {3}}有关如何确定最快查询的详细文章/竞赛,以及this提示。

关于您的修改:

您仍然可以在服务器上使用SQL数据库并运行查询以确保它们不会作弊。你不需要检查他们所有的卡片,只需要检查他们当前拥有或正在处理的卡片。

希望这能帮到你!

答案 1 :(得分:1)

假设这是一款在线游戏。我想你会想要使用数据库(MySQL等)存储卡信息。卡片图像将存储在FTP上以便快速访问,其路径将存储在数据库中。然后使用查询来访问当前屏幕所需的必要卡片。

答案 2 :(得分:0)

您不应该一次加载一百万张图片。只按要求加载......例如发卡时,加载图像。

我相信你可以将图像保存在数据库中。这是最有效的存储和检索机制。或者您可以存储为二进制数据。如果不将图像数据保存在RAM或SSHD中,您将无法获得更快的速度。

如果您的关注是表现,我认为您的优先事项是错误的。 ;)