STARIZE


별자리가 되기 위한 어린 별의 이야기를 아름다운 플랫포머로 표현한 게임
TEAM
프로젝트 팀원
프로젝트 형태
viviD
최서연, 임지민, 김영호,김예원, 이혜림
게임
프로젝트 개요
장르
액션 플랫포머
제작 기간
2024년 3월 - 2024년 12월
사용 엔진
유니티, Cinema4D, Blender, Adobe Illustrator
시놉시스
별자리가 되기 위한 여행을 떠나는 어린 별의 아름답고도 험난한 이야기.
과연 주인공, 스텔라는 별자리의 시련을 이겨내고 별의 탑 최상층에 걸음을 내딛을 수 있을까요?
💫 별의 탑에서 비상하는 꿈, 그 빛을 찾는 여정.
인게임 단축키


프로젝트 과정
기획
| 게임 컨셉
하늘 위에 있는 별의 탑, 그 탑을 둘러싼 성운에서는 샛별들이 별똥별로 탄생한다.
샛별들은 각자 어른이 되어가며 외부적으로, 내부적으로 성장하여 자신만의 별자리를 만들어낸다.
별의 탑은 그러한 별자리들이 샛별들에게 시련을 내려 어른이 될 수 있도록 돕는 공간이다.
| 컨셉 아트








기술 스택
직렬화 저장/불러오기
데이터를 저장하고 불러오는 방법은 .csv나 .json같은 특정포멧을 사용하는 방법이 있지만, 이런 방법은 데이터를 로드하기 위해서 Parsing 작업을 거쳐야 실제로 사용할 수 있는 데이터가 됩니다. 또, 저장되는 데이터가 문자열이기 때문에 유저가 손쉽게 악의적으로 수정할 수 있어서 보안에도 취약합니다.
저희는 이런 문제를 해결하기 위해 직렬화를 사용했습니다. 실제로 사용하는 데이터를 바이트 스트림 형태로 뭉친후에 이를 .bytes 확장자의 형태로 저장했습니다. 직렬화를 사용하기 때문에 Parsing이라는 추가적인 작업이 필요없을 뿐더러, 유저가 악의적으로 수정하기 어려운 형태이기 때문에 보안상 안전해졌습니다. 추가로 문자열이 아닌 바이트 스트림 형태이기 때문에 저장공간도 덜 차지하였습니다.
맵 에디터
저희는 아티스트나 기획자처럼 유니티 엔진에 익숙하지 않은 사람들도 맵을 자유롭게 생성할 수 있도록 하기위해 에디터를 제공했습니다. 생성한 맵을 저장하고 불러오기 위해서 직렬화 기술을 사용하였습니다.
맵 에디터에서 물체를 설치하기 위해선 설치할 물체에 알맞는 충돌체가 필요했습니다. 이러한 충돌체는 설치할 물체의 메시가 크면 총돌체도 커져야하고, 메시가 작으면 충돌체도 작아져야 했습니다. 이 것은 후술할 ‘바운드를 이용한 콜라이더 생성’기술을 통해 해결했습니다.
또한 저희가 설치할 물체중에 기믹이 있습니다. 이 기믹은 같은 종류여도 값을 수정해서 기믹마다 조금씩 다른 행동을 하도록 설정해야 했습니다. 마치 유니티 에디터의 Inspector창과 동일하게 변수의 값을 수정할 수 있어야 했습니다. 저희는 이 것을 ‘리플렉션을 통한 인스펙터창 구현’기술로 해결했습니다.
오브젝트 생성, 삭제, 수정
오브젝트 생성 기능은 마우스 위치를 기준으로 생성될 위치를 미리 표시하며, 사용자가 원하는 위치에 설치할 수 있도록 지원합니다. 삭제 기능은 불필요하거나 잘못 생성된 오브젝트를 제거할 수 있도록 구현했습니다. 또한, 수정 기능은 유니티에서 제공하는 Transform 속성을 활용해 오브젝트의 Position, Rotation, Scale을 조정할 수 있도록 구성했습니다.


오브젝트 수정 기능은 유니티의 Scene 화면에서 오브젝트의 Transform(Position, Rotation, Scale)을 제어하는 기능을 참고하여 설계했습니다. 사용자가 Unity의 Scene 화면에서 경험하는 직관적인 편집 방식을 맵 에디터에서도 동일하게 활용할 수 있도록 구현하여, 직관적이고 편리하게 오브젝트를 수정할 수 있도록 구성했습니다. 이를 통해 맵을 구성하거나 변경하는 작업이 보다 효율적으로 이루어질 수 있습니다.


바운드를 이용한 설치
바운드는 유니티의 Renderer라는 컴포넌트에서 bound라는 이름의 프로퍼티로 제공해줍니다. 메시의 모든 버텍스 중 x, y, z값이 가장 작은 값과, 가장 큰 값을 통해 메시의 AABB 충돌체를 구해오는 것입니다. 자세한 계산 방식은 아래 이미지를 참고해주세요.


이러한 충돌체를 통해서 이미 설치되어 있는 물체 위에 또다른 물체를 설치할 수 있습니다. 마치 마인크래프트에서 블럭을 설치할 때 이미 설치된 블럭 위에 설치하듯, 충돌체 위에 또다른 물체를 설치할 수 있습니다.


리플렉션을 통한 인스펙터창 구현
저희는 좀 더 편리한 수치 조정을 위해 인스펙터창과 동일한 기능이 필요했습니다. 이 것은 리플렉션을 사용하여 손쉽게 해결하였습니다. 리플렉션을 통해 현재 설치되어있는 물체의 수치값을 읽어올 수 있었고, 이것을 UI를 통해서 표현할 수 있었습니다. 또한 InputField와 같은 UI를 통해서 사용자가 값을 넣을 수 있도록 하였고, 이렇게 수정된 값을 실제로 적용하는 기능도 추가하였습니다.


팀 소개
| 팀원 소개 및 담당 역할
📝 [기획/PM] 최서연, 임지민
⌨️ [개발] 최서연, 김영호, 임지민
🎨 [아트] 김예원, 이혜림
| 제작 후기
김영호 (컴퓨터공학부 정보통신공학전공, 개발자)
이전에는 개발자들끼리 모여 에셋을 활용해 프로토타입만 개발해보거나, 개인적으로 다른 게임을 모작한 경험이 있었을 뿐이라 프로젝트를 완성하지 못한 아쉬움이 있었습니다. 그러던 중 viviD 팀의 팀원 모집 글을 통해 기획팀, 아트팀, 개발팀으로 세부 역할을 나누어 진행하는 프로젝트에 참여하게 되었습니다. 프로젝트를 진행하며 각 역할에 대해 깊이 고찰할 수 있었고, 서로 이해하지 못했던 다른 역할들에 대한 부족한 정보를 배우는 좋은 경험이었습니다.
김예원 (시각디자인전공, 아트팀)
게임이 제작되는 과정과 게임브랜딩과 게임디자인에 필요한 디자인 프로세스를 배우고 캐릭터 디자인과 시각 요소 제작을 진행하는 과정이 재미있었습니다. 개인으로서의 작업이 아닌 다른 개발이나 기획 분야의 팀원들과 효율적으로 대화하며 팀으로서의 소통의 중요성을 느낄 수 있었고, 체계적인 작업 진행을 위한 프로젝트 계획 세우기를 익힐 수 있었습니다.
이혜림 (산업디자인학과, 아트팀)
임지민 (디지털미디어학과, 개발자, 기획자)
제가 이 글을 쓰고 있다면 성공적으로 프로젝트가 마무리 되어가고 있다는 의미겠지요. 좋은 사람들과 재미있는 프로젝트를 진행할 수 있어 좋은 경험을 가져갈 수 있었습니다. 다들 수고하셨습니다. 아자아자 파이팅! 👊
최서연(소프트웨어융합학과, 개발자, 기획자)
기획의 중요성과 PM의 중요성을 알게 된 프로젝트였습니다. 기존에 있었던 에셋이 아닌, 저희만의 새로운 모델로 게임을 만들 수 있어 새롭고 재미있었습니다.

STARIZE
별자리가 되기 위한 어린 별의 이야기를 아름다운 플랫포머로 표현한 게임
TEAM
프로젝트 팀원
프로젝트 형태
viviD
최서연, 임지민, 김영호,김예원, 이혜림
게임
프로젝트 개요
장르
액션 플랫포머
제작 기간
2024년 3월 - 2024년 12월
사용 엔진
유니티, Cinema4D, Blender, Adobe Illustrator
시놉시스
별자리가 되기 위한 여행을 떠나는 어린 별의 아름답고도 험난한 이야기.
과연 주인공, 스텔라는 별자리의 시련을 이겨내고 별의 탑 최상층에 걸음을 내딛을 수 있을까요?
💫 별의 탑에서 비상하는 꿈, 그 빛을 찾는 여정.
인게임 단축키



프로젝트 과정
기획
| 게임 컨셉
하늘 위에 있는 별의 탑, 그 탑을 둘러싼 성운에서는 샛별들이 별똥별로 탄생한다.
샛별들은 각자 어른이 되어가며 외부적으로, 내부적으로 성장하여 자신만의 별자리를 만들어낸다.
별의 탑은 그러한 별자리들이 샛별들에게 시련을 내려 어른이 될 수 있도록 돕는 공간이다.
| 컨셉 아트












기술 스택
직렬화 저장/불러오기
데이터를 저장하고 불러오는 방법은 .csv나 .json같은 특정포멧을 사용하는 방법이 있지만, 이런 방법은 데이터를 로드하기 위해서 Parsing 작업을 거쳐야 실제로 사용할 수 있는 데이터가 됩니다. 또, 저장되는 데이터가 문자열이기 때문에 유저가 손쉽게 악의적으로 수정할 수 있어서 보안에도 취약합니다.
저희는 이런 문제를 해결하기 위해 직렬화를 사용했습니다. 실제로 사용하는 데이터를 바이트 스트림 형태로 뭉친후에 이를 .bytes 확장자의 형태로 저장했습니다. 직렬화를 사용하기 때문에 Parsing이라는 추가적인 작업이 필요없을 뿐더러, 유저가 악의적으로 수정하기 어려운 형태이기 때문에 보안상 안전해졌습니다. 추가로 문자열이 아닌 바이트 스트림 형태이기 때문에 저장공간도 덜 차지하였습니다.
맵 에디터
저희는 아티스트나 기획자처럼 유니티 엔진에 익숙하지 않은 사람들도 맵을 자유롭게 생성할 수 있도록 하기위해 에디터를 제공했습니다. 생성한 맵을 저장하고 불러오기 위해서 직렬화 기술을 사용하였습니다.
맵 에디터에서 물체를 설치하기 위해선 설치할 물체에 알맞는 충돌체가 필요했습니다. 이러한 충돌체는 설치할 물체의 메시가 크면 총돌체도 커져야하고, 메시가 작으면 충돌체도 작아져야 했습니다. 이 것은 후술할 ‘바운드를 이용한 콜라이더 생성’기술을 통해 해결했습니다.
또한 저희가 설치할 물체중에 기믹이 있습니다. 이 기믹은 같은 종류여도 값을 수정해서 기믹마다 조금씩 다른 행동을 하도록 설정해야 했습니다. 마치 유니티 에디터의 Inspector창과 동일하게 변수의 값을 수정할 수 있어야 했습니다. 저희는 이 것을 ‘리플렉션을 통한 인스펙터창 구현’기술로 해결했습니다.
오브젝트 생성, 삭제, 수정
오브젝트 생성 기능은 마우스 위치를 기준으로 생성될 위치를 미리 표시하며, 사용자가 원하는 위치에 설치할 수 있도록 지원합니다. 삭제 기능은 불필요하거나 잘못 생성된 오브젝트를 제거할 수 있도록 구현했습니다. 또한, 수정 기능은 유니티에서 제공하는 Transform 속성을 활용해 오브젝트의 Position, Rotation, Scale을 조정할 수 있도록 구성했습니다.



오브젝트 수정 기능은 유니티의 Scene 화면에서 오브젝트의 Transform(Position, Rotation, Scale)을 제어하는 기능을 참고하여 설계했습니다. 사용자가 Unity의 Scene 화면에서 경험하는 직관적인 편집 방식을 맵 에디터에서도 동일하게 활용할 수 있도록 구현하여, 직관적이고 편리하게 오브젝트를 수정할 수 있도록 구성했습니다. 이를 통해 맵을 구성하거나 변경하는 작업이 보다 효율적으로 이루어질 수 있습니다.



바운드를 이용한 설치
바운드는 유니티의 Renderer라는 컴포넌트에서 bound라는 이름의 프로퍼티로 제공해줍니다. 메시의 모든 버텍스 중 x, y, z값이 가장 작은 값과, 가장 큰 값을 통해 메시의 AABB 충돌체를 구해오는 것입니다. 자세한 계산 방식은 아래 이미지를 참고해주세요.

이러한 충돌체를 통해서 이미 설치되어 있는 물체 위에 또다른 물체를 설치할 수 있습니다. 마치 마인크래프트에서 블럭을 설치할 때 이미 설치된 블럭 위에 설치하듯, 충돌체 위에 또다른 물체를 설치할 수 있습니다.



리플렉션을 통한 인스펙터창 구현
저희는 좀 더 편리한 수치 조정을 위해 인스펙터창과 동일한 기능이 필요했습니다. 이 것은 리플렉션을 사용하여 손쉽게 해결하였습니다. 리플렉션을 통해 현재 설치되어있는 물체의 수치값을 읽어올 수 있었고, 이것을 UI를 통해서 표현할 수 있었습니다. 또한 InputField와 같은 UI를 통해서 사용자가 값을 넣을 수 있도록 하였고, 이렇게 수정된 값을 실제로 적용하는 기능도 추가하였습니다.



팀 소개
| 팀원 소개 및 담당 역할
📝 [기획/PM] 최서연, 임지민
⌨️ [개발] 최서연, 김영호, 임지민
🎨 [아트] 김예원, 이혜림
| 제작 후기
김영호 (컴퓨터공학부 정보통신공학전공, 개발자)
이전에는 개발자들끼리 모여 에셋을 활용해 프로토타입만 개발해보거나, 개인적으로 다른 게임을 모작한 경험이 있었을 뿐이라 프로젝트를 완성하지 못한 아쉬움이 있었습니다. 그러던 중 viviD 팀의 팀원 모집 글을 통해 기획팀, 아트팀, 개발팀으로 세부 역할을 나누어 진행하는 프로젝트에 참여하게 되었습니다. 프로젝트를 진행하며 각 역할에 대해 깊이 고찰할 수 있었고, 서로 이해하지 못했던 다른 역할들에 대한 부족한 정보를 배우는 좋은 경험이었습니다.
김영호 (컴퓨터공학부 정보통신공학전공, 개발자)
게임이 제작되는 과정과 게임브랜딩과 게임디자인에 필요한 디자인 프로세스를 배우고 캐릭터 디자인과 시각 요소 제작을 진행하는 과정이 재미있었습니다. 개인으로서의 작업이 아닌 다른 개발이나 기획 분야의 팀원들과 효율적으로 대화하며 팀으로서의 소통의 중요성을 느낄 수 있었고, 체계적인 작업 진행을 위한 프로젝트 계획 세우기를 익힐 수 있었습니다.
김예원 (시각디자인전공, 아트팀)
게임이 제작되는 과정과 게임브랜딩과 게임디자인에 필요한 디자인 프로세스를 배우고 캐릭터 디자인과 시각 요소 제작을 진행하는 과정이 재미있었습니다. 개인으로서의 작업이 아닌 다른 개발이나 기획 분야의 팀원들과 효율적으로 대화하며 팀으로서의 소통의 중요성을 느낄 수 있었고, 체계적인 작업 진행을 위한 프로젝트 계획 세우기를 익힐 수 있었습니다.
김예원 (시각디자인전공, 아트팀)
이혜림 (산업디자인학과, 아트팀)
임지민 (디지털미디어학과, 개발자, 기획자)
제가 이 글을 쓰고 있다면 성공적으로 프로젝트가 마무리 되어가고 있다는 의미겠지요. 좋은 사람들과 재미있는 프로젝트를 진행할 수 있어 좋은 경험을 가져갈 수 있었습니다. 다들 수고하셨습니다. 아자아자 파이팅! 👊
임지민 (디지털미디어학과, 개발자, 기획자)
제가 이 글을 쓰고 있다면 성공적으로 프로젝트가 마무리 되어가고 있다는 의미겠지요. 좋은 사람들과 재미있는 프로젝트를 진행할 수 있어 좋은 경험을 가져갈 수 있었습니다. 다들 수고하셨습니다. 아자아자 파이팅! 👊
기획의 중요성과 PM의 중요성을 알게 된 프로젝트였습니다. 기존에 있었던 에셋이 아닌, 저희만의 새로운 모델로 게임을 만들 수 있어 새롭고 재미있었습니다.
최서연(소프트웨어융합학과, 개발자, 기획자)
기획의 중요성과 PM의 중요성을 알게 된 프로젝트였습니다. 기존에 있었던 에셋이 아닌, 저희만의 새로운 모델로 게임을 만들 수 있어 새롭고 재미있었습니다.
최서연(소프트웨어융합학과, 개발자, 기획자)