일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 2번
- 강의
- 성능
- AI
- 머신러닝
- 디자인 패턴
- ML Agent
- 알고리즘
- JPS
- desgin
- 디자인패턴
- 문제풀이
- LeetCode
- 팩토리
- 개발
- 유니티
- pattern
- 프로그래밍
- Unity
- 길 찾기
- Design
- GetComponet
- 인공지능
- 디자인
- Algorithm
- 패턴
- 게임
- A*
- Factory
- C++
- Today
- Total
목록Unity (12)
Game Development
Jump Point Search(JPS)를 이용하여 최단 거리를 찾아 봅시다. 실제로 큰 맵을 가진 게임에서 사용되는 JPS 알고리즘에 대해서 알아보도록 하겠습니다. [ 참고 ] 해당 포스팅에는 JPS 알고리즘을 C#으로 구현한것이 제공됩니다. JPS알고리즘 말고, JSP(b) 알고리즘, JPS(+) 알고리즘에 대해서도 조금이나마 내용이 나옵니다. JPS 알고리즘 이란 A* 알고리즘을 기반으로 한 알고리즘 중 하나인 JPS 알고리즘 입니다. JPS 알고리즘은 A*의 문제점인 갈 수 있는 노드들의 휴리스틱 값을 구한후 리스트에 넣어 연산하는 과정에 많은 오버헤드가 발생하여 속도가 느린 것을 보안한 알고리즘입니다. 이름 그대로 Jump Point Search 즉 내가 어디로 점프 해야할 지를 구하여 해당 노..
A*를 이용하여 길을 찾아 보자 게임에서 사용되되는 알고리즘 중 기초적인 알고리즘 중 하나인 A*를 알아보도록 하겠습니다. [ 참고 ] 이번 포스팅에서는 A*를 구현하는 방식에 대해서 알려드립니다. 전체적인 소스코드는 따로 주어지지 않습니다. 직접 스크립트를 작성해보며 실력을 기르시기 바랍니다. A* 알고리즘 이란 그래서 A*가 어떤 알고리즘 이냐면 현재의 위치에서 목적지 까지의 최단 경로를 구하는 알고리즘 입니다. A*에서는 크게 3가지로 구성 되어 있다고 보시면 됩니다. 1. 현재 노드까지 오는데 필요했던 비용 ( g Cost ) 2. 현재 노드에서 목적지 까지 가는데 필요한 비용 ( h Cost ) 3. 현재 노드에까지 온 비용과 목적지 까지 비용을 합친 비용 ( f Cost ) 위에 있는 3가지의..
유니티 ML Agent에 Ray Perception Sensor를 이용해 보자 현재 ML Agent에서 제공해주는 Ray Perception Sensor를 이용하여 인공지능을 학습시켜 보도록 하겠습니다. [ 관련 자료 ] ML Agent가 처음이신 분들은 저의 포스팅 중 기본 강의를 보고 오시기 바랍니다 [ 바로 가기 ] 해당 ML-Agent 버전은 2.1.0-exp-1을 사용하고 있습니다. [ Sensor를 사용하자 ] 저희는 이떄까지 인공지능이 학습을 하기 위해 필요한 정보값을 넘겨주기 위해 아래와 같은 함수를 사용했습니다. public override void CollectObservations(VectorSensor sensor) { } 위의 함수를 통하여 각각의 정보를 보내며 인공지능이 학습을 ..
Dictionary ContainKey vs TryGetValue Dictionary에 원하는 Key에 값이 있는지 확인할 떄 2개의 함수를 사용합니다. 해당 두 기능을 비교하여 어떤 함수가 더욱 빠른지 그리고 왜 빠른지에 대해서 알아보도록 하겠습니다 테스트 방식 각각의 함수를 천 번씩 호출하여 어느 함수가 더욱 효율적인지 비교해보도록 하겠습니다. ContainKey Dictionary dic = new Dictionary(); private void Awake() { int len = 100000000; int outValue; dic["str"] = 1; sw.Start(); for ( int i = 0; i < len; i++ ) { if (dic.ContainsKey("str") == true) ..
GetComponet 위치에 따른 비용! 해당 실험은 오브젝트 들어가 있는 Componet의 순서에 따라 GetComponet의 속도의 변화를 측정합니다. 테스트 방식 해당 테스트는 천 번 Getcompoent를 호출할 때 까지 드는 시간을 측정합니다. 총 한 오브젝트에 Componet는 10개가 들어있고 이 중에서 특정 Componet를 불러오도록 하겠습니다. 테스트의 차이는 다음과 같습니다. 1. GetComponet로 접근할 Compoent가 오브젝트 제일 위에 있습니다. 2. GetComponet로 접근할 Compoent가 오브젝트 제일 밑에 있습니다. 시작 아래의 소스코드를 통하여 각각의 상황에서 드는 시간을 비교해보도록 하겠습니다! private void Awake() { sw.Start();..
유니티의 ML Agent를 사용하여 먹이를 먹는 방법을 학습시키자 제목부터 길어보이지만 사실 크게 다를거 없습니다. 필자는 7시간의 노가다 끝에 성공했지만 유니티 ML Agent에 배우시는 분들에게 도움이 되길 바랍니다. [ 관련 자료 ] 해당 포스팅의 글은 CodeMonkey님의 ML Agent강의를 기반으로 작성되었습니다. ML Agent가 처음이신 분들은 저의 포스팅 중 기본 강의를 보고 오시기 바랍니다 [ 바로 가기 ] 해당 ML-Agent 버전은 2.1.0-exp-1을 사용하고 있습니다. 프로젝트를 진행하기전 버튼에 대한 스크립트 정보입니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public ..
자식 클래스 참조 성능 비교 상속받는 클래스 자식을 참조하는 방법 중 GetComponet와 as를 통하여 자식을 참조 할 수 있습니다. 여기서 GetComponet 와 as의 성능을 비교해 보도록 하겠습니다. 테스트 두 방식을 통한 속도의 차이를 알아보는 테스트 입니다. 천 만번 아래의 코드를 실행 했을 경우 서로의 속도를 비교해 보도록 하겠습니다. GetComponet를 통한 방식 [SerializeField] TestParent test; int count = 10000000; private void Awake() { TestChild test2; sw.Start(); for ( int i = 0; i < count; i++ ) { test2 = test.GetComponent< TestChild ..
유니티를 통한 머신러닝 학습 오늘 부터 간단하게 유니티를 통해서 머신러닝을 해보고 앞으로도 머신러닝을 통해 여러가지 프로젝트를 진행하여 올려보도록 하겠습니다. [ 셋팅 하기 ] 유니티에서 머신러닝을 하기위해선 Python과 ML Agents라는 패키지가 필요하게 됩니다. 먼저 Python3.7을 다운받고 기본적인 셋팅부터 진행하도록 하겠습니다. 파이썬을 다운받고 오시기 바랍니다. 1. 파이썬 셋팅 먼저 가상환경을 만들어 보도록 하겠습니다. 머신러닝을 진행할 프로젝트를 만들어주세요. CMD창을 열어 해당 프로젝트 경로까지 이동해주시기 바랍니다. cd "경로" 그 다음 새로운 가상환경을 만들어 보도록 하겠습니다. 가상환경이 필요한 이유는 타 프로젝트에 영향을 주지 않기 위해서 이기도합니다. python -m..