Lovely는 런타임에 LÖVE 2D 게임에 코드를 삽입하는 루아 인젝터입니다. 실행 가능한 패치 프로그램과 달리 모드는 부분 또는 전체 게임을 다시 설치할 필요 없이 계속해서 설치, 업데이트 및 제거할 수 있습니다. 이는 프로세스 내 Lua API 우회와 사용하기 쉬운(및 배포) 패치 시스템을 통해 수행됩니다.
Windows용 최신 릴리스를 다운로드하세요. 이것은 lovely-x86_64-pc-windows-msvc.zip
입니다.
.zip 아카이브를 열고 version.dll
게임 디렉터리에 복사하세요. Steam에서 게임을 마우스 오른쪽 버튼으로 클릭하고 "관리"를 가리킨 다음 "로컬 파일 찾아보기"를 선택하여 게임 디렉터리로 이동할 수 있습니다.
하나 이상의 모드를 mod 디렉토리에 넣으십시오(게임 디렉토리와 동일하지 않음). 이는 %AppData%/Balatro/Mods
여야 합니다(Balatro를 모딩하는 경우).
Steam Deck/Proton/Wine만 Steam에서 게임 실행 옵션을 WINEDLLOVERRIDES="version=n,b" %command%
로 설정하세요.
Steam을 통해 게임을 실행하세요.
Mac용 최신 릴리스를 다운로드하세요. M 시리즈 CPU(M1, M2 등)가 있는 경우 이는 lovely-aarch64-apple-darwin.tar.gz
입니다. Intel CPU를 사용한다면 lovely-x86_64-apple-darwin.tar.gz
가 될 것입니다.
.zip 아카이브를 열고 liblovely.dylib
및 run_lovely.sh
게임 디렉터리에 복사하세요. Steam에서 게임을 마우스 오른쪽 버튼으로 클릭하고 "관리"를 가리킨 다음 "로컬 파일 찾아보기"를 선택하여 게임 디렉터리로 이동할 수 있습니다.
하나 이상의 모드를 Mac 모드 디렉토리에 넣으십시오(게임 디렉토리와 동일하지 않음). 이는 /Users/$USER/Library/Application Support/Balatro/Mods
여야 합니다. 여기서 $USER
사용자 이름입니다(Balatro를 모딩하는 경우).
이 폴더를 찾을 수 없으면 Shift-Command-.
(마침표)는 Finder에 숨겨진 파일을 표시합니다.
응용 프로그램 > 유틸리티의 Terminal.app
에 run_lovely.sh
끌어다 놓은 다음 Enter 키를 누르거나 게임 디렉터리 내의 터미널에서 sh run_lovely.sh
실행하여 게임을 실행하세요.
참고: Steam 클라이언트의 버그로 인해 Mac에서는 Steam을 통해 게임을 실행할 수 없습니다. run_lovely.sh
스크립트를 사용하여 실행해야 합니다.
중요 : Lovely 패치 파일( lovely.toml
또는 lovely/*.toml
)이 있는 모드는 mod 디렉토리 내의 자체 폴더에 설치 해야 합니다 . 예외는 없습니다!
패치 형식은 불안정하며 Lovely의 초기 개발이 완료될 때까지 변경되기 쉽습니다.
패치 파일은 게임 프로세스 내에서 코드 삽입이 발생하는 위치와 방법을 정의합니다. 이에 대한 좋은(복잡한) 예는 여기 Steamodded 저장소에서 찾을 수 있습니다.
[manifest]version = "1.0.0"priority = 0# var 대체 규칙을 정의합니다. 이는 {{lovely:var_name}}(이 예에서는 var_name, 실제로는 무엇이든 될 수 있음)이 포함된 행을 검색하고 각 일치 항목을 # 제공된 값으로 바꿉니다.# 이 예에서는 print('{{lovely:var_name} }') to print('Hello world!').# # 유용함: 반복적인 주입의 복잡성을 줄이고 싶을 때 사용합니다. # 릴리스 버전 번호를 여러 위치에 삽입합니다.[vars]var_name = "Hello world!"# 제공된 패턴과 일치하는 줄 앞, 뒤 또는 # 교체 위치에 하나 이상의 코드 줄을 삽입합니다.## 유용함: 초기화 # 루틴 등을 설정하기 위해 소량의 코드를 추가/수정해야 할 때.[[패치]] [patches.pattern]target = "game.lua"pattern = "self.SPEEDFACTOR = 1"position = "after"payload = '''initSteamodded()print('{{lovely:var_name}}')'''match_indent = truetimes = 1# 하나 이상의 # 정규식 캡처 그룹 이전, 이후, 위치 또는 결합에 하나 이상의 코드 줄을 삽입합니다.# - 다음을 사용하는 것이 좋습니다. # 패턴을 구축하려면 https://regexr.com과 같은 정규식 놀이터를 이용하세요.# - 정규식은 효율적이지 않습니다. 반드시 필요한 경우가 아니면 패턴 패치를 사용하시기 바랍니다.# - 이 패치는 캡처 그룹을 지원합니다.# - 이 패치는 각 줄의 공백을 자르지 않습니다. # 패턴을 디자인할 때 이를 고려하세요.## 유용함: 패턴 패치가 페이로드가 어떻게 주입되어야 하는지 설명할 만큼 표현력이 # 부족할 때.[patches.regex]target = "tag.lua"pattern = "(? <indent>[t ]*)if (?<cond>_context.type == 'eval' then)"position = 'at'line_prepend = '$indent'payload = '''local obj = SMODS.Tags[self.key]local resif obj 및 obj.apply 및 type(obj.apply) == 'function' then res = obj.apply(self, _context)endif res then return reselseif $cond'''times = 1# 하나 이상의 파일 내용을 대상에 추가하거나 앞에 추가하세요.## 유용함: 코드를 게임에 삽입하는 데 *만* 관심이 있는 경우에는 다른 것은 필요하지 않습니다. # 새 모듈로 주입하지 않습니다.[[패치]] [patches.copy]target = "main.lua"position = "append"sources = ["core/core.lua","core/deck.lua","core/joker.lua","core/sprite.lua ","debug/debug.lua","loader/loader.lua", ]# 로드된 대상 파일 *전에* 게임에 새 모듈을 삽입합니다.# 유용함: 코드를 별도의 필수 모듈에 격리시키려는 경우 또는 게임/모드 코드가 실행을 시작하기 전에 "전역" 종속성을 삽입하려는 경우 .[[패치]] [patches.module]source = "nativefs.lua"before = "main.lua"name = "nativefs"
pattern
패치를 사용하여 대상 내의 특정 위치에 코드를 외과적으로 삽입합니다. *
(0개 이상의 문자와 일치) 및 ?
지원합니다. (모든 문자 중 정확히 한 번만 일치함) 와일드카드.
패턴 패치가 요구 사항을 충족하지 못하는 경우 에만 regex
패치를 사용하세요. 이것은 기본적으로 패턴 패치이지만 정규식 쿼리 엔진, 캡처 그룹 등을 지원합니다.
대량의 위치 독립적 코드를 대상에 복사해야 하는 경우 copy
패치를 사용하십시오.
module
패치를 사용하여 게임 런타임에 Lua 모듈을 삽입합니다. 이는 현재 단일 파일 모듈만 지원하지만 곧 변경될 예정입니다.
패치 파일은 mod 폴더( MOD_DIR
) 내의 mod 디렉터리에서 로드됩니다. Lovely는 MOD_DIR/ModName/lovely/
내에 있는 모든 패치 파일을 로드하거나 MOD_DIR/ModName/lovely.toml
에서 단일 패치를 로드합니다. 여러 개의 패치가 로드되면 발견된 순서대로 게임에 삽입됩니다.
패치 내에 정의된 경로는 모드의 디렉토리를 기준으로 합니다. 예를 들어, core/deck.lua
MOD_DIR/ModName/core/deck.lua
로 해석됩니다.
각 패치 정의에는 단일 패치 대상이 있습니다. 이러한 대상은 7zip과 같은 도구를 사용하여 게임에서 덤프할 때 소스 파일의 상대 경로입니다. 예를 들어, main.lua
와 같은 최상위 파일을 대상으로 하거나, engine/event.lua
와 같은 하위 디렉터리에 있는 파일을 대상으로 할 수 있습니다.
Lovely 덤프는 패치된 lua 소스 파일을 MOD_DIR/lovely/dump
에 저장합니다. 로그도 마찬가지로 MOD_DIR/lovely/log
에 기록됩니다.
manifest.version