Unity

Unity) Realm Rush Defense Game

Todah 2023. 10. 16. 21:00
반응형

1. 게임 디자인

- 특정경로에 따라서 적이 이동하고, 이에 맞춰 플레이어가 전략적으로 타워를 배치하는 형식의 디자인을 채택했다.

 

- 플레이어가 느낄수 있는 경험(전략, 전술적 타워배치)과 게임의 목표(한정된 자원으로 스테이지를 클리어하기), 핵심리텐션 요소(레벨 디자인)들을 정했다.

 

2. 사용한 기술

 

> 그리드 스내핑(Grid Snapping)

편집기를 설정해서 개체가 월드에서 움직일 때 고정된 증가량으로 이동해 그리드에 스내핑할 수 있도록 설정하는 것.

Unity 2D의 타일맵과 유사한 방식이다.

 

 

> 경로찾기 알고리즘

- 보통 경로찾기 알고리즘에서 사용하는 대표적인 알고리즘의 BFS, 다익스트라, A* 알고리즘인데, 여기서 보편적으로 널리 사용되는 BFS를 채택했습니다.

 

 

> 너비 우선 탐색 알고리즘(BFS)

- 기본적으로 인접타일들과의 트리구조를 원형으로 탐색을 전개한다.

- BFS는 Queue 라는 별도의 저장공간에 다음에 검사해야 할 순서를 지정하여 저장해놓고, 순서대로 노드를 뽑아서 검사하는 방식이다.

 

 

3. 내가 가진 의문점들에 대한 해결

 

- 이전에 내가 사용했었던 BFS와 조금 달라서 헷갈리는 부분이 있었다. 이 강의에서는 도착점에서 출발점을 역으로 추적해서 최적의 경로를 계산했다. 

 

- 약간 헷갈림이 있었지만 결국 BFS로 구한 경로는 최단경로일 수 밖에 없다는 것이 결론이었다. 왜냐하면 출발점으로 부터의 거리를 특정 파라미터씩 늘려가며 모두 순회하는 것이기 때문이다. 확실히 깊게 이해하고 있지않으면 조금만 활용방법이 바뀌어도 한눈에 잘 들어오지 않는다는 것을 느꼈다.

 

  • 원칙
    • 수준(Level)이 낮은 노드를 우선으로 방문
    • 같은 수준의 노드들 사이에서는 부모 노드의 방문 순서에 따라 방문,
      왼쪽 자식 노드를 오른쪽 자식보다 먼저 방문
    • 한 노드를 방문했을 때, 나중에 방문할 노드들을 순서대로 기록해 두어야함
  • 하나의 노드를 방문했을 때 나중에 그 노드의 자식 노드들을 방문하기로 해 두고 같은 수준에 있는 다른 노드들(직접 연결된 노드말고) 을 우선 방문해야하기 때문에 재귀적인 성질을 갖지 않는다.
  • 선입선출 성질을 가지고 있기 때문에 자료구조는 를 사용

 

#참조

https://nulls.co.kr/graph/141

 

 

[그래프] 27. BFS로 찾은 경로가 최단 경로인 이유

BFS 알고리즘을 이용한 predecessor 방식이 진짜 최단 경로가 맞는지 어떻게 확신할 수 있을까? 이번 장에서는 증명해보겠다.   이것을 이해하기

nulls.co.kr

https://www.geeksforgeeks.org/shortest-path-unweighted-graph/

 

Shortest path in an unweighted graph - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

 

4.  전체적으로 느낀점

- 이전에 혼자 기획할때는 게임의 틀만 디자인하고 필요한 요소들은 그때그때 찾아서 가져다 쓰는 방법을 사용했었는데 확실히 시작할때부터 핵심적인 요소들을 전부 고정해두고 진행하니까 필요한 부분에서 수정하기가 용이했다.

 

 예를 들어 적이 출발점에서 도착점까지 이동하는 방법을 BFS를 사용한다고 고정했을때, 적의 경로를 가로막으면 적들이 바보가 되는 현상이 있었다.

 이를 해결하기 위해 경로를 막는 타워를 적들이 부수는 기능을 추가하려고 했는데, 여기서 어떤 타워를 부술지에 대한 고민이 생겨서 다익스트라 알고리즘의 최소비용 부분을 활용해서 해결한적이 있었다.

 

 

> 실제 구현한 게임

https://sharemygame.com/@UnknownBird/project-defense-rush

 

Play Project Defense Rush in your Browser | ShareMyGame

Key C : Load coordinates

sharemygame.com

 

반응형

'Unity' 카테고리의 다른 글

Unity) RayCast  (0) 2023.10.18
Unity) Draw gizmo selection  (4) 2023.10.17
2023.02.28 Cloud Adventure  (0) 2023.05.29
Unity) SWSM(Summoners War Stat Maker) Ver 3.2  (0) 2022.12.25
Unity) SWSM(Summoners War Stat Maker) Ver 2  (0) 2022.10.31