레이블이 국비 교육인 게시물을 표시합니다. 모든 게시물 표시
레이블이 국비 교육인 게시물을 표시합니다. 모든 게시물 표시

2019년 9월 19일 목요일

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

131일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 VR 포트폴리오 작업을 진행했다.


싱글턴을 이용한 매니저 제작
- 데이터 관리를 위한 table loader
- Scene 이동을 위한 Scene controller


이전과 마찬가지로 교육 시간에 포트폴리오 작업을 진행한 것 같다.
메모 내용으로 보아 관리 클래스를 제작한 것으로 보인다.

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

130일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 VR 포트폴리오 작업을 진행했다.


네비매쉬 에이젼트의 SetDestination은 한번 지정하면 지정된 이동 값으로 목표 지점까지 이동한다.
즉 apdote에 넣을 필요가 없다. 1회 입력 시 저장해두고 이동

네비매쉬 에이젼트를 isStopped = false / true 로 끄고 켤 수 있다.


교육 시간에 포트폴리오 작업을 진행한 것 같다.
메모 내용으로 보아 네비매쉬를 이용한 Monster 이동 처리 작업을 진행한 것 같다.

2019년 9월 18일 수요일

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

129일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 VR 포트폴리오 작업이 진행됐다.


UI 정보 출력
- 몬스터 머리 위 UI 띄우기
- 월드 좌표를 이용해 UI Scale 되도록 캔버스를 구성해 화면에 띄운다.


메모 내용으로 보아 별도의 교육 없이 VR 포트폴리오 작업을 진행한 것 같다.
UI를 이용해 몬스터 이름 생성하기 기능을 구현한 것 같다.

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

128일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 VR 포트폴리오 작업이 진행됐다.


포트폴리오 작업
- 피격 시 처리, 공격 행동 등에 대한 개인 작업 진행.


이외 작성된 교육과 관련된 메모는 없는 것으로 보아서, 온종일 포트폴리오 작업을 진행한 하루였던 것 같다.

2019년 9월 17일 화요일

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

127일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티의 오디오 믹서에 대한 내용이 메모로 작성되어 있다.


오디오 믹서의 FindMatchingGroups(" ~ ");
- " ~ "에 작성된 오디오 그룹의 본체 및 하위를 배열화한다.
- ~ 에는 group의 name이 작성되며, 작성된 group을 기준으로 하위 그룹을 배열로 만드는 식이다.

사운드 믹서에서의 변수 등록을 주의하자


ToString("0,##"); 형태로 표시되는 정보를 제어할 수 있다.


이처럼 사운드 믹서에 대한 짧은 내용과 String 처리에 대한 내용이 메모로 작성되어 있었다.
별도로 작성된 Sample 프로젝트도 없는 것으로 보아 남은 시간 VR 포트폴리오를 진행하지 않았나 싶다.

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

126일 차 교육 내용 메모를 옮겨 본다.
교육은 했지만, 작성된 메모 내용이 없다.


아마도 VR 포트폴리오 작업을 진행했을 것 같다.

메모와 샘플 프로젝트가 없는 것으로 보아 각자 포트폴리오를 작업하는 것으로 교육을 진행한 것으로 생각된다.


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

125일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 VR 포트폴리오 작업이 진행됐다.


바라보는 방향으로 회전하며 이동

    float vertical = Input.GetAxisRaw("Vertical");
    float horizontal = Input.GetAxisRaw("Horizontal ");

    vector3 lookDir = vertical * Vector3.forward + horizontal * Vector3.right;

    this.transform.rotation = Quaternion.LookRotation(lookDir);
    this.transform.Translate(Vector3.forward * moveSpeed * Time.Deltatime);


메모로 보아 VR 포트폴리오를 진행하면서 필요한 기능에 대해서 강사가 설명한 내용이 작성되어 있었던 것 같다.

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

124일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 VR 포트폴리오 작업이 진행됐다.


유니티의 모든 class는 포인터로 작동한다.
주소, 값, 참조이기에 잘못 작동 시 에러가 발생할 수 있다.
항시 new로 생성하고 해제 null을 습관화해야 한다.

DataMNG myDataMNG = new DataMNG();
- 형식으로 신규 생성을 하면 관리에 문제가 없다.

DataMNG myDataMNG;
myDataMNG = 변수;
- 형식으로 선언을 하면 포인터 복사가 이루어진다.
- 원하는 구성이 안 될 수 있다.


개별적으로 VR 포트폴리오를 진행하고, 유니티에서의 class 복사에 대한 간단 설명이 진행된 것 같다.

2019년 9월 16일 월요일

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

123일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티의 사운드 처리에 대한 교육이 진행됐다.


사운드 리스터
- 카메라에 달려 있음.
- 듣는 개체의 위치

사운드 소스
- 발생하는 개체에 달려 있음

이슈
1. 각 개체별 사운드 소스를 가지고 있어 관리가 힘듦
2. 일정 거리 이상일 경우 Mute 처리와 같은 공간 처리의 최적화 문제
3. 이를 관리하기 위해서는 사운드 매니저 형식의 기능 구현이 필요
 개체별 Getcomponent<audiosource>().play();


오디오 믹서를 이용한 사운드 제어
- snap shot : 설정된 세팅 값
- group : master 하위로 설정되는 sub 사운드
     크게 BG, Fx, Voice등을 그룹으로 지정해 볼륨을 설정한다.
     이 항목은 hierarchy에 등록되어 하위로 등록된다.

inspector의 제어하고 싶은 항목(예:Fx)을 우클릭하면 script로 참조할 수 있도록 변수를 만들 수 있다.

group은 오디오 소스에 등록해 group을 지을 수 있다.


이처럼 유니티 엔진에서의 사운드 및 사운드 믹서 기능에 대해 교육이 진행됐다.




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

122일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티의 애니메이션 기능과 VR 포트폴리오 작업이 진행됐다.


animator에서 현재 플레이 중인 animation의 이름 얻는 방법
- this.Getcomponent<Animator>().GetcurrentAnimatorStateInfo(0).fullPathhash;

Animator.StringToHash("Base Layer.Idle");
- StringToHash 에 전달하는 인자는 "레이어 이름.스테이트 이름"
 또는 "레이어 이름.서브 스테이트 이름.스테이트 이름" 형태로 접근 가능하다


스폰 영역 설정
- Random.isidleUnitCircle 를 하면 vector2로 원안의 랜덤한 값이 나온다.
- 이를 x, z 좌표와 영역 크기로 곱해서 좌표를 지정 할 수 있다.

몬스터등의 스폰 시 바라보는 방향의 제어는 Lookat을 이용할 수 있다.
- var monster = Instantiate(오브젝트, 포지션, Quaternion.identity);

목표지점의 y값 맞추기
- endpoint.transform.position.set(~ , 몬스터 Y , ~);
- monster.transform.LookAt(endpoint의 포지션);


네비매쉬를 생성할 때는 지형 오브젝트의 static을 Navigation Static으로 설정을 해야 된다.


이처럼 애니메이션과 관련된 스크립트에 대해 학습하고, VR 포트폴리오를 진행했다.

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

121일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티의 애니메이션 기능과 VR 포트폴리오 작업이 진행됐다.


animation "blend tree" 개념
- 애니와 애니 사이의 전환 시 animator에 inspector의 탈출 시간을 이용하는 것이 아닌 애니간 전환 방법

blend tree
- 설정된 값에 따라 move(속도 값)에 따라 walk와 run을 왔다 갔다 할 수 있도록 하는 전환 기능
- animator에서 state 생성 시 blend tree를 선택해 생성
- 단일 값 전환 2차원(조이스틱) 값에 대한 전환


VR 포트폴리오를 진행하고, 유니티의 animation과 관련된 기능을 학습했다.

2019년 9월 15일 일요일

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

120일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티의 애니메이션 기능과 VR 포트폴리오 작업이 진행됐다.


애니메이션 - 이벤트
- animation 창에서 add event 버튼 또는 우클릭을 해 지정한다.
- 한 구간에 이벤트를 복수로 넣을 수 있지만, 화면 정보는 작게 표시된다.
- 애니메이션 윈도우에서 이벤트 선택 시 inspector에 함수를 지정할 수 있도록 화면이 전환된다. (단 연결된 스크립트 한정)
- 직접 애니메이션 데이터를 수정할 수 있다.

read only fbx 애니메이션 리소스 시
- inspector의 animation 탭에 있는 event 항목을 통해 제어 가능
- event 추가 시 표시되는 게이지는 비율로 표시됨
- event 추가 시 함수명을 적는다. (public이 아니어도 된다.)

event 설정 시 1개의 변수를 지정할 수는 있으며, 이는 함수가 받도록 준비되어야 한다.


sendmessage의 방식
- 타겟 오브젝트.sendmessage("함수명", 인자); 형태로 설정된다.
- 타겟 오브젝트에 설정된 모든 컴퍼넌트에 "함수명"을 실행 하라고 전달한다.


OnTrigger 함수는 두 개체 중 하나라도 트리거이면 인식이 가능하다.


이처럼 유니티의 애니메이션 기능과 VR 포트폴리오 작업이 진행됐다.

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

119일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 VR 포트폴리오 작업이 진행됐다.


애니메이션, 메카님
- 유니티/애니메이션/시간 흐름에 따른 정보변화, 이중 개체나 이미지의 변환

애니메이션을 만들 때 hierarchy에서 선택을 해야 됨

2D Sprite는 이미지 타입(Texture Type)과, Sprite 모드(Sprite Mode)를 제어해서 사용가능
- Single : 단일 Sprite
- Multiple : 1개의 이미지에 복수 Sprite


애니메이션에서  inspector를 통해 수정하는 경우 녹화 버튼을 눌러야 함
- 애니메이션 내 값 수정으로 제어할 수도 있음

애니메이터에서 parameter를 추가해 상태를 제어할 수 있음


유니티의 Animation과 Animator에 대한 설명이 진행됐다.
그리고 남은 시간 동안 VR 포트폴리오 작업이 진행됐다.

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

118일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 VR 포트폴리오 작업이 진행됐다.


LocalPosition은 부모의 Scale값에 영향을 받아 좌표가 실측에서의 계산 시 틀어질 수 있다.


VR 포트폴리오에서 사용한 기능을 샘플링해 보는 시간으로 교육이 진행된 것 같다.
메모의 내용이 적은 것은 아마도 프로젝트 작업을 진행하느라 작성된 메모가 없는 것으로 생각된다.

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

117일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 VR 포트폴리오 작업이 진행됐다.


컨트롤러를 이용한 Object의 잡기/던기지에 대한 샘플 작업 진행
- FixedJoint에 대한 내용을 자습
- Throwing 처리에 대한 처리 방식 자습


VR 포트폴리오에서 사용한 기능을 샘플링해 보는 시간으로 교육이 진행된 것 같다.

2019년 9월 14일 토요일

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

116일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 네트워크 연결에 대해 교육했다.


hash 테이블, photon network의 Lobby 구조
- hash테이블 : key , value 을 이용한 자료구조

매치메이킹 기능이 있다.
- 입장 시 제어된다.
- 프로퍼티가 있으면, 입력된 값으로 입장 / 없으면 랜덤 입장


이처럼 포톤네트워크에 대한 교육과 실습이 이루어진 것 같다.

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

115일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 네트워크 연결에 대해 교육했다.


메모로 작성된 내용이 없음


포톤네트워크를 이용해 Bone이 있는 캐릭터의 animation 동기화 처리에 대한 교육이 진행된 것 같다.
대부분의 내용이 수업 중 작성한 샘플 프로젝트의 주석에 작성된 것으로 보인다.

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

114일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 네트워크 연결에 대해 교육했다.


포톤네트워크 예제를 정리
- 클라이언트 간 transform 정보 통신 진행

photon view.photon transform view를 개체로 사용
-on observed components

photon animator view
- synchronize parameters
- discrete : 1초에 10회
- continus : 프레임 별로


유니티 컴파일 순서
- standard asset → plug in 포톤뷰 → ...
- standard asset(폴더 이름 기준)을 제어하려면 script 위치를 변경해 주어야 한다.


동기화 RPC , photon view의 observed components를 통해 이루어진다.
- animation, transform


이처럼 유니티와 포톤네트워크를 이용해 복수의 클라이언트 간 좌표와 애니메이션 정보의 동기화에 대한 샘플 작업이 진행된 것으로 보인다.
정리되지 않은 메모 내용으로 보아 상세한 설명은 샘플 작업 프로젝트 파일 내 주석으로 작성된 것 같다.

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

113일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용해 VR 포트폴리오를 진행했다.


메모 내용으로 보아 각자 교육 시간에 VR 포트폴리오 작업을 진행한 것으로 생각된다.

유니티 애니메이션 리소스 > inspector 에서
- motion - root motion node 를 <Root Transform>으로 설정
- 이러면 애니메이션상에서 이동이 설정되어 있어도 좌표 변동이 이루어지지 않는다.
- <None>으로 설정하면 애니에 따라 이동한다.


네비매쉬 에이전트 클래스를 사용
- using UnityEngine.AI; 를 추가해야 된다.


글로벌 조작에서 이벤트 발생 시 동시 발생을 막기 위해 if(~) 항목으로 묶어 관리한다.


이처럼 네트워크 교육을 안 하고 각자 VR 포트폴리오 작업이 진행된 것 같다.
작성된 내용 외 네트워크에 대한 메모는 확인할 수 없다.

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

112일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티를 이용한 네트워크 연결에 대해 교육했다.


포톤네트워크
- 에셋스토어>photon unity network ~ 를 설치
- Photon 홈페이지의 photon cloud 관리화면, 애플리케이션 ID 확인
- 설치한 에셋의 Resource/photon server setting의 inspector에 가입된 ID를 입력

스크립트로 photon network 클래스를 이용해 접속에 관련된 세팅을 진행

monobehaviour가 아닌 photon.punbehaviour를 상속받아서 사용
- override용 함수를 통해 제어

Remote Procedure Call RPC를 이용해 정보를 전달할 수 있다.


이처럼 유니티 엔진을 이용한 클라이언트 간 통신에 대한 교육이 진행됐다.
예제 프로젝트를 진행한 뒤 PC로 빌드하여 2개의 클라이언트 간 통신에 대한 예제 프로젝트를 진행한 것으로 생각된다.


Unity - Firebase 연동 (Analytics, AdMob)

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