시험 기간 중 더 늦어지기 전에 현황 보고.

그동안 대규모 기획 변동이 있었는데, 뭐냐면 원래 실시간으로 동작하는 것을 턴제화로 바꿨어.


7cf3d72fe3f206a26d81f6e64487756d562900b2c623abd531a04e81d2b628f1776faf2264


이게 겉보기에는 바뀐 게 별로 없는데 내부적으로 주요 코드들 싹 다 뜯어 고친거야;;


일단 버튼을 누를 때 마다

7cad9e36ebd518986abce8954780716d54

해당 메소드가 실행돼. 플레이어가 움직인 후에 대기 카운트가 감소되게 해놨어.



그리고 UIManager에서 모든 대기 카운트를 관리하는데,

이걸 이해하려면 새로 추가한 CountRemain 클래스를 알아야해.


CountRemain 클래스는 2개의 int형 변수와 3개의 이벤트를 사용해.

int형 변수로는 고유 대기 카운트와 현재 대기 카운트가 있고,

준비, 액션, 제거 총 세 개의 이벤트를 가질 수 있어.

이 클래스를 맵에 등장하는 거의 모든 오브젝트들(Player를 제외한 Enemy, Projectile 등등)에 컴포넌트로 추가해줘.

그리고 매 대기 카운트 감소 시


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cea8ffa11d0283124baf493e1034742aa8c34f38c05f61bb95807ff6354371cc9a1cbf3fe88300ea372c2b37df79e37c3cdc23fcbd875a8a5bf1e68

countRemain 클래스 안에 이 메소드가 실행 될꺼야.

3dee9e36ebd518986abce895448977640f

컴포넌트에 드래그 드랍으로 넣어놨던 이벤트들이 실행되게 했어. (예시: Enemy)


Enemy를 포함해 WarningIcon, Lazor, Bomb 등등에 새롭게 추가된 모든 이벤트들을 설명하고 싶지만,

글이 너무 길어질 것 같아서 여기까지만 할께.


아무튼 다시 돌아와서 UIManager에 DoCountRemain은 이 CountRemain 컴포넌트를 가진 모든 오브젝트들이 DoAction을 진행할꺼야.


뒤에 DoSpawnTile_Action DoSpawnTile_Spawn에 대해 간략하게 설명하자면,

SpawnManager가 가지고 있는 스폰될 타일에 대한 데이터(타일값, 적이 스폰될 타일인지 로켓과 같은 맵 패턴이 스폰될 타일인지 등)들의 리스트를 관리해주는거야.

이로 버그 없이 스폰될 타일에 대한 데이터들을 생성/제거하고 더 나아가 스폰 턴제화에 최적화된 코드로 재구성했어.


턴제화 작업이 내부적으로 많이 빡센 작업이었다고 해도 거진 한 달이나 걸릴 수는 없지.

이렇게 늦게 글을 쓰게 된 이유 두 번째는 적 AI를 조금이라도 더 똑똑하게 만들어보려는 노력이랄까나...?


기존 AI 로직은 그냥 있어 보이려고 가장 많이 이동할 수 있는 칸으로 이동했어. 물론 스파게티 코드는 덤이야.

바꿔야지 바꿔야지 하다가 이번에 턴제화 작업으로 코드 재정독을 무수히 반복하면서 기왕이면 지금 하자는 생각이 들어 바로 바꿔줬어.


바뀐 로직은 일단 적이 ActionEvent일 때, 적의 경로('룩'이라면 맵 끝까지 닿는 십자모양)에 Player가 존재하면 즉시 Player가 존재하는 타일로 이동,

Player 미존재 시 경로 중 Player와 가장 가까운 타일로 이동으로 바꿨어.


이렇게 적으니까 한 게 단순해 보이는데, 그 전까지만 해도 Enemy가 경로가 아닌 목표 타일 하나만 가지고 있어서 경로에 존재하는 모든 타일을 리스트 형태로 저장하고 그에 맞게 초기화, 움직임 로직 재정의 등 할 게 은근 많더라..

지금도 AI로직이 맘에 들지는 않아. 가까운 타일로 이동을 조금 바꿔야 할 것 같은데 그래도 지금까지 해둔 게 있어서 바꾸는데 큰 무리는 안 갈거같아.


빨리 자려고 생각나는 대로 막 적어서 이해할랑가 모르겠다.

그럼, 시간표가 망해서 2주 동안 시험 봐야 하는 대학생은 이만 자러갈께.



7ff3d72fe3f206a26d81f6e443817765ebf9

(ps. 피격 시 생성된 하얀 원은 방어막입니다. 일단 로직만 구현한 상태고, 후에 디자인하겠습니다. 편안한 밤 되십쇼)