부트캠프 분류 126

2025 01 02 TIL

머터리얼 쉐이더 옵션의 맵요소BaseMap: 기본 텍스쳐로, 모든 텍스쳐 요소의 기본 색상이나 패턴을 정의합니다.NormalMap: 표면의 굴곡과 거칠기를 시뮬레이션하여 물체의 세부 텍스쳐를 더욱 생생하게 보이게 합니다.OcclusionMap: 표면의 어둠과 밝기를 조절하여 더욱 깊이감과 세밀한 디테일을 추가합니다.BC N AO 텍스쳐를 넣어주었고Export하는 과정에서 R 이란 키워드의 텍스쳐도 같이 가져와졌는데 이것은 용도를 아직 모르겠다. Fbx 는 메쉬를 정의하는 데이터를 가져고 있다. 추출할 때 이 fbx 파일안에 메쉬가 들어있는 경우를 잘 살펴보자프리팹에 LOD 가 있는 경우 이것은 거리에 따라 랜더링해주는 것을 다르게 해준다고 한다.따라서 거리에 따른 다른 메쉬들이 다 프리팹에 포함되어있다...

2024 12 31 TIL

오늘 TIL은 개발적인 측면보단 스스로 개발 방식에 대해 좀 생각해보는 시간을 가졌다. 오늘 하루는 귀신 퇴치 퍼즐을 만드는 것을 구상하고 퍼즐 클래스의 요소들을 추려서 리팩토링 하는 것을 하려하였다.이 귀신 퇴치 퍼즐은 기존의 퍼즐들과 다른 결이 있어 퍼즐 클래스를 다시 메인퍼즐, 서브 퍼즐로 나누었고서브 퍼즐을 상속받은 귀신 퇴치 퍼즐을 구상해보고 제작해보려하는 중에 튜터님께서 오셨다. 튜터님께서 진행 상황을 보러오셨을 때 저번주에 너무 시각적인 부분이 어색한 부분에 대해 매달려서 한주를 보내었다는 것을 깨달았다. 혼자서 너무 많은 시간을 중요하지 않은 부분에 사용하였다고 자각하였다.또한 메인 퍼즐의 가짓수가 부족한데도 부수적인 부분을 신경쓰고있었다는 것을 자각하였다. 그래서 일단 퍼즐 클래스를 갈래..

2024 12 30 TIL

audioSource.Play() 는 매개변수가 있는 것과 없는 것을 통해 지연시간 여부를 줄 수 있다. ulong 자료형의 매개변수를 넣어 사용해보면 기능은 정상적으로 되나 아래의 노란색 경고 메세지가 뜬다.Delayed playback via the optional argument of Play is deprecated. Use PlayDelayed instead!UnityEngine.AudioSource:Play (ulong) 이는 더 이상 play메서드에 매개변수를 넣어 사용하는 것을 권장하지 않으며 PlayDelayed 메서드를 사용하는 것을 권장한다고 한다. 이유를 찾아보니 성능상의 이점 때문보다는 메서드 이름을 통한 직관성 때문에 권장하는 것 같다. audioSource.Play() //지..

2024 12 27 TIL

양초의 색 변경이 유니티의 기본 색 (color.red 등) 을 제외하곤 다 저런식으로 배경색을 채워버리는 현상이 발생하였다.사용자 지정 색상을 이용하기가 힘듬 유니티에서 색을 지정할 땐 (1,0,0,1) 과 같이 0~1까지의 값을 이용하여 나타낸다고한다.  따라서 new Color(255f,0f,0f,255f) / 255f 처럼  아예 RGB 값에 255를 나누어 유니티 형식으로 만들거나Color32 클래스를 사용하는 것을 권장하는 듯하다. 일단 이 문제는 해결하였음에도 원하는 대로 결과가 나와주지 않고 (색이 너무 약해서 이건 밝기 조절의 문제이려나)  현재 사진처럼 맨 마지막 양초만 주변에 빛을 비추는 현상이 목격되어 왜 그런지 알아봐야할 것 같다. 튜터님께 질문을 통해 답을 찾았다. 일단 먼저 광..

2024 12 26 TIL

양초를 사용하여 퍼즐의 힌트를 나타내고 싶어 에셋의 양초 요소만 가져오려고 하였다.양초 요소만을 가져오려고 하다보니 이해가 안되는 부분이 너무 많아서 질문을 하였었다.질문을 하다보니 내가 너무 원론적인 부분까지 파고드려하는 경향이 있다는 것을 알았다.에셋을 사용해 개발을 하는 것이 이 원론적인 부분을 생략해두고 사용하는 것이기에 자세하게 알아보는 것은 나중으로 생각해두기로 하였다. 일단 내가 가져와야하는 요소만 정리해놓는다.   메쉬 : 화면상에 보여지는 3D 모델을 정의하는 데이터 점 선 면으로 이루어진 데이터이다.  fbx 파일이 주로 메쉬인듯하다. 머터리얼 : 물체의 표면 속성  메쉬의 표면을 시각적으로 나타내는 요소 머터리얼의 요소 : 쉐이더 : 메쉬의 표현방법의 정의한 것  (반사, 애니메이션,..

2024 12 24 TIL

배경음악과 효과음을 사용하기 위해 사운드 매니저를 제작해보고 있다.현재 사운드 매니저의 제작 목적은 특정 상황에서 사용될 배경음악과 효과음을 설정해주고 볼륨 조절과 같은 기능을 관리하는 역할을 해주고 싶다.  public enum eBGMType{ LobbyBGM, InGame_NormalBGM, InGame_ChaseBGM, TestBGM}//효과음//public enum eSFXType{ MatchedPuzzleSFX, UnmatchedPuzzleSFX,}public class SoundManager : MonoSingleton{ public AudioSource audioSource; private Dictionary soundPool = new Dicti..

2024 12 23 TIL

중간 발표 종료 피드백 받은 내용 :  1.유저입장에서 어떤 게임을 할지 생각하여 설계- 게임에 컨셉에맞게 스토리 진행을 이어나가는 것을 만들어보는 것이 좋다. 2. 멀티플레이 게임 같은 경우 면접관들이 게임을 직접 플레이하기가 어렵다.면접관들에게 어필할 수 있는 것을 리드미로 작성해놓는 것이 중요하다.- 리드미에서 보여줄 수 있는 것을 소개영상,기술 스택, 플레이 방식 등으로표현해준다. 3. 유저 친화적으로 설계를 하는 것이 중요 현재 너무 개발적으로만 설계되어 있다. 피드백을 받은 내용을 토대로 준비할 것:1.비주얼적인 파트 :  사운드,오브젝트를 적절한 에셋으로 대체 ,UI 개선, 맵 , 스카이박스 2.코드 : 사운드 매니저 , 메인퍼즐 ->2번 퍼즐->3번 퍼즐 ,  인벤토리 시스템 오류 수정, ..

2024 12 20 TIL

기술 면접 예상 질문을 준비하면서 정리한 내용들을 위주로 오늘 TIL을 작성한다.  스택과 힙의 차이 스택 스택은 정적으로 메모리를 할당받으며 처리가 빠르지만 메모리의 할당에 제한이 있습니다.스택에 할당한 메모리는 블록이 끝나면 자동으로 스택에서 빠져나갑니다. (자동으로 메모리 관리)지역변수와 매개변수가 이에 해당하는 예시입니다. 힙힙은 동적으로 메모리를 할당할 때 쓰입니다. 스택에서 처리하기 힘든 크기를 메모리를 다루기 위해 사용됩니다. 런타임 중 할당되는 메모리는 힙에 할당됩니다.가비지 컬렉터가 지원되지 않는 툴들은 프로그래머가 직접 할당을 해제해주어야 합니다. (메모리 누수 방지) C#에서는 가비지 컬렉터라는 기능이 있어 자동으로 힙의 메모리를 정리하여 주지만가비지 컬렉터의 정리는 완벽하진 않으며 ..

2024 12 19 TIL

시연 영상을 찍기 위해서 빌드를 하는 과정에서 발생한 오류이다.  C#을 사용하고 있는 유니티에서 C++ 에 관한 오류가 발생하는 것이 의아했는데알고보니 IL2CPP 라는 것이 C++로 변환하는 중간 언어라고 한다. 스크립트 내의 C# 코드를 C++코드로 전환하고 플랫폼용 네이티브 바이너리 파일(.EXE,APK 등) 을생성한다고 유니티 공식문서에서 이야기하고 있는데 네이티브 바이너리 파일이 무엇인지 왜 C# 코드를 C++로 변환하는 과정이 필요한지를 이후 시간날 때 알아보면 좋을 것 같다. 아무튼 이 문제의 해결방법은 VisualStudio의 수정 기능에서 C++ 을 통한 게임개발 항목들을 받아주는 것이었는데명시되어 있는 바로는 언리얼 엔진에 쓰이는 툴이라고만 쓰여있어서 이것도 왜 해결방안이 되었는지 알..

2024 12 18 TIL

현재 계획상 내일까지 한사이클을 완성시켜야한다. 나머지 부분들은 완료가 되었고 내가 맡은 퍼즐쪽만 남아있다. 현재 계획상 교수쪽 정보 -> 대학원생 쪽 상호작용 -> 퍼즐 클리어 -> 보상 아이템 -> 다음 퍼즐 해금으로한 사이클을 계획해놓은 상태이다. 현재 겪고있는 문제는 오브젝트에 붙인 SO끼리 서로 같은 데이터로 인식을 못하는 상황이었다.  IEnumerator ScanEmblem() { Collider[] colliders = Physics.OverlapSphere(transform.position, radius); foreach(Collider collider in colliders) { if(!collider.CompareTag("Player"))contin..