20 คะแนน โดย GN⁺ 2025-04-19 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • เป็น เอนจินเกมที่เน้น 2D ซึ่งมีน้ำหนักเบาและประสิทธิภาพสูง และ รองรับความสามารถด้าน 3D ด้วย
  • ควบคุมตรรกะของเกมทั้งหมดด้วย สคริปต์ Lua และช่วยเพิ่มความเร็วในการพัฒนาด้วยการบิลด์ที่รวดเร็วและ hot reload
  • ให้ใช้งาน ฟรี โดยไม่มีค่าลิขสิทธิ์หรือค่า royalty
  • รองรับข้ามแพลตฟอร์มได้อย่างแข็งแกร่ง ทำให้พัฒนาเพียงครั้งเดียวแล้วนำไปเผยแพร่ได้บนหลากหลายแพลตฟอร์ม
  • มีเครื่องมือที่เป็นมิตรกับศิลปิน เช่น scene editor และ GUI tool ช่วยให้การสร้างงานภาพทำได้ง่ายยิ่งขึ้น
  • ขยายความสามารถได้ด้วย native extension เช่น C/C++ และการเชื่อมต่อกับ SDK หลากหลายแบบ เพื่อนำไปใช้จริงได้อย่างยืดหยุ่น

ฟีเจอร์หลักของ Defold

  • ไม่ต้องติดตั้ง: ใช้งานได้ทันทีโดยไม่ต้องติดตั้งหรือตั้งค่า
  • ตัวแก้ไขแบบภาพและโค้ด: สร้างสรรค์งานได้ผ่านทั้ง visual editor และ code editor
  • ดีบักเกอร์ Lua: มีเครื่องมือสำหรับดีบักสคริปต์ Lua
  • ตัวแก้ไขฉากและพาร์ติเคิล: มี editor หลากหลายสำหรับการพัฒนาเกม 2D และ 3D
  • ไม่มีค่าใช้จ่าย: ไม่มีค่าใช้จ่ายเริ่มต้น ค่าลิขสิทธิ์ ค่า royalty หรือค่า runtime

การรองรับข้ามแพลตฟอร์ม

  • หลากหลายแพลตฟอร์ม: สามารถเผยแพร่เกมไปยังแพลตฟอร์มหลักอย่าง PlayStation, Nintendo Switch, Android, iOS, macOS, Linux, Windows, Steam, HTML5, Facebook และอื่น ๆ
  • ไม่ต้องใช้เครื่องมือภายนอก: รองรับทุกแพลตฟอร์มด้วย code base เดียวโดยไม่ต้องใช้เครื่องมือภายนอก

เอนจินที่เน้น 2D แต่ทำ 3D ได้ด้วย

  • Defold ปรับแต่งมาเพื่อการพัฒนาเกม 2D แต่ก็ มีความสามารถ 3D ในตัว
  • ออกแบบแบบคอมโพเนนต์ เพื่อเสริมทั้งประสิทธิภาพและความเป็นโมดูลาร์
  • คอมโพเนนต์ 2D: สไปรต์ 2D, โมเดล Spine, tilemap editor
  • คอมโพเนนต์ 3D:
    • โหลดโมเดลและแอนิเมชัน 3D
    • สร้างและแก้ไข 3D mesh ระหว่าง runtime
    • วัสดุแบบกำหนดเองและ shader ที่อิงบน GLSL
  • เอฟเฟ็กต์พาร์ติเคิล
    • particle editor ที่พรีวิวแบบเรียลไทม์ได้
    • ปรับพารามิเตอร์ด้วย curve editor
    • รองรับตัวปล่อยพาร์ติเคิลแบบ 2D/3D

ความสามารถด้านแอนิเมชัน

  • มีระบบแอนิเมชันที่ทรงพลัง ใช้ได้กับสไปรต์ โมเดล GUI และอื่น ๆ
  • flipbook animation: ใช้กับสไปรต์, GUI node และพาร์ติเคิล
  • Spine และโมเดลแอนิเมชัน
    • รองรับการ blend
    • จัดการเหตุการณ์ keyframe
    • ใช้ inverse kinematics และควบคุมผ่านสคริปต์ได้
  • property animation
    • ทำแอนิเมชันกับพร็อพเพอร์ตีทั้งหมดของสไปรต์และ GUI ได้
    • ทำ property animation แบบกำหนดเองด้วยสคริปต์
    • ใช้ easing function แบบกำหนดเองหรือที่มีมาให้ล่วงหน้าได้

เครื่องมือที่เป็นมิตรกับศิลปิน

  • GUI editor
    • จัดเลเยอร์ด้วยข้อความ รูปภาพ pie node และอื่น ๆ
    • ฟังก์ชัน clipping และ mask
    • รองรับ auto layout และการสลับทิศทางหน้าจอ
    • texture แบบ 9-slice, bitmap/distance field font
    • นำองค์ประกอบ UI กลับมาใช้ซ้ำได้ผ่าน template
  • scene editor
    • visual editor สำหรับประกอบและจัดวางแอสเซ็ต
    • สร้าง game object แบบ prefab เป็นฐาน
    • จัดกลุ่มวัตถุด้วยโครงสร้างแบบลำดับชั้น

การจำลองฟิสิกส์

  • ผสานรวมเอนจินฟิสิกส์ 2D/3D ที่อิงบน Box2D และ Bullet อย่างสมบูรณ์
  • วัตถุแบบ static/dynamic/kinematic
  • การตรวจจับการชนแบบอิงรูปร่างและการตรวจจับ ray cast
  • การตรวจจับการชนของ tilemap อย่างแม่นยำ
  • รองรับ trigger, joint และ motor

ทุกอย่างทำได้ด้วยสคริปต์ Lua

  • สคริปต์ Lua
    • มี code editor, syntax highlighting, autocomplete และ LSP
    • มี debugger ในตัวและตรวจสอบตัวแปรได้
    • เขียนสคริปต์ควบคุม rendering pipeline ได้ทั้งหมด
    • ระบุ type ได้ด้วยภาษา Teal
  • สไตล์โค้ดแบบ reactive
    • รองรับ Lua แบบ reactive style โดยยังคงประสิทธิภาพสูง
    • โครงสร้างการสื่อสารแบบอะซิงโครนัสระหว่าง game object

การรองรับข้ามแพลตฟอร์ม

  • ข้ามแพลตฟอร์มอย่างแท้จริง
    • ใช้ code base เดียวและ deploy ได้ในคลิกเดียว
    • Steam, Facebook Instant และอื่น ๆ รองรับผ่าน extension
    • editor รองรับทั้ง macOS, Windows และ Linux
    • เผยแพร่แอปมือถือได้โดยไม่ต้องใช้ Xcode หรือ Android Studio
    • รองรับ WebGL, OpenGL, Vulkan, Metal
  • เบามาก
    • จัดการทรัพยากรอัตโนมัติโดยรวมเฉพาะแอสเซ็ตที่ใช้งาน
    • การแพ็ก sprite atlas
    • ตั้งค่าการบีบอัด texture แยกตามแพลตฟอร์มได้
    • รองรับ dynamic batching ใน rendering pipeline

ประสิทธิภาพและความเสถียร

  • ขนาดไบนารีเล็กกว่าเอนจินอื่นมาก
    • มีขนาดไบนารีประมาณ 10% ของ Unity 6 และ Godot 4.3 (ทั้งบน Android, iOS, HTML5, Windows)
  • ประสิทธิภาพยอดเยี่ยม
    • เรนเดอร์วัตถุได้นับหมื่นชิ้น (ตัวอย่าง: Bunnymark)
    • ทำงานได้ลื่นไหลแม้บนฮาร์ดแวร์รุ่นเก่าหรือเบราว์เซอร์มือถือ
  • รุ่น Stable
    • ออกรุ่นทุก 4 สัปดาห์ พร้อมช่วงเบต้า 2 สัปดาห์
    • แทบไม่มีการเปลี่ยนแปลงที่ทำให้ backward compatibility พัง
    • การที่เอนจินแครชนับว่าเกิดขึ้นได้น้อยมาก

เวิร์กโฟลว์ที่รวดเร็ว

  • hot reload
    • ใช้แอสเซ็ต/ตรรกะแบบเรียลไทม์
    • รองรับ hot reload และ debugging บนอุปกรณ์แบบไร้สาย
    • จัดการ reload แบบกำหนดเองได้ผ่าน Lua hook
  • custom workflow
    • ใช้ build pipeline แบบแยกอิสระได้
    • รองรับ headless build ที่ผสานเข้ากับ CI
    • แชร์ไลบรารีระหว่างโปรเจกต์ได้
    • มี Asset Portal ที่รวมแอสเซ็ตทั้งจากทางการและชุมชน
    • ข้อมูลทั้งหมดจัดการเป็นไฟล์ข้อความ ทำให้ merge ได้ง่าย
  • การบิลด์และรีแฟกเตอร์
    • ทุกบิลด์รวมถึง HTML5 เสร็จได้ภายในไม่กี่วินาที
    • รองรับการโหลดแบบ asynchronous และ synchronous
    • รีแฟกเตอร์แอสเซ็ตอัตโนมัติ
  • การปรับแต่งประสิทธิภาพและดีบัก
    • visual profiler แบบเรียลไทม์
    • frame sampling ระยะไกลผ่านเว็บ
    • จับภาพวิดีโอของเกมได้
    • มี native crash log API

เพิ่มความสามารถด้วย native extension

  • ขยายความสามารถของเอนจิน Defold ได้ด้วย C, C++, ObjectiveC, Java, JavaScript
  • สร้างเอนจินแบบปรับแต่งเฉพาะผู้ใช้โดยอัตโนมัติบนคลาวด์
  • ตัวอย่างการใช้งาน
    • การคำนวณประสิทธิภาพสูงและการประมวลผลข้อมูล
    • การเข้าถึงฮาร์ดแวร์ เช่น กล้องบนมือถือ
    • การเชื่อมต่อกับ SDK ภายนอก เช่น โฆษณาและ analytics

การใช้งานจริงและการผสานรวมกับ third-party

  • Defold เป็นเอนจินเกมสำหรับใช้งานจริงที่มีการผสานรวมกับ SDK ที่เชื่อถือได้
  • การแจ้งเตือนแบบ push: Google, Apple
  • การชำระเงินในแอป: Google, Apple, Amazon, Facebook
  • บริการเกม: Facebook SDK, Google Play, Firebase
  • โฆษณา: รองรับ mediation เช่น AdMob, IronSource
  • เครือข่าย: WebSockets, Nakama, PlayFab, Colyseus และอื่น ๆ
  • ดูส่วนขยายเพิ่มเติมได้ใน Asset Portal

ทำไมต้อง Defold?

  • Defold ไม่ได้อ้างว่าเหมาะที่สุดสำหรับทุกเกม
  • แต่สำหรับเกมบางประเภท มันอาจเป็นตัวเลือกที่ดีที่สุด
  • มีจุดแข็งเฉพาะทางในด้านประสิทธิภาพการพัฒนา ความเบา การรองรับข้ามแพลตฟอร์ม และการทำงานแบบวนซ้ำที่รวดเร็ว

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

 
viel214 2025-04-21

ไม่ใช่แค่ Lua ธรรมดา แต่เป็น LuaJIT เลยทำงานได้เร็วมาก

 
GN⁺ 2025-04-19
ความคิดเห็นจาก Hacker News
  • พวกเขาเลือกแนวทางด้านไลเซนส์ที่น่าสนใจ ชอบที่เรียกมันว่า source-available license แทนที่จะเป็นโอเพนซอร์ส

    • สามารถแก้ไขเอนจินแบบปิดซอร์สได้โดยไม่จำเป็นต้องเผยแพร่การเปลี่ยนแปลงนั้นออกมา (ต่างจาก GPL)
    • สามารถสร้างรายได้จากเกมที่ทำด้วยเอนจินนี้ได้อย่างอิสระ และให้หลักประกันว่าจะไม่มีการล่อให้ใช้แล้วค่อยเปลี่ยนเงื่อนไขทีหลัง
    • เหตุผลที่ไม่ใช้ Apache 2.0 คือไม่ต้องการให้ตัวเกมเอนจินเองถูกนำไปสร้างรายได้
    • ดูยุติธรรมและผ่านการไตร่ตรองมาอย่างรอบคอบ ขอชื่นชมทีมงาน
  • ขอชื่นชมมากที่เรียกมันว่า "source-available" และไม่ได้ใช้คำว่า "open source" แบบผิด ๆ อีกทั้งยังชี้ให้เห็นชัดเจนว่ามีข้อเพิ่มเติมจากไลเซนส์ฐาน Apache ด้วย

  • มีความชอบ Defold มาก มันมีความแตกต่างในวงการพัฒนาเกม เช่น ตัวแก้ไข GUI ที่ฝังมาในตัวเขียนด้วย Clojure

    • เท่าที่ทราบ มันเริ่มต้นจากสตูดิโอพัฒนาเกมในสวีเดน (น่าจะเป็น King)
    • เครื่องมือสำหรับ build/release ลงแพลตฟอร์มคอนโซลอาจมีค่าใช้จ่ายสำหรับนักพัฒนาเกม เพราะตัว SDK ของแพลตฟอร์มเองก็มีข้อจำกัดอยู่แล้ว
    • ดูเหมือนว่าองค์กร Defold จะพยายามอย่างจริงจังในการทำสิ่งที่ยุติธรรมต่อนักพัฒนาเกม ทั้งในเรื่องไลเซนส์และด้านอื่น ๆ
  • Defold มีมานานแล้ว ไม่รู้ว่าทำไมตอนนี้ถึงขึ้นหน้าหลัก แต่ยังไง Defold ก็ดี เพียงแต่ชุมชน เอกสาร ฯลฯ ยังเป็นรอง Godot

    • ตัวเลือกอื่นก็มี MonoGame (Stardew Valley สร้างด้วยตัวนี้) และเอนจินใหญ่ ๆ อย่าง Unity กับ Unreal
    • มันขึ้นอยู่มากว่าคุณอยากลงทุนเวลาเรียนรู้แค่ไหน ต้องการฟีเจอร์ชุดใด มี trade-off หรือแพลตฟอร์มอะไรที่ต้องคำนึงถึง และอยากใช้ภาษา/สไตล์การเขียนโปรแกรมแบบไหน
  • จำความรู้สึกตอนที่ Unity เพิ่งเปิดตัวครั้งแรกได้ ตอนนั้นรู้สึกว่านี่น่าจะไปได้ไกล

    • อันนี้ให้ความรู้สึกคล้ายกัน จากแนวทางการสื่อสารและภาษาที่ใช้ก็พอจะบอกได้ว่าทีมมีของดีอยู่ในมือ
    • การที่ตอนนี้รองรับการ export ข้ามแพลตฟอร์มได้ครอบคลุมมากเป็นเรื่องสำคัญ อุปสรรคใหญ่ข้อหนึ่งของ Godot คือการรองรับคอนโซล
    • ข้อบ่นอย่างเดียวคือรองรับแค่ Lua ถ้าเป็น C# ด้วยก็น่าจะน่าสนใจกว่านี้ แต่ก็ยังดีกว่าเอนจินบางตัวที่ต้อง recompile C++ ทั้งหมด
  • มีโพสต์ที่เกี่ยวข้องอีกอันกำลังถูกส่งเข้ามา ว่าด้วยเกมที่เขียนด้วย Lua 60k LOC โดยใช้เอนจินนี้

  • เพิ่งพบว่าไม่มีอยู่ใน Nixpkgs

  • อยากเห็นการเปรียบเทียบกับ Godot แบบเจาะลึกกว่านี้ในแง่ฟีเจอร์ อย่างน้อยในด้านความสามารถ 3D ดูเหมือนว่าฝั่งหลังจะพัฒนาไปไกลกว่ามาก

  • ติดตามเอนจินนี้เมื่อหลายปีก่อน มันเป็นเกมเอนจินที่ King สร้างขึ้น และปล่อยให้อิสระหลังจากที่บริษัทเลิกลงทุนกับมันเอง

  • เมื่อเทียบกับ Löve 2D ก็สงสัยว่าต่างกันอย่างไรนอกจากมี IDE แถมมาด้วย ดูเหมือน Defold จะรองรับแพลตฟอร์มได้มากกว่า แต่การแพ็กเกมลงคอนโซลต่าง ๆ อาจพ่วงการพึ่งพาส่วนประกอบปิดที่เป็นความลับสูงอยู่มาก