전체 글 91

Crescendor - Scene Loading 구현

맨 처음 실행했을 때, Main Scene을 로딩하는 화면을 구현했다. 로딩은 각각 처음 실행 시, 연습 모드 진입 시, 실전 모드 진입 시에 구현할 예정이다. 각각 로딩 화면을 다르게 할거라 리팩토링이 필요할거다. 디자인을 하면서 기능 구현을 동시에 진행 중이다. 우리 팀은 UI/UX 관련 피드백을 주로 받았기 때문에 더 신경을 쓸 예정이다. 로딩이 90% 이상 진행되면 투명도를 올린다던가 로딩 바 아래에 텍스트를 추가하여 진행률을 보여준다던가 등의 작업을 하려고 한다. [SerializeField] Slider progressBar; private void Start() { StartCoroutine(Loading()); } IEnumerator Loading() { yield return null;..

Metaverse/Unity 2024.04.13

Middleware

미들웨어란? 요청 및 응답을 처리하는 앱 파이프라인으로 조립되는 소프트웨어 요청을 파이프라인의 다음 구성 요소로 전달할지 여부 선택 파이프라인의 다음 구성요소 전과 후에 작업 수행 가능 목적) 통신 요청 및 응답을 처리하는 파이프라인 구성 장점) 필요한 미들웨어만 사용 가능 개발자가 파이프라인을 구성할 수 있으므로 통신요청 및 응답의 발생 상황에 대해 쉽게 파악할 수 있음 동작 원리 등록 순서에 따른 요청 순서 Request에 대한 호출 순서: 등록순 Response에 대한 호출 순서: 등록 순서의 역순 종류 1) Use: 파이프라인을 단락할 수 있음 next 요청 대리자를 호출하지 않는 경우 사용 # 요청 파이프라인 단락: 다음 대리자에 요청을 전달하지 않을 때 이를 요청 파이프라인 단락(short -..

OVRInput - 제스처 인식

진짜 어이없게도... 컨트롤러 인풋을 넣으려고 테스팅을 하다가 발견하고 냅다 노선을 변경했다. 우리 시스템은 컨트롤러가 필요없는 더 편리한^^ 시스템이 될 것 같다. private void Update() { if (OVRInput.GetDown(OVRInput.Button.Three)) { LeftHandPosition(); } } private void Update() { if (OVRInput.GetDown(OVRInput.Button.One)) { RightHandPosition(); } } Button.One은 컨트롤러의 A버튼, Button.Three은 컨트롤러의 X버튼에 해당된다. 그런데 이게 각 양손의 pinch gesture에 해당하기도 하더라.. 그래서 다른 제스처도 해당되는게 있나 찾..

Metaverse/Unity 2024.03.10

개요

용도 웹 앱 및 서비스, IoT 앱 및 모바일 백엔드 빌드 Windows, MacOS, Linux에서 사용 가능 클라우드 또는 온-프레미스에 배포 가능 .NET에서 실행 특징 ASP.NET Core는 더 간결하고 모듈화된 프레임워크를 만드는 아키텍처 변경 내용이 포함됨 웹 UI 및 웹 API를 동일한 과정으로 빌드 테스트 가능성을 고려하여 설계됨 Razor Pages는 더 쉽고 더 생산적으로 코딩 페이지에 초점을 맞춘 시나리오를 만듦 Blazor를 사용하면 JavaScript와 함께 브라우저에서 C# 사용 가능, 모두 .NET으로 작성된 서버 쪽 및 클라이언트 쪽 앱을 공유함 Windows, MacOS 및 Linux에서 개발하고 실행할 수 있음 오픈소스이며 커뮤니티에 중점을 둠 최신 클라이언트 쪽 프레임..

Crescendor - Ranking System

우리 시스템은 사용자가 시간과 공간에 제약을 받지 않고 피아노를 학습할 수 있게 하고, 피아노 학습 과정에서 중도 포기하지 않도록 재미를 주는 것이 목적이다. 그래서 랭킹 시스템을 넣기로 했고, 실력이 높은 사람, 플레이 횟수가 많은 사람일수록 랭킹 점수를 높게 산정하여 콘텐츠 내의 경쟁을 유의미하게 한다. 만약 랭킹 시스템을 구현하는데 DBMS를 사용한다면, DB에 데이터를 저장하고 저장된 데이터를 정렬하여 다시 읽어오는 과정에서 디스크에 직접 접근해야 하므로 오래 걸릴 것이다. 그래서 보통 많이 사용하는 것이 Redis이다. Redis는 모든 데이터를 메모리에 저장하고 조회하는 인메모리 데이터베이스이며, DBMS와의 차이점은 다양한 자료구조를 제공한다는 것이다. Redis 고성능 키 - 값 저장소로서..

Build Tool

다양한 빌드 구성에 걸쳐 소스 코드를 빌드하는 프로세스를 관리하는 커스텀 도구 동작 방식 언리얼 기본 C++ 프로젝트 생성 시, 3개의 C# 파일이 프로젝트에 같이 생성된다. (프로젝트명).build.cs (프로젝트명).target.cs (프로젝트명Editor).target.cs build.cs는 빌드 옵션을 관리하고, target.cs는 빌드 타입을 정의한다. .uproject를 실행하거나, .sln 프로젝트에서 build 명령을 내리면 UBT 프로그램이 실행되면서 언리얼 프로젝트의 build.cs, target.cs 파일들이 C# 컴파일러에 의해 컴파일된다. 이후에 .cs 파일에 작성한 사양대로 빌드 과정이 진행된다. 왜 필요한가? 언리얼은 멀티 플랫폼에서 개발이 가능하고 멀티 플랫폼 빌드를 목표로하..

Metaverse/UE5 2024.02.01

Automation Tool

C# 사용 시 UE 관련 무인 프로세스를 스크립팅할 수 있는 호스트 프로그램 및 유틸리티 라이브러리 세트 작동 방식 자동화 프로젝트: 자동화 툴 실행 시 확장자가 .Automation.csproj인 Visual Studio C# 프로젝트로 저장된 모든 자동화 프로젝트를 찾아 컴파일 다음, 리플렉션을 사용하여 실행할 적절한 명령을 찾는다. 이러한 명령은 Build Command 베이스 클래스에서 파생된 클래스에서 구현되며 클래스 명으로 식별됨 자동화 도구 실행: Windows의 Visual Studio 디버거 또는 Windows, Mac 및 Linux의 검색줄에서 검색할 수 있다. 디버거 Commands 실행 Command line에서 Commands 실행 (Windows) 터미널에서 Commands 실행..

Metaverse/UE5 2024.02.01

STL - next_permutation

현재 탐색하고 있는 순열의 다음 순열을 구하고 true를 반환한다. 만약, 다음 순열이 존재하지 않는다면 false를 반환한다. 즉, 마지막 모든 순열의 경우의 수를 탐색한 뒤, false를 반환한다. template bool next_permutation(BidirIt first, BidirIt last) { auto r_first = std::make_reverse_iterator(last); auto r_last = std::make_reverse_iterator(first); auto left = std::is_sorted_until(r_first, r_last); if (left != r_last) { auto right = std::upper_bound(r_first, left, *left);..

Metaverse/복습 2024.02.01