Lập trình game với libGDX - Giới thiệu

Xin chào các bạn đã quay trở lại với blog, đợt này lười nên dừng hơi lâu :))
Hôm nay chúng ta sẽ bắt đầu tìm hiểu một phần mới về lập trình game.
Mấy bài trước chúng ta đã biết cách làm một game cơ bản nhưng chỉ mới sử dụng code java thuần, chưa sử dụng thư viện ngoài hay là engine/framework gì cả, do đó tất cả mọi việc sắp xếp và thiết kế code sẽ gặp nhiều khó khắn khi ta làm một số gaem phức tạp hơn.

Vậy bài hôm nay chúng ta sẽ tìm hiều những gì?


  • Khái niệm Game engine?
  • Giới thiếu về libGDX
Ok, bây giờ chúng ta sẽ cùng nhau tìm hiều tửng mục một.



I, Khái niệm Game engine:
Cái này thì mình sẽ trích luôn từ Wikipedia , chúng ta chỉ cần hiểu khái niệm này như sau:

Một game engine là một phần mềm được viết để thiết kế và phát triển video game, hiểu đơn giản nó là loại phần mềm trung gian kết nối tương tác của nhiều ứng dụng trong cùng 1 hệ thống với nhau. Có rất nhiều loại game engine dùng để thiết kế game cho các hệ máy như hệ consoles hay máy tính cá nhân(PC). Chức năng cốt lõi của game engine phần lớn nằm trong công cụ dựng hình (kết xuất đồ họa) cho các hình ảnh 2 chiều (2D) hay 3 chiều(3D), công cụ vật lý (hay công cụ tính toán và phát hiện va chạm), âm thanh, mã nguồn, hình ảnh động (animation), trí tuệ nhân tạo, phân luồng, tạo dòng dữ liệu xử lý, quản lý bộ nhớ, dựng ảnh đồ thị, và kết nối mạng. Quá trình phát triển game tiết kiệm được rất nhiều thời gian và kinh phí vào việc tái sử dụng và tái thích ứng một engine để tạo nhiều game khác nhau.

Lưu ý: các bạn đừng nên thần thánh hóa Game engine, nó không như một cái máy sinh tố, bạn bỏ hoa quả vào là có cốc sinh tố thơm ngon, ở đây, tất cả mọi thứ từ lên ý tưởng, thiết kế, viết code thì đều là ở bạn cả, game hay hay dở cũng là do bạn chứ không do Game engine, Game engine chỉ giúp bạn giảm thiểu phần nào công việc thôi :)

Game engine hiện nay có rất nhiều, mình không nói điêu đâu, bạn xem danh sách sau là biết liền:

List of game engines

Sau khi xem xong cái list này lúc đầu mình cũng thấy "choáng" vì nó nhiều quá không biết nên chọn cái nào =)).

Sau một hồi tìm hiểu và hỏi ý kiến của các bậc tiền bối thì mình đã chọn libGDX - một Game engine sử dụng ngôn ngữ lập trình java để code (quá tuyệt vời luôn vì series này mình đã dùng ngôn ngữ java rồi).
Nói sơ về Game engine vậy thôi, nói dài -> nói dai -> nói dại :v.


II, Tìm hiểu về libGDX:

Cái này trên mạng cũng khá là nhiều rồi, đây là trang chủ của nó:
libgdx.badlogicgames.com

Còn đây là wiki của libGDX trên github:
https://github.com/libgdx/libgdx/wiki

Các bạn có thể vào đấy đọc để tìm hiểu qua, ở đây mình sẽ nói một số lý do vì sao mình chọn libGDX:


  1. libGDX hỗ trợ phát triển game đa nền tảng, có nghĩa là code bạn viết ra một lần là có thể build ra được nhiều nền tảng khác nhau, dưới đây là một số nền tảng mà libGDX hỗ trợ:
    + Android
    + Windows
    + Linux
    + iOS
    + Web (HTML5 + WebGL)
    + MacOS X
    + BlackBerry
    + Java Applet
  2. libGDX là mã nguồn mở, có nghĩa là bạn có thể xem code và phát triển thêm theo ý mình (cái này chắc phải pro :D)
  3. libGDX sử dụng openGL ES 2.0 để kết xuất đồ họa, do đó tận dụng hiệu năng của máy rất tốt, máy bạn nào có card rời thì quá ngon :))
  4. Ngoài ra libGDX sử dụng ngôn ngữ java để code, đồng thời các lớp xử lý quan trọng được viết bằng ngôn ngữ C nên hiệu năng của game sẽ khá cao.
  5. libGDX hỗ trợ đọc/ghi JSON, XML
  6. Cuối cùng là nó sở hữu khá nhiều tools phục vụ cho việc design
    + 2D Particle Editor: tạo hiệu ứng trong game.
    + Texture Packer: đóng gói nhiều file hình ảnh lại thành một file duy nhất giúp dễ dàng quản lý (các bài sau sẽ hướng dẫn cụ thể).
    + Bitmap font generator: tạo font chữ theo ý thích (các bài sau sẽ hướng dẫn cụ thể).
Nói sơ sơ mà cũng ra nhiều ý phết =)), à ngoài làm game 2D, libGDX còn hỗ trợ làm game 3D, nhưng trong series chỉ nói về làm game 2D thôi :)).

Bài này viết sơ sơ thôi vì chả có gì hấp dẫn cả, bài hôm sau chúng ta sẽ cùng nhau tìm hiểu cách cài đặt môi trường cho libGDX, tạo một project mới và chạy thử.

Hẹn gặp lại các bạn trong các bài viết sau :D
SHARE

Xuho

  • Image
  • Image
  • Image
  • Image
  • Image

0 comments:

Post a Comment