This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Babel for Fast Refresh
- @vitejs/plugin-react-swc uses SWC for Fast Refresh
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
export default tseslint.config({
extends: [
// Remove ...tseslint.configs.recommended and replace with this
...tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
...tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
...tseslint.configs.stylisticTypeChecked,
],
languageOptions: {
// other options...
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
},
})You can also install eslint-plugin-react-x and eslint-plugin-react-dom for React-specific lint rules:
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'
export default tseslint.config({
plugins: {
// Add the react-x and react-dom plugins
'react-x': reactX,
'react-dom': reactDom,
},
rules: {
// other rules...
// Enable its recommended typescript rules
...reactX.configs['recommended-typescript'].rules,
...reactDom.configs.recommended.rules,
},
})-
뒷북이지만 8.3 챌린지 쳐보다가 생각한 것 맞음
-
루미너스는 카데나, 블래스터, 에반 등과 같이 누르는 키가 많은 직업은 아니지만, 많은 순간 "사용할 스킬에 선택지가 있는" 직업
-
옛날에는 비교적 단순한 딜 사이클을 가지고 있었으나(이퀼일 때는 앱킬, 이퀼이 아닐 때는 라리/아포. 여기에 적절히 5차 스킬들 사용),
-
컨티, 트노바, 마코의 추가타 등의 요소와 최근의 2분 주기 패치까지 들어오게 되면서 골치 아픈 요소가 많아짐
- 블토카퓨(쯔아앗), 리브마오팬, 닼신쇽처럼 짧쿨 딜링기의 쿨이 정렬되어 있지도 않음.
- 퍼니싱, 트노바는 상태에 따라서 딜량이 다름
- 심지어 트노바는 재사용도 터지고, 이퀼이 아닐 때는 게이지도 약간이지만 채워줌
- 세례는 쿨타임도 막 변함(이퀼 상태에서 이퀼 스킬 사용시 2초씩)
- 이터널/엔드리스도 조금씩 게이지를 채워줌
- 등등...
-
특히 주기 면에서, 루미너스들은 보통 적절한 벞지 세팅에서 40초 이퀼+20초 메모+(10+a)초 게이지+40초 이퀼+(10+a)초 게이지와 같이 (120+a)초 정도의 자연적인 사이클 시간을 가지고 있는데, 현재의 2분 극딜벞(오쓰, 메용2)의 실질적 쿨타임(112.8초-쿨뚝 n초)에 비해 차이가 많이 나는 상황. 실전에서는 더 밀리고...
-
이 때 (필자가) 생각해 본 몇 가지 대안은:
- 벞지를 줄여서 사이클 시간을 줄이기(굳이???)
- 이퀼일 때 라리/아포를 쓰면서라도 어떻게든 한 주기를 2분벞에 맞게 압축
- 본래 사이클을 유지하면서 2분벞을 늦게 쓰면서 굴리기
- 본래 사이클은 유지하되 2분벞은 쿨이 돌 때마다 바로바로 굴리기
-
또한, 이 와중에 더 디테일을 챙겨서, 컨티링이 켜져 있을 때는 앱킬 위주로, 꺼져 있을 때는 게이지를 쌓는 식으로 굴려 최대한 컨티 효율을 뽑을 수도 있음.
-
더 나아가서, 추가타가 생각보다 센데(이터널, 엔드리스), 쿨이 2초이므로 이퀼 때 앱킬-아포-아포 등의 사이클을 사용할 수도 있지 않을까 고민됨.
-
그런데 여러 가지 전략을 짜고 전분을 재면서 실험해 보자니, 각 전략을 본인이 제대로 수행할 자신도 없고
-
끽해봐야 작은 차이들일 텐데 서버렉과 최대 27.5%나 되는 재사용 발생 빈도의 편차로 신뢰할 만한 데이터를 뽑기 어려울 것 같음
-
6차 강화 수준, 쿨뚝과 재사용 등의 각종 스펙을 다 실험해보는 것도 비현실적
따라서, 루미너스의 딜 사이클을 시뮬레이션하고 딜링 전략을 최적화(한 주기(프리드+오리진) 기준)하며, 또 다음과 같은 각종 (쓸데 없는...?) 질문에 '정량적'인 답을 할 수 있기를 희망
-
퍼니싱, 노바, 세례 등을 얼마나 이퀼 혹은 컨티에 맞춰야 할까?
-
이퀼 아닐 때 노바는 이퀼일 때보다 데미지가 약한 대신 게이지를 약간 채워 주는데, 뭐가 더 이득인 걸까?
-
엔버는 쿨이 돌 때마다 항상 쓰는 게 좋을까? 아니면 오쓰메용에 맞출까? 아니면 오리진 써야 할 때에만 남겨 둘까?
-
게이지를 다 채웠는데 세례가 n초 남았다. 이퀼에 진입해서 쿨타임을 초기화 시켜 버려도 될까?
-
이퀼 상태에서 앱킬을 마구 쓰고 있는데, 세례 쿨이 아주 조금 남은 것 같다. 조금만 기다릴까?
-
오리진 극딜 타임에 메모를 써도 될까?
-
사이클이 밀렸을 때, 메모를 써도 될까?
-
첫 극딜 사이클 시작은 어떻게 하는 게 제일 좋을까?(아마 빛퍼노빛이 정배) 꼭 첫 극딜이 아니더라도, 빛퍼노가 다 돌아 있을 때 뭐부터 써야 할까?
-
벞지는 얼마나 필요한 걸까?(0%와 \infty%는 분명한 차이가 있는데...) 재벞보 대신에 재보상이 더 좋을 수도 있을까?
-
쿨뚝과 재사용의 효율은 실제로 얼마나 되는 걸까?
-
이퀼 유예 자동/수동 차이?
-
빛의 길/어둠의 길 차이?
-
등등
-
주의: 허수 기준. 보스전은 고려하지 않음. 심지어 최적의 전략을 허수아비에서라도 실현할 수 있는지조차 미지수.
-
위에도 말했지만 사실 똥꼬쇼 하는 노력에 비해 리턴은 미미할 것 같아 보임.
-
하지만 재밌죠? 궁금하죠?
-
줄임말 정리 이퀼: 이퀼리브리엄 앱킬: 앱솔루트 킬 빛, 빛 상태: 선파이어 어둠, 어둠 상태: 이클립스 라리플, 라리: 라이트 리플렉션 아포: 아포칼립스 노바, 트노바: 트와일라잇 노바 마코: 마스터리 코어 컨티, 컨티링: 컨티뉴어스 링 빛어세, 세례: 빛과 어둠의 세례 진문: 진리의 문 퍼니싱: 퍼니싱 리소네이터 오브: 리버레이션 오브 이터널: 이터널 라이트니스 엔드리스: 엔드리스 다크니스 메모: 메모라이즈 오쓰: 히어로즈 오쓰 메용2, 메여축: 메이플 여신의 축복 오리진: 하모닉 패러독스 프리드: 프리드의 가호 재사용: 재사용 대기시간 미적용 쿨뚝, 쿨감: 재사용 대기시간 감소 2분벞: 오쓰+메용2 엔버: 엔젤릭버스터 링크스킬 벞지: 버프 지속시간 증가 효과
-
기본 캐릭터 메커니즘 1.1 라크니스 시스템
루미너스는 빛, 어둠, 이퀼 상태를 오가며 전투 기본적으로 빛 또는 어둠 상태에서 시작하며, 각 상태에 맞는 스킬로 게이지를 채움 빛 또는 어둠 상태는 지속시간이 무한인 버프가 적용되어 있는 판정 게이지를 모두 채우면 이퀼 상태에 돌입 이퀼 상태는 17초간 지속(버프 지속 시간 증가 효과를 받음) 지속시간이 유한한 이퀼리브리엄 버프가 적용되는 판정 적절한 버프 지속 시간 증가 효과를 보유할 경우 약 40초 정도 지속 가능 이퀼 상태에서는 앱킬을 재사용 대기시간 없이 사용 가능
1.2 상태 전환 및 게이지 충전 게이지의 총량은 빛/어둠 모두 1만. 빛 상태에서는 빛 스킬로만 충전됨. 어둠 상태에서는 어둠 스킬로만 충전됨. 빛에서 이퀼로 넘어간 이후에는, 다음이 어둠 상태가 될 예정이므로 어둠 게이지만 충전 가능(어둠 스킬로만 충전됨) 어둠에서 이퀼로 넘어간 이후에는, 다음이 빛 상태가 될 예정이므로 빛 게이지만 충전 가능(빛 스킬로만 충전됨) 게이지를 모두 채우면 이퀄리브리엄 유예 상태에 돌입. 유예 상태에서 '이퀄리브리엄 리버레이션' 스킬을 사용해야 이퀄 상태로 돌입 두 이퀼 상태 간 기능적 차이는 없고, 다음 전환될 상태만 다름. 이퀼 상태에서도 다음 게이지를 쌓을 수 있으며, 모두 쌓아 새로운 이퀼리브리엄 유예 상태에 들어가고, 이후 이퀼 상태에 새로 들어가면 지속시간 초기화됨(연장 안됨) 즉 빛 게이지를 쌓을 수 있는 이퀼리브리엄 상태, 어둠 게이지를 쌓을 수 있는 이퀼리브리엄 상태가 각각 존재 '메모라이즈' 스킬을 사용하면 즉시 이퀄리브리엄 상태에 돌입(17초 지속, 버프 지속 시간 증가 효과를 받지 않음)하고, 반대 게이지를 쌓을 수 있는 상태로 넘어감 메모라이즈 사용 시 이전에 쌓았던 게이지는 초기화됨
1.3 기본적인 전략 이퀼일 때가 강력하므로, 최대한 이퀼 상태를 오래 유지하면서 딜하는 방식이 권장됨. 빛과 어둠 상태일 때는 각각 라리플/아포를 사용하면서 빠르게 이퀼 상태에 돌입하고, 이퀼 상태에서는 진문을 1회 사용, 앱킬을 주력으로 사용하면서 퍼니싱/세례/노바를 쿨타임이 돌 때마다 꾸준히 사용
- 중요한 시스템 메커니즘 2.1 공격 시스템 스킬 딜레이는 스킬마다 다름. 또 루미너스의 경우 빛 스킬과 어둠 스킬의 게이지를 채워주는 양이 스킬마다 다름 메이플의 시간 틱 단위는 30ms 일반적으로 스킬 시전 중에는 다른 스킬을 시전할 수 없으나, 예외적으로 시전 가능한 스킬들이 있음(에르다 노바, 해방무적, 엔버 링크 등) 이외에도 특정 공격 조건을 만족하면 발동되는 버프 스킬들이 있음 직접 발동해야 하는 액티브 버프 스킬들도 존재(오쓰메용오브, 엔버링크) 공격 시 5차 특수코어 일필 효과 발동 가능: 공격하는 순간 2초간 데미지 100% 증가, 쿨타임 30초 컨티: 보스 몬스터 '공격 성공' 시 8초간 버프, 이후 4초 대기 상태 반복 소환수 설치는 '공격'이 아니라서 일필이나 컨티가 발동되지 않음. 공격도 마찬가지이나 퍼니싱 같은 경우는 소환 시는 공격 판정이 아니지만 소환되어 공격을 시작할 때 컨티와 일필이 터지며 숨이 돌아가지는 않음
2.2 쿨타임 계산 메이플의 각종 스킬에는 쿨타임이 존재하는데, 이 쿨타임을 감소시킬 수 있는 방법이 두 가지 존재
- 하나는 메르세데스 캐릭터를 육성하면 받을 수 있는 효과로, 육성 정도에 따라 2%/3%/4%/5%/6% 만큼의 쿨타임 감소 효과를 받을 수 있음
- 또 하나는 장착한 모자 장비의 '재사용 대기시간 감소 n초' 효과로, 최소 1초부터 (현실적으로) 최대 7초까지 적용 가능
- 메르 쿨감부터 적용되며, 이후 '재사용 대기시간 감소 n초 효과'의 경우 구간별로 다르게 적용됨
- 우선 쿨타임을 10초까지 감소시킬 때는 쓰여진 그대로 적용
- 10초까지 감소시킨 이후에 남아 있는 쿨감 효과의 경우, 1초당 5%의 비율로 감소시킴
- 최종적으로, 5초 미만으로는 감소하지 않음
- 예시1: 쿨타임 30초, 6%, 4초: 30*0.94 = 28.2, 이후 4초만큼 감소시켜 24.2초
- 예시2: 쿨타임 12초, 6%, 2초: 12*0.94 = 11.28, 이후 1.28초만큼 감소시켜 10초, 이후 0.72초에 해당하는 3.6%의 비율을 감소시켜 9.64초 쿨타임 적용
- 예시3: 쿨타임 10초, 6%, 4초: 10*0.94 = 9.4, 이후 4초에 해당하는 20%의 비율을 감소시켜 7.52초로 적용
- 예시4: 쿨타임 6초, 6%, 3초: 6*0.94 = 5.64, 이후 3초에 해당하는 15%의 비율을 감소시켜 4.794초가 되어야 하나 5초까지만 적용되어 5초 쿨타임 적용
- 예시5: 쿨타임 2초, 6%, 2초: 2*0.94 = 1.88초. 최종적으로 1.88초 쿨타임 적용
2.3 서버렉 메이플의 일부 버프 효과들은 지속시간이 다 되어도 칼같이 효과가 종료되지 않음 우선 컨티링은 칼같이 적용되고, 또 프리드의 6스택 버프는 칼같이 종료됨 일필, 각종 링크, 이퀼 버프, 엔버링크, 6스택이 아닌 프리드 등은 서버렉이 적용될 수 있어, 정해진 시간보다 최소 0초에서 길게는 5초 이상까지도 종료가 지연되기도 함 실질적으로 서버렉을 예측할 수는 없으나, 어느 정도의 경향성은 존재 - 서버 부하를 줄이기 위함인지 서버렉이 적용되는 버프들은 동시에 같이 꺼지려는 경향이 있음.(항상 그런 것은 아님) - 예를 들어 지속시간이 3초 남은 버프와 1초 남은 버프가 있을 때 1초 남은 버프가 서버렉을 받아 지연되다가 3초 남은 버프와 함께 종료되는 식 - 확실한 건, 3초 남은 버프가 '먼저' 종료되지는 않음 서버렉은 매 실험마다 변수로 작용할 것
- 딜 사이클 전략 3.1 기본 사이클 기본적인 주기: 이퀼-메모라이즈-(빛 또는 어둠)-이퀼-(어둠 또는 빛)의 반복으로 보통 120초가 넘는 주기 2분 쿨타임(쿨타임 계산 전)을 가진 강력한 버프 스킬들(60초 지속)과 6분 쿨타임(쿨타임 계산 전)의 강력한 즉발형 스킬과의 조율 필요
3.2 전략 옵션 이퀼 시간에도 게이지를 쌓으면서, 약간씩 손해를 보더라도 한 주기가 돌아올 때 새로운 사이클을 시작 기본 주기를 반복하면서, 2분 주기 버프 스킬들을 늦게 사용 기본 주기를 지키되, 2분 주기 버프들은 쿨이 돌아올 때 바로 사용
3.3 추가 고려사항 컨티뉴어스 링 사이클(8초 버프, 4초 대기)을 고려한 세부 전략 필요 추가타(이터널, 엔드리스, 오브 추가타)의 쿨타임 또한 고려 가능 결국, 전략이라 함은 주어진 상황에서 어떤 스킬들을 먼저 사용할지에 대한 정책(policy) 매 상황에서, 현재 사용할 수 있는 스킬들 중 어떤 스킬을 사용할 것인가? 에 대한 결정(대기 포함) 최적의 전략에 어떻게 수렴하게 할 것인가?(기계학습의 도움이 가능한가?)
-
세팅 관련 변수 강화 수준에 따른 스킬 퍼뎀 차이(특히 6차, 5차는 풀강으로 가정) 벞지 수치 재사용 수치(일부 스킬만 적용) 쿨감 수치 컨티 레벨 등등
-
최종 목표 주어진 세팅에서, 한 주기(6분 스킬을 처음 사용하고 다시 쓸 때까지) DPS 최대화하는 딜링 전략 탐색 각 전략 별로 여러 지표들 분석(각 스킬의 평균 사용 횟수, 딜 지분, 가동률 등)
- Vite + React + TypeScript + Redux Toolkit 조합으로 프론트엔드 구현
- 시각화를 위한 recharts, d3.js 라이브러리 사용
- 시간의 흐름을 30ms 단위로 시뮬레이션
- Web Worker를 활용하여 UI 응답성 유지하면서 백그라운드 계산
- 하나의 episode를 모니터링할 수 있게 시간의 흐름에 따른 시각화 구현
- 성능 최적화:
- 계산량 제한을 위해 시뮬레이션 범위 및 복잡도 조절
- 필요시 타임스텝 크기 조정 (30ms → 60ms 등)
- 메모이제이션 및 계산 결과 캐싱
- 강화 효과와 캐릭터 세팅을 커스텀할 수 있게 구현
- 딜링 전략 표현 방식:
- 미리 정의된 몇 가지 전략 비교 분석
- 상태-행동 매핑 기반의 단순화된 휴리스틱 사용
- 향후 확장 가능성: 간단한 강화학습 또는 휴리스틱 최적화
- 서버렉 시뮬레이션:
- 확률적 모델로 구현
- 사용자 정의 서버렉 패턴 설정 가능
커스텀할 수 있는 캐릭터 세팅:
- 5차 강화
- 6차 강화
- 메르 레벨
- 벞지 (버프 지속시간 증가)
- 컨티 레벨
- 쿨뚝 (재사용 대기시간 감소)
- 재사용 %
- 기본 스펙 (인트, 럭, 마력, 보뎀합, 크뎀, 크확 등)
- 이퀼 유예 자동/수동 모드
- 공격 속도