gpt4 book ai didi

c# - 在Microsoft Silverlight中实现可滚动 map (如Google Maps)的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-30 21:23:10 25 4
gpt4 key购买 nike

问题概述

我正在开发游戏应用程序,因此需要能够在Silverlight中实现类似于Google Maps中可滚动的地图。但是,我不确定如何有效地执行此操作。以下段落提供了更多详细信息。任何想法或指导,不胜感激!

问题细节

我一直在研究新的MMOG(大型多人在线游戏)。游戏将实现基于坐标(x,y)的地图。在任何给定时间,只有很小一部分地图(小于0.1%)会显示在屏幕上。玩家应具有单击地图并拖动鼠标以滚动和查看当前不可见的地图区域的能力。 (这有点类似于Google Maps。)

地图背景由一系列拼接(重复)图像组成。这些图像被编织在一起,以给出游戏“世界”的基本外观。然后,将适当的一组标准附加图形叠加在每个坐标位置上。例如,点(0,0)可能是湖泊,(0,1)可能是城市,而(0,2)可能是森林。湖泊,城市和森林的相应图像将叠加在背景上。

值得一提的是,整个映射未存储在本地客户端计算机上。而是,当玩家滚动到或打开特定位置时,将从远程游戏服务器中检索适当的地图信息。由于地图的大小以及部分地图不断变化的事实,我们无法提前构建整个游戏世界地图。

我想到了每次玩家移动时都会在新地图上即时生成位图的想法。但是,我认为随着玩家滚动,可能会有更好的方法添加到地图中。

滚动时,如果可能,地图的移动不应导致屏幕“闪烁”刷新。我相信,每当玩家移动一个或两个像素时,每次重新创建位图几乎肯定会导致闪烁。

我愿意接受第三方工具和解决方案。但是,在可能的情况下,我宁愿使用标准的Microsoft库或开放源代码工具,而不要使用商业工具。

关于实现此功能的最佳方法的一些想法是什么,以使其表现良好,可靠并且对玩家来说无缝过渡到地图的新区域?

预先感谢您的所有帮助!



更新资料

以下是一些其他信息,可能会有所帮助。

从我的第一篇文章开始,我就被引入了“瓷砖引擎”的概念。 (非常感谢Michael和Paul向我推荐了Bing和BruTile。)

我的理解是,切片引擎基本上将较大的图像分为多个部分,并使其并排呈现。当用户滚动时,其他图块会从其他视图中移除时呈现。这正是我要寻找的。

但是,可能会有一些皱纹影响我对标准平铺引擎的使用。游戏的所有图形,包括将在任何图块上显示的背景,都将已经下载到客户端上。瓦片引擎不要从服务器检索图形很重要,因为这会消耗大量不必要的带宽。

当在屏幕上渲染图块时,必须叠加表示游戏世界中对象的其他图形(例如,湖泊,森林,山丘)。诸如Bing之类的图块引擎似乎提供了叠加自定义图像的功能。无论使用哪种平铺引擎,都不仅必须支持此功能,还必须准确放置这些叠加的图像。

最后,当用户将鼠标悬停在一个叠加图形上时,需要支持弹出描述。与已经存储在客户端上的图形不同,这些描述包含必须从游戏服务器下载的信息。 BruTile虽然在许多方面都非常出色,但似乎还不支持这些弹出窗口说明。

我们正在进步。感谢您迄今为止的所有帮助!

最佳答案

对于开源解决方案,您可以查看BruTile。它也具有您描述的所有功能。它也可以在Microsoft Surface和Windows Phone(针对您的markeplace版本)上使用。

关于c# - 在Microsoft Silverlight中实现可滚动 map (如Google Maps)的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1943896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com