다시 작업 시작

턴제제작 2020. 3. 18. 14:02

https://store.steampowered.com/app/2114090/Goetita_Turnbased_City/

 

Goetita: Turn-based City on Steam

Goetita: Turn-based city is a turn-based strategy game controlling the element of luck through rational judgment. Survive even in a desperate situation when all your resources are running out with your strategy in the cold and dark city!

store.steampowered.com

 

 캐릭터가 죽으면 바닥으로 사라지는 것과 레인지 관련 버그들을 수정했다. 원거리 표시나 이런거에서 생각보다 버그가 많이 나오는 듯 싶다. 

 라운드가 플레이어랑 마우스 포지션하고 두개가 생기는데 그걸 착각을 한듯 싶다. 

 그부분을 수정해 줬다. 이게 사람의 의사결정을 돕는 시스템을 만들면 인공지능쪽도 쉽게 만들수가 있다. 얼추 그부분의 버그를 잡았으니 이제 레인지 까지 포함된 인공지능을 만들어야 겠다. 일단 전략적인 선택 같은건 빼고 다짜고짜 돌진하는 그런 수준 정도 만들어야 겠다. 

 문득 나중에 벽과 같은 경우에는 콜라이더는 놔두고 메쉬는 반을 자를 필요가 있을듯 싶다. 화면을 돌리는게 귀찮은 사람들을 위해서 말이다. 

 아 그리고 코드를 생각해서 짜는 것보다는 생각없이 그냥 단순 반복적으로 추가할때가 별로 스트레스가 없는듯 싶다. 왜 사람들이 별 생각없이 사는지 알듯 싶다. 

 일단 해야 할일이 지금  근접 공격이 두칸 너머에 까지 적용이 되어 있는데 이걸 플레이어와 마찬가지로 한칸 이내만 공격이 가능하도록 만들어야 할듯 싶다. 물리는 걸 만들 생각이라. 두칸으로 물리는 경우에는 캐릭을 스턴을 걸거나 제거하지 않으면 빠져나가려고 할때 공격을 받게 된다. 

 근거리 공격 에이아이를 거의 새로 만들어야 할 판국이다. 일단 한칸 근거리에 공격 가능한 적이 있으면 원거리 근거리 가리지 않고 일단 공격을 한다. 두칸의 경우에는 원거리에 경우에는 가서 달라붙어서 락온을 한다. 근거리가 있는 경우에는 바로 가서 달라 붙지 않고 두칸 영역으로 적절히 이동을 하도록 해야 할듯 싶다. 

 그렇다면 근거리가 두칸일 경우에 공격을 하지 않도록 하는 걸 만들어야 할듯 싶다. 그 다음에 원거리 공격을 만들어야 겠다. 

 원거리 공격의 경우에 쟁점이 이동하고 공격이 가능한 경우에는 이동후 공격을 하는 걸 만들어야 한다. 이동후 공격이 가능한지 여부를 판별하는 것은 앞서서 의사결정을 돕는 편의 기능을 만들거를 참고하면 될듯 싶다. 

 일단 근거리 부터 만들고 원거리 유닛은 패스 하도록 하자. 근거리 유닛의 경우에는 한칸범위와 두칸 범위내에 적이 있는 것 까지 만들고 일단 검출이 안되는 경우에는 이동을 하지 않도록 하자. 

 리스트에서 리무브 하는게 잘 안되서 그냥 새 리스트를 만들고 애드를 하는 방식으로 만들었다. 

 일단 이동은 생략한 원거리 검기 공격 같은것 부터 만들고 이게 버그가 다 잡히면 그때 이동을 추가해야 겠다. 한번에 완벽히 코드를 만들려면 체한다. 

 근접해 있을때 원거리 공격이 안되게 되는 것도 만들어야 한다. 일단 에너미 원거리 공격을 만들고 나서 만들어야 겠다. 아 그리고 아무것도 안하고 있는 애는 팀원 곁으로 가서 서 있으면 될듯 싶다. 한칸 범위에서 랜덤하게 가고 눌일 경우에는 두칸 범위내에서 랜덤하게 가도록 해야 겠다. 두칸범위도 눌이거나 하면 랜덤하게 이동하면 될듯 싶다. 움직일수 있는 타일이 하나도 없는 경우에는 그냥 안움직이게 하는 것도 만약을 위해서 만들어 놓을 필요가 있다. 일단 이것들은 차순위로 만들도록 하자. 

 아군 근처로 가서 똘똘 뭉치는 거는 아무래도 이미 동작이 끝난 곳으로 가서 뭉처야 혼선이 발생하지 않을듯 싶다. 그렇다면 후순위로 미루는 메커니즘을 만들 필요가 있을듯 싶다. 아 그리고 후순위로 미뤄도 갈곳이 없으면 플레이어 근처로 이동을 하고 거기로 먼저간 친구 근처로 줄줄이 이동을 하면 될듯 싶다. 

 원거리 공격을 만드는 건 일단 그냥 공격하는 것은 만들기가 쉽다 문제는 이동후 공격이 가능할때 이동후 공격을 어떻게 만들지 여부이다. 

 일단 쉬운것부터 만들자. 간단히 두칸 범위내에 있으면 공격하도록 한다. 

 이전에 만들었던 거에서 이동만 안하면 될듯 싶다. 이동 공격을 타일 기준으로 죄다 검색하면 무리가 갈듯 싶어서 플레이어 기준으로 이동후 공격이 가능한지를 판단해야 할듯 싶다. 

 스타트 코루틴과 스탑 코루틴을 했갈려서 왜 안되나 했다. 

 거의 다 됬다. 아 그리고 턴제 게임에서 동작이 끝날때까지 기다리는 걸 지루해 하는 사람들이 있다는 걸 알고 있기 때문에 동작이 다 끝나지 않고 중간쯤에서 연산이 이루어 지고 다음 행동을 하게 했다. 이렇게 하면 오브젝트끼리 겹칠수도 있지만 그정도는 게임적 허용으로 넘어가도록 할 생각이다. 사람은 기다리겠지만 인공지능 연산에서 가령 움직이는 와중에 콜라이더가 잡혀서 공격이 안된다거나 그럴수가 있는데 그런 버그는 그냥 허용 가능 영역의 버그로 치부할 생각이다. 

 4월 22일 부터 6월 2일 3시까지가 Bic접수 기간인듯 싶다. 일단 이때까지 시연가능한 데모를 만드는걸 주력을 해서 제출을 해야 겠다. Bic은 정부 예산이 들어가는 행사이니 캐릭터를 옷을 좀 입혀서 데모를 내야 겠다. 잠시 동안 크런치 모드에 들어 가야 겠다.

 아 글고 직사화기이기 때문에 앞에 아군이 있으면 공격을 못하도록 만들어야 한다. 엑스컴의 경우에는 아군이 앉거나 하는데 근접 유닛을 벽으로 세우는걸 전략으로 쓸수도 있으니까 아군이든 적군이든 관통하지 않도록 해야 할듯 싶다. 어차피 이동후 사격이 가능하니 말이다.  나중에 유탄 발사기 같은 곡사화기를 추가할 필요도 있다. 

 바로 붙어 있으면 구지 이동하지 않고 공격을 하는 것도 추가해야 할듯 싶다. 우선 플레이어가 바로 공격하는 것부터 만들어야 할듯 싶다. 나중에 로봇 같은걸 소환하는 시스템도 만들어야 하는데 만들어야 할게 산더미 같이 쌓인거 같다. 일단 로봇을 소환하는 시스템까지 만드는 건 꽤 오래 걸듯 싶으니 일단은 기본적인 턴제 전략 시뮬레이션 게임의 틀 정도만 만들고 미션 1 정도만 만들어서 제출을 해야 할듯 싶다. 회사 이름은 오이도이로 해야 겠다. 특별한 의미는 없다. 

 6월달에 Bic 제출할 정도로 작업이 완료가 되면 지금 있는 고향집은 나와야 할듯 싶긴 하다. 취업을 한다든지 아니면 크라우드 펀딩을 준비 한다든지 해야 할듯 싶다. 최소한 포트폴리오 수준까지는 완성이 될듯 싶으니 말이다. 지금은 강의를 들으면서 공부를 하는 거는 필요성을 못느끼고 있다. 배운다면 작업을 해나가면서 배우니 말이다. 

 머리를 좀 써야 할듯 싶다. 일단은 지금 에너미 기준에서 공격이 가능한 플레이어를 착출해 내야 한다. 가장 쉽게 생각할수 있는게 플레이어 쪽에서 레인지 범위를 열고 이것과 에너미 한칸 이동 가능한 교집합을 추출하는 거다. 그리고 이들 범위로 이동이 가능한지 길찾기 알고리즘을 돌려서 검증을 해내면 될듯 싶다. 다 해볼 필요는 없고 랜덤하게 선택된 것만 해보면 될듯 싶다. 여기서 안될 경우에 한해서 해당 타일을 제한 다음에 다시 길찾기 알고리즘을 돌리는 방식으로 가면 될듯 싶다. 이게 한칸범위내 타일 모두로 이동을 해보고 에너미 쪽에서 레인지를 여는 것보다는 엄밀하지 않지만 검색해 보는 양이 적을 테니 말이다.

 문득 만들다가 새로 찾아 보는게 아니라 이미 만들어진 타일 노드 리스트를 저장하는 것도 필요하다는 생각이 들었다.  근데 하나의 함수는 하나의 일을 해야 한다는 원칙이 문득 생각이 났다. 혹시라도 초기화를 안하면 버그가 발생할텐데 최적화냐 하니면 중복을 하더라도 초기화를 안하면서 생기는 버그를 아에 막을 것인가 고민이 든다. 

 아 글고 일단 랜덤하게 골랐다가 빼고 그런건 복잡하니까 우선은 순서대로 하자. 이부분은 나중에 시간 날때 고치도록 하자. 

 문득 드는 생각이 맵이 넓어지면 모든 타일 노드들을 검색을 하는게 아니라 맵의 구역을 나누고 일단 선행 체크를 하는게 필요할듯 싶다. 그렇게 하면 최대 4개 구역까지만 검색을 하도록 말이다. 

 일단 이동해서 가서 잘 쏜다. 다만 해당 타일에서 공격을 할수 있는지 검증을 하는게 필요하고 해당 타일로 이동할 수 있는지도 검증이 필요하다. 

 여기서 부터는 while문을 써야 하기 때문에 주의가 필요하다. 잠깐 쉬었다가 작업을 이여나가자. 

https://store.steampowered.com/app/2114090/Goetita_Turnbased_City/

 

Goetita: Turn-based City on Steam

Goetita: Turn-based city is a turn-based strategy game controlling the element of luck through rational judgment. Survive even in a desperate situation when all your resources are running out with your strategy in the cold and dark city!

store.steampowered.com

 

'턴제제작' 카테고리의 다른 글

그럴듯 하게 만들기  (0) 2020.03.25
시야기반 이동 시스템  (2) 2020.03.22
원거리 공격 만들기  (2) 2020.03.04
버그 수정  (0) 2020.03.01
버그 수정  (0) 2020.02.29

WRITTEN BY
아이고이아

,