Thứ Bảy , Tháng Năm 27 2017
Trang chủ / Chuyên đề lập trình / Lập trình Game / Nền tảng Lập trình game – PHẦN 1:Hệ thống hạt (Particle System)

Nền tảng Lập trình game – PHẦN 1:Hệ thống hạt (Particle System)

Xin chào các bạn,

Lập trình game đang là một nghề rất hot hiện nay. Để trở thành một lập trình game giỏi, bên cạnh chúng ta biết và hiểu rõ, bắt tay vào làm các game từ đơn giản đến phức tạp, chúng ta cần phải có kiến thức nền tảng về lập trình game.

Trong chuỗi những bài viết liên quan đến Lập trình Game, tôi sẽ trình bày cho các bạn những nền tảng, những kiến thức nền về Lập trình Game. Theo tôi, những kiến thức cơ bản này sẽ giúp các bạn hiểu rõ, hiểu sâu về bản chất cốt lõi trong lập trình game. Khi nắm được những bản chất cốt lõi này, chúng ta sẽ dễ dàng nắm bắt tiếp thu bất kì Game Engine nào.

Công nghệ luôn phát triển, ngôn ngữ có thể thay đổi, hiện nay là Lập trình game với Unity, Lập trình game với Unreal, Lập trình Game với Cocos2d,.., sau này còn có thể có nhiều game engine nữa ra đời để phục vụ cho việc Lập trình Game. Tuy nhiên, kiến thức nền tảng về game, lý thuyết cơ bản về lập trình game là luôn luôn không đổi. Do vậy, thông qua Diễn đàn này tôi cố gắng trình bày cho tất cả các bạn những kiến thức mà tôi có được về nền tảng Lập trình Game.

Phần 1: Kiến thức nền tảng về Hệ thống Hạt – Particles System

  • Định nghĩa và Giới thiệu một số hình ảnh về Hệ thống Hạt (particles System)
  • Giới thiệu 2 Hệ thống hạt phổ biến.
  • Các thuộc tính cơ bản của hệ thống hạt

Định nghĩa: Hệ thống Hạt

Hiện nay hệ thống hạt đã trở thành không thể thiếu trong các ứng dụng Game. Hệ thống hạt có công dụng rất to lớn trong việc thiết kế các hiệu ứng cho bối cảnh. Hệ thống hạt trong Game thường được dùng để tạo các hiệu ứng như khói lửa, cháy nổ thời tiết và các hiệu ứng phức tạp khác như sấm sét, năng lượng, ánh sáng…

Hệ thống Hạt là một kỹ thuật trong lập trình game và trong đồ họa máy tính.  Hệ thống hạt là một tập hợp các hạt (particles) có các thuộc tính và hành động hoàn toàn độc lập với nhau. Nguồn phát ra các hạt được gọi là nguồn phát (emitter), nguồn phát có chức năng cung cấp cho các hạt các thuộc tính khởi tạo ban đầu. Sau khi được khởi tạo mỗi hạt sẽ tự mình hành động độc lập theo các thuộc tính của mình cho đến khi chết đi.

Mỗi hạt trong hệ thống khi dựng hình sẽ được biễu diễn bằng 1 đa giác (thường là tứ giác). Đặc điểm của đa giác này là luôn hướng về phía camera cho dù là camera ở vị trí hay hướng nào đi chăng nữa.

Một số hình ảnh về Hệ thống hạt:

Hệ thống Hạt - Hiệu ứng lan tỏa
Hệ thống Hạt – Hiệu ứng lan tỏa
Hệ thống hạt - Hiệu ứng lửa
Hệ thống hạt – Hiệu ứng lửa

 

Hệ thống hạt - Hiệu ứng nổ
Hệ thống hạt – Hiệu ứng nổ
Hệ thống hạt - Hiệu ứng nổ
Hệ thống hạt – Hiệu ứng nổ

Giới thiệu 2 hệ thống hạt phổ biến

Căn cứ vào mức độ phụ thuộc của mỗi hạt vào camera (khi dựng hình), hệ thống hạt trong Game chia ra làm 2 loại: hoàn toàn hướng về phía camera (smoke particle system), hướng về camera nhưng bị ràng buộc trên phương của vận tốc (spark particle system).

  • Smoke particle system
he thong hat - Smoke particle system
Smoke particle system

 

Đặc điểm chủ yếu của hệ thống này là các đa giác biễu diễn cho mỗi hạt khi dựng hình sẽ hướng hoàn toàn về hướng của camera (tức là vector pháp tuyến của đa giác song song với hướng camera). Do đó khi camera ở bất cứ đâu thì ta cũng thấy hạt là một hình vuông.

  Trong smoke particle các vector V song song với T, và vector U song song với S (với S, T là hệ trục tọa độ của camera).

Hệ thống hạt này được dùng để giả lập các hiệu ứng giống khói như khói, máu, lửa, năng lượng…

  • Spark particle system

Ở hệ thống này đa giác của các hạt chỉ hướng về phía camera một phần (do các hạt bị ràng buộc trên 1 phương cố định, thường là phương của vận tốc), với đặc tính như vậy khi camera có vị trí và hướng nằm trên phương của hạt thì ta thấy hạt chỉ còn là một đường thẳng.

Hệ thống hạt - Spark particle system
Hệ thống hạt – Spark particle system

Trong spark particle các vector U, V, W hợp thành hệ trục tọa độ vuông góc từng đôi một, do đó diện tích của hạt hướng về phía camera luôn là lớn nhất.

Hệ thống hạt này được dùng để giả lập các hiệu ứng giống như dạng tia lửa như tia lửa phát ra khi va chạm, tia lửa phát ra khi đạn thoát ra từ nòng súng, giọt nước, đuôi tên lửa… (hầu hết các hệ thống trên đều có tính chất là các hạt dẹp và dài trên phương của vận tốc).

Cấu trúc chung của một hạt: Bao gồm các thuộc tính sau

Thuộc tính Mô tả
Position Vector vị trí của hạt trong world-space
oldPos Vector vị trí trước đó của hạt
Velocity Vector vận tốc (position += velocity)
Acceleration Vector gia tốc của hạt, chuyển động nhanh hay chậm.
Alive Biến bool cho biết hạt đang ở trạng thái sống hay chết, nếu energy=0 thì alive=false.
Size Kích cỡ của hạt
Energy Năng lượng của hạt.

Một hệ thống hạt(Particle System) bao gồm mảng các hạt. Khi thiết kế hệ thống hạt, chúng ta phải nhận biết rằng hệ thống hạt sẽ bao gồm một số lượng lớn các đa giác mỗi frame, mỗi hạt cần 4 đỉnh và 2 tam giác. Do vậy chúng ta phải thiết kế như thế nào đó để đảm bảo được sự thực thi cao.

 

0%

User Rating: 4.18 ( 8 votes)

Nhận xét của bạn

nhận xét

Tác giả songle

songle

Xem thêm

Tài liệu Trí tuệ nhân tạo thuật toán Min-max, game caro c#

Chào các bạn, Nhận được nhiều lời yêu cầu, hôm nay mình xin tổng hợp …

8 nhận xét

  1. Bài viết hay lắm.Cám ơn anh. Hy vọng anh tổng hợp thành 1 series

  2. bài viết hay mặc dù ko hiểu cho lắm 🙂

  3. Cám ơn anh. Rất hay. Mong nhiều bài về phần cơ bản nhất trong lập trình game như thế này.

  4. anh SongLe ơi, hình như 2 cái hình minh họa Smoke particle system Spark particle system hoàn toàn giống nhau, không biết có sự nhầm lẫm nào không ?

Trả lời