GM Studio에서 흐림없이 픽셀 아트를 어떻게 확대합니까?


9

픽셀 아트를 사용하는 Game Maker Studio에서 게임을 만들고 있습니다. 게임을 시작하면 모든 스케일 업 텍스처가 실제로 흐릿합니다. (작은 사람에게는 일어나지 않습니다.)

예를 들어이 이미지

좋은 :)

게임에서 다음과 같이 렌더링됩니다 :

흐리게 :(

어쨌든 작은 픽셀의 크기 를 흐릿한 픽셀 대신 큰 픽셀 로 조정 해야합니까?


텍스처 대신 그들은 모두 지원 무손실 스토리지, GIF 또는 PNG를, BMP 사용에 대한 손실 압축을 사용하지 않는
래칫 괴물

픽셀 아트가있는 경우 픽셀 아트는 항상 그 문제로 인해 크기 조정을 피하려고합니다. 크기 조정을 피할 수없는 경우 가장 가까운 이웃 보간법을 사용하여 파삭 파삭 한 모양을 유지해야합니다. 크기를 조정하려면 래스터 그래픽 대신 벡터 그래픽을 사용하십시오. 불행히도 GMStudio에 익숙하지 않기 때문에 도움이되지 않습니다.
Philipp

예가 추가되었습니다.
mpower

게임 제작자의 가능성을 모르지만 모든 스케일 필터링을 비활성화하고 가장 가까운 이웃 스케일링을 활성화하고 싶습니다.
Appleshell

1
내가 정확하게 기억한다면 , 원래 Spelunky (Game Maker에서 만든)에는 선형 스케일링을 가능하게하는 DLL이 있습니다. 해당 링크에서 소스를 사용할 수 있습니다. 보세요
Anko

답변:


13

일부 리소스에서 솔루션을 찾았습니다. 전역 게임 설정으로 이동 한 다음 플랫폼 스포일러 (예 : "Windows"또는 "Android")로 이동하여 "그래픽"이라는 제목의 스포일러를 선택하고 "픽셀 간 색상 보간"을 해제하십시오. 재미있게 보내세요 :)


픽셀 아트가 변경 될 수 있지만 이는 기술적으로 인해 (예 : 2.5 배) 정수가 아닌 팩터와 확장에, 작동
liggiorgio

당신은 그들이 기본 설정을 귀찮게하지 않았다는 것을 의미합니까?!? 방금 확인했으며 게임 메이커 8.0에서 다른 방법으로 기본값을 설정했습니다. 이것은 단지 견과류입니다 .... 좋은 대답 btw.
user64742

5

모든 스프라이트를 수동으로 확장해야하는 사람은 아무도 없습니다. 작업 공간이 느슨 할뿐만 아니라 매우 전문적이지 않습니다. 전역 게임 설정에서 보간 기능을 끌 때 해결책이 없습니다.

texture_set_interpolation(false);

:) 이것이 미래의 노력에 도움이되기를 바랍니다.


여러 플랫폼을 대상으로하는 경우이 방법이 가장 좋습니다. 모든 단일 플랫폼에 대해 "픽셀 간 보간"을 클릭하지 않아도됩니다! 정확히 내가 찾던 것.
로간 픽업

1

내가 이것을 위해 일반적으로하는 일은 포토샵이나 김프 (스케일 / 가장 가까운 이웃)를 사용하는 것입니다

그러나 GM : S 스프라이트 편집기 자체에서 수행하려면 스케일 대신 스트레치 명령을 사용하여 POOR 품질로 설정합니다. 그것은 Blocky 느낌을 유지합니다ATM에서 작업하는 게임 임의 Screenie, 스프라이트는 GM에서 확대됩니다.

위는 ATM에서 작동하는 게임 메신저입니다.


이것은 특정 해상도에서 업 스케일링하는 데 효과적이지만 모든 해상도에 맞지는 않지만 GM은 기본적으로 텍스처를 압축하는 습관을 가지고 있습니다. 이것은 또한 스트레치 기능을 사용할 때 다른 해상도에서 다르게 스케일링되므로 블러를 피하려고합니다. 그러나 (Scale / Nearest Neighbour)에 대해서는 +1입니다.
Tom 'Blue'Piddock

1

지도의 배경 탭에서 축척 기능을 끕니다. 스케일이 맞지 않으면 배경의 텍스처가 방 /지도와 같은 크기인지 확인하십시오.

또는 이 게시물 을 사용하여 배경 결과를 향상시키는 백그라운드 스크립트를 작성 하십시오 (바람직한).

이것은 표면을 사용하므로 추가 도움이 필요한 경우이 게시물 은 많은 정보를 제공합니다.


편집하다:

내 대답으로 돌아가서 이것이 처음이 아니며 튜토리얼 내용이 필요하다는 것을 깨달았습니다. 여기있어:

1 단계 : 원하는 스케일을 선택하십시오. 모든 방에보기를 사용하고 포트 W 및 포트 H를 적절하게 조정하십시오. 예를 들어 2의 스케일을 사용하는 경우 GM의 룸 편집기에서 다음과 같이 표시됩니다.

이것이 모든 방에 일관성이 있어야합니다. 방이 많으면 코드 *를 통해이 작업을 수행하는 것이 더 쉬울 수 있습니다. 값이 일정하지 않고 여러 가지 다른 스케일을 지원할 수 있기 때문에 그렇게하는 것을 선호합니다.

2 단계 : 3 개의 스크립트 screen_init, screen_begin 및 screen_end를 만듭니다. 각 스크립트에 적용되는 내용은 다음과 같습니다.

인용 : screen_init

// screen base(view_wview and view_hview)
screen_x = 0;
screen_y = 0;
screen_w = 320;
screen_h = 240;
screen_scale = 2;

// create a surface for the whole screen to be drawn on
screen = surface_create(screen_w,screen_h);

// this will destroy the screen object if surfaces are not supported on the graphics card, reverting to the viewport method
if screen = -1{instance_destroy();}

인용 : screen_begin

// this draws the surface on the screen
surface_reset_target();
draw_clear(0);
draw_set_blend_mode_ext(bm_one, bm_zero);
draw_surface_stretched(screen,screen_x,screen_y,screen_w*screen_scale,screen_h*screen_scale);
draw_set_blend_mode(bm_normal);
screen_refresh();

인용 : screen_end

// this sets surface 'screen' as the drawing target for everything in the game, so all drawing will be done on this surface and not on the game screen
surface_set_target(screen);

3 단계 : 이제 스크립트가 생겼는데 어디로 가나 요? 객체를 만듭니다. obj_screen, objScreen, o_screen 등을 수행하고 다음을 수행하십시오.

  • A) screen_initscript를 Create 이벤트에 넣습니다.
  • B) Begin Step 이벤트에 screen_begin 스크립트를 배치하십시오.
  • C) 종료 단계 이벤트에 screen_end 스크립트를 배치하십시오.

그리고 그 물체를 게임의 맨 처음 방에 놓고 지속적으로 표시하고 복제물이 없는지 확인하십시오.

끝났고 이제는 선명하고 또렷한 스케일링 = D


픽셀 아트를 좋아하기 때문에 흐리게 처리하지 않고 크기를 조정하고 싶습니다. 그래서 이것이 내 질문에 대답하지 않습니다.
mpower

Game Maker 스튜디오는 잘못된 스케일링 알고리즘으로 스케일링을 수행하여 원치 않는 스케일링 블러를 만드는 경우가 많습니다. 방금 대답으로 편집 한 튜토리얼을 사용하여 스케일링으로 선명한 배경을 시도하십시오.
Tom 'Blue'Piddock

그래픽 프로그램에서 배경 질감의 사전 스케일링을 고려 했습니까?
Philipp

두 가지 방법이 있습니다. 먼저 스크립트 일부를 여기에 결합합니다. 두 번째는 이미지를 사용하기 전에 미리 스케일링하는 것입니다.
mpower

훌륭하고 도움이되었습니다.
Tom 'Blue'Piddock

-2

texture_set_interpolation(false)그대로 그리는 데 사용하십시오 .


이것은 맞을지 모르지만 더 자세히 설명 할 수 있습니까? 우리는 일반적으로 답변에서 조금 더 자세한 내용을 찾습니다.
Gnemlock
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.