728x90 분류 전체보기222 [Day 9-2] 외교 관계 우호도(int) 설정 및 행동에 따른 관계 변화 구현 [2021. 07. 20, Tue] [우호도 함수 수정 전] 아마 Action(대리자)는 얕은 복사이지만, 조건문 속 대리자 안에 들어가는 변수 (x)가 깊은 복사 개념이라서 값이 안 바뀌는 것 같다 (확실한 이유는 모르겠음). 그래서 람다식에 ref를 붙여보는데 오류가 뜨고 밑에 계산식 함수를 만들어서 람다 대신에 함수를 씌어넣어줘도 안됐었다. 일단 중요한 기능들을 끝내는 것이 우선이다. 추후에 지식이 깊어지면 그때 가서 리팩토링해도 좋을 것 같다. [우호도 함수 수정 후] [우호도 관련 기능 추가] 만약 적국이 아닌 국가(Nothing 혹은 Ally)가 자국(건물)을 공격(1회)한다면 우호도가 -50이 떨어지게 하였다. 국가 우호도 범위는 (아래)이다. 1. 적 2021. 7. 20. [Day 9-1] AI 자동 공격 및 리타겟팅 완료 [2021. 07. 20, Tue] 처음 공격 함수를 짰을 때 문제가 조금 있었다. [디버깅 테스트1] [디버깅 테스트2] [디버깅 테스트3] - 타일 오너에 접근이 가능한지를 부터 확인하였다. 아마 월드 타일스크립트에 들어간 다음 그 안에서 타일주인의 Unit.cs의 스크립트 안의 Nation을 확인하는 시간이 오래 걸렸나보다. 그런데 게임 매니저에서 AI국가들의 턴을 넘기는데 중간에 계속 막히는 것이다. 두 가지의 문제를 발견했다. [QA 50회 실시] [EnemyAI.cs 리팩토링 전] [EnemyAI.cs 리팩토링 후] [리타겟팅] 2021. 7. 20. [Day 8-2] AI이동 구현 완료 [2021. 07. 19, Mon] 오늘 머리를 많이 쓴 것 같다. 처음에 많이 애를 먹었지만 디버깅을 통해 안 되는 부분을 계속 잡아내려고 애를 썼고 최적화를 위해 여러 번 실행이 되는지 확인도 해봤다. 순서는 이렇다. 게임 매니저에서 전체적으로 AI국가들이 차례대로 자국의 모든 유닛을 움직이거나 공격한 뒤 턴을 넘긴다. 마지막 AI국가가 턴을 끝낸다면 자동으로 플레이어 턴이 된다. [처음에 안되었던 부분] 1. 마지막 유닛이 이동을 마치면 자국의 이동 통제용 Bool값을 true로 만들어야 했는데, 처음에 다른 방식으로 하려다 미처 수정하지 못한, 실수로 유닛의 소유 국가를 static으로 뒀었다. 당연히 true로 안 바뀌어서 첫 번째 유닛이 이동을 하고 다음 번째 유닛에게 움직일 권한을 줘야 했는.. 2021. 7. 20. [Day8-1] 외교 관계 랜덤 적대 관계 형성 [2021. 07. 19, Mon] 구조는 이렇다. 1. tempRelations = relationOwner[NationsNum[i]]; 딕셔너리에 저장해놓은 각 국가의 외교관계 리스트를 가지고온다. 2. for(int j=0 ~~)문 처음 if(i!=j)에서 자국을 제외한 나머지 리스트를 확인한다. [i]국가의 [j]번 째 국가와의 관계가 적대 관계가 아닐 시에 일정 확률로 적대 관계로 만들어준다. 만약에 적대 관계가 되었을 경우, [j]국가의 적국 리스트에도 [i]국가를 적으로 만들어준다. 다행히 이번 것은 무리없이 잘 진행되었다. 그러나 다음 글에서 설명을 할 것이지만, AI에서 조금 많이 애를 먹었다. 2021. 7. 19. [Day 7] 외교관계 시스템 구축 및 게임 매니저 기능 추가 [2021. 07. 18, Sun] [게임 매니저] 게임 매니저에 추가 기능이 있다. 턴을 넘길 때마다 유닛들의 스텟(공격 횟수, 이동 횟수)이 초기화되어야 한다. 이를 한 번에 실행시키기 위해 Action을 활용하였다. [외교관계] ref. https://assetstore.unity.com/packages/templates/systems/rts-toolkit-free-30247 RTS Toolkit Free | 시스템 | Unity Asset Store Use RTS Toolkit Free from chanfort to elevate your next project. Find this & more 시스템 and templates on the Unity Asset Store. assetstore.uni.. 2021. 7. 18. [Day 6] 전체 리팩토링 및 게임 매니저 구현 [2021. 07. 17] 오늘은 토요일이라 점심에 푹 쉬었다가 오후 5시 부터 시작하였다. 오늘 한 일은 1. 스폰매니저 및 전체적으로 리팩토링. 2. 게임 매니저 구현. 이다. 게임 시작 시 모든 국가들은 병력을 가지고있어야 하고 유닛 타입에 걸맞는 스텟을 부여해줘야한다. 이제 SpawnManager.cs에서 temp라는 변수를 하나 만들고 실험을 해왔으니, 이제는 구현 해놓은 기능들을, 실제로 유닛을 배치하고 적용할 차례이다. [매니저] [리팩토링] ▼ 1.수정된 SpawnManager.cs (차례대로) 그런데 갑자기 다른 문제를 하나 찾았다. 원인을 찾기 위해서 Profiler로 확인을 해봤다. 알고보니 메인카메라가 Minimap(레이어) 표시용으로 둔 맵들도 보여주고있었다. 저렇게 받고싶은 것만.. 2021. 7. 17. [Day 5-2] 유닛 세 종류 모두 구현 완료 및 공격 시스템 수정 [2021. 07. 16] 공격 시스템이 다 마무리 된줄 알았으나, 애니메이션까지 탑재하고 실험을 해봤는데, 실수한 부분을 발견했다. 처음에 짠 공격 스크립트 구조는 유닛들이 공격 애니메이션을 취하지도 않고 빌딩 스스로 GetAttacked()를 하는 것이다. 유닛들의 Attack()함수에 유닛 혹은 빌딩 두 개 다 들어가게 할려고 일반화를 사용할려고 했으나, 서로 성질이 다른 부모들이어서 내가 짜 놓은 구조에는 일반화로 구현하기가 힘들었다. 그래서 방법을 계속 생각해봤고 마침내 정리를 할 수 있었다. 위에 Soldier.cs일부분 사진 속에 Attack도 인터페이스 를 제약으로 두는 일반화를 사용하고 싶었으나. 다른 것은 다 되는데 transform.LookAt() 괄호 안에 transform을 넣어야.. 2021. 7. 16. [Day 5-1] 확장메서드 수정 + 미니맵 구현 [2021. 07. 16] [미니맵 구현] 미니맵 부분은 너무 쉬우니 과정 설명을 간략화하겠다. 그런데 문제점이 있다. 구현을 해보니 프레임을 반이나 깎아 먹는 것이다..; 원인을 생각해보면 프레임을 잡아 먹을 수 밖에 없는 것이 이미지 파일을 보여주는 것이 아니라 맵 전체를 다른 카메라로 다시 한 번 더 보여주는 것이기 때문에 당연한 것이다. 그래도 100FPS아래로 안떨어져서 다행이긴하지만 물론 고칠 예정이고, 중요한 기능들을 다 끝낸 다음에,방법을 몰색할 것이다. [확장메서드 구현] 저번에 올렸던 확장메서드는 솔직히 연습 겸이라도 코드 작성하면서 스스로도 이걸 굳이 이렇게 할 필요가 있나 싶은 것이다. 그래서 저렇게 간단한 것에는 확장메서드를 쓰지 않고 그냥 if/else if로 끝내버리고 다른 것.. 2021. 7. 16. [Day 4-2] 유닛 공격 구현 완료, 국가 영토 및 점령 시스템 구현 완료 [2021. 07. 15] 현재시간 20:27 4-1 글을 올리고 한 시간 반 정도 자고일어났다. 다시는, 휴식 자체는 괜찮은데, 자면 안될것같다 ㅋㅋ 푹 잔것도 아니고 애매하게 자고일어나서 그런가 머리가 잘 안돌아가더라ㅠ 그래도 구현 해야할 기능들은 구현을 완료했다. 머리 식히고나서 내일이나 기회 될때 오늘 구현한 것들 리팩토링 해야겠다. 일단 순서는 이렇다. 1. 국가 시스템 구현 2. 유닛 소속 국가 부여 3. 공격 시스템 구현 4. 점령 시스템 구현 [국가 시스템 구현] 빌딩(국가)이라는 건물 자체의 스크립트를두고 국가가 지니어야할 기능들은 따로 Building->Systems 폴더안에 개별적으로 만들어놨다. 기능 구현 사진을 보면 내가 보유한 영토(타일)의 숫자와 세금 그리고 그 두 가지로 계산.. 2021. 7. 15. 이전 1 ··· 21 22 23 24 25 다음 728x90