Skip to content

Commit 8bd47b5

Browse files
committed
Pyline !
0 parents  commit 8bd47b5

85 files changed

Lines changed: 15776 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/main.yml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: Sync Engine
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- main
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout repository
15+
uses: actions/checkout@v5
16+
17+
- name: Install uv
18+
uses: astral-sh/setup-uv@v6
19+
with:
20+
version: "latest"
21+
22+
- name: Install dependencies
23+
run: uv sync
24+
25+
- name: Build engine
26+
run: uv run sonolus-py build
27+
28+
- name: Upload engine artifact
29+
uses: actions/upload-artifact@v4
30+
with:
31+
name: pyline-engine
32+
path: build/dist/engine/
33+
34+
- name: Checkout Server Repo
35+
uses: actions/checkout@v4
36+
with:
37+
repository: LBO44/Sonolus-Rizline-Server
38+
token: ${{ secrets.SERVER_REPO_TOKEN }}
39+
path: server
40+
sparse-checkout: |
41+
engine
42+
sparse-checkout-cone-mode: false
43+
44+
- name: Copy Engine Assets
45+
run: |
46+
mkdir server/engine/data -p
47+
cp build/dist/engine/EnginePlayData server/engine/data/playData
48+
cp build/dist/engine/EngineWatchData server/engine/data/watchData
49+
cp build/dist/engine/EnginePreviewData server/engine/data/previewData
50+
cp build/dist/engine/EngineTutorialData server/engine/data/tutorialData
51+
cp build/dist/engine/EngineConfiguration server/engine/data/configuration
52+
cp build/dist/engine/EngineRom server/engine/data/rom
53+
54+
cp -r convert/. server/engine/
55+
56+
- name: Commit Updated Engine to Server Repo
57+
working-directory: server
58+
run: |
59+
git config --global user.name "github-actions"
60+
git config --global user.email "actions@github.com"
61+
git add --sparse .
62+
git commit -m "Update engine assets with ${GITHUB_SHA}"
63+
git push

.gitignore

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Python-generated files
2+
__pycache__/
3+
*.py[oc]
4+
build/
5+
dist/
6+
wheels/
7+
*.egg-info
8+
9+
# Virtual environments
10+
.venv
11+
12+
# generated resources
13+
resources/skins/
14+
resources/particles/
15+
resources/levels/*/data.json

README.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<h1 align=center>Sonolus Rizline Engine</h1>
2+
3+
![Banner Image](https://github.com/user-attachments/assets/f346d82d-f1fb-4ce0-92cd-85b346e374bf)
4+
<p align="center">My recreation of <b>Rizline</b> in <a href="https://sonolus.com/">Sonolus</a> using <a href="https://sonolus.py.qwewqa.xyz/">Sonolus.py</a>.</p>
5+
6+
**Try it now at: https://sonolus-rizline.vercel.app/ !**
7+
Currently featuring play and watch mode.
8+
9+
## Quick Dev Setup
10+
1. Install [uv](https://docs.astral.sh/uv/), run `uv sync`.
11+
2. To add Rizline levels, copy one of the existing `resources/levels` folder, modify `item.json` with the new level name and change `chart.json` to the corresponding Rizline chart file.
12+
3. Convert Rizline chart to Sonolus data and generate corresponding skin and particle by running `convert/generate_resources.ts`, [pngjs](https://www.npmjs.com/package/pngjs) is used to generate skin textures.
13+
4. [Ensure your venv is activated](https://docs.astral.sh/uv/pip/environments/#using-a-virtual-environment).
14+
5. Run `sonolus-py dev`.
15+
16+
17+
## Custom Resources
18+
19+
### Skin Sprites
20+
Since Sonolus doesn't have any way of drawing sprites with a custom colour, we need to generate and use a different skin texture for each level to match Rizline's levels colours.
21+
Some sprites have variation for normal and challenge time, like `Background Normal` | `Background Challenge`
22+
23+
| Name |
24+
| ----------------------------------------------- |
25+
| `Background Normal` \| `Challenge` |
26+
| `Background Circle Normal` \| `Challenge` |
27+
| `Fade Out Spawn` |
28+
| `Fade Out Judge` |
29+
| `Drag Note` |
30+
| `Hold Note` |
31+
| `Tap Note Normal` \| `Challenge` |
32+
| `Hold Head Normal` \| `Challenge` |
33+
| `Hold Head Decorator Normal` \| `Challenge` |
34+
| `Hold Connector Normal` \| `Challenge` |
35+
| `Hold Connector Fade Out Normal` \| `Challenge` |
36+
| `Miss Effect Overlay` |
37+
| `Miss Effect Cross` |
38+
| `Line Color 0`, …,`Line Color 31` |
39+
| `Judge Ring Color 0`, …, `Judge Ring Color 31` |
40+
| `Judge Ring Background` |
41+
| `Line Background` |
42+
43+
### Particles
44+
Unlike with Skin we can change the colours by only modifying the data.
45+
46+
| Name |
47+
| ------------------------------- |
48+
| `Hit Normal` \| `Hit Challenge` |
49+
| `Hit Challenge Extension` |
50+
| `Bad` |
51+
52+
### Effect Clips
53+
Default Sonolus effect names are used, however only `#PERFECT` (for Tap and Hold Start notes) and `#GREAT` (for Drag notes) are used.
54+
55+
## Links
56+
- [Rhythm Game Wiki: Rizline](https://rgwiki.stary.pc.pl/wiki/Rizline), useful informations about Rizline files.
57+
- [Rizlib](https://gitlab.com/TadeLn/rizlib), Rust library to interact with the game files.
58+
- [Sonolus Website](https://sonolus.com/)
59+
- This repository is based on [Sonolus.py Template](https://github.com/qwewqa/sonolus.py-template-project)

0 commit comments

Comments
 (0)