Recent Posts
Recent Comments
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

일상의 기록

AR 기반 RTS 게임 개발 프로젝트 본문

Portfolio

AR 기반 RTS 게임 개발 프로젝트

Miguel Lee 2019. 3. 5. 01:41

프로젝트 소개

[표 1] 시스템 구조

최근 스마트폰이 널리 보급되면서 게임 분야에서 스마트폰을 이용한 다양한 기술들이 나타나고 있다. 이러한 다양한 기술 중에서 최근 가장 활성화되고 있는 증강현실(AR) 기술을 연구하고, 이를 이용하여 다른 사용자들과 네트워킹을 통해 실시간 게임을 즐길 수 있도록 구현하고자 한다.

현재 시장에 나와 있는 증강현실 기술을 활용한 게임은 대부분 싱글 플레이어 게임이거나, 네트워크를 통해 플레이어 간의 단순 정보만을 주고받는 형태의 게임이 대다수이다. 이러한 시장의 상황을 고려하여 실시간 네트워킹을 통한 멀티 플레이어 게임을 개발하여, 증강현실 기술의 활용도를 높일 수 있을 것으로 보인다.

개발은 Unity 3D와 Vuforia를 활용하여 진행하였으며, 네트워크와 서버 구축은 Unity에서 제공하는 Unet과 php, 구글 클라우드 서버를 활용하였다.

총 개발 기간은 약 6개월이 소요되었다.


게임 시나리오

전투에 참여할 병사를 선택한 뒤, ‘출정’버튼을 누르면 서버를 통해 자동으로 알맞은 사용자를 찾는다. 사용자를 찾게 되면 P2P 형태로 서로 연결이 되며, 각자의 스마트폰에서 인식한 맵 상에서 전투가 진행된다. 각 플레이어는 각자 병사 버튼을 눌러 유닛을 자신의 성문 앞에 소환할 수 있으며, 서로의 유닛의 위치와 정보는 실시간으로 동기화되어 시각적으로 확인할 수 있다. 유닛들은 상대방의 진영을 공격하기 위해 이동한다. 이동하는 도중에 상대방의 유닛을 만나면 서로 공격을 하게 되고, 상대 유닛을 파괴하면 계속해서 상대방의 성문 측으로 이동한다. 상대방의 진영이 무너지면 사용자는 승리하게 되고, 상대방은 패하게 되며, 각 상황에 맞는 보상을 취한다.


플레이어 접속 및 게임 환경 생성

-게임 APP 실행

-스타트 대기 화면에서 터치를 통한 화면 전환

-메인화면에서 유저의 성을 보여주고, 성에서는 자원 채취 가능 (채취한 자원은 후에 게임을 실행할 때 이점으로 작용)

-메인화면에 있는 목공소, 광산, 밀밭에서 일정 시간에 한 번씩 활성화되는 버튼을 클릭하여 자원 획득

-자원을 이용하여 병영에서 병사 업그레이드 및 플레이어가 보유한 캐릭터 중 전장에 나갈 리스트를 선택 가능

-출정’ 버튼을 클릭하여 전투 매칭 대기

-비슷한 레벨의 플레이어와 매칭

-매칭 성공 시 전투화면으로 이동

 

게임 실행

-카메라를 사용하여 게임 환경 세팅(Map Searching)

-일정 크기 이상의 평면 발견 시 해당 평면을 맵으로 지정

-성 두 개(내 성과 상대방 성)와 맵 생성

-식량 게이지가 30에서부터 서서히 증가(100이 최대)

-사용자는 설정한 병사들을 클릭하면 캐릭터들은 사용자의 성문을 통해서 전장으로 출전

-출전한 캐릭터들은 상대방의 성을 공격하기 위해 이동

-전장에서 상대방의 캐릭터와 플레이어의 캐릭터가 사정거리 내에 진입했을 시 상대의 캐릭터를 향해 움직이고, 공격 실행 (각각의 캐릭터는 고유의 체력과 능력치를 가진다.)

-캐릭터간 충돌에서 승리 시 계속해서 상대방의 성으로 이동

-상대방의 성까지 도착하면 상대방의 성을 공격

-제한 시간 내에 상대방의 성의 체력을 모두 소진시키면 승리

-승패가 결정되면, 플레이어의 화면에 승패를 출력하고, 승패에 따른 포인트를 지급

-확인 후 다시 메인 화면으로 전환


실행 화면


[그림 1] 어플리케이션 실행 후 대기 화면

어플리케이션을 실행하면, 카메라가 실행되며 카메라 영상 위로 게임 로고와 함께 구름 애니메이션이 실행된다.

[그림 2] 플레이어 성 관리 화면

플레이어 성 관리 화면에는 광산, 곡창, 목공소 세 가지의 자원 생산 건물과, 병사 업그레이드와 출정할 병사 목록을 관리하는 병영, 그리고  전투 시작을 위한 출정 버튼이 배치되어 있다. 

[그림 3] 자원 건물 UI

   자원 건물을 터치하여 진입한 화면. UI위에 건물에 대한 간략한 설명과 일정 시간마다 활성화되는 자원 획득 버튼이 배치되어 있다.              획득한 자원을 활용하여 건물의 생산량을 증가시킬 수 있다.

[그림 4] 자원 획득 UI

   자원 버튼을 터치한 결과, 좌측 하단의 자원 목록에 해당 자원이 증가하였으며, 자원 획득 버튼이 비활성화됨과 동시에 해당 버튼에 남은    자원 생산 시간이 출력된다.

[그림 5] 병사 관리 화면

병영 건물을 터치하여 진입한 결과. 전투시 사용할 병사 목록을 편집할 수 있으며, 보유중인 모든 병사 목록을 확인할 수 있다. 가지고 있는  자원을 일정량 사용하여 병사의 능력을 업그레이드할 수도 있다.

[그림 6] 출정 버튼 처치 시 매칭 시작

화면 중앙 하단의 출정 버튼을 터치하여 서버가 중계하는 P2P 매칭에 진입한다.

[그림 7] 게임 매칭 대기 화면

실시간 매칭에 진입한 후 상대의 접속을 기다리는 화면이다. 두 명의 플레이어가 매칭을 요청하면 서버에서 각 플레이어의 아이디와 큐 진입 순서를 기반으로 두 플레이어를 매치하여 전투 화면으로 전환시킨다.

[그림 8] 전투 화면

  전투가 시작되면 일정 크기 이상의 평면에 전투 맵이 자동으로 생성된다. 병영에서 선택한 네 명의 병사가 버튼 형태로 화면 중앙 하단에       출력되며, 해당 버튼을 터치하면 일정량의 식량(노란색 바)을 소모하여 병사를 자신의 성문 앞에 소환한다.

[그림 9] 상대 플레이어 병사들과의 전투

자신이 소환한 병사와 내 성의 체력은 초록색, 적 병사와 성의 체력은 붉은색으로 보여진다. 이는 양 플레이어에게 동일하게 적용된다. 모든 병사는 생성과 동시에 적 성으로 전진하며, 이동 중 적 병사를 만나면 해당 병사에게 접근하여 전투를 시작한다.

[그림 10] 상대 플레이어 성 공격 화면

병사가 전투를 거치며 생존하여 적 성에 도착하면, 적 성을 공격하기 시작한다.

[그림 11] 승리 화면

적 성의 체력을 모두 소모시키면 승리한다. 승리한 플레이어의 화면에 승리 메시지가 출력된 후, 성 관리 화면으로 전환된다.


[그림 12] 패배 화면

내 성의 체력이 모두 소모되면 패배한다. 패배한 플레이어의 화면에 패배 메시지가 출력된 후, 성 관리 화면으로 전환된다.



프로젝트 파일

프로젝트 전체 파일 : https://drive.google.com/open?id=1AgbxcuX4RsfDsYFTGVINT-ceeJcdG5la

안드로이드 APK 파일 : https://drive.google.com/open?id=19Opa5KEU9yB3cHHMPzhwDYHE3h-T95It

타겟 머신은 갤럭시 S8과 S8+ 기준으로 개발되었다.