전체 글 49

나의 게임 개발자가 되는 이야기 + 첫 취뽀 성공!

2025년 2월에, 연나이 26살의 나이로 대학교 학사과정을 졸업한 나는,약 3개월간의 취준 기간을 거쳐 원하는 회사에 취업할 수 있었다! 지금까지의 과정이 짧다면 짧지만, 내 딴에는 꽤나 재미있던 것 같아서일기처럼 남겨보려고 한다. 밑은 내 인생을 담은 작은 일기가 있으니, 취업 관련 내용만 보고싶은 사람은 스크롤을 쭉 내리면 되겠다. 초딩, 게임 개발자의 꿈을 가지다. 내 게임 개발자의 꿈은 초등학교 5학년때부터 시작이었다.그 당시 가장 친한 초딩 친구 한 명이 나와 우연히 취미가 잘 맞았고,어릴 때 스크래치를 가지고 놀았던 추억(?)을 발판삼아12살짜리 꼬마애의 취미는 마인크래프트 모드, 플러그인 만들기, GameMaker 8.0으로 플래시게임 만들기였다. 그 당시 친구가 가지고 있던 아이리버 M..

주절주절 2025.04.29

유니티 C# 스크립트 코드 한글 깨짐, 인코딩 해결방법

한글로 주석을 해놓은 유니티 엔진의 C# 스크립트 코드 부분에서 깨짐 현상이 발견되었다.이는 문자 인코딩 방식때문에 일어나는 문제이기 때문에, 인코딩을 바꾸어주면 된다. 파일이 UTF-8로 저장되어 있지 않았기 때문에 한글을 처리할 수 없던 문제라,앞으로 코드가 저장될 때 UTF-8을 지원하게끔 처리할 수 있다. 이미 코드에 문제가 발생한 기존 코드는 따로 저장해야 하고,앞으로 만들어질 모든 스크립트는 알아서 UTF-8로 저장되게끔 설정할 수 있다. 1. 이미 문제가 발생한 스크립트 수정우선 스크립트를 열고,파일 - 다른 이름으로 저장을 누른다. 이후 저장을 어디에 할지 로컬 탐색기가 뜰 때,인코딩하여 저장을 클릭한다. 인코딩 방식을 한국어 - 코드 페이지 949가 아닌,유니코드 (UTF-8) - ..

[게임 그래픽스] 컬링(Culling)에 대하여

컬링(Culling)이란?게임 화면에서 보이지도 않는 오브젝트까지 전부 매 프레임마다 렌더링해버리면, GPU가 해야할 일이 너무 많아져 너무 쉽게 렉이 걸리고, 게임의 품질이 좋지 않아질 것이다.그래서 대부분의 게임 엔진에서 렌더링 과정엔 컬링(Culling)이라는 기술을 통해 그릴 필요가 없는 것은 그리지 않는다. 쉽게 말해, 컬링은 화면에 보일 필요가 없는 오브젝트는 렌더링 대상에서 제외시키는 과정이다.즉 씬이 복잡해질수록 그 효과는 더욱 비대해진다. 컬링의 종류1. 프러스텀 컬링 (Frustum Culling)카메라가 보는 시야각(뷰 프러스텀) 안에 들어오는 오브젝트만 렌더링하는 방식이다.뷰 프러스텀은 카메라 시야를 입체적으로 잘라낸 피라미드 모양이다.이 범위 안에 오브젝트의 바운딩 박스(Bound..

면접에 대한 회고록

오늘 거의 처음으로 게임 개발 클라이언트 직무 면접을 보았다.당연히 예상 질문들에 대해 준비를 잘 해갔지만,면접 경험이 많이 없는 나에게 몇 가지 시련이 찾아왔다. 면접장을 나오자마자 이렇게 대답할걸, 하고 후회하는 사항들을 몇가지 적어보려고 한다.추후 미래에 또 다른 면접을 보는 나에게 전달하는 메시지임과 동시에 회고록이다.  1. 버텍스(Vertex) 쉐이더와 프레그먼트(Fragment) 쉐이더렌더링 파이프라인을 공부하면 거의 처음에 배우는 개념 중 하나로,쉐이딩을 하는 과정에서 나오는 단계 중 유명한 두 가지이다. 나는 버텍스 쉐이더에 대해 아주 조금 주워들었던 것이 있었기에,정점이라는 키워드를 꺼내긴 했지만, 프레그먼트 쉐이더에 대해선 거의 아무것도 몰라 말을 많이 절었다.가장 크리티컬하게 실수를..

주절주절 2025.04.09

[게임 그래픽스] 렌더링 파이프라인(Rendering Pipeline)에 대하여

게임 클라이언트 개발자에게 가장 중요한 과목은 아니지만,설계 및 개발 다음으로 개발자에게 중요한 것이 컴퓨터 그래픽스와 게임 서버이다. 오늘은 컴퓨터 그래픽스에서 가장 중요한 개념 중 하나인 렌더링 파이프라인에 대해 간단히 짚어볼 예정이다. 렌더링 파이프라인(Rendering Pipeline)이란? 렌더링 파이프라인이란, 실제로 씬에 존재하는 컨텐츠를 GPU가 화면에 그려 2D인 모니터에 출력하기까지의 일련의 과정을 의미한다. 생각해보니 조금 신기하다.게임 속 세상과 오브젝트 배치는 모두 3D임이 분명한데,실제로 모니터에 출력되는 것은 3D처럼 보이는 2D이다. 3차원 세상의 오브젝트들이 평면상의 모니터에 출력되기까지엔 많은 과정이 필요하다.우선 유니티 엔진에서는 렌더링 파이프라인에 가장 중요한 3단계..

유니티의 스크립터블 오브젝트(Scriptable Object)란 무엇일까

Scriptable Object가 무엇일까? 좋은 설계의 기준에는 항상 쉬운 유지보수가 따라붙는다.게임을 만들 때도 항상 추후에 밸런스 조절이나 테스트를 위해 값을 조정해야 하는 일이 많다. 지금까지 우리는 단순히 그런 값을 로직 안에 명세해두거나,SerializeField로 직렬화해서 인스펙터 내에서 적어두는 것이 한계였다.   캐주얼한 게임이나 가벼운 게임, 유일한 객체 등에서는 이렇게 만드는 것이 좋을 수 있다.그러나 만약 플레이어블 캐릭터가 여러 개이거나,게임 내 등장하는 무기가 수십개가 될 경우, 이는 매우 좋지 않은 선택이 될 수 있다. 밸런스 조절이나 테스트를 할 때 일일히 해당 클래스로 가서 값을 수정해야 하고,이는 하드코딩적인 성질을 띄게 되며 기획자나 아티스트와의 협업도 매우 힘들다. ..

유니티 스크립트 기본 주석 템플릿 제거하기

using System.Collections;using System.Collections.Generic;using UnityEngine;public class Player : MonoBehaviour{ // Start는 첫 프레임 업데이트 전에 한 번 호출됩니다 void Start() { } // Update는 프레임마다 한 번씩 호출됩니다 void Update() { }} 유니티로 개발을 하다보면 스크립트를 참 많이 작성하게 되는데,그 때마다 Start와 Update 메서드가 적혀있는건 좋지만, 위에 주석은 슬슬 필요 없다고 느껴질 때가 있다.위 주석은 단순히 해당 메서드의 설명이기 때문이다. 그래서, 위 주석을 스크립트를 새로 생..

[A* Algorithm] A* 알고리즘의 개념과 구현

게임 속 적들은 모두 스스로 움직인다.즉, 본인의 위치부터 플레이어의 위치까지 스스로 경로를 파악하고 움직이고 있는 것이다. 그것도 무작위로 오는게 아닌, 최단 경로를 스스로 파악하고 걸어온다.그럼 컴퓨터는 이 최단 경로를 어떻게 아는걸까? 최단 경로를 얻는 알고리즘엔 BFS나 다익스트라(Dijkstra) 알고리즘들도 매우 좋은 답이지만,오늘 소개할 A* 알고리즘은 게임 엔진 속 최단 경로 탐색에 좋은 답이 될 것이다. A* 알고리즘의 출발 A* search algorithm - WikipediaFrom Wikipedia, the free encyclopedia Algorithm used for pathfinding and graph traversal A* (pronounced "A-star") is a..

알고리즘 2025.03.30

유니티와 C#에서의 GC (Garbage Collection)

가비지 컬렉션(Garbage Collection)이란?게임을 개발하다보면 당연히 무언가를 만들게 된다.그것이 플레이어든, 몬스터든, 아무튼 오브젝트를 만들어 게임 세상에 두게 된다.객체지향 프로그래밍(OOP)에서, 그런 사물 하나하나들을 객체라고 부른다. 'new' 키워드를 써서 객체를 메모리 어딘가에 만드는 것 까진 좋은데, 게임에서 그 객체가 역할을 다 하거나, 게임이 종료되었다면 더 이상 그 객체가 메모리에 있어선 안된다.메모리에 계속 남아있다면, 우리의 램은 32GB정도로는 어지간한 프로그램은 조금 돌리다 터져버릴 것이다. 즉, 더 이상 사용하지 않게 된 데이터는 메모리만 차지하는 가비지(Garbage)가 된다.그렇다면, 이 가비지를 알아서 찾아서 정리해주는 자동 청소부가 가비지 컬렉션(GC)이 ..

유니티 C# 제네릭, 제네릭 싱글톤 패턴 (Generic Singleton)

Unity로 게임을 개발하다보면, 게임을 총괄하는 매니저 클래스가 정말 요긴하게 쓰이곤 한다.그 뿐만 아니라 게임 맵에서 반드시 하나만 존재하는 것이 보장되는 객체가 꼭 필요할 때가 있는데,그럴 때 쓰는 아주 좋은 디자인 패턴이 바로 싱글톤 패턴이다. 싱글톤 패턴에 대해서는 이전에 포스팅 한 것이 있으니 복습해보자. [디자인 패턴] 싱글톤 패턴(Singleton Pattern)에 대하여이 오브젝트는 어디에서든지 반드시 하나만 존재했으면 좋겠어 이번 포스팅에선 유명한 디자인 패턴 중 하나인 싱글톤 패턴(Singelton Pattern)에 대해 알아보려고 한다. 그 전에 잠깐, 가볍게 디자suldangoo.tistory.com  제네릭 (Generic, 일반화) 이번 포스팅에서 강조하고 싶은 것이라면 바로 ..