⚙️ 엔진

🚀 게임 콘텐츠의 구조게임 제작을 위해 언리얼 엔진은 자체적으로 설계한 프레임워크를 제공함이를 게임플레이 프레임워크(gameplay framework)라 함. 줄여서 게임 프레임웍언리얼 게임 프레임웍의 각 구성 요소를 파악하고, 이를 확장하면서 게임을 제작하는 것을 권장 1. 월드게임 콘텐츠를 담기 위해 제공되는 가상의 공간월드는 시간, 트랜스폼, 틱을 서비스로 제공월드 세팅이라는 콘텐츠 제작을 위한 기본 환경 설정을 제공월드의 기본 단위는 액터(actor)로 정의되며, 액터 클래스는 언제나 접두사 A를 사용한다.월드의 역할게임 콘텐츠를 담는 공간 (transform)게임 콘텐츠의 진행 (tick)게임 흐름을 위한시간 (time)기본 환경 설정 (world setting)월드의 단위 구성 요소 (act..
🚀 PART1 (기초 체력 👉 언리얼 C++)JAVA, C# 언어가 가지는 모던 객체 지향 설계 기법을 학습한 후에언리얼 엔진의 자료 구조, 메모리 관리, 에셋 및 빌드 시스템을 파악하는 것을 권장언리얼 오브젝트 👉 모던 객체 지향 설계 👉 자료구조와 메모리 👉 에셋과 빌드 시스템성능과 메모리 관리를 위한 로우 레벨 제어 🚀 PART2 (기본기 👉 게임 프레임웍)게임을 구성하는 주요 요소를  파악해 전체 구조에 알맞게 커스터마이징 하되스케일 업에 대응할 수 있도록, 효과적인 구조로 설계하는 것이 중요함콘텐츠의 기본 구조 👉 캐릭터 애니메이션 👉 물리엔진과 이벤트 👉 게임데이터와 인공지능 👉 게임의 완성
에디터에서 확인 가능한 기능으로, editor를 상속받는다.코드에서 사용하는 TopDownCamera 는 이전 포스트에 나와있다.원 : 캐릭터를 기준으로 distance를 표시사각형들 : handle의 스케일 슬라이더를 사용해 만든 슬라이더 컨트롤using UnityEditor;using UnityEngine;namespace FastCampus.Cameras{ [CustomEditor(typeof(TopDownCamera))] public class TopDownCamera_Editor : Editor { #region Variables private TopDownCamera targetCamera; #endregion #region Main..
🌟 mainCamera에 붙는 스크립트using UnityEngine;namespace FastCampus.Cameras { public class TopDownCamera : Monobehaviour { #region Variable public Transform target; private Vector3 refVelocity; public float height = 5f; public float distance = 10f; public float angle = 45f; public float lookAtHeight = 2f; public float smoothSpe..
1. 언리얼 에디터 구성게임 제작을 위해 에픽 게임즈가 제공하는 저작 도구언리얼 엔진의 구성에디터 : 게임 제작을 위해 제공되는 응용 프로그램 (일반적으로 인식하는 언리얼 엔진)게임 빌드 : exe 파일과 리소스로 이루어진 독립적으로 동작하는 게임 클라이언트언리얼 에디터의 특징게임 개발 작업을 위해 다양한 폴더와 파일 이름 규칙이 미리 설정되어 있다.정해진 규칙을 잘 파악하고 프로젝트 폴더와 파일을 설정해야 함에디터에서 기확과 개발을 완료한 후, 게임 빌드를 통해 최종 게임 빌드를 제작하도록 설정언리얼 에디터에서 게임을 구성 👉 게임 빌드를 수행하고 프로그램을 패키징 2. 언리얼 에디터의 동작프로젝트 폴더의 uproject 확장자를 더블클릭하면 에디터가 트리거 됨에디터의 실행 방식uproject 확장자..
1. 언리얼 오브젝트 패키지단일 언리얼 오브젝트가 가진 정보는 저장할 수 있지만, 오브젝트들이 조합되어 있다면?저장된 언리얼 오브젝트 데이터를 효과적으로 찾고 관리하는 방법은?복잡한 계층 구조를 가진 언리얼 오브젝트를 효과적으로 저장과 불러들이는 방법을 통일해야 한다.언리얼 엔진은 이를 위해 패키지(UPackage) 단위로 언리얼 오브젝트를 관리함패키지의 중의적 개념언리얼 엔진은 다양한 곳에서 단어 패키지를 사용하고 있음언리얼 오브젝트를 감싼 포장 오브젝트를 의미함 👉 포스팅의 주제또한 개발된 최종 콘텐츠를 정리해 프로그램으로 만드는 작업을 의미함 예) 게임 패키징DLC와 같이 향후 확장 콘텐츠에 사용되는 별도의 데이터 묶음을 의미하기도 함 예) pkg 파일구분을 위해 언리얼 오브젝트 패키지로 부르는 ..
1. 직렬화오브젝트나 연결된 오브젝트의 묶음(오브젝트 그래프)을 바이트 스트림으로 변환하는 과정복잡한 데이터를 일렬로 세우기 때문에 직렬화거꾸로 복구시키는 과정도 포함해서 의미시리얼라이제이션 : 오브젝트 그래프 👉 바이트 스트림디시리얼라이제이션 : 바이트 스트림 👉 오브젝트 그래프장점현재 프로그램의상태를 저장하고 필요할 때 복원 가능 (게임의 저장)현재 객체의 정보를 클립보드에 복사해서 다른 프로그램에 전송 가능네트워크를 통해 현재 프로그램의 상태를 다른 컴퓨터에 복원 가능 (멀티플레이어 게임)데이터 압축, 암호화를 통해 데이터를 효율적으로 안전하게 보관 가능 🟩 구현시 고려할 점데이터 레이아웃 : 오브젝트가 소유한 다양한 데이터를 변환할 것인가?이식성 : 서로 다른 시스템에 전송해도 이식될 수 있..
🌟 mixamocharacters 👉 ybot 검색 👉 download 👉 format : FBX for Unityanimations 👉 idle, walk 등 다운로드with skin : 캐릭터 모델도 같이without skin : 애니메이션만 🟩 캐릭터 모델Riganimation typehumanoid : 3d max에서 사람 형태의 캐릭터 모델을 구성하는 뼈대로 설정되어 있는 것들을 가져오는 것generic : 사람의 형태가 아닌 것 기본적으로 Animator가 달려있음기본 애니메이션을 드래그 앤 드랍해주면 controller에 자동으로 삽입된다. using UnityEngine;using UnityEngine.AI;namespace FastCampus.Characters { [R..
character controller도 같이 있어야 한다.🌟 Navigation 활성화하기 Agents의 속성값들을 character controller의 값들과 동일하게 맞춰준다. 길찾기 오브젝트를 빌드할 메쉬 선택navigation 👉 object 👉 mesh renderersmesh를 포함하고 있는 게임 오브젝트들이 정렬된다.빌드할 오브젝트들을 선택offMeshLinks : 점프 및 순간이동 등 다른 행동들을 설정해줄 수 있는 것navigation area : walkable = 사용자가 이동할 수 있는 것으로 설정 cf. not walkable = 이동할 수 없는 것 terrains 선택 👉 하이어라키에 기존에 terrains 작업을 한 오브젝트들이 정렬됨mesh renderers와 동일하..
🌟 Rigidbody와의 차이점slope limit : 캐릭터가 올라갈 수 있는 경사도step offset : 계단과 같이 캐릭터가 올라갈 수 있는 높이물리엔진을 사용하지 않기 때문에 중력과 이동속도 같은 계산법을 직접적으로 구현해야 한다. 오브젝트 구성 오브젝트에 Character Controller 컴포넌트 추가 및 속성 변경✨ Character Controllerskin width : 캐릭터 컨트롤러와 다른 콜라이더가 부딪혔을 때 겹칠 수 있는 값min move distance : 캐릭터 이동 최솟값아래에 있는 capsule y position 값도1로 변경해준다. using System.Collections;using System.Collections.Generic;using UnityEngin..
빈 오브젝트 생성 👉 하위에 Capsule 삽입 👉 하위에 눈 붙여주기빈 오브젝트(이하 부모 오브젝트)에 Capsule Collider 컴포넌트 삽입Capsule에 있는 Capsule Collider는 비활성화/삭제부모 오브젝트의 collider의 중심을 (0,1,0)으로 변경해준다. 👉 캐릭터의 발끝이 항상 원점을 향하도록capusle의 transform-position도 수정해준다.부모 오브젝트에 rigidbody 컴포넌트 추가 ✨ Rigidbodymass : 질량 계산. 중력에는 영향을 받지 않음. 같은 rigidbody 오브젝트끼리 충돌하였을 때 반응drag : 공기저항값. 값이 작을수록 오브젝트가 무거워 보이고, 값이 크면 가벼워 보인다. 클수록 중력이 가해지지 않는 것처럼 보인다.angu..
🍧 using선언된 네임스페이스 내부 개체들에 접근 🍧 namespace그룹화동일한 함수의 이름 사용 가능 🍧 class필드, 메소드로 분리프로그램을 구성하는 기본 🍧 ConsoleConsole.WriteLine("문자열{0} 문자열 {1}", "aa", "bb"); 개행OConsole.Write() 개행XConsole.ReadKey()Console.ReadLine() : 한번에 한 줄씩 문자열로 입력받음. 반드시 string으로 받음string a = Console.ReadLine(); 🟩 솔루션 추가하기
peewoong
'⚙️ 엔진' 카테고리의 글 목록