본문 바로가기

분류 전체보기

(77)
UNITY 게임개발트랙 - 내일배움캠프 54일차 TIL 내일배움캠프 54일차 TIL 오늘도 오전에 기술면접 예상질문을 풀어보고 팀 프로젝트 개발을 진행했다. 가비지 컬렉터 회피 전략 C#에서 가비지 컬렉터는 메모리 관리를 자동화해주는 역할을 하지만, 때로는 GC로 인해 성능 저하가 일어날 때가 있다. 따라서 다음과 같은 가비지 컬렉터 회피 전략이 필요하다. 메모리 할당 최소화하기 - 가비지 컬렉터는 메모리를 할당하고 해제하는 작업을 담당하기 때문에 메모리 할당을 최소화하면 가비지 컬렉션의 빈도를 줄일 수 있다. 가비지 컬렉션 빈도 줄이기 - GC.Collect() 메서드를 직접 호출하는 것은 피하고, 필요한 경우에만 호출한다. IDisposable 인터페이스 사용 Finalizer 사용 최소화 값 타입 사용 팀 프로젝트 개발 - 절차적 맵 생성 먼저 통로와 ..
UNITY 게임개발트랙 - 내일배움캠프 53일차 TIL 내일배움캠프 52일차 TIL 오늘도 오전에 기술면집 질문들을 풀어보고, 이후 팀 프로젝트 개발을 진행했다. 가비지 컬렉터 객체 지향 프로그래밍 언어에서는 동적으로 메모리를 할당한다는 개념이 존재하고, 따라서 동적으로 할당된 메모리를 해제해아할 필요도 있다. C# 코드는 .NET 위에서 실행되며 CLR을 통해 자동으로 필요없는 동적 메모리를 해제하는 GC를 지원한다. 팀 프로젝트 개발 - 맵 랜덤 생성 몬스터를 포획하는 씬에서, 로그라이크 요소를 위해 맵을 랜덤으로 생성하는 기능이 필요하다. 이를 위해 처음에는 BSP(Binary Space Partitioning)알고리즘을 사용해서 구현해볼까 했지만, 이번 프로젝트 특성상 정교하게 오브젝트를 배치하고 설계할 필요가 있어서 BSP 알고리즘은 적합하지 않다고..
UNITY 게임개발트랙 - 내일배움캠프 52일차 TIL 내일배움캠프 52일차 TIL 오늘도 오전에 기술면집 질문들을 풀어보고, 이후 팀 프로젝트 개발을 진행했다. struct와 class struct와 class 모두 변수 및 메서드를 선언할 수 있다. 하지만 struct는 값 형식으로, 메모리의 스택 영역에 저장되며, 상속이 불가능하다. 단, 멤버로 클래스를 가지거나 코드가 너무 길 경우 힙 영역에 저장되기도 한다. 반면 클래스는 참조형식으로, 힙 영역에 저장되며, 상속이 가능하다. 팀 프로젝트 - 전략 패턴을 이용한 Weapon 개발 : Weapon 하위 클래스 어제 전략 패턴으로 Weapon 클래스를 구현했었는데, 오늘은 Weapon을 상속하는 다양한 하위 클래스들을 제작하려고 했다. 금방하고 다른 작업으로 넘어갈 줄 알았으나 생각보다 예기치 못한 문제..
UNITY 게임개발트랙 - 내일배움캠프 51일차 TIL 내일배움캠프 51일차 TIL 오늘도 오전에 기술면집 질문들을 풀어보고, 이후 팀 프로젝트 개발을 진행했다. ref와 out의 사용 시 차이 메서드를 호출할 때, 기본 자료형인 매개변수는 값 형식으로 전달되기 때문에 메서드 내부에서 변화가 일어나도 바깥의 변수에 해당 수정사항이 반영되지 않는다. 메서드 내부의 변화를 바깥의 변수에도 반영하고 싶을 때 ref 또는 out 키워드를 사용한다. 두 키워드 모두 매개변수를 참조 형식으로 전달한다는 점에서 비슷하지만, 가장 큰 차이점은 바로 초기화이다. ref 키워드로 매개변수를 전달하는 경우, 전달하기 전 변수의 초기화가 필수적이다. 반면 out 키워드로 전달하는 경우 매개변수를 전달하기 전 명시적으로 초기화를 해줄 필요가 없으며, 대신 이전 값을 아예 무시하기 ..
UNITY 게임개발트랙 - 내일배움캠프 50일차 TIL 내일배움캠프 50일차 TIL 오늘부터 아침에 기술면접 대비 면접 질문들을 풀어보기로 했다. 기술면접 대비 - float와 int의 표현 가능한 수의 범위가 다른 이유(부동소수점!) int 자료형은 고정 소수점 방식으로, 32비트중 하나의 비트는 부호를 나타내고 나머지 31비트로 정수를 나타내어 -2의 31승(-2,147,483,648)부터 2의 31승에서 1을 뺀 값(2,147,483,647)까지 표현할 수 있다. 반면 float 자료형은 부동소수점 방식으로서, 32개의 비트 중 1bit는 부호 비트, 8bit는 지수비트, 그리고 나머지 23bit는 유효자리비트로 사용하여 수를 표현한다. 지수비트로 인해 int형과 같은 32비트임에도 불구하고 훨씬 더 넓은 범위의 수를 표현할 수 있다. 하지만 int는 ..
UNITY 게임개발트랙 - 내일배움캠프 49일차 TIL 최종 프로젝트 - 아이디어 회의 오늘은 최종 프로젝트 발제가 있었다. 발제 후 팀원들과 모여 어떤 게임을 만들지 회의하는 시간을 가졌다. 회의 결과 가장 우리 역량으로 실현할만 하고 포트폴리오로 가치가 있을 만한 경영 + 덱빌딩 게임을 만들기로 했다. 하루 종일 아이디어를 짜내고 MVP(Minimum Value Project) 구현을 위한 와이어프레임 및 플로우차트를 작성했다. 조금 더 계획을 구체화한 다음 내일부터 MVP 개발을 시작할 예정이다. 싱글톤 패턴 싱글톤(Singleton) 패턴은 말 그대로 객체의 인스턴스가 하나만 생성되도록 하는 패턴이다. 특정 클래스의 인스턴스를 한 개만 생성하고, 해당 인스턴스에 전역적으로 접근할 수 있는 메커니즘을 제공한다. public class Singleton ..
UNITY 게임개발트랙 - 내일배움캠프 48일차 TIL 팀 프로젝트 개발 - 포톤 이번 팀 프로젝트를 개발하며 멀티플레이를 구현하기 위해 처음으로 포톤을 사용했다. 포톤은 멀티플레이 게임용 유니티 패키지인데, 포톤이 제공해주는 서버와 API들을 통해 네트워크에 대해 자세히 알지 못해도 쉽게 멀티플레이 게임을 개발할 수 있다. 이번 프로젝트에는 PUN2를 사용했다. 문제의 시작 팀원들 모두 포톤을 사용하는 것이 처음이다 보니, 어떤 식으로 개발을 해야 하는지 몰랐다. 그래서 와이어프레임을 작성하고 업무를 분담하고 각자 파트를 개발할 때, 일단 로컬에서의 작동만 고려하며 개발하고, 나중에 포톤을 연결했을 때의 경우는 고려하지 않아서 대참사가 발생했다. 나의 경우는 컷씬 제작과 레벨 디자인을 맡았었다. 레밸 내에 구현된 기능들로는 컷씬 재생 후 플레이어 오브젝트 ..
UNITY 게임개발트랙 - 내일배움캠프 47일차 TIL 내일배움캠프 47일차 TIL 오전에 코드카타 후, 팀 프로젝트 개발을 진행했다. 코드카타 - 기억에 남는 문제 [level 1] 대충 만든 자판 - 160586 문제 링크 성능 요약 메모리: 31.5 MB, 시간: 4.26 ms 구분 코딩테스트 연습 > 연습문제 채점결과 정확성: 100.0 합계: 100.0 / 100.0 제출 일자 2023년 10월 1일 0:51:54 문제 설명 휴대폰의 자판은 컴퓨터 키보드 자판과는 다르게 하나의 키에 여러 개의 문자가 할당될 수 있습니다. 키 하나에 여러 문자가 할당된 경우, 동일한 키를 연속해서 빠르게 누르면 할당된 순서대로 문자가 바뀝니다. 예를 들어, 1번 키에 "A", "B", "C" 순서대로 문자가 할당되어 있다면 1번 키를 한 번 누르면 "A", 두 번 누..