Pygame:更改游戏分辨率

lef*_*fti 5 python pygame resolution screen-resolution python-2.7

我开发 2D 横向卷轴平台游戏已经有一段时间了。这是我的第一个正式游戏,而且快完成了。到目前为止我还没有对决议进行太多思考。

我的游戏是基于图块的,大多数图块和玩家精灵都是尺寸为 40x40 像素的 .PNG 文件。默认屏幕高度和宽度为 1280x720。据我所知,现在的大多数游戏都有许多不同的分辨率选择和不同的宽高比。

我想为玩家提供多种分辨率选择,例如 800x600、1024x768 和 1280x720。需要这样做,以便玩家可以在游戏中看到相同数量的图块,无论分辨率如何,以免使用分辨率带来不公平的优势或劣势。实现这一目标的最佳方法是什么?

我考虑过根据给定的分辨率缩放游戏的精灵,使用

self.image = pygame.transform.scale(self.image, (30, 30))
self.image = pygame.transform.smoothscale(self.image, (30, 30))
Run Code Online (Sandbox Code Playgroud)

这意味着精灵会按比例缩小,大小为 30x30 像素。是目标尺寸。我让它们正常工作,但两者的问题都是质量下降。pygame.transform.smoothscale 较少,但对我来说仍然足够明显。

这让我想知道,解决这个问题的最佳方法真的是制作相同文件但尺寸不同的新艺术资源吗?这看起来工作量很大,当你有多种分辨率选择时更是如此。我还考虑过制定一个默认的屏幕分辨率,坚持使用它,不让玩家选择任何分辨率。但我宁愿不这样做。

jon*_*rpe 4

据我所知,现在的大多数游戏都有许多不同的分辨率选择和不同的宽高比

但请记住,现在大多数游戏都不是基于 576 个方块!当您不使用静态艺术资源时,重新缩放事物会容易得多。

想想这个;如果您已经为 16:9 格式显示器 (1280x720) 开发了(方形)资源,那么在 4:3 格式显示器(例如 1024x768)上图块应该是矩形(并且字符更细)吗?简单地以这种方式缩放会给你一个看起来很奇怪的游戏。正如你所说,考虑到有多少“共同”的解决方案,创建一系列艺术资产将是一项艰巨的工作。

我建议您集中精力让游戏在适合大多数其他常见分辨率(例如 800x600)的基本分辨率下看起来不错,并在不运行窗口的情况下用黑色占据任何备用屏幕空间。您不会使用整个屏幕,但如果游戏玩法良好,玩家会专注于您正在使用的部分!

如果您确实想支持多种分辨率,我会选择一种宽高比,并且肯定会为每种尺寸创建单独的资源;正如您已经注意到的,简单地从 40x40 缩放到 30x30 看起来不太好。