gamemaker吧 关注:13,609贴子:94,797
  • 16回复贴,共1

【gms2】关于视窗、全屏与游戏视图的问题

只看楼主收藏回复

最近在研究让游戏全屏的事。
我现在的问题是:我希望能做一个在不同规格显示器上都能显示良好的游戏该怎么做?
比如我窗口模式是800x450分辨率,全屏之后文字的像素点会被拉伸(图片在更低分辨率会有这个问题),也就是说gms2的全屏会根据桌面分辨率来调整视窗尺寸?意思是说gms2只能做窗口最大化的游戏吗?
我研究了下摄像机手头倒是有一个解决方法:可以为窗口模式的分辨率和1080p这两种分辨率分别设置两组摄像机尺寸。但感觉这个办法治标不治本啊,万一我游戏做完的那一天2k或4k已经普及了怎么办qwq求教!


1楼2018-03-29 21:11回复
    .第一?这我也想问


    IP属地:四川来自手机贴吧2楼2018-03-29 21:17
    回复
      不过如果真的只能这样的话也不是不可以吧。只是想知道有没有办法让做出的游戏真正最大化显示而已嗯。


      4楼2018-03-29 21:55
      回复
        百度怎么老删我贴?5楼都不见了……还是上图吧:


        IP属地:广西6楼2018-03-29 22:57
        回复
          屏幕不同分辨率自适应的问题嘛
          https://forum.yoyogames.com/index.php?threads/how-to-properly-scale-your-game.995/


          7楼2018-03-29 23:33
          回复
            这个帖子怎么好像哪里见过。。。
            就如6楼所说,基于位图的引擎是不可能在你放大的情况下不会变糊的。举个例子,你的屏幕是1920*1080像素,你的游戏窗口是800*600,这时候全屏,意味着800个像素点填充到1920个像素点里,必然会出现原来一个像素点的数据填充到多个像素点,造成模糊。另外那些大型游戏的多种分辨率配置都是内置的。
            如果你的目的是做像泰拉瑞亚那样窗口越大能看到的东西越多的,的确按你说的调整摄像机可以解决,但这不用内置尺寸。可以用window_系列函数(不知道gms2里是否还是这个开头)来获取全屏后窗口大小(即屏幕分辨率)并调整摄像机范围。


            IP属地:江西来自Android客户端8楼2018-03-30 00:35
            回复
              该楼层疑似违规已被系统折叠 查看此楼


              17楼2018-03-30 09:40
              回复(3)
                上截图Q_Q,我觉得应该是我有些地方写错了。
                首先是全屏显示正常的,窗口模式分辨率为1600x900的情况。
                //room Creation Code:
                camera4 = camera_create_view(0, 0, 800, 450, 0, obj_playerMOVE, -1, -1, 32, 32);
                //obj_permanent: Events_step:
                view_set_camera(0,camera4)
                if(window_get_height()=900){
                camera_set_view_size(view_camera[0], 800, 450);
                view_set_wport(0, 1600);
                view_set_hport(0, 900);
                }
                if(window_get_height()>=1080){
                camera_set_view_size(view_camera[0], 960, 540);
                view_set_wport(0, 1920);
                view_set_hport(0, 1080);
                }


                然后是是全屏下文字显示不正常的,窗口模式分辨率为1366x768的情况。
                //room Creation Code:
                camera4 = camera_create_view(0, 0, 683, 384, 0, obj_playerMOVE, -1, -1, 32, 32);
                //obj_permanent: Events_step:
                view_set_camera(0,camera4)
                if(window_get_height()<=768){
                camera_set_view_size(view_camera[0], 683, 384);
                view_set_wport(0, 1366);
                view_set_hport(0, 768);
                }
                if(window_get_height()>=1080){
                camera_set_view_size(view_camera[0], 960, 540);
                view_set_wport(0, 1920);
                view_set_hport(0, 1080);
                }



                18楼2018-03-30 16:23
                收起回复
                  早上说我放的图像素太低如果想在高分辨率下高清显示就不要这种程度的素材那位您真是够了,我把您回复删了还真是抱歉啊。我问的主要问题是文字出问题了好么?我上18号字还是该有问题照样有问题:

                  然后找了会儿资料以后,我好像把问题解决了,需要用到surface_resize这个功能...
                  既然我发代码会被秒删和等恢复,那就截图。


                  22楼2018-04-01 12:51
                  收起回复