지난 주에 Unity3D로 인벤토리 시스템을 작업했습니다. 처음에 Design3의 직원들로부터 도움을 받았지만 경로를 나눌 때까지 너무 길지 않았습니다. 코드를 작성하는 방식이 마음에 들지 않았기 때문에 OOP 냄새가 전혀 없었습니다.
아이템을 두 개 이상 가져 가거나, 고급 배치 시스템 (항목이 가장 잘 맞는 것을 찾으려고 노력합니다), 로컬 마우스 시스템 (마우스가 활성 백 영역에 갇히게 됨) 등을 수행했습니다.
여기 내 작품 의 데모 가 있습니다.
우리가 게임에서 갖고 싶은 것은 자동 정렬 기능이 아니라 자동 구성 기능입니다. 우리는 인벤토리가 게임을 일시 중지하고 인벤토리에서 작업을 수행하는 Resident Evil 1,2,3과는 달리 '실시간'에 있기 때문에이 기능을 원합니다. 이제 좀비로 둘러싸인 끈적 끈적한 상황에서 자신을 상상해보십시오. 탄알이없고, 주변을 둘러보고, 주변에 총알이 있음을 알 수 있습니다. 맞지 않아! 재고를보고 일부 품목을 재구성하면 적합 할 것임을 알 수 있습니다! -이제 플레이어-그 상황에서 좀비로 둘러싸여 있기 때문에 재구성 할 시간이 없으며 공간을 확보하기 위해 인벤토리를 중지하고 구성하면 죽을 것입니다 (실시간으로 인벤토리를 기억하고 일시 중지하지 마십시오)- t 자동으로 발생하는 것이 좋습니까? - 예!
(이것은 Dungeon siege와 같은 일부 게임에서 구현되었다고 생각하므로 가능합니다.)
예를 들어이 사진을 살펴보십시오.
예, 따라서 문제를 자동 정렬하면 공간이 생겨나지 만 다음과 같은 이유로 나빠질 수 있습니다. 맨 왼쪽으로 이동하면 자동 정렬에서 얻은 것과 동일한 공간이 생깁니다. 2- 그것은 플레이어에게 성가신 일입니다. "F가 당신에게 내 물건을 다시 주문하라고 했나요?"
나는 이것을 위해 "코드를 작성하는 방법"을 요구하지 않고, 어떤 지침이 필요한지, 어디를보아야하는지, 어떤 알고리즘이 관련되어 있는가? 이것은 그래프 및 최단 경로와 관련이 있습니까? 나는 대학 공부를 계속하지 못했으면 좋겠다 : / 그러나 그것이 맞더라도 말해 주시면 관련된 것들을 배울 것입니다.
하나 이상의 솔루션이있을 수 있습니다. 그래서 내가해야 할 첫 번째 일은 상황이 '해결 가능'인지 알아내는 것입니다. 상황이 해결할 수 있는지 여부를 결정하는 방법을 알고 있다면 '해결'할 수 있습니다. 나는 그것을 '해결 가능'하게 만드는 조건을 알아야합니다. 그리고 나는 이것을 위해 알고리즘 / 데이터 구조가 있어야한다고 생각합니다.
다음은 1x3 항목을 맞추는 여러 솔루션에 대한 그림입니다.
화살표는 솔루션 중 하나만 표시하지만, 보시면 둘 이상을 찾을 수 있습니다. 이것이 궁극적으로 자동 정렬이 아니라 해결책을 찾아 적용하는 것입니다.
내가 그것에 시간을 보내면 그것을 해결할 수있는 방법을 생각해 낼 것이지만 최선의 방법은 아닐 것입니다. 손 대신에 차 바퀴를 쥐고있는 것과 같습니다! XD 또는 배열이 필요한 문제를 해결하려고하는 것과 같지만 아직 존재하지 않는 것을 알고 있습니다! 그렇다면 올바른 접근 방법은 무엇입니까?
해설에서 업데이트
@Stephen 저는 Alogs의 전문가가 아닙니다 .'knapsack '과 @BlueRaja를 언급했습니다. Danny Pflughoeft는 2D 빈 포장 고를 언급했습니다. 그들은 어떻게 든 관련이 있습니까? -어떻게 접근해야할지 아직도 혼란 스러워요.
그리고 그렇습니다. 나는 이미 "휴리스틱"을 사용하고 있지만 실제로 내가 다음과 같은 것을 알지 못했습니다.
"bulkness"(nSlotsRequired = nRowsReq * nColsRec라고 함)를 기준으로 항목을 주문하면 작동하는지 알 수 없습니다. 예를 들어 2x2 및 1x4 항목이 있기 때문에 부피가 동일하지만 모양이 다르고 모양이 다릅니다. 다음에 나머지 항목이 어떻게 진행되는지에 대한 다른 효과. SO ... : /
나는 이 비디오를 보았고 , 전체 포장 아이디어를 정말로 좋아했지만 인벤토리가 2D이므로 어떻게 해야할지 궁금합니다. 빈 포장이 핵심이라고 확신하지 못합니다. 왜냐하면 하나 이상의 가방을 가질 수 있다는 것이 사실이지만, 우리 게임에서는 단지 하나의 가방이 될 것입니다. 따라서 '1'백에 품목을 넣는 것 이상의 문제입니다. 따라서 그 vid (파이프 및 버스)의 예제는 실제로 내 문제와 일치하지 않습니다. 또한이 배낭에 관한 몇 가지 물건을 보았습니다. '값'이 내 항목 / 재고와 어떻게 관련되어 있는지 알지 못했지만 '무게'는 부피와 같은 것 같습니다.