Unity 47

오픈월드 게임의 월드 관리 방식과 시간 처리

나는 유튜브중 100일 챌린지를 하는 유튜버 '치랜'을 좋아한다. 그 중, 좀보이드 영상을 보는데 갑자기 이런 생각이 들었다.“이렇게 넓은 맵을 하나의 씬(Scene)으로 다 담아두는 걸까?아니면 여러 개의 씬을 나누어, 플레이어 주변만 활성화하는 걸까?” "전기가 끊기고 시간이 지나면 '신선한' 음식들은 '상한' 음식이 되어버린다. 비활성화 된 혹은 현재 없는 씬에 존재하는 음식들에게도 전기가 끊기고 시간이 지났다는 메시지를 보낼 수 있는 걸까?1. 방대한 월드, 어떻게 관리할까?오픈월드 게임을 하나의 씬으로 통째로 유지하는 것은 메모리와 성능 부담이 크다.그래서 대부분의 게임은 스트리밍(Streaming) 기법을 사용한다고 한다. (ChatGPT 피셜)플레이어 주변은 활성화된 게임 오브젝트로 유지조금..

Unity 2025.08.13

다가가면 홀로그램이 켜지도록 하는 간단 스크립트

다가가면 홀로그램이 켜지고, 멀어지면 홀로그램이 꺼지는 간단한 스크립트를 만들어보자. 1. 플레이어플레이어는 다음과같이 만들었다.Player (총괄, 초기화 담당)PlayerController (실질적임 움직임 담당)InputController (인풋시스템의 인풋을 벡터로 변환하여 전달하는 역할) 인풋시스템을 이용하여 wasd로 이동, space로 점프하는 간단한 스크립트이다.using UnityEngine;public class Player : MonoBehaviour{ private PlayerController controller; private void Awake() { controller = GetComponent(); controller.Init(); ..

Unity 2025.08.08

Reloading Domain

작업을 하다보면 이 Reloading Domain을 기다려야 하는 시간이 있다.나는 거의 새로운 프로젝트에서 셰이더를 공부하기위해 셰이더 관련 몇몇 에셋만을 사용하고있다. 그런데 이 오류가 갑자기 생겨났고 6분이상 기다려도 해결되지 않아 강제 종료 시켜버렸다. 그래서 이 Reloading Domain이 무엇인지, 그리고 어떻게 해결해야 하는지 찾아보고자 한다. 1. Reloading Domain우선 유니티의 도메인은 .NET의 AppDomain 개념을 기반으로 하고있다. 유니티가 컴파일 후 변경된 어셈블리를 반영하려면 기존 AppDomain을 언로드하고, 새로운 도메인을 생성해야한다. 이 AppDomain을 언로드하면 해당 도메인 내의 모든 static 객체, 이벤트, 리소스, 메모리가 정리되어 stat..

Unity 2025.08.07

FPS 게임에서 두 개의 카메라를 사용하는 이유

FPS 프레임워크 에셋을 사용해보면 2개의 카메라를 이용하는걸 볼 수 있다.총, 손만 보이는 카메라와 배경이 보이는 카메라 두개이다.이전 부트캠프에서도 카메라 2개를 이용해 만드는걸 생각하면 그 이유가 무엇일지 궁금해졌다.1. 가까이 있는 총과 손을 더 자연스럽게 보이게 하기 위해FPS게임에서 3D 모델링된 플레이어 캐릭터를 그대로 1인칭 시점에 붙여두면, 총이 생각보다 더 작게 보이고 팔이 길게 쭉 뻗은 듯한 어색한 느낌이 난다고 한다. 2. 애니메이션을 자유롭게 만들기 위해총을 쏠 때 반동, 재장전, 손이 흔들리는 모션 등 1인칭에서 보여지는 애니메이션은 디테일이 중요하다.하지만 다른 플레이어에게 보여줄 3인칭 모델은 과장된 모션보다 깔끔하고 최적화된 동작이 중요하다.그래서 두 모델을 분리해, 내 화..

Unity 2025.07.29

FPS 배경이 사람을 가리는 문제

에셋스토어에서 아래와 같은 FPS Framework이라는 에셋을 사용해보았다. (공부용)https://assetstore.unity.com/packages/templates/systems/fps-framework-2-0-278978 FPS Framework 2.0 | 시스템 | Unity Asset StoreUse FPS Framework 2.0 from Akila Studio to elevate your next project. Find this & more 시스템 and templates on the Unity Asset Store.assetstore.unity.com 문제상황사람(bot)이 배경 펜스에 지워지는 문제가 있다. 원인분석FPS에서는 손, 총, ui전용 카메라와 그 외의 배경을 렌더링하는..

Unity 2025.07.28

유니티 멀티플레이 게임 서버 비교: 뒤끝 vs 파이어베이스 vs 포톤

게임이든 앱이든 멀티플레이 기능이 들어간다면, 서버 구성은 자연스럽게 따라오는 고민입니다.요즘은 선택지도 많습니다. Firebase, Photon, 그리고 뒤끝(BackEnd).이번 프로젝트에서는 그중에서 뒤끝을 직접 사용해보기로 결정했습니다.서버 후보 정리부터우선은 많이 거론되는 세 가지 백엔드 솔루션을 비교해봤습니다.항목뒤끝(BackEnd)FirebasePhoton타겟한국 게임 개발자 중심글로벌 앱/서비스 전반리얼타임 게임(FPS, MMO 등) 특화멀티플레이 지원✅ 매칭/방 시스템 내장❌ 직접 구현 필요✅ 강력한 실시간 통신 엔진서버 유지관리❌ 필요 없음 (완전 관리형)⚠️ 일부 기능은 Cloud Functions 필요❌ 필요 없음 (PUN 구조)초심자 친화성✅ 매우 쉬움 (한국어 문서 풍부)⚠️ 중..

Unity 2025.05.28

멀티게임을 만들기 위해 필요한 개념 간단 정

네트워크 아키텍처1. 클라이언트 - 서버 모든 클라이언트는 중앙 서버와만 통신합니다.서버는 게임 상태의 최종 결정권자(authoritative)로, 각 클라이언트의 입력을 검증한 뒤 처리 결과를 각 클라이언트에 전달합니다. 2. p2p 모든 클라이언트가 서로 직접 연결되는 구조입니다.동기화 이슈가 발생하기 쉽고, 보안(치트) 측면에서도 취약합니다. 네트워크 프레임워크멀티플레이어 기능을 구현하기 위해 제공되는 라이브러리·툴킷으로, 다음과 같은 기능을 제공합니다.연결 관리 (클라이언트↔서버 또는 피어 간)데이터 전송 (신뢰성 보장, 대역폭 최적화)객체 동기화 (위치, 상태 등)RPC(Remote Procedure Call) 호출룸/매치메이킹, 세션 관리1. Unity Netcode for GameObject..

Unity 2025.05.20

두트윈 간단 사용법

DOTween은 Unity에서 사용하는 트윈 기반 애니메이션 관리 툴입니다.1. 위치, 회전, 스케일, 색상 등 다양한 속성을 시간 기반으로 제어할 수 있습니다.2. 복잡한 연출은 Sequence 기능을 통해 타임라인처럼 조합할 수 있습니다.3. 실시간 게임 플레이에 최적화되어있으며, 직관적인 코드 작성이 가능합니다. 1. 주요 매서드 (Transform)메서드설명DOMove오브젝트의 위치를 지정 위치로 부드럽게 이동DOJump지정된 거리/높이로 점프하는 애니메이션을 만듦DORotate지정된 각도로 회전 (기본적으로 Euler 방식)DORotateQuaternion쿼터니언으로 회전 (더 자연스럽고 정확한 회전용)DOScale오브젝트의 크기 조절을 부드럽게 실행DOPunchScale"튕기는" 느낌으로 크기..

Unity 2025.05.14

오류가 오류를 불러일으킨다.

1. 세피리아에서 마주한 첫 번째 이상 현상얼마 전 친구와 함께 요즘 핫한 ‘세피리아’를 플레이하던 중이었습니다. 그러다가 버프 아이콘이 사라지지 않는 버그를 만났습니다. 게임에 큰 영향을 주지 않기에 대수롭지 않게 넘기게 되었습니다...만!2. 그런데 그 뒤에…그런데 재미있게도 버프 아이콘 버그를 경험한 바로 다음 순간, 인벤토리 강화 수치가 0이 아니라 –1로 시작되는 또 다른 이상 현상이 터졌습니다. 평소엔 전혀 보이지 않던 오류들이 마치 도미노처럼 연달아 터져나오는 걸 보고 인턴생활하면서 진행했던 QA가 생각났습니다. 런타임중 오류가 나타나면 그 이후 지속적으로 다른 오류들이 우후죽순으로 발생하는 것이죠. 그러면 왜 런타임오류가 발생하면 평소에 잘 되었던 부분들마저 오류가 발생하게 될까 궁금해졌습..

Unity 2025.05.13