กฤษฏิ์ personal blogs

จะเขียนอะไรที่อยากเขียน

เอา Raylib Graphic มารันใน Website ได้แล้ว!!

zig wasm raylib webgl
15 กุมภาพันธ์ 2569 (16 วันที่ผ่านมา)

ถ้าพูดถึงการทำ GameDev ก็จะมีหลาย Tool ให้นึกถึง แต่ถ้าเป็นของที่ Low Level ลงมาในภาษา C ก็คงไม่พ้น Raylib

แต่การเขียนด้วยภาษา C มันเหนื่อยมาก แต่มีภาษาที่เป็นพลังให้ Bun และทำให้การเขียน low level ชัดเจนกว่าเดิมด้วยการ explicit memory management อย่างภาษา Zig

เลยได้ลองเอาภาษา Zig มาต่อ Raylib ที่เป็น C / OpenGL library ให้มันสามารถ render บน WebGL ผ่าน Emscripten SDK (emsdk)

ปัญหาหลักไม่ได้อยู่ที่ Raylib หรือ Zig โดยตรง แต่เป็นการจัดการ Emscripten SDK ที่มีหลายเวอร์ชัน การตั้งค่า environment ค่อนข้างซับซ้อน และการเขียน build.zig ให้ทำงานร่วมกับ emsdk ยังมีตัวอย่างและเอกสารค่อนข้างจำกัด โดยเฉพาะเมื่อใช้ Zig แทน C/C++

นอกจากนี้ยังมีความท้าทายในการสื่อสารระหว่าง WebAssembly (Zig) กับ JavaScript เช่น การส่ง string การจัดการ memory ที่แชร์กัน และการออกแบบ API ให้ใช้งานบน browser ได้สะดวก

สุดท้ายโปรเจกต์นี้จึงกลายเป็นตัวอย่างของ runtime ที่:

  • ใช้ Zig เป็นภาษาหลัก
  • ผูกกับ Raylib สำหรับ rendering
  • คอมไพล์ด้วย Emscripten ไปเป็น WebAssembly
  • สามารถ render ผ่าน WebGL บน browser ได้จริง
  • รองรับการสื่อสารข้อมูลระหว่าง Zig ↔ JavaScript

สามารถไปดูแนวทางการเขียนเพิ่มเติมได้ที่
github:krist7599555/zig-raylib-browser-runtime

หรือทดลองเล่นได้ที่เว็บไซต์
https://krist7599555.github.io/zig-raylib-browser-runtime

เอา Raylib Graphic มารันใน Website ได้แล้ว!!
15 กุมภาพันธ์ 2569
zig wasm raylib webgl


กลับหน้าแรก