예를 들어 카드 와바바박 여러장 연달아 쓰면 이펙트가 순차적으로 나가면서 대상 hp같은 ui도 이펙트가 발동한 다음에야 순차적으로 변하는데
액션 큐 만들어서 거기에 발동 순서대로 넣어가지고 순차적으로 비동기로 실행함??
근데 그럴경우에 조건 안달고 발동하는거 전부다 큐에 막넣으면 도중에 대상이 죽어서 없어지거나 이런 상황 있을 수 있잖슴?
그럼 액션 큐에서 실행할 때 조건 달아서 대상이 없거나 뭐 이런 예외 만들어서 액션 큐에서 빼냄?
근데 하스스톤같은 경우에는 애초에 ui상으로는, 그니까 사용자한테 보여지기에는 아직 이펙트가 발동 안되서 살아있는것처럼 보이지만
내부적으로는 이미 죽어서 없어진걸로 처리해서 애초에 카드로 타겟팅을 못하게 해놨던데,
그러면 ui 따로, 내부 로직 따로 이렇게 해야함?
지금 그렇게 하고 있는데 너무 수정해야될게 많아서 노가다임..
님들이라 어캐할껀가여
계산은 먼저 다 해놓고, UI에서 보이는걸 나중에 출력하면 됨;
계산 > 연출 > 계산 > 연출 이런식으로 작동하게 개발해서 그런거고, 따로 분리해서 작동할 수 있게 해놔야, 나중에 유지보수가 쉬움. 결론은 첫단추부터 잘 못 꼈다는 말
결국 하던대로 수정 계속 해야겠네..
닌 결국 따로 다 분리함. 고생은 진짜 많이 했는데 하고나니 진짜 잘 한 것 같다. 그 덕분에 지금은 배틀쪽 라이브러리만 따로 빼다가 아예 UI 없이 게임 돌리는 것도 가능해짐. 그걸로 배틀 시뮬레이터 만들어서 오토배틀로 100번 싸워서 승률 계산하는 등 레벨디자인할 때도 진짜 요긴하게 써먹음.
그리고 시뮬레이터에서 UI로 표현하기 위해 보내는 데이터들 잘 쌓아놨다가 파일로 저장해두면 그게 리플레이 데이터가 되더라. 혹시 이렇게 응용되나 싶어서 좀 개조해봤더니 진짜로 되서 어이가 없었음.
나도 하스스톤 모작 한적이 있는데몬스터로 공격시 => 몬스터 누르고 타겟을 선택시마다데미지처리 미리 해놓고 애니메이션+이벤트를 예약하는식으로 했었어몬스터를 상태별로 List로 분류했었거든? 필드리스트, 무덤리스트 , 휴면리스트 등등당장 컨트롤하는 내 몬스터로 타겟을 공격시타겟몬스터가 필드리스트에 존재하면 아직 살아있는거니까데미지계산하고 큐에다 예약을 그떄 했어ㅇㅇ마법카드의 경우는 위와 비슷허게 내 마법효과랑상호작용 가능한 리스트에 속한건지 확인하고데미지처리 후 큐에 예약했었던걸로 기억함