게임 개발 20

유니티 C# 스크립트 코드 한글 깨짐, 인코딩 해결방법

한글로 주석을 해놓은 유니티 엔진의 C# 스크립트 코드 부분에서 깨짐 현상이 발견되었다.이는 문자 인코딩 방식때문에 일어나는 문제이기 때문에, 인코딩을 바꾸어주면 된다. 파일이 UTF-8로 저장되어 있지 않았기 때문에 한글을 처리할 수 없던 문제라,앞으로 코드가 저장될 때 UTF-8을 지원하게끔 처리할 수 있다. 이미 코드에 문제가 발생한 기존 코드는 따로 저장해야 하고,앞으로 만들어질 모든 스크립트는 알아서 UTF-8로 저장되게끔 설정할 수 있다. 1. 이미 문제가 발생한 스크립트 수정우선 스크립트를 열고,파일 - 다른 이름으로 저장을 누른다. 이후 저장을 어디에 할지 로컬 탐색기가 뜰 때,인코딩하여 저장을 클릭한다. 인코딩 방식을 한국어 - 코드 페이지 949가 아닌,유니코드 (UTF-8) - ..

[게임 그래픽스] 컬링(Culling)에 대하여

컬링(Culling)이란?게임 화면에서 보이지도 않는 오브젝트까지 전부 매 프레임마다 렌더링해버리면, GPU가 해야할 일이 너무 많아져 너무 쉽게 렉이 걸리고, 게임의 품질이 좋지 않아질 것이다.그래서 대부분의 게임 엔진에서 렌더링 과정엔 컬링(Culling)이라는 기술을 통해 그릴 필요가 없는 것은 그리지 않는다. 쉽게 말해, 컬링은 화면에 보일 필요가 없는 오브젝트는 렌더링 대상에서 제외시키는 과정이다.즉 씬이 복잡해질수록 그 효과는 더욱 비대해진다. 컬링의 종류1. 프러스텀 컬링 (Frustum Culling)카메라가 보는 시야각(뷰 프러스텀) 안에 들어오는 오브젝트만 렌더링하는 방식이다.뷰 프러스텀은 카메라 시야를 입체적으로 잘라낸 피라미드 모양이다.이 범위 안에 오브젝트의 바운딩 박스(Bound..

[게임 그래픽스] 렌더링 파이프라인(Rendering Pipeline)에 대하여

게임 클라이언트 개발자에게 가장 중요한 과목은 아니지만,설계 및 개발 다음으로 개발자에게 중요한 것이 컴퓨터 그래픽스와 게임 서버이다. 오늘은 컴퓨터 그래픽스에서 가장 중요한 개념 중 하나인 렌더링 파이프라인에 대해 간단히 짚어볼 예정이다. 렌더링 파이프라인(Rendering Pipeline)이란? 렌더링 파이프라인이란, 실제로 씬에 존재하는 컨텐츠를 GPU가 화면에 그려 2D인 모니터에 출력하기까지의 일련의 과정을 의미한다. 생각해보니 조금 신기하다.게임 속 세상과 오브젝트 배치는 모두 3D임이 분명한데,실제로 모니터에 출력되는 것은 3D처럼 보이는 2D이다. 3차원 세상의 오브젝트들이 평면상의 모니터에 출력되기까지엔 많은 과정이 필요하다.우선 유니티 엔진에서는 렌더링 파이프라인에 가장 중요한 3단계..

유니티의 스크립터블 오브젝트(Scriptable Object)란 무엇일까

Scriptable Object가 무엇일까? 좋은 설계의 기준에는 항상 쉬운 유지보수가 따라붙는다.게임을 만들 때도 항상 추후에 밸런스 조절이나 테스트를 위해 값을 조정해야 하는 일이 많다. 지금까지 우리는 단순히 그런 값을 로직 안에 명세해두거나,SerializeField로 직렬화해서 인스펙터 내에서 적어두는 것이 한계였다.   캐주얼한 게임이나 가벼운 게임, 유일한 객체 등에서는 이렇게 만드는 것이 좋을 수 있다.그러나 만약 플레이어블 캐릭터가 여러 개이거나,게임 내 등장하는 무기가 수십개가 될 경우, 이는 매우 좋지 않은 선택이 될 수 있다. 밸런스 조절이나 테스트를 할 때 일일히 해당 클래스로 가서 값을 수정해야 하고,이는 하드코딩적인 성질을 띄게 되며 기획자나 아티스트와의 협업도 매우 힘들다. ..

유니티 스크립트 기본 주석 템플릿 제거하기

using System.Collections;using System.Collections.Generic;using UnityEngine;public class Player : MonoBehaviour{ // Start는 첫 프레임 업데이트 전에 한 번 호출됩니다 void Start() { } // Update는 프레임마다 한 번씩 호출됩니다 void Update() { }} 유니티로 개발을 하다보면 스크립트를 참 많이 작성하게 되는데,그 때마다 Start와 Update 메서드가 적혀있는건 좋지만, 위에 주석은 슬슬 필요 없다고 느껴질 때가 있다.위 주석은 단순히 해당 메서드의 설명이기 때문이다. 그래서, 위 주석을 스크립트를 새로 생..

유니티와 C#에서의 GC (Garbage Collection)

가비지 컬렉션(Garbage Collection)이란?게임을 개발하다보면 당연히 무언가를 만들게 된다.그것이 플레이어든, 몬스터든, 아무튼 오브젝트를 만들어 게임 세상에 두게 된다.객체지향 프로그래밍(OOP)에서, 그런 사물 하나하나들을 객체라고 부른다. 'new' 키워드를 써서 객체를 메모리 어딘가에 만드는 것 까진 좋은데, 게임에서 그 객체가 역할을 다 하거나, 게임이 종료되었다면 더 이상 그 객체가 메모리에 있어선 안된다.메모리에 계속 남아있다면, 우리의 램은 32GB정도로는 어지간한 프로그램은 조금 돌리다 터져버릴 것이다. 즉, 더 이상 사용하지 않게 된 데이터는 메모리만 차지하는 가비지(Garbage)가 된다.그렇다면, 이 가비지를 알아서 찾아서 정리해주는 자동 청소부가 가비지 컬렉션(GC)이 ..

유니티 C# 제네릭, 제네릭 싱글톤 패턴 (Generic Singleton)

Unity로 게임을 개발하다보면, 게임을 총괄하는 매니저 클래스가 정말 요긴하게 쓰이곤 한다.그 뿐만 아니라 게임 맵에서 반드시 하나만 존재하는 것이 보장되는 객체가 꼭 필요할 때가 있는데,그럴 때 쓰는 아주 좋은 디자인 패턴이 바로 싱글톤 패턴이다. 싱글톤 패턴에 대해서는 이전에 포스팅 한 것이 있으니 복습해보자. [디자인 패턴] 싱글톤 패턴(Singleton Pattern)에 대하여이 오브젝트는 어디에서든지 반드시 하나만 존재했으면 좋겠어 이번 포스팅에선 유명한 디자인 패턴 중 하나인 싱글톤 패턴(Singelton Pattern)에 대해 알아보려고 한다. 그 전에 잠깐, 가볍게 디자suldangoo.tistory.com  제네릭 (Generic, 일반화) 이번 포스팅에서 강조하고 싶은 것이라면 바로 ..

유니티 엔진의 맵/오브젝트를 언리얼 엔진으로 옮기기

이번 졸업 프로젝트 게임을 개발하던 도중, 한 가지 문제에 부딪쳤다.바로 유니티 엔진에서만 지원하는 에셋의 샘플 맵과 오브젝트를, 언리얼 엔진으로 옮길 수가 없다는 것이다. 유니티 → 언리얼 의 이주 자체가 어려운건 알고 있었지만,특히 유니티 엔진의 씬(레벨)을 언리얼 엔진의 레벨(씬)으로 옮기는게 이렇게 어려울줄 몰랐다.이곳저곳 구글링을 해봤으나 제대로 된 정보가 거의 없었고...블렌더까지 설치하며 메쉬 병합을 해보는 등 엄청나게 땅을 파며 드디어 알아냈다. 이하의 과정을 따라하면, 유니티 엔진의 맵, 오브젝트, 레벨, 씬을 언리얼 엔진으로 그대로 옮길 수 있다! 1. 유니티를 최대한 최신 버전으로 설치한다. 사실 필수적인 작업은 아니지만,추후에 서술할 FBX Exporter가 유니티 에디터의 버전에 ..

Google Play Console 개발자 계정 본인 인증 문제

구글 플레이스토어의 개발자 본인 인증 정책이 업데이트되면서예전에 Gmail로 개발자 계정 본인 인증과 본인 주소지를 다시 인증하라는 메일을 받았다.   그래서 나는 내가 사는 원룸의 전기, 수도세 청구서를 찍어 업로드했고,그 이후 당분간 개발자 콘솔을 보고 있지 않았는데, 일이 터진 것이다. 그 서류는 통과되지 않았고..내 개발자 계정와 앱들이 전부 내려갔다.   아마 내가 제출했던 전기, 수도세 청구서에 내가 사는 집의 주소가 적혀있지 않아서 그랬나보다.그래도 잘 찾아보니, 정해진 횟수 이내에만 성공하면 괜찮지만,2번 이상 실패하면 진짜 정지를 먹을 수도 있다는 말에 한 번 더 준 기회에는 신중히 임했다.  우선 은행 명세서가 된다길래, 내가 주로 이용하는 은행사 (국민은행, 농협은행) 에서거래 명세서..

[졸업 프로젝트] 3D 슈팅액션 로그라이크 with Unreal 5

요즘 나에게 있어 가장 바쁜 프로젝트라면, 역시 4학년 졸업 프로젝트이다. 총 팀원은 4명으로, 나는 팀장 / 기획 / 프로그래머 / 디자인을 맡았다.항상 느끼는 거지만, 팀장이라 그런지 정말 이것저것 다 해보는 것 같다 ㅋㅋ   UNDEADER GitHub - Controller-Team/UNDEADERContribute to Controller-Team/UNDEADER development by creating an account on GitHub.github.com UNDEADER는 언리얼 엔진 5로 만드는 3D 슈팅액션 로그라이크 게임이다.게임의 큰 레퍼런스는 와 이다. 지금까지 늘 유니티 엔진으로만 게임을 만들어왔고, 다른 프레임워크는 쉽게 손을 대지 못하고 있었다. 그게 항상 내 단점이기도..