프로젝트

[교내 프로젝트] 오픈소스를 활용하여 테트리스 게임 개발하기 (1)

jeongpil 2021. 7. 7. 15:31

안녕하세요! 오픈소스 소프트웨어 프로젝트라는 전공 수업에서 오픈소스를 활용하여 테트리스 게임을 개발하는 프로젝트를 진행했습니다.

 

 

프로젝트의 전체적인 순서는 다음과 같습니다.

 

 

1. Base 코드

   1-1. 오픈소스에서 Base 코드 정하기

   1-2. Base 코드 분석하기

 

2. 개선 사항 및 수정 사항 정하기

   2-1. Base 코드의 오류 찾기

   2-2. 더 흥미로운 게임을 위한 개선 사항 정하기

 

3. 코드 수정 및 개발

   3-1. 협업을 위한 git 협업 규칙 정하기

   3-2. 팀원들이 진행한 부분

   3-3. 내가 진행한 부분

      3-3-1. AWS의 RDS와 MySQL을 이용한 회원가입/로그인 기능

      3-3-2. 계정의 보안을 위한 비밀번호 Hashing & Salting

      3-3-3. 모드별 랭킹 구현 및 랭킹 실시간 업데이트

 

4. 디버깅

5. github에 최종 업로드

 

 

 

 

1. Base 코드

 

1-1. 오픈소스에서 Base 코드 정하기

 

교수님께서 이전 팀들의 코드를 Base 코드로 사용하는 게 좋다고 말씀하셔서 git에 올라와있는 이전 팀들의 프로젝트의 코드를 Base 코드로 사용하였습니다.

 

Base 코드를 정할 때 기존 프로젝트의 코드가 여러 개의 클래스로 잘 나뉘어 코드의 이해가 편리한지하드코딩이 많지 않은지에 신경써서 정했습니다.

 

그래야 저희가 코드를 수정하고 추가할 때 편리하기 때문이죠 ㅎㅎ

 

결과적으로 2020년에 진행됐던 팀의 프로젝트를 기존 프로젝트로 선정했습니다.

 

https://github.com/CSID-DGU/2020-2-OSSP-CP--YamiYami_Z_Z-5

 

CSID-DGU/2020-2-OSSP-CP--YamiYami_Z_Z-5

Contribute to CSID-DGU/2020-2-OSSP-CP--YamiYami_Z_Z-5 development by creating an account on GitHub.

github.com

 

1-2. Base 코드 분석하기

 

이제 Base 코드를 정했으니 코드를 분석해야겠죠!

 

이 부분이 매우 중요했습니다! 프로젝트 진행의 30%가량이 Base 코드 분석에 쓰인 것 같습니다. 

 

Base 코드의 각 함수와 변수들의 의미와 역할들을 완벽히 분석해야 내가 코드를 수정하고 추가할 때 어떻게 해야할지를 파악할 수 있고 디버깅도 수월하게 할 수 있습니다.

 

간단하게 적었지만 다른 사람이 짠 천 줄이 넘는 코드를 완벽히 이해하는 것은 쉽지 않은 작업이었습니다...ㅎㅎ

 

 

 

 

2. 개선 사항 및 수정 사항 정하기

 

2-1. Base 코드의 오류 찾기

 

기존 프로젝트들도 저와 같은 학생들이 진행했기 때문에 완벽하지 않은 상태였고 기존 테트리스 게임을 수 없이 돌려가며 오류들을 찾아냈습니다.

 

저희 팀에서 발견한 기존 프로젝트의 오류들은 다음과 같습니다.

 

  • 시간이 게임 플레이 시간이 아닌 현재 시간으로 나타남
  • 게임을 오래 플레이할 시 bgm이 끊기는 현상
  • 게임 화면 크기 조절이 되지 않는 UI 존재

 

Base 코드를 고르는데 신중했어서 다행히도 많은 오류들이 발견되지 않았습니다.

 

 

2-2. 더 흥미로운 게임을 위한 개선 사항 정하기

 

저희 팀이 기존의 프로젝트의 테트리스 게임을 더욱 흥미롭게 만들기 위해 정한 컨셉은

 

"자신의 계정을 만들고 캐릭터를 선택해서 키울 수 있는 테트리스 게임을 만들어 보자!" 였습니다.

 

이렇게 정한 이유는 기존 테트리스 게임의 경우와 다르게 캐릭터를 키울 수 있다면 계속 게임을 하고 싶어질 거라 생각해서입니다.

 

좀 더 중독성(?)을 더했습니다.

 

이 컨셉을 달성하고 게임을 더 흥미롭게 하기 위해 정한 개선 사항은 다음과 같습니다.

 

  • 회원가입을 통해 계정을 생성하고 자신의 계정으로 로그인 가능하게 하기
  • 캐릭터를 선택해서 게임을 하면서 경험치를 쌓고 경험치가 일정 수준 도달하면 진화하기
  • 다양한 게임 모드 추가
  • 각 모드 별 랭킹 시스템 추가 및 랭킹 실시간 업데이트
  • 테마와 bgm을 취향에 따라 선택할 수 있는 기능 추가

이렇게 Base 코드를 선정하고 저희 프로젝트의 주 목표와 세부 목표를 정했습니다.

 

 

이 목표들을 달성하기 위해 코드를 수정하고 개발한 과정은 2편에 포스팅하도록 하겠습니다!

https://casa-de-feel.tistory.com/13

 

[교내 프로젝트] 오픈소스를 활용하여 테트리스 게임 개발하기 (2)

1편에 이어 2편에서는 코드를 수정하고 개발한 과정과 디버깅한 과정, 마지막으로 github에 최종 업로드한 과정을 포스팅하도록 하겠습니다. 3. 코드 수정 및 개발 3-1. 협업을 위한 git 협업규칙 정

casa-de-feel.tistory.com