게임 개발 과정에서 실사풍과 스타일라이즈드는 게임의 전체적인 비주얼과 분위기를 결정하는 중요한 스타일입니다.두 스타일은 게임의 목적, 타겟층, 기술적 요구사항에 따라 선택되며, 각각의 장단점이 뚜렷합니다. 이번 글에서는 이 두 가지 스타일의 개념과 특징을 자세히 살펴보겠습니다.실사풍 (Realistic Style)실사풍은 현실 세계를 최대한 사실적으로 재현하는 스타일입니다. 이 스타일은 고해상도의 텍스처, 자연스러운 조명, 그리고 물리적 정확성을 강조합니다. 요즘 게임은 현실보다 더 현실같은 스타일을 만들어내곤 하죠. 그래픽의 발전덕분에요.목적: 현실과 유사한 경험 제공 (실제로 있을 법한 경험을 제공하기 위해, 현실보다 더 아름다운 분위기를 연출)디자인 특징: 세밀한 디테일, 고해상도 텍스처조명: 물리..
데이터를 다룰 때 종종 중복된 값이 문제를 일으키곤 합니다. LINQ에서 제공하는 Distinct() 메서드는 이러한 중복을 쉽게 제거해줍니다. Distinct()의 사용법과 다양한 활용 예제를 살펴보겠습니다.Distinct()란?Distinct()는 컬렉션 내의 중복된 요소를 제거하고 고유한 요소만 반환하는 LINQ 메서드입니다.using System;using System.Linq;using System.Collections.Generic;class Program{ static void Main() { var numbers = new List { 1, 2, 2, 3, 3, 3, 4, 4, 4, 4 }; var uniqueNumbers = numbers.Distinc..
C#은 null 참조 에러(null reference exception)를 방지하기 위해 널 허용 참조 타입(nullable reference type)을 도입했습니다. 이에 따라, 컴파일러는 변수가 널(null)일 가능성이 있는 경우 경고를 표시합니다. 하지만 개발자가 변수가 절대로 널이 아님을 확신하는 경우, 컴파일러의 경고를 무시하고 이를 명시적으로 나타내기 위해 널 허용 연산자(null-forgiving operator, !)를 사용할 수 있습니다.널 허용 연산자란?널 허용 연산자(!)는 C#에서 널 검사 경고를 억제하는 연산자입니다. 이를 통해 컴파일러가 "이 변수는 널일 수도 있다"고 경고하는 상황을 개발자가 강제로 무시할 수 있습니다.string? nullableString = null;//..
프로그래밍할 때 종종 사용하는 용어 중 TearDown과 Dirty는 맥락에 따라 다른 의미로 쓰이지만, 각각의 개념은 개발 과정에서 중요합니다. 이번 글에서는 이 두 용어의 의미와 사용 예를 정리해보겠습니다.TearDownTearDown은 설정된 상태를 초기화하거나 제거하는 과정을 의미합니다. 이는 특정 작업이 완료된 후 남아 있는 자원을 정리하거나, 테스트 환경을 원래 상태로 복구하는 데 사용됩니다.예시Unity의 Test Framework에서 TearDown은 테스트가 끝난 후 실행되는 메서드입니다. 테스트 중 생성된 오브젝트나 데이터를 정리해, 다음 테스트가 영향을 받지 않도록 해줍니다.using UnityEngine;using UnityEngine.TestTools;using NUnit.Fram..
플레이어가 여러 명일 경우 “어떤 순서”로 처리할지 고민이 생길 수 있습니다. 대표적으로 플레이어가 네트워크에 접속하는 순서, 혹은 특정 인덱스 기준으로 정렬하고 싶을 때가 있죠.Runner.ActivePlayers는 현재 게임(세션)에 접속해 있는 모든 플레이어 목록을 제공합니다. 여기에 OrderBy(p => p.AsIndex)를 붙이면, 플레이어를 “Index가 낮은 순”부터 정렬합니다.Index가 낮을수록 먼저 접속했거나, Fusion2 내부에서 먼저 할당된 플레이어를 의미합니다. foreach (var playerRef in Runner.ActivePlayers.OrderBy(p => p.AsIndex)){ // 인덱스 순서대로 처리하고 싶은 로직}
Meta SDK를 활용하여 프로젝트를 개발할 때, Meta 플랫폼의 유저 이름을 받아오는 기능에 대해 알아보고자 합니다. 또한 Entitlement, PlatformInfo, Platform이 무엇인지 알아보고, Oculus ID를 통해 최종적으로 유저 이름을 받아오는 방법을 공유하고자 합니다.Entitlement이란?Entitlement는 Meta 플랫폼에서 사용자의 소프트웨어 사용 권한을 확인하는 과정입니다. 사용자가 특정 애플리케이션에 접근할 권한이 있는지를 검증하는 단계로, 보안상 매우 중요한 역할을 합니다. Entitlement 검사는 일반적으로 다음과 같은 상황에서 이루어집니다.사용자가 구매한 애플리케이션에 대한 라이선스 확인애플리케이션의 불법 복제 방지Meta SDK는 이러한 과정(Entit..
Meta Avatar 움직임을 네트워크를 통해 동기화하기 위해 RecordStreamData와 ApplyStreamData 메서드, StreamLOD와 같은 기능을 제공합니다. RecordStreamDatapacket.dataByteCount = _localAvatar.RecordStreamData_AutoBuffer(lod, ref packet.data); //예시RecordStreamData 메서드는 아바타의 현재 상태(움직임과 표정 등)를 캡처하여 이진(binary) 형식으로 압축합니다. 생성된 데이터는 네트워크를 통해 전송되어 특정 시점(=스냅샷)의 아바타 상태를 나타냅니다.ApplyStreamDataavatar.ApplyStreamData(tempStreamDatas); //예시네트워크를 통해 ..
게임 개발을 하다 보면, 배열(혹은 리스트)의 데이터를 복사해야 할 때가 종종 있습니다.그런데 C#에서 배열은 참조 타입이라 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)가 존재하여 사용할 때 혼동될 수 있습니다. Unity 프로젝트에서 발생할 수 있는 사례로 알아보겠습니다. 얕은 복사(Shallow Copy)란?“원본과 같은 데이터를 가리키는 참조만 복사한다.”즉, 배열 변수가 가리키는 메모리 주소(참조)만 복사하는 방식입니다. 원본 배열과 복사본 배열은 동일한 실체(데이터)를 공유하므로, 한쪽을 변경하면 다른 쪽에도 영향이 갑니다.void Start(){ int[] originalArray = { 1, 2, 3, 4 }; int[] shallowCopy = origin..
TextMeshPro컴포넌트에는는 Text를 더 세밀하게 제어할 수 여러가지 옵션들이 존재합니다.그 중, 텍스트의 Style을 이용하면 코딩없이 Lowercase, Uppercase를 선택할 수 있습니다.
Facade 패턴은 복잡한 시스템을 단순화하여 쉽게 사용할 수 있도록 하는 디자인 패턴입니다. 위 사진처럼 거대한 건물 뒤에 부분은 보이지 않는 것처럼, 퍼사드 패턴을 통해 뒤에서 일어나는 것들이 무엇이 있는지 알 필요 없이 사용하기 쉽게 만드는데 초점을 두는 패턴이라고생각하시면 됩니다. Facade 패턴의 개념Facade 패턴은 복잡한 서브시스템들을 단순화하여, 클라이언트가 하나의 인터페이스만으로 시스템을 조작할 수 있게 해줍니다. 여러 객체와 클래스들이 상호작용하여 시스템이 구성될 때, Facade 클래스가 이를 조정하여 하나의 간단한 API로 제공합니다. 퍼사드 패턴은 다음과 같은 경우에 사용하면 좋습니다. 복잡한 코드 구조를 숨기고 간단한 인터페이스를 제공하고자 할 때클라이언트 코드가..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.