목록분류 전체보기 (156)
DOTY

이번에 진행할 프로젝트에 오브젝트를 엄청 많이 소환하기 위해서 ECS를 공부하고자 한다.유니티에서는 DOTS 기술 중 하나로 소개가 되어있고 유튜브에서는 Job System도 함께 소개를 했다.https://www.youtube.com/watch?v=WLfhUKp2gagUnity 공식 유튜브 채널에 소개되어있어 이를 보고 혼자서 깔짝깔짝 해볼 예정.ECS (Entity Component System) ?Entity고유 식별자 ID데이터를 보유하지 않고 컴포넌트를 결합하여 정의Component순수 데이터MonoBehavior 기반 컴포넌트와는 다른 방식을 사용.MonoBehavior은 데이터와 동작을 함께 사용하는데 목적이 있다면 ECS의 Component는 순수한 데이터만을 위한다using Unity.E..

머신러닝을 위한 가상환경 구축1. Python + Miniconda파이썬과 아나콘다를 사용해서 구축한다. (나는 미니콘다를 썼다)Python Release Python 3.10.11 | Python.org Python Release Python 3.10.11The official home of the Python Programming Languagewww.python.orgMiniconda — Anaconda documentation Miniconda — Anaconda documentationThese three commands quickly and quietly download the latest 64-bit Windows installer, rename it to a shorter file name..
AI의 트리 Node : Success, Failure, Running에 따라서 노드 상태 결정Action : 어떤 동작Sequence : 일의 순서. 만약 자식이 하나라도 실패하면 실패로 반환Selector : 일의 선택. 만약 어떤 자식이 하나라도 성공하면 성공으로 반환네 가지를 구현해보자. 구현할 내용들1. Node - InterfaceNodeState를 enum 형태로 선언Node에서 필요한 것은 진행 : Running, 성공 : Success, 실패 : Failure 가 필요하다.Node클래스는 세가지의 노드들에 대해서 각자 평가하는 함수 - Evaluate()가 존재.이 함수는 Tree형태로 되어있고 각 원하는 동작에 대한 Behavior Tree를 설계할 때 이 Tree의 Root로 정해준다..
요약하면, HSV를 활용하면 된다. Hue (색)Saturation (채도)Value (명도)세가지 요소 중, Hue를 활용하면 된다.초록색은 0.3, 빨간색은 0 이기 때문에 다음처럼 코드를 활용할 수 있다.image.color = Color.HSVToRGB(image.fillAmount / 3, 1.0f, 1.0f);
유니티 부트캠프를 시작했다...사실 언리얼 엔진 공부를 가장 하고 싶었는데 유니티를 하게되었다. (언리얼 엔진은 학원만 많아...ㅠ) 게임 개발에 대한 큰 틀을 잡기에 좋을 것 같았고 기초적인 언리얼 엔진은 다룰 수 있다고 생각하기 때문에 둘이 비교하면서 공부하면 훨씬 효율적일 수 있겠구나 싶어서 유니티로 부트캠프를 시작하게 되었다. 또한 부트캠프에서 꼭 필요한 수학이나 물리 이론들을 다시 리마인드 할 수 있고(고등학생때는 1-2등급이었는데..ㅠㅠ) 게임의 디자인 패턴들이나 방향을 잡기에는 좋을 것 같았다. 게임 개발을 하는 다양한 사람들을 만나는 것도 기대가 되었고 혼자서 공부하는 것 보다는 훨씬 효율적일 것이라고 생각했다. (그동안 왜 혼자서만 끙끙 앓았나 싶기도 했다...) 으쌰으쌰 힘내보자.
https://leetcode.com/problems/majority-element/?envType=study-plan-v2&envId=top-interview-150처음 문제를 풀 때 단순히 배열에 넣어야겠다고 생각했지만 너무 많은 숫자를 다룰 수 있기에 다른 방법을 생각했다.class Solution {public: int majorityElement(vector& nums) { unordered_map elements; int max = 0, max_num = 0; for(int& i : nums) { elements[i]++; if(max unordered_map을 활용하면 삽입도 O(1), 탐색도 O(..
https://leetcode.com/problems/remove-element/?envType=study-plan-v2&envId=top-interview-150나의 첫 코드는 이러했다.class Solution {public: int removeElement(vector& nums, int val) { int count = nums.size(); for(int i = 0; i 정답은 맞지만 해당 코드의 문제는 시간 복잡도.O(N^2)를 사용하게 된다.그 이유는 erase 함수. eraseerase 함수는 벡터의 원소를 삭제하는 것 까지는 좋지만 원소들을 하나씩 앞으로 당겨야하기 때문에 최악의 경우 O(N)의 복잡도를 가진다.따라서 시간을 단축시키기 위해서는 새로운 ..

Merge Sorted Array - LeetCode처음 사용해 보는 사이트로 프로그래머스처럼 내가 Input을 넣지 않아 줘도 좋다.그리고 Follow Up 이라는 추가 도전?이라는 것도 있는데 문제를 다 풀어도 더 생각하게 한다. class Solution {public: void merge(vector& nums1, int m, vector& nums2, int n) { int i = 0, j = 0; vector answer; while(i 원래 내가 생각했던 코드.어이쿠야....지금까지 제출한 사람들의 런타임과 메모리를 비교할 수 있다.class Solution {public: void merge(vector& nums1, int m, vector..
TSubclassOf 타입 정보 저장: TSubclassOf는 특정 클래스 T의 서브클래스를 참조하기 위한 포인터 유형. 클래스 타입 자체를 참조하는 것으로, 인스턴스가 아닌 클래스의 템플릿을 나타냄. 즉, 이를 통해 T의 인스턴스를 생성할 때 사용할 수 있는 특정 서브클래스의 타입을 지정 가능 클래스 템플릿 역할: 이는 인스턴스를 직접 포함하는 것이 아니라, 그 인스턴스를 생성할 수 있는 클래스의 타입 정보를 보유. 따라서, 다양한 서브클래스 중에서 어떤 클래스가 인스턴스로 생성될지를 결정하는 데 사용 TObjectPtr 실제 객체의 인스턴스 참조: TObjectPtr는 객체의 실제 인스턴스를 참조하기 위해 사용 이는 실행 시점에서 특정 객체를 가리키며, 이 객체는 메모리에 이미 할당되어 있어야 한다...
InitializeComponent() 목적: InitializeComponent()는 컴포넌트가 월드에 추가된 직후, 실제 게임 플레이가 시작되기 전에 호출 목적은 컴포넌트의 초기화를 완료하는 것. 초기화는 컴포넌트의 기본 속성 설정, 초기 상태 설정, 필요한 리소스의 할당 등 ( ex. 물리 엔진 설정이나, 초기 가시성 상태 설정 등) 호출 시점: 컴포넌트가 월드에 처음 생성될 때 한 번만 호출되고, 액터의 BeginPlay() 전에 실행. 이는 컴포넌트가 게임 로직을 수행하기 전에 필요한 모든 기초적인 설정을 완료하도록 보장 사용 예시: 자료형 데이터 초기화: 스텟, 스킬, 아이템의 속성 등과 같은 게임 데이터 초기화 정적 리소스 할당: 메시, 텍스처, 사운드 등의 자원을 컴포넌트에 미리 할당 기본..