소프트웨어 개발원리와 실습 프로젝트 제안서 - 2024FALL-SWPP/team-project-for-2024-fall-swpp-team-08 GitHub Wiki
저희 8조의 팀명은 팔색조로, 이는 다양한 색의 깃털을 뽐내는 팔색조와 같이 서로 다른, 다채로운 매력을 가진 팀원들이 모여 하나의 멋진 게임을 만들어가는 모습을 상징합니다.
컴퓨터공학 주전공과 벤처경영 연합전공을 하고 있으며 문제 해결 및 가설 검증에 관심이 많고, 뛰어난 일정 관리 및 정보 수집 능력을 갖추고 있습니다. 사람들과의 커뮤니케이션을 잘하며 협업을 효율적으로 이끄는 것을 좋아합니다.
현재 타투 서비스 arti.to의 Co-founder이자 PO로서 프로덕트 백로그를 관리하고 개발 스프린트를 이끌고 있으며, 서울대학교 커뮤니티 SNULife에서 스크럼 마스터와 전략/마케팅팀 팀장을 맡은 경험이 있습니다. 개발과 관련해서는 Django-Python 백엔드 개발 및 Swift-UIKit-SwiftUI iOS 개발 경험이 있고, 2년 전에 유튜브 영상을 보며 Unity와 ARKit을 활용해 버추얼 카메라 앱을 클론코딩 해본 적이 있습니다.
중학생부터 리그 오브 레전드를 즐겨하고 있으며, 최근에는 작혼, 프로젝트 세카이 등을 즐겨하고 있습니다. 비록 즐겨하는 게임이 3D 게임은 아니지만 제가 가지고 있는 경험을 바탕으로 프로젝트를 잘 이끌어 갈 수 있을 것 같습니다.
자료 구조, 컴퓨터 프로그래밍 등을 수강하며 C, C++, Java를 다룰 수 있습니다. 그 중에서도 OOP 계열보다는 C 계열의 언어에 익숙하나, C#은 소개원실을 수강하며 처음 접해보게 되었습니다. 프로젝트 진행 경험은 수업 내의 과제 외에는 없고, 다수가 함께하는 프로젝트에 참여하는 것은 처음입니다. 미숙한 점이 많은 만큼 본 프로젝트에 최선을 다하고 이를 통해서 대형 프로젝트의 진행 방식과 협업, 버전 관리 능력을 기를 수 있도록 노력하겠습니다.
대학교 입학 후에는 자연스레 게임과 멀어졌지만, 초중고 시절에 항상 많은 컴퓨터 게임과 가까이 지냈던 경험이 게임 개발에 있어서 도움이 될 것으로 기대됩니다. 사용자 경험을 바탕으로 사용자 친화적인 게임을 개발하는 데에 초점을 맞추도록 노력하겠습니다.
향후 창업을 꿈꾸어 경영 관련 직무(마케팅, 전략 등)에 1~2년간 몸담은 탓에 개발 경험이 그리 많지 않습니다. 특히 C, C++, Java, Python 등 기본적인 언어를 이용한 코딩 경험은 있으나 C#을 이용한 코딩 내지는 프로젝트 단위의 개발 경험은 일천합니다. 그러나 높은 에너지 레벨과 빠른 학습 능력을 통해 본 프로젝트에 도움이 되고자 하며, 무엇보다 본 강의를 통해 C# 코딩 경험은 물론 팀으로서 협업하여 프로젝트 단위의 산출물을 만들어내는 귀중한 경험을 하고자 합니다.
성인이 된 이후로는 게임을 그렇게 즐겨하지 않았으나, 그 이전에는 '풋볼 매니저' 시리즈와 '문명' 시리즈 등 시뮬레이션 형태의 전략 게임을 즐겨한 바 있습니다. 본 프로젝트를 통해 개발할 게임과는 사뭇 다른 뉘앙스의 게임이지만, 한편으로 다른 장르이기에 차용할 수 있는 것들이 더욱 많다고 생각합니다. 이전의 경험을 십분 활용하여 프로젝트에 임하고자 합니다.
컴퓨터공학을 주전공으로 이수하며 자료구조 · 알고리즘에 대한 기본 지식, Python · Java 등의 프로그래밍 언어들을 익혔습니다. 또한 이전에 웹 개발 프로젝트에서 Django, Node.js를 활용하여 백엔드 개발을 맡은 적이 있습니다. 해당 프로젝트 경험을 통해 느낀 점은, 팀원들이 함께 노력하고 돕는 과정에서 서로의 부족한 점을 채워나갈 수 있다는 것입니다. 저 역시도 C#과 Unity를 이번 학기에 처음 접하는 수강생이기에, 게임 개발에 있어 미숙한 부분이 많을 것으로 예상됩니다. 하지만 부족한 부분은 열심히 배워나가고 서로 많이 돕겠다는 자세로 본 프로젝트에 참여하고자 합니다. 한편 저는 게임과 가깝게 지냈던 사람은 아니지만, 오히려 게임을 처음 접하는 유저의 입장을 고려하여 직관적으로 플레이하고 즐길 수 있는 게임을 만들어내고 싶습니다.
제일 즐겁게 플레이했던 게임은 Chants of Sennaar라는, 통역을 소재로 한 3D 퍼즐 게임입니다. 이처럼 평소 게임을 좋아하여 즐겨 하는 사람으로서 유저로서의 관점을 게임 개발에 십분 활용하고자 합니다.
이전 다른 컴퓨터공학부 강의들에서 C, Python, Java로 개발을 진행해본 적이 있습니다. 이전에 3D graphic tool인 NVIDIA Omniverse를 접해본 적은 있으나 Unity나 Blender는 사용해본 적이 없으며 C# 코딩 경험 역시 전무합니다. 그러나 아는 자는 그것을 좋아하는 자를 이길 수 없고, 좋아하는 자는 즐기는 자를 이길 수 없다는 옛 성현의 말씀에 따라 제가 좋아하는 게임을 개발하는 과정을 즐김으로써 팀에 도움이 되고 싶습니다.
v1
본 게임은 서울대학교를 배경으로, 자하연에서 탈출한 오리가 서울대학교를 벗어나 자연으로 돌아가는 여정을 그린 Auto-Runner Platformer 장르의 게임. 플레이어는 자동으로 달리는 오리를 조작하며 다양한 장애물을 피하고 각 스테이지를 클리어해 나가야 함. 게임의 배경과 스토리는 서울대학교의 실제 지리적 요소와 상징물을 모티브로 설계되었으며, 각 스테이지는 서울대학교 캠퍼스와 주변 환경을 생동감 있게 표현하고 있음.
게임의 장르는 Auto-Runner Platformer. Temple Run처럼 캐릭터가 자동으로 달리는 상태에서 장애물을 피하고 길을 선택해야 하지만, 특정 구간이나 스테이지의 끝에 도달하면 다음 구간으로 넘어가는 Super Mario Bros와 같은 구조를 채택하고 있음. 단순히 끝없이 달리는 Endless Runner 형식이 아닌, 명확한 목표와 엔딩을 가진 스테이지 기반의 게임플레이를 제공함.
게임의 주요 무대는 자하연, 행정관, 서울대공원 등 3개의 주요 맵/스테이지로 구성. 플레이어는 이 맵들을 순차적으로 클리어하면서 오리가 서울대학교의 다양한 공간을 탐험하고 최종적으로 자연으로 돌아가는 과정을 경험하게 됨.
첫 번째 스테이지는 자하연에서 출발하여 행정관까지 도달하는 여정. 교내 도로를 따라 달리며 고양이, 커피 컵, 자전거 등의 장애물을 피하면서 행정관에 무사히 도착해야 함.
두 번째 스테이지는 행정관 내부를 배경으로, 행정관 내에서 서울대공원으로 보내는 택배 상자에 몰래 들어가는 것이 목표. 인간, 떨어지는 서류철, 책장에 쌓인 서류 뭉치 등의 장애물을 피하며 택배 상자에 안전하게 들어가면 스테이지 클리어.
세 번째 스테이지는 서울대공원으로, 도심을 벗어나 야생의 친구들을 만나기 위해 호수로 향하는 여정. 바닥을 청소하는 빗자루, 아이가 떨어뜨리는 장난감 등의 장애물들을 피하며 호수까지 도달해 오리 친구들과 만나면 게임 클리어.
오리가 평소에 좋아하는 사과 아이템을 먹으면 잠시 동안 속도 부스트 효과를 얻음. 반대로 모래 목욕용 모래 봉지를 먹으면 일정 시간 동안 속도가 느려지는 페널티가 적용됨. 이러한 아이템들은 전략적인 사용이 요구되며, 게임의 난이도를 조절하는 요소로 작용.
각 스테이지에는 총 10개의 데자와 캔이 배치되어 있으며, 이를 모두 수집해야만 스테이지 퍼펙트 클리어가 가능. 이러한 수집 요소는 플레이어의 탐험 욕구를 자극하고, 게임의 리플레이 가치를 높임.
v2
서울대학교 자하연을 탈출한 오리가 캠퍼스를 벗어나 자연으로 돌아가려는 여정을 그린 이야기. 인간의 소란과 환경 변화로 인해 서식지가 위협받게 되자, 오리는 캠퍼스를 떠나기 위해 모험을 시작함. 현대적이고 복잡한 서울대학교 공간을 배경으로, 오리는 끊임없이 장애물을 피해 도심을 탈출하고 궁극적으로 자연의 품으로 돌아가려 함.
게임은 자하연을 탈출한 오리가 교내 도로와 행정관을 거쳐 서울대공원으로 이동하는 과정을 다룸. 플레이어는 오리를 조작해 고양이, 커피 컵, 인간 등 다양한 장애물을 피하며 목적지에 도달해야 함. 행정관에서는 서울대공원으로 보내질 택배 상자에 숨어드는 과정이 주된 목표가 되며, 최종적으로 호수에 도달해 야생의 친구들과 재회하게 됨.
플레이어가 조작하는 오리는 호기심 많고 영리한 성격을 가진 탈출자. 인간의 방해 속에서도 포기하지 않고 자유롭게 자연으로 돌아가려는 강한 의지를 지님. 주요 NPC인 인간들은 오리에게 무의식적으로 위협이 되는 존재로, 오리의 탈출을 방해하거나 무심하게 장애물을 생성함.
밝고 모험적인 분위기를 바탕으로, 오리의 시선에서 바라본 서울대학교를 유머러스하게 묘사. 각 스테이지는 자하연의 자연적인 느낌, 행정관의 복잡한 실내 구조, 서울대공원의 평화로운 분위기로 구성되어 있어 색다른 게임플레이 경험을 제공함. 플레이어는 긴장감 속에서 오리의 모험을 함께하며, 자연으로 돌아가려는 여정을 완성해 나가게 됨.
스테이지 기반의 3D Auto-Runner Platformer
종스크롤 러닝 액션 게임으로, 맵을 종으로 사용하여 캐릭터는 아래에서 위로 달려간다. 방향키를 이용하여 상/하/좌/우 4방향의 조작이 가능하다.
게임의 목표는 1)최대한의 고득점으로 2)주어진 스테이지를 끝까지 클리어하는 것이다. 맵 내에 배치된 코인에 상응하는 오브젝트(데자와)를 습득함으로써 득점을 할 수 있으며, 장애물에 부딪쳐 캐릭터가 사망할 시 스테이지의 처음으로 돌아가 게임을 다시 시작할 수 있다.
- 데자와 : 코인의 역할로, 점수를 획득할 수 있는 수단
- 벼락치기 : 데자와를 통해 획득할 수 있는 점수 x2
- 오리부스트 : 속도가 1.5배 빨라지며, 모든 장애물 충돌을 무시함
- 곱빼기 : 데자와의 크기(히트박스)가 2배로 커짐
- 오리 날다 : 2단 점프가 가능해지며, 점프 상황에서 좌/우 조작이 가능해짐
본 게임의 타겟 사용자는 20대에서 30대 사이의 서울대학교 구성원으로, 가볍게 짧은 시간동안 즐길 수 있는 PC 3d 게임을 선호하는 사용자들이다. 학교에서 받는 스트레스를 풀 수 있도록 복잡하지 않은 게임을 선호한다.
서울대학교 소개원실 수강생
- 주요 특징: 주로 쌓인 학업 스트레스를 잠깐 잠깐 해소시켜 줄 수 있는 짧은 플레이 타임의 간단한 PC 게임을 선호함.
- 니즈와 기대 요소: 익히는데 시간이 오래 걸리지 않는 간단한 조작 기능, 재미를 부여할 수 있는 무작위 요소, 친구들과 경쟁이 가능한 점수 기능
서울대학교 소개원실 TA
- 주요 특징: 소개원실 수업에서 TA로 학생들을 지도할 정도로 게임 개발과 프로젝트 진행에 있어서 익숙함. 게임을 즐기기 보다는 게임을 플레이하면서 개발 상에 존재하는 문제점을 찾고 점수를 매겨야하는 입장임. 게임 자체와 더불어서 개발 과정도 중요시하는 사용자임.
- 니즈와 기대 요소: 3d기반 게임 구성요소, 예상치 못한 버그 발생 여부, 게임의 완성도, 개발 과정에서의 프로젝트 협업 능력
기획한 게임과 유사한 경쟁 게임으로는 '길건너 친구들', '템플 런', '서브웨이 서퍼'가 있다. 3가지 게임은 유사하면서도 서로 다른 특징을 보인다.
'길건너 친구들'은 닭, 오리 등의 캐릭터를 조작하여 도로나 강, 철도와 같은 장애물이 있는 지형을 안전하게 건너가는 게임이다. 해당 게임은 앞뒤, 좌우 조작을 통해 장애물을 피하거나 길을 건너 최대한 오랫동안 살아남는 것이 목표다. 픽셀 아트 그래픽으로 만들어진 귀여운 캐릭터들, 친구들과의 기록 경쟁 기능이 특징이다.
'템플 런'은 고대 유적지에서 캐릭터가 장애물을 피해 최대한 멀리 도망가도록 만드는 게임이다. 캐릭터는 자동으로 앞으로 달리며, 플레이어는 점프와 슬라이드, 좌우 회전 및 틸팅 조작을 통해 장애물을 피해야 한다. 템플 런은 어드벤처 요소를 특징으로 하는데, 뒤에서 쫓아오는 악마 원숭이들과 급박하게 뛰는 캐릭터의 모습이 긴장감을 유발한다.
'서브웨이 서퍼'는 지하철 경비원을 피해 멀리 도망가는 게임이다. 캐릭터는 자동으로 앞으로 달리며, 플레이어는 좌우 이동, 점프, 슬라이딩 조작을 통해 지하철을 피해 달려야 한다. 또한 제트팩과 같은 아이템 요소가 존재하며, 다채로운 시각적 효과과 해당 게임의 주요한 특징이다.
우리 조가 기획한 게임은 위의 3가지 게임이 가진 장점들을 모두 혼합한 형태이다. 귀여운 캐릭터와 직관적인 UI를 특징으로 하면서도, 긴장감을 유발하는 요소와 아이템을 통한 랜덤 요소를 모두 포함한 게임이다. 특히 컨셉과 타깃 측면에서, 게임은 서울대학교 캠퍼스를 배경으로 하고, 서울대학교 학생들을 주요 타깃 유저로 설정한 점에서 차별점을 보인다.
한편, 제시한 3가지 경쟁 게임은 모두 무한 달리기 형식으로 플레이어가 얼마나 멀리 갈 수 있는지에 중점을 두었다. 그러나 우리 조의 게임은 맵을 클리어하는 방식으로 진행되며, 이는 게임의 스토리와 타깃 유저를 고려하여 차별화를 시도한 부분이다. 이를 통해 유저들은 게임 속 스토리에 더욱 몰입하고, 맵을 클리어했을 때 성취감과 즐거움을 느낄 수 있을 것이다.
대학생 유저로서, 나는 게임의 조작법이 간단하고 직관적이길 원한다. 왜냐하면 복잡한 게임방식을 숙지하지 않고 편하게 즐기고 싶기 때문이다.
- 이 유저 스토리는 게임을 간단히 즐기고 싶은 유저들을 고려하여 게임이 간단한 이동 조작만으로도 즐길 수 있어야 함을 나타낸다. 또한, 직관적인 조작법을 통해 처음 게임을 접하는 유저도 바로 게임에 적응할 수 있도록 설계해야 한다.
서울대학교 학생 유저로서, 나는 게임에 서울대학교를 나타내는 요소가 있기를 원한다. 왜냐하면 게임 내의 캐릭터에 더 몰입할 수 있기 때문이다.
- 이 유저 스토리는 게임 캐릭터, 배경 등에 서울대학교를 나타낼 수 있는 요소가 있어야 함을 나타낸다. 또한, 게임 스토리에도 서울대학교의 요소를 도입해 유저들의 집중력과 몰입도를 향상시킬 수 있을 것이다.
성취감을 느끼고 싶은 유저로서, 나는 게임 내에서 점수 제도가 존재하고 그를 확인할 수 있기를 원한다. 왜냐하면 게임에서 내 점수를 보며 다른 사람들과 경쟁하고 성취감을 느끼고 싶기 때문이다.
- 이 유저 스토리는 점수 제도의 필요성을 강조한다. 친구와의 점수 비교, 기록 갱신 등을 통해 유저가 다른 유저의 기록과 경쟁하며 더 높은 성취감을 느낄 수 있도록 점수 제도를 설계해야한다.
게임 플레이 시간동안 집중하고 싶은 유저로서, 나는 게임 내에서 현재의 진행도를 확인할 수 있기를 원한다. 왜냐하면 진행도를 알고 있으면 목표의식이 더 강해지기 때문이다.
- 이 유저 스토리는 진행도를 볼 수 있는 시스템을 강조한다. 진행도를 유저가 확인할 수 있도록하여 게임에 더 몰입하고 집중할 수 있도록 해야한다.
다양한 재미를 추구하는 유저로서, 나는 게임이 난이도나 테마가 달라지는 여러 개의 단계로 구성되기를 원한다. 왜냐하면 여러 단계로 이루어진 게임은 더 다양한 재미를 주기 때문이다.
- 이 유저 스토리는 게임의 스테이지 세분화를 강조한다. 스테이지마다 달라지는 난이도나 테마를 이용해 동일한 게임 플레이에서도 계속해서 달라지는 재미를 줄 수 있어야한다.
①: 현재 스테이지의 진행도
②: 현재 스테이지의 점수
③: 얻으면 점수가 되는 아이템
④: 플레이어가 조작하는 캐릭터
⑤ ⓐ: 장애물 (점프 회피 불가)
①: 현재 스테이지의 진행도
②: 현재 스테이지의 점수
③: 얻으면 점수가 되는 아이템
④: 플레이어가 조작하는 캐릭터
⑤ ⓐ: 장애물 (점프 회피 불가)
⑤ ⓑ: 장애물 (점프 회피 가능)