สำรวจเมืองไซเบอรพังก์แบบ ASCII ด้วย Rust WebAssembly ขนาด 283KB ที่ทำงานบน WebGL

ที่มาภาพ: Tom's Hardware

Software-อ่าน 7 นาทีTom's Hardware

สำรวจเมืองไซเบอรพังก์แบบ ASCII ด้วย Rust WebAssembly ขนาด 283KB ที่ทำงานบน WebGL

⚡ สรุป 30 วิ

โปรเจกต์ ASCII City พัฒนาโดย Grow Now! Games ใช้ไฟล์ WebAssembly เพียง 283KB ทำงานบนเบราว์เซอร์ด้วย WebGL ผู้ใช้สามารถสำรวจเมืองไซเบอรพังก์…

Walk‑through ของเมืองไซเบอร์พังก์แบบ ASCII ที่ทำงานบน Rust WebAssembly ขนาดเพียง 283KB พร้อมเรนเดอร์ด้วย WebGL ถูกเปิดให้เล่นในเว็บบราวเซอร์เมื่อสัปดาห์นี้ ทำให้ผู้ใช้สามารถสำรวจมหานครที่สร้างจากตัวอักษรได้โดยไม่ต้องพึ่งเครื่องมือเกมแบบดั้งเดิม เช่น Unity หรือ Unreal ซึ่งเป็นการแสดงศักยภาพของเทคโนโลยีเว็บใหม่ ๆ ต่อการสร้างประสบการณ์ 3‑มิติในรูปแบบที่เบาและเข้าถึงง่าย

Overview

เมือง ASCII นี้ถูกพัฒนาโดยนักพัฒนาคนเดียวจาก Grow Now! Games และเผยแพร่เป็นรุ่นทดลองเล่นบนเว็บพร้อมวิดีโออัปเดต “ASCII City Update: Interiors, Elevation & Skyscrapers” บน YouTube ซึ่งต่อเนื่องจากคลิปแรกที่ได้รับการชมเกินหนึ่งล้านครั้งและคอมเมนต์กว่า 9,000 รายการ การเปิดตัวนี้แสดงให้เห็นว่าการผสาน WebAssembly กับ WebGL สามารถสร้างโลกเสมือนจริงได้แม้ใช้เพียงไฟล์ไบนารีขนาดเล็ก

Technical Details

ไฟล์หลักของโปรเจกต์คือ `ascii-city-engine_bg-DqjAhqbp.wasm` ขนาด 283KB ซึ่งเมื่อเริ่มทำงานจะจองหน่วยความจำเชิงเส้น (linear memory) 1,152KB และรายงานเวอร์ชันเอ็นจิ้นเป็น 0.1.0 หากเรียกใช้ภายนอกเบราว์เซอร์ เอ็กซ์พอร์ตที่สำคัญได้แก่ `initialise_native_game`, `step_native_game` และ `generate_native_local_map`

ส่วนของซอร์สโค้ดที่เหลืออยู่ในไบนารียังมีชื่อไฟล์ Rust ที่บ่งชี้หน้าที่ ได้แก่ `city.rs`, `world.rs`, `population.rs`, `interiors.rs` และ `rendering.rs` ซึ่งช่วยให้ผู้สนใจสามารถตรวจสอบกระบวนการสร้างโลกและเรนเดอร์ได้โดยตรง

  • ขนาดไฟล์: 283 KB
  • หน่วยความจำเริ่มต้น: 1,152 KB linear memory
  • เอ็กซ์พอร์ตหลัก: initialise_native_game, step_native_game, generate_native_local_map

Rendering Pipeline & Performance

การเรนเดอร์ใช้ WebGL โดยสร้างคอนเทกซ์และคอมไพล์เชดเดอร์คู่หนึ่ง (vertex + fragment) ส่วนของ fragment shader มีเพียงการ lookup texture2D หนึ่งครั้ง ตัวอักษรแต่ละตัวถูกวาดบนแคนวาสอาตลาสด้วย `fillText` แล้วเก็บไว้ใน atlas ที่มีขนาดเซลล์ 11 พิกเซลสูงและกว้างเท่ากับความก้าวหน้าของฟอนต์มอโนสเปซบวกสองพิกเซล

ขั้นตอนต่อไปอัปโหลดแอตลาสทั้งหมดเข้าสู่ GPU ด้วยคำสั่ง `texImage2D` เพียงครั้งเดียว จากนั้นแต่ละตัวอักษรจะถูกวาดเป็น textured quad ที่มีหกจุดยอด (vertices) ทุก ๆ คอลัมน์‑แถวที่มองเห็นได้ถูกรวมไว้ในบัฟเฟอร์เดียวและส่งออกด้วย `drawArrays` หนึ่งครั้งต่อเฟรม

สำหรับอุปกรณ์ที่ไม่รองรับ WebGL มี fallback เป็นการวาดภาพผ่าน Canvas 2D (`drawImage`) และอีกหนึ่งโหมดพิเศษ (`?direct`) ที่ใช้ `fillText` แต่ละเซลล์โดยตรง ซึ่งช่วยให้ผู้ใช้งานบนเบราว์เซอร์เก่าหรืออุปกรณ์จำกัดทรัพยากรยังคงเห็นผลลัพธ์ได้

บนเดสก์ท็อประบบจะแสดง 180 คอลัมน์ × 80 แถว (รวม 14,400 ช่อง) ด้วยฟอนต์ Consolas ขนาด 10 px ที่มีระยะห่าง 9 px ต่อบรรทัด ส่วนบนอุปกรณ์สัมผัสจะลดเหลือ 48 แถว และคอลัมน์ตั้งแต่ 96‑168 คอลัมน์ พร้อมโปรไฟล์ Rust 160 × 112 สำหรับการจัดสรรบัฟเฟอร์เวอร์เท็กซ์เริ่มต้นที่ 2.76 MB ซึ่งจะเพิ่มเป็นสองเท่าเมื่อเฟรมใด‑เฟรมหนึ่งใช้พื้นที่เกินขนาดนี้

Development Context & Comparisons

Grow Now! Games ย้ำว่าโปรเจกต์นี้ไม่มีการพึ่งพาเครื่องมือสร้างเกมแบบเดิม เช่น Unity หรือ Unreal ซึ่งมักต้องมีโมเดล 3‑D, เท็กซ์เจอร์และเชดเดอร์หลายชุด การใช้เพียง Rust, WebAssembly และ WebGL ทำให้ไฟล์เอ็นจิ้นมีขนาดเล็กมากและสามารถทำงานบนเบราว์เซอร์ทันทีโดยไม่ต้องติดตั้งปลั๊กอินใด ๆ

ในแง่ของเทคโนโลยีที่คล้ายคลึงกัน มีตัวอย่างอื่น ๆ ที่ใช้วิธีการ “raycasting” หรือการเรนเดอร์แบบข้อความเช่น เกม Backrooms บน Sega 32X (1994) ซึ่งเขียนด้วย C และ Assembly สำหรับ SH‑2, โครงการ Doom แบบหลายผู้เล่นที่ทำ raycasting ผ่าน SQL views เพื่อให้ได้ FPS ประมาณ 30 บนความละเอียด 128×64, รวมถึงเกม Thunder Lizard ที่เปลี่ยนกริด ASCII ให้เป็นภาพเคลื่อนไหวด้วยโมเดล AI ได้ประมาณ 10 FPS ทั้งหมดนี้แสดงให้เห็นว่าการใช้ข้อความเป็นหน่วยการเรนเดอร์ยังคงเป็นแนวคิดที่สร้างสรรค์และสามารถต่อยอดได้หลายรูปแบบ

Potential Impact

ความสำเร็จของเมือง ASCII นี้อาจกระตุ้นนักพัฒนาเว็บให้ทดลองใช้ WebAssembly เป็นตัวขับเคลื่อนหลักสำหรับเกมหรือแอปพลิเคชัน 3‑D ที่ต้องการประสิทธิภาพสูงและขนาดไฟล์เล็ก นอกจากนี้ การทำงานร่วมกับ WebGL ยังเปิดโอกาสให้เบราว์เซอร์ทุกเครื่องมือ (รวมถึงมือถือ) สามารถรองรับกราฟิกระดับกลางโดยไม่พึ่งพาไลบรารีภายนอก

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

Summary

Grow Now! Games เปิดให้เล่นเมืองไซเบอร์พังก์แบบ ASCII บนเว็บโดยใช้ Rust WebAssembly ขนาด 283 KB ร่วมกับ WebGL ทำให้สามารถเรนเดอร์ 180×80 ตัวอักษรในเวลาเรียลไทม์ได้อย่างมีประสิทธิภาพ การทดลองนี้ชี้ให้เห็นศักยภาพของเทคโนโลยีเว็บใหม่ในการสร้างสรรค์กราฟิกสาม‑มิติที่เบาและเข้าถึงง่าย.

แชร์บทความนี้:

ชอบบทความแบบนี้?

สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม

แหล่งข่าวต้นฉบับ

ชื่อต้นฉบับ
Walk through a 3D cyberpunk city built purely from ASCII characters — a text-based metropolis runs on a 283KB Rust WebAssembly engine feeding a WebGL renderer
ผู้เขียน
Luke James
แหล่ง
Tom's Hardware
วันที่เผยแพร่
22 สิงหาคม 2569 เวลา 21:37

Related

บทความที่เกี่ยวข้อง

เกมคลาสสิก Elder Scrolls III: Morrowind เล่นบนเบราว์เซอร์โดยไม่ต้องติดตั้งSoftware
30 กรกฎาคม 2569 เวลา 01:00

เกมคลาสสิก Elder Scrolls III: Morrowind เล่นบนเบราว์เซอร์โดยไม่ต้องติดตั้ง

โมดเวอร์ชันใหม่ของ Morrowind แปลงเป็น WebAssembly ทำให้ผู้เล่นสามารถเปิดเกมในเว็บได้ทันที ไม่ต้องดาวน์โหลดหรือติดตั้ง เพิ่มการเข้าถึงบน Windows, macOS, Linux…

Polygon6 นาที
COSMIC ปรับปรุงครั้งแรกหลังหกเดือน ตัด GNOME ออกเพื่อประสิทธิภาพและความปลอดภัยด้วย RustSoftware
28 มิถุนายน 2569 เวลา 00:30

COSMIC ปรับปรุงครั้งแรกหลังหกเดือน ตัด GNOME ออกเพื่อประสิทธิภาพและความปลอดภัยด้วย Rust

การอัปเดตใหญ่ของ COSMIC ในปลายปี 2025 ตัดส่วนประกอบของ GNOME ออกจาก Pop!_OS และย้ายการพัฒนาไปยัง Rust เพื่อให้ระบบเบาและปลอดภัยยิ่งขึ้น…

XDA Developers6 นาที
Bun เปิดตัวเวอร์ชัน 1.4 อย่างเป็นทางการ: เฟรมเวิร์ก JavaScript ที่เขียนด้วย Rust เต็มรูปแบบSoftware
-

Bun เปิดตัวเวอร์ชัน 1.4 อย่างเป็นทางการ: เฟรมเวิร์ก JavaScript ที่เขียนด้วย Rust เต็มรูปแบบ

Bun เวอร์ชัน 1.4 เปิดตัวอย่างเป็นทางการ โดยเป็นรุ่นแรกที่เขียนด้วยภาษา Rust อย่างสมบูรณ์ เพิ่มประสิทธิภาพสูงกว่า 2.5 เท่าบน Windows และเพิ่ม Built-in APIs…

Blognone9 นาที
Borderlands 4 Story Pack 2 เปิดเกาะใหม่พร้อมดราม่าแรงบันดาลใจจาก John Wick.Software
22 สิงหาคม 2569 เวลา 23:00

Borderlands 4 Story Pack 2 เปิดเกาะใหม่พร้อมดราม่าแรงบันดาลใจจาก John Wick.

เกม Borderlands 4 จะเปิดอัปเดต ‘Story Pack 2’ ใน 10 กันยายน เพิ่มเกาะใหม่และภารกิจที่ได้แรงบันดาลใจจาก Lord of the Flies, The Lost World และ John Wick.…

Polygon5 นาที
คัดลอกลิงก์แล้ว!