Machineboy空
피크민.. 위치 기반 AR 게임에 활용된 GPS,GIS 관련 개념들 본문
* 움직이는 증강 현실 게임 개발 - 마이클 랜햄 에서 발췌해 작성하였습니다.
Niantic의 real-wold adventure game 역사
Ingress
- It's time to Move - 파일:5a0a264482f0b4b04b9d546348517939e761ac8
namu.wiki
인그레스 - 포켓몬 고 - 피크민
성공 요인과 특징
- 위치기반
- 플레이어가 실세계에서 움직이면 기기의 GPS가 게임 내 플레이어의 위치를 실시간으로 업데이트하고 가상 위치로 이동해서 가상 오브젝트 또는 물체를 찾거나 상호작용할 수 있다.
- 실세계에서 플레이어 위치를 추적한 후 게임 속 가상 세계 위에 덧씌우면 플레이어는 매우 강한 수준의 몰입감을 느끼게 된다. 실제로 많은 실세계 어드벤처 게임들은 게임 시작 전에 플레이어들에게 경고의 메시지를 내보낸다. 실세계 의 게임을 즐기다가 너무 몰입해서 쉽게 방지할 수 있는 사고를 피하지 못해 다치는 경우가 매우 빈번했기 때문이다.
- 실세계를 게임의 가상 세계에 매핑하는 작업은 일반적인 모바일 게임 개발과는 다른 도전 과제들을 가지고 있다. 지도 인터페이스의 개발은 물론, 가상 아이템으로 세계를 채우는 작업은 고급 GIS (Geographic Information System)기술을 요한다. 많은 개발자들이 유니티상에서 구현하는 GPS 및 GIS의 개념과 지도 렌더링을 접한 적이 없거나 충분히 경험하지 못했다.
- 증강현실
- 기기의 카메라를 통해 실세계와 상호작용한다. 이 기술은 실세계를 배경으로 두고 가상의 공간이나 물체와 상호작용할 수 있게 해준다.
- 모바일 기기에서의 AR 경험은 일반적으로 기기의 카메라 화면을 배경으로 사용해서 가상 환경을 보여준다. 특별한 AR 게임이나 애플리케이션의 경우에는 형상을 감지하는 복잡한 이미지 처리 알고리즘을 가진 경우도 있다. 형상이 감지되면 가상 현실 속 그래픽이나 게임 옵션에 연동돼 표시된다.
- 어드벤처 게임
- 플레이어는 아바타가 돼서 탐험을 하고 퍼즐을 푸는 미션들을 해결해나가며 궁극적으로 설정상에서 제시하는 목표를 이룬다.물론 이런 정의는 다양한 모습을 한 타 실세계 장르 게임들까지 광범위하게 포함시키는 느슨한 것이지만, 이 책의 목적을 위해 느슨한 정의를 그대로 사용하겠다.
- 일반적으로 어드벤처 게임이란 퀘스트를 통해 구성된 스토리를 탐험하고 마주치는 퍼즐을 풀어가며 게임의 엔딩을 보는 게임을 말한다. 하지만 최근 실세계 어드벤처 게임들은 퍼즐풀기와 퀘스트보다 탐험에 중점을 둔다. 그래서 요즘 실세계 어드벤처 게임들은 예전 어드벤처 게임들보다 롤플레잉 게임(RPG, Role-Playing Game)에 더 가깝다.
*MMO(massively multiplayer online)
플레이어 위치 매핑 - 기본 개념 1GIS, geographic information system
- GIS, geographic information system
- 지도의 역할을 하는 지리적 데이터가 수집, 저장, 처리, 분석, 조종되는 시스템이다.
- 소프트웨어 어플리케이션, 하드웨어, 툴, 과학, 서비스 모두를 아우르는 개념으로 성장해왔다.
- 구글 맵스는 근대 GIS 활용의 가장 좋은 예제라고 할 수 있다.
- 매핑
- 컴퓨터 발전과 함께 GIS를 활용해 효율적으로 동적인 지도를 만들 수 있게 됐다.
- 손으로 그린 전통적인 지도와는 다르게 동적으로 그려진 지도의 경우 층(layer)로 구성된 영역 데이터가 길, 주요 장소, 공원, 경계선, 지형, 물 등을 구성하고 있다. 구글맵스의 사용자들은 자신이 볼 수 있는 층을 개별적으로 선택할 수는 없지만 그 안에 분명히 존재하고 있다.
- 정적 매핑(static mapping): 구글맵스, 빙과 같은 GIS 제공자들은 흔히 지도를 여러 개의 줌 단계로 그려낸 후 그려진 지도를 정적인 이미지 타일로 잘라낸다. GIS 서버는 이 타일들을 사용자에게 보여준다. 이 방식은 성능 면에서 효과적이지만, 도형이나 라인, 주요 지점 추가를 제외한 커스터마이징과 스타일 변경 등의 기능은 제한적이다.
- 동적 지도: 개발자, 혹은 제공자로 하여금 데이터의 스타일과 기호화를 조절할 수 있는 옵션을 제공한다. 예를 들어 특정 지도에서 공원이 초록색이 아닌 파란색으로 보이길 원한다면 변경이 가능하고, 이런 요소들이 동적 지도가 제공하는 유연성이다.
- 구글맵스의 좋은 점은 요청과정에서 맵 레이어의 스타일을 동적으로 변경할 수 있다는 것이다.
- https://mapstyle.withgoogle.com/
- 좌표시스템
- 많은 사람들이 위도와 경도를 사용하는 좌표 시스템은 알고 있지만 다른 타입의 좌표 시스템이 있다는 것을 모르는 경우가 많다. 우리가 표준이라 알고 있는 위도와 경도도 많은 변형드링 있다. 이 책에서는 구글 맵스를 사용하므로 우리는 WGS 84를 사용할 것이다.
- 지도 투영(map projection) - 웹 메르카토르 vs 겔 피터스
- 지도를 그릴 때 가장 근본적인 문제 중 하나는 3D로 구성돼 있는 세계를 2D로 표현하는 것이다.
- 초기 지도 제작자들은 이 문제를 해결하기 위해 구체에서 나온 빛을 원통형의 종이에 투영한 후 윤곽선을 따라 그리는 방법을 사용했다. 그런 후 종이를 펴면 2D로 된 지구의 모습이 생기는 것이다. 현재도 이와 유사한 방법을 사용해서 지도를 그리고 있다. 양극으로 갈수록 지도가 일그러지는 문제가 있지만 일반적인 지도로서는 널리 사용되고 있다.
- 양극의 일그러짐을 완화한 겔 피터스와 같은 좀 더 발전된 투영 방식도 개발됐다.
- 하지만 우리는 구글 맵스의 기준을 따라 구글 웹 메르카토르, 줄여서 웹 메르카토르를 사용할 것이다.
Styling Wizard: Google Maps APIs
To import, paste in your JSON. When importing we reorder and rewrite the JSON, which means it's not going to look the same on the other side. You have been warned. Import JSON Invalid JSON. Unable to import.
mapstyle.withgoogle.com
Styling Wizard: Google Maps APIs
To import, paste in your JSON. When importing we reorder and rewrite the JSON, which means it's not going to look the same on the other side. You have been warned. Import JSON Invalid JSON. Unable to import.
mapstyle.withgoogle.com
플레이어 위치 매핑 - 기본 개념2 GPS, global positioning system
- GPS, global positioning system
- 매 시간마다 지구를 두 바퀴씩 공전하는 24개에서 32개의 인공위성 네트워크를 말한다.
- 공전하는 인공위성들은 지리적 신호를 시간 정보와 함께 송출하며, 인공위성을 볼 수 있는 위치에 있는 지구상의 GPS 기기들이 이를 감지한다. 기기가 인공위성으로부터 받아들이는 신호의 개수가 많을수록 위치의 결과는 더 정확해진다.
- 데이텀(datum)
- GPS가 인공위성으로부터 받은 신호를 사용 가능한 좌표로 변환할 때 사용하는 좌표 변환 시스템
- 모든 GPS기기는 WGS 84를 표준으로 한다.
- 위도/경도
- 기본적으로 WGS 84 데이텀 형식으로 위도와 경도 좌표를 출력한다.
- 고도
- 기기의 위치가 해수면에서 얼마나 떨어져 있는지를 의미한다.
- 하지만 대부분의 모바일 GPS 기기는 고도를 지원하지 않는다.
- 정확도
- 기기가 위치를 판단할 때 생기는 오차의 범위를 나타낸다.
- 신호를 받아들이는 인공위성의 숫자가 많을수록 위치의 계산이 더 정확해진다.
Geospatial Analysis I: Vector Operations
Chapter 7 Geospatial Analysis I: Vector Operations In Chapter 6 "Data Characteristics and Visualization", we discussed different ways to query, classify, and summarize information in attribute tables. These methods are indispensable for understanding the b
saylordotorg.github.io
GPS Simulation
GPS 서비스를 테스트하는 것은 꽤 어려운 일이다. 물론 CUDLR을 구성해 기기에서 게임이 실행될 때 실시간 업데이트 정보를 볼 수 있지만 이 방식도 나름의 제한이 있다. 궁극적으로는 유니티 에디터상에서 게임 오브젝트가 어떻게 GPS 서비스를 처리하는지 테스트할 수 있는 방법이 가장 좋다. 이렇게 하면 집이나 사무실 주변을 서성이지 않아도 게임이 어떻게 돌아가는지 볼 수 있다. 이를 위해 GPS 서비스에서 위치 값을 시뮬레이션함으로써 테스트가 가능해진다.
GPS 위치 서비스에 추가된 시뮬레이션 서비스는 단순한 시작점 오프셋(origin offset)방식을 사용해서 데이터 포인트를 생성한다. 이 접근법을 사용하면 직선 이동이나 코너를 도는 움직임 같은 간단한 이동 패턴을 만들 수 있다.
두 지점 간의 거리 구하기 - 하버사인(harversine)
유니티는 2D와 3D 공간에서 두 지점의 거리를 계산하는 데 뛰어나다. 하지만 우리의 지도 좌표는 구체(지구) 위의 소수점 각도다. 구체 위 두 지점의 거리를 올바르게 계산하려면 구체 위에 선을 그려 거리를 계산해야 한다.
위 그림에서 보듯이 좌표 지점 P와 Q 사이의 거리는 직선이 아닌 호(arc)다.
u와 v 사이의 거리를 측정한다고 할 때, 지구 위 u 도시에서 v도시로 비행기를 타고 날아간다면, 비행사는 어떤 계산 방식으로 기름값을 정할까?
지도 위 두 좌표 지점의 거리를 올바르게 계산하기 위해서는 다음 그림에 있는 하버사인(harversine)이라는 공식을 사용한다.
방정식이 위협적으로 보이겠지만, 새로운 Math라이브러리에 공식을 넣어 활용하자!
GPS의 정확도, 삼변측량(trilateration)
GPS의 정확도가 플레이어와 월드 사이의 상호작용에 큰 영향을 미치기 때문에 시간을 할애해서 GPS가 어떻게 위치를 계산하는지 알아보자.
GPS 기기는 지구를 공전하는 24~32개 인공위성 네트워크인 GNSS(Global Navigation Satellite System)을 사용한다. 이 인공위성들은 매 12시간 마다 지구를 한 바퀴씩 돌면서 시간 정보가 담긴 위치 데이터를 마이크로웨이브 신호를 사용해 전송한다. GPS 기기에서 시야가 확보된 인공위성들로부터 신호를 송수신한다. 기기에 있는 GPS 소프트웨어는 얻어진 값을 사용해서 거리를 계산하고, 삼각 측량을 통해 기기의 위치를 알아낸다. GPS가 볼 수 있는 인공위성이 많으면 많을수록 계산은 더욱 정확해 진다.
'많은 인공위성을 볼 수 있고, 거리를 정확하게 잴 수 있으니 정확도가 매우 높아야 하는 것 아닌가?'라고 생각할 수 있다. 맞는 말이지만 계산을 방해하는 몇 가지 요소들이 있다. 다음 리스트는 거리 계산을 통해 GPS 추적을 할 때 고려해야 할 방해 요소들이다.
- 인공위성 시계 오프셋(satellite clock offsets): 인공위성은 원자 시계를 사용해 일반인들에게 일정 수준의 정확도를 제공한다. 미국이 여기에 오프셋을 더해 의도적으로 정확도를 낮춘다.
- 대기 상태: 날씨와 구름이 신호에 영향을 줄 수 있다.
- GPS 리시버의 시계: 기기 시계도 정확도에 영향을 줄 수 있다. 모바일 폰 등은 원자 시계를 사용하지 않는다.
- 신호 장애: 인공위성 신호는 높은 빌딩, 벽, 지붕, 다리, 터널 등에 막힐 수 있다.
- 전자기장: 전기 줄과 다른 마이크로웨이브 등이 신호의 경로에 영향을 미칠 수 있다.
- 신호 바운스(signal bounce): GPS 추적의 가장 큰 문제는 신호 바운스다. 빌딩, 금속 벽 등에 시그널이 반사될 수 있다.
3D 월드 공간에 좌표 투영하기
지도 좌표를 x,y 지도 타일 이미지 공간에 투영한 후 월드 공간으로 변환한 것이다.
위치 기반 게임의 어려움
- GIS 매핑 서비스
- 지도에 위치를 표시하기 위해 어떤 방법을 사용할지 생각해야 한다.
- 위치 데이터
- 위치 기반 데이터에 접근할 수 있는 방법을 생각해야 한다.
- 멀티플레이어 지원
- 다른 장르와 달리 위치 기반 게임은 시중에서 구할 수 있는 멀티플레이어 서비스를 그대로 사용할 수 없다. 위치 기반 게임은 지속적으로 연결돼 있어야 하고, 물리적으로 일정 거리 내에 있을 때만 상호작용을 허락해야 한다.
https://docs.unity3d.com/kr/2018.4/Manual/UNet.html
멀티플레이어 및 네트워킹 - Unity 매뉴얼
이 섹션에서는 멀티플레이어 프로젝트를 만드는 방법의 개요 및 구체적인 레퍼런스를 다룹니다.
docs.unity3d.com
https://doc.photonengine.com/pun/current/getting-started/pun-intro
Pun 2 Introduction | Photon Engine
Photon Unity Networking (PUN) is a Unity package for multiplayer games. Flexible matchmaking gets your players into rooms where objects can be synced
doc.photonengine.com