<프로젝트 설명서>
2조
윤가영 이성은 홍민희 김서현
-
개요
-
초기 오픈소스
-
개발 과정
-
구현 상태
-
마무리
-
개요
소스 트리, 깃 배시 등 생소한 프로그램들을 사용해 구현을 하는 만큼, 우리가 결과물의 질 만큼 중요시 했던 것이 이러한 프로그램을 빠지는 팀원 없이 익히는 것과 모두가 적극적으로 아이디어를 내고 구현할 수 있게끔 하는 것이었다. 난이도가 높은 구상물을 제출한다 한들 특정 팀원의 역할 분담이 지나치게 치우친다거나 빠지는 이가 생기는 불상사가 생긴다면 이는 이번 프로젝트의 의의에 벗어나는 일이라고 생각했기 때문이다. 오픈 소스를 통한 팀별 개발인 만큼, 깃허브에 이미 구현이 되어있는 것들 중 누구에게나 생소하지 않고, 기본적인 틀은 완성되어있되 설정과 구성, 이벤트 등 팀별 구상을 통해 여러가지 기능을 추가할 수 있는 코드를 살펴보았다. 그중 가장 기본적이고 친숙한 형태의 행맨 게임을 찾을 수 있었다.
- 초기 오픈소스
초기 상태에서의 행맨 게임은 익히 알던 개념과 같이, 개발자가 미리 입력해둔 텍스트 프로그램이 실행되며 그 속의 단어나 문장이 추출되고 이를 실행자가 알파벳 버튼을 눌러 문제를 맞추는 식이었다. 알파벳을 누를 때마다 사용된 알파벳은 gui에서 지워지며 정답일 시 행맨 아래의 비어진 문제칸에 알파벳이 추가가 된다. 오답을 누를 시 머리와 몸통 팔다리 그래픽이 차례로 실행이 되며, 게임이 끝이 나는 경우에 불특정 자판을 누르면 다시 게임이 재실행 되는 식이었다. 게임이 틀렸을 때와 맞았을 때의 배경은 같으나 실행되는 문장이 달라 이를 판별했다. 우리는 이러한 부분에서 게임의 재실행 되는 부분이 의미 없이 버려진다는 점과, 게임의 실행자가 난이도를 구분해 사용할 수 없다는 점, 게임의 실행 과정이 밋밋하다는 점 등을 문제점으로 보았다.
- 개발 과정
위의 문제점을 중심으로 토론한 결과, 초기에 구현하고자 했던 기능은 다음과 같다. [테마와 난이도를 나눠 실행자를 위한 선택지를 주는 것]. [gui창에 띄워진 알파벳을 누를 시 특정 소리를 내는 것]. [힌트 칸을 추가해 어려움을 겪는 실행자들에게 도움을 줄 수 있는 방안]과, [제한 시간을 설정하고 db를 이용해 시간 내에 문제를 가장 많이 푼 이에게 등수를 내어주는 식]이었다. 하지만 마지막 부분의 경우 제한 시간을 설정할 경우 실행자들이 중도에 게임을 그만 둘 경우 취소를 할 수 없다는 오류를 지적해 [게임의 플레이 시간 경과를 실행자에게 보이고, 정답자에 한해 가장 빨리 푼 이의 플레이 시간을 창에 갱신] 할 수 있게끔 하였다. 이후 개발 과정 중 추가한 사항으로는 게임에 성공하거나 실패하였을 경우 [특정한 효과음]을 내며 게임을 리플레이 할 수 있게끔 하였다. 분배는 다음과 같다
[윤가영] 효과음 및, 힌트란 추가 [이성은] db를 이용한 사용자 최단 플레이 시간 갱신 및 게임 배경 [홍민희] 테마선택 및 난이도 구성 [김서현] 시간 경과 설정 및 최종 설명보고서 작성
구현할 부분들을 분배한 후 초반에는 본인들의 맡은 역할에 맞춰 코드를 생성하고 이를 융합하는 방식으로 개발이 진행되었다. 병합을 하는 과정에서 일어나는 오류를 서로 주고 받으며 해결하는 식이었다. 초반 소스트리를 사용하였을 때 생소한 개발 환경 탓에 헤매는 경우가 많았다. 팀원들 내부적으로 갈등이 일어나는 대신, 서로 개발 환경에 익숙해질 때까지 배려하고 도왔다. 이 때문에 최종 구현이 될 때 까지 낙오되는 팀원들 없이 모두 맡은 바를 해결할 수 있었다.
- 최종 구현
즉시 게임이 실행되는 기존의 행맨 게임과 달리 우선 [동물, 음식, 장소] 3가지의 테마와 [easy, hard] 2가지의 난이도로 총 6가지 선택지가 주어진다. 이를 선택하고 나면 게임 창이 뜨는데 앞서 게임 실행 시 기존의 것과 달라진 점은 총 세 가지이다. [플레이 시간 출력], [효과음], [힌트창 출력]. jpg사진을 삽입하여 버튼을 만들고 이를 누를 때마다 실행자가 풀어야 할 문제의 알파벳 하나를 보이는 식이다. 마우스가 잘 먹지 않아 여러 번 클릭하면 보기 좋다. 사용자가 원하는 알파벳을 누를 때마다 특정 소리가 난다. 좌측 하단에는 플레이 시간을 업로드했다. 배경은 기존의 초록과 달리 흰색으로, 사용자가 보기에 훨씬 깔끔하다. [게임이 종료될 시]에 일어나는 효과음은 총 두개인데, 실패시에 나는 소리와 게임을 모두 해결하고 난 이후의 소리가 다르다. 이후 게임이 끝나면 db를 이용해 [최단 플레이 시간]을 띄워주는데 이는 게임을 완전히 해결하였을 때만 업로드 되는 식이고, 행맨이 모두 달려 게임에 실패했을 시에는 갱신되지 않는다. 게임은 특정 키보드를 눌렀을 때 다시 리플레이 된다. 리플레이 될 시, 출력되는 플레이 시간 역시 리셋된다.
- 마무리
개발이 개인의 능력보다 소통과 협력이 중요한 분야인 만큼, 이번 프로젝트를 통해 이러한 부분이 크게 발전할 수 있었던 것 같다. 새로운 프로그램을 익히고 개발하는 부분 역시 중요하지만 소통과 협력, 니즈를 온전히 이해한 후 개발을 시작하는 부분이 크게 중요하다는 것을 느꼈고, 이후 실제 개발 환경을 구축해 나갈 때 이번 경험이 많은 토대가 될 것 같다는 생각이 공통적인 입장이다. 시작은 개개인의 개발이었지만 이를 합치고 에러를 구축해나가는 경험 역시 값졌다. 이후 초기에 구현 했던 대로 탈없이 완성도 있는 개발품을 만들어 낸 것 역시도 큰 성취감을 느낄 수 있었다. 이러한 경험들이 모임으로써 종내에 큰 물로 이어질 수 있다고 믿는다.