전체 글

전체 글

    [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 명령어로도 가능하지만 이 방법으로 할 경우 전투 로그에 남게 됩니다. 전투 로그에서 무기 ..

    [RPG 개발] 17일차

    참고: 이 일지는 네이버 카페로부터 옮겨진 레거시 게시물입니다. 컴포넌트와 라이브러리 사용에 점점 능숙해지고 있습니다. 문제는 코드가 또 급팽창하여 줄 수가 엄청난다는 것인데요, 이참에 EventData 클래스를 따로 분리하는 게 나을 듯합니다. 각 이벤트마다 EventData를 상속하는 클래스를 생성하여 /walk 명령어에서 특정 메서드를 호출하게끔 만들면 되겠죠. 이러면 • 새로운 이벤트 제작이 편리해집니다. 길가다가 줍는 두 이벤트를 하나로 줄일 수 있듯이요. • 코드가 다시금 깨끗해집니다. 이벤트 관련 함수들이 모두 다 관련 클래스로 들어갈테니 가독성이 더 오르겠죠. • 유지보수가 향상됩니다. 각 이벤트 클래스들이 상속할 EventData 클래스에 중첩되는 속성들을 넣어둬서 값을 수정하거나 문제를..

    [RPG 개발] 16일차

    참고: 이 일지는 네이버 카페로부터 옮겨진 레거시 게시물입니다. 요즘 학업이라든지 명절이라든지 여러 가지의 이유로 바빴습니다. 오늘의 개발 시간만 추려봐도 2~3시간인걸 보면 평소의 주말 평균 5시간과 달리 크게 줄어듦을 알 수 있습니다. 이 과정에서 여러 가지 스트레스도 쌓였고, 미해결 된 구조 개선을 기다리기엔 제가 지루해서 카카오톡과의 관계를 어떻게 해결해야 할지 고민하다 그냥 브랜치로 때어놓고 디스코드 봇 개발만을 선택했습니다. ​ 덕분에 코드가 많이 클린해졌습니다. 이참에 Message 타입 구조를 완전히 새로 만들었고, 이 과정에서 메신저봇의 Message 속성은 거의 모두 제거되었습니다. 대신 임베드 Builder와 상호작용 CommandInteraction 객체를 대신 넣었습니다. 임베드의..

    [RPG 개발] 15일차

    참고: 이 일지는 네이버 카페로부터 옮겨진 레거시 게시물입니다. https://www.npmjs.com/package/discord.js-pages 모듈과 디스코드 임베드, 버튼 기능, 코드 블록의 색 기능을 이용하여 밍밍한 텍스트 전투 장면을 향상했습니다. 도파민이 주체를 못 하고 있습니다. ​ 임베드가 지금까지 절 잡아두던 문제들 중 대다수를 쓸어버렸습니다. 이용자들의 제안도 임베드 추가가 주 맥락이였고, 사실 디스코드 봇이라는 특징을 부각하기 위해 임베드는 언젠가 추가할 생각이었습니다. 하지만 누가 누굴 공격하는지 알기 어려운 점, 배경과 글자만 있는 텍스트 게임의 불가피한 밍밍한 스타일, 조잡한 수제 선택지 시스템의 여러 버스 등을 해결했어야 했지만, 너무 지쳐서 그냥 코드 디자인은 나중으로 미루..