본문 바로가기
영상

[스타크래프트 모작] 개인 API 시연회 영상

by 오늘의논리 2024. 4. 8.
728x90

 

 

제작기간:  24.03.21 ~ 24.04.05

제작 환경: Visual Studio2022, Windows API. 그외 없음

 

제작중 어려웠던것.

1. 마우스 처리

2. 길찾기 알고리즘 구현 및 최적화

3. 전투

4. 유닛 개인 UI, 그룹 UI

5. 미니맵

 

해결

1. 오브젝트나 유닛, 건물 말고도 마우스를 상태를 줘서 드래그 상태, 건물 빌드 지역선정 상태, NONE상태 등을 두어 해결 했고 유닛이 선택되고 안되고 하는 부분을 전체 오브젝트들을 가져와 처리하였다.

 

2. a*알고리즘을 구현하는건 하루만에 했으나 5개의 유닛 이상을 움직이면 프레임 드랍이 나타났다. 이건 다른걸 구현하면서도 4일정도 끙끙댔는데 결국엔 탐색의 깊이를 주어서 너무 깊게 탐색하지 않고 내가 지정한 일정 탐색 깊이가 되면 더이상 탐색하지 않게 하여 해결하였다. 그래서 2개부대 정도의 움직임이 있어도 프레임이 크게 떨어지지 않았다. 선생님께서 소거법 등을 말씀해주셨는데 그런부분은 내가 아직 부족해서 구현하지 못하였다.

 

3. 유닛별로 마린은 타겟을 하나 찾아서 공격, 탱크는 범위 공격, 터렛은 투사체 공격 등이다 보니 공격방식이 다양했고 투사체 같은경우 타겟이 없어져 버렸을때 처리가 까다로웠다. 마린, 탱크는 금방 구현했으나 투사체같은경우에는 유닛의 ID를 둬서 죽었을경우 아이디를 0으로 만들고 죽는데 내가 쫒는 타겟의 아이디가 0이 되면 투사체도 죽여버렸다.

 

4. 버튼같은경우에는 버튼의 이름을 확인하여 판별해서 별 문제없이 잘됬는데 와이어 표시가 현재 유닛의 HP에 따라 변동되고 이게 드래그로 여러 유닛이 선택되어있을경우 각 유닛별로 와이어프레임의 색이 달라야 하니 처음엔 막막했다. 하지만 유닛이 1개 이상 선택될 경우 GropWire 패널이 나타나게, 1개만 선택됬을땐 개인 UI가 나타나게 하여 처리했고 HP상태에 따른 색도 순차적으로 어디부위가 어떻게 색이 변할건지를 지정해 줘서 해결했다.       

 

5. 미니맵도 처음엔 막막했는데 모든 유닛과 건물은 포지션을 가지고 있으니 그걸 미니맵 안에 비율로 계산해줘서 넣어주면 되겠다는 생각을 했고 유닛에 레이어를하나 더 줘서 적군일 경우 빨간색으로 렌더하게 하여 미니맵을 구현하게 하였다.

 

 

 

 

2주동안 짧다면 짧고 길다면 길었지만 결과를 내었다는 사실이 무었보다 기뻤고 내 나름대로의 성장도 느껴져서 의미있는 시간이었다.

728x90

댓글