20 điểm bởi GN⁺ 2025-04-19 | 2 bình luận | Chia sẻ qua WhatsApp
  • engine game tập trung vào 2D nhẹ và hiệu năng cao, đồng thời cũng hỗ trợ tính năng 3D
  • Điều khiển toàn bộ logic game dựa trên script Lua, giúp tăng tốc độ phát triển nhờ build nhanh và hot reload
  • Được cung cấp miễn phí, không có phí bản quyền giấy phép hay royalty
  • Hỗ trợ đa nền tảng rất mạnh, cho phép phát hành lên nhiều nền tảng từ một lần phát triển
  • Cung cấp các công cụ thân thiện với artist như scene editor, GUI tool, giúp tăng tính dễ dàng trong quá trình tạo nội dung trực quan
  • Có thể mở rộng và áp dụng thực chiến nhờ native extension bằng C/C++ và tích hợp nhiều SDK khác nhau

Các tính năng chính của Defold

  • Không cần cài đặt: có thể dùng ngay mà không cần cài đặt hay cấu hình
  • Trình chỉnh sửa trực quan và mã: cho phép làm việc sáng tạo thông qua visual editor và code editor
  • Trình gỡ lỗi Lua: cung cấp công cụ để debug script Lua
  • Trình chỉnh sửa scene và particle: cung cấp nhiều editor cho phát triển game 2D và 3D
  • Không tốn chi phí: không có chi phí ban đầu, phí giấy phép, royalty hay chi phí runtime

Hỗ trợ đa nền tảng

  • Nhiều nền tảng: có thể phát hành game lên các nền tảng chính như PlayStation, Nintendo Switch, Android, iOS, macOS, Linux, Windows, Steam, HTML5, Facebook...
  • Không cần công cụ bên ngoài: hỗ trợ mọi nền tảng từ một code base duy nhất mà không cần công cụ bên ngoài

Kiến trúc engine thiên về 2D nhưng vẫn làm được 3D

  • Defold được tối ưu cho phát triển game 2D, nhưng cũng tích hợp sẵn tính năng 3D
  • Thiết kế dựa trên component giúp tăng hiệu năng và tính mô-đun
  • Component 2D: sprite 2D, model Spine, tilemap editor
  • Component 3D:
    • Tải model và animation 3D
    • Tạo và chỉnh sửa mesh 3D trong runtime
    • Material tùy chỉnh và shader dựa trên GLSL
  • Hiệu ứng particle
    • Particle editor có xem trước theo thời gian thực
    • Điều chỉnh tham số bằng curve editor
    • Hỗ trợ emitter particle 2D/3D

Tính năng animation

  • Hệ thống animation mạnh mẽ có thể dùng cho sprite, model, GUI...
  • Flipbook animation: dùng cho sprite, GUI node và particle
  • Spine và model animation
    • Hỗ trợ blending
    • Xử lý sự kiện keyframe
    • Có thể áp dụng inverse kinematics và điều khiển bằng script
  • Property animation
    • Có thể tạo animation cho mọi thuộc tính của sprite và GUI
    • Property animation tùy chỉnh dựa trên script
    • Dùng easing function tùy chỉnh hoặc dựng sẵn

Công cụ thân thiện với artist

  • GUI editor
    • Tổ chức layer với văn bản, hình ảnh, pie node...
    • Chức năng clipping và mask
    • Hỗ trợ auto layout và xoay hướng màn hình
    • Texture 9-slice, font bitmap/distance field
    • Có thể tái sử dụng thành phần UI bằng template
  • Scene editor
    • Visual editor để lắp ráp và bố trí tài sản
    • Cấu thành game object dựa trên prefab
    • Nhóm đối tượng theo cấu trúc phân cấp

Mô phỏng vật lý

  • Tích hợp đầy đủ physics engine 2D/3D dựa trên Box2D và Bullet
  • Đối tượng static/dynamic/kinematic
  • Phát hiện va chạm theo shape và ray cast
  • Phát hiện va chạm chính xác với tilemap
  • Hỗ trợ trigger, joint và motor

Mọi thứ đều có thể làm bằng script Lua

  • Script Lua
    • Bao gồm code editor, syntax highlighting, autocomplete và LSP
    • Có debugger tích hợp và có thể kiểm tra biến
    • Có thể script hóa hoàn toàn rendering pipeline
    • Có thể khai báo kiểu bằng ngôn ngữ Teal
  • Phong cách code reactive
    • Hỗ trợ Lua theo phong cách reactive mà vẫn giữ hiệu năng cao
    • Cấu trúc giao tiếp bất đồng bộ giữa các game object

Hỗ trợ đa nền tảng

  • Đa nền tảng thực sự
    • Triển khai one-click với cùng một code base
    • Steam, Facebook Instant... được hỗ trợ qua extension
    • Editor hỗ trợ đầy đủ macOS, Windows và Linux
    • Có thể phát hành mobile mà không cần Xcode hay Android Studio
    • Hỗ trợ WebGL, OpenGL, Vulkan, Metal
  • Rất nhẹ
    • Quản lý tài nguyên tự động, chỉ bao gồm tài sản thực sự được dùng
    • Đóng gói sprite atlas
    • Có thể cấu hình texture compression theo từng nền tảng
    • Xử lý batching động trong rendering pipeline

Hiệu năng và độ ổn định

  • Kích thước binary nhỏ hơn rất nhiều so với các engine khác
    • Chỉ khoảng 10% kích thước binary so với Unity 6 và Godot 4.3 (trên Android, iOS, HTML5, Windows)
  • Hiệu năng vượt trội
    • Có thể render hàng chục nghìn object (ví dụ: Bunnymark)
    • Hoạt động mượt mà ngay cả trên phần cứng cũ và trình duyệt di động
  • Phiên bản Stable
    • Chu kỳ phát hành 4 tuần, bao gồm 2 tuần beta
    • Gần như không có thay đổi phá vỡ tương thích ngược
    • Engine crash xảy ra rất hiếm

Quy trình làm việc nhanh

  • Hot reload
    • Áp dụng tài sản/logic theo thời gian thực
    • Hỗ trợ hot reload và debug không dây trên thiết bị
    • Có thể xử lý reload tùy chỉnh qua hook Lua
  • Workflow tùy chỉnh
    • Có thể dùng build pipeline độc lập
    • Hỗ trợ headless build tích hợp với CI
    • Có thể chia sẻ thư viện giữa các project
    • Vận hành Asset Portal chứa tài sản chính thức và từ cộng đồng
    • Mọi dữ liệu đều được quản lý dưới dạng file văn bản nên dễ merge
  • Build và refactor
    • Mọi bản build, bao gồm cả HTML5, đều hoàn tất trong vài giây
    • Hỗ trợ loading đồng bộ và bất đồng bộ
    • Tự động refactor tài sản
  • Tối ưu hóa và debug
    • Visual profiler theo thời gian thực
    • Frame sampling từ xa dựa trên web
    • Có thể quay capture video game
    • Cung cấp API log crash native

Mở rộng tính năng bằng native extension

  • Có thể mở rộng chức năng của Defold bằng C, C++, ObjectiveC, Java, JavaScript
  • Tự động tạo engine tùy biến trên cloud
  • Ví dụ ứng dụng
    • Tính toán hiệu năng cao và xử lý dữ liệu
    • Truy cập phần cứng như camera di động
    • Tích hợp với SDK bên ngoài như quảng cáo, phân tích...

Ứng dụng thực tế và tích hợp bên thứ ba

  • Defold là game engine dùng cho production, cung cấp tích hợp với các SDK đáng tin cậy
  • Push notification: Google, Apple
  • In-app purchase: Google, Apple, Amazon, Facebook
  • Dịch vụ game: Facebook SDK, Google Play, Firebase
  • Quảng cáo: hỗ trợ mediation như AdMob, IronSource...
  • Mạng: WebSockets, Nakama, PlayFab, Colyseus...
  • Có thể xem thêm nhiều extension trong Asset Portal

Vì sao là Defold?

  • Defold không khẳng định là lựa chọn tối ưu cho mọi game
  • Nhưng với một số game, đây có thể là lựa chọn tốt nhất
  • Sở hữu những thế mạnh chuyên biệt về năng suất phát triển, sự gọn nhẹ, đa nền tảng và vòng lặp thử nghiệm nhanh

2 bình luận

 
viel214 2025-04-21

Không chỉ là Lua mà là LuaJIT nên rất nhanh.

 
GN⁺ 2025-04-19
Ý kiến Hacker News
  • Họ đã chọn một giải pháp giấy phép thú vị. Tôi thích việc họ gọi nó là giấy phép source-available thay vì mã nguồn mở

    • Có thể thực hiện các thay đổi độc quyền đối với engine mà không cần công khai chúng (khác với GPL)
    • Có thể tự do kiếm tiền từ các trò chơi được tạo bằng engine này, đồng thời đưa ra bảo đảm rằng sẽ không có kiểu nhử mồi rồi đổi luật
    • Lý do không dùng Apache 2.0 là vì như vậy sẽ không thể kiếm tiền từ chính game engine
    • Có vẻ công bằng và được cân nhắc cẩn thận. Xin dành lời khen cho đội ngũ
  • Rất đáng khen khi họ gọi là "source-available" và không dùng sai khái niệm "open source". Việc họ nhấn mạnh những phần bổ sung vào giấy phép dựa trên Apache cũng rất tốt

  • Tôi có thiện cảm với Defold. Nó khá độc đáo trong lĩnh vực phát triển game. Ví dụ, trình chỉnh sửa GUI tích hợp được viết bằng Clojure

    • Theo tôi biết, nó bắt nguồn từ một studio phát triển game ở Thụy Điển (có thể là King)
    • Công cụ build/phát hành cho nền tảng console có thể phát sinh chi phí cho nhà phát triển game, vì chính SDK của nền tảng áp đặt các hạn chế
    • Có vẻ tổ chức Defold đang thật sự nỗ lực một cách nghiêm túc để đối xử công bằng với các nhà phát triển game về giấy phép và các vấn đề tương tự
  • Defold đã tồn tại từ lâu. Tôi không rõ vì sao giờ nó lại lên trang chính. Dù sao thì Defold vẫn tốt. Cộng đồng, tài liệu v.v. có phần kém hơn Godot

    • Các lựa chọn khác gồm MonoGame (Stardew Valley được viết bằng công cụ này) và các engine lớn như Unity, Unreal
    • Điều này phụ thuộc rất nhiều vào mức độ bạn muốn đầu tư để học, bộ tính năng bạn cần, những đánh đổi hoặc nền tảng cần cân nhắc, cũng như ngôn ngữ/phong cách lập trình bạn muốn dùng
  • Tôi còn nhớ cảm giác khi Unity mới xuất hiện. Khi đó có cảm giác đây sẽ là thứ làm nên chuyện

    • Ở đây tôi có cảm giác tương tự. Có thể nhận ra đội ngũ này đang nắm trong tay điều gì đó tốt đẹp qua cách họ giao tiếp và tinh thần trong ngôn từ
    • Việc hỗ trợ xuất bản đa nền tảng hiện tại rất toàn diện là một điểm lớn. Một trong những trở ngại lớn nhất của Godot từng là hỗ trợ console
    • Điểm phàn nàn duy nhất là nó chỉ hỗ trợ Lua. Nếu là C# thì có lẽ sẽ còn thú vị hơn. Nhưng ít ra nó không yêu cầu biên dịch lại toàn bộ C++ như một số engine khác
  • Có một bài đăng liên quan đang được thảo luận. Nó nói về một trò chơi viết bằng 60k LOC Lua sử dụng engine này

  • Tôi phát hiện nó không có trong Nixpkgs

  • Tôi muốn thấy một so sánh sâu hơn với Godot về mặt tính năng. Ít nhất ở khía cạnh 3D thì có vẻ Godot phát triển hơn nhiều

  • Tôi đã theo dõi engine này vài năm trước. Đây là game engine do King tạo ra, và họ đã phát hành tự do sau khi không còn muốn tự đầu tư vào nó nữa

  • So với Löve 2D, tôi tò mò ngoài việc đi kèm IDE thì nó khác như thế nào. Có vẻ Defold hỗ trợ nhiều nền tảng hơn, nhưng việc đóng gói game cho nhiều loại console khác nhau có thể kéo theo các phụ thuộc rất kín