분류 전체보기
-
개념 연결 리스트는 각 노드가 선형적으로 연결되어 있는 자료 구조이다. 특징 - 연결 리스트는 맨 처음 삽입한 노드의 주소를 가지고 있다. - 각각의 노드는 데이터와 다음 노드의 주소를 가지고 있다. - 데이터가 추가될 때마다 새로 노드를 할당하기 때문에 노드끼리의 메모리는 불연속적이다. - 요소의 삽입와 삭제는 O(1) 이며, 특정 원소 접근은 O(n) 이다. 장점 1. 동적인 크기의 데이터를 다루기에 좋다. 데이터를 삽입할 때마다 메모리를 추가로 할당하기 때문이다. - 일반 배열은 크기를 늘릴 수 없음 - 동적 배열(vector, ArrayList 등)은 크기가 늘어날 때 재할당과 복사로 오버헤드 발생 O(N) 2. 각 요소 사이에 데이터를 추가하더라도 O(1) 로 굉장히 빠르다. - 일반 배열과 동..
[C] 연결 리스트 (Linked List) 개념 및 구현개념 연결 리스트는 각 노드가 선형적으로 연결되어 있는 자료 구조이다. 특징 - 연결 리스트는 맨 처음 삽입한 노드의 주소를 가지고 있다. - 각각의 노드는 데이터와 다음 노드의 주소를 가지고 있다. - 데이터가 추가될 때마다 새로 노드를 할당하기 때문에 노드끼리의 메모리는 불연속적이다. - 요소의 삽입와 삭제는 O(1) 이며, 특정 원소 접근은 O(n) 이다. 장점 1. 동적인 크기의 데이터를 다루기에 좋다. 데이터를 삽입할 때마다 메모리를 추가로 할당하기 때문이다. - 일반 배열은 크기를 늘릴 수 없음 - 동적 배열(vector, ArrayList 등)은 크기가 늘어날 때 재할당과 복사로 오버헤드 발생 O(N) 2. 각 요소 사이에 데이터를 추가하더라도 O(1) 로 굉장히 빠르다. - 일반 배열과 동..
2023.03.21 -
회고를 한 번씩 써볼까 한다. 겪었던 일을 정리해가며 글을 쓰는 행위로 인해 내 인생을 제대로 되돌아볼 수도 있고, 앞으로의 길 또한 더욱 선명해질 것이라 생각된다. 그에 대한 첫 회고로 졸업생으로서 현실과 세상에 부딪쳐가며 느끼는 바에 대해 이야기해보려고 한다. 게임 개발자의 길 제목에도 쓰여있다시피, 나는 게임 개발자 지망생이다. 게임을 개발하는 것이 너무 좋아서 컴퓨터 공학부에 입학한 이후 단 한 번도 흔들린 적이 없었다. 모든 실습 수업의 텀 프로젝트 때마다 주제를 게임으로 정하며 가르침 받지도 않은 것들을 혼자 도전했고, 마지막 프로젝트인 캡스톤 디자인 때는 출시를 위해 8개월 동안 매일 약 10시간씩 개발을 진행하면서도 행복함을 느꼈다. 그리고 취업 전선에 들어서며 유니티 클라이언트 프로그래머..
게임 개발자 지망생의 졸업 이후 회고회고를 한 번씩 써볼까 한다. 겪었던 일을 정리해가며 글을 쓰는 행위로 인해 내 인생을 제대로 되돌아볼 수도 있고, 앞으로의 길 또한 더욱 선명해질 것이라 생각된다. 그에 대한 첫 회고로 졸업생으로서 현실과 세상에 부딪쳐가며 느끼는 바에 대해 이야기해보려고 한다. 게임 개발자의 길 제목에도 쓰여있다시피, 나는 게임 개발자 지망생이다. 게임을 개발하는 것이 너무 좋아서 컴퓨터 공학부에 입학한 이후 단 한 번도 흔들린 적이 없었다. 모든 실습 수업의 텀 프로젝트 때마다 주제를 게임으로 정하며 가르침 받지도 않은 것들을 혼자 도전했고, 마지막 프로젝트인 캡스톤 디자인 때는 출시를 위해 8개월 동안 매일 약 10시간씩 개발을 진행하면서도 행복함을 느꼈다. 그리고 취업 전선에 들어서며 유니티 클라이언트 프로그래머..
2022.09.13 -
유니티에서 최단 거리를 탐색하여 추적할 수 있는 캐릭터를 생성하는데에 사용되는 Navigation에 대해 알아보자. 그 중, 이번 포스팅은 NavMeshAgent를 중점적으로 알아보고, NavMeshObstacle에 대해서도 간단하게 알아보고자 한다. 개념유니티의 Navigation 시스템을 사용하면 씬 내에서 지능적으로 탐색하여 이동할 수 있는 캐릭터를 만들 수 있다. 이때, 자동으로 씬에 생성되는 NavMesh는 게임 월드에서 걸을 수 있는 표면을 뜻하며, 이를 이용하여 목적지까지 경로를 찾고 이동하는 캐릭터에 부착되는 컴포넌트가 NavMeshAgent이다. 내부 작업 Navigation을 사용하여 캐릭터를 지능적으로 움직이려면 크게 두가지의 기능으로 나뉘는데, 첫째로 맵을 탐색하여 목적지까지의..
[Unity] Navigation - NavMeshAgent유니티에서 최단 거리를 탐색하여 추적할 수 있는 캐릭터를 생성하는데에 사용되는 Navigation에 대해 알아보자. 그 중, 이번 포스팅은 NavMeshAgent를 중점적으로 알아보고, NavMeshObstacle에 대해서도 간단하게 알아보고자 한다. 개념유니티의 Navigation 시스템을 사용하면 씬 내에서 지능적으로 탐색하여 이동할 수 있는 캐릭터를 만들 수 있다. 이때, 자동으로 씬에 생성되는 NavMesh는 게임 월드에서 걸을 수 있는 표면을 뜻하며, 이를 이용하여 목적지까지 경로를 찾고 이동하는 캐릭터에 부착되는 컴포넌트가 NavMeshAgent이다. 내부 작업 Navigation을 사용하여 캐릭터를 지능적으로 움직이려면 크게 두가지의 기능으로 나뉘는데, 첫째로 맵을 탐색하여 목적지까지의..
2022.07.23 -
유니티에서 최단 거리를 탐색하여 추적할 수 있는 캐릭터를 생성하는데에 사용되는 Navigation에 대해 알아보자. 그 중, 이번 포스팅은 NavMesh 와 OffMeshLink를 중점적으로 알아보고자 한다. 개념유니티의 Navigation 시스템을 사용하면 씬 내에서 지능적으로 탐색하여 이동할 수 있는 캐릭터를 만들 수 있다. 이때, 자동으로 씬에 생성되는 NavMesh는 Navigation Mesh의 줄임말로, 게임 월드에서 걸을 수 있는 표면을 뜻하며, NavMesh를 사용하여 게임 월드 안의 한 위치에서 다른 위치로 이동할 수 있는 경로를 찾을 수 있다. (출처 : https://docs.unity3d.com/kr/2020.3/Manual/nav-InnerWorkings.html) NavMesh..
[Unity] Navigation - NavMesh, OffMeshLink유니티에서 최단 거리를 탐색하여 추적할 수 있는 캐릭터를 생성하는데에 사용되는 Navigation에 대해 알아보자. 그 중, 이번 포스팅은 NavMesh 와 OffMeshLink를 중점적으로 알아보고자 한다. 개념유니티의 Navigation 시스템을 사용하면 씬 내에서 지능적으로 탐색하여 이동할 수 있는 캐릭터를 만들 수 있다. 이때, 자동으로 씬에 생성되는 NavMesh는 Navigation Mesh의 줄임말로, 게임 월드에서 걸을 수 있는 표면을 뜻하며, NavMesh를 사용하여 게임 월드 안의 한 위치에서 다른 위치로 이동할 수 있는 경로를 찾을 수 있다. (출처 : https://docs.unity3d.com/kr/2020.3/Manual/nav-InnerWorkings.html) NavMesh..
2022.07.20 -
Unity에서 광선을 쏘아 충돌체를 감지할 수 있는 Physics.Raycast알아보고, 이를 디버깅할 때 사용할 수 있는 Draw.Debug에 대해 간단히 알아보자. 개념시작 지점에서 특정 방향으로 씬의 모든 충돌체를 상대하는 광선을 투사한다. ※ 주의할 점: Raycast의 시작 지점과 충돌해있는 Collider은 감지되지 않는다. 매개변수Physics.Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance, int layerMask); - origin에서 direction 방향으로 maxDistance 길이의 광선을 쏜다. 해당 layerMask의 Collider만 충돌하며, 충돌체에 대한 정보를 ..
[Unity] 레이캐스트 (Physics.Raycast)Unity에서 광선을 쏘아 충돌체를 감지할 수 있는 Physics.Raycast알아보고, 이를 디버깅할 때 사용할 수 있는 Draw.Debug에 대해 간단히 알아보자. 개념시작 지점에서 특정 방향으로 씬의 모든 충돌체를 상대하는 광선을 투사한다. ※ 주의할 점: Raycast의 시작 지점과 충돌해있는 Collider은 감지되지 않는다. 매개변수Physics.Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance, int layerMask); - origin에서 direction 방향으로 maxDistance 길이의 광선을 쏜다. 해당 layerMask의 Collider만 충돌하며, 충돌체에 대한 정보를 ..
2022.07.09 -
Unity의 Coroutine에 대해 알아보자. 개념싱글스레드에서 동시성으로 진행되는 일시 중단, 재개가 가능한 프로그램 구성 요소 필요성1. 시간이 지남에 따라 점진적으로 결과를 보여주고자 할 때2. 어느 시점으로부터 일정 시간 이후 작업을 진행하고자 할 때3. 프레임마다 호출이 아닌, 일정 시간마다 호출하여 연산의 수를 줄이고자 할 때 4. 너무 무거운 작업을 Update에서 진행할 시의 오버헤드 방지 설명1. 동시성동시성 (Concurrency) : 일을 여러개로 나누어 번갈아 가면서 실행하여 동시에 처리하는 것처럼 보이는 것 병렬성 (Parallelism) : 멀티코어 환경에서 실제로 여러개의 일을 동시에 처리하는 것 기본적으로 싱글스레드로 진행되는 유니티는 Coroutine을 사용하여도 ..
[Unity] 코루틴 (Coroutine)Unity의 Coroutine에 대해 알아보자. 개념싱글스레드에서 동시성으로 진행되는 일시 중단, 재개가 가능한 프로그램 구성 요소 필요성1. 시간이 지남에 따라 점진적으로 결과를 보여주고자 할 때2. 어느 시점으로부터 일정 시간 이후 작업을 진행하고자 할 때3. 프레임마다 호출이 아닌, 일정 시간마다 호출하여 연산의 수를 줄이고자 할 때 4. 너무 무거운 작업을 Update에서 진행할 시의 오버헤드 방지 설명1. 동시성동시성 (Concurrency) : 일을 여러개로 나누어 번갈아 가면서 실행하여 동시에 처리하는 것처럼 보이는 것 병렬성 (Parallelism) : 멀티코어 환경에서 실제로 여러개의 일을 동시에 처리하는 것 기본적으로 싱글스레드로 진행되는 유니티는 Coroutine을 사용하여도 ..
2022.07.08 -
유니티에서 오브젝트를 회전할 때 자주 사용하는 transform.Rotate와 Quaternion.Euler에 대해 깊게 알아보고, 차이점을 알아보자. 요약transform.Rotate는 현재 상태에서 해당 오일러 각만큼 회전시키는 것이고,Quaternion.Euler는 현재 상태를 해당 오일러 각으로 회전시키는 것이다. 매개변수transform.Rotate와 Quaternion.Euler의 매개변수는 간단하게 보면 다음과 같다. transform.Rotate(Vector3 eulerAngles);Quaternion.Euler(Vector3 eulerAngles); Vector3를 대신해서 float x, float y, float z값도 인자로 넣을 수 있다. Rotate 함수의 인자에는 한 가지..
[Unity] transform.Rotate, Quaternion.Euler 차이유니티에서 오브젝트를 회전할 때 자주 사용하는 transform.Rotate와 Quaternion.Euler에 대해 깊게 알아보고, 차이점을 알아보자. 요약transform.Rotate는 현재 상태에서 해당 오일러 각만큼 회전시키는 것이고,Quaternion.Euler는 현재 상태를 해당 오일러 각으로 회전시키는 것이다. 매개변수transform.Rotate와 Quaternion.Euler의 매개변수는 간단하게 보면 다음과 같다. transform.Rotate(Vector3 eulerAngles);Quaternion.Euler(Vector3 eulerAngles); Vector3를 대신해서 float x, float y, float z값도 인자로 넣을 수 있다. Rotate 함수의 인자에는 한 가지..
2022.07.03