Published on

(지구방위대 프로젝트) 진행상황 점검

Authors
  • avatar
    Name
    유사공대생
    Twitter

현 상황

지금 중간고사가 끝난지 하루가 지났습니다. 진행하고 있는 프로젝트가 한두개가 아니어서 일을 벌려놓은 제 자신에게 화를 낼 시간도 없네요.. 일단 지금 어디까지 진행했고, 이제 뭘 해야하는지 정리를 할 겸 진행상황을 정리해보려고 합니다.

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

게임 유저

  • accessToken이나 이메일을 확인하여 유저가 기존 유저인지 확인

  • 만약 기존 유저가 아닌 경우

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

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

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

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

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

  • 기존 유저의 경우

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

인벤토리

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

아이템

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

캐릭터

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

ERD Table

image

잘 안보여서 도메인별로 하나씩 보겠습니다.

유저

image

유저

  • 유저는 고유키를 가지고 있습니다.
  • 각 유저별로 총 스탯과 유저가 일대일 매핑되어 있습니다.
  • 각 유저별로 캐릭터마다 유저가 일대일 매핑되어 있습니다.(캐릭터는 게임상에서 구현이 되지 않았다고 했지만, 확장성 때문에 추가했습니다.)
  • 유저와 스테이지는 일대다 매핑되어 있습니다.(추후 스테이지가 추가되는 것을 감안하여 각 스테이지를 추후에 추가하기 쉽게 설계했습니다.)
  • 유저의 이메일과 보유 골드, 그리고 유저의 보유 젬, 그리고 유저의 총 스탯, 스테이지 클리어 여부, 인벤토리를 가지고 있습니다.

유저 총 스탯

  • 총 스탯은 고유키를 가지고 있습니다.
  • 유저 총 스탯에는 유저의 캐릭터 스탯과 착용중인 아이템 스탯을 더한 값들을 가지고 있습니다.

스테이지

  • 스테이지는 고유키를 가지고 있습니다.
  • 스테이지는 유저의 고유키를 가지고 있습니다.(외래키)
  • 스테이지 이름과 스테이지 클리어의 여부, 그리고 스테이지 종류(단계)를 가지고 있습니다.

인벤토리

image

  • 인벤토리는 고유 키를 가지고 있습니다.
  • 각 인벤토리마다 유저의 고유키를 가지고 있습니다.(외래 키)
  • 인벤토리에서 보유하고 있는 아이템을 리스트 형태로 볼 수 있습니다.
  • 착용중인 아이템을 리스트 형태로 볼 수 있습니다.

아이템

image

아이템은 한 아이템이라는 객체에 아이템의 종류마다 스탯의 속성이 달라서, 상속관계로 매핑을 하였습니다.

아이템

  • 아이템은 고유 키가 있습니다.
  • 아이템은 인벤토리의 고유키를 가지고 있습니다.(외래키)
  • 아이템은 인벤토리와 다대일 매핑이 되어 있습니다.
  • 이름, 가격, 아이템의 착용 여부, 등급, 그리고 이미지 스프라이트 파일의 url, 아이템 타입을 가지고 있습니다.

무기

  • 아이템 고유키를 가지고 있습니다.(상속)
  • 공격력, 치명타 확률, 치명타 데미지를 가지고 있습니다.

투구

  • 아이템 고유키를 가지고 있습니다.(상속)
  • 공격력, 치명타 확률을 가지고 있습니다.

신발

  • 아이템 고유키를 가지고 있습니다.(상속)
  • 체력을 가지고 있습니다.

장갑

  • 아이템 고유키를 가지고 있습니다.(상속)
  • 공격력, 치명타 확률, 치명타 데미지를 가지고 있습니다.

  • 아이템 고유키를 가지고 있습니다.(상속)
  • 방어력, 체력을 가지고 있습니다.

방패

  • 아이템 고유키를 가지고 있습니다.(상속)
  • 방어력을 가지고 있습니다.

인프라 구축

현재 aws ec2에 mysql을 올려놓은 상태이고, 백엔드 서버도 올릴 예정입니다.

ec2

  • 인스턴스 타입: t2.micro
  • 인바운드 규칙으로 포트 22번을 열어놓음

현 개발 상황

image

현재 도메인별로 레이어드 아키텍처는 적용한 상태입니다.

image

각각의 레이어에 대한 설명입니다.

  • controller : controller 레이어는 HTTP 요청을 처리하고 서비스 메서드를 호출합니다. 이 레이어에서는 클라이언트와의 상호 작용을 처리하고, 적절한 HTTP 응답을 반환하는데 집중합니다.
  • DTO: DTO(Data Transfer Object) 레이어는 데이터 전송 객체로, 객체의 필드와 게터/세터 메서드로 구성됩니다. 이 레이어는 서비스 및 컨트롤러 레이어 사이에서 데이터를 전달하고 변환하는 역할을 합니다.
  • Service: Service 레이어는 비즈니스 로직을 처리하는 중심이 되는 레이어입니다. 이 레이어에서는 비즈니스 규칙 처리, 데이터 유효성 검사, 데이터베이스 연동, 외부 API 호출 등의 작업을 수행합니다. 또한 이 레이어에서는 Repository 레이어에서 반환된 데이터를 Model 레이어로 변환하는 역할도 수행합니다.
  • Repository: Repository 레이어는 데이터베이스와 상호 작용하고 데이터를 저장하고 검색하는 데 사용됩니다. 이 레이어에서는 SQL 쿼리 및 데이터베이스 연결 코드를 작성하고, 데이터베이스 관련 예외 처리를 수행합니다.
  • Model: Model 레이어는 비즈니스 로직을 처리하는 객체입니다. 이 레이어에서는 데이터 유효성 검사, 데이터베이스 연동, 비즈니스 규칙 처리 등의 작업을 수행합니다.

이어서...

이제 뭘 해야 하는지 정리가 된 기분입니다.

  1. 예시 api 호출 코드 작성(게임 개발 테스트용)
  2. 모델 작성 마무리, 그리고 계층별로 하나씩 모두 작성
  3. 인프라 테스트(aws postman으로 호출)