Tạo địa hình bản đồ kiểu như game Gunny

Hiện tại mình đang muốn làm một địa hình game. Cách mình làm là dùng một ma trận hai chiều lưu giá trị các số nguyên, với mỗi giá trị số nguyên tương ứng với một ô vuông cạnh 30px như trong hình.

Nhưng với cách này, nếu muốn làm địa hình mịn hơn thì phải giảm cạnh góc vuông xuống rất nhỏ, như vậy thì thuật toán phức tạp hơn nhiều. Vậy người ta làm cách nào để tạo ra địa hình game kiểu giống như game Gunny?

1 Like

Nếu bạn đã quen với khái niệm stencil buffer thì rất dễ, sử dụng bitmap 2 màu làm buffer, ví dụ màu trắng là phần cần render, đen thì bỏ qua. Việc phá hủy địa hình chỉ cần thao tác trên stencil buffer này (đục lỗ có bán kính r trên stencil buffer nơi có va chạm, sơn cho nó màu đen, rồi redraw bitmap như thường). Nếu cần xử lý thêm collision thì cũng xài buffer này luôn.

3 Likes

Để dễ hình dung thì đây là game Scorched Earth, stencil buffer có hai màu (xanh dương = bỏ qua, xanh lá = phần cần render). Nó cũng giống như vậy, chỉ khác là giờ chỉ cần render địa hình của bạn lên phần xanh lá.

2 Likes

Cảm ơn bạn nha. Bình luận của bạn rất chi tiết, hay. Mình sẽ tìm hiểu thêm về phần này.

Còn những cách khác (rắc rối) hơn, nhưng cách này dễ thực hiện nhất (hạn chế cũng nhiều nhất). Nếu bạn đang sử dụng libraries có sẵn thì có thể tham khảo xem nó có hỗ trợ mấy thứ này sẵn không (ví dụ Box2D có destructible terrain).

2 Likes

Hi Nguyễn Đức Anh.
Do bạn đang dùng chung dữ liệu hiển thị vào kiểm tra va tram.

Như trong hình mình vẽ một đa giác bao quanh viên thiên thạch. Khi hiển thị nó thì mình hiện một hình ảnh hình chữ nhật như bình thường. Khi kiểm tra va trạm thì mình dùng đa giác bao quanh. Bạn làm tương tự với map.

3 Likes

Cách này ổn hơn, nhưng thực hiện thì hơi bị phức tạp, nhất là cắt xén, chỉnh sửa polygon (kiểu mảnh đất bị đứt đôi thì nối poly lại như thế nào…) :joy:

1 Like

Hi Florastamine.
Thì dùng 2 hình. Hình như có tool tạo máp vẽ đa giác và hỗ trợ định dạng file cho box2d luôn @_@! Nếu thích thì làm tay cũng được.

Hiện tại mình chưa có ý định sử dụng thư viện hỗ trợ nên khả năng sử dụng đa giác bao bọc để kiểm tra va chạm chắc hơi khó. Nhưng mình sẽ cân nhắc tìm hiểu nó nếu cần thiết.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?