일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 성능
- A*
- 인공지능
- ML Agent
- Algorithm
- 길 찾기
- 게임
- Unity
- 프로그래밍
- 유니티
- pattern
- 머신러닝
- 디자인 패턴
- Design
- 팩토리
- desgin
- 디자인패턴
- 개발
- Factory
- 알고리즘
- JPS
- C++
- 2번
- AI
- 디자인
- 패턴
- 문제풀이
- GetComponet
- LeetCode
- 강의
- Today
- Total
목록Unity (11)
Game Development
해당 글은 https://www.slideshare.net/devcatpublications/enum-boxing-enum-ndc2019 의 내용을 바탕으로 제작되었습니다. 자세한 설명은 해당 링크를 통해서 확인하시면 됩니다! 이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019 Nexon Korea 이무림 편리하고 성능좋게 Enum 사용하기 Enum의 Boxing을 어찌할꼬? www.slideshare.net Enum Type 을 Generic으로 받아 Int로 변환하는 경우 Boxing이 일어나게된다. public static int Enum32ToInt(T e) where T : Enum { return (int)(object)e; } 우리는 Boxing이..
유니티 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..
유니티 포톤 RPC 전송 속도 Photon이란 무료로 멀티 게임을 만들 수 있게 지원해주는 플렛폼이라고 생각하시면 됩니다. Photon에서 타 유저의 함수를 실행시킬때 사용하는 [PunRPC] 태그에 대해서 알아보도록 하겠습니다. [PunRPC] 해당 태그는 RPC라는 함수를 통해 호출을 합니다. Photon Network를 기반으로 개발하면 느린 반응속도에 대해서 불만은 가지시는 분들이 많을 껍니다. 이러한 부분을 개선할 수 있는 방법을 소개해드릴려고 합니다 RPC 특정 함수를 양쪽에서 같이 호출하기 위해서 RPC라는 함수를 사용하게 됩니다. 이 RPC라는 함수를 호출 시 바로 패킷을 보내는 녀석이 아니라 버퍼에 따로 담아 뒀다 오브젝트에 변화가 있을 때 같이 보냅니다. [ 속도 개선 방법 ] 속도를 ..