ฉันจะขยายขนาดพิกเซลภาพโดยไม่ทำให้พร่ามัวใน GM Studio ได้อย่างไร


9

ฉันกำลังสร้างเกมใน Game Maker Studio ที่ใช้ภาพพิกเซล เมื่อฉันเปิดเกมพื้นผิวที่ขยายขนาดทั้งหมดนั้นพร่ามัวจริงๆ (ไม่เกิดกับเด็กเล็ก)

ตัวอย่างเช่นภาพนี้

ดี :)

แสดงผลในเกมเช่นนี้:

เบลอ :(

อย่างไรก็ตามมีการปรับขนาดพิกเซลขนาดเล็กเข้าไปในพิกเซลขนาดใหญ่แทนพิกเซลเบลอ ?


อย่าใช้การบีบอัดแบบ lossy สำหรับพื้นผิวแทนที่จะใช้ bmp, gif หรือ png พวกเขาทั้งหมดสนับสนุนที่เก็บข้อมูลแบบไม่สูญเสีย
ratchet freak

เมื่อคุณมีงานศิลปะพิกเซลคุณมักจะต้องการหลีกเลี่ยงการปรับขนาดเพราะศิลปะพิกเซลเสมอทุกข์จากที่ เมื่อไม่สามารถหลีกเลี่ยงการปรับขนาดได้ก็ควรใช้การแก้ไขที่ใกล้เคียงที่สุดเพื่อรักษาภาพลักษณ์ที่กรอบ เมื่อคุณต้องการปรับขนาดให้ใช้กราฟิกแบบเวกเตอร์แทนกราฟิกแรสเตอร์ ฉันโชคไม่ดีที่คุณไม่สามารถช่วยได้เพราะฉันไม่คุ้นเคยกับ GMStudio
ฟิลิปป์

เพิ่มตัวอย่างแล้ว
mpower

ฉันไม่ทราบความเป็นไปได้ของผู้ผลิตเกม แต่คุณต้องการปิดการใช้งานตัวกรองสเกลทั้งหมดและเปิดใช้การปรับขนาดเพื่อนบ้าน
Appleshell

1
ถ้าฉันจำได้อย่างถูกต้องSpelunky ดั้งเดิม (สร้างใน Game Maker) มี DLL ที่เปิดใช้งานการปรับสเกลเชิงเส้น แหล่งที่มามีอยู่ที่ลิงค์นั้น มีลักษณะ
Anko

คำตอบ:


13

พบวิธีแก้ปัญหาจากทรัพยากรบางอย่าง ไปที่การตั้งค่าเกมทั่วโลกจากนั้นไปที่สปอยเลอร์แพลตฟอร์มใด ๆ (เช่น "Windows" หรือ "Android") เลือกสปอยเลอร์ที่มีชื่อว่า "กราฟิก" และสลับ "ปิด" ปรับสีระหว่างพิกเซล " มีความสุข :)


เทคนิคนี้ใช้งานได้แม้ว่าพิกเซลของภาพอาจมีการเปลี่ยนแปลงเนื่องจากการขยายขนาดด้วยปัจจัยที่ไม่ใช่จำนวนเต็ม (เช่น 2.5x)
liggiorgio

คุณหมายถึงพวกเขาไม่สนใจที่จะตั้งค่าเริ่มต้นหรือไม่!? ฉันเพิ่งตรวจสอบและมันเริ่มต้นวิธีอื่นในผู้สร้างเกม 8.0 นี่เป็นเพียงแค่ถั่ว .... คำตอบที่ดี btw
user64742

5

ไม่มีใครอยากจัดการกับการขยายสไปรท์ด้วยตนเองทุกครั้ง ไม่เพียง แต่เป็นพื้นที่ทำงานที่เลอะเทอะ แต่มันก็ไม่เป็นมืออาชีพมาก ฉันพบวิธีแก้ปัญหาเมื่อปิดการแก้ไขในการตั้งค่าเกมระดับโลกไม่ทำงาน

texture_set_interpolation(false);

:) ฉันหวังว่านี่จะช่วยคุณในความพยายามในอนาคตของคุณ


นี่เป็นทางออกที่ดีที่สุดหากกำหนดเป้าหมายหลายแพลตฟอร์มคุณไม่ต้องคลิกที่ "Interpolate colours ระหว่างพิกเซล" สำหรับทุก ๆ แพลตฟอร์ม! สิ่งที่ฉันกำลังมองหา
รถกระบะ Logan

1

สิ่งที่ฉันทำโดยทั่วไปคือการใช้ photoshop หรือ GIMP (สเกล / เพื่อนบ้านที่ใกล้ที่สุด)

แต่การที่จะทำในโปรแกรมแก้ไขสไปรท์ GM: S ฉันใช้คำสั่ง Stretch แทนการปรับสเกลและตั้งค่าให้เป็นคุณภาพที่ไม่ดี ที่จะทำให้รู้สึก BlockyScreenie จาก game im ที่ทำงานกับ atm sprite นั้นถูกขยายใน GM: S

ข้างต้นเป็นเกมที่ทำงานบน ATM ฉันทำอย่างนั้น!


แม้ว่ามันจะใช้งานได้สำหรับการปรับขนาดของความละเอียดบางอย่าง แต่มันก็ไม่เหมาะสำหรับพวกเขาทั้งหมด แต่ GM ก็มีนิสัยชอบบีบอัดพื้นผิวตามค่าเริ่มต้น สิ่งนี้จะขยายความแตกต่างของความละเอียดที่แตกต่างกันเมื่อใช้ฟังก์ชันยืดซึ่งจะทำให้เบลอที่เราพยายามหลีกเลี่ยง อย่างไรก็ตาม +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 ในเหตุการณ์สร้าง
  • B) วางสคริปต์ screen_begin ในเหตุการณ์ Begin Step
  • C) วางสคริปต์ screen_end ในเหตุการณ์ End Step

และวางวัตถุนั้นไว้ในห้องแรกและที่สำคัญที่สุดของเกมของคุณทำเครื่องหมายถาวรและตรวจสอบให้แน่ใจว่าไม่มีสิ่งที่ซ้ำกัน

คุณทำเสร็จแล้วและตอนนี้ก็มีการปรับสเกลที่ดี = D


ฉันต้องการย่อขนาดโดยไม่เบลอเพราะฉันรักงานศิลปะพิกเซลดังนั้นนี่ไม่ตอบคำถามของฉันมันเป็นไปได้หรือไม่
mpower

ไม่น่าเป็นไปได้ที่ Game Maker studio จะปรับมาตราส่วนด้วยอัลกอริธึมการปรับขึ้นที่ไม่ดีซึ่งมักทำให้การเบลอสเกลที่ไม่ต้องการ ใช้การกวดวิชาที่ฉันเพิ่งแก้ไขในคำตอบของฉันเพื่อลองพื้นหลังที่คมชัดด้วยการปรับขนาด
Tom 'Blue' Piddock

คุณพิจารณาปรับพื้นผิวพื้นหลังของคุณล่วงหน้าในโปรแกรมกราฟิกหรือไม่
ฟิลิปป์

สองวิธีคือสิ่งที่ดีก่อนอื่นการรวมสคริปต์ไว้ที่นี่ครั้งที่สองคือการปรับขนาดภาพล่วงหน้าก่อนใช้งาน
mpower

ยอดเยี่ยมดีใจที่มันช่วย
Tom 'Blue' Piddock

-2

ใช้texture_set_interpolation(false)เพื่อทำให้วาดตามที่เป็นอยู่


สิ่งนี้อาจถูกต้อง แต่คุณสามารถเข้าไปดูรายละเอียดเพิ่มเติมได้ไหม? ปกติแล้วเราจะหารายละเอียดเพิ่มเติมเล็กน้อยในคำตอบของเรา
Gnemlock
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.