trong tuần qua tôi đã làm việc trên một hệ thống kiểm kê với Unity3D. Lúc đầu, tôi đã nhận được sự giúp đỡ từ những người ở Design3 nhưng không quá lâu cho đến khi chúng tôi chia tay nhau, bởi vì tôi thực sự không thích cách họ làm mã của họ, nó không có mùi OOP nào.
Tôi đã tiến thêm các bước về phía trước - các mục chiếm nhiều hơn một vị trí, hệ thống vị trí nâng cao (các mục cố gắng hết sức để tìm sự phù hợp gần nhất), hệ thống chuột cục bộ (chuột bị kẹt trong khu vực túi hoạt động), v.v.
Đây là bản demo công việc của tôi.
Những gì chúng tôi muốn có trong trò chơi của chúng tôi, là một tính năng tự động tổ chức - không phải tự động sắp xếp. Chúng tôi muốn tính năng này bởi vì kho đồ của chúng tôi sẽ ở trong 'thời gian thực' - không giống như trong Resident Evil 1,2,3, v.v ... nơi bạn sẽ tạm dừng trò chơi và làm mọi thứ trong kho của mình. Bây giờ hãy tưởng tượng bản thân của bạn trong một tình huống dính xung quanh bởi thây ma và bạn không có đạn, bạn nhìn xung quanh, bạn thấy rằng có những viên đạn gần đó trên mặt đất, vì vậy bạn đi tìm chúng và cố gắng nhặt chúng, nhưng chúng không không phù hợp bạn nhìn vào kho của bạn và phát hiện ra rằng nếu bạn sắp xếp lại một số mặt hàng, nó sẽ phù hợp! - bây giờ người chơi - trong tình huống đó không có thời gian để tổ chức lại vì anh ta bị bao vây bởi thây ma và sẽ chết nếu anh ta dừng lại và tổ chức kho đồ để tạo khoảng trống (nhớ kho trong thời gian thực, không tạm dừng) - sẽ không Nó có tốt để điều đó xảy ra tự động không? - Đúng!
(Tôi tin rằng điều này đã được thực hiện trong một số trò chơi như bao vây Dungeon hoặc một cái gì đó, vì vậy chắc chắn rằng nó có thể thực hiện được)
hãy xem bức ảnh này chẳng hạn:
Có, vì vậy, nếu bạn tự động sắp xếp vấn đề, bạn sẽ nhận được không gian của mình nhưng thật tệ vì: 1- Đắt tiền: không cần thao tác toàn bộ để giải phóng các không gian đó, trong ảnh đầu tiên, chỉ cần trượt mục màu đỏ tại từ dưới cùng bên trái và bạn nhận được cùng một không gian mà bạn có được từ sắp xếp tự động. 2- Điều đó gây khó chịu cho người chơi: "Ai F đã bảo bạn đặt lại đồ của tôi?"
Tôi không hỏi "Làm thế nào để viết mã" cho việc này, tôi chỉ hỏi một số hướng dẫn, tìm ở đâu, thuật toán nào có liên quan? Đây có phải là một cái gì đó liên quan đến đồ thị và công cụ đường dẫn ngắn nhất? Tôi hy vọng không phải vì tôi đã không quản lý để tiếp tục học đại học: / Nhưng ngay cả khi đó là, chỉ cần nói với tôi và tôi sẽ học những thứ liên quan.
Lưu ý rằng có thể có nhiều hơn một giải pháp. Vì vậy, tôi đoán điều đầu tiên tôi phải làm là tìm hiểu xem tình huống này có thể giải quyết được không - nếu tôi biết cách xác định liệu một tình huống có thể giải quyết được hay không, thì tôi có thể 'giải quyết' nó. Tôi chỉ cần biết các điều kiện làm cho nó 'có thể giải quyết'. Và tôi tin rằng phải có một số cấu trúc thuật toán / dữ liệu cho việc này.
Đây là một bức ảnh cho nhiều hơn một giải pháp cố gắng để phù hợp với một mục 1x3:
Các mũi tên chỉ hiển thị một trong những giải pháp, nhưng nếu bạn nhìn bạn sẽ tìm thấy nhiều hơn một. Đây là những gì tôi cuối cùng không tự động sắp xếp nhưng tìm một giải pháp và áp dụng nó.
Lưu ý rằng nếu tôi dành thời gian cho nó, tôi sẽ tìm ra cách để giải quyết nó, nhưng nó sẽ không phải là cách tốt nhất, giống như, cầm một bánh xe bằng chân thay vì tay của bạn! XD Hoặc giống như cố gắng giải quyết vấn đề yêu cầu mảng, nhưng bạn chưa nhận thức được sự tồn tại của chúng! Vì vậy, cách tiếp cận đúng cho việc này là gì?
Cập nhật từ Bình luận
@Stephen Tôi thực sự không có chuyên gia về Alogs, bạn đã đề cập đến 'knapsack' và @BlueRaja - Daniel Pflughoeft đã đề cập đến một thuật toán đóng gói thùng rác 2D. Họ bằng cách nào đó có liên quan / giống nhau? - Tôi vẫn bối rối không biết nên tiếp cận cái này như thế nào.
Và vâng, tôi đã sử dụng một "heuristic" nhưng tôi thực sự không biết rằng tôi là: D nó tìm thấy khe cắm có sẵn đầu tiên, và xem liệu vật phẩm đó có phù hợp ở đó không.
Tôi không biết nếu đặt hàng các mặt hàng dựa trên "độ lớn" của chúng (mà tôi gọi là nSlotsRequired = nRowsReq * nColsRec) sẽ hoạt động, vì ví dụ, bạn có một mặt hàng 2x2 và 1x4, chúng có cùng độ lớn, nhưng hình dạng khác nhau và sẽ có một hiệu ứng khác nhau về cách phần còn lại của các mặt hàng tiếp theo sẽ đi. VÌ THẾ... :/
Tôi đã xem video này , tôi thực sự thích ý tưởng đóng gói đầy đủ, nhưng tôi tự hỏi làm thế nào để đi về nó vì hàng tồn kho là 2D. Tôi thậm chí không chắc chắn rằng việc đóng gói bin là chìa khóa ở đây bởi vì, đúng là tôi có thể có nhiều hơn một túi, nhưng trong trò chơi của chúng tôi, nó sẽ chỉ là một túi. Vì vậy, đó là vấn đề lắp đồ trong túi 'một' và không nhiều hơn thế. Vì vậy, các ví dụ trong vid đó (đường ống và xe buýt) không thực sự phù hợp với vấn đề của tôi. Cũng đã xem một số nội dung về thứ ba lô này, tôi không thấy 'giá trị' liên quan đến vật phẩm / hàng tồn kho của tôi như thế nào, nhưng tôi đoán 'trọng lượng' cũng giống như hàng loạt, không chắc chắn.