[Node 7기] CH 3 풋살 온라인 프로젝트
https://teamsparta.notion.site/Node-7-CH-3-1442dc3ef514803087e3de2665671f04
(풋살(futsal)은 FIFA에서 공인한 실내 축구의 한 형태로 골키퍼까지 5명으로 구성된 두 팀이 태결하는 스포츠 입니다.)
Express.js를 활용한 게임 서버 구축 프로젝트
피파온라인4 https://fconline.nexon.com/main/index
DB
ORM (Prisma)을 이용
인증(이건 지금 클리어해야함)
사용자 인증과 인가의 기본 원리와 차이점을 이해하고 있다.
JWT를 이해하고 활용할 수 있다.
REST API
협업 및 버전 관리
깃(형상관리방법), 깃허브(가장 유명한 저장소)
프론트엔드와의 통신
백엔드 도전과제까지 끝내고 난 다음에 선택사항
S.A 작성 및 피드백 받기! (담주 월요일 pm 9시까지)
와이어프레임 : 웹사이트의 골격이나 애플리케이션의 사용자 인터페이스(UI) 및 핵심 기능을 나타내는 단순한 선과 도형으로 구성된 다이어그램 또는 다이어그램의 집합
와이어프레임 예시
ERD : https://www.erdcloud.com/
deawSQL : https://drawsql.app/
회원가입 / 로그인 기능( 숙련: 1-13 ~ 1-15 , 2-1 ~ 2-3)
api를 통해 케쉬가 증가 (입문: 2-9 ~ 2-19 , 숙련: 2-5)
선수 데이터 준비( 숙련: 1-1 ~ 1-8)
선수데이터는 최소한 30개 만들기
선수 뽑기 기능( 숙련: 2-7 ~ 2-8 ) Gacha(가챠)
나만의 팀 꾸리기 기능(숙련: 2-9 ~ 2-10)
한 팀에 3명
축구 게임 기능(숙련: 2-7 ~ 2-8)
심플하게...
선수 능력치로 승패 결정. 포지션에 따른 가중치 지정
수비력이 높은 선수가 수비역할하면 가중치 주기
준비된 게임 로직대로 승패가 갈리면 이제 게임 결과 테이블에 기록
// A 유저 팀과 B 유저 팀의 총 점수
const scoreA = 229.9;
const scoreB = 229.45;
// 최대 점수는 두 팀의 총 점수의 합으로 하시면 됩니다!
const maxScore = scoreA + scoreB;
const randomValue = Math.random() * maxScore;
if (randomValue < scoreA) {
// A 유저 승리 처리
const aScore = Math.floor(Math.random() * 4) + 2; // 2에서 5 사이
const bScore = Math.floor(Math.random() * Math.min(3, aScore)); // aScore보다 작은 값을 설정
result = `A 유저 승리: A ${aScore} - ${bScore} B`;
} else {
// B 유저 승리 처리
const bScore = Math.floor(Math.random() * 4) + 2; // 2에서 5 사이
const aScore = Math.floor(Math.random() * Math.min(3, bScore)); // bScore보다 작은 값을 설정
result = `B 유저 승리: B ${bScore} - ${aScore} A`;
}
도전기능
승리/패배 시 게임 점수 조정 기능
우선, 기본 게임 점수는 1000점으로 하겠습니다.
일단은 심플하게 이기면 +10점, 지면 -10점과 같이 하고 뒤에서 조금 더 고도화하는 방향으로 해볼게요
매치매이킹에 사용
유저 랭킹 조회 기능
점수 기반 자동 매치 메이킹 기능
지나치게 팀 스탯이 낮은 유저들만 골라서 반복적으로 이기면 유저들 점수에 거품도 끼고 게임 자체도 매우 재미없어지며 있던 경쟁심도 사라집니다.
이러한 요소를 방지하기 위해 점수 기반으로 매치 메이킹을 자동으로 하는 API를 만드세요
좀더 알맞는 상대랑 재미있게 게임할 수 있도록 랜덤하게 본인의 점수와 얼추 비슷한 유저들 중 한명을 랜덤으로 골라서 게임을 하는 것 입니다.
스페셜 : 선수 강화 기능
이 기능을 구현하신 팀은 어떻게 구현했는지 Github Readme에 꼭 작성을 해주세요
구현할 때 어떤식으로 강화 성공/실패를 판정할 것인지 성공했을 때 능력치는 어떻게 변화시킬 것인지 재료는 어떻게 넣어야 성공 확률을 높일 것인지 등 생각하기
배틀은 내가 원하면 하는 것. 상대방 동의 필요 X
상대방이 만든 수쿼드와 싸움
게임 로직은 자의적으로 정한 룰을 readme에 명세하고 그대로 구현
팀원가 소통!!!!!! 원한살짓은 하지 말것,
많이 물어보고 도움이 되자
제출은 다담주 월(12/9) 정오까지.
발표회 일정 (12/09 (월) 14:00 ~ 17:00)
'내일배움 과제 > CH3 풋살온라인게임' 카테고리의 다른 글
회의 241203 (2) | 2024.12.03 |
---|---|
cash API 만들기(조회, 선물, 구매) (0) | 2024.12.03 |
오류노트 (1) | 2024.12.02 |
회의 1202 _ 와이어프레임, DB테이블 (0) | 2024.12.02 |
회의 _ 1회 (1) | 2024.11.29 |