Published on

Earth Defense Corps

Authors
  • avatar
    Name
    유사공대생
    Twitter

image지구를 지켜라! 지구방위대 🔫

🌕 우주인들을 막는 종스크롤 액션 게임 🌎


TEAM 지구방위대 개발팀 👨‍👨‍👧‍👦

imageimageimage
강동현(@hyeon23)윤병욱(@speculatingwook)조성현(@chosunghyun18)
Leader / gameBackendBack End

프로젝트(게임) 개요

1. 우주인(=우주 해적)들이 연구를 위해 지구의 여러 물체를 흡수해가고, 연구가 끝나면 쓸모가 없어져 다시 지구에 버리는 상황입니다.

2. 우주인을 막기 위해 지구 방위대 조직이 구성되었고, 지구 수호대원들은 우주인들이 지구로 버리는 우주 쓰레기들을 처리합니다.

3. 우주인들을 추적해 우주인들과 싸우고, 해치웁니다.

4. 우주해적선(BOSS)을 격파해, 우주 해적들을 물리치고, 각 행성을 점령해나가는 스토리입니다.

프로젝트(백엔드) 목표

게임 클라이언트에서 원할때 필요한 정보를 가져올 수 있다.

백엔드 도메인별 요구사항 정리

게임 유저

  • Member

  • gpgsId를 확인하여 유저가 기존 유저인지 확인

  • 기존 유저인지 아닌지 확인하는 로직 필요

  • 만약 기존 유저가 아닌 경우(멤버 로직에 해당? 일단 아이템 로직 먼저 만들어야 할 듯)

  • 캐릭터를 기본값으로 생성합니다.

  • 유저의 인벤토리를 생성하고, 인벤토리의 보유 아이템 리스트와 착용중인 아이템의 기본값을 설정합니다.

  • 인벤토리를 빈 값으로 생성하고, 유저의 총 스탯 객체를 생성하고, 계산한 값을 데이터베이스에 저장합니다.

  • 그리고 유저 보유 골드와 보유 젬을 0으로 설정합니다.

  • 위의 내용을 반영한 새로운 멤버 객체를 생성합니다.

  • 기존 유저의 경우

  • 인벤토리와 착용중인 아이템 정보를 가져옵니다.

인벤토리

  • 유저의 아이템 정보를 가져옵니다.
  • 착용중인 아이템 정보를 가져옵니다.

아이템

  • 상점에서 뽑은 아이템을 등록합니다.
  • 강화한 아이템을 반영합니다.
  • 판매한 아이템을 삭제합니다.

캐릭터(확장성을 고려한 설계)

  • 캐릭터의 정보를 등록합니다.(게임 반영 x, 컨텐츠용)

Back-end

CategoryStack
Framework- Spring Boot 2.6.3
Test- JUnit 5
Infra- AWS EC2
Database- MySql

Communication

CategoryStack
CommunicationKakaoTalk
DocumentsNotion

ERD Table

image

개인적인 소감

소프트웨어 개발을 기획과 함께하다 보니 중간에 테이블 구성이 바뀌는 경우도 많았고, 코드 수정도 계속 했었던 걸로 기억합니다.

클라이언트 쪽과 소통하며 어떻게 하면 클라이언트쪽이 편하게 작업할 수 있을지 고민하고, 맞춰서 api를 설계하고 작업을 진행했습니다. code complete에서 몇가지 구절이 기억나는 프로젝트였습니다.(정확하고 완벽한 설계는 없다. 프로젝트를 진행하면서 계속 바뀌고 그걸 최소화할 수 있게 개발을 해야 한다.)

그래도 혼자 스스로 공부를 조금씩 더 하면서 작업을 해서 그런지 전 프로젝트보다는 구현 능력이 많이 는 것 같습니다. 물론 아직은 기술에 의존하고 있다는 느낌을 너무 많이 받고 있어서, 기술에 의존하는 프로그래밍이 아닌, 기술을 사용하는 것이 편리하다라고 느끼는 순간까지 계속 공부하려고 합니다.