如何在Silverlight中最好地创建游戏地图

时间:2012-10-21 17:12:47

标签: c# silverlight

我正在寻找关于如何创建游戏的2d布局(步行路径)的想法。 瓷砖将是32x32像素以及在瓷砖上移动的角色。

我目前已经想过两种方式,但还没有尝试过任何方法。

游戏将在大约400x300或512x356的窗口中显示......比游戏地图本身可能大于1000x1000的游戏大得多。因此,大多数时候只能看到地图的一部分。

就我所想的而言,这是我的两个选择。

[1]:在开始时创建整个地图(这可能会增加加载时间,但会让地图更容易移动),包括每个对象,玩家,敌人等等。

[2]:只创建看到的地图和周围的1个图块(这是不可见的)所以我可以使用故事板使其可见,并删除出来的行/列of bounds并再次创建一列。

这意味着,如果我有一个5x5瓷砖的房间,我加载7x7瓷砖。如果我向右移动,我会移动所有的瓷砖并将播放器保持在屏幕中间。然后我删除最左边的一组瓷砖并在右侧创建一组新的瓷砖,希望在故事板完成移动之前完成。

在第二种方法中,我必须考虑的是大于32x32的对象。我怎么能最好地对这些做出反应..但是,这是我想稍后讨论的一个问题。现在我更愿意了解人们的意见和可能更好的方法。

如果这个问题不适合stackoverflow,我会做出支持。

1 个答案:

答案 0 :(得分:0)

请注意“加载”一词。加载,意味着从磁盘/驱动器获取数据并将其放入内存。为此,您应该在游戏开始之前立即加载所有当前世界/地图。相信我,你不想在地图运行时让自己进入动态加载。

但是你只需要加载地图的定义,你不需要在那时创建对象的实例。所以你可以在玩家走的时候从地图定义中创建实例......但你真的在内存中有这种约束吗?我可以理解,对于像Minecraft或Terraria这样的游戏,地图中包含几乎数百万个瓷砖......但是对于32x32,你可以考虑在加载定义时全部制作。

当然,无论解决方案如何,您都应该只绘制/计算/碰撞/更新屏幕上可见的图块。

相关问题