Làm thế nào tôi có thể dọn sạch đống đổ nát do người chơi tạo ra?


92

Trong trò chơi mới nhất của tôi, tôi có thể tùy ý cắt một đối tượng 2D, thể hiện trong gif này:

nhập mô tả hình ảnh ở đây

Bạn có thể liên tục cắt nó thành hàng trăm hoặc hàng ngàn mảnh. Điều này không tạo ra nhiều độ trễ, bởi vì chúng luôn ở trạng thái vật lý ngủ, nhưng có một vấn đề khi bạn khiến chúng di chuyển.

Tôi không thực sự chắc chắn làm thế nào để đối phó với nó để không có quá nhiều gạch vụn từ việc cắt một cái gì đó. Tôi không thực sự muốn xóa chúng sau một khoảng thời gian nhất định; Tôi không thích làm thế nào, nếu bạn quay lại với thứ gì đó bạn đã cắt sau một thời gian, nó sẽ biến mất một cách ngẫu nhiên.

Làm thế nào tôi có thể dọn sạch đống đổ nát do người chơi tạo ra?


17
Nó không thực sự rõ ràng từ câu hỏi của bạn những gì bạn thực sự muốn. Bạn nói rằng bạn muốn "dọn dẹp đống đổ nát", nhưng đồng thời bạn nói rằng bạn không muốn đống đổ nát biến mất sau một thời gian.
Philipp

10
Tiny & Big sẽ phá hủy những mảnh nhỏ hơn. Khá chắc chắn rằng các mảnh lớn hơn ở xung quanh cho cấp độ, nhưng tôi không hoàn toàn nhớ nó. Dưới đây là một ví dụ: youtu.be/236ly0ApPqg?t=177
TyCobb

2
Những thứ nằm ngoài phạm vi có thể được gỡ bỏ và thay thế khi bạn quay lại.
Loren Pechtel

3
Chỉ là ý kiến ​​nhỏ của tôi, nhưng đặt kích thước đối tượng tối thiểu được thực hiện bằng hành động cắt. Nếu khó có thể cắt được mảnh bạn đang cắt, thì bạn không thể cắt nó. (Bỏ qua một bên, tính năng động của trò chơi hay, cái này chắc chắn có chân!)
AJFaraday

12
Tôi muốn tuyên bố rằng tôi không có tín dụng cho việc chế tạo máy cắt vì đây là tài sản miễn phí tôi tìm thấy trên github . Được sử dụng ví dụ nó cung cấp cho bạn một ý tưởng về cách sử dụng nó để cắt các đối tượng. (người chơi được mã hóa bởi tôi và mọi thứ khác trong trò chơi cũng vậy.
Ducktor

Câu trả lời:


71

Trước hết, cơ chế trò chơi đó có vẻ như rất thú vị, vì vậy xin chúc mừng bạn đã nghĩ về nó! Dưới đây là hai giải pháp đơn giản có thể được sử dụng độc lập hoặc cùng nhau để giải quyết vấn đề cụ thể này:

Loại bỏ những mảnh rất nhỏ

Không có nhiều điểm để giữ xung quanh những mảnh va chạm nhỏ thực sự sẽ không cản trở người chơi hoặc có bất kỳ ảnh hưởng thực sự nào đến môi trường. Tính toán logic va chạm bổ sung đơn giản là không có giá trị, do đó, hãy loại bỏ các phần này hoặc loại bỏ xung đột trên chúng.

Giới hạn cắt giảm người chơi

Có những vết cắt không giới hạn có khả năng làm cho rất nhiều câu đố của bạn thực sự đơn giản nếu bạn có thể cắt mọi vật cản trở thành một đống bột nhão. Chỉ cho người chơi một vài vết cắt để chơi (hoặc khiến nó nạp lại từ từ theo thời gian) và bạn có thể sẽ thấy rằng điều đó khiến cho câu đố của bạn trở nên khó khăn hơn ngoài việc loại bỏ những khó khăn khi xử lý va chạm trên hàng ngàn mảnh vỡ.


1
Hãy nghĩ rằng tôi sẽ làm cái đầu tiên vì tôi không có kế hoạch làm bất kỳ loại trò chơi giải đố nào.
Ducktor

36
Micheal Bay nó lên khi những mảnh nhỏ biến mất quá. Đó không phải là một bản ghi, đó là mùn cưa. Hoặc nổ mùn cưa. tại sao không?!
corsiKa

26
@corsiKa Nếu bạn thêm một số hiệu ứng rực lửa vào chuyển động cắt, bạn có thể làm cho vết cắt để lại dấu vết cháy trên các điểm tiếp xúc, với chiều rộng nhất định. Nếu vật thể nhỏ đến mức nó hoàn toàn bị "cháy sém", nó có thể bùng cháy và bốc cháy trong chốc lát.
T. Sar

155

Tìm ra nút cổ chai của bạn

Một vài trăm đối tượng di chuyển không phải là một vấn đề. Tuy nhiên, một vài trăm đối tượng va chạm có thể. Nó sẽ mất một số thử nghiệm, nhưng tôi tin rằng nút cổ chai bạn có là sự va chạm.

Nhân tiện, chúng ta đang nói về bao nhiêu đối tượng? Nền tảng là gì? Một trăm đối tượng cho một trò chơi di động không giống như một trăm đối tượng cho một trò chơi web hoặc một trăm đối tượng cho một trò chơi trên máy tính để bàn.

Thử nghiệm cùng một trò chơi nhưng với các va chạm giữa các đối tượng bị cắt bị vô hiệu hóa và xem liệu bạn có làm cho nó bị trễ với số lượng đối tượng tương tự không. Nếu đó là trường hợp, nó có nghĩa là số lượng đối tượng tuyệt đối là nguyên nhân của rắc rối; mặt khác, các va chạm là vấn đề.

Điều này sẽ thông báo quyết định của bạn về những gì bạn sẽ làm để cải thiện hiệu suất. Không phải tất cả các ý tưởng dưới đây sẽ được áp dụng, và dù sao bạn cũng sẽ cần thử nghiệm.


Tôi sẽ không nói về việc tối ưu hóa cho một lượng lớn các vật thể ở xa người chơi, vì rắc rối dường như xảy ra khi tương tác với các vật thể.

Có một vấn đề khi bạn khiến họ di chuyển.

Nếu sự cố xảy ra khi tương tác với các đối tượng, không rõ việc loại bỏ các đối tượng không nhìn thấy sẽ giải quyết nó như thế nào ... tôi sẽ cho rằng nó có thể giúp ích.

Tôi sẽ chỉ nói rằng nếu các vật thể ở xa người chơi là một vấn đề, bạn có thể bắt đầu bằng cách có các cấp độ nhỏ hơn hoặc xem xét việc chia trò chơi theo từng phần mà bạn có thể tải và giảm tải tùy thuộc vào nơi người chơi sẽ đi.


Ngoài giới hạn

Tôi tin rằng khi nói đến việc dọn dẹp đống đổ nát, điều đầu tiên cần có là loại bỏ các vật thể nằm ngoài giới hạn. Ví dụ, mảnh đã rơi xuống một cái hố. Nếu không có cách nào người chơi có thể đến đó để xem nó, không có lý do gì để giữ nó xung quanh.

Tôi sẽ trở lại với điều này.


Làm cho nó thực tế hơn (phần 1)

Khi bạn cắt gỗ bằng cưa, rìu hoặc công cụ tương tự, sẽ có vật liệu bị mất (với mùn cưa, phoi, v.v.). Ngay cả khi bạn cắt bằng laser, tia laser sẽ đốt cháy một số gỗ. Ngoài ra, đối với những thứ không phải là gỗ thường sẽ có biến dạng xung quanh vết cắt, vỡ vụn, v.v.

Điều tôi đang nói là vết cắt không hoàn hảo, và một số vật liệu sẽ bị mất. Bạn có thể mô hình hóa điều đó trong trò chơi của bạn. Phép thuật cắt màu đỏ điều đó có độ dày. Loại bỏ độ dày đó khỏi các đối tượng (thêm hiệu ứng hạt nếu bạn cảm thấy quá tội lỗi).

Điều này có nghĩa là bạn sẽ không thể cắt bất cứ thứ gì nhỏ hơn độ dày đó, trên thực tế, cố gắng làm điều đó sẽ loại bỏ nó khỏi trò chơi. Thế là tốt! Điều đó có nghĩa là sẽ có một lượng lớn gạch vụn sẽ có, và có cách thức cơ học để dọn sạch nó trong trò chơi.


Thay đổi bánh răng cho các vật nhỏ

Điều này sẽ làm việc tốt hơn nếu va chạm là vấn đề.

Một khi một đối tượng quá nhỏ, các chi tiết của các góc khác nhau mà nó có ít liên quan hơn. Bạn có thể thay đổi thành một cơ chế va chạm ít chính xác hơn. Ví dụ: bạn có thể sử dụng trình thu thập vòng tròn.

Bạn có thể đối xử với các đối tượng nhỏ hơn mà không va chạm giữa chúng; chỉ xem xét va chạm giữa chúng và các đối tượng tác nhân (như hình đại diện của người chơi hoặc nhân vật do AI điều khiển).

Cuối cùng, các vật thể rất nhỏ có thể biến thành bụi (hiệu ứng hạt).


Làm cho nó thực tế hơn (phần 2)

Điều này sẽ làm việc tốt hơn nếu va chạm là vấn đề.

Vật chất biến dạng và phá vỡ dưới áp lực. Nếu bạn kết thúc với các vật thể dài với độ dày rất nhỏ, hãy chia chúng thành các vật thể nhỏ hơn để chúng có thể tận dụng giải pháp trên.

Chúng ta có thể giả vờ rằng nó có quá ít độ dày khiến nó vỡ vụn và vỡ khi bạn đánh nó.


Hợp nhất các đối tượng

Điều này sẽ hoạt động tốt hơn nếu số lượng đối tượng là vấn đề.

Một mẹo phổ biến mà nhiều trò chơi sử dụng để đối phó với số lượng lớn thả có thể ảnh hưởng đến hiệu suất là kết hợp các giọt với nhau.

Bạn có thể thử một cái gì đó tương tự cho các vật thể nhỏ gần nhau. Có họ trở thành một đối tượng duy nhất. Tuy nhiên, tôi không có ý gắn các mảnh lại với nhau. Tôi có nghĩa là tạo ra một đối tượng duy nhất để xử lý vật lý của họ; bạn vẫn có thể biểu diễn các phần riêng lẻ tạo nên đối tượng, có thể sử dụng các kỹ thuật gần giống với các hiệu ứng hạt.


Làm cho nó thực tế hơn (phần 3)

Bạn đã nghe nói về gió? Có gió trong thế giới thực.

Sử dụng gió để đẩy các vật nhỏ đi.

Tôi biết nó có thể nghe có vẻ trực quan, bởi vì điều đó có nghĩa là các vật thể nhỏ không được nghỉ ngơi, ít nhất là không ngay lập tức. Đọc dưới đây trước khi bạn đưa ra đánh giá của bạn.

Bạn có thể sử dụng gió để đẩy vật nhỏ ra trước - hoặc ngay khi - chúng bắt đầu chồng chất. Sẽ hoạt động tốt hơn nếu bạn đang sử dụng tối ưu hóa cho các đối tượng nhỏ (chẳng hạn như kết hợp chúng hoặc loại bỏ va chạm giữa chúng).

Hơn nữa, nếu bạn có thể sử dụng gió để đẩy vật phẩm vào hố hoặc ngoài lề, bạn có thể sử dụng như một cái cớ để loại bỏ vật phẩm. Tôi nói với bạn rằng tôi sẽ trở lại đó. Ngay cả khi bạn không, nó có thể là một cái cớ để loại bỏ các vật thể nhỏ ở quá xa người chơi, chỉ cần giả vờ gió đã loại bỏ chúng trong khi người chơi không nhìn.

Bạn có thể loại bỏ một số đối tượng trong khi người chơi không tìm kiếm, bạn có phước lành của tôi.

Thêm vào đó, bây giờ bạn có một cái cớ để thêm gió, bạn có thể thêm gió như một phần của các cơ chế hoặc chướng ngại vật khác của trò chơi. Bạn thậm chí có thể thêm vào câu chuyện về tinh thần của gió cố gắng giữ mọi thứ sạch sẽ, nếu bạn đang rất nghiêng.

Lưu ý : Bạn không nhất thiết phải kích hoạt gió khi có đống đổ nát để làm sạch (mặc dù điều đó sẽ hoạt động), bạn có thể có thể có gió xảy ra trong khoảng thời gian ngẫu nhiên.


Hải ly!

Một số hải ly gây phiền nhiễu đi cùng và ăn cắp gỗ của bạn!

Bây giờ bạn có một loại kẻ thù!

Ngoài ra, tất nhiên, họ loại bỏ gỗ trong khi bạn không tìm kiếm. Bạn thậm chí có thể thiết kế nó để bạn quay lại và thấy một con hải ly đang chạy trốn với một mảnh gỗ nơi từng là một đống. Điều đó sẽ làm cho một khoảnh khắc đáng nhớ, sẽ giải thích tại sao gỗ biến mất và sẽ giải quyết một số vấn đề về hiệu suất mà bạn gặp phải, tất cả cùng một lúc.


Đó là tất cả sự đánh đổi

Có những hạn chế của nền tảng hoặc các công cụ bạn đã chọn, thậm chí thời gian và ngân sách bạn có để phát triển trò chơi là một hạn chế. Bạn không thể thực hiện một mô phỏng hoàn hảo của thực tế, chưa . Không ai có thể .

Mọi nhà phát triển đều làm việc trong giới hạn mà nền tảng mục tiêu của họ và các công cụ họ có tại thời điểm đó áp dụng cho họ, và những trò chơi hay nhất phải đánh đổi để làm cho trò chơi trở nên thú vị và hấp dẫn ... thực tế, ngay cả khi điều đó có nghĩa là ít thực tế hơn, đôi khi họ vui vẻ và hấp dẫn bởi vì họ không thực tế.

Hãy để sự sáng tạo đến từ những hạn chế đó.

Mặc dù, bạn cũng có thể làm cho trò chơi của mình thực tế hơn , bằng cách chọn các phần của thực tế thuận tiện cho sự phát triển của bạn. Hãy xem xét rằng đôi khi loại bỏ các vật thể ra khỏi người chơi là một phần chi phí để tạo ra một trò chơi thú vị.


36
Bài đăng này là câu trả lời dứt khoát cho vấn đề tràn đống đổ nát. Bạn đã cung cấp một bản tóm tắt đầy đủ về các kỹ thuật, đồng thời cho thấy rõ nhu cầu sáng tạo và chọn giải pháp phù hợp với hoàn cảnh của bạn, đồng thời cho thấy cơ học và tường thuật có thể chảy cùng nhau như thế nào. Tôi chỉ muốn nói rằng tôi gặp khó khăn khi thể hiện tôi ấn tượng như thế nào.
Dragomok

12
Cố gắng cắt một đối tượng nhỏ hơn chiều rộng chùm tia không cần phải làm cho đối tượng biến mất hoàn toàn mà thay vào đó có thể mang lại một đối tượng nhỏ hơn. Điều quan trọng là số lượng đối tượng chỉ có thể tăng lên nếu đối tượng cắt vượt quá chiều rộng chùm tia.
supercat

1

Thế giới rời rạc. Bạn không thể kết xuất một đối tượng nhỏ hơn pixel, vì vậy đừng cho phép các đối tượng đó tồn tại. (Điều này tương tự với một số điểm hiện thực được thực hiện bởi Theraot .)

Thật vậy, bạn có thể nhận được điều này miễn phí: người chơi chỉ định đường cắt của họ về cơ bản là một đường rời rạc trên màn hình. Tác dụng của việc cắt là phân chia mọi đối tượng thành các đối tượng phụ bao gồm, tương ứng, các pixel trên hoặc dưới dòng đó và các pixel nằm phía trên nó. Một đối tượng một pixel có thể có thể ở cả trên và dưới dòng, vì vậy nó không thể bị cắt bởi thuật toán này.

Nếu việc cắt tất cả các phần cắt thành các pixel riêng lẻ sẽ vẫn khiến bạn có quá nhiều đối tượng cần theo dõi, kích thước tối thiểu lớn hơn vẫn có thể hoạt động.

Hoặc đừng lo lắng về nó. Nếu người chơi chuẩn bị dành thời gian dài để cắt các vật thể thành bụi, rõ ràng họ không vội vàng để họ có thể đối phó với độ trễ mà họ gây ra. ;-)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.