원거리 공격

턴제제작 2020. 1. 31. 18:30

 

 일단 캐릭터 하나 가지고 만들어 보자. 실제로 이런 식으로 모든 노드를 다 하는 게 아니라 플레이어 노드에서만 원거리 공격이 가능한지 여부를 확인하는 알고리즘을 만들 거다. 일종에 이를 위한 사전 작업 정도라고 보면 된다. 

 일단 노드들을 죄다 담고 이들 노드에서 래이캐스트를 쏴서 공격 가능한 영역을 만들어 보도록 하자. 

 구글에 검색해 보니까 레이캐스트가 아니라 라인 캐스트를 써야 된다고 한다. 오늘도 새로운 걸 배우는 듯싶다. 

 아그리고 영역을 나타내는 것은 켰으면 다시 꺼줘야 한다. 아마 콜라이더가 중첩돼서 버그가 생기는 모양이다. 

 따로 메커니즘을 복잡하게 만들지 않고 라인캐스트만 써도 충분할 듯싶다. 엄포를 하고 있는 경우에는 한 칸 정도 이동해서 공격한다고 치면 된다. 

 아니다. 엄패의 경우에는 그냥 삭제를 하자. 그냥 공격이 안되게 바꾸는 것이 좋을 듯싶다. 엑스컴 라이크가 아니라 일반적인 턴제 게임처럼 날이다. 그렇다면 확률보다는 어느 정도 확정 타격이 들어가도록 해야겠다. 

 엄패 기능을 넣지 않으면 그냥 턴제 게임이  되는데 이건 좀 생각해 봐야 할 문제인 듯싶다. 그렇다면 워해머 기계교랑 거의 비슷한 류의 게임인데 멤버가 좀 더 많은 게임이 될 듯싶다. 장착 가능한 아이템 수가 두 개로 적다. 

 그냥 엄패를 넣는 것도 그렇게 까지는 어렵지 않을 듯싶다. 그냥 45도 부채꼴을 만들어서 그 영역에 들어오면 공격은 가능하도록 하면 된다. 

 고민의 순간이다. 아 글고 한 칸 범위 내에는 한번 더 움직일 수 있도록 한다던가 이런 이점을 줄 필요가 있을 듯싶다. 아니면 이동하고 공격까지 하는 건 한 칸 범위 내만 가능하고 2칸 범위의 경우에는 이동하는 것만 가능하도록 할 필요가 있다. 그 대신에 검의 경우에는 조인이 걸려서 벗어나려고 하면 공격을 때리는 방식을 쓰면 될 거 같긴 하다. 

 아니면 메카니 쿠스처럼 CP를 추가해서 한칸 범위의 경우에는 CP를 소모하지 않고 두 칸의 경우에는 CP를 소모하게 한다든지 하는 게 좀 필요할 듯싶긴 하다. 

 그냥 엄패는 공격을 못하는 걸로 하고 나머지는 그냥 확정 타격이 들어가도록 해야겠다. 그리고 두 번째 에어리어는 공격을 가서 때릴 수는 없고 이동만 하도록 해야겠다. 

 방어도 안되는데 일방적으로 때리면 먼가 전략성에 문제가 생긴다. 선빵 필승말이다. 

 일단 두번째 영역의 경우에는 근접 공격을 하지 못하도록 수정했다. 이렇게 해야 원거리 무기의 이점이 살듯 싶다. 

 고저차와 엄패가 없다면 멀로 전략성을 담보해야 할지 고민이다. 

 마정석을 만들고 네이티얼을 소환하던 밴티지 마스터 택틱스 처럼 갈까 고민이다. 일종에 네이티얼이 로봇들이 되고 로봇을 소환해서 싸우는 거다. 

 그러면 캐릭터 인터페이스를 바꿔야 할듯 싶긴 하다. 아 쉬발 갈팡 질팡이다. 네이티얼처럼 소환을 하려면 어느 정도 마법물 판타지로 가야 하지 않을까 싶다. 이건 차기작에서 고려해야 할듯 싶다. 차기작으로 은색의 용병이 아니라 밴티지 마스터 택틱스를 만들게 될 판국인듯 싶다. 

 일단 마정석 비슷한걸 만들고 여기서는 방어가 되고 체력이 차도록 해야 겠다. 에너지를 모으면 로봇류를 소환을 할수 있도록 하면 되려나 싶다. 유닛을 밴티지 마스터 수준으로 많이 만들기는 어렵고 그냥 힐러 탱커 윈딜 누커 이런식으로 하나씩만 만들어야 할듯 싶다. 처음에 캐릭터가 1명이 아니라 여러명으로 시작하고 마나를 모으면 지원군을 소환할수 있도록 하는 시스템으로 가야 겠다. 일단 여러명으로 시작해서 대전을 하는 게임으로 가야 겠다. 

 일단 병사를 가지고 시작하지만 추가 생산이 서로 가능한 상태에서 패싸움을 하는 게임이라고 보면 될듯 싶다. 스토리도 거기에 따라 바꿔야 겠다. 의뢰를 받는 용병보다는 이권을 두고 싸우는 조직 폭력배에 가깝도록 말이다. 

 기계를 구지 소환을 하는 이유를 설명할 요소가 필요할듯 싶다. 트럭에다가 실어서 나르면 될텐데 말이다. 기계류의 순간이동 기술이 발달해서 구지 트럭에 바리 바리 싸고 다릴 필요가 없어졌다고 해야 겠다. 머 이런걸 구구 절절히 설명할 필요가 없으니 말이다. 

 아 글고 반격이 가능하도록 해야 하는지 모르겠다. 이게 공격 순서가 돌아오는게 아니라 한번에 다 공격하니 말이다. 적을 죽이지 못한다면 반격을 하도록 하되 근접은 원거리 반격이 안되고 반대로 원거리는 근접에게 반격을 하지 않도록 하면 얼추 밸런스가 맞지 않을까 싶다. 

 그렇다면 미니맵과 로봇이 등장할때 쉐이어를 만드는것이 다음 작업이 될듯 싶다.. 

 로봇류의 경우에는 레벨업이 되도록 하고 스킬은 선택하고 이런 건 자동으로 되게 해야 겠다. 전직 정도만 선택할수 있도록 하고 말이다. 기계교 메카니쿠스도 이런 이원화된 시스템을 가지고 있더라. 

 그냥 고전적인 턴제 전략 게임으로 가야 겠다. 배틀포 웨스 노스 처럼 각각 거점이 있고 거점은 실드라는 방어력 보너스를 주는 식으로 말이다. 다만 베틀포 웨스 노스는 Zot인가 그 바로 옆은 이동을 못하는 특성이 있어서 포위 공격을 당하지 않도록 진을 잘 구성하는게 중요한 게임이다. 벤티지 마스터 텍틱스도 마찬가지다. 이걸 넣으려면 돌아가는거에 따르는 이동 범위 축소가 필요한데 엑스컴식이 이동으로 구현을 해 놓은 거랑 맞지가 않다.

 일단 검을 든 유닛이 서 있는 경우에 그 주변 한칸 범위는 이동을 못하도록 막는게 필요할듯 싶다. 따로 표시는 해 놓지는 않지만 지나가면 멈춰 세우고 한대 치는거 말이다. 그러면 좀 불친절한 게임이 되려나. 일단은 검을든 캐릭터 바로 옆을 지나쳐 가는건 좀 이상하니까 길찾기를 할때 바로 옆은 피해가도록 해야 겠다. 

 그리고 근접 무기의 경우에는 바로 옆에 있으면 공격을 못하도록 하고 이동으로 벗어나려고 하면 한대 갈기고 나서 이동을 하도록 해야 겠다. 기계교 메카니쿠스도 비슷한 방식인듯 싶다. 

 옆을 지나가면 한대치게 되고 지나가는걸 막아버리면 근접 유닛 몇 세워 놓으면 뒤에 원거리 병과를 공격을 못하게 된다. 원거리도 레이케스트 통과하는걸 고려해서 배치하면 되고 말이다. 장애물 같은걸 적절히 이용하면 소수 유닛 길막하고 원거리 화력으로 적을 잡으면 될듯 싶다. 아 그리고 이동을 하기전에 이 위치가 원거리 공격이 가능 한지를 알려주는 걸 만들 필요가 있다. 이것도 기계교 메카니 쿠스의 시스템을 배끼면 될듯 싶다. 

 이런식으로 근접유닛에게 길막을 허용하고 엄패 기능을 없애면 고전적인 의미의 라인 베틀 전투가 된다. 이렇게 되면 현대 전투라고 보기 어렵고 전근대 전투에 가깝게 된다. 그리고 근접 유닛들이 쉽게 녹지 않기 위해서는 실드나 중장갑의 개념리 필요할듯 싶다. 

 고대의 경우에 검병은 자유자제로 부대를 움직일수 있는 전술적 유용성이 있는 병과고 창병은 라인을 갖추고 앞으로 밀면 강력한 힘을 보여주는 병과다. 그 둘의 특성을 적절히 섞어야 할듯 있다. 

 유닛이 생각보다 많이 등장하게 될듯 싶다. 앞 라인의 경우에 5명 정도는 되야 뒤에 공격하는걸 막을 수 있으니 말이다. 

 

 상속을 쓰니까 오히려 할당이 되지 않는 버그가 있어서 그냥 상속을 풀었다. 유니티 자체가 상속이 아닌 컴퍼넌트 패턴을 사용해라고 만든 툴인듯 싶다. 

 똑같은 이름의 함수를 버전이 다르게 만들수 있는 C#의 기능을 활용했다. 

 

 근접 유닛은 뚫고 지나갈수 없는 것과 장애물이 원거리 공격을 막는다는 것을 적절히 활용해 전투를 하는 것이 제작자의 의도다. 물론 게임이란게 유저들이 제작자에  

 확대를 하면 이런식으로 밖으로 벗어나는 문제가 있다. 이걸 보정하면 오늘 작업은 마무리가 될듯 싶다. 

 카메라 관련 속성에서 어떻게 만들었는지 찾아 보는 중이다. 

 올라갔다가 내려가야 하는데 계속 내려가기만 한다. 간단히 끝날줄 알았는데 영 간단치가 않다. 

 백터를 미리 만들어 놔도 그위치가 아닌 엉뚱한 위치에 가 있는다.

 배터 값이 문제가 있는게 아니라 트랜스폼.포지션이 문제가 있더라. 

 슬럼프는 어느정도 벗어났는데 코딩이 잘안된다. 

 아하 높낮이가 다른 오브젝트를 여러개 만들어서 키고 끄면 될듯 싶다. 

 대충 해결했는데 초기값과 확대 한게 살짝 어긋난다. 아 이런 사소한거 고치는데 존나게 시간을 많이 쓴다. 이래가지고 완성이나 제때 하려나 모르겠다.

  카메라 초기값이 문제 였다. 해결했다. 

 원거리는 원거리 캐릭터를 별도로 만들어야 할듯 싶다. 

 일단 근접캐릭터는 원거리 체크를 하지 않고 원거리 캐릭터는 근접 공격을 하지 않도록 옵션을 걸어둘 필요가 있는듯 싶다. 코드 줄수가 많아지니가 머리가 팽글 팽글 돈다. 문득 객체 지향이 코드줄수가 많아지지 않으면 체감이 안된다는 이유를 알듯 싶다. 

 보니까 이미 기반이 되는 코드를 만들어 놯더라. 그래서 쉽게 만들수가 있었다. 

 이제 애니메이션을 만들어야 하는데 어떻게 만들어야 하는지가 기억이 나지 않는다. 

 그전에 캐릭터를 옮겼을때 생기는 오류를 잡아야 할듯 싶다. 

 어렵지 않았다. 이야기 나온김에 코드 정리도 하고 키보드도 알코올로 좀 닦고 그래야 할듯 싶다. 손도 좀 씻고 말이다. 존나게 더럽다. 

 근접 공격과 다르게 타일이 아니라 캐릭터를 클릭해야 공격이 가능하게 만들어야 한다. 근접공격 만드는게 꽤 오랜 시간이 걸린걸 봐서는 이것도 만드는데 조금 시간이 걸리지 않을까 싶다. 

  플레이어도 클릭을 받는것처럼 에너미도 클릭을 받는걸 만드는게 필요할듯 싶다. 에너미가 클릭을 받았을때 원거리 공격이 가능한 경우라면 일단 그걸 에너미나 플레이너나 저장을 해두는게 필요할듯 싶다. 지금은 일단 그 리스트가 플레이어에 있을꺼다. 여튼 그런경우에 커런트 플레이어가 움직이도록 하면 되지 않을까 싶다.

 우선 에너미를 클릭했을때 로그가 찍히는 것부터 만들자.

 동작을 만들었는데 다른 캐릭터의 바운더리 영역이 열리지 않는 알수 없는 버그가 있다. 

 범인은 이안에 있다. 이게 내 결론이다.

 썸띵온을 펄스를 안해줘서 그런거였다. 그다음이 문제인데 이게 동작을 하는동안 다른 플레이어를 클릭을 할수가 있다. 엑스컴의 경우에는 큐에 담아 놔서 동작을 하게 했는지 행동을 미리 지정하면 예약 실행이 된다. 다만 내가 그정도 편의 기능을 제공하는건 엄무 부담이 된다. 그냥 누를수 없도록 막아 놔야 겠다. 

 해결했다. 아 그리고 나중에 다양한 기술들을 추가할꺼를 대비해서 리펙토링을 할 필요가 있는듯 싶다. 

 총 위치만 잡아주면 될듯 싶다. 총위치 잡고 내일을 방어력 보너스를 주는 마정석 같은걸 만들어야 겠다. 

 마지막은 확인 사살 느낌이 나는듯 싶다. 

 공격이 아무때나 되는 버그가 있어서 그거 체크해 주는걸 만들었다. 

 

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

깃헙 계정 만듬  (0) 2020.02.28
버그 픽스  (0) 2020.02.16
원거리 공격  (0) 2020.01.27
편의 기능  (2) 2020.01.23
오류 해결  (0) 2020.01.22

WRITTEN BY
아이고이아

,