전체 글
카드 분해 구현하기
개요 카드를 분해 칸에 드래그&드롭하면 카드가 분해돼서 자원을 얻는 기능, 얻은 자원으로 다른 카드들을 사용할 수 있다. 카드 비용이 높을수록 분해 자원도 많이 나온다. 기록 카드 드래그-드롭은 카드 활성화를 개발할 때 이미 완성했다. 원래 분해 칸은 손 오른쪽의 청색 버튼이였으나, 머지 텍틱스라는 게임에서 왼쪽에 쓰래기통이 나오는 것에 영감을 받아 청색 스위치 버튼으로 분해 모드를 ON하고 카드를 선택 분해하는 것보다 드래그하여 튀어나온 쓰래기통에 집어넣는 방법이 나을 것 같다고 생각했다. 또한 영감을 준 게임과의 차별성을 두기 위해 왼쪽이 아닌 오른쪽에 쓰래기통을 두고, 애니메이션도 linear하게 등장 대신 bounce하게 등장하고 back하게 퇴장하도록 개선했다. 애니메이션은 만족스러우나 카드 크..
부모 생성자가 호출하는 함수는 비캡슐적이다.
참고: 이 일지는 노션으로부터 옮겨진 레거시 게시물입니다. 개요 자식 클래스의 생성자 함수에서 호출하는 super()는 부모 클래스의 생성자에서 실행되지 않습니다. class MotherClass { public constructor() { //여러가지 초기화 과정 this.init(); } //이 함수는 외부에서도 호출됩니다. public init(): void { console.log("init called in mother class"); } } class ChildClass extends MotherClass { private readonly field1; public constructor(field1: string) { super(); //여러가지 초기화 과정 this.field1 = field..
Symbol.toPrimitive는 문자합을 default로 인식한다.
참고: 이 일지는 노션으로부터 옮겨진 레거시 게시물입니다. 개요 이것은 제가 심볼, toPrimitive에 대해 알아보면서 테스트하다 알게 되었습니다. const object = {}; console.log("default string casting by concatting: " + object); console.log("default string casting by template literal: " + `${object}`); console.log("object is....", object, "\\n"); object.toString = () => `successfully overriden`; console.log("toString-overriden string casting by concatting..
클래스 타입 강제 변환은 메서드를 보장하지 않는다.
참고: 이 일지는 노션으로부터 옮겨진 레거시 게시물입니다. 개요 자바나 코틀린, 다트 같은 여타 클래스 기반 언어들은 모두 클래스 형 변환을 하면 변환한 클래스의 메서드 또한 호출할 수 있다. 하지만 자바스크립트는 메서드 또한 속성이자 객체다. 타입스크립트에서 인터페이스나 클래스 따위를 제공한다 해서 메서드를 자바처럼 생각해선 안된다. 하지만 타입스크립트를 갓 접한 나는 클래스와 인터페이스 같은 자바와 유사한 환경에 빠져 자바로 착각하며 코딩을 했었다. 저장 데이터를 JSON파일에 넣고 불러올 때 객체를 그대로 원하는 클래스로 형 변환해 썼던 것이다. 당연히 객체엔 함수가 없었고 결국 에러는 터지고 내 머리도 터졌다.
Next.js에서 ./와 /는 다르다
참고: 이 일지는 노션으로부터 옮겨진 레거시 게시물입니다. https://nodejs.org/api/url.html#url_url_strings_and_url_objects Node.js의 url 객체 명시에 따라 절대 경로는 일반적으로 http, https와 같은 프로토콜이 앞에 있다. 또한, 보편적으로 상대 경로는 프로토콜 없이 경로 앞에. 또는.. 을 둠으로써 현재 위치를 중심으로 경로를 구성한다. 하지만 웹사이트에서 네비게이션 바와 같이 라우팅에 쓰이는 컴포넌트들의 경우엔 현재 위치가 어떠하든 동일한 경로를 갖고 있어야 하는 절대 경로의 성질을 갖고 있어야 하나 개발 버전과 배포 버전의 도메인 차이 때문에 직접 입력하기엔 번거로움이 있다. Next.js는. 없이 /로 경로를 시작함으로써 자동으로 ..
[RPG 개발] 48일차
참고: 이 일지는 네이버 카페로부터 옮겨진 레거시 게시물입니다. 최근 메시지 접근 구조를 완전히 바꿨습니다. 이제 데이터의 키는 상호작용의 id입니다. 최근 메시지에 대한 의존성을 제거하면서 유닛과의 의존성 역시 많이 제거했습니다. 불필요한 파일들을 대거 정리했습니다. 대개 게임 개발 이전에 테스트 용도로 만들어뒀던 파일들입니다. 이참에 gitignore도 업데이트하고 config.json에서 불필요한 값들을 모조리 제거했습니다. Content.ts의 수많은 클래스들은 content/ 딕셔너리 안에서 모두 모듈이 되었습니다. 게임과 관련된 모듈은 모두 game/ 딕셔너리 안으로 이동되었습니다. 번들 적용 범위를 디스코드 locale에 맞춰 확장했습니다. 해당 프로퍼티 파일이 없을 경우 기본값인 e..
[RPG 개발] 43일차
참고: 이 일지는 네이버 카페로부터 옮겨진 레거시 게시물입니다. 저번 달부터 너무 많은 과제양에 피로를 느껴 개발을 중단하고 일지 작성을 멈췄었습니다. 그리고 저번 주부터 개발을 다시 시작하고 있었죠. 문제는 일지 작성으로 카운트하던 개발일을 어떻게 다시 바로잡느냐인데, 이건 깃허브 커밋 날짜와 일지를 기준으로 재정립했습니다. 1월 23일부터 30일에 커밋이 있었으니깐요. 오늘 한 일은 되게 짧으면서도 언젠간 해야 할 일이였습니다. 게임이 안정화 단계에 접어들면서 초대 링크를 일부 서버에 배포하고 있습니다. 하지만 완전히 안정화된 상태도 아니고 릴리즈 봇과 베타 봇이 개별화된 상태도 아니라서 다수의 서버에 배포된 상태로 불안정한 개발 테스트를 시행하는 건 굉장히 위험한 행동입니다. 때문에 정식 릴..
[RPG 개발] 근황
참고: 이 일지는 네이버 카페로부터 옮겨진 레거시 게시물입니다. buy 버튼을 누르면 BuyManager에서 임베드를 다시 렌더링 한다. sell 역시 동일하다. 만약 마지막 인자를 생략한다면 "뒤로가기" 버튼이 등장하지 않는다. 고블린은 알루미늄 검을 지닌다.