Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 处理基于像素的android游戏的不同分辨率_Java_Android_Screen Resolution - Fatal编程技术网

Java 处理基于像素的android游戏的不同分辨率

Java 处理基于像素的android游戏的不同分辨率,java,android,screen-resolution,Java,Android,Screen Resolution,我正在为android平台开发一款2D platformer游戏,所以我并不真正关心屏幕的DPI,而是更关心实际的像素分辨率。从我在网上收集的资料来看,现在有两种不同的分辨率(和纵横比)。根据我的搜索,目前流行的两种分辨率是480x320(1.5)和800x480(1.666),对吗?我想把这两个解决方案作为目标,以吸引大多数客户。 现在,我可以通过在更大的显示器上显示40像素的黑色边框来处理不同的纵横比,基本上将其减少到720x480像素,比例为1.5 我的游戏的问题是,玩家在每个屏幕上看到相

我正在为android平台开发一款2D platformer游戏,所以我并不真正关心屏幕的DPI,而是更关心实际的像素分辨率。从我在网上收集的资料来看,现在有两种不同的分辨率(和纵横比)。根据我的搜索,目前流行的两种分辨率是480x320(1.5)和800x480(1.666),对吗?我想把这两个解决方案作为目标,以吸引大多数客户。 现在,我可以通过在更大的显示器上显示40像素的黑色边框来处理不同的纵横比,基本上将其减少到720x480像素,比例为1.5

我的游戏的问题是,玩家在每个屏幕上看到相同数量的世界,这对游戏性至关重要。否则,一些玩家将获得不公平的优势。此外,我会根据可见性触发一些事件。例如,只有当玩家开始看到敌人时,才允许敌人开始射击。否则,敌人的子弹似乎不知从何而来

所以我想我需要为一种分辨率创建图形,并为另一种分辨率缩放它们。或者我为每个分辨率创建单独的图形。是这样吗?不幸的是,这两种方法对于像素图形都不是最理想的

另一方面:我如何将我的游戏限制在这些分辨率范围内(尤其是Android市场)?我知道清单中的“supports screens”标记,但这取决于有效的屏幕大小,而不是像素大小,还是我搞错了? 谈到分辨率独立性,我还对其他android游戏开发者的个人体验感兴趣


谢谢

有三种方法可以解决纵横比的差异:

  • 在某些比率上显示不透明边框(“字母框”)
  • 在某些比率上显示更多的游戏世界
  • 不要在某些比率上工作
  • 在方法(1)中,您会在某些设备上浪费屏幕空间。这对电视来说没什么大不了的,但在屏幕空间有限的手持设备上却很糟糕。通过方法(2),一些设备上的玩家既有优势(他们可以看到更多的世界),也有劣势(精灵更小,所以触摸精度更高)。方法(3)太糟糕了

    显然,这取决于你比赛的细节,哪一个更好,但作为一名球员,我更喜欢这种方法(2)。关心其他设备上的玩家是否获得了一点假设优势的选区与关心他们的屏幕是否部分被不必要的黑条遮住的选区相比是相当小的


    (类似的方法和评论适用于分辨率的差异。)

    我的问题是:你认为在PC上会做什么?对于游戏开发,Android应该更像是一个PC目标,而不是一个控制台。你只需要在本质上接受这样一个事实:屏幕的多样性是你无法预先完全预测的

    因此,我认为有两种主要的方法可以采取:

    (1) 使用恒定的“显示大小”,就像在PC上设置固定的视频分辨率,并让用户的显示器处理它一样。当然,在这些设备上没有显示器,只有一个固定的显示器,所以修改核心分辨率是没有意义的。相反,您可以将显示游戏的SurfaceView设置为具有固定分辨率,并让平台的合成器在其合成到屏幕时负责缩放(在硬件中)

    (2) 更智能地根据您所处屏幕的实际分辨率进行调整。可自行放大或缩小图形以创建所需的播放区域。可能有一些不同大小的纹理,并根据屏幕分辨率选择合适的纹理


    您可能还可以将这些功能结合使用,根据游戏的可用总分辨率,为曲面视图选择两个固定大小。在任何一种情况下,您都可以根据需要进行字母装箱,以便在不同的屏幕上保持纵横比恒定。

    我只是将api目标设置为1.5,这样android就不会干扰,并使用getRawX等工具缩放位图。如果您只需要处理2个DPI,那么在大屏幕上,只需在小屏幕上为每个像素绘制4个像素。祝你好运!这不是我想要的答案,但它让我意识到没有更简单的方法。现在,我将使用anyDensity=“false”让android处理不同的分辨率。那样的话,我在大多数显示器上的像素图形会稍微差一点,但我根本不需要处理不同的分辨率、密度和比率。你能给我指一些关于这些方法的参考资料吗?我很想在Android环境中了解更多关于方法1的信息,但是我发现的Android文档大体上假设您只是使用标准的XML/Layout/“dips”格式样式,而不是使用GLSURFACeView。我写了一篇关于处理这些不同情况的文章,您可能会觉得有用:。我是根据谷歌的参考资料和最新的屏幕尺寸统计数据得出的。