Thứ Bảy, 18 tháng 10, 2014

So sánh HTML5 Game Engines

 Xu hướng ngày nay, nhiều người đang tìm kiếm một game engine phù hợp với nhu cầu để thực hiện các dự bạn cho mình. Bài viết này đánh giá một cách sơ bộ các game engine viết thuần bằng JavaScript và HTML5, để có một hướng đi mới khác với nhưng game engine nổi tiếng hiện nay.
Bảng đánh giá này chỉ dựa trên documents của các engine, hoặc đọc sơ qua source code, không phải là bản đánh giá chi tiết.
Bảng đánh giá này được viết khá cũ, ngày 30 tháng 11 năm 2014, nên có thể có nhiều thay đổi. Tôi post lại nhằm mục đích tham khảo.

Các tiêu chí quan trọng

Support các browsers

  1. Cần support hết tất cả các browser chạy trên di động, đặc biệt là: Safari Mobile, Android, IE9 on Windows Phone. 
    • Safari Mobile, Android Browser có engine tương tự Chrome trên PC 
  2. Nếu được thì nên hỗ trợ tất cả các browser trên cả PC nữa (vì sau này có thể triển khai trên PC) 
    • Chấp nhận việc các browser non-HTML5 không chạy được. 

Tốc độ render hình ảnh

  1. Số lượng hình ảnh/đối tượng có thể được render cùng một thời điểm. 
  2. Liệu một đối tượng chuyển động có mượt hay không? 
  3. Sẽ như thế nào nếu game có hàng trăm đối tượng chuyển động? 

Tốc độ xử lý CPU

  1. Engine này có tốn nhiều tài nguyên xử lý không? Cần lưu ý rằng dung lượng memory và CPU của các thiết bị di động rất nhỏ, rất có thể game làm browser bị đứng. 

Tương tác với user

  1. Tốc độ mà user tương tác với game phải nhanh. Có thể hiểu là khi user bấm vào thì nó phải chạy ngay lập tức. 
  2. Cần lưu ý là các một số sự kiện trên mobile có thể được bắt rất chậm. Ví dụ như sự kiện onclick. 

Tối ưu code

  1. JS/HTML/CSS nên được nén lại để tăng tốc độ tải và tốc độ xử lý 
  2. Việc tách biệt code hiển thị template và dữ liệu. 
  3. Tối ưu hóa dành cho mobile. 

Độ mượt và hỗ trợ resize hình ảnh

  1. Hình ảnh/text phải mượt (việc này thường được cho là do browser, tuy nhiên trong phần lớn trường hợp là cũng do engine sử dụng các phương pháp render không hiểu quả ở các vùng biên của hình) 
  2. Hỗ trợ việc resize các hình ảnh, để hình ảnh đẹp hơn. 

Hỗ trợ việc nhúng HTML/CSS bên ngoài, và thậm chí là JS bên ngoài

  1. Một số trường hợp chúng ta cần nhúng các đoạn HTML/CSS đặc biệt, và các engine cần phải hỗ trợ tốt trường hợp này. 
  2. Cho phép viết thêm các HTML/JS bên ngoài để có thể sử dụng lại code của các component nào đó. Một số trường hợp ta phải sử dụng HTML truyền thống để cho browser xử lý được mượt mà hơn. 

Quản lý code

  1. Cách thức tổ chức code để game có thể có performance tốt nhất. 
  2. Tương tác với server dễ dàng. 

Hiệu ứng vật lý

  1. Hỗ trợ sẵn các hiệu ứng va chạm, đổ vỡ, ánh sáng,... 
  2. Tuy nhiên tiêu chí này có thể không quan trọng trong các board game mini, vì ở đây rất ít các va chạm. 

Multi-platform

  1. Có thể compile ra các platform khác nhau (HTML, Android, iOS) 

Passed


Failed

4 nhận xét:

  1. Cũng nên nói đến Shumway (http://mozilla.github.io/shumway/ ), một thư viện (và phần mở rộng Firefox) để thay thế plugin Flash bằng canvas HTML5.

    Trả lờiXóa
  2. Cảm ơn bạn, hiện có rất nhiều công cụ hay mà thời gian mình không đủ để tìm và lọc hết...

    Theo bạn đánh giá thì Shumway có ưu điểm gì và nó nên nằm ở nhóm Passed hay Failed?

    Trả lờiXóa
  3. Đối với việc phát triển game thì nó tương đương với Flash vì nó chỉ phát hoạt hình Flash thôi (nó chuyển đổi liên tục từ Flash; không cần compile lại). Nó hỗ trợ nhiều trình duyệt hiện đại, ngay cả trên di động; trên Firefox thì nó sử dụng ít bộ nhớ hơn Flash. Tuy nhiên, nó chưa hỗ trợ các tính năng tương tác như hộp văn bản và máy chụp hình.

    Tóm lại thì tôi nghĩ nó fail nhưng sắp sửa pass không lâu.

    Trả lờiXóa
  4. À, OK bạn. Mình sẽ lưu ý thêm về nó.

    Trả lờiXóa

Biểu mẫu liên hệ

Tên

Email *

Thông báo *