목록전체 글 (25)
흔한 덕후의 잡동사니
관련 내용 정리 중입니다.
TextRPG_Maple은 텍스트 기반 RPG 게임으로, C#에 대한 이해도를 높이고, 팀프로젝트를 경험하기 위해 진행되었습니다. 또한 객체지향 프로그래밍(OOP)과 다양한 디자인 패턴을 적용하여 추후의 확장성과 유지보수성을 높이는 데 중점을 두었습니다. 작성자 GitHub: ChinoDaiski ChinoDaiski - OverviewChinoDaiski has 27 repositories available. Follow their code on GitHub.github.com프로젝트 링크 GitHub - ColdEgg98/TextRPG_MapleContribute to ColdEgg98/TextRPG_Maple development by creating an account on GitHub.g..

C#의 제네릭(Generic)과 C++의 템플릿(Template)은 모두 타입에 독립적인 코드를 작성할 수 있도록 해주는 기능이지만, 구현 방식과 동작 원리에서 차이점이 있다. 1. 컴파일 시점 vs 런타임 시점[ C++ Template ] C++ 템플릿은 컴파일 시점에 인스턴스화된다. 컴파일러는 템플릿 코드를 사용하는 각 타입에 대해 별도의 코드를 생성한다. 예를 들어, std::vector와 std::vector은 컴파일 시점에 서로 다른 코드로 생성된다.이로 인해 템플릿은 컴파일 시간에 타입 검사를 수행하며, 잘못된 타입이 사용되면 컴파일 오류가 발생한다.[ C# Generic ]C#의 제네릭은 런타임 시점에 인스턴스화된다. 제네릭 코드는 컴파일 시점에 중간 언어(IL)로 컴파일되고, 런타임에 JI..

1. Trigger란?Trigger는 Collider 컴포넌트의 속성 중 하나로, Is Trigger 옵션을 활성화하면 해당 Collider는 물리적인 충돌을 일으키지 않는다. 대신, 다른 Collider와 겹치는지 여부만 감지한다. Trigger로 설정된 Collider는 물리 엔진에 의해 이동하거나 밀려나지 않는다. 이 기능은 주로 물리적 충돌이 필요 없는 상황에서 오브젝트 간의 상호작용을 감지할 때 유용하다. 주로 게임 내에서 특정 영역에 진입하거나 아이템을 획득하는 등의 이벤트를 구현할 때 사용된다. 2. Trigger 사용 방법 Trigger의 사용 방법은 3단계로 나누어 볼 수 있다. 1. Collider 추가Trigger로 사용할 오브젝트에 Collider 컴포넌트를 추가한다. Collid..

이 글은 Unity API에 대한 설명을 기반으로 따로 찾은 내용과 함께 정리한 내용이다. 보다 자세한 내용을 보고 싶다면 글 아래 참조 쪽에 공식 API 사이트 링크를 참고하자. Raycast란?Raycast는 3D 공간에서 특정 방향으로 광선(Ray)을 쏘아 충돌을 감지하는 기능이다. 주로 오브젝트 간의 충돌 감지, 시야 확인, 마우스 포인터로 오브젝트 선택 등에 사용된다. 1. Raycast 사용 방법1.1 좌표, 방향, 거리를 사용하는 Raycast Raycast는 특정 시작점(origin)에서 특정 방향(direction)으로 광선을 쏘아, 지정된 거리(maxDistance) 내에서 충돌을 감지한다. 이때 Physics.Raycast 함수를 사용한다.using UnityEngine;public..
게임 서버 개발은 크게 Stateful과 Stateless 두 가지 방식으로 나뉜다. 이 두 기술은 각각 실시간 온라인 게임과 비동기 온라인 게임에 적합하며, 서로 다른 특징과 장단점을 가지고 있다. 두 기술의 차이점과 적용 사례를 살펴보자. 1. 실시간 온라인 게임 (Stateful 서버)[ 특징 ]실시간 상호작용: 다른 유저와의 실시간 상호작용이 핵심으로 대표적인 장르로는 MMORPG, MOBA, FPS 등이 있다.연결 유지: 클라이언트와 서버는 지속적으로 연결을 유지하며, 모든 게임 로직은 서버에서 처리된다.서버 메모리 사용: 모든 유저의 데이터와 게임 상태는 서버 메모리에 저장되어 실시간으로 처리된다.빠른 처리 속도: C/C++과 같은 고성능 언어를 주로 사용하여 빠른 처리가 가능하다.확장의 한계..

1. IL2CPP란? IL2CPP(Intermediate Language To C++)는 유니티에서 C#으로 작성된 코드를 IL(Intermediate Language)로 변환한 후 C++ 코드로 변환하여 네이티브 바이너리를 생성하는 스크립팅 백엔드다. 이를 통해 실행 성능을 높이고 보안을 강화할 수 있다. 기존 Mono 방식에서는 C# 코드를 IL로 전환하고 실행하는 반면, IL2CPP는 IL에서 추가적인 변환 과정을 거쳐 만들어진 네이티브 코드로 실행된다. Unity의 내부는 C++로 작성되어 있으며, 개발자는 C#을 사용하여 API에 접근한다. IL2CPP를 사용하면 C# 코드도 C++로 변환되므로, 전체적인 성능이 향상된다.또한 C#은 메모리 관리 및 쓰레드 관리가 자동화되어 있어 생산성이 높지만..
1. C#의 objectC#에서의 object는 모든 데이터 타입의 최상위 클래스이다. object로 선언된 객체는 .NET의 기본 가비지 컬렉션(GC) 시스템에 의해 관리되며 객체가 더 이상 참조되지 않으면 GC가 자동으로 메모리를 해제한다. 이 과정은 C#의 기본적인 메모리 관리 방식으로, 메모리 관리를 프로그래머가 직접 할 필요가 없다. 하지만 가비지 컬렉션은 일정한 간격으로 실행되므로, 이 시점에서의 성능 저하가 발생할 수 있다. + 성능 저하가 일어나는 이유와 발생 주기 및 조건에 대해선 다음에 GC에 대해서 정리하면서 설명할 예정이다. 아래는 이를 간단하게 설명한 것이다.더보기미리 간단하게 설명하자면, 2가지 이유로 성능 저하가 일어난다. 첫째, GC는 3세대(0, 1, 2 세대)로 관리되는데..