
작년 이맘 때, 2022 Smilegate winter 캠프를 진행했다. 다만 코로나 시기였던 만큼 오프라인으로 진행되었고, 적극적으로 참여하기 어려운 환경이였다. 올해, 운이 좋게도 좋은 기회로 다시 한번 스마일게이트의 2023 개발 캠프에 참가할 수 있었다. 작년과는 달리 오프라인으로 캠프를 진행하였고 지금부터 약 세 달간 진행한 개발 캠프에 대해서 글을 남기려고 한다. 개발 환경이 어때? 우선 Smilegate 개발 캠프의 장점 먼저 말하고 싶다. 캠프 중간 진행한 인터뷰(링크)에서 말 하였는데, 요약하자면 온전히 캠프와 개발에 집중할 수 있도록 모든 환경을 제공해준다. 모니터와 노트북, 하루종일 개발을 진행하고 자유롭게 회의할 수 있는 오프라인 공간, 가까운 곳에 계시는 현역 멘토님들, 빵빵한 탕..

발단 프로젝트에서 아래 간단한 코드를 실행하던 도중 서버 오류가 발생하였다. 우선 발단이 된 코드는 다음과 같다. async createStat(stat: CreateStatDto): Promise { const newStat = { ...stat, }; const createdStat = await this.statModel.create(newStat); return createdStat } 발생한 서버 오류는 다음과 같다. [MyApp] error 2023-11-20 09:48:40 [ExceptionsHandler] callback is not a function - { stack: [ 'TypeError: callback is not a function\n' + ...code... 처음에는 인터셉..

이전 게시글에서 레벨업, 경험치를 관련해서 어떻게 구현을 할지 기초적인 설계를 진행했다. 추가적인 설계를 조금 진행한 후 구현에 들어가려고 한다. 데이터베이스 구조 설계 캐릭터 생성 시 그 캐릭터는 약 4~5개의 스텟을 지닌다. 또한 이 스텟은 추가되거나 삭제되거나 등의 변동성을 갖는다. 문제는 나의 요구사항에 따르면 각 스텟별로 레벨과 경험치가 존재하여 각 스텟의 변동 사항을 개별적으로 관리하여야 한다는 것이다. 따라서 캐릭터 내에 스텟을 임베디드 시키는 것과 참조 시키는 것 중에서 어떤 방식이 더 나을까를 판단했을 때, 참조 방식이 더욱 적절하다고 판단하였다. 따라서, 캐릭터와 스텟은 One to Many 관계를 갖는 참조 방식으로 설계를 진행하였다. 실행 흐름 설계 간략히 생각해본 경험치 상승과 레..

캐릭터를 육성하는 프로젝트를 하나 진행하고 있다. 퀘스트와 같은 행위를 완료할 경우 경험치가 증가하는 알고리즘을 작성해야하는데, 이를 위해 고려할 것이 조금 있다. 요구사항 특정 행동을 완료 했을 때 해당 행동의 카테고리에 속한 능력치의 경험치가 상승한다. 예를 들어 팔굽혀펴기를 하면 근력 경험치가 상승한다. 레벨이 상승할수록 행동에 대해 요구하는 역치가 증가한다. 예를 들어, 근력 레벨 1이 팔굽혀펴기 10개를 하면 힘들어 하지만, 레벨 3이 팔굽혀펴기 10개를 하면 쉬워한다. 이러한 것을 기반으로, 내가 구현할 것에는 다음과 같은 고민이 필요했다. 유저 행동은 정말 다양한데, 어떻게 카테고리화 시킬 것인가? 마찬가지로, 사람의 행동은 정말 다양한데 이것에 대한 경험치는 어떻게 정의할 것인가? 레벨 상..