본문 바로가기

전체 글

(90)
3. ML Agents 설치 - 텐서플로우 텐서플로우 설치 텐서플로우를 설치해보자. 파이썬에서 지원하는 pip 모듈을 활용하면 프로그램을 쉽게 다운로드 받고 설치할 수 있다. 먼저 pip을 최신 버전으로 유지하는 것이 좋다. (1) python -m pip install --upgrade pip 명령어를 사용해서 pip을 업그레이드 하자. 다음으로 텐서플로우를 설치하는데 ML Agent에서 권장하는 버전을 설치하는 것이 좋다. 현재(2018년 10월 30일) ML Agent 홈페이지에서는 1.7.1 버전 설치를 권장한다. (2) python -m pip install tensorflow==1.7.1 명령어를 사용해서 텐서플로우를 설치하자. 명령어가 실행되고 마지막에 (3) Successfully installed 메시지를 확인하면 설치가 정상적으..
2. ML Agents 설치 - 아나콘다 아나콘다 다운로드 및 설치 아나콘다는 데이터 사이언스와 머신러닝에 필요한 다양한 파이썬과 R 관련 모듈을 모아 놓은 무료 배포 패키지이다. 파이썬을 사용해서 머신러닝을 할 때 pandas, numpy, tensorflow 등 다양한 패키지가 필요하다. 하지만 아나콘다만 설치하면 이 모든 패키지들이 기본적으로 설치되어 있기 때문이 다른 프로그램을 추가로 설치할 필요가 없다. 아나콘다 리파지토리 페이지에 가면 다양한 아나콘다 버전을 다운로드할 수 있다. ML 에이전트를 실행하기 위해서는 호환되는 버전을 설치해야 하는데 ML 에이전트 0.5 버전과는 아니콘다 3 5.1 버전이 적합하다. 다음 사이트에서 https://repo.anaconda.com/archive/ 윈도우 64bits용 아나콘다 5.1 버전을 ..
1. ML Agents 개념 ○ ML 에이전트 개념 ML 에이전트의 학습 환경(Learning Environment)은 아카데미, 브레인 그리고 에이전트로 구성된다. 학습 환경이란 유니티 씬과 씬을 구성하고 있는 게임 캐릭터를 말한다. ML 에이전트 개념도 에이전트는 강화학습에 참여하는 게임 캐릭터를 말한다. 에이전트는 브레인 정책에 따라 행동(Action)을 하고 자신의 관점에서 환경을 이해(Observation)하고 그것을 숫자 또는 이미지로 변환해서 관찰 값으로 저장한다. 에이전트는 브레인에게 행동에 따른 보상 값을 계산해서 관찰 값과 같이 전달한다. 브레인은 관찰 값을 기반으로 정책에 따라 에이전트가 최적의 행동을 취할 수 있도록 정책 실행 결과 값을 반환한다. 학습을 통해 최적의 정책을 찾는 것이 강화학습의 목적이다. 최적..
8. 유니티 화면에 텍스트 표현하기 ○ 텍스트 객체 생성 텍스트 객체 생성 점수와 시간을 화면에 표시하기 위해서는 유니티에서 제공하는 UI(User Interface)를 사용해야 한다. UI에서 Text 객체를 사용하면 스크립트에서 점수와 시간을 구해 쉽게 화면에 표시할 수 있다. Text 객체를 생성하기 위해 계층 뷰에서 마우스 오른쪽 버튼을 클릭해 UI 항목에서 Text를 선택하자. Text 객체는 Canvas 객체의 하위 객체로 생성되며 아래에 EventSystem 객체가 함께 생성된다. Canvas와 EventSystem 객체에 대한 설명은 이 책에서는 생략하겠다. 이제 Text 객체의 이름은 Score라 변경한 다음 인스펙터 뷰에서 톱니바퀴 버튼을 클릭해 Reset 메뉴를 통해 텍스트 객체 위치를 초기화 하자. Game 뷰에서 확..
7. 유니티 물리 충돌 처리 ○ 물리 충돌 처리 개념 물리 충돌 처리 객체 종류 콜라이더(Collider) 컴포넌트는 오브젝트의 물리 충돌을 처리하는 역할을 한다. 물리 충돌 처리 관점에서 게임 오브젝트는 4가지 종류로 나눌 수 있다. 정적 콜라이더(Static Collider)는 콜라이더가 있지만 리지드바디가 없는 게임 오브젝트이다. 정적 콜라이더는 움직이지 않는 벽, 바닥과 같은 오브젝트에 사용되며 물리 엔진은 정적 콜라이더가 움직이지 않는다고 가정하고 있다. 만일 정적 콜라이더가 이동하게 되면 물리 엔진 내부에서 지속적으로 연산이 이루어져야 하기 때문에 게임 성능 저하를 초래할 수 있다. 리지드바디 콜라이더(Rigidbody Collider)는 콜라이더와 리지드바디 컴포넌트가 함께 있는 게임 오브젝트이다. 물리 엔진에 의해 완..
6. 유니티 객체 회전 및 프리펩 사용 ○ 벽과 타겟 객체 만들기 벽(Cube) 객체 만들기 가장 자리에 공이 빠져 나가지 못하도록 벽을 세워 보자. 벽은 직사각형 객체 4개로 이루어 진다. 벽을 이루는 직사각형 객체는 모두 비슷한 특성을 가지고 있기 때문에 빈 객체(Empty Object)를 생성해서 하나로 묶어주는 것이 관리하기 편리하다. 빈 객체는 transform 컴포넌트로만 이루어진 객체인데 독립적으로 씬에 존재할 수 없는 스크립트나 객체를 모아 놓거나 동일 객체를 하나로 묶어 놓는 부로 객체로 주로 사용된다. Create Object > Create Empty 메뉴를 사용해서 빈 객체를 만들 후 이름을 Wall로 변경하자. 벽 4개 만들기 앞에서 만든 큐브 객체 이름을 East Wall로 변경하고 Transform 컴포넌트의 속성을..
5. 유니티 카메라 제어 ○ 카메라 위치 변경 카메라 위치 제어 게임을 실행했을 때 화면이 너무 옆으로 누워 있다는 것을 느낄 수 있었을 것이다. 그리고 일반적인 게임에서는 플레이어가 움직임에 따라 카메라가 플레이어를 따라 가지만 이 게임에서는 카메라가 고정되어 있다. 먼저 카메라 위치를 보기 좋게 바꾼 다음에 카메라가 공의 움직임을 따라 가도록 변경해 보자. 카메라 위치를 변경하는 방법은 두 가지인데 먼저 씬 뷰에서 카메라를 선택하고 움직이면서 위치를 설정할 수 있다. 두 번째로 카메라 객체 인스펙터 뷰에서 Transform 컴포넌트의 Position 속성을 변경하면서 카메라 위치를 바꿀 수 있다. 카메라 객체를 선택하면 씬 뷰 우측 하단에 게임 뷰 미니 화면이 나오는데 그 화면을 참고해서 카메라를 적절하게 조절해 보자. ○ ..
4. 유니티 스크립트 ○ 유니티 스크립트 기본 개념 스크립트 기본 개념 유니티는 자바스크립트와 C# 기반 스크립트를 지원하고 있다. 현재 대부분의 자료들이 C#을 사용하고 있기 대문에 이 책에서도 C# 기준으로 설명하도록 하겠다. C#은 마이크로소프트에서 개발한 객체지향 언어로써 JAVA와 비주얼C++과 유사한 문법을 가지고 있다. C# 문법을 별도로 공부하지 않더라도 어느 정도 객체지향 프로그래밍에 대한 경험이 있는 사람이라면 어렵지 않게 코드를 이해할 수 있다. 객체지향 프로그래밍 경험이 없는 사람이면 C# 기본 문법에 대해 먼저 공부하는 것이 좋다. 유 니티는 게임 오브젝트 중심으로 개발되며 게임 오브젝트의 구체적인 기능을 정의하는 것이 스크립트이다. 유니티 스크립트는 이벤트 기반으로 동작한다. 객체가 움직이거나 프레임..