개발 161

C - 포인터

포인터의 필요성이전에 배열을 배우면서 5천만개 크기의 배열을 생각해봤습니다. int 자료형의 크기는 4byte이므로, 5천만개 배열의 크기는 2억바이트입니다. 이걸 어딜가나 들고다니기엔 무리입니다. 배열은 연속적인 메모리에 저장된다고 했으니까 자료형과 시작 주소만 알면 될 것 같습니다. 시작 메모리 주소로 가서 자료형을 통해 얻은 한 칸의 크기로 모두 접근 가능하기 때문입니다. 포인터(Pointer) [중요 샘플 코드]메모리 주소를 저장하기 위한 변수.자료형 변수명 = 값;자료형* 변수명 = 메모리주소값; // 자료형쪽에 Asterisk를 붙힙시다. // 변수명쪽에 Asterisk를 붙히면 뒤에서 배울 역참조 연산자와 심히 헷갈립니다. [심화] 포인터를 공부하다보면.단순히 “자료형* 변수명”으로 적..

C - 동적 할당, 구조체

메모리 레이아웃(메모리 구조)메모리 레이아웃은 크게 스택 메모리, 힙 메모리, 코드 섹션, 데이터 섹션으로 나뉩니다. 이번 단원에서 살펴볼 메모리는 힙 메모리입니다. 스택 메모리의 단점1️⃣ 스택 메모리에 저장되는 지역 변수(배열 등)의 크기는 컴파일 타임에 고정됩니다. 런타임에 더 필요해진다 해도 크기를 늘릴 수 없습니다.2️⃣ 함수가 종료되면 해당 스택 프레임에 더이상 접근 불가능합니다. 즉, 지역변수의 수명은 함수의 수명과 함께합니다. 더 오래 보존하려면 전역변수 혹은 정적변수로 선언해야 합니다. 근데 이 변수들은 너무 또 극단적입니다. 프로그램의 수명과 함께합니다. 📌 런타임 시에 프로그래머가 원하는 만큼(1번 만족) 원하는 때에 생성 및 삭제(2번만족) 가능한 메모리가 필요합니다. 힙 메모..

Unreal 언리얼 엔진 학습 - 카메라 세팅 및 전환

목표게임 시작 시 목표 지점을 보여주고 플레이어의 시점으로 전환한다. 1. 씬 구성 우선, 게임 시작 시 친구 로봇이 달려나가는 모습을 보여주기 위해 내비메시 바운드 볼륨 설정 후 AI Move To 로 친구 로봇을 달려나가게 한 후, 문이 닫히는 것까지 구현하였다. 2. 카메라 세팅 시네마틱 카메라와 일반 카메라가 디테일 설정이 조금 다른데 이번에는 시네마틱 카메라로 진행하였다. 카메라를 배치하면 기본적으로 Constrain Aspect Ratio가 적용되어있고, 화면에 꽉 차게 촬영이 되지 않는다. 적용을 해제해줘야 마스킹 부분을 없앨 수 있다. 줌인/줌아웃은 Current Focal Length를 조절하면 된다. 1. 카메라 전환 레벨 블루프린트에서 플레이어 컨트롤러 입력을 막고, 세팅한 카메..

Unreal 언리얼 엔진 학습 - 간단한 UI 애니메이션 구현

위젯 블루프린트를 만든다 Play Animation 노드는 애니메이션을 플레이해주며, 애니메이션은 변수로 저장되기 때문에 Get으로 세팅해주면 된다. 더보기 ✅ 1️⃣ Text 로 추가하는 경우👉 Text 위젯 자체를 애니메이션조절 가능한 것들:Render OpacityRender Transform (이동/회전/스케일)Color and OpacityFont Size 등📌 특징실제 위젯이 화면에서 움직임부모 레이아웃 계산과는 별개GPU 레벨에서 후처리처럼 움직임💡 예시텍스트 페이드 인살짝 위로 튀어나오기흔들림 효과👉 대부분의 연출은 이걸 사용✅ 2️⃣ Text (Horizontal Box Slot) 로 추가하는 경우👉 레이아웃 슬롯을 애니메이션Horizontal Box Slot이 조절하는..

260227 Unreal 부트캠프 - 애니메이션 블루프린트 만들기, 상태 기계(State Machine, 스테이트 머신)으로 애니메이션 조정하기

애니메이션 에셋의 종류1. 애니메이션 시퀀스걷기, 뛰기, 공격 등 단일 모션이 들어있는 파일2. 애니메이션 몽타주 여러 시퀀스를 재생 구간별로 편집, 합칠 수 있는 특수 에셋(주로 특정 이벤트 처리에 사용)3. 블렌드 스페이스 여러 애니메이션 시퀀스를 축 값(X/Y)에 따라 자연스럽게 섞어 재생하기 위한 에셋. Anim Graph애니메이션 상태전환과 블렌드 로직을 연결하는 메인 그래프이다.최종적으로 캐릭터 메시에 적용될 포즈를 결정한다.Event Graph캐릭터의 속도, 방향, 입력 값 등을 수집하여 애니메이션 변수를 관리한다. 움직일 때 블렌드 스페이스 만든다컨트롤을 눌러 X자를 움직이면 값에 따른 변화를 볼 수 있다. 상태 기계(State Machine) 만들기 정해진 여러 상태 중 하..

260226 Unreal 부트캠프 - 플레이어 입력 받기/ 플랫포머 디자인해보기 - 깜빡이는 플랫폼

플레이어 입력 받기는 체크할 게 많아서 언제나 헷갈린다. IA_Move, IA_Look, IA_Jump 만들고 Input Mapping Context 파일에 연결해주면 된다.Input Mapping Context 파일은 설정 중에 None 하나라도 설정하고 저장을 눌렀다간 제대로 저장하려 해도 에러가 나니 주의해야한다. 아래 Get Actor Forward Vector와 Get Actor Right Vector는 캐릭터 기준의 앞뒤 양옆 방향으로 방향 설정을 해주는데, 이와 동시에 플레이어가 움직이는 방향이 앞이 되도록 설정해놓으면 충돌이 나서 좌우로 이동하지 못하고 뱅글뱅글 돌게된다. 이를 방지하기위해 이동 방향에 컨트롤러 기준의 Z축 값을 받는 노드로 변경해준 것이다. 강의 튜토리얼용 OnlineL..

260225 Unreal 부트캠프 - 구조체를 활용한 블루프린트 탄약 시스템 만들기 + 화면에 표시하기

자바로 웹만 하던 나로서는 블루프린트를 이용한 구조체와 Enum 만들기는 아직 손에 안 익는 것 같다. 그나마 Enum은 꽤 썼지만 블루프린트 파일로 만들어서 가져오기하는 것이 번거롭게 느껴진다. 블루프린트 구조체는 Set 명령어로 데이터 수정 시에 반드시 모든 변수들을 지정해줘야해서 번거롭다. 코드처럼 item.name으로 바로 넣을 수 있으면 좋을텐데. 오늘부터는 언리얼 엔진을 영문버전으로 세팅하여 사용하기로하였다.영문버전의 Enum과 Structure 위치는 이러하다. 1. 최대 탄약 수에 맞춰 탄환을 갖고 있을 경우, 재장전 불가능2. 좌클릭 시 탄약은 줄고 온도는 올라감.3. T를 누르면 온도가 1도 내려감. 0도 아래로는 내려가지 않는다. 쿨다운은 Timer를 사용하면 더 자연스럽게 구..

260223 Unreal 부트캠프 - 언리얼 엔진에서 간단하게 스태틱 메시 수정하는 법 / 본캠프 둘째날

사전 캠프를 들었기 때문에 아직 특별히 어려운 점은 없다. 기존에 있던 인터랙티브 공간을 업그레이드했다.문 스태틱 메시를 떼어 문틀과 문짝을 분리했다. Seperate 하면 이렇게 분리가 되는데, 기존 메시 파일에서도 떨어져나간 부분이 없어진다. 떨어져나간 부분을 복구하려면 원본 메시에서 메시 리임포트를 눌러주면 된다. 기존 스태틱 메시에서 막히지 않아야하는 부분이 막혀있다면, 스태틱 메시를 열어 필요에 따라 수정해준다. C언어 세션더보기 챕터 1-8 : 자료형 수업 목표자료형의 필요성에 대해 알아본다.다양한 자료형들을 배워본다.자료형의 필요성컴퓨터는 아주 단순히 말해서, 계산하고 저장하는 기계. 우리가 입력한 모든 값은 결국 0과 1로 저장됩니다. 하지만 컴퓨터는 그 0과 1의 묶음들이 무엇을..

Unreal 언리얼 엔진 학습 - 게임속 TV 화면에 영상 출력하기

게임 중 TV에서 영상이 나오는 연출은 상당히 흔하다. 이를 적용하는 법을 알아보았다.https://dev.epicgames.com/documentation/ko-kr/unreal-engine/using-media-playlists-in-unreal-engine 1. 콘텐츠 경로 밑에 Movies라는 폴더를 생성한다. 2. 해당폴더에 적용할 영상 파일을 넣는다. 3. 콘텐츠 브라우저 -> 미디어 -> 미디어 플레이어(텍스처 에셋 출력 옵션 체크) 4. 미디어 재생 확인 및 실행시 재생/셔플/루프 옵션 체크 5. 생성된 미디어 텍스처 파일 열어 미디어 플레이어 연결 6. 새 머티리얼 생성 7. 셰이딩 모델 -> Unlit으로 설정하고 이미시브 컬러에 컨텐츠 드로어에서 미디어 텍스처 드래그하고 연결 8..