전체 글 151

개발 일지 - 포션 아이템 추가 및 점수, 골드 아이템 스크립트 변경(Interface)

기존에는 아이템들을 ScriptableObject로 관리하고, 각 아이템 오브젝트가 OnTriggerEnter2D를 통해 플레이어와 충돌 시 작동하는 방식으로 구현했다.그러나 아이템을 추가하면서, 각 챕터마다 다른 스프라이트와 점수를 가진 아이템들을 관리해야 하는 상황이 생겼다. 기존 방식으로는 switch문이나 개별 스크립트를 수정해야 했기 때문에, 확장성과 유지보수하는데 불편함을 느꼈다.이를 개선하기 위해 IItem 인터페이스를 만들고, 각 아이템 클래스가 이를 구현하도록 구조를 변경했다.인터페이스를 구현하면 아이템마다 별도의 스크립트를 수정하지 않아도, 공통된 방식으로 효과를 적용할 수 있다.OnTriggerEnter2D 방식은 그대로 유지하면서, 각 아이템의 효과는 IItem 인터페이스를 통해 처..

Unity 2025.11.26

개발일지 - 프로토타입 구현 기획 작성 및 구현 내역 (PrototypeStage, Chapter, FirebaseLogin, Save, Load)

개발 일지는 바로바로 작성하는 게 가장 좋지만, 개인 사정으로 인해 개발을 한동안 진행하지 못하면서 기획과 개발 기록 역시 예정했던 것보다 많이 늦어지게 되었습니다.개인적인 이유 외에도 개발 과정에서 예기치 않은 문제들이 생기며 일정이 더 밀렸으며, 특히 Firebase 로그인(Google Login) 연동과 UI 연결 과정에서 여러 오류가 발생해 시간을 꽤 잡아먹었다. 해당 문제들은 나중에 각 파트에서 자세히 다루도록 하고, 여기서는 실제로 구현한 순서에 따라 개발 일지를 정리해보려고 한다.Prototype Stage우선 프로토타입 스테이지 에서는 기본적인 게임의 기능이 모두 적용되는지 확인하는 스테이지이다.프로토타입 단계에서는 복잡한 연출이나 구조를 넣기보다, 게임이 제대로 동작하는지 확인하기 위한 ..

Unity 2025.11.19

개발일지 - 프로토타입 구현 기획 작성 및 구현 내역

현재 진행 중인 개발 내역이 혼동되지 않도록 Notion에서 문서를 통해 기획, 계획 및 작업 내용 정리러너형 게임의 이동 메커니즘은 플레이어는 제자리에 있으며 맵이 크롤링하며 이동하는 것이다.플레이어는 제자리에서 점프, 슬라이딩, 공격과 같은 행동만 하고 직접적인 이동은 맵만 이동한다.각 스테이지마다 콘셉트에 맞게 개발된 각 스테이지마다 다른 배치의 함정들을 피해 골인 지점으로 이동하는 것이다.현재는 체력이 지속적으로 감소하는 것이 아닌 체력의 개수가 감소한다.우선은 이 기능을 그대로 구현했다.예전에 임시로 구현한 점프런 게임인데 이때는 플레이어가 직접 오른쪽으로 이동하며 각 플랫폼에 밀려 떨어지기도 하며, 방해물에 밀려 좌측에 붉은 오브젝트에 닿거나 떨어지면 게임 오버되는 간단한 형식으로 구현하려 했..

Unity 2025.10.16

함수

가상 세계를 구축하는데 있어서 짚고 넘어갈 기본 개념은 함수다.함수(Function)란 두 집합에서 첫 번째 집합의 모든 원소가 빠짐없이 두 번째의 집합의 어떤 원소에 대응하는 관계를 의미한다.함수의 개념과 종류두 집합을 X와 Y라는 기호로 지정하고, 집합 X의 원소를 x, 집합 Y의 원소를 y라 할 때 X에서 Y로 대응되는 함수를 y = f(x)로 나타낸다.두 집합 요소가 서로 대응된다고 모두 함수로 인정받는 것은 아니며, 다음 두 규칙이 성립해야 한다.첫 번째 집합의 모든 원소에 대한 대응 관계가 존재해야 한다.첫 번째 집합의 원소는 두 번째 집합의 한 원소에만 대응되어야 한다.집합 X의 원소 중 3과 4는 대응 관계가 없고 원소 2는 집합 Y의 두 원소(B, C)에 대응된다.따라서 위 이미지는 두 ..

게임 수학 2025.10.13

수와 집합

게임을 구성하는 가상 세계를 이해하기 위한 가장 첫 걸음은 집합(Set)이라는 개념이다.의무교육에서 배운 집합은 서로 구분되는 원소(Element)로 구성된 묶음을 의미하는데 이러한 집합론을 소박한 집합론(Naive Set Theory)이라고 한다.소박한 집합론소박한 집합론의 관점에서는 용도에 따라 수집합을 정의하여 구분한다.대표적인 수집합 : 자연수, 정수, 유리수, 실수, 복소수, 사원수 등이 있다.각 수집합은 인간의 언어를 통해 대상 집합을 구분할 수 있게 정의하고, 각 집합마다 고유한 기호를 사용한다.분류정의기호자연수물건을 세거나 순서를 지정하기 위해 사용하는 수의 집합N정수자연수와 자연수의 음수 0을 포함하는 수의 집합Z유리수분모가 0이 아닌 두 정수의 비율 혹은 분수로 나타낼 수 있는 수의 집..

게임 수학 2025.10.10

개발 일지 - 간단한 기획 및 게임 틀 제작기획

Firebase를 활용해 채팅과 랭킹 시스템을 지닌 간단한 게임을 구현해보고자 한다.게임을 구현하기에 앞서 간단한 기획을 했다.해당 기능을 지니고 있는 게임의 장르 중 러너형 게임으로 선택했다.선택한 이유는 구현 경험이 있어 빠르게 프로토타입 개발이 가능할 것이라고 생각해서 선택했으며, 기획은 간단한 기획을 통해 기능을 구현해 프로토타입의 빠른 구현을하고자 합니다.기획의 일부분인 세계관 및 캐릭터, 스토리는 기존에 기획했던 세계관과 이야기를 가지고 왔습니다. 기존의 덱 빌딩 로그라이트 게임을 기획했던 내용의 일부 및 세계관 및 캐릭터를 가지고와 가벼운 스토리를 넣어 Stage에 붙일 수 있도록 기획했으며, 가장 먼저 개발할 기능들을 확립하고 구현할 예정입니다.플레이어의 행동여기서 공격(상호작용을 통해 일..

Unity 2025.10.07

Unity-Firebase등록 및 추가

Unity Project 생성New Project로 새로운 프로젝트를 생성해야 한다.템플릿은 firebase와 연동할 UnityApplication의 성격을 고려하여 템플릿을 생성합니다. Firebase 프로젝트 생성 Firebase | Google's Mobile and Web App Development Platform개발자가 사용자가 좋아할 만한 앱과 게임을 빌드하도록 지원하는 Google의 모바일 및 웹 앱 개발 플랫폼인 Firebase에 대해 알아보세요.firebase.google.com 프로젝트 만들기를 누르면 프로젝트 이름, 애널리틱스를 적용할지 말지 선택만 하면 프로젝트 생성이 끝난다. 이후 생성된 Firebase 프로젝트를 어떤 앱에 연동할지 선택하면 된다. 필자의 경우 유니티를 활용한..

Unity 2025.09.26

C# 1.0 - 힙과 스택

일반적으로 프로그램을 실행하면 프로그램의 코드는 메모리에 적재된다.메모리상의 코드는 CPU에 의해 하나씩 읽히면서 실행되는데, 이 과정에서 프로그램은 자연스럽게 데이터를 위한 메모리가 필요해진다. 그에 따라 메모리는 코드와 데이터로 채워진다.힙과 스택은 데이터를 위한 메모리라는 점에서 같은 성질을 띄지만 메모리의 용도에 따라 구분된다.스택Stack은 스레드가 생성되면 기본적으로 1MB의 용량으로 스레드마다 할당되고, 자료구조에서 다루는 스택과 동작 방식이 같다.이 스택 공간을 활용해서 스레드는 메서드의 실행, 해당 메서드로 전달하는 인자, 메서드 내에서 사용되는 지역 변수를 처리한다.스레드가 Sum 메서드를 호출하는 과정에서 스레드에 할당된 수택에 5와 6의 4바이트 정수값과 Sum 메서드를 호출한 후 ..

C# 2025.09.26

C# 1.0 - 예외

1. 오류(error) vs 예외(exception)오류 (Error)보통 컴파일러 수준이나 런타임에서 복구 불가능한 상황을 가리킬 때 사용한다.예: 컴파일 오류(세미콜론 빠짐, 형식 불일치), OutOfMemoryError 같은 치명적 상황.프로그램이 정상적으로 실행될 수 없을 때 발생한다.예외 (Exception)프로그램 실행 중 발생하는 비정상적인 상황을 나타내는 객체.C#, Java 같은 언어에서는 예외를 try-catch로 잡아서 처리할 수 있다.예: NullReferenceException, IndexOutOfRangeException, FileNotFoundException.2. “비정상 종료”의 의미프로그램을 실행했는데 비정상 종료되면, 대부분 예외를 던졌는데 처리되지 않고 전파된 경우입니..

C# 2025.09.24

C# 1.0 - 프로젝트 구성

프로젝트는 비주얼 스튜디오의 소스코드 관리를 위해 도입된 개념이다.한 프로젝트는 여러 개의 소스코드를 담을 수 있고, 해당 프로젝트를 빌드하면 하나의 exe 또는 DLL 파일이 만들어 진다.프로젝트를 생성하면 그 프로젝트에서 관리하는 모든 정보를 담는 '프로젝트 파일'이 만들어진다. 프로젝트 파일은 언어마다 확장자가 다르다. C# 언어의 경우 비주얼 스튜디오가 생성하는 프로젝트 파일의 확장자는 'csproj'이다.프로젝트 이름이 'ConsoleApp1'이라면 프로젝트 파일은 ConsoleApp.csproj가 되고 파일 탐색기를 통해 프로젝트가 있는 디렉토리에서 이 파일을 찾을 수 있다.프로젝트 파일은 텍스트를 담고 있기 때문에 윈도우의 메모장 등으로 내용을 볼 수 있지만 보통은 비주얼 스튜디오에서 프로젝..

C# 2025.09.24