본문 바로가기

프로젝트

(35)
[02] 221223 게임 개발 일지 - 데미지 함수 버그 해결하기 (1) 데미지 함수를 만들고 있는 도중 버그가 참 많이 나고 있다. 하나하나씩 다시 살펴가면서 고치고 있다.... 1. 명중률 문제 1) 몬스터의 명중률이 0 이상인데 계속 miss가 떴다. 이는 명중률 처리 함수에서 몬스터 데미지 함수 밖의 hit 변수를 참조해야 되는데 local로 새로 선언해 버려 나는 문제였다... 항상 변수 선언할 때 조심하자.... 2) 명중률을 통해 miss 처리해도 데미지가 들어가는 버그가 있었다. 이는 명중률 적용 함수가 된 후 return을 통해 빠져나오지 못하고 그 뒤의 데미지 처리 함수가 실행되었던 것으로 밝혀졌다. 뒤의 데미지 처리 함수가 실행되지 않도록 명중률 외에도 전투 외 스킬사용, 무적 버프 등의 함수 처리에서 miss index를 추가하여, index에 대한 if..
[08] mutsa-SNS 3일차 - (3) JwtTokenFilter Exception 추가 낮에 JwtTokenFilter에서 Exception을 추가를 시도해 보았지만, AuthenticationEntryPoint를 추가하지 않아 오류가 났었다. 곰곰히 생각해보니, JwtTokenFilter에서 토큰이 없거나, 토큰이 잘못된 경우 Exception을 throw하여 json형식으로 view에 출력하는 것이 좋을 것 같아 추가해 보았다. 다만, Jwt token형식을 주어 token이 잘못되었을 때 testcode를 작성하고 싶었으나, 실패하였다. 이에 대해서는 좀 더 고민이 필요 할 듯 하다. 1. Configuration JwtTokenFilter @RequiredArgsConstructor @Slf4j public class JwtTokenFilter extends OncePerReques..
[07] mutsa-SNS 3일차 - (2) 글쓰기 기능 글쓰기 기능을 추가해 보았다. 글쓰는 기능은 유효한 토큰을 가지고 있는 유저만 사용 가능하게 하였다. 1. Configuration JwtTokenUtil public class JwtTokenUtil { private static Claims extractClaims(String token, String key) { return Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody(); } public static boolean isExpired(String token, String key) { Date expiredDate = extractClaims(token, key).getExpiration(); return expiredDate.bef..
[06] mutsa-SNS 3일차 - (1) User 수정 1. UserRole type 수정 post 작성 기능을 만들기 전 User Entity에서 userRole을 enum에서 string으로 변경했던 것이 생각이 났다. 그 때에는 계속 db에 enum의 name이 들어가지 않고, index가 들어갔었는데, 이는 User에서 column지정을 할 때 어노테이션을 붙여주지 않았기 때문으로 추정된다. @Enumerated(EnumType.STRING) private UserRole role; ERD에서 요청했던 사항은 userRole을 enum으로 설정하라 지시하였기 때문에, 그것이 맞는 것 같아 다시 enum으로 고쳐주었다. 그 과정에서 ADMIN과 USER를 구분하는 것을 int index로 enum에서의 순서대로 지정해 주었다. UserService in..
[01] 221221 게임 개발 일지 개발 한 지 오래되었지만 처음 써보는 게임 개발 일지이다... 기획하는 엉님이랑 둘이 네코랜드 기반으로 게임 개발을 하고 있다. 오늘은 두 사람의 프로젝트를 합쳐 보았다. 항상 기본 맵만 보다가 꾸며진 맵을 보니 감회가 새로웠다... 내 프로젝트에서 되었지만, 합친 프로젝트에서 되지 않는 문제들을 해결해 보았다. 1. Hp/Mp/Rp/Sp 게이지바 보이지 않음 네코랜드 내 도구 - 리소스 관리자에 한번 들어갔다 나와 파일이 제대로 들어가있는지 확인 후 나오면 반영된다. 2. FP관련 오류 script를 합쳤더니 발생하지 않음. -> 원인 불명.... 그 외에 데미지 함수의 수치 검증을 위해, 각각의 수치들을 print하여 계산 할 수 있도록 하였다. 그 과정에서 장비와 스킬이 제대로 매칭이 되지 않음을 ..
[05] mutsa-SNS 2일차 - (2) 로그인 기능 로그인시 JWT token을 부여하는 기능을 구현하였다. JWT 란? JWT (JSON Web Token)란 인증에 필요한 정보들을 암호화시킨 JSON형태의 토큰이다. 위의 형태로 구성되어 있으며, header에는 JWT 에서 사용할 타입과 해시 알고리즘의 종류가 담겨 있으며, payload에는 사용자 권한과 정보, signature에는 header, payload 를 Base64 URL-safe Encode 를 한 이후 header 에 명시된 해시함수를 적용하고, 개인키(Private Key)로 서명한 전자서명이 담겨있다. header와 payload는 단순히 인코딩된 값이기 때문에 제 3자가 복호화 및 조작할 수 있지만, signature는 서버 측에서 관리하는 비밀키가 유출되지 않는 이상 복호화할 ..
[04] mutsa-SNS 2일차 - (1) 회원가입 test code 회원가입 controller의 test code를 추가하였다. 회원가입 성공, 실패 두가지 case에 대해 실행하였다. 1. TestCode UserControllerTest @WebMvcTest(UserController.class) class UserControllerTest { @Autowired MockMvc mockMvc; @MockBean UserService userService; @Autowired ObjectMapper objectMapper; @Test @DisplayName("회원가입 성공") @WithMockUser void join_success() throws Exception{ UserJoinRequest userJoinRequest = UserJoinRequest.builde..
[03] mutsa-SNS 1일차 - (2) 회원 가입 기능 회원 가입 기능을 구현하였다. 클라이언트에게 userName와 password를 받아 회원가입을 진행한다. 1. Domain UserEntity @Builder @AllArgsConstructor @NoArgsConstructor @Getter @Table(name = "user") @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String password; private Timestamp registeredAt; private String role; private Timestamp updatedAt; @Column(unique = true) private S..