전체 글 88

아이템 2: const보다는 readonly가 좋다

1.개요이번 장은 비슷하게 느껴지만 깊게 파보면 다른 두 키워드인 const와 readonly에 대해 알아볼 예정입니다. 둘다 값을 바꿀 수 없다는 점은 같지만 미묘하게 다릅니다. ( 사실 값을 바꿀 수 없다는 것도 정확한 표현은 아닙니다.) 지금부터 그 차이에 대해서 알아보고자 합니다. 2. 컴파일 타임, 런타임컴파일 타임C#코드가 실행가능한 코드(IL)로 변환될때까지 컴파일러가 코드를 분석하는 시기이다.컴파일 타임에 일어나는 일들(1) 문법 검사중괄호/세미콜론/키워드 위치 같은 문법 오류를 잡음 → 틀리면 빌드 자체가 실패(2) 타입 검사(Type checking)대입/연산/호출이 타입 규칙에 맞는지 확인예: int x = "hi"; 는 타입 불일치로 컴파일 에러(3) 오버로드(Overload) 선..

아이템 1: 지역변수를 선언할 때는 var를 사용하는 것이 낫다

1. 개요지역변수의 타입을 암시적으로 선언가능한 C#의 var를 사용하는 것이 좋은 이유에 대해 설명하는 챕터이다. 2. 무엇이 좋을까어떤 쿼리 구문은 IEnumberable를 반환하지만 IQueryable를 반환하기도 한다. 그런데 이것을 정확히 알지 못하고 명시적으로 타입을 쓰게 되면 단점이 많다. 위의 2가지를 혼용해서 쓰게 되면 해당 타입이 가지고 있는 고유한 기능을 사용하지 못하게 된다. 사실 타입 이름보다는 타입 유추가 가능한 변수명이 훨씬 더 가독성에 도움이 된다. 3. 타입 추론, 동적 타이핑, 정적 타이핑정적 타이핑 (static typing)타입이 컴파일 타임에 결정컴파일러가 타입이 맞는지 미리 검사한 번 정해진 타입은 변화 xC#, Java, C, Kotlin 장점오류 검증빠..

[C#] Fake Null

1. 개요유니티에서는 Fake Null이라는 개념이 존재합니다. 한마디로 가짜 null이라는 의미인데요 이 "가짜"라는 것은 무엇을 보고 가짜라고 하는 것일까요 이것은 유니티 엔진에 대한 깊은 이해를 필요로 합니다. 지금부터 설명해보겠습니다. 2. Fake Null은 뭐가 가짜라는 것인가?유니티 객체의 null은 우리가 일반적으로 아는 null과는 다르게 동작합니다. UnityEngine.Object를 부모로 두고있는 유니티 객체들 (ex : Sprite, Image 등등)은 유니티 엔진에서 null을 체크하는 연산자를 override하고 있습니다. 그래서 obj == null (여기서 obj는 유니티 객체)는 엔진이 관여하게 됩니다. 다시 말하자면 C#관점에서는 null이 아니지만 엔진에서 볼때는 n..

C# 2025.11.20

[Unity] 유니티 구글 로그인 (Firebase)

1. 개요오늘은 유니티에서 구글 로그인을 하면서 겪은 일들에 대해서 다뤄보도록 하겠습니다. 우리가 흔히 게임을 하면 나오는 구글로그인 기능이 있습니다. 이 기능을 만들며 겪은 트러블 슈팅에 대하여 알아보고자 합니다. 2. Firebase 비동기 문제파이어베이스를 Initialize하는 과정은 비동기로 진행됩니다. 다시 말하면 파이어베이스가 완전히 Initialize된 이후에 구글 로그인 과정을 실행해야만 문제없이 로그인이 가능한 것이죠. 그러나 저는 처음에 이 기능을 구현할 때 이것을 간과하였고, 결국 파이어베이스가 완전히 initialize되기 전에 관련 코드를 실행해서 오류가 발생했던 경험이 있습니다. 우선 C#의 비동기 문법인 async, Task, await을 알아보겠습니다. Task - 미래에 ..

Unity 2025.11.20

[Unity] 유니티의 GC(Garbage Collector)

1. 개요GC는 C#이 메모리를 관리하는 기법이라고 생각할 수 있습니다. C++같은 경우에는 스마트 포인터를 활용해서 자동으로 메모리를 관리할 수 있습니다. 그러나 스마트 포인터 역시 shared_ptr의 경우엔 순환 참조등 주의해야할 점이 있습니다. 그러나 C#을 스크립팅 언어로 사용하는 유니티엔진 같은 경우엔 이러한 메모리 관리를 GC가 담당하게 됩니다. 2. 왜 알아야 하나?그렇다면 우리는 이것을 왜 알아야 할까요? 그것은 바로 성능문제 때문입니다. GC는 프로그래머가 메모리 누수를 하지 않도록 도와주는 훌륭한 기능이지만 이것에 대한 충분한 이해가 없이 사용하게 된다면 큰 성능 문제를 야기할 수 있습니다. GC는 공짜로 돌아가는 것이 아니기 때문이지요. 그러므로 우리는 프로그래밍시에 어디에서 GC..

Unity 2025.10.05

[게임테크랩] 게임테크랩 Tip

1. 개요안녕하세요 게임테크랩 1기를 수료하며 얻은 Tip을 공유하고자 합니다. 그전에 이번에 테크랩 2기에 합격하신 여러분께 진심으로 축하의 말씀 보냅니다. 6개월간의 합숙 코딩에 지원하시고 시험과 면접까지 모두 통과하신 여러분들은 게임개발에 정말 진심인 분들이라고 생각합니다. 집을 떠나 이곳 용인에서 6개월을 보내게 될 여러분을 위해 준비했습니다. 이번글은 저의 개인적인 후기와 2기 여러분들에게 도움이 될만한 정보를 드리고자 합니다. 2. 당부의 말씀아마도 저의 블로그를 보다 보면 대략 테크랩의 커리큘럼이 어떻게 진행되는지 느낌이 올 거라고 생각합니다.그러나 여러분께 당부드리고 싶은 말은 딱 하나입니다.다음 내용을 예측은 지양하시길 바랍니다.걱정되는 부분은 다음 주에 하게 될 내용이 공개될 경우 누군..

후기 2025.08.19

[알고리즘] A* 알고리즘

1.개요오늘은 길찾기 알고리즘으로 유명한 A* 알고리즘에 대해 공부해보겠습니다. A*알고리즘은 출발노드 부터 도착노드까지의 최단 경로를 찾아내는 그래프 탐색 알고리즘 중 하나입니다. 다익스트라 알고리즘과 유사한 부분이 있지만 차이는 다익스트라는 시작노드에서 모든 노드의 최단 경로를 찾는 반면 A*알고리즘은 시작노드와 도착노드의 최단거리를 찾고, Heuristic이라는 값을 사용해 탐색효율을 높인다는 차이가 있습니다. 2. 필요 개념1. Open List아직 방문을 하지 않고 탐색할 가능성이 남아 있는 노드들의 집합 보통 우선순위 큐(Priority Queue), min-heap으로 구현됩니다. F(n)값이 낮은 노드들의 우선순위가 높다고 생각하면 됩니다. 만약 일반 Queue로 하게 된다면 F(n)이 작..

알고리즘 2025.07.26

[알고리즘] 옥트리 (Octree)

1. 개요옥트리는 알고리즘 보다는 자료구조에 가깝지만 분류를 새로 만들지 않기 위해 알고리즘에 넣습니다. 옥트리는 간단히 말해서 내부의 각 노드들이 8개의 자식을 가지는 자료구조 입니다. 보통 3차원의 공간을 재귀적으로 옥탄트(Octant)라고 하는 8개의 공간으로 나눈 것입니다. 2. 사용 분야옥트리는 3D 공간을 분할하여 선형적인 탐색보다 훨씬 빠른 속도의 탐색을 보장합니다. 1. 3D공간에서 오브젝트 Picking 속도 최적화 2. A* 알고리즘과 함께 사용함으로 길찾기 속도 최적화 3. 어째서 더 빠른가?오브젝트를 picking한다고 예시를 들어보도록 하겠습니다. 기존 로직은 level의 primitivecomponent를 가진 오브젝트를 선형적으로 순회하며 ray의 좌표와 오브젝트의 좌표계를..

알고리즘 2025.07.26

[게임테크랩] 개임테크랩 추천인 이벤트

안녕하세요 여러분 오늘은 정글 테크랩 추천인 이벤트로 여러분께 글을 작성하게 되었습니다. 최근에 블로그 조회수를 보면 많은 분들이 제 블로그에서 테크랩과 관련된 정보를 얻어가신것 같아서 열심히 글을 쓴보람이 느껴집니다. 혹시나 지원을 하시게 된다면 추천인으로 저를 써주신다면 글을 쓴 보람이 더욱 커질 것 같습니다. 물론 강요도 할 수 없고 저를 써주시는 것이 필수는 아닙니다. 그렇지만.. 저의 글로 테크랩과 관련된 정보를 얻어서 도움이 되셨다면 한번씩 부탁드리겠습니다. 게임테크랩 1기 채우재 추천으로 써주시면 감사드리겠습니다. 메일로 질문은 항상 받고 있습니다. 제 다른 글을 참고하셔서 메일확인하시고 궁금하신 부분은 FAQ내용을 제외하고 질문해주시면 감사하겠습니다. 그럼 좋은하루 보내시고 원하는 결과..

후기 2025.07.15

[게임테크랩] 게임테크랩 FAQ

1. 개요게임테크랩 2기 지원이 시작됐고, 제 메일로 많은 분들이 질문을 주셨는데 빈번하게 나온 질문들 한번 답해드리려합니다. 여기서 나온 내용 외에 추가로 궁금하신 부분만 메일보내주세요. 2. 질문 리스트1. 합격한 사람들 실력(그래픽스, C++)/스펙이 궁금하다저 같은 경우엔 그래픽스는 테크랩 준비하면서 처음 접해봤고, C#이나 다른 언어로 개발해본 경험은 상당히 많았습니다. 개인 프로젝트, 팀 프로젝트, 인턴 등 개발 경험이 많이 있었습니다.그래픽스 같은 경우엔 지식이 전무하여도 입학시험 자료를 통해 열심히 공부하시면 커버가 가능합니다.(제가 그 증거이기도 합니다.) 물론 이게 가능하려면 C++ 지식은 필수적으로 있어야 하고 컴퓨터공학과에서 배우는 자료구조, 운영체제, 알고리즘 등의 지식이 바탕이 ..

후기 2025.07.08