2019년 7월 4일 목요일

Unity cr_VariationsUtils app_webview error

AdMob의 Banner 광고를 설정한 이후 일부 기기에서 cr_VariationsUtils Tag의 에러가 발생 되었으며 아래와 같은 app_webview와 연관성이 의심되는 로그가 발생 되었다.

07-04 05:40:30.955: E/cr_VariationsUtils(7201): Failed reading seed file "/data/user/0/com.Company.ProductName/app_webview/variations_seed": /data/user/0/com.Company.ProductName/app_webview/variations_seed (No such file or directory)

이 경우, Banner를 요청하는 시점을 Awake()에 두어 Scene의 Initialization 직후 LoadBanner를 호출하면서 문제가 발생하는 것이였다. 

요청 시점을 Start()로 변경한 뒤 테스트를 하니 발생하던 에러는 사라졌다. 

국비 교육 : 게임 프로그래밍 079일

79일 차 교육 내용 메모를 옮겨 본다.
교재를 이용해 언리얼 교육이 진행됐다.


차원 : 특이점을 구분하기 위한 필요 정보의 개수

1차원 : 점  선상의 1개의 점
2차원 : 선  면상의 선
3차원 : 면  공간에서의 면
4차원 : 시간 (x, y, z, t)


데카르트 좌표계
- x, z 평면의 y 높이

오일러 앵글
- x, y, z 축을 이용해 회전
- 축을 이용한 회전 정보 표현법

오일러각
- 축이 겹칠때 같은 평면상에 놓이게 되고 이때 축이 사라지는 현상
- 짐벌락 : (x, y, z)의 2번 축(y)이 90º면 3번 축(z)이 1번 축(x)과 겹치는 현상

짐벌락 해결을 위해 y, x, z 순으로 각 회전을 계산해 현상을 최소화한다.
(가장 잘 안 쓰는 축을 2번으로 둔다.)


허수
- 제곱했을 시 값이 되는 수, 자연계 존재하지 않는 수

3차원의 정보와 허수를 이용해 회전 값을 계산하는 방식
- 사원수 회전, 쿼터니언


3D 용어 정리
- 버텍스 : 정보를 포함한 점(x, y, z, 색상, 가중치 등)
 (포인트 : x, y, z 위치값)
- 폴리곤 : 버텍스 3개가 모인것, 면의 최소 단위
- 매쉬 : 물체의 최소 단위
- 텍스쳐 : 이미지, 매핑용 이미지
 (스프라이트 : 랜더, 그리기 용도의 이미지)
- 매핑 : 버텍스의 UV좌표에 대응되는 텍스쳐
- 요 : z축 회전
- 피치 : y축 회전
- 롤 : x축 회전


언리얼
- 레벨 개념 = 유니티의 scene 개념
- 좌측의 "모드" 패널에 유용한 기능이 모여있다.
- 기본은 배치모드이며, 칠하기, 랜드스케이프 등의 메뉴가 존재한다.
- 레벨 내 모든 객체(오브젝트)는 액터라 명칭 한다.
- F키는 언리얼이나 유니티나 모두 유용하다. (선택 오브젝트 포커싱)
- 그레이박스 : 직육면체, 원기둥과 같은 간단한 메시데이터를 이용한 레벨 데이터


교재의 내용을 기준으로 3D와 언리얼 엔진에 대한 강의가 진행 됐다.

2019년 7월 3일 수요일

Unity 스토어 열기 & 웹페이지 열기

웹 페이지 열기

Application.OpenURL("https://play.google.com/store/apps/details?id=com.Company.ProductName");

구글 플레이 스토어

Application.OpenURL("market://details?id=com.Company.ProductName");
           market://details?id=패키지명

애플 앱 스토어

Application.OpenURL("itms-apps://itunes.apple.com/app/id0123456789")

2019년 7월 2일 화요일

국비 교육 : 게임 프로그래밍 075 ~ 078일 | 인공지능(AI)

75일부터 78일까지의 교육 내용을 되돌아본다.


윈도우 프로그래밍 환경에서 인공지능에 대한 강의가 이루어졌다.

인공지능의 구현 방식을 소개했다.
- FSM (Finite State Machines)
- HFSM (Hierarchical Finite State Machines)
- BT (Behaviour Tree)

각 인공지능 구현방식에 대한 구현 방식 및 장/단점에 관해서 설명이 됐다.


이 중 FSM의 구현에 중점을 두어 교육이 진행되었다.
- switch 방식과 클래스 포인터 방식 두 가지에 대한 구현방식에 관해 설명 됐다.


이제는 과거에 있었던 많은 국비 게임 교육 중 하나의 과정으로 4일이라는 교육 기간의 강의가 이런 내용으로 진행되었다고 직접 경험한 기록을 남기고자 글을 작성해 본다.

2019년 7월 1일 월요일

국비 교육 : 게임 프로그래밍 078일

78일 차 교육 내용 메모를 옮겨 본다.
FSM의 구현을 진행했다.


몬스터의 상태 4가지를 FSM으로 구현해 보았다.
- 대기 : 현재 위치에서 이동하지 않고 대기한다. 일정 거리 내 플레이어가 접근하면 추적을 한다.
- 추적 : 캐릭터의 위치로 이동한다. 대기 위치에서 거리가 멀어지면 회귀하고, 플레이어와 가까워지면 공격한다.
- 공격 : 캐릭터를 공격해 HP 수치를 감소시킨다.
- 회귀 : 대기 위치에서 일정 거리 멀어지면 대기 위치로 이동한다.

각각의 상태 구현 시 정보를 확인할 수 있도록 화면에 표시하였다.


간단한 몬스터의 AI를 구현해 보았다.
여기까지로 윈도우 프로그래밍을 이용한 인공지능(AI)에 대한 과정이 끝난 것으로 생각된다.

국비 교육 : 게임 프로그래밍 077일

77일 차 교육 내용 메모를 옮겨 본다.
인공지능에 대한 강의가 진행된 것 같다.


상태 패턴을 Switch로 변화하는 방법으로 예제 프로젝트를 구현해 본 것 같다.


그 외 별도의 메모나 작성한 프로젝트 코드가 보이지 않는다.
아마도 수업 시간에 FSM을 계속 구현해 본 것으로 생각된다.

국비 교육 : 게임 프로그래밍 076일

76일 차 교육 내용 메모를 옮겨 본다.
인공지능에 대한 강의가 진행된 것 같다.


FSM
- 상태 클래스가 있다. → 영향을 주는 함수가 들어가 있다.
- Player 영향을 주어 Player을 제어한다.

클래스의 스태틱 멤버 변수
- 클래스에 속하는 단 하나의 변수이다.
- 클래스 내부에서 초기화 시 에러가 난다.
- 클래스 외부에서 전역 변수처럼 초기화해야 한다.
- 정적 변수(스태틱 변수)의 접근은 클래스 명으로 접근이 가능하다.

전적 변수의 활용목적은 인스턴트 간의 공유할 변수를 만들고자 하는 것

스태틱 함수는 인스턴스에 속하는 멤버 함수가 아니라 클래스에 속하는 하나의 함수이다.
- 정적 함수 내부에서는 오직 정적 변수만을 사용할 수 있으며 함수도 정적 함수만을 호출 할 수 있다.
- 스태틱 함수 내에서는 This 포인터를 사용할 수 없다.


FSM 구현 및 구현에 사용되는 스태틱 멤버 변수와 스태틱 함수에 대해 교육됐다.
예제 프로젝트를 진행한 것으로 생각된다.

Unity - Firebase 연동 (Analytics, AdMob)

버전 : firebase_unity_sdk_6.5.0.zip 게임에서 통계 측정 및 광고 추적을 위해 Firebase 을 연동한다. 앞서 [Unity - GPGS 와 Admob 연동 및 배포 준비 작업]  연동 이후에 작업을 진행 한다. 유니...