프로젝트/RTTRPG

    [RPG 개발] 24일차

    참고: 이 일지는 네이버 카페로부터 옮겨진 레거시 게시물입니다. https://github.com/Sharlottes/nodejsbot/commit/ca04caef374b5efbee73a4e12950249d9fba0e2a update · Sharlottes/RealTimeRPG@ca04cae Show file tree Showing 20 changed files with 5,667 additions and 6,887 deletions. github.com 이동한 새 개발환경의 변경점을 모두 푸시했습니다. 다음에도 일지마다 커밋 기록을 올릴 생각입니다. 게임 진입점 격인 rpg_. ts에서 굳이 처리할 필요가 없는 코드들을 모두 다 정리했습니다. 대표적으로 전투, 교환, 명령어, 유저 관련 함수 및 변수들..

    [RPG 개발] 23일차

    참고: 이 일지는 네이버 카페로부터 옮겨진 레거시 게시물입니다. 큰일이 났습니다. 이 프로젝트에서 4번째 주가 막 지났는데 주된 성과물이 하나도 없습니다. 이게 대체 무슨 일일까요? ​ 원인은 위 버그로부터 비롯됩니다. setDescription을 통해 새 메시지를 추가했지만 editReply를 통한 컴포넌트 제거는 이루어지지 않았습니다. 동기로 처리했기 때문이라고 생각해서 await async를 사용해봤지만 컴포넌트가 제거되고 다시 생성되는 기이한 버그가 대신 절 반깁니다. 이건... discord.js-pages 모듈을 사용한 문제라고 봅니다. 사실 이 모듈은 인터렉션과 임베드, 컴포넌트를 접한 계기로 작용했지만 정작 이걸 사용할 타당한 이유는 명시되지 않았습니다. 이참에 이걸 왜 사용해야 하는지 알..

    [RPG 개발] 22일차

    참고: 이 일지는 네이버 카페로부터 옮겨진 레거시 게시물입니다. 이전에 말씀드린 라즈베리파이 서버를 통해 봇을 24/7로 돌릴 수 있게 되었습니다.

    [RPG 개발] 21일차

    참고: 이 일지는 네이버 카페로부터 옮겨진 레거시 게시물입니다. 학업 이슈와 건강 이슈로 인해 개발할 시간이 줄어들고 영 집중하지 못하다 오늘에서야 일정이 안정기에 돌입했습니다. 오늘은 간단한 코드 클리닝만 했지만, 내일부턴 제대로 개발할 수 있을 듯합니다. ​ 주된 클린업은 이렇게 함수 하나로 대체하는 작업이었습니다. 이참에 컴포넌트 선택지를 열 단위로도 추가할 수 있도록 선택지를 이차 배열로 만들었습니다. ​ 코드가 여전히 더럽긴 하지만 이로써 거대한 결점 하나가 사라졌으니 여러 번 반복하다 보면 코드가 깨끗해지리라 믿습니다. 다음엔 이벤트 종료 함수를 만들어 일관된 처리(컴포넌트 삭제, 유저 데이터 일부 초기화)를 시켜서 버튼 버그를 해결해야 하고, 새 아이템을 추가하고, 아이템 버프와 방어력 시스..

    [RPG 개발] RTTRPG

    참고: 이 일지는 네이버 카페로부터 옮겨진 레거시 게시물입니다. RTTRPG real-time-text rpg | 실시간 텍스트 rpg 이 게임은 타입 스크립트로 구성되어 디스코드 봇으로 작동하는 "실제 시간"을 따른 텍스트 RPG입니다. 공격과 이동, 회복 등 모든 시스템은 턴이 아닌 시간에 의존하여 작동됩니다. 텍스트와 실시간, 이 기이한 조합은 유저가 보이지 않는 타이밍과의 싸움을 가능케 하고, 긴장감을 늦추지 않도록 만들어 줍니다. 상대가 오만가지 수를 생각하는 동안 수십 초를 그냥 기다려야 하는 상황은 이 게임에서 일어나기 드물 것입니다. 초침이 겨우 한 칸을 지나가는 동안 어떤 무기를 장착할지, 어떤 아이템을 쓰거나 포션을 빨아야 할지, 어떤 마법을 사용할지 계산해야 하는 난이도는 그 정보를 ..

    [RPG 개발] 20일차

    참고: 이 일지는 네이버 카페로부터 옮겨진 레거시 게시물입니다. 원래 새 콘텐츠를 만들려고 했습니다. 비록 어제 3개의 아이템을 더 추가했지만 겨우 포션과 잡탬이였기 때문이죠. 가장 중요한 방어구와 액세서리 추가와 관련 시스템을 만들려 했지만 그전에 코드를 어떻게든 개선했어야 했습니다. 사방에 any와 as가 널려있어 익셉션 터지는걸 조잡하게 막아놓고 어떤 건 심지어 unknown으로 형 변환해서 원하는 인터페이스로 다시 형 변환을 했습니다. 여기서 콘텐츠를 늘리면 언젠가 큰 뇌진탕이 올 것을 직감했고, 이전에 들었던 eslint를 알아봤습니다. eslint의 규모는 생각보다 너무나도 컸습니다. 설정 파일을 통해 확장 패키지를 설정할 수도 있었고, 규칙을 커스터마이징할 수도 있었습니다. 이걸 알아보다가 ..

    [RPG 개발] 19일차

    참고: 이 일지는 네이버 카페로부터 옮겨진 레거시 게시물입니다. 이번에 자잘한 버그들을 많이 고쳐냈습니다. 또한 일부 개선도 이루어졌고요. 이후에도 가끔씩 이런 버그 및 개선 패치를 할 생각입니다. • 가장 최근의 전투 기록이 잘려서 나오는 버그를 고쳤습니다. • 무기를 장착할 때 내구도를 할당받지 못한 버그를 고쳤습니다. • 유저 상태창에서 치명타 확률과 배수가 뒤바뀐 버그를 고쳤습니다. • 이벤트 및 아이템 확률과 가치를 약간 조정했습니다. 이제 이전 전투 이벤트가 옛날보다 더 자주 나옵니다. • 전투 보상 아이템이 더욱 풍성해졌습니다. ​ 그나저나 알루미늄 검 치명타 대미지가 3.15나 되더라고요. 너무 사기라서 패치를 해야 할 것 같습니다. ​ 도감을 리메이크했습니다. 이제 발견되지 않은 콘텐츠는..

    [RPG 개발] 18일차

    참고: 이 일지는 네이버 카페로부터 옮겨진 레거시 게시물입니다. 벌써 3주째 이 일지를 작성하고 있네요. 시간 참 빨리 갑니다. 처음 1주엔 콘텐츠 개발에 주력하고, 2주부턴 디스코드와 같이 돌리기 위해 삽질하고, 이번 주에는 디스코드로 완전 이전 후 구조 개선을 했네요. 해당 이벤트가 끝나면 버튼이 비활성되거나 사라집니다. 가끔 클릭이 가능해질 수도 있지만 어차피 해당 인터렉션을 참조할 수 없으므로 상호작용 실패가 뜰뿐입니다. ​ 전투 로그 접기/펼치기를 지원합니다. 지금이 몇 번째고 로그가 얼마나 쌓였는지 알기 위해 윗부분에 + Nlogs를 추가했습니다. ​ 무기 스왑 기능을 추가했습니다. 사실 이건 /swap 명령어로도 가능하지만 이 방법으로 할 경우 전투 로그에 남게 됩니다. 전투 로그에서 무기 ..