รีวิว TIS-100: เกมไขปริศนาด้วยการเขียนภาษา Assembly!

by neizod
31 December 2015 - 03:51

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

รู้จักกับ TIS-100

รูปที่ 1: สถาปัตยกรรมภายในของเครื่อง TIS-100

TIS-100 นอกจากจะเป็นชื่อของเกมเกมนี้แล้ว มันยังเป็นชื่อคอมพิวเตอร์ลึกลับที่เราได้รับมาซ่อมแซมด้วย โดยชื่อเต็มๆ ของมันได้แก่ Tessellated Intellegent System ซึ่งอาจแปลออกมาสวยๆ ได้ว่า ระบบอัจฉริยะแบบปูระนาบต่อเนื่อง (tessellation คือการปูพื้นระนาบด้วยรูปทรงเดียวกันโดยไม่เว้นให้เกิดช่องว่าง) จากชื่อที่แนะว่ามีการใช้ของประเภทเดียวกันมาเรียงต่อกันจำนวนมาก คงเดาได้ไม่ยากว่าการประมวลผลของคอมพิวเตอร์เครื่องนี้ทำงานแบบขนานนั่นเอง โดยมีจำนวนหน่วยประมวลผลอยู่ที่ 12 หน่วย วางเรียงกันเป็นรูปสี่เหลี่ยมผืนผ้าด้วยอัตราส่วน 3 ต่อ 4 ดังจะเห็นได้จากรูปที่ 1

แต่ละหน่วยประมวลผลสามารถบรรจุคำสั่งภาษา Assembly เข้าไปได้ ซึ่งแม้ว่ารุ่นของภาษา Assembly สำหรับเครื่อง TIS-100 จะรองรับได้เพียงแค่คำสั่งพื้นฐานเท่านั้น (เช่น การคำนวณทางคณิตศาสตร์ที่ทำได้เพียงการบวกและลบ ไม่มีการคูณหรือหาร) แต่ด้วยการทำงานแบบขนานกันระหว่างหน่วยประมวลผลจำนวนมาก ก็ทำให้เชื่อได้ว่าหากออกแบบอัลกอริทึมดีพอ คอมพิวเตอร์เครื่องนี้ก็น่าจะมีความสามารถเพียงพอสำหรับประมวลผลข้อมูลยากๆ จำนวนมากได้อย่างรวดเร็ว

รูปที่ 2: เอกสารอ้างอิงบางหน้า

แน่นอนว่าการเขียนโปรแกรมไม่ใช่เรื่องง่าย แม้แต่โปรแกรมเมอร์ชั้นเซียนก็ยังต้องคอยเปิดคู่มืออยู่บ่อยๆ TIS-100 ก็มาพร้อมกับเอกสารอ้างอิงที่บอกคร่าวๆ ว่าคำสั่งไหนใช้งานอย่างไร เอกสารส่วนหนึ่งสามารถดูได้จากรูปที่ 2

แต่เดิมนั้นคาดว่าเครื่อง TIS-100 สามารถทำงานได้อย่างถูกต้องตามปรกติ จนกระทั่งเกิดความเสียหายขึ้นในหน่วยประมวลผลบางส่วน (สังเกตได้จากหน่วยประมวลผลสีแดงในรูปที่ 1) ทำให้เราต้องเข้าไปเขียนโปรแกรมซ่อมแซมมันให้กลับมาใช้งานได้ดังเดิม โดยแต่ละการซ่อมแซมจะมีคำอธิบายการทำงานที่คาดหวังกำกับไว้ พร้อมทั้งข้อมูลทดสอบเพื่อให้แน่ใจว่า อัลกอริทึมใหม่ที่เขียนเข้าไปนั้นจะสามารถทำงานได้อย่างถูกต้อง

ความท้าทายของข้อมูลทดสอบนั้น ไม่ได้มีเพียงแค่การประมวลผลทางตัวเลขอย่างเดียว แต่ยังขยายไปถึงการประมวลผลภาพอีกด้วย

รูป 3: ตารางคะแนนผู้นำสำหรับแบบทดสอบหนึ่งๆ

แต่ความท้ายทายที่แท้จริงคงหนีไม่พ้นตารางคะแนนในรูปที่ 3 ซึ่งมันจะแสดงขึ้นหลังจากแก้โปรแกรมพร้อมทำแบบทดสอบสำเร็จ โดยมันจะบอกถึงคุณภาพและประสิทธิภาพของอัลกอริทึมที่เพิ่งเขียนไป เทียบเป็นฮิสโตแกรมกับข้อมูลจากผู้เล่นทั่วทุกมุมโลก หรือจะแข่งกับเพื่อนบน Steam แบบเฉือนชนะกันเพียง 1 รอบการประมวลผลก็ย่อมได้

เล่นต่อหลังเกมจบ

สำหรับผู้เล่นที่หลงใหลในเสน่ห์ของภาษา Assembly และการประมวลผลแบบขนานจนไม่อยากจบเกมแม้จะเล่นเกมจนจบ TIS-100 ก็มีเครื่องมือสำหรับสร้างด่านขึ้นมาเล่นและแจกจ่ายได้ โดยใช้ภาษา Lua สำหรับเขียนสคริปต์ของด่านนั้นๆ ดังตัวอย่างในรูปที่ 4

รูปที่ 4: เพิ่มด่านได้เพียงแค่เขียนสคริปต์ภาษา Lua

ชุมชนนักเล่นเกม

เราน่าจะพูดได้ว่า ไม่มีเรื่องใดในโลกนี้ที่ไม่มี subreddit เป็นของตัวเอง สำหรับเกม TIS-100 ก็เช่นกัน โดยชุมชนดังกล่าวอยู่ที่ /r/tis-100 ซึ่งเป็นทั้งสถานที่พูดคุยแลกเปลี่ยนเทคนิคการเขียนโปรแกรม, อวดความสวยงามแปลกใหม่ของอัลกอริทึม, และหอเกียรติยศสำหรับจดบันทึกสถิติที่ดีที่สุดเอาไว้

แต่เพียงการอวดอัลกอริทึมด้วยภาพถ่ายหน้าจอ คงไม่ทำให้เพื่อนร่วมเกมตื่นตาตื่นใจได้มากเท่ากับการได้นำโค้ดโปรแกรมนั้นไปทดลองเล่นด้วยตัวเอง ในส่วนนี้ก็มี tis100pad.com ซึ่งเป็นเว็บที่แฟนๆ สร้างขึ้นมาสำหรับแลกเปลี่ยนโค้ดในเกมโดยเฉพาะเลยทีเดียว

สรุป

TIS-100 น่าจะไม่ใช่เกมที่จะทุกคนจะชื่นชอบ แม้แต่ในหมู่โปรแกรมเมอร์เองก็อาจจะขยาดกับเกมนี้ (ทำงานเขียนโค้ดมาทั้งวัน กลับบ้านคงหมดอารมณ์เขียนโค้ดต่อแล้ว?) แต่ถ้าคุณชอบเกมแก้ปริศนา หรือกำลังศึกษาภาษา Assembly หรือสนใจการประมวลผลแบบคู่ขนาน ผมว่าเกมนี้ออกแบบมาได้ดีมากๆ เลยทีเดียวครับ

ข้อดี

  • ได้เขียนภาษา Assembly ทำงานแบบขนาน
  • ท้าทายให้ปรับปรุงอัลกอริทึมอยู่เสมอ

ข้อด้อย

  • ยากมาก เล่นแล้วเหนื่อย
Blognone Jobs Premium