-
AR Slime Roulette유니티/AR Slime Roulette 2021. 4. 4. 13:02

스마트폰을 주로 이용하는 AR은 사용하기 편하다. VR로 프로젝트를 하고 느낀점은 별도의 VR기기가 필요하며 휴대성이 부족하다는 것이었다.
VR 프로젝트를 하며 정말 재미있었고 좋았고 신기하면서 새로운 세상을 경험했지만
거의 모든사람이 가지고있는 스마트폰을 이용하는 AR에 눈길이 가는것은 어쩔 수 없었다.
그런 생각이 들면서 간단한 AR 게임을 만들어 출시하고 싶다고 생각해 AR Slime Roulette을 만들었다.

해적룰렛 컨셉은 간단한 내기한판할 수 있는 보드게임이 어떨까 생각했고
그 중 해적룰렛이라는 게임이 AR에 어울리지 않을까해서 해적룰렛같이 만들기로 결정했다.
대신 캐릭터는 우주에서 튀어나온 슬라임을 컨셉으로 결정해 만들었다.
Unity 2019.4.5f1 버전을 사용했고 AR Foundation 4.1.1 버전을 이용했다.
코로나 시대니까 네트워크를 이용해 각자의 집에서 플레이 할 수 있게 했다.
1. 결과
AR Slime Roulette 영상 게임 시작시 먼저 바닥을 탐지하며 우주가 열린다.
슬라임통을 우주의 원하는 부분에 터치해 설치 할 수 있다.
방에 들어온 모든 사람이 통을 설치하면 왼쪽 상단의 모든 플레이어 이름이 초록색으로 된다.
이 상태일 때 방장은 게임을 시작할 수 있다.
게임 방식은 한턴당 한사람이 버튼을 누를 수 있으며
버튼을 누르면 다음 사람에게 턴이 넘어간다.
걸리지 않으면 버튼은 초록색으로 변경되고
걸린다면 빨간색으로 버튼이 변경되고 슬라임이 날라가면서 폭죽이 터진다.
구글플레이 주소 : play.google.com/store/apps/details?id=com.JDG.SilmeRoulette
AR Slime Roulette - Google Play 앱
최대 4인 플레이가 가능합니다. < 게임 방식 > - 방 만들기 1. 룸네임과 닉네임을 적는다. 2. 방 생성을 원하면 화살표 버튼을 터치한다. 3. 방 입장을 원하면 집 모양 버튼을 터치한다. - 게임하기 1.
play.google.com
2. 제작과정
- 로비화면



메인화면 오브젝트(왼쪽)와 UI(가운데) 완성된 메인화면(오른쪽) 로비화면은 간단하게 게임이름과 게임에 쓰이는 캐릭터를 배치하고
네트워크를 이용하는 게임이므로 방제목과 닉네임을 입력해 접속하는 UI를 만들었다.
맨밑에있는 버튼중 집표시가 있는 오른쪽 버튼으로 방을 생성하고 왼쪽 버튼으로 방에 들어간다.
이미 같은방 이름이 있는 경우 방을 생성하지 못한다. 닉네임을 입력해야 방에 들어갈 수 있다.
- AR Foundation
유니티의 AR Foundation을 이용해서 만들었다.
안드로이드 출시를 목표로하고 있었고 AR Foundation은 ARCore를 이용하기 때문에
Unity에서의 ARCore 설정이 필요했다. 아래 링크의 2019.3 and 2019.4 유니티버전의 빌드세팅을 참고했다.
Unity로 Android 11 용으로 빌드 | ARCore | Google Developers
- Interaction
AR Foundation으로 어떻게 구현해야할지 참고하려고 AR Foundation의 Github에 들어가서 뭐가있나 찾아봤다.
그랬더니 AR에서 여러 오브젝트와 상호작용할 수 있는 Interaction이라는 항목을 발견해 설명을 읽어봤다.
오브젝트를 이동, 회전, 크기조절 할 수 있는 기능이었다.
슬라임통을 회전할 필요가 있으므로 이 기능을 사용하기로 했다.
아래는 Interaction 설명부분과 AR Foundation Github 링크다.

AR Foundation Github의 Interaction 설명 Unity-Technologies/arfoundation-samples
Example content for Unity projects based on AR Foundation - Unity-Technologies/arfoundation-samples
github.com
- XR Interation Toolkit
XR Interaction Toolkit | XR Interaction Toolkit | 0.9.4-preview
The XR Interaction Toolkit package is a high-level, component-based, interaction system. It provides a framework that makes 3D and UI interactions available from Unity input events. The core of this system is a set of base Interactor and Interactable compo
docs.unity3d.com
Interation의 설명에 보면 XR Interation Toolkit을 사용한다고 나온다.
위는 XR Interation Toolkit에 대한 설명이 있는 링크이다.

XR Interation Toolkit에 대한 설명 요약하면 Interaction Manager 컴포넌트를 가지는 오브젝트를 만들고
상호작용할 오브젝트에 위와같은 Interation 관련 컴포넌트를 추가해
Interaction Manager 변수에 추가해주면 된다.


회전 Interation 스크립트에 Interaction Manager를 추가해준 모습(왼쪽), 다양한 상호작용 스크립트들(오른쪽) 이 프로젝트의 경우 Interation Manager 컴포넌트는 AR Session에 추가해주었다.
그리고 선택, 회전 , 크기조절 Interation 스크립트에 Interaction Manager로 AR Session을 추가했다.
이렇게해서 슬라임통을 선택해 회전하거나 크기를 조절할 수 있게 됐다.
- Photon View와 소유권
이번 프로젝트에서는 한방에 슬라임통 오브젝트가 하나있고 그 오브젝트를 조작하는 방식으로 만들었다.
한 사람이 오브젝트를 회전시키면 다른 사람한테도 똑같이 회전되도록해서
다른 사람이 플레이하는 장면을 모두가 볼 수 있도록 하고 싶었다.
Photon Network의 Photon Transform View를 이용해 Rotation 상태를 같이 공유할 수 있게 하려고 했다.
하지만 다른 사람이 계속 통을 회전시켜도 상태는 방을 만든사람의 상태로 돌아갔다.

포톤네트워크의 소유권에 대한 설명 Photon Network에 들어가서 찾아보니 소유권이라는 개념이 있고
인스턴스를 생성한 클라이언트가 소유자이며 객체는 하나의 클라이언트에서만 제어된다고 한다.
따라서 방을 만든 사람이 슬라임통을 생성했고 소유권이 방장에게 있어서 방장의 상태를 따라가는 것이었다.


Takeover 설정과 소유권을 넘겨주는 스크립트 위의 설명대로 Ownership Transfer를 Takeover로 변경하고
한 사람의 턴이 끝나면 소유권이 다음사람에게 넘어가는 방식으로 변경했다.
그러고 난 후에 현재 턴인 플레이어가 회전시키면 모든 사람에게 그 상태가 같이 보였다.
소유권을 가진 사람이 회전시켰으므로 다른 사람에게도 그 상태가 공유됐다.
아래는 소유권과 관련된 설명이 있는 링크이다.
소유권(Ownership) 양도 | Photon Engine
MULTIPLAYER REALTIME PUN BOLT QUANTUM COMMUNICATION CHAT VOICE SELF-HOSTED SERVER 멀티플레이를 간단하게 실현합니다! Photon Realtime 인디/프로 개발자 누구나 실시간 멀티 플레이어 게임을 개발하여 세계로 진출할
doc.photonengine.com
3. 소감
첫 AR 프로젝트이자 처음으로 출시한 프로젝트이다.
AR Foundation이 정말 편하게 만들 수 있도록 나왔구나를 느꼈다.
이번에 사용한 Interation의 기능도 컴포넌트들을 붙이고 붙여서 공식문서를 보고 설정하면 바로된다.
이 외에도 다양한 기능들이 있어 자신이 기획한 프로젝트에 맞는 기능이 있나 찾아보고 있으면 바로 사용하면 될 정도다.
AR의 가장 장점인 점은 카메라에 비춰지는 현실이 그대로 맵이 된다는 점이다.
현실이 이미 레벨디자인을 다 해놓은 느낌이다.
바닥을 탐지해 원하는 곳에 슬라임통을 설치했던 것 처럼 현실을 그대로 사용한다.
바닥탐지만을 이용해서는 더 정교하게 현실을 맵으로 사용할 수 없겠지만 앞으로 더 발전한다면
더 유용한 어플리케이션을 만들 수 있을 거라고 생각한다.
이 프로젝트를 하면서 카메라에 들어오는 정보를 분석하고 가공하는 컴퓨터비전에 더욱 관심을 갖게 됐다.
프로젝트하기 전에도 OpenCV도 해보고, 딥러닝을 이용한 컴퓨터비전 책이나 강의를 봤었다.
이런 3D 오브젝트를 그려주는 것까지는 못하겠지만 카메라로 들어오는 이미지를 다룬다는 것에 매력을 많이 느꼈다.
그 중에서도 요즘 성능이 나날이 좋아지고 있는 스마트폰을 이용한 이미지 처리에 관해서 관심이 많아졌다.
앞으로는 모바일 앱 공부를 주로하면서 앱 제작의 기초를 탄탄히하고
그 위에 이미지처리에 관한 기능을 얹어놓는것을 목표로 열심히 공부해야겠다.