RTS랑 다르게 이 게임은 몬스터가 그냥 플레이어 향해서 움직이기만 하면 되니까
충돌 판정 나면, 1초 정도 정지하게 만듬.
쉽고 단순하게.
16000마리도 시도해봤는데, 프레임 작살나서 만마리 이상은 무리.
어차피 8000마리도 극한 테스트일 뿐이니, 저만큼 쓸 일도 없을듯. 적당히 만들고 유지해야지.
이제 성능 관련된 부분은 다 해결됐으니, 기초시스템 들어가면 되겠군.
RTS랑 다르게 이 게임은 몬스터가 그냥 플레이어 향해서 움직이기만 하면 되니까
충돌 판정 나면, 1초 정도 정지하게 만듬.
쉽고 단순하게.
16000마리도 시도해봤는데, 프레임 작살나서 만마리 이상은 무리.
어차피 8000마리도 극한 테스트일 뿐이니, 저만큼 쓸 일도 없을듯. 적당히 만들고 유지해야지.
이제 성능 관련된 부분은 다 해결됐으니, 기초시스템 들어가면 되겠군.
GOSU
머임? CMC 대신에 그냥 pawn?
그냥 벡터값에 인스턴스트 스태틱 메시로 VAT로 구현한거임. 객체지향 아님. 기존 위치에 속도를 더하고, 그 값을 인스턴스트 스태틱 매시의 인스턴스들을 매 틱 업데이트함.
@흑_두루미 고맙데이 좋은거 알아간다
게임 만들때 최적화부터 한다면 당신은 진짜로 위기입니다
사실 원래 만들던거 갈아엎은게 이거임.
뭐야 무서워 최적화 팁좀!!
@흑_두루미 나에겐 아직 외계어구만 저장해놨다가 천천히 뜯어볼게 고마워!
데이터지향 설계로 만듬. 원래 객체가 가져야할 변수들을 구조체에 배열로 넣음. Struct Str_Monster{ TArray bool Active; TArray float HP; TArray FVector Location} 대충 이렇게 선언하고. 이 구조체를 또 배열로 만들고 맴버변수로 만듬. TArray Str_Monster M_Monster; 그럼 M_Monster 의 인덱스는 몬스터의 종류를 나타내고. 그 구조체 안에 있는 Active 나 HP는 Index로 분류되는게 객체임.
@BeginPray() 데이터 지향 설계 배워두면, 다수객체 게임 만들 수 있음. 성능 존나 미침.
@흑_두루미 나도 이렇게 많은 몬스터 리스폰 되게 하는게 목표라 무조건 공부할듯
@BeginPray() 인공지능한테 SOA 방식에 대해 알려달라 하셈. Structure of Array 라는건데. 다수 객체 처리 핵심임. 그렇게까지 어렵지는 않음. 개념만 생소할 뿐이지, 구현 자체는 매우 간단함. 각 객체에 존재하는 변수와 함수들을 하나의 오브젝트에 몰아넣고 틱으로 for loop 돌리는거임. 일단 이 기술을 손에 넣으면 틱을 자유자재로 쓸 수 있음. 로직짜기 엄청나게 편해짐.
@흑_두루미 DOTS랑 비슷한거같은데?? 맞음?
@신유진 기본 시스템은 거의 비슷함. 엔진 제공 시스템은 배우기가 더 어려워서 그냥 직접 구현함. 몬스터 외형은 VAT를 인스턴스드 스태틱 메시로 구현함.
와 이게 ECS 쓴거 맞져??
엔진 ECS는 아니고 로직으로 구현함. 몬스터 랜더링은 인스턴스드 스태틱 매시랑 VAT 이용해서 구현했고. 충돌은 파티션 시스템 만들었음. 기본적으로 데이터 지향 설계라 ECS랑 기본 시스템은 비슷함.
몹만 보여서 몰랐는데 스킬쓰는 플레이어가 보이네 화이팅 ㅋㅋ