ข่าว (News)

Aetheria คือโปรเจกต์เกม MMORPG แบบ 3D ที่รันบนเบราว์เซอร์ได้ 100% โดยไม่ต้องโหลด Asset ภายนอก พัฒนาด้วย TypeScript ทั้งหมด เหมาะสำหรับนักพัฒนาที่ต้องการศึกษาการสร้างเกม Multiplayer แบบ Real-time ที่มีระบบครบวงจร ทั้งระบบ Server-side authoritative และการเรนเดอร์กราฟิกด้วย Three.js

หากคุณกำลังมองหาตัวอย่างการสร้างเกมบนเว็บที่ใช้เทคโนโลยีสมัยใหม่แบบ Full-stack นี่คือโปรเจกต์ที่น่าสนใจมากสำหรับการศึกษาโครงสร้างการจัดการ State และการสื่อสารข้อมูลผ่าน Network

สารบัญ

ภาพรวมโปรเจกต์

Aetheria เป็นเกม MMORPG สไตล์อนิเมะที่สร้างขึ้นโดยใช้แนวคิด Procedural Generation ทั้งหมด ตั้งแต่โมเดล 3D, เสียง, ไปจนถึงแอนิเมชัน ไม่มีการโหลดไฟล์ Asset ภายนอก ทำให้ตัวเกมมีขนาดเล็กและโหลดได้รวดเร็วผ่านเบราว์เซอร์

โปรเจกต์นี้ถูกสร้างขึ้นโดยเน้นการทำงานแบบ Solo Development โดยใช้ TypeScript เป็นภาษาหลักในการเขียนทั้งฝั่ง Client และ Server ทำให้การจัดการ Type และ Data Structure ทำได้ง่ายและปลอดภัยยิ่งขึ้น

โปรเจกต์นี้เหมาะกับใคร

โปรเจกต์นี้ไม่ได้มีไว้สำหรับผู้เล่นทั่วไปเท่านั้น แต่เป็นแหล่งเรียนรู้ชั้นดีสำหรับ:

  • Game Developers: ผู้ที่สนใจการสร้างเกมบนเว็บโดยใช้ Three.js และต้องการเรียนรู้การทำระบบ Multiplayer
  • Web Developers: ที่ต้องการศึกษาการใช้ React 19 ร่วมกับ Vite และการจัดการ State ด้วย Zustand
  • Backend Engineers: ที่สนใจการทำ Real-time Server ด้วย Colyseus และการจัดการฐานข้อมูลด้วย Prisma/SQLite
  • Open Source Contributors: ผู้ที่ต้องการศึกษา Codebase ของโปรเจกต์เกมที่เขียนด้วย TypeScript ทั้งระบบ

จุดเด่นทางเทคนิค

Aetheria มีฟีเจอร์ที่น่าสนใจมากมายที่ถูกออกแบบมาให้ทำงานประสานกันอย่างลงตัว:

ฟีเจอร์ รายละเอียด
World Open world 200×200 พร้อม 9 Biomes และระบบกลางวัน/กลางคืน
Combat ระบบ Server authoritative tick ที่ 20 Hz พร้อมสกิลและสถานะผิดปกติ
Social ระบบแชท, ปาร์ตี้, จดหมาย, และการเยี่ยมบ้านผู้เล่นอื่น
Economy ระบบ Crafting, ตลาดซื้อขาย, และ Gacha box
Platform รองรับทั้ง Desktop และ Mobile (PWA) พร้อมระบบควบคุมแบบสัมผัส

สถาปัตยกรรมและ Tech Stack

โปรเจกต์นี้ใช้โครงสร้างแบบ Monorepo โดยแบ่งส่วนการทำงานอย่างชัดเจน:

  • Language: TypeScript ทั้งฝั่ง Client และ Server
  • Server: Node.js, Colyseus 0.16 (Real-time), Express, Prisma, SQLite
  • Client: Vite, React 19, Three.js (@react-three/fiber), Zustand
  • Styling: Tailwind CSS
  • Audio: Web Audio API (Procedural)

การที่ Server ทำหน้าที่เป็น Authoritative หมายความว่าทุกการเคลื่อนไหวและการกระทำของผู้เล่นจะถูกตรวจสอบโดย Server เพื่อป้องกันการโกง และ Client จะทำหน้าที่เพียงแค่ Interpolate ตำแหน่งและเรนเดอร์ภาพเท่านั้น

วิธีเริ่มต้น

สำหรับการเริ่มต้นพัฒนาหรือทดสอบโปรเจกต์ในเครื่อง คุณต้องเตรียม Environment ดังนี้:

  1. ติดตั้ง Node.js (แนะนำ v20+) และ pnpm (v10+)
  2. Clone repository จาก GitHub: mositron/Aetheria
  3. ติดตั้ง Dependencies: pnpm install
  4. รันโปรเจกต์: pnpm dev
  5. เปิดเบราว์เซอร์ไปที่ http://localhost:5173 เพื่อเริ่มเล่น

หมายเหตุ: ตรวจสอบให้แน่ใจว่า Server รันอยู่ที่พอร์ต 2567 หากพอร์ตถูกใช้งาน ให้ปรับเปลี่ยนค่า PORT ในไฟล์ .env ของ packages/server

ข้อดีและข้อจำกัด

เพื่อให้เห็นภาพรวมของการนำไปใช้งานจริง นี่คือการเปรียบเทียบเบื้องต้น:

ข้อดี ข้อจำกัด
ไม่ต้องโหลด Asset ภายนอก (เร็วมาก) เป็นโปรเจกต์เดี่ยว (Solo project) อาจมีบั๊กแฝง
ใช้ TypeScript ทั้งระบบ (Type Safety) ต้องการความเข้าใจเรื่อง Colyseus และ Three.js
รองรับ Mobile/PWA การขยายตัว (Scalability) ต้องทดสอบเพิ่มเติม
สถาปัตยกรรมชัดเจน เอกสารอาจยังไม่ครอบคลุมทุกเคสการใช้งาน

FAQ

เกมนี้ต้องติดตั้งโปรแกรมอะไรเพิ่มไหม?

ไม่จำเป็น เกมทำงานบนเบราว์เซอร์สมัยใหม่ (Chrome, Edge, Firefox, Safari) ได้ทันที

สามารถเล่นบนมือถือได้หรือไม่?

ได้ Aetheria ออกแบบมาแบบ Mobile-first มีระบบ Virtual joystick และ UI ที่ปรับแต่งให้เหมาะกับการสัมผัส

ทำไมถึงไม่มีไฟล์เสียงหรือโมเดล 3D ในโฟลเดอร์?

เพราะโปรเจกต์นี้ใช้เทคนิค Procedural Generation ทั้งหมด ทุกอย่างถูกสร้างขึ้นด้วย Code ในขณะรันเกม ไม่ได้โหลดไฟล์ .glb หรือ .mp3 มาจากภายนอก

สรุป

Aetheria เป็นโปรเจกต์ที่น่าประทับใจสำหรับนักพัฒนาที่ต้องการเห็นการประยุกต์ใช้ TypeScript ในการสร้างเกม MMORPG บนเว็บ การเลือกใช้ Tech Stack ที่ทันสมัยและการออกแบบระบบแบบ Procedural ทำให้โปรเจกต์นี้มีความโดดเด่นและเป็นกรณีศึกษาที่ดีเยี่ยม

หากคุณสนใจที่จะศึกษาโค้ดหรือมีส่วนร่วมในการพัฒนา สามารถเข้าไปดูรายละเอียดเพิ่มเติมและ Source code ได้ที่ GitHub: mositron/Aetheria