Project Zomboid

Project Zomboid

Advanced trajectory
생초매 23 Jul, 2024 @ 11:00am
좀비 체력이 주기적으로 회복또는감소 하는버그
Combat Text (B40+B41) - 좀비 체력바 모드

Random Zombies - Day and Night - 뛰좀 및 좀비 상세스폰 설정 모드

Advanced trajectory - 탄도학 모드(총기조준모드)



일단 해당 버그와 연관된 모드는 위 3개의 모드이고 실질적으로 문제가 되는 모드는

Random Zombies - Day and Night

Advanced trajectory

이렇게 2가지입니다



개요

- 탄도학 모드가 적용된 총기로 좀비 사격 시 해당 좀비의 체력이 주기적으로 감소/회복 됨



원인

1. Random Zombies - Day and Night 모드에선 플레이어 주위의 좀비를 주기적으로 업데이트 시킴

- 좀비의 속도,체력,공격력등의 스펙을 기존에 스폰되어있는 좀비 한테 덮어씌우는 개념

- 해당 업데이트는 좀비가 데미지를 받은 경우 비활성화 됨



2. Advanced trajectory모드에서 총기로 좀비에게 데미지를 입히는 방식이 일반적이지 않음

- 일단 좀보이드의 좀비 데이터엔 최대체력이란 개념이 없습니다. 현재 체력만 존재함

- 해당 모드는 좀비에게 데미지를 주는 방식이 아닌 좀비의 현재체력을 직접적으로 조작하는 방식



3. Combat Text모드가 좀비 체력바를 구현하는 방식의 문제(한계)

- 위에서 상기한대로 좀보이드의 좀비에겐 최대체력이란 개넘이 없기 때문에 평범한 방법으론 체력바를 구현할수 없음

- 해당 모드는 플레이어 주위 좀비데이터를 불러온뒤 모드 설정 정보와 함께 클라이언트에 임시 데이터로 저장함

- 위 단계에서 현재 저장되어있는 좀비 데이터와 비교하여 신규좀비 여부를 확인함

- 신규 좀비로 확인된 경우 해당좀비의 현재 체력을 최대체력 값으로 클라이언트에 저장함

- 위 내용으로 만들어진 체력바는 플레이어와 상호작용이 생긴 좀비에게서만 보여지는것으로 보임(가설)



정리

- 데미지를 받지않은 좀비의 체력은 주기적으로 변화함 하지만 플레이어는 알수없음

- 탄도학 모드로 공격한 좀비는 데미지 판정이 안들어감 하지만 상호작용은 발생함

- 상호작용이 발생함으로써 체력바가 보여지게됨 이로인해 주기적으로 변화하는 좀비의 체력을 플레이어가 확인가능함

- 최대체력값은 체력바가 생길때 고정되기 때문에 플레이어 눈에는 좀비의 체력이 계속해서 회복/감소 하는것으로 보임

해결

1. 랜덤좀비 모드에선 좀비를 업데이트 하기전에 아래 2가지를 확인한뒤 해당사항이 없을때 업데이트시킴

a. 좀비가 불타고있는지 여부

b. 누군가에게 공격 받았는지 여부

2. b조건을 충족을 위해 탄도학모드의 좀비 사격이 호출되는 이벤트 함수 수정

- getSpacificPlayer(0) 함수로 공격한 플레이어 정보 호출

- 좀비 데이터 수정 부분에 setAttackedBy() 함수로 공격한 플레이어 정보룰 등록