- Published on
(지구방위대 프로젝트) 진행상황 점검
- Authors
- Name
- 유사공대생
현 상황
지금 중간고사가 끝난지 하루가 지났습니다. 진행하고 있는 프로젝트가 한두개가 아니어서 일을 벌려놓은 제 자신에게 화를 낼 시간도 없네요.. 일단 지금 어디까지 진행했고, 이제 뭘 해야하는지 정리를 할 겸 진행상황을 정리해보려고 합니다.
백엔드 도메인별 요구사항 정리
게임 유저
accessToken이나 이메일을 확인하여 유저가 기존 유저인지 확인
만약 기존 유저가 아닌 경우
캐릭터를 기본값으로 생성합니다.
유저의 인벤토리를 생성하고, 인벤토리의 보유 아이템 리스트와 착용중인 아이템의 기본값을 설정합니다.
인벤토리를 빈 값으로 생성하고, 유저의 총 스탯 객체를 생성하고, 계산한 값을 데이터베이스에 저장합니다.
그리고 유저 보유 골드와 보유 젬을 0으로 설정합니다.
위의 내용을 반영한 새로운 멤버 객체를 생성합니다.
기존 유저의 경우
인벤토리와 착용중인 아이템 정보를 가져옵니다.
인벤토리
- 유저의 아이템 정보를 가져옵니다.
- 착용중인 아이템 정보를 가져옵니다.
아이템
- 상점에서 뽑은 아이템을 등록합니다.
- 강화한 아이템을 반영합니다.
- 판매한 아이템을 삭제합니다.
캐릭터
- 캐릭터의 정보를 등록합니다.(게임 내 반영 x, 컨텐츠용)
ERD Table
잘 안보여서 도메인별로 하나씩 보겠습니다.
유저
유저
- 유저는 고유키를 가지고 있습니다.
- 각 유저별로 총 스탯과 유저가 일대일 매핑되어 있습니다.
- 각 유저별로 캐릭터마다 유저가 일대일 매핑되어 있습니다.(캐릭터는 게임상에서 구현이 되지 않았다고 했지만, 확장성 때문에 추가했습니다.)
- 유저와 스테이지는 일대다 매핑되어 있습니다.(추후 스테이지가 추가되는 것을 감안하여 각 스테이지를 추후에 추가하기 쉽게 설계했습니다.)
- 유저의 이메일과 보유 골드, 그리고 유저의 보유 젬, 그리고 유저의 총 스탯, 스테이지 클리어 여부, 인벤토리를 가지고 있습니다.
유저 총 스탯
- 총 스탯은 고유키를 가지고 있습니다.
- 유저 총 스탯에는 유저의 캐릭터 스탯과 착용중인 아이템 스탯을 더한 값들을 가지고 있습니다.
스테이지
- 스테이지는 고유키를 가지고 있습니다.
- 스테이지는 유저의 고유키를 가지고 있습니다.(외래키)
- 스테이지 이름과 스테이지 클리어의 여부, 그리고 스테이지 종류(단계)를 가지고 있습니다.
인벤토리
- 인벤토리는 고유 키를 가지고 있습니다.
- 각 인벤토리마다 유저의 고유키를 가지고 있습니다.(외래 키)
- 인벤토리에서 보유하고 있는 아이템을 리스트 형태로 볼 수 있습니다.
- 착용중인 아이템을 리스트 형태로 볼 수 있습니다.
아이템
아이템은 한 아이템이라는 객체에 아이템의 종류마다 스탯의 속성이 달라서, 상속관계로 매핑을 하였습니다.
아이템
- 아이템은 고유 키가 있습니다.
- 아이템은 인벤토리의 고유키를 가지고 있습니다.(외래키)
- 아이템은 인벤토리와 다대일 매핑이 되어 있습니다.
- 이름, 가격, 아이템의 착용 여부, 등급, 그리고 이미지 스프라이트 파일의 url, 아이템 타입을 가지고 있습니다.
무기
- 아이템 고유키를 가지고 있습니다.(상속)
- 공격력, 치명타 확률, 치명타 데미지를 가지고 있습니다.
투구
- 아이템 고유키를 가지고 있습니다.(상속)
- 공격력, 치명타 확률을 가지고 있습니다.
신발
- 아이템 고유키를 가지고 있습니다.(상속)
- 체력을 가지고 있습니다.
장갑
- 아이템 고유키를 가지고 있습니다.(상속)
- 공격력, 치명타 확률, 치명타 데미지를 가지고 있습니다.
옷
- 아이템 고유키를 가지고 있습니다.(상속)
- 방어력, 체력을 가지고 있습니다.
방패
- 아이템 고유키를 가지고 있습니다.(상속)
- 방어력을 가지고 있습니다.
인프라 구축
현재 aws ec2에 mysql을 올려놓은 상태이고, 백엔드 서버도 올릴 예정입니다.
ec2
- 인스턴스 타입: t2.micro
- 인바운드 규칙으로 포트 22번을 열어놓음
현 개발 상황
현재 도메인별로 레이어드 아키텍처는 적용한 상태입니다.
각각의 레이어에 대한 설명입니다.
controller
: controller 레이어는 HTTP 요청을 처리하고 서비스 메서드를 호출합니다. 이 레이어에서는 클라이언트와의 상호 작용을 처리하고, 적절한 HTTP 응답을 반환하는데 집중합니다.DTO
: DTO(Data Transfer Object) 레이어는 데이터 전송 객체로, 객체의 필드와 게터/세터 메서드로 구성됩니다. 이 레이어는 서비스 및 컨트롤러 레이어 사이에서 데이터를 전달하고 변환하는 역할을 합니다.Service
: Service 레이어는 비즈니스 로직을 처리하는 중심이 되는 레이어입니다. 이 레이어에서는 비즈니스 규칙 처리, 데이터 유효성 검사, 데이터베이스 연동, 외부 API 호출 등의 작업을 수행합니다. 또한 이 레이어에서는 Repository 레이어에서 반환된 데이터를 Model 레이어로 변환하는 역할도 수행합니다.Repository
: Repository 레이어는 데이터베이스와 상호 작용하고 데이터를 저장하고 검색하는 데 사용됩니다. 이 레이어에서는 SQL 쿼리 및 데이터베이스 연결 코드를 작성하고, 데이터베이스 관련 예외 처리를 수행합니다.Model
: Model 레이어는 비즈니스 로직을 처리하는 객체입니다. 이 레이어에서는 데이터 유효성 검사, 데이터베이스 연동, 비즈니스 규칙 처리 등의 작업을 수행합니다.
이어서...
이제 뭘 해야 하는지 정리가 된 기분입니다.
- 예시 api 호출 코드 작성(게임 개발 테스트용)
- 모델 작성 마무리, 그리고 계층별로 하나씩 모두 작성
- 인프라 테스트(aws postman으로 호출)