1. 문제 상황
- 게임에서 아이템을 관리하는 방식에 문제가 있었습니다.
- 서버에서는 각 아이템을 리스폰하고, 리스폰 메세지를 클라이언트로 전달해주고 있습니다.
- 그런데 문제는 클라이언트가 각자의 아이템을 아이템[아이템uuid] 형식으로 저장하는 방식에서 발생했습니다.
- 클라이언트마다 각기 다른 uuid를 생성해서 저장하게 되는데, 그로 인해 uuid가 달라져서 삭제 처리가 되지 않는 문제가 발생했습니다.
2. 문제 상황
- 게임에서 아이템을 관리하는 방식에 문제가 있었습니다.
- 1번 유저가 아이템을 먹으면 해당 uuid를 접속 중인 다른 유저들에게 전달해서 아이템을 삭제하려고 하는데, 클라이언트마다 uuid가 다르게 저장되어 있어 동일한 아이템을 삭제할 수 없었습니다.
- 동일한 위치에 리스폰되는 아이템이라도, 클라이언트마다 다른 uuid가 생성되므로 삭제가 제대로 이루어지지 않는 현상이 발생한 것입니다.
3. 해결책
- 이 문제를 해결하기 위해서는 서버에서 아이템 uuid를 고유하게 생성하여, 클라이언트에 전달하는 방식으로 변경할 필요가 있었습니다.
- 서버가 아이템을 리스폰할 때 uuid를 생성하고, 이를 클라이언트에 전달하면 각 클라이언트는 동일한 uuid를 사용하여 아이템을 처리할 수 있습니다.
1) 서버에서 아이템 리스폰 시 uuid를 생성하여 클라이언트로 전송.
2) 클라이언트는 서버에서 받은 uuid를 그대로 사용하여 아이템을 관리.
3) 이렇게 하면, 모든 클라이언트가 동일한 uuid로 아이템을 식별하게 되어 삭제 및 상태 변경이 정확하게 이루어집니다.
4. 결과
- 서버에서 고유한 uuid를 생성해주고 클라이언트에서 이를 기반으로 아이템을 관리하게 되면서, 여러 클라이언트가 동일한 아이템을 정확하게 처리하고 삭제할 수 있게 되었습니다.
- 이를 통해 게임 내 아이템 처리 시스템의 일관성을 유지할 수 있었습니다.
'프로젝트' 카테고리의 다른 글
TroubleShooting - 아이템 시뮬레이터 (0) | 2024.11.29 |
---|---|
TroubleShooting - 로그라이크 (0) | 2024.11.18 |