1 คะแนน โดย GN⁺ 2024-11-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ฟอรัม TIGSource

    • TIGSource ได้เปิดเซิร์ฟเวอร์ Discord อย่างเป็นทางการ
    • ในฟอรัมมีหัวข้อและการสนทนาหลากหลาย และมีสมาชิกจำนวนมากเข้าร่วมอยู่
  • Return of the Obra Dinn

    • มีการพูดคุยเกี่ยวกับสไตล์กราฟิกของเกมและปัญหาเรื่อง dithering
    • มีความพยายามแก้ปัญหาการกะพริบด้วยการเรนเดอร์ที่ความละเอียดสูงแล้วค่อย downscale
    • มีการอภิปรายวิธีตรึงแพตเทิร์น dithering เพื่อเพิ่มความเสถียรให้กับการเคลื่อนไหว
  • กระบวนการ dithering

    • Obra Dinn เรนเดอร์เป็น 8-bit grayscale ก่อน แล้วจึงแปลงเป็น 1-bit
    • ใช้แพตเทิร์น dithering สองแบบเพื่อสร้างเอฟเฟกต์ภาพที่หลากหลาย
    • ในภาพเคลื่อนไหว แพตเทิร์น dithering อาจก่อให้เกิดปัญหาได้
  • การทำให้ dithering เสถียร

    • มีการศึกษาวิธีเพิ่มความเสถียรโดยตรึงแพตเทิร์น dithering ไว้กับ geometry
    • มีความพยายามลองวิธี mapping หลายแบบเพื่อหาผลลัพธ์ที่ดีที่สุด
  • บทสรุป

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

1 ความคิดเห็น

 
GN⁺ 2024-11-09
ความคิดเห็นบน Hacker News
  • แม้จะทำงานด้านโปรแกรมมิงกราฟิกมามากกว่า 10 ปี แต่ตอนเล่นเกมก็ไม่ได้สังเกตเห็นเลย เมื่อคิดถึง ภาษาภาพ โดยรวมของเกมแล้ว ผมว่าการใช้เวลา 100 ชั่วโมงนั้นคุ้มค่ามากจริง ๆ
    ระดับนี้น่าจะส่งเข้า SIGGRAPH ในหัวข้อ ความสอดคล้องเชิงเวลา ของการเรนเดอร์แบบไม่เน้นสมจริงได้เลย

    • ตอนมองไปรอบ ๆ ฉาก ความเสถียรของดิเทอริง นั้นเห็นได้ชัดจริง ๆ แต่ไม่เคยนึกเลยว่าต้องลงแรงมากขนาดนี้ พออ่านบทความนี้แล้ว คิดว่าต่อไปคงจะยิ่งทึ่งมากขึ้นอีก
  • เผื่อคนที่ยังไม่รู้ Return of the Obra Dinn และ Papers, Please ต่างก็เป็นเกมของ Lucas Pope และได้รับการยกย่องว่าเป็นคลาสสิกชั้นดีที่คว้ารางวัลมาหลายรายการ
    แม้ปกติจะไม่ใช่คนเล่นเกม ก็ยังคุ้มค่าที่จะลองดู ทั้งสองเกมไม่ใช่เกมแบบทั่วไป

    • Papers, Please เป็นผลงานชิ้นเอก ส่วน Obra Dinn ผมคงพลาดอะไรไปสักอย่าง เพราะหลังจากได้เรื่องราวมาน้อยเกินกว่าจะเอาไปเทียบกับเบาะแสอื่นได้ ก็ไม่มีเบาะแสเพิ่มอีกเลย
    • Papers, Please เป็นหนึ่งในเกมโปรดตลอดกาลของผม ถึงขั้นทำ แฟลชการ์ด เพื่อท่องจำข้อมูลสำคัญ และฝึกซ้ำ ๆ เพื่อเพิ่มทักษะการตรวจเอกสาร
      มีเกมไม่กี่เกมที่ทำให้ผมทุ่มขนาดนั้น Obra Dinn ผมยังไม่ได้ลองเพราะสไตล์ภาพไม่ดึงดูด แต่ถ้าชอบเกมสืบสวน Curse of the Golden Idol ก็น่าลองดูเหมือนกัน ในแง่ความสร้างสรรค์ถือว่าใกล้เคียงกับเกมเหล่านี้ และสนุกทีเดียว
    • บนเว็บไซต์ของเขามีโปรเจกต์เจ๋ง ๆ จำนวนมากที่ทำใน เกมแจม ไอเดียเหล่านั้นสนุกและสร้างสรรค์มาก และบางโปรเจกต์ก็กลายเป็นเกมเต็มรูปแบบ
    • ผมเล่นเกมยิงมุมมองบุคคลที่หนึ่งมาตั้งแต่ยุค Wolfenstein 3D แต่ Return of the Obra Dinn เป็นเกมเดียวที่ทำให้ผมเมาเกม
      ถึงอย่างนั้นก็ยังเล่นจนจบ
  • ดิเทอริง 1 บิต แบบเข้ม ๆ เป็นหัวข้อที่น่าสนใจมากจริง ๆ แม้ใน 2D ก็มีหลายวิธี แต่ละแบบมีข้อดี ข้อเสีย และจุดแลกเปลี่ยนต่างกัน
    น่าประหลาดใจที่สิ่งซึ่งเคยเป็นหัวใจของประสบการณ์คอมพิวเตอร์ยุค 80 กลับค่อนข้างยุ่งยากบนฮาร์ดแวร์สมัยใหม่ ในโปรเจกต์ของผม[0] ผมพบว่าแทบเป็นไปไม่ได้เลยที่จะ แมปแบบ 1:1 ระหว่างพิกเซลออฟสกรีนกับแคนวาสที่เบราว์เซอร์จัดให้
    [0] https://sheep.horse/2023/1/improved_web_component_for_pixel-...

    • ยังตลกอยู่เลยที่การ์ด nVidia รุ่นค่อนข้างใหม่ใช้เวลาหลายวินาทีในการสลับความละเอียด แต่ Atari อายุ 35 ปีสามารถเปลี่ยนความละเอียดได้หลายครั้งภายในการรีเฟรชหน้าจอครั้งเดียว
      เกมง่าย ๆ ที่เคยทำในอดีตใช้การแสดงผลสีความละเอียดต่ำสำหรับ 3/4 ของหน้าจอ ส่วนด้านล่างใช้ 4 สีพร้อมความละเอียดแนวนอน 2 เท่าเพื่อใส่ข้อความได้มากขึ้น ดังนั้นจึงสลับความละเอียด 120 ครั้งต่อวินาทีได้โดยที่ CPU แทบไม่ช้าลง
  • ดูเหมือนว่าแนวทางที่เสนอมาไม่มีวิธีไหนได้ผลดีนัก และปัญหานี้ดูซับซ้อนกว่าที่เห็นมาก
    สิ่งที่น่าจะมีโอกาสทำงานได้จริงคือการใช้แพตเทิร์นดิเทอร์แบบ “แฟร็กทัล” เพื่อให้การซูมเข้าออกนุ่มนวลและไม่ขึ้นกับสเกล, ประมวลผลใน พื้นที่เท็กเซล เพื่อให้ทั้งการเคลื่อนกล้องและการเคลื่อนวัตถุทำงานได้ถูกต้อง, หรือเรนเดอร์ด้วย bilinear filtering หรือ supersampling ของแพตเทิร์นดิเทอร์ก่อน แล้วค่อยใช้ compute shader ใน screen space ทำพาสกระจายข้อผิดพลาดบางรูปแบบ
    แต่ก็ยังไม่มั่นใจว่าในทางปฏิบัติจะได้ผลดีหรือไม่ ถ้ายังไม่พอ ทางเลือกหนึ่งที่เป็นไปได้คือทำแบบง่าย ๆ ใน screen space ก่อน แล้วแมปผลลัพธ์ย้อนกลับไปยังพื้นที่เท็กเซลแบบคงความละเอียดไว้ จากนั้นในเฟรมถัดไปใช้ข้อมูลในพื้นที่เท็กเซลเพื่อสร้างคำตอบใน screen space ที่เข้ากันได้ แล้วแมปกลับไปยังพื้นที่เท็กเซลอีกครั้ง เพื่อค่อย ๆ สะสมแพตเทิร์นแฟร็กทัลรายเท็กเซลขณะรันไทม์ วิธีนี้อาจดีที่สุด แต่ดูแพงมากทั้งด้านหน่วยความจำ ปริมาณการคำนวณ และความซับซ้อน

    • ณ สัปดาห์ที่แล้ว ผมทำให้ แนวทางแบบแฟร็กทัล ทำงานได้ค่อนข้างดีแล้ว
      https://x.com/dgant/status/1851840125065453894
      https://x.com/dgant/status/1851835968342446576?t=kCUSWCtJEc_...
      วิธีทำงานคือใช้ดิเทอริงใน world space, ใช้ดิเทอริง 2D บนพื้นผิวที่ทำ triplanar mapping, เลือกสเกลพิกัดตามความลึกเพื่อให้แพตเทิร์นดิเทอร์อยู่ในช่วง [1px, 2px) และระบายพื้นผิวที่อยู่ไกลพอด้วยพิกัดทรงกลม ตรงเกณฑ์ความลึกจะมีบางส่วนถูกระบายใหม่ แต่ในทางปฏิบัติไม่ได้รบกวนมากนัก
  • สำหรับคนที่สนใจ ผมลองขุดต่ออีกหน่อยแล้วเจอ devlog เก่า ๆ ที่เขาเคยโพสต์เกี่ยวกับหัวข้อนี้ [1] [2]
    โดยเฉพาะส่วนที่พูดถึงอัลกอริทึมอัปสเกลชื่อ Scale2X น่าสนใจและเจ๋งมาก [3]
    [1] https://forums.tigsource.com/index.php?topic=40832.260
    [2] https://forums.tigsource.com/index.php?topic=40832.msg121719...
    [3] https://www.scale2x.it

  • ชอบมากที่คนนี้แชร์ทุกอย่างลงฟอรัม
    จำได้ว่าเคยเห็นงานช่วงแรก ๆ ของ Papers, Please มันมีอะไรบางอย่างที่ยอดเยี่ยมในการแชร์กระบวนการทำงานและเปิดรับ ฟีดแบ็ก

    • คงต้องมี ผู้ชม อยู่บ้างระหว่างทำงาน ไม่อย่างนั้นจะรู้สึกเหมือนตะโกนใส่อากาศ
    • Tigsource เป็นขุมทรัพย์ของข้อมูลและเอกสารออกแบบ เกมดัง ๆ อย่าง Spelunky และ Dead Cells ก็ถือกำเนิดที่นั่นไม่น้อย
  • การอภิปรายในตอนนั้น: https://news.ycombinator.com/item?id=15766249

  • นี่เป็นหนึ่งในบทความเกี่ยวกับดิเทอริงที่ดีที่สุดเท่าที่เคยเห็นมา ผมเคยทำงานดิเทอริงขาวดำของ Return to Dark Castle
    อยากใช้ Atkinson dithering แต่เพราะค่าพิกเซลข้างเคียงไหลส่งต่อกัน ทำให้ยากต่อการนำไปทำในเชดเดอร์ และตอนนั้นก็เครียดกับเหนื่อยมากด้วย ผมน่าจะไม่ได้นึกถึงแนวคิดการตรึงแพตเทิร์นไว้กับออฟเซ็ตของฉาก ดังนั้นในด่านที่เลื่อนอย่างสุสานใต้ดินหรือเฮลิคอปเตอร์แพ็กน่าจะมีอาการวูบวาบ บางทีอาจจะทำแล้วก็ได้ แต่จำไม่ได้แล้ว อย่างไรก็ดี ยอดเยี่ยมมาก

  • ล่าสุดลองรับมาจาก GOG แล้วเล่นบน 5K Studio Display แต่ไม่สามารถได้ผลลัพธ์ที่พิกเซลงดงามเหล่านั้นไม่ถูกทำให้เบลอได้เลย เสียดายจริง ๆ
    ผมเข้าไปดูทุกอย่างในเมนูตั้งค่าแล้ว

    • ต้องหาวิธีแสดงผลโดยทำ letterbox หน้าจอ ด้วยความละเอียดที่เป็น สเกลจำนวนเต็ม ของความละเอียดเกม
  • เพิ่มเติมขำ ๆ ซาวด์แทร็กของเกมนี้อยู่ที่นี่
    https://www.youtube.com/watch?v=8qvdAWLcPyU