본문 바로가기

대학생활

[미완] 모바일 실시간 퀴즈 배틀 게임

SW프로젝트(with 미리캔버스)
SW프로젝트(with 미리캔버스)

 

1주차

 

자만, 안일

 

2학년 2학기부터 시작되는 프로젝트, 취업을 위해 포트폴리오용으로 쓸만한 소프트웨어를 개발하는 과정이다. 1학년 때부터 게임 쪽으로 진로가 확고했던 나는, 거창했던 계획과 달리 아무것도 안 하고 2학년 2학기를 맞이했다. 

 

지금 다니고 있는 학과에서 게임 쪽으로 희망하는 사람이 적은 걸로 알고 있다. 대부분 웹 개발 특히 벡엔드로 많이들 간다. 알고 있었다. 커리큘럼에 게임 개발과 관련된 수업은 전혀 없다. 특히 게임 개발에 많이 사용되는 언어인 C++는 배우지도 않는다. 독학이 필수라는 것도 알고 있었다.

 

개별로 공부하지 않은 이유에 대해 묻는다면, 딱히 할 말이 없다. 쫓기는 대로 학교를 다니다 보니, 어느덧 2학년 2학기가 되었고, 코로나로 딱히 즐기지도 않은 20, 21살을 보내니 2학년이 되었다. 아무것도 하지 않은 나를 꾸짖을 사람도 없었다.

 

 

깨달음

 

SW 프로젝트 첫 수업은 주제 선정과 앞으로의 수업 진행 방향, 과제 제출 양식 등등 간단한 OT였다. 교수님이 의도하진 않으셨지만, 걱정되는 마음에 던진 말이 내 뒤통수를 때렸다. "지금부터 시작해도 게임 쪽으로 취업하기 힘들다."

 

따로 공부하지 않은 이유에 대해 자만감에 취해 말하자면 아직 시간이 남았기 때문이다. 

지금 보면 어이가 없다, 무슨 하루가 42시간이라도 되는 줄 아나보다

 

늦었다고 생각할 때가 진짜 너무 늦었다 - 박명수

 

늦었다. 근데 지금이라도 알아서 다행이다. 수업이 끝나고 발등에 불이 떨어진 걸 느꼈다. 어떻게든 하루를 제대로 보내지 않으면 나중에 큰 후회를 할 것이라는 게 느껴졌다.

 

그냥 2학년이 된 나를 혼낼 수 있는 건 나뿐이다. 게임 프로그래머가 목표임에도 손 놓고 있는 나의 뒤통수를 때릴 사람도 나뿐이다. 동시에 교수님이 하시는 말씀 하나가 강력한 동기로 받아들일 수 있는 것도 나의 판단이고, 안일했던 과거에 대한 반성과 깔끔히 앞만 바라보고 달려 나갈 용기도 내가 만드는 것이다.

 


2주차

 

'3D 프린팅 크리에이티브 공모전'과 'SW프로젝트'의 크로스오버

 

SW 프로젝트 주제로 '3D 프린팅 크리에티브 공모전'으로 제출할 '구독형 알고리즘 보드게임'을 보조할 수 있는 앱을 만들겠다고 일찍이 생각하고 있었다.

 

'구독형 알고리즘 보드게임'은 책 '메타버스'를 읽고 떠올린 창업 아이템의 형태다. 간단히 설명하자면 월 구독 형태로 이용하는 OTT 서비스를 보드게임에 적용했다. 구독을 통해 하나의 테마를 갖고 있는 보드게임을 선택하면, 한 달간 재밌게 즐길 수 있는 보드게임이 집으로 배송된다. 마치 '헌트어킬러'의 핵심인 '방탈출 메타버스'를 보드게임으로 재현한다는 생각이었다.

 

헌트어킬러(Hunt A Killer)는 방탈출 메타버스를 구독 경제로 구현한 사례입니다. (생략) 홈페이지에서 원하는 사건을 선택하면, 사건에 관한 단서를 풀 수 있는 물건들을 담은 상자가 집으로 배달됩니다.
자신의 추리를 헌트어킬러에 보내서 용의자를 줄이고, 다시 상자를 받는 과정을 반복해서 최종적으로 범인을 잡아냅니다. 헌트어킬러 메타버스에서 구독자들은 가상의 탐정협회에서 장기간 미제 사건으로 보관 중인 케이스들을 해결하는 탐정의 삶을 살게 됩니다.
증강현실이라고 해서 꼭 하이테크를 동원하지 않아도 됩니다. 중요한 것은 어떻게 하면 현실에 무언가를 덧씌워서 사람들의 감각, 경험, 생각을 증강하거나 다른 곳으로 이끌 수 있는 가입니다.

- 책 '메타버스' 본문 중 인용

 

교양으로 '3D프린팅' 수업을 들었고, 프로젝트 형식의 기말 평가 때 만든 것이 '알고리즘 보드게임'이었다. 보드판 위에 있는 본인의 말이 특정 위치로 도달할 수 있는 경로를 정해진 방향과 제한된 이동 횟수를 고려해 로직을 만드는 게임이다.

 

마침 학교에서 3D 프린팅 공모전이 열렸고, 공모전을 통해 보드게임을 실체화하고 동시에 SW 프로젝트를 통해 보드게임을 보조할 수 있는 앱을 만들면 되겠다고 생각했다.

보조 앱의 역할은 지루한 반복과 귀찮음을 대신 해결해 주고 보드게임이 갖고 있는 스토리에 더욱 몰입해 주는 역할을 한다. 또한 정해진 정답과 명확한 승리가 있는 게임이 아니기에 앱이 대신 점수 계산을 하고, 사용자가 제시한 로직이 올바른지 검토해 준다. 그리고 보드게임에 있는 열쇠 카드(혹은 힌트 카드)와 미션카드 또한 앱으로 옮겨가 단순히 보드게임에는 보드판과 보드 말, 보드판에 놓을 수 있는 장애물(다른 사용자를 견제하는 용도)만 존재한다.

 

 

고민

 

SW프로젝트 수업 때마다 개별 면담이 있는데 주제에 대해 얘기해 보니 안 보이던 문제점이 보였다.

 

유명한 보드게임의 보조 앱이라면 이해가 가능한데, 아무도 모르는 보드게임의 보조 앱이라고 하니 이해가 쉽지 않다.

 

교수님의 조언을 듣고 자리에 앉아 생각해 보니, '아무도 모르는 보드게임'이 마음에 걸렸다. 보드게임 카페를 가보면 수많은 형형색색의 모양도 다른 보드게임이 진열되어 있다. 거기에 내가 만든 보드게임이 있다면 다른 사람들에게 선택을 받을 가능성이 어느 정도 일까. 낮았다. 스스로 생각해도 내가 만든 보드게임은 계속해서 요소가 추가되고 있었고, 구성에 대한 믿음이 안 생겼다. '알고리즘 보드게임'의 구성이 완성되고 괜찮은 보드게임이라 여겨질 만큼의 탄탄한 게임이어야 보조 앱을 만드는 것이 의미가 있다고 생각이 들었다.

 


3주차

 

SW프로젝트는 소프트웨어를 개발하는 과목

 

2주차 숙제를 하면서 '알고리즘 보드게임'의 형태를 잡고 설명서를 만들었다. 그리고 시장에 나와있는 보드게임 중 앱이 필요한 게임을 찾아보니 '광기의 저택'이 나왔다.

 

광기의 저택은 Fantasy Flight Games에서 제작한 크툴루* 신화 계열 보드게임으로 보드게임과 연동되는 앱과 함께 플레이해야 한다. 광기의 저택을 해본 적이 없어 자세한 규칙과 진행 방식을 이해하진 못했지만, 알 수 있었던 것은 앱이 사용되면서 전보다 번거로웠던 초기 세팅이 사라졌고, 숙지해야 할 게임의 룰이 줄어 더욱 몰입감 있게 게임을 즐길 수 있었다는 것이다.

* 크툴루 신화란 코즈믹 호러 신화 중 하나로 대략적인 세계관은 인류 출현 이전의 지구에서 인간의 상상을 아득히 뛰어넘는 기괴한 외계 종족들과 초월적 존재들에 대한 공포를 묘사하는 데 근거하고 있으며, 까마득한 과거의 지구에서 공포와 광기로 지배했던 고대 악신들의 신화라고 한다.(출처: 나무 위키)

 

광기의 저택처럼 앱이 가져가는 기능이 명확해야 하는데 잘 그려지지 않았다. 오히려 보드게임 규칙과 진행 방식, 스토리 등에 몰입하고 있었다. SW 프로젝트 과목은 포트폴리오에 쓸 수 있을 만큼의 공을 들일 소프트웨어를 개발하는 과목인데, 잿밥에 더 관심이 쏠린 격이다. 배보다 배꼽이 더 크다고 하는데, 계속 알고리즘 보드게임을 보조할 수 있는 앱을 고집한다면 이도 저도 아닌 상태가 될 거 같았다.

 

 

고민

 

교수님과 면담을 하면서 여러 문제를 발견했다. 대체로 "앱이 명확하지 않다.", "앱에 있는 기능이 너무 단순하다, 미니 게임을 통한 미션 진행과 점수 계산만 있는 거라면 목표가 너무 낮다.", "적절하게 앱이 사용된다면 보드게임에 앱이 필수이겠지만, 그렇지 않은 경우 앱이 필요한 이유를 모르겠다."

 

보드게임의 형태만 잡고 완성시키지 않았기에 앱을 기획하는데 문제가 있었던 것 같다. 교수님께서는 보드판에 버전을 만들고, 현재 구현된 범위를 완성시켜 완성된 버전에 따른 보조 앱을 기획해 보자고 말씀하셨다.

 

일단 보드게임을 완성시키고 시중에 파는 보드게임처럼 설명서를 만들기로 했다. 그리고 설명서를 주변 사람들에게 보여주고 평가를 받아 보드게임 보조 앱이라는 주제를 구현해도 되는지 판단하기로 했다.

 

 

사람들의 조언

 

기획서를 쓰거나, 창작물을 만들 때 조언을 구하는 사람들이 있는데 그분들께 설명서를 보여주고 얘기를 나눈 결과, 새로운 프로젝트 주제를 선정하는 게 맞다는 결론을 내렸다.

 

주변 사람들의 반응을 요약하면 보드게임이 너무 복잡하고 재미를 유발하는 요소가 부족하다는 것이다. 의견을 듣고 해결 방법을 생각하다 이러다 배꼽이 몸보다 커지겠다는 생각이 들어 '구독형 알고리즘 보드게임'은 보류하기로 결정했다. 나중에 사이드 프로젝트 주제로 사용하면 된다.

 


4주차

 

주제 선정을 위한 밤 산책

 

다시 주제를 선정해도 시간이 남았다. 그런데 아무 생각이 들지 않았다. 보드게임 보조 앱을 평가해 준 친구가 머리가 복잡할 때 산책이 도움이 된다고 해서 밤 산책을 갔다. 덕분에 괜찮은 아이디어가 떠올라 집에 돌아와 대충 기획서를 작성했다.

 

대충 기획서
주제: 모바일 실시간 퀴즈 배틀 게임

해당 게임은 주관식 혹은 객관식 문제인 텍스트 퀴즈를 계속해서 기존 '퀴즈 배틀 게임' 형식과 달리 미니 게임을 통해 텍스트 퀴즈를 풀 수 있는 기회가 주어진다. 즉, 먼저 등장하는 미니 게임을 다른 사람보다 빠르게 클리어할수록 유리하다. 미니 게임을 클리어한 사람만이 텍스트 퀴즈를 풀 수 있고, 최종 점수는 가장 먼저 텍스트 퀴즈를 푼 사람이 높은 점수를 획득한다.

영상에서 나오는 한예종 게임의 부저는 상식 퀴즈고 메인 퀴즈가 음악퀴즈인 것처럼 내가 만들 게임에서 부저는 미니 게임이고 메인 퀴즈가 텍스트 문제다.

- 신서유기(tvN 예능) 시즌 5, 한예종 게임에서 얻은 아이디어

 

 

 

새로운 프로젝트의 목표

 

SW 프로젝트 수업 전 교수님께 따로 연락드려 면담을 했었다. 2시간이 안 되는 시간 동안 많은 얘기가 오갔고, 게임 쪽으로 진로가 확고한 나를 위해 교수님께선 진심 어린 조언을 해주셨다.

 

 목표  내용
 최소 목표(Plan B)  솔로 플레이를 완벽히 지원(미니게임, 텍스트 퀴즈 등등)
 최종 목표(Plan A)  랭킹(사용자 점수 공유) 시스템
 추가 목표(Plus Alpha)  멀티 플레이(PvP, 채팅, 친구 맺기 등등)

면담을 통해 프로젝트 주제를 확정했고 프로젝트가 구체화되면서 목표를 3가지로 설정했다. 프로젝트의 이름이 '모바일 실시간 퀴즈 배틀 게임'이라 멀티 플레이가 기본이라고 생각했지만, 유니티로 제대로 된 게임을 개발한 적이 없었고 학업 공부 및 시험 등을 고려해 추가 목표로 두자고 교수님께서 조언하셨다. 나 역시 그게 맞다고 생각해 추가 목표로 멀티 플레이를 설정했다.

 


5주차

 

집 근처 게임학원 상담 후기

 

통학할 때 이용하는 역 근처에 게임학원이 생겼다. 사이트에 들어가서 상담 신청을 남겼고 연락이 와서 상담받는 날짜를 잡았다.

상담 후기
친절했다. 분위기를 편안하게 만들어 내 얘기를 할 수 있게 했다. 구글링을 통해 게임학원의 평이 안 좋은 걸 알고 있었지만 처음 학원을 방문했고, 수업도 듣지 않았기 때문에 멋대로 판단을 내릴 순 없었다. 그렇기에 이번 상담을 통해 느낀 건 내 수준이 낮다는 것과 생각보다 더 큰 시간과 노력이 필요하겠다는 생각뿐이다.

 

 

기획서 작성

 

저번 학기에 들었던 '자료구조' 과목에서 제출한 보고서의 양식을 바탕으로 기획서를 작성했다. 게임 설명으로는 크게 솔로플레이와 멀티플레이 설명, 미니 게임과 텍스트 게임의 관계, 시나리오 및 테마로 나눠 설명했고 게임의 조건으로는 초반에 설정한 최소 목표, 최종 목표, 추가 목표를 바탕으로 설명했다.

이번 학기에 배우는 '시스템분석및설계'에서 프로젝트 설계 시 요구사항 분석이 중요하다고 배워서 크게 입력, 처리, 출력으로 나눠 설명했다. 또 각각 시작 화면, 메인 화면, 인게임 화면으로 분리해 요구사항을 정리했다.

 

좌: 최소 목표(Plan B) / 우: 최대 목표(Plan A) 및 추가 목표(Plus Alpha)

 

 

개발 환경

 

개발 환경을 정하는 것도  SW 프로젝트 과목의 숙제였다.

 

사용 언어 C++, JSON
게임 엔진 유니티(Unity)
통합 개발 환경 비주얼 스튜디오 2022(Visual Studio 2022)
데이터베이스 파이어베이스 실시간 데이터베이스(Firebase Realtime Database)
멀티 플레이어 게임 서버 프레임워크 포톤 서버(Photon Server)
그래픽 작업 에이스프라이트(Aseprite)

 


6주차

 

6주차 주간 발표

 

6주차 주간 발표 내용 요약

 

처음으로 주간 발표를 하는데 간략하게 금주에 진행된 내용, 어떤 문제가 있었고 어떻게 해결했는지 간단하게 설명하는 시간이었다. 유니티를 처음 만지는 거라 유튜브 예제 영상 하나를 따라 하는데도 계속 막혔다. 프로젝트 진행을 하면서 문제가 생길 때마다 네이버 카페인 '유니티 허브(Unity Hub) - 개발자 커뮤니티'를 자주 이용했다. 돌이켜보면 얼굴이 붉어질 멍청한 질문글을 올렸다.

 

유니티 허브 (Unity Hub) -... : 네이버 카페

유니티 공식 개발자 커뮤니티입니다.

cafe.naver.com

혹시라도 유니티 허브에 질문글을 올리신다면 우선 검색을 먼저 하는 걸 추천드립니다. 그리고 질문글의 제목은 명확하게, 내용은 오류 코드가 있다면 해당 부분과 에러 메시지 등등 구체적이고 명료하게 남기면 좋습니다. 무엇보다 질문글은 삭제하시면 안 됩니다! 댓글로 알려주신 분들께 답변 남기는 것도 잊지 말아주셨으면 합니다.

 

 

고양이도 할 수 있지만...

 

처음에 앱 설계를 기획했다 모바일 게임으로 바뀌긴 했지만 그 과정에서 구글링을 통해 알아낸 좋은 글이 있었다. 브런치에서 발행된 '고양이도 할 수 있는 앱 설계서 작성법'이라는 글인데 예시가 이해하기 쉽고 따라 하기 좋다.

 

좌: 정보 구조도(IA) / 우: 시작화면 설계도

 

고양이도 할 수 있지만 구체적인 아이디어가 없는 사람은 힘들다. 대충이라도 아이디어를 글로 정리해서 그걸 토대로 양식에 적용한다고 생각하면 쉽다.

 

고양이도 할 수 있는 앱 설계서 작성법

화면 설계서(와이어프레임) 이렇게 만듭니다 | 앱 화면 설계서(와이어프레임) 작성 매뉴얼입니다. 원래 나중에 후배가 생기면 한껏 차갑고 전문적인 표정을 지으면서 ‘OO씨 이거 내일까지 다 읽

brunch.co.kr

 

 

유니티와 파이어베이스 연동

 

 

유니티에서 적당한 예제를 검색해서 나온 영상을 따라 했다. 유니티 내에서 이메일과 비밀번호로 회원가입을 하니 실시간 데이터베이스에 정보가 입력되는 것도 확인을 했다. 문제는 구글 이메일로 로그인하니 유니티가 무한 대기에 빠졌다.

 

예상되는 문제 발생 원인
Google Auth Token을 받아오는 과정에서 'Google-signin-plugin-1.0.4.unitypacakge'라는 오픈소스를 사용 중인데 현재 쓰고 있는 유니티 버전이 2017 버전 이상이다. 해당 오픈소스는 2017 버전까지는 이상 없이 작동했기에 아무래도 다른 패키지를 import 시켜줘야 하는 것으로 예상된다.

 

파이어베이스 회원가입, 로그인, 로그아웃 기능 테스트

 


7~8주차

 

SW프로젝트 계획서 작성

 

계획서의 목차는 프로젝트 목적, 프로젝트 목표 및 기대효과, 기존 사례 분석 및 SWOT 분석, 프로젝트 진행범위 및 방법, 프로젝트 주요 내용, 프로젝트 수행 일정 계획, 프로젝트 위험 요소 관리 계획으로 진행된다.
 
주요 개발 내용에서 요구사항 분석과 정보 구조도 및 스크린 패스를 사용해 설명하고 화면마다 보이는 이미지와 컴포넌트 목록을 사용해 프로젝트를 구체적으로 설명했다. 화면 이름은 사용환경-Depth1-Depth2-Depth3(Ex. Main-2-02-02)로 구분 지었다. 

좌: 프로젝트 목표 / 우: 정보 구조도 및 스크린 패스

 

 

SW프로젝트 계획서 발표

프로젝트 계획서 발표를 위해 한눈에 보기 쉽게 만든 요약문이다. 발표에서 중점이 되어야 하는 부분이 '무엇을 개발할 것인가?', '기한 내에 목표를 어디까지 달성할 것인가?'라고 생각했다. 실제 발표할 때는 화면 설계도로 사용자 시나리오를 설명했다.

 


9주차

 

9주차 주간 발표

 

9주차 주간 발표 내용 요약

 

8주차가 중간시험 기간이라 프로젝트 진행이 더디었다. 일찍 개발을 시작했어야 하는데 프로젝트 계획에 많은 시간을 쏟았던 게 문제였다. 발표를 보던 교수님께서 "슬라이딩 퍼즐을 구현하는데 많은 시간을 써야 할 거 같은데 진행이 너무 느리다"라고 하셨다. 그때 이대로 가면 큰일 나겠다고 번뜩 정신이 들었다. 따라 하던 슬라이딩 퍼즐 예제대로 내 상황에 맞지 않은 예제라 다른 유튜브 영상을 찾아야 한다.

 

 

슬라이딩 퍼즐 게임 예제(1)

 

 

영상을 따라하던 중 발생한 에러

 

미니 게임 중 하나인 슬라이딩 퍼즐 게임을 구현하기 위해 유튜브 예제를 살펴보던 중 유튜버 고박사님께서 올린 영상이 있길래 따라 했다. 역시나 에러가 나왔다. 똑같이 따라 했는데 'ArgumentOutOfRangeException'이 나오고 제대로 실행이 안되길래 1~2시간 동안 유니티와 싸웠다. 주간 발표 하는 날 발생한 에러라 해결하지 못한 채 발표를 시작했다.

 


10주차

 

10주차 주간 발표

 

10주차 주간 발표 내용 요약

 

 

그래픽 및 유니티 작업 내용

 

메인 화면에 있는 컴퓨터 형태의 버튼을 클릭하면 애니메이션이 진행된 후 타이틀 화면을 넘어간다.  

 

좌: 메인화면에서 타이틀 화면으로 이동 / 우: 버튼 이벤트 애니메이션

 

좌: 타이틀 화면에서 로그인, 회원가입 / 우: 로비 화면에서 메인 화면 혹은 타이틀 화면으로 이동

 

 

회원가입 - 데이터베이스 테스트

회원가입 시 입력한 정보가 실시간 DB에 들어온 모습

 


11주차

 

11주차 주간 발표

 

11주차 주간 발표 내용 요약

 

 

슬라이딩 퍼즐, 텍스트 퀴즈 구현 완료

 

슬라이딩 퍼즐

 

텍스트 퀴즈

 

 

텍스트 퀴즈 구현 중 에러 해결

좌: 텍스트 퀴즈에서 사용하는 퀴즈 DB / 우: 텍스트 퀴즈 구현 중 에러 발생

 

텍스트 퀴즈는 무작위로 번호가 결정되어 퀴즈 DB에서 문제가 추출된다.

 

텍스트 퀴즈를 구현하다 생긴 에러는 'NullReferenceException'인데 애초에 딕셔너리 선언에 잘못된 부분이 있었다. 그 부분을 고치니 문제없이 해결되었다.

 


12~13주차

 

12주차 주간 발표

 

12주차 주간 발표 내용 요약

12주차는 중간 점검의 시간이었다. 유니티 내에서 플레이를 해 회원가입, 로그인, 슬라이딩 퍼즐 게임, 텍스트 퀴즈, 점수 누적까지 최소 목표를 전부 달성한 모습을 교수님께 보여드렸다. 교수님께선 "그래픽이 전체적으로 어둡다", "환경과 관련된 퀴즈가 나오는데 그래픽에서 그런 모습이 보이지 않는다"라고 말씀하셨는데 기능 부분에선 지적받지 않아서 다행이었다. 그래픽은 내가 생각하기에도 어둡고 칙칙해서 한번 바꿔야겠다고 생각하고 있었다.

 

  • 친환경 + 판타지 느낌으로 그래픽 수정(메인 화면 위주)
  • 최종 목표인 랭킹 시스템 구현

 

 

13주차 주간 발표

 

13주차 주간 발표 내용 요약

 

11월 26, 27일 날 진행된 슈퍼 해커톤 오프라인 행사 참여와 게임 제출 마감일이 다가왔고 'JSP', '자바프로그래밍'에서 기말 대체로 제출해야 하는 프로젝트 때문에 SW 프로젝트 진행이 더디었다. 정말 다행인 건 앞선 시간 동안 최소 목표까지 진행하고 랭킹 시스템에 사용되는 그래픽 작업도 미리 진행해서 SW 프로젝트가 촉박하지 않았다.

 

좌: 오프라인 행사가 열리는 수원 컨벤션 센터 / 우: 최종 제출된 MSW 월드 썸네일

 

좌: 'JSP' 프로젝트 메인 화면 / 우: '자바프로그래밍' 프로젝트 메인 화면

 


14주차

 

14주차 주간 발표

 

14주차 주간 발표 내용 요약

 

 

랭킹 시스템 구현 완료

유저별 스코어를 내림차순으로 정렬해 보여주는 화면

 

 

랭킹 시스템 구현 중 문제 해결

좌: 문제 원인 및 카페 답변 / 우: 문제 해결한 코드

 

랭킹 시스템을 구현하는데 생기는 문제는 'user'에 있는 사용자들의 'score'만 가져오고 싶은데 방법을 모르겠어서 '유니티 허브'에 글을 올렸다. 그때 받은 답변에 '역직렬화'가 있어서 방법을 찾다가 쉽게 해결이 되었다.

 

파이어베이스에서 가져오는 데이터는 딕셔너리 형태로 받아온다. 예를 들어 admin02의 정보를 가져온다고 하면

snapshot = { '(uid)' : { 'email' : 'admin02@naver.com', 'nickname' : 'admin02', 'password' : 'admin02', 'score' : '0' }}

위처럼 받아온다. 중첩 딕셔너리가 되는데 이 구조를 분리해서 'nickname'의 값을 키로, 'score'의 값을 값으로 가져오면 해결된다.

 


15주차

 

SW프로젝트 완료 보고서 작성

 

완료 보고서는 계획서에 '프로젝트 개발 결과물 요약', '요구 사양', '설계 내용', '시험 결과', '프로젝트 수행 소감' 등을 추가한 형태다. 개발 결과물 요약에 최종 개발된 게임을 안드로이드 스튜디오에서 경우에 따라 나올 수 있는 모든 화면을 캡처해 첨부했다. 설계 내용은 입력 처리, 주요 흐름도(사용자 시나리오)를 순서도로 나타냈다. 그리고 마지막 부분에 사용된 모든 코드를 첨부했는데 나쁜 습관을 발견했다. 주석을 달지 않는 게 내 습관인데, 덕분에 나조차 어떤 코드였는지 생각이 나지 않는다. 좋은 프로그래머는 메모가 습관이라는데, 앞으로 주석과 메모를 사용해 코드 내용과 구조를 다시 봐도 이해가 쉽게 만들어야겠다.

 

 

 

SW프로젝트 완료 보고서 발표

프로젝트 요약문은 계획서 발표 때와 마찬가지로 발표 때 한눈에 보기 쉽게 만든 요약문이다. 달라진 점이 있다면 계획서에서 최종 완성된 프로젝트를 소개했다는 것이고 달성한 목표가 무엇이고 어떤 점이 부족한지 확인하기 좋다.

 

 

소감

 

처음으로 유니티로 게임을 개발하면서 유니티 엔진 사용 경험과 모바일 환경의 게임을 개발해 본 경험을 얻을 수 있었다. 데이터베이스로 사용했던 파이어베이스를 활용해 본 경험도 쌓고 유니티 카페에 질문을 올리며 스스로 해결해 보는 뿌듯한 마음도 느낄 수 있었다.

다만, 아쉬운 점은 시간 관리 실패로 추가 목표였던 멀티 플레이를 해보지 못했다는 것이다. 프로젝트 이름 자체가 '모바일 실시간 퀴즈 배틀 게임'이었는데 교수님께서 시간이 부족할 것 같으니 추가 목표로 잡자고 하셨는데 너무 맞는 말씀이셨다. 그리고 개발에 대한 안 좋은 습관을 발견했다. 주석과 메모를 사용하지 않고 주먹구구식으로 개발한다. 아마 제대로 된 개발 경험이 없고 학교에서 코딩 시험으로 간단한 프로그램만 개발해 봐서 그런 듯하다. 개선이 필요하다, 어떻게 주석을 달고 메모를 쓸 것인지, 주먹구구식이 아닌 제대로 된 개발을 진행하려면 많이 경험해 보는 게 최고니까 틈만 나면 이것저것 만들어보자.