【问题标题】:Dealing with different resolutions for pixel based android game处理基于像素的安卓游戏的不同分辨率
【发布时间】:2011-01-17 18:08:09
【问题描述】:

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

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

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

另外注意:我如何才能将我的游戏限制为仅使用这些分辨率(尤其是 Android 电子市场)?我知道清单中的“supports-screens”标签,但这取决于有效的屏幕大小,而不是像素大小,还是我弄错了? 我还对其他 Android 游戏开发者在分辨率独立性方面的个人经验感兴趣。

谢谢!

【问题讨论】:

  • 我只是将 api 目标设置为 1.5,因此 android 不会干扰,并自己缩放位图,使用 getRawX 等,如果您只处理 2 个 DPI,然后在大屏幕上,只需在小屏幕上为每个像素绘制 4 个像素。祝你好运

标签: java android screen-resolution


【解决方案1】:

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

所以我认为有两种主要方法可以采取:

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

(2) 更智能地调整到您发现自己正在运行的屏幕的实际分辨率。自己放大或缩小图形以创建您想要的播放区域。也许有一些不同大小的纹理,并为屏幕分辨率选择合适的。

您也可以将这些组合在一起,根据游戏可以运行良好的可用总分辨率,您可以为表面视图选择几个固定尺寸。无论哪种情况,您都可以根据需要进行信箱处理,以在不同屏幕上保持纵横比不变。

【讨论】:

  • 谢谢!不是我想要的答案,但它让我意识到没有更简单的方法。我现在将通过使用 anyDensity="false" 让 android 处理不同的分辨率。这样一来,我在大多数显示器上的像素图形都会稍差一些,但我根本不需要处理不同的分辨率、密度和比率。
  • 您能否指出一些有关您将如何采用这些方法的资源?我很想了解更多关于 Android 上下文中方法 1 的信息,但我发现的 android 文档大体上假设您只是使用标准的 XML/Layout/“dips”格式样式而不是绘制到 GLSurfaceView
  • 我写了一篇关于处理这些不同情况的文章,您可能会觉得有用:alexis.pautrot.com/dealing-with-different-screen-sizes。我是根据 Google 的参考资料和有关屏幕尺寸的最新统计数据得出的。
【解决方案2】:

对于长宽比的差异有三种方法:

  1. 在某些比率上显示不透明的边框(“信箱”)。
  2. 以某些比率显示更多游戏世界。
  3. 不要在某些比率上工作。

使用方法 (1),您会在某些设备上浪费屏幕空间。对于电视来说没什么大不了的,但在屏幕空间有限的手持设备上却很糟糕。通过方法(2),某些设备上的玩家会获得优势(他们可以看到更多的世界)和劣势(精灵更小,因此触摸精度更难)。方法 (3) 很糟糕。

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

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

【讨论】:

    猜你喜欢
    • 2017-02-16
    • 2015-03-04
    • 2020-06-03
    • 2014-04-19
    • 2015-07-22
    • 2012-05-08
    • 2013-05-18
    • 1970-01-01
    • 2014-02-24
    相关资源
    最近更新 更多