371 Commits

Author SHA1 Message Date
bridge
e900c3e098 fix pytest 2026-01-14 17:17:21 +08:00
4thfever
df8b1b9433 Refactor/event (#31)
重构事件机制和部分拍卖会机制
2026-01-14 16:58:50 +08:00
4thfever
63fc2f828e Feat/auction (#30)
Add gathering events, in which multiple avatars participate
Add auction event

Closes #24
2026-01-14 02:33:13 +08:00
4thfever
0d34b27fff Feat: Add splash layer (#29)
Add splash layer, support game start, settings, exit
Modify settings layer, add "go back to splash" and "exit"
Add character threshold for history input
Closes #28
2026-01-13 22:00:23 +08:00
bridge
224e3e76f0 fix: pytest llm error only existed in github online CI 2026-01-13 00:08:42 +08:00
4thfever
bb2e010930 refactor readme (#26)
refactor readme, simulate style of
https://github.com/vladelaina/Catime
Closes #23
2026-01-13 00:03:09 +08:00
4thfever
95e1f11502 Refactor/history (#25)
add multi process history modification
2026-01-12 23:25:53 +08:00
4thfever
176fa95425 Merge pull request #21 from AI-Cultivation/feat/history
Feat/history
2026-01-12 00:40:56 +08:00
bridge
2caa5586be refactor history archi 2026-01-12 00:36:10 +08:00
bridge
287f9d2ae4 update history pytest 2026-01-12 00:20:15 +08:00
bridge
57cf5ca51a add history class 2026-01-11 23:53:26 +08:00
bridge
5241f70ef3 refactor item ids 2026-01-11 23:12:48 +08:00
bridge
fa4c0340fd fix pytest 2026-01-11 22:48:05 +08:00
bridge
19b9ddd8ba refactor frontend 2026-01-11 22:44:05 +08:00
bridge
879a3c0d1f refactor frontend (not done) 2026-01-11 22:29:53 +08:00
bridge
08e28f52c7 refactor frontend (not done) 2026-01-11 22:15:45 +08:00
bridge
f33cfab0d5 refactor frontend (not done) 2026-01-11 22:08:01 +08:00
bridge
488758764e fix pytest for new awaken avatars 2026-01-11 21:03:02 +08:00
bridge
090e8fe32c fix remove avatar bug 2026-01-11 20:45:51 +08:00
bridge
5143266442 fix remove avatar bug 2026-01-11 20:40:53 +08:00
bridge
3a0e432b02 refactor gift 2026-01-11 20:33:54 +08:00
bridge
2056538375 uncomment protagonists 2026-01-11 19:56:26 +08:00
4thfever
2d9f073435 Merge pull request #20 from AI-Cultivation/fix-misorder-events
fix: incorrect order in event panel
2026-01-11 19:27:55 +08:00
bridge
ff6038b786 fix: incorrect order in event panel 2026-01-11 19:26:05 +08:00
bridge
88cc7cd966 feat: add color to map avatar names 2026-01-11 18:54:34 +08:00
bridge
ed7d16b4f3 feature: log print version 2026-01-11 18:27:41 +08:00
bridge
a0cfb3b9da make better conversation template 2026-01-10 01:41:13 +08:00
bridge
ac8c6c1c73 update tips 2026-01-10 00:50:30 +08:00
bridge
33b01fa0e9 fix web 2026-01-10 00:34:44 +08:00
bridge
92fc6d4b83 update protagonist 2026-01-10 00:01:58 +08:00
bridge
79c375802d update protagonist 2026-01-09 23:48:23 +08:00
bridge
da43adac96 update icon 2026-01-09 22:01:51 +08:00
bridge
1499c0cbc8 fix unittest bug 2026-01-09 01:07:52 +08:00
bridge
e5f96b7f43 update readme and tips 2026-01-09 00:50:39 +08:00
bridge
59824d9cd5 update readme and tips 2026-01-09 00:49:16 +08:00
bridge
ff6d1b5de7 add more protagonist 2026-01-08 23:19:35 +08:00
bridge
f8f0e8a59c update tips 2026-01-08 23:06:36 +08:00
bridge
f7d6554e9b update objective front end 2026-01-08 22:49:23 +08:00
bridge
a4dd29145f update tips 2026-01-08 22:35:42 +08:00
bridge
c6a574a2ac refactor: remove switch weapon action 2026-01-08 22:19:56 +08:00
bridge
9c21259577 refactor: add store mixin into city regions & refactor buying action 2026-01-08 22:16:33 +08:00
bridge
d1d7e7d7bd fix conflict with pr-16 2026-01-08 21:23:06 +08:00
Zihao Xu
9e75d8dd2e revert: remove SaveLoadPanel.vue changes 2026-01-08 21:12:18 +08:00
Zihao Xu
9485b62cfd feat: add loading screen with progress tracking
- Add async initialization with 6 phases: scanning_assets, loading_map,
  initializing_sects, generating_avatars, checking_llm, generating_initial_events
- Add /api/init-status endpoint for frontend polling
- Add /api/control/reinit endpoint for error recovery
- Add LoadingOverlay.vue component with:
  - Progress ring with gradient
  - Phase text in xianxia style (rotating messages for LLM phase)
  - Tips that rotate every 5 seconds
  - Time-based background transparency (fades to 80% over 20s)
  - Backdrop blur effect
  - Error state with retry button
- Preload map and avatars during LLM initialization for smoother UX
- Add comprehensive tests for init status API
2026-01-08 21:12:18 +08:00
Zihao Xu
8631be501b fix: prevent game from auto-starting to avoid stale initialization events
Problem:
When loading a save (e.g., from year 106), events from year 100 would appear.
This happened because the game auto-started on server startup and client
connection, generating initialization events before the user could load a save.

Solution:
1. Backend: Keep game paused on startup even if LLM check passes
2. Backend: Remove auto-resume on first WebSocket connection
3. Frontend: Start with game paused (isManualPaused = true)

Now the user must explicitly click 'resume' to start a new game, or load a
save first. This prevents the race condition where game_loop generates events
with stale world state.
2026-01-08 21:10:05 +08:00
Zihao Xu
624f697bee fix: pause game during save load to prevent stale events
The game loop could generate events with the old world's timestamp while
loading a save, causing 100年1月 events to appear after loading a 106年
save. Now we pause the game before loading and keep it paused after,
giving the frontend time to refresh state.
2026-01-08 21:06:34 +08:00
4thfever
6b99552f08 Merge pull request #19 from AI-Cultivation/pr-12
Pr 12
2026-01-08 20:47:50 +08:00
bridge
58486f95e8 fix pytest bugs 2026-01-08 20:22:03 +08:00
bridge
c4ca92efc9 update template 2026-01-08 20:16:22 +08:00
Zihao Xu
06d1bed987 fix: integrate SQLite event storage into load/save system
- Fix load_game to use World.create_with_db() for SQLite event storage
- Add get_events_db_path() to compute event database path from save path
- Add JSON to SQLite migration for backward compatibility with old saves
- Close old EventManager before loading new save to prevent connection leaks
- Add events_db metadata to save file
- Add comprehensive tests for database switching bug and save/load cycle
2026-01-07 23:22:17 -08:00
Zihao Xu
a6b8198c3f Merge branch 'main' into xzhseh/sqlite-event-manager 2026-01-07 20:05:02 -08:00
bridge
1647494c7d update 2026-01-08 01:06:10 +08:00
bridge
a007292b60 update pytest 2026-01-08 00:53:13 +08:00
bridge
fabae13e87 update readme 2026-01-08 00:49:46 +08:00
bridge
060708bd79 update readme 2026-01-08 00:46:42 +08:00
bridge
4e95b57152 modify price system 2026-01-08 00:42:40 +08:00
bridge
40d8a0425b refactor self heal system 2026-01-08 00:33:41 +08:00
bridge
b53f428cbb update unittest 2026-01-07 23:14:48 +08:00
bridge
ea9a873589 use uv instead pip in github actions 2026-01-07 22:48:41 +08:00
bridge
345b759fff use uv instead pip in github actions 2026-01-07 22:46:08 +08:00
bridge
b2a021bf8a rename item -> material & refactor buying action 2026-01-07 22:43:26 +08:00
bridge
73c50286b7 add refine action 2026-01-07 21:28:29 +08:00
bridge
7c69d612b0 add refine action 2026-01-07 21:15:04 +08:00
4thfever
2c8f73d290 Merge pull request #15 from xzhseh/xzhseh/fix-age-exceeds-lifespan
fix: prevent character age from exceeding realm lifespan on creation
2026-01-07 20:36:53 +08:00
bridge
968625d27b fix git action 2026-01-07 20:33:25 +08:00
bridge
1dfce734ef fix occupy & gift given bug 2026-01-07 20:11:01 +08:00
4thfever
8ee0c34f6f Merge pull request #11 from xzhseh/xzhseh/add-ci-workflow
feat: add GitHub Actions CI for pytest
2026-01-07 19:08:00 +08:00
Zihao Xu
37518342fc fix: prevent character age from exceeding realm lifespan on creation 2026-01-07 01:08:12 -08:00
Zihao Xu
2e5a2c3c12 style: add comment to separate state and functions in world.ts 2026-01-07 01:02:17 -08:00
Zihao Xu
355e4d0e3c docs: add sqlite-event-manager spec 2026-01-07 00:46:27 -08:00
Zihao Xu
a1f08dd0ab feat: SQLite event storage with pagination and filtering
Implement SQLite-based event persistence as specified in sqlite-event-manager.md.

## Changes

### Backend
- **EventStorage** (`src/classes/event_storage.py`): New SQLite storage layer
  - Cursor-based pagination with compound cursor `{month_stamp}_{rowid}`
  - Avatar filtering (single and pair queries)
  - Major/minor event separation
  - Cleanup API with `keep_major` and `before_month_stamp` filters

- **EventManager** (`src/classes/event_manager.py`): Refactored to use SQLite
  - Delegates to EventStorage for persistence
  - Memory fallback mode for testing
  - New `get_events_paginated()` method

- **API** (`src/server/main.py`):
  - `GET /api/events` - Paginated event retrieval with filtering
  - `DELETE /api/events/cleanup` - User-triggered cleanup

### Frontend
- **EventPanel.vue**: Scroll-to-load pagination, dual-person filter UI
- **world.ts**: Event state management with pagination
- **game.ts**: New API client methods

### Testing
- 81 new tests for EventStorage, EventManager, and API
- Added `pytest-asyncio` and `httpx` to requirements.txt

## Known Issues: Save/Load is Currently Broken

After loading a saved game, the following issues occur:

1. **Wrong database used**: API returns events from the startup database instead
   of the loaded save's `_events.db` file
2. **Events from wrong time period**: Shows events from year 115 when loaded
   save is at year 114
3. **Pagination broken after load**: `has_more` returns `False` despite hundreds
   of events in the saved database
4. **Filter functionality broken**: Character selection filter stops working
   after loading a game

Root cause: `load_game.py` does not properly switch the EventManager's database
connection to the loaded save's events database.
2026-01-07 00:40:34 -08:00
Zihao Xu
f5c40bae3b feat: add GitHub Actions CI for pytest 2026-01-07 00:30:31 -08:00
bridge
e4ff312f58 fix action being executed 3 times bug 2026-01-06 23:41:21 +08:00
bridge
35c0756e85 refactor all gather logic 2026-01-06 23:17:21 +08:00
bridge
649f66213e refactor cast action 2026-01-06 23:06:28 +08:00
bridge
5793c4d2b9 add lode 2026-01-06 23:04:56 +08:00
bridge
8a23dc5576 add lode 2026-01-06 23:01:25 +08:00
bridge
db6df82ea8 refactor cast action 2026-01-06 22:28:25 +08:00
bridge
fbb32adbf6 refactor normalize and resolution 2026-01-06 22:13:47 +08:00
bridge
c266655af9 refactor can_start logic of all actions 2026-01-06 21:43:24 +08:00
bridge
b60481c99c fix death bug 2026-01-06 21:23:06 +08:00
bridge
3f980d4593 fix a bug 2026-01-06 20:42:53 +08:00
bridge
fa909e5a2a update frontend 2026-01-06 01:08:51 +08:00
bridge
d25a84953b refactor log 2026-01-05 23:58:32 +08:00
bridge
9f5ad04e92 refactor buy and sell 2026-01-05 23:52:38 +08:00
bridge
6873746d29 refactor buy and sell 2026-01-05 23:37:52 +08:00
bridge
4bff8e503b add buy action 2026-01-05 23:16:58 +08:00
bridge
8d7e11b021 add elixir 2026-01-05 23:04:55 +08:00
bridge
2a68f352bc add elixir 2026-01-05 22:26:16 +08:00
bridge
96c43c7cf5 Merge branch 'pr-10' 2026-01-05 20:46:43 +08:00
bridge
53459b9abe fix: use {{}} instead of {} 2026-01-05 20:46:17 +08:00
4thfever
cd40c1f201 Merge pull request #9 from xzhseh/xzhseh/fix-dead-avatar-actions
fix: prevent actions on dead avatars
2026-01-05 20:32:56 +08:00
Zihao Xu
8c8e28264f fix: handle null action_params from LLM response
LLM sometimes returns null instead of {} for action_params when an
action doesn't require parameters (e.g., ["Cultivate", null]). This
caused AttributeError when calling .items() on None.

Changes:
- Add defensive check in ai.py to convert null to {}
- Update prompt to explicitly require {} instead of null
2026-01-05 01:36:50 -08:00
Zihao Xu
8d985e0a2b fix: prevent actions on dead avatars
- Add validate_target_avatar() to TargetingMixin for unified validation.
- Update Attack and Assassinate to use the new validation method.
- Add comment to MutualAction.can_start() explaining why it uses inline check.
- Add tests for dead target validation.
2026-01-04 19:29:35 -08:00
4thfever
8727a4f29a Merge pull request #8 from xzhseh/xzhseh/fix-misleading-docstring
fix: correct misleading docstring in to_json_str_with_intent
2026-01-05 09:26:25 +08:00
Zihao Xu
8f99f3edb2 fix: correct misleading docstring in to_json_str_with_intent 2026-01-04 17:22:58 -08:00
bridge
77390fa647 fix pytest 2026-01-04 22:55:59 +08:00
bridge
b74014f9f2 add emotion 2026-01-04 22:49:20 +08:00
bridge
441f8c8e3a refactor battle strength system 2026-01-04 22:28:13 +08:00
bridge
4fc74b1531 refactor battle strength system 2026-01-04 22:25:25 +08:00
bridge
276902bca0 refactor effect system 2026-01-04 22:03:05 +08:00
bridge
806e2c1262 refactor price system 2026-01-04 21:49:58 +08:00
bridge
5429e25b1e update readme 2026-01-04 21:18:20 +08:00
bridge
c24c0819ce add issue template 2026-01-04 21:15:42 +08:00
bridge
7320773bfe update readme 2026-01-04 21:12:35 +08:00
bridge
9865bd170b update readme 2026-01-04 21:06:10 +08:00
bridge
5ffeef897a update readme 2026-01-04 21:05:03 +08:00
bridge
1ec3ec092b update readme 2026-01-04 20:57:28 +08:00
4thfever
5633d113f8 Merge pull request #7 from xzhseh/xzhseh/feat-avatar-name-highlighting
feat: highlight avatar names with unique colors in event panel
2026-01-04 20:52:34 +08:00
4thfever
5de69b8e6f Merge pull request #6 from xzhseh/xzhseh/add-pr-template
chore: add PR template
2026-01-04 20:51:57 +08:00
4thfever
21e56276cd Merge pull request #5 from xzhseh/xzhseh/fix-fortune-master-relation
fix: correct master-apprentice relation direction in fortune event
2026-01-04 20:51:09 +08:00
4thfever
f0290af13a Merge pull request #4 from xzhseh/xzhseh/fix-gender-display-chinese
fix: display gender in Chinese for avatar list API
2026-01-04 20:50:40 +08:00
4thfever
0b773b1726 Merge pull request #3 from xzhseh/xzhseh/fix-macos-npm-subprocess
fix: cross-platform subprocess compatibility for npm dev server
2026-01-04 20:49:59 +08:00
Zihao Xu
fafe1b5997 feat: highlight avatar names with unique colors in event panel 2026-01-04 02:07:47 -08:00
Zihao Xu
aca71bc2d4 chore: add PR template with Summary and Test Plan 2026-01-04 01:43:42 -08:00
Zihao Xu
354050e2b5 fix: correct master-apprentice relation in fortune event
The set_relation(from, to, rel) means "from views to as rel".
When avatar (student) takes master (teacher), avatar should view
master as MASTER, not APPRENTICE.

Before: avatar.set_relation(master, APPRENTICE) - wrong direction
After:  avatar.set_relation(master, MASTER) - correct direction
2026-01-04 01:22:34 -08:00
Zihao Xu
233aea47d3 fix: display gender in Chinese for avatar list API
Use str(a.gender) instead of a.gender.value to return Chinese
"男"/"女" instead of English "male"/"female" in the avatar_list
endpoint, consistent with other APIs that use get_structured_info().
2026-01-04 00:59:24 -08:00
Zihao Xu
1a94117607 fix: cross-platform subprocess compatibility for npm dev server
On macOS/Linux, using shell=True with a list argument doesn't work as expected.
Only the first element is passed to the shell, causing npm to print help instead
of running the dev command.

Changes:
- Use shell=False + list on macOS/Linux, shell=True + string on Windows.
- Use terminate() instead of taskkill on macOS/Linux for cleanup.
2026-01-03 23:53:31 -08:00
bridge
b8de42aeb3 add badge 2026-01-04 00:58:51 +08:00
bridge
367b09fac3 add badge 2026-01-04 00:52:26 +08:00
bridge
f6ebe7c037 add badge 2026-01-04 00:49:30 +08:00
bridge
450d38e15a update version 2026-01-04 00:01:22 +08:00
bridge
7245a89774 update readme 2026-01-03 23:59:44 +08:00
bridge
f9ad2dcd87 update readme 2026-01-03 23:59:30 +08:00
bridge
868e355e41 refactor cast 2026-01-03 23:54:47 +08:00
bridge
11cef02d74 add cast readme 2026-01-03 23:29:25 +08:00
bridge
ea0296f3e2 add cast readme 2026-01-03 23:28:55 +08:00
bridge
775d830ec3 add cast 2026-01-03 23:25:38 +08:00
bridge
6129e0f898 update choice helper 2026-01-03 22:30:33 +08:00
bridge
3a9a9fd6f0 add choice helper 2026-01-03 22:26:55 +08:00
bridge
5b5cd79cb5 add circulation manager 2026-01-03 22:15:25 +08:00
bridge
f499f63c50 update 2026-01-03 22:05:45 +08:00
bridge
6cc0c355dd add more emojis 2026-01-03 21:48:26 +08:00
bridge
5b5ea31d87 refactor avatar effect desc 2026-01-03 21:45:19 +08:00
bridge
e2d03b587d refactor world desc 2026-01-03 21:25:24 +08:00
bridge
f7a4fb23c8 refactor world desc 2026-01-03 20:25:25 +08:00
bridge
9cb98a61dd fix mutual action interact with self bug 2026-01-03 20:08:53 +08:00
bridge
f562d4ea81 update config 2026-01-01 18:31:47 +08:00
bridge
3837e3eafa update config frontend 2026-01-01 17:42:07 +08:00
bridge
5d69334b13 update readme 2026-01-01 17:32:41 +08:00
bridge
edaebe4406 update readme 2026-01-01 17:30:31 +08:00
bridge
305088390d update readme 2026-01-01 17:23:16 +08:00
bridge
af568d4244 update readme 2026-01-01 17:21:46 +08:00
bridge
37294dacd8 update readme 2026-01-01 17:19:20 +08:00
bridge
02eb094f2c update readme 2026-01-01 17:07:57 +08:00
bridge
c73c7361c8 update readme 2026-01-01 17:05:07 +08:00
bridge
abb2f6e07b update readme 2026-01-01 16:45:31 +08:00
bridge
561f1efe21 add emoji to frontend 2026-01-01 15:08:09 +08:00
bridge
f301d67493 update persona 2026-01-01 14:51:34 +08:00
bridge
d6e5d334ca update readme 2026-01-01 11:28:19 +08:00
bridge
b43530ee99 refactor economy prices 2025-12-31 23:41:45 +08:00
bridge
3a47d48fb8 refactor equip 2025-12-31 23:22:17 +08:00
bridge
7197dd1acb refactor equip 2025-12-31 23:18:47 +08:00
bridge
1941218665 fix effects 2025-12-31 22:31:30 +08:00
bridge
462c28fb30 fix effects 2025-12-31 22:26:44 +08:00
bridge
4abd17e6f8 fix pytest 2025-12-30 23:17:34 +08:00
bridge
6dc0447293 add misfortune 2025-12-30 23:16:10 +08:00
bridge
17ca0cbbce add misfortune 2025-12-30 23:09:29 +08:00
bridge
e1f5e5e92a refactor pack 2025-12-30 22:43:04 +08:00
bridge
a3b8dd99aa refactor pack 2025-12-30 22:32:44 +08:00
bridge
f14ea0b92e refactor llm config 2025-12-30 22:27:27 +08:00
bridge
d55ada7d66 refactor llm config 2025-12-30 22:20:30 +08:00
bridge
f539b21801 add llm config panel 2025-12-30 21:30:09 +08:00
bridge
b8a4850e80 add llm config panel 2025-12-30 21:23:30 +08:00
bridge
5b0bba517a add test connectivity 2025-12-30 20:45:30 +08:00
bridge
b83dffee20 update readme 2025-12-29 23:11:37 +08:00
bridge
7ee83ebca7 support full screen mode 2025-12-29 23:08:45 +08:00
bridge
c53932966b support full screen mode 2025-12-29 23:07:08 +08:00
bridge
853e74630e fix api key bug 2025-12-29 22:56:49 +08:00
bridge
32c6bf1d46 support openai format api 2025-12-29 22:25:26 +08:00
bridge
ca9c0a69af support openai format api 2025-12-29 22:18:18 +08:00
bridge
05c31491c3 refactor llm task modes 2025-12-29 22:09:25 +08:00
bridge
c2cb8098ee update llm 2025-12-29 22:02:44 +08:00
bridge
6a4059280a refactor death 2025-12-29 21:46:26 +08:00
bridge
aef6fe6f74 update readme 2025-12-27 15:24:40 +08:00
bridge
ae28d3a546 remove mp 2025-12-25 01:04:42 +08:00
bridge
67dee208e1 update readme 2025-12-23 23:26:44 +08:00
bridge
1983c36a35 update readme 2025-12-23 23:19:26 +08:00
bridge
6e380f1161 remove mp 2025-12-22 00:30:09 +08:00
bridge
abd349084d update pack 2025-12-21 00:44:10 +08:00
bridge
3cc8e8638e update version 2025-12-21 00:25:38 +08:00
bridge
b225d74ba0 refactor llm 2025-12-20 22:18:59 +08:00
bridge
162ea8efe2 refactor llm 2025-12-20 22:13:26 +08:00
bridge
e8489fcc25 fix bugs 2025-12-20 21:43:18 +08:00
bridge
55a3f3f8cb fix bugs 2025-12-20 21:36:19 +08:00
bridge
198b652993 add event handler auto go down logic 2025-12-20 21:30:54 +08:00
bridge
3c586f936c add event handler auto go down logic 2025-12-20 21:25:57 +08:00
bridge
57c669be47 fix bugs 2025-12-20 21:16:09 +08:00
bridge
8fb81c3473 refactor relation add and cancel 2025-12-20 20:30:30 +08:00
bridge
3d117c2fb2 fix tile region = none bug 2025-12-20 19:26:53 +08:00
bridge
c772edfff0 refactor story teller 2025-12-20 18:18:37 +08:00
bridge
9a681a51f8 refactor prompt template 2025-12-20 18:08:04 +08:00
bridge
3d6e11c428 update readme 2025-12-20 17:55:59 +08:00
bridge
a6db8b8c4f update readme 2025-12-20 17:48:17 +08:00
bridge
14d18e771d update readme 2025-12-20 17:47:18 +08:00
bridge
4cfea7eb9c add more single character given names 2025-12-20 17:28:53 +08:00
bridge
085f3bdaee add relative location for normal regions 2025-12-20 17:20:00 +08:00
bridge
f2812a16ea add pytest 2025-12-20 17:13:53 +08:00
bridge
0890fc18b2 add pytest 2025-12-18 22:08:06 +08:00
bridge
acf7d9dd35 refactor conversation 2025-12-18 21:52:00 +08:00
bridge
3ca5333246 fix save bugs 2025-12-15 00:12:21 +08:00
bridge
2e3c3e51c4 add pytest 2025-12-14 15:19:33 +08:00
bridge
30a10bbb1c add pytest 2025-12-14 15:13:48 +08:00
bridge
6b0bf25699 fix pngs 2025-12-14 14:59:25 +08:00
bridge
864b03b460 fix incorrect prob 2025-12-13 22:44:01 +08:00
bridge
32fc37125c add cultivate desc 2025-12-13 22:21:34 +08:00
bridge
fc668b3711 fix double story bugs 2025-12-13 22:18:39 +08:00
bridge
9ed511aafb add protagonist 2025-12-13 20:48:03 +08:00
bridge
1083ec3db6 add protagonist 2025-12-13 20:35:03 +08:00
bridge
b6bce76c36 update map 2025-12-11 22:28:29 +08:00
bridge
1f45d13214 add new pngs 2025-12-11 22:22:12 +08:00
bridge
231450bd33 fix bug 2025-12-11 00:49:39 +08:00
bridge
af3067477d fix bug 2025-12-11 00:47:40 +08:00
bridge
f6bd854eaf fix bug 2025-12-11 00:43:00 +08:00
bridge
9a16e2aa16 fix bug 2025-12-11 00:40:11 +08:00
bridge
a51f0a0ad2 add occupy action 2025-12-10 22:48:52 +08:00
bridge
5590b83487 add occupy action 2025-12-10 22:34:14 +08:00
bridge
2c69383112 refactor region 2025-12-08 23:15:59 +08:00
bridge
a1b7583f36 refactor world regions 2025-12-08 23:06:50 +08:00
bridge
8124537cff update distance 2025-12-08 22:39:44 +08:00
bridge
303bffe413 decide only one avatar each time 2025-12-08 22:08:53 +08:00
bridge
33cf306e58 update frontend 2025-12-06 17:22:17 +08:00
bridge
3bb993ccfe update cloud 2025-12-06 17:14:02 +08:00
bridge
a76c08db95 update cloud 2025-12-06 17:07:39 +08:00
bridge
bb1137a87d add random tiles 2025-12-06 16:11:46 +08:00
bridge
fb173b1f69 add cloud 2025-12-06 15:55:47 +08:00
bridge
b094032eb2 add cloud 2025-12-06 15:52:28 +08:00
bridge
e04be9f012 add dynamic water 2025-12-06 15:31:15 +08:00
bridge
4c75d647bd add pngs 2025-12-06 15:23:43 +08:00
bridge
ef0ff24783 refactor frontend 2025-12-04 21:33:14 +08:00
bridge
880e83c53e add plant and animal 2025-12-04 21:26:07 +08:00
bridge
bdf78bc3d6 add plant and animal 2025-12-04 21:25:55 +08:00
bridge
06e43f2add update map 2025-12-03 22:41:58 +08:00
bridge
9296cdde79 update map 2025-12-03 22:38:53 +08:00
bridge
a5363a07ad fix bug 2025-12-03 00:10:10 +08:00
bridge
31ab56251b refactor map 2025-12-02 23:00:09 +08:00
bridge
ce7a1a0ca7 manuelly set map 2025-12-02 22:35:04 +08:00
bridge
ee6a6bab51 update map 2025-12-01 21:42:35 +08:00
bridge
950032eb6a update reademe 2025-12-01 21:06:35 +08:00
bridge
7aa8aae55c update names 2025-12-01 20:55:18 +08:00
bridge
39f158bbe8 update death 2025-12-01 02:05:11 +08:00
bridge
f047251c0d add relationship in front 2025-12-01 01:19:36 +08:00
bridge
1aaa4d4094 add relationship in front 2025-12-01 01:16:02 +08:00
bridge
a5d2b192fe update relationship 2025-12-01 01:03:10 +08:00
bridge
21a4666915 update story teller 2025-12-01 00:39:28 +08:00
bridge
36ef26344f fail fast 2025-11-29 22:56:46 +08:00
bridge
b3e62b8c22 fail fast 2025-11-29 22:53:09 +08:00
bridge
26038004ef udpate sect effects 2025-11-29 14:31:50 +08:00
bridge
307bfa7e32 update sect settings 2025-11-29 14:21:15 +08:00
bridge
15fdc2a692 update sect settings 2025-11-29 14:16:45 +08:00
bridge
c4ed8044dd update sects 2025-11-29 13:47:23 +08:00
bridge
d7549d7d32 update celestial phenon 2025-11-29 13:30:06 +08:00
bridge
10dba3c418 update 2025-11-27 23:27:29 +08:00
bridge
0be4d068fb update 2025-11-27 22:53:02 +08:00
bridge
60ae27cc20 update sect 2025-11-27 22:15:40 +08:00
bridge
796f48315f refactor sect in vue 2025-11-27 21:46:42 +08:00
bridge
a1210589b7 update 2025-11-26 21:56:39 +08:00
bridge
3f7bed61fe update 2025-11-26 21:37:05 +08:00
bridge
54cb096bd8 update 2025-11-26 21:32:14 +08:00
bridge
d55717592c update 2025-11-26 21:20:06 +08:00
bridge
06e7ed5e97 add kill and grab 2025-11-26 21:12:47 +08:00
bridge
937e71db85 add kill and grab 2025-11-26 21:09:54 +08:00
bridge
7980fc0705 add battle to death 2025-11-26 19:00:07 +08:00
bridge
6227ebd0e8 add spar 2025-11-26 18:47:29 +08:00
bridge
5fb5d0366a update move to region logic 2025-11-26 16:07:15 +08:00
bridge
75ab17f568 add single choice 2025-11-26 16:01:27 +08:00
bridge
bd0903edfc add single choice 2025-11-26 15:46:53 +08:00
bridge
bb8614407d refactor nickname 2025-11-26 15:22:48 +08:00
bridge
37b51b7650 refactor relationship changes 2025-11-26 15:06:41 +08:00
bridge
e8bf436797 update readme 2025-11-25 22:50:02 +08:00
bridge
6c941c2393 refactor new avatar 2025-11-25 01:12:06 +08:00
bridge
8f3f095c27 refactor new avatars 2025-11-25 01:06:56 +08:00
bridge
ebd4f8be18 add new avatar button and func 2025-11-25 00:17:12 +08:00
bridge
991f9908d6 add offset to multi avatar layer 2025-11-24 23:20:39 +08:00
bridge
9295d71a90 add pngs 2025-11-24 23:02:57 +08:00
bridge
36bac598d6 add pngs 2025-11-24 22:55:41 +08:00
bridge
1215a2edce update talk event 2025-11-24 22:30:49 +08:00
bridge
5dc137837b update 2025-11-22 22:06:28 +08:00
bridge
ecf85da10d update 2025-11-22 21:32:31 +08:00
bridge
73fcdffd86 fix bug 2025-11-22 21:19:21 +08:00
bridge
8303167add fix bug 2025-11-22 21:17:27 +08:00
bridge
c6c56da1b9 fix bug 2025-11-22 21:09:28 +08:00
bridge
befd158c46 fix bug 2025-11-22 20:56:41 +08:00
bridge
9e1c536c07 fix bug 2025-11-22 20:48:51 +08:00
bridge
4d245653a6 change order of events 2025-11-22 20:43:27 +08:00
bridge
0cdcb6f5e1 fix bug 2025-11-22 18:59:59 +08:00
bridge
9634ace682 fix bug 2025-11-22 18:49:15 +08:00
bridge
0c0d4f8240 fix bug 2025-11-22 18:26:56 +08:00
bridge
e7a630b143 make slim pack 2025-11-22 18:05:58 +08:00
bridge
39be21ae26 update config 2025-11-22 17:51:07 +08:00
bridge
c41285603b add celestrial phenon to front 2025-11-22 17:50:12 +08:00
bridge
45faba9990 fix bug 2025-11-22 17:26:54 +08:00
bridge
d7dbe8a0da fix bug 2025-11-22 17:14:36 +08:00
bridge
1c49d27c82 fix bug 2025-11-22 17:07:12 +08:00
bridge
5aaf6abcbb fix bug 2025-11-22 16:56:03 +08:00
bridge
c6d1814263 fix bug 2025-11-22 16:09:40 +08:00
bridge
c25b652fbe fix bug 2025-11-22 15:59:39 +08:00
bridge
a65a23726e refactor 2025-11-22 15:57:59 +08:00
bridge
6a6cc9e1c5 refactor web code 2025-11-22 15:33:56 +08:00
bridge
d4e0fdacf3 refactor web code 2025-11-22 15:32:46 +08:00
bridge
99e4871a5d update web, add clickable parts 2025-11-22 15:07:09 +08:00
bridge
8ae8b50e70 update 2025-11-22 14:28:34 +08:00
bridge
460984e5ab update server 2025-11-22 14:05:56 +08:00
bridge
dfba5fda28 update 2025-11-22 12:29:28 +08:00
bridge
077cb5978f update ai.txt 2025-11-22 01:41:34 +08:00
bridge
fb4d70a8ee update 2025-11-22 01:13:36 +08:00
bridge
522b522024 remove front 2025-11-22 00:50:10 +08:00
bridge
8e0c4beaba update readme 2025-11-22 00:49:42 +08:00
bridge
73a2f1ab5a fix bug 2025-11-22 00:44:10 +08:00
bridge
52d953f565 remove litellm when pack 2025-11-22 00:41:13 +08:00
bridge
85764cfa2e fix pack 2025-11-22 00:10:21 +08:00
bridge
259d4a3794 update pack 2025-11-21 23:58:36 +08:00
bridge
870037d811 update pack 2025-11-21 23:39:54 +08:00
bridge
6ab05edab2 update map 2025-11-21 23:11:35 +08:00
bridge
a234e621b7 add long objective setting func 2025-11-21 22:14:27 +08:00
bridge
327015fdea refactor web 2025-11-21 01:55:56 +08:00
bridge
fcc67199ef refactor web 2025-11-21 01:52:53 +08:00
bridge
c7a8cdd420 refactor web 2025-11-21 01:42:29 +08:00
bridge
41d2103ffc refactor web 2025-11-21 01:38:41 +08:00
bridge
5a51b6638d fix bug 2025-11-20 23:55:22 +08:00
bridge
0713881b71 fix web bugs 2025-11-20 22:55:56 +08:00
bridge
f4f62052ff fix web bugs 2025-11-20 22:24:27 +08:00
bridge
dfe28bd8ba refactor web 2025-11-20 22:19:06 +08:00
bridge
10d571e6bb refactor web 2025-11-20 22:16:27 +08:00
bridge
cdc3322ff0 temp 2025-11-20 01:27:48 +08:00
bridge
bfefb97ea2 temp 2025-11-20 01:21:32 +08:00
bridge
32cb34c173 before adapt to web 2025-11-20 01:02:31 +08:00
bridge
c5e2c2ff6d update 2025-11-20 00:42:40 +08:00
bridge
8e72acee57 fix a bug 2025-11-19 01:50:11 +08:00
bridge
b21e654aea fix a bug 2025-11-19 01:40:20 +08:00
bridge
05dd69b26e fix a bug 2025-11-19 01:32:06 +08:00
bridge
09401c37b7 update 2025-11-19 01:27:28 +08:00
bridge
e7d6ce7879 refactor llm 2025-11-19 01:23:55 +08:00
bridge
c4bc8daddc refactor story teller 2025-11-19 01:13:44 +08:00
bridge
c341a1fddd fix long events calling 2025-11-19 01:06:42 +08:00
bridge
d2cf568154 add long term objective 2025-11-19 00:04:38 +08:00
bridge
8a4e5ddd87 update nickname 2025-11-18 23:21:18 +08:00
bridge
b23e1b68e8 add nickname 2025-11-18 01:24:36 +08:00
bridge
c1963beef2 add nickname 2025-11-18 01:23:43 +08:00
bridge
19f5faabf3 update readme 2025-11-18 00:41:09 +08:00
bridge
307ad405ac add long time memory 2025-11-18 00:39:06 +08:00
bridge
5ae2538d86 refactor color system 2025-11-17 23:24:37 +08:00
bridge
d5e8ad0ac9 change color 2025-11-17 23:14:44 +08:00
bridge
0c55dbcb2a update readme 2025-11-17 21:29:21 +08:00
bridge
82d65ba64a fix bug 2025-11-16 15:54:07 +08:00
bridge
e249babeb2 fix bugs 2025-11-16 15:29:15 +08:00
bridge
cb69c26978 update celestial phenon 2025-11-14 13:07:02 +08:00
bridge
efba680269 update more weapons 2025-11-14 12:54:35 +08:00
bridge
510b6f34cd update more effects 2025-11-14 12:18:59 +08:00
bridge
250fb265ba update readme 2025-11-13 19:09:21 +08:00
bridge
3a8032124f update 2025-11-13 18:57:16 +08:00
bridge
62fa84a809 update celestial phenon 2025-11-13 12:15:08 +08:00
bridge
ec8e4db96f update effects 2025-11-13 11:52:33 +08:00
bridge
7af6757e64 update effects 2025-11-13 11:28:09 +08:00
bridge
f8c4f84c7a update treasure to weapon and auxiliary 2025-11-13 02:19:35 +08:00
bridge
3d60df4dbf update treasure to weapon and auxiliary 2025-11-13 01:54:46 +08:00
bridge
125d7891e5 update treasure to weapon and auxiliary 2025-11-13 01:34:09 +08:00
bridge
e760ba107d update treasure to weapon and auxiliary 2025-11-13 01:16:26 +08:00
bridge
2ded449ade update readme 2025-11-12 01:39:57 +08:00
bridge
2d13c43ec6 add more persona effects 2025-11-12 00:17:07 +08:00
bridge
a20d978921 add more persona effects 2025-11-11 23:57:46 +08:00
bridge
24d397d86c update normalized name resolving logic 2025-11-11 23:45:13 +08:00
bridge
1a98678c4c update personas 2025-11-11 23:15:58 +08:00
bridge
9949265748 merge persona and traits & add rarity 2025-11-11 23:07:36 +08:00
bridge
29092efa90 update readme 2025-11-11 22:38:27 +08:00
bridge
9b870475bf add save and load func 2025-11-11 19:48:18 +08:00
bridge
0cb7eacee7 add more fortunes 2025-11-11 18:58:40 +08:00
bridge
ed4174d5ed add flexible front end 2025-11-11 18:42:38 +08:00
bridge
ba536978e7 simplify mutual action logic 2025-11-11 18:19:10 +08:00
bridge
f8d675fccf simplify mutual action logic 2025-11-11 18:16:50 +08:00
bridge
bf2ba0b09f add icon for game 2025-11-11 18:12:45 +08:00
814 changed files with 39513 additions and 6539 deletions

19
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,19 @@
---
name: Bug Report 🐛
about: 报告一个问题 (Report a bug)
title: "[Bug] "
labels: bug
assignees: ''
---
**问题描述**
简要描述你遇到的问题。
**复现步骤**
1.
2.
**环境信息**
- OS:
- 报错信息 (如有):

View File

@@ -0,0 +1,14 @@
---
name: Feature Request 💡
about: 建议一个新功能 (Propose a feature)
title: "[Feat] "
labels: enhancement
assignees: ''
---
**功能描述**
你希望添加什么功能?
**解决什么问题**
这个功能解决了什么痛点?

7
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,7 @@
## Summary
<!-- Brief description of what this PR does -->
## Test Plan
<!-- How was this tested? -->

33
.github/workflows/test.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
name: Tests
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
cache-dependency-glob: "requirements.txt"
- name: Install dependencies
run: |
uv pip install --system -r requirements.txt
uv pip install --system pytest
- name: Run tests
run: pytest -v

6
.gitignore vendored
View File

@@ -143,9 +143,13 @@ logs/
*.tmp
*.temp
# Save files (ignore all files in saves directory but not the directory itself)
assets/saves/*
!assets/saves/README.md
TODO
local_config.yml
台本/
笔记/
tmp/
tmp*/

53
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,53 @@
# 贡献指南 (Contributing Guide)
感谢你对 **Cultivation World Simulator** (修仙模拟器) 感兴趣!欢迎任何形式的贡献,包括修复 Bug、改进文档或开发新功能。
为了保持代码库的健康和风格统一,请在贡献前阅读以下指南。
## 🛠️ 开发环境搭建
具体的安装和启动步骤请参考 [README.md](./README.md) 中的说明。
**项目结构说明:**
- **后端 (Python)**: 位于 `src/` 目录。
- **前端 (Vue 3)**: 位于 `web/` 目录。
## ✅ 测试要求 (必须)
在提交 Pull Request 之前,请务必确保所有测试通过。这是保证代码质量的关键。
**运行后端测试:**
```bash
pytest tests/
```
请确保所有测试用例都能通过PASS。如果你添加了新功能建议同时也添加相应的测试用例。
## 📝 代码规范
我们追求**简洁、优雅、清晰易读**的代码风格。
### Python 后端
- 遵循 PEP 8 风格指南。
- 如果新增了功能请加入对应的pytest测试。
### Vue 前端
- 使用 **TypeScript** 编写逻辑。
- 遵循 Vue 3 Composition API 的最佳实践。
- 组件命名清晰,保持单一职责。
## 🚀 提交 Pull Request (PR)
1. **Fork** 本仓库到你的 GitHub 账户。
2. **Clone** 你的 Fork 版本到本地。
3. 创建一个新的分支进行开发:
```bash
git checkout -b feature/你的功能名称
# 或者
git checkout -b fix/修复的问题
```
4. 提交你的更改 (Commit),请使用清晰的提交信息。
5. 推送 (Push) 到你的远程分支。
6. 在 GitHub 上发起 **Pull Request**
感谢你的贡献!一起打造更好的修仙世界。

View File

@@ -1,92 +1,214 @@
<!-- Language / 语言 -->
<p align="center">
<h3 align="center">
<a href="README.md">🇨🇳 中文</a> · <a href="EN_README.md">🇺🇸 English</a>
</p>
</h3>
<p align="center">— ✦ —</p>
# Cultivation World Simulator
An AI-driven cultivation world simulator that aims to create a truly living, immersive xianxia world.
![GitHub stars](https://img.shields.io/github/stars/4thfever/cultivation-world-simulator?style=social)
[![Bilibili](https://img.shields.io/badge/Bilibili-Watch_Video-FB7299?logo=bilibili)](https://space.bilibili.com/527346837)
![QQ Group](https://img.shields.io/badge/QQ%20Group-1071821688-deepskyblue?logo=tencent-qq&logoColor=white)
## Overview
![Last Commit](https://img.shields.io/github/last-commit/4thfever/cultivation-world-simulator)
![Commit Activity](https://img.shields.io/github/commit-activity/y/4thfever/cultivation-world-simulator)
![Repo Size](https://img.shields.io/github/repo-size/4thfever/cultivation-world-simulator)
[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
Cultivation World Simulator combines traditional game-rule systems with large language models. By first establishing a complete ruleset for the cultivation world, it creates an autonomous, vibrant, immersive virtual world with emergent stories.
![Status](https://img.shields.io/badge/Status-Alpha-tomato)
![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)
![Genre: Xianxia](https://img.shields.io/badge/Genre-Xianxia-red)
![Powered by LLM](https://img.shields.io/badge/Powered%20by-LLM-0077B5)
![AI Agent](https://img.shields.io/badge/AI-Agent-orange)
![OpenAI Compatible](https://img.shields.io/badge/OpenAI%20API-Compatible-412991)
Core idea: **Build a credible rule-based world model first, then plug in AI to bring it to life.**
![Python](https://img.shields.io/badge/Python-3.10%2B-blue?style=flat&logo=python&logoColor=white)
![FastAPI](https://img.shields.io/badge/FastAPI-005571?style=flat&logo=fastapi&logoColor=white)
![Vue](https://img.shields.io/badge/Vue.js-3.x-4FC08D?style=flat&logo=vuedotjs&logoColor=white)
![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=flat&logo=typescript&logoColor=white)
![Vite](https://img.shields.io/badge/vite-%23646CFF.svg?style=flat&logo=vite&logoColor=white)
![PixiJS](https://img.shields.io/badge/PixiJS-E72264?style=flat&logo=pixijs&logoColor=white)
### Tech Stack
<p align="center">
<img src="assets/screenshot.gif" alt="Game Demo" width="100%">
</p>
- **Frontend Rendering**: pygame (Web support in the future)
- **Simulation Engine**: custom event-driven simulator
- **World Model**: rule-based deterministic systems
- **AI Integration**: LLM-generated actions, decisions, micro-stories
> **An AI-driven cultivation world simulator that aims to create a truly living, immersive xianxia world.**
## Background
## 📖 Introduction
I have been a long-time reader of xianxia novels, from classics to modern works. As a game AI practitioner, I believe todays LLM capabilities are sufficient to support a xianxia-style world simulation.
This is an **AI-driven open-world cultivation simulator**.
However, LLM-only NPC decision/dialogue is not enough. A credible rule system must ground the world as the “world model”, and then AI makes it vivid.
Unlike traditional RPGs where you play a specific character, here **you play as the "Heavenly Dao" (God)**.
You don't need to personally fight monsters or level up. Instead, you observe all living beings from a god's perspective. In an open world woven together by rules and AI, you witness the rise and fall of sects and the emergence of prodigies. You can quietly watch the world change, or bring down tribulations and alter minds, subtly intervening in the world's progress.
I aim to create a pure, joyful, direct, living sense of immersion. Not a mere marketing demo, nor purely academic like “Stanford Town”, but a world that players can actually feel and inhabit.
### ✨ Core Highlights
If you like this project, consider starring it~ You can also watch intro videos for this project on my [Bilibili account](https://space.bilibili.com/527346837).
- 👁️ **Play as "Heavenly Dao" (God Perspective)**: You are not a cultivator, but the **Heavenly Dao** controlling the world's rules. Observe the myriad forms of life and experience their joys and sorrows.
- 🤖 **Fully AI-Driven**: Every NPC is independently driven by LLMs, with unique personalities, memories, relationships, and behavioral logic. They make decisions based on the current situation, have love and hate, form factions, and even defy the heavens to change their fate.
- 🌏 **Rules as the Cornerstone**: The world runs on a rigorous numerical system including spiritual roots, realms, cultivation methods, and lifespans. AI imagination is constrained within a reasonable cultivation logic framework, ensuring the world is authentic and credible.
- 🦋 **Emergent Storytelling**: Even the developer doesn't know what will happen next. There is no preset script, only world evolution woven from countless causes and effects. Sect wars, righteous vs. demonic conflicts, the fall of geniuses—all are deduced autonomously by the world's logic.
![Screenshot](assets/screenshot.png)
<table border="0">
<tr>
<td width="33%" valign="top">
<h4 align="center">Character Panel</h4>
<img src="assets/角色.png" width="100%" />
<br/><br/>
<h4 align="center">Personality Traits</h4>
<img src="assets/特质.png" width="100%" />
</td>
<td width="33%" valign="top">
<h4 align="center">Sect System</h4>
<img src="assets/宗门.png" width="100%" />
<br/><br/>
<h4 align="center">Life Experiences</h4>
<img src="assets/经历.png" width="100%" />
</td>
<td width="33%" valign="top">
<h4 align="center">Independent Thinking</h4>
<img src="assets/思考.png" width="100%" />
<br/><br/>
<h4 align="center">Short/Long Term Goals</h4>
<img src="assets/目标.png" width="100%" />
<br/><br/>
<h4 align="center">Nicknames</h4>
<img src="assets/绰号.png" width="100%" />
</td>
</tr>
</table>
## Development Progress
### 💭 Why make this?
The worlds in cultivation novels are fascinating, but readers can only ever observe a corner of them.
Cultivation games are either completely scripted or rely on simple state machines designed by humans, often resulting in forced and unintelligent behaviors.
With the advent of Large Language Models, the goal of making "every character alive" seems reachable.
I hope to create a pure, joyful, direct, and living sense of immersion in a cultivation world. Not a pure marketing tool for some game company, nor pure research like "Stanford Town", but an actual world that provides players with real immersion.
## 📞 Contact
If you have any questions or suggestions, feel free to open an Issue or Pull Request.
You're also welcome to leave a message on my [Bilibili account](https://space.bilibili.com/527346837)!
You can also join the QQ group for discussion: 1071821688. Verification answer: 肥桥今天吃什么
## 🚀 Usage
### ⚙️ Run Steps
1. Clone the repo:
```bash
git clone https://github.com/your-username/cultivation-world-simulator.git
cd cultivation-world-simulator
```
2. Install dependencies:
```bash
# Backend dependencies
pip install -r requirements.txt
# Frontend dependencies (Node.js environment required)
cd web && npm install
```
3. Configure LLM:
Edit `static/config.yml`:
```yaml
llm:
key: "your-api-key-here" # your api key
base_url: "https://api.xxx.com" # API addr
model_name: "normal_model_name"
fast_model_name: "fast_model_name"
```
Supports all API providers compatible with OpenAI interface format (e.g., Qwen, DeepSeek, SiliconFlow, OpenRouter, etc.)
You can also configure LLM parameters directly in the frontend:
<img src="assets/llm_config.png" alt="Frontend LLM Config" width="100%">
4. Run:
```bash
# Start service (Recommended dev mode, automatically starts frontend)
python src/server/main.py --dev
```
The browser will automatically open the web frontend.
## 📊 Project Status
![Repobeats analytics](https://repobeats.axiom.co/api/embed/91667dce0fca651a7427022b2d819d20dd17c5e3.svg "Repobeats analytics image")
## ⭐ Star History
If you find this project interesting, please give us a Star ⭐! It will motivate us to keep improving and adding new features.
<div align="center">
<a href="https://star-history.com/#4thfever/cultivation-world-simulator&Date">
<img src="https://api.star-history.com/svg?repos=4thfever/cultivation-world-simulator&type=Date" alt="Star History Chart" width="600">
</a>
</div>
## 👥 Contributors
- Aku, for world design & discussion
- [@xzhseh](https://github.com/xzhseh), contributed code
## 🙏 Acknowledgments
- Referenced some UI elements from ailifeengine
## 📋 Development Progress
### 🏗️ Foundation
- ✅ World map basics
- ✅ World map basics, time, event system
- ✅ Diverse terrain types (plain, mountain, forest, desert, water, etc.)
-Time system
- ✅ Frontend UI
-Web-based frontend interface
- ✅ Simulation framework
-Project documentation
- ✅ Config system
-Configuration files
- ✅ Standalone release (packaged exe)
- [ ] Menu bar (in progress)
- [ ] Web frontend (later)
- [ ] ECS parallel toolkit (later)
- [ ] Player-configurable prompts (later)
- Menu bar & Save & Load
- ✅ Flexible custom LLM interface
- ✅ Support macOS
- [ ] Support multi-language localization
- [ ] Game settings panel at startup
### 🗺️ World System
- ✅ Basic tile mechanics
- ✅ Normal, cultivate, city, sect regions
- ✅ Same-tile NPC interactions
- ✅ Qi distribution and yields
- [ ] Dynamic worldview, map, history, sect, and notable figure generation
- ✅ World event
### 👤 Character System
- ✅ Core attributes
- ✅ Cultivation realms
- ✅ Spiritual roots
- ✅ Basic movement actions
- ✅ Personality
- Trait & Personality
- ✅ Breakthrough system
- ✅ Relationships
-Perception radius
-Buff system: buffs/debuffs
-Artifacts
- [ ] Character compatibility
- [ ] Special abilities
- [ ] Epithets/nicknames
- [ ] Combat-related
- [ ] Attribute points allocation
- [ ] Skill system (techniques)
- [ ] Equipment system
- [ ] Skill learning
- [ ] Learnable skills
- [ ] Personal techniques (flexible integration)
- [ ] Life professions (alchemy, formations, farming, forging, etc., with tailored prompts and info space)
- [ ] Mortals support
-Interaction range
-Effect system: buffs/debuffs
-Techniques
- ✅ Combat equipment & auxiliary equipment
- ✅ Elixir
- ✅ Short/Long term memory
- ✅ Character's short and long term objectives, supporting player active setting
- ✅ Avatar nicknames
- [ ] Life Skills
- ✅ Forging
- ✅ Refine
- [ ] Planting
- [ ] Taming
- [ ] Evolving skills
- [ ] Mortals
- [ ] Prodigies (stronger abilities and AI)
### 🏛️ Organizations
- [ ] Sect system
- ✅ Settings, techniques, healing, base, styles
- ✅ Special sect actions: Hehuan Sect (dual cultivation), Hundred Beasts Sect (catch spirit animal)
- [ ] sect will AI, tasks, recruiting
- [ ] Sect tiers: different titles, abilities, actions
- ✅ Special sect actions: Hehuan Sect (dual cultivation), Hundred Beasts Sect (beast taming)
- ✅ Sect tiers
- [ ] Sect will AI
- [ ] Sect tasks
- [ ] Clans
- [ ] Court/Empire (TBD)
- [ ] Inter-organization relations
@@ -94,36 +216,34 @@ If you like this project, consider starring it~ You can also watch intro videos
### ⚡ Action System
- ✅ Basic movement
- ✅ Action execution framework
- ✅ Defined actions (rule-complete)
- ✅ Defined actions
- ✅ Long-duration actions and settlement
- ✅ Multi-month actions (cultivate, breakthrough, play, etc.)
- ✅ Auto-settlement upon completion
- ✅ Multiplayer actions: initiator + responder flow
- ✅ LLM actions that affect relationships
- ✅ Systematic action registration and runtime logic
- [ ] Richer actions
### 🎭 Event System
- ✅ Heaven-earth Qi fluctuations
- [ ] World-scale events:
- [ ] Auctions
- [ ] Secret realm exploration
- [ ] Martial tournaments
- [ ] Sect grand competition
- [ ] Sudden events
- [ ] Treasure/cave emergence
- [ ] Novelized/CG/film-style presentations
- [ ] Natural events:
- [ ] Natural disasters
- [ ] Beast tides
### ⚔️ Combat
- [ ] Combat design (roots influence skills and styles)
- [ ] Advantages and counters
- ✅ Win-rate estimation (simple)
- ✅ Advantages and counters
- ✅ Win-rate estimation system
### 🎒 Items
- ✅ Basic items and spirit stones
- [ ] Trading mechanics
- [ ] Economy system
- Trading mechanics
### 🌿 Ecology
- ✅ Animals and plants
@@ -143,64 +263,27 @@ If you like this project, consider starring it~ You can also watch intro videos
- ✅ Battle micro-theaters
- ✅ Dialogue micro-theaters
- ✅ Multiple writing styles
- [ ] NPC observation space design
- [ ] One-off choices (e.g., switch techniques or not)
- [ ] Long-term memories / unforgettable memories
- ✅ One-off choices (e.g., switch techniques or not)
### 🏛️ World Lore
- [ ] Lore framework
- [ ] Worldbuilding
- [ ] Ancient history generation
- ✅ Inject basic world knowledge
- ✅ User input history, dynamic generation of techniques, equipment, sects, and region info
### Specials
### Specials
- ✅ Fortuitous encounters
- [ ] Paths/Daos
- ✅ Tribulations & Heart devils
- [ ] Possession & Rebirth
- [ ] Opportunities & Karma
- [ ] Divination & Prophecy
- [ ] Male appearance female traits & Female appearance male traits
- [ ] Character Secrets & Two-faced
- [ ] Ascension to Upper Realm
- [ ] Formations
- [ ] Opportunities
- [ ] Tribulations & Heart devils
- [ ] Flexible world rules
- [ ] Divination & Omens
- [ ] Male-female traits inversion
## Usage
### Run Steps
1. Clone the repo:
```bash
git clone https://github.com/your-username/cultivation-world-simulator.git
cd cultivation-world-simulator
```
2. Install dependencies:
```bash
pip install -r requirements.txt
```
3. Configure LLM:
Edit `static/config.yml`:
```yaml
llm:
model_name: "qwen-plus" # or another model supported by LiteLLM
key: "your-api-key-here" # your API key
base_url: "https://dashscope.aliyuncs.com/compatible-mode/v1"
```
For supported models, refer to [litellm documentation](https://docs.litellm.ai/docs/providers)
4. Run the simulator:
```bash
python -m src.run.run
```
## Contributors
- Aku, for world design & discussion
## License
This project is licensed as specified in the [LICENSE](LICENSE) file.
## Contact
If you have any questions or suggestions, feel free to open an Issue or Pull Request.
You're also welcome to leave a message on my [Bilibili account](https://space.bilibili.com/527346837)!
- [ ] Paths/Daos
- [ ] World Secrets & World Laws (Flexible customization)
- [ ] Gu Refining
- [ ] World-ending Crisis
### 🔭 Long-term
- [ ] Novelization/imagery/video for history and events
- [ ] Avatar calling MCP tools on their own

309
README.md
View File

@@ -1,86 +1,215 @@
<!-- 语言 / Language -->
<p align="center">
<h3 align="center">
<a href="README.md">🇨🇳 中文</a> · <a href="EN_README.md">🇺🇸 English</a>
</p>
</h3>
<p align="center">— ✦ —</p>
# 修仙世界模拟器 (Cultivation World Simulator)
一个AI驱动的修仙世界模拟器旨在创造一个真正活着的、有沉浸感的仙侠世界。
![GitHub stars](https://img.shields.io/github/stars/4thfever/cultivation-world-simulator?style=social)
[![Bilibili](https://img.shields.io/badge/Bilibili-%E6%9F%A5%E7%9C%8B%E8%A7%86%E9%A2%91-FB7299?logo=bilibili)](https://space.bilibili.com/527346837)
![QQ Group](https://img.shields.io/badge/QQ%E7%BE%A4-1071821688-deepskyblue?logo=tencent-qq&logoColor=white)
## 简介
![Last Commit](https://img.shields.io/github/last-commit/4thfever/cultivation-world-simulator)
![Commit Activity](https://img.shields.io/github/commit-activity/y/4thfever/cultivation-world-simulator)
![Repo Size](https://img.shields.io/github/repo-size/4thfever/cultivation-world-simulator)
[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
修仙世界模拟器是一个结合传统游戏规则和大语言模型的模拟器。通过建立完整的修仙世界规则,创造一个可以自主运行、充满生机、有沉浸感和涌现式剧情的虚拟修仙世界。
![Status](https://img.shields.io/badge/Status-Alpha-tomato)
![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)
![Genre: Xianxia](https://img.shields.io/badge/Genre-Xianxia-red)
![Powered by LLM](https://img.shields.io/badge/Powered%20by-LLM-0077B5)
![AI Agent](https://img.shields.io/badge/AI-Agent-orange)
![OpenAI Compatible](https://img.shields.io/badge/OpenAI%20API-Compatible-412991)
项目的核心理念是:**先建立可信的规则体系作为"世界模型"基础再接入AI使世界生动起来**。
![Python](https://img.shields.io/badge/Python-3.10%2B-blue?style=flat&logo=python&logoColor=white)
![FastAPI](https://img.shields.io/badge/FastAPI-005571?style=flat&logo=fastapi&logoColor=white)
![Vue](https://img.shields.io/badge/Vue.js-3.x-4FC08D?style=flat&logo=vuedotjs&logoColor=white)
![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=flat&logo=typescript&logoColor=white)
![Vite](https://img.shields.io/badge/vite-%23646CFF.svg?style=flat&logo=vite&logoColor=white)
![PixiJS](https://img.shields.io/badge/PixiJS-E72264?style=flat&logo=pixijs&logoColor=white)
### 技术架构
- **前端显示**: pygame (未来可能支持Web)
- **模拟引擎**: 自研事件驱动模拟器
- **世界模型**: 基于规则的确定性系统
- **AI集成**: LLM接口生成动作、决策、小剧场
<p align="center">
<img src="assets/screenshot.gif" alt="游戏演示" width="100%">
</p>
## 项目背景
> **一个AI驱动的修仙世界模拟器旨在创造一个真正活着的、有沉浸感的仙侠世界。**
从小一直是修仙网文的读者,从最早的蜀山仙侠传,到比较新的赤心巡天,修仙网文陪伴了我非常多的时间。
## 📖 简介
作为游戏AI行业的从业者对LLM这两年的进步感触很深。我认为现在的LLM智能水平已经足够支持起来一些仙侠风格的世界模拟了
这是一个 **AI 驱动的开放世界修仙模拟器**
但是纯粹只有LLM为NPC提供决策和对话能力是不够的。首先要有可信的规则打底作为修仙世界的"世界模型"。之后才是接入LLM使其生动起来
不同于传统的 RPG 扮演某个角色,在这里,**你将扮演“天道”(上帝)**
你不需要亲自打怪升级,而是以上帝视角观察众生,在规则与 AI 共同编织的开放世界中,见证门派兴衰与天骄崛起。你可以静观沧海桑田,也可以降下天劫或魔改心灵,微妙地干预世界进程。
我希望能够创造出纯粹的、快乐的、直接的、活着的修仙世界的沉浸感。不是像一些游戏公司的纯粹宣传工具,也不是像斯坦福小镇那样的纯粹研究,而是能给玩家提供真实代入感和沉浸感的实际世界。
### ✨ 核心亮点
欢迎大家提出意见或者建议喜欢的话可以点个star~也可以去[我的B站账号](https://space.bilibili.com/527346837)观看本项目的介绍视频
- 👁️ **扮演“天道” (上帝视角)**:你不是修士,而是掌控世界规则的**天道**。观察众生百态,体味苦辣酸甜
- 🤖 **全员 AI 驱动**:每个 NPC 都独立基于LLM驱动都有独立的性格、记忆、人际关系和行为逻辑。他们会根据即时局势做出决策会有爱恨情仇会结党营私甚至会逆天改命。
- 🌏 **规则作为基石**世界基于灵根、境界、功法、寿元等严谨的数值体系运行。AI 的想象力被限制在合理的修仙逻辑框架内,确保世界真实可信。
- 🦋 **涌现式剧情**:开发者也不知道下一秒会发生什么。没有预设剧本,只有无数因果交织出的世界演变。宗门大战、正魔之争、天骄陨落,皆由世界逻辑自主推演。
![游戏截图](assets/screenshot.png)
<table border="0">
<tr>
<td width="33%" valign="top">
<h4 align="center">宗门体系</h4>
<img src="assets/screenshots/宗门.png" width="100%" />
<br/><br/>
<h4 align="center">城市区域</h4>
<img src="assets/screenshots/城市.png" width="100%" />
<br/><br/>
<h4 align="center">生平经历</h4>
<img src="assets/screenshots/经历.png" width="100%" />
</td>
<td width="33%" valign="top">
<h4 align="center">角色面板</h4>
<img src="assets/screenshots/角色.png" width="100%" />
<br/><br/>
<h4 align="center">性格特质</h4>
<img src="assets/screenshots/特质.png" width="100%" />
<br/><br/>
<h4 align="center">自主思考</h4>
<img src="assets/screenshots/思考.png" width="100%" />
<br/><br/>
<h4 align="center">江湖绰号</h4>
<img src="assets/screenshots/绰号.png" width="100%" />
</td>
<td width="33%" valign="top">
<h4 align="center">洞府探秘</h4>
<img src="assets/screenshots/洞府.png" width="100%" />
<br/><br/>
<h4 align="center">长短期目标</h4>
<img src="assets/screenshots/目标.png" width="100%" />
<br/><br/>
<h4 align="center">丹药/法宝/武器</h4>
<img src="assets/screenshots/丹药.png" width="100%" />
<img src="assets/screenshots/法宝.png" width="100%" />
<img src="assets/screenshots/武器.png" width="100%" />
</td>
</tr>
</table>
## 功能开发进度
### 💭 为什么要做这个?
修仙网文中的世界很精彩,但读者永远只能观察到一隅。
修仙品类游戏要么是完全的预设剧本,要么依靠人工设计的简单规则状态机,有许许多多牵强和降智的表现。
在大语言模型出现后,让“每一个角色都是鲜活的”的目标变得似乎可以触达了。
希望能够创造出纯粹的、快乐的、直接的、活着的修仙世界的沉浸感。不是像一些游戏公司的纯粹宣传工具,也不是像斯坦福小镇那样的纯粹研究,而是能给玩家提供真实代入感和沉浸感的实际世界。
## 📞 联系方式
如果您对项目有任何问题或建议,欢迎提交 Issue 或 Pull Request。
欢迎给我的[B站账号](https://space.bilibili.com/527346837)留言!
也可以加入QQ群进行讨论1071821688。进群问题的答案肥桥今天吃什么
## 🚀 使用方法
### ⚙️ 运行步骤
1. 克隆项目到本地:
```bash
git clone https://github.com/your-username/cultivation-world-simulator.git
cd cultivation-world-simulator
```
2. 安装依赖:
```bash
# 后端依赖
pip install -r requirements.txt
# 前端依赖 (需Node.js环境)
cd web && npm install
```
3. 配置LLM
在 `static/config.yml` 中配置LLM参数OpenAI格式
```yaml
llm:
key: "your-api-key-here" # 你的API密钥
base_url: "https://api.xxx.com" # API地址
model_name: "normal_model_name" # 智能模型名称
fast_model_name: "fast_model_name" # 快速模型名称
```
也支持在前端直接配入LLM参数
<img src="assets/llm_config.png" alt="前端LLM配置" width="100%">
4. 运行:
```bash
# 启动服务 (推荐开发模式,会自动启动前端)
python src/server/main.py --dev
```
浏览器会自动打开网页前端。
## 📊 项目状态
![Repobeats analytics](https://repobeats.axiom.co/api/embed/91667dce0fca651a7427022b2d819d20dd17c5e3.svg "Repobeats analytics image")
## ⭐ Star History
如果你觉得这个项目有趣,请给我们一个 Star ⭐!这将激励我们持续改进和添加新功能。
<div align="center">
<a href="https://star-history.com/#4thfever/cultivation-world-simulator&Date">
<img src="https://api.star-history.com/svg?repos=4thfever/cultivation-world-simulator&type=Date" alt="Star History Chart" width="600">
</a>
</div>
## 👥 贡献者
* Aku, 世界观\玩法设计与讨论
* [@xzhseh](https://github.com/xzhseh), 贡献代码
## 🙏 致谢
- 参考了ai life engine部分ui
## 📋 功能开发进度
### 🏗️ 基础系统
- ✅ 基础世界地图系统
- ✅ 基础世界地图、时间、事件系统
- ✅ 多样化地形类型(平原、山脉、森林、沙漠、水域等)
-时间系统
- ✅ 前端显示界面
-基于Web前端显示界面
- ✅ 基础模拟器框架
-项目文档
-配置文件系统
-单独release打包好的exe文件
- [ ] 菜单栏(施工中)
- [ ] Web前端支持后期考虑
- [ ] ECS并行工具后期考虑
- [ ] 玩家自定义prompt后期考虑
-配置文件
-release 一键即玩的exe
-菜单栏 & 存档 & 读档
- ✅ 灵活自定义LLM接口
- ✅ 支持mac os
- [ ] 支持多语言本地化
- [ ] 开始游戏时的游戏设定栏
### 🗺️ 世界系统
- ✅ 基础tile地块系统
- ✅ 基础区域、修行区域、城市区域、宗门区域
- ✅ 同地块NPC交互
- ✅ 灵气分布与产出设计
- [ ] 动态世界观设定、地图、历史、宗门、名人生成
- ✅ 世界事件
### 👤 角色系统
- ✅ 角色基础属性系统
- ✅ 修炼境界体系
- ✅ 灵根系统
- ✅ 基础移动动作
- ✅ 角色性格
- ✅ 角色特质与性格
- ✅ 境界突破机制
- ✅ 角色间的相互关系
- ✅ 角色交互范围
- ✅ 角色Buffs系统增益/减益效果
- ✅ 法
- ✅ 角色特质
- [ ] 角色之间的相性
- [ ] 角色绰号
- [ ] 战斗相关
- [ ] 属性点分配
- [ ] 技能系统(功法)
- [ ] 装备系统
- [ ] 技能学习系统:
- [ ] 可学习技能
- [ ] 个人技(灵活融入代码)
- [ ] 生活职业丹药、阵法、种植、铸造etc配合特殊prompt和信息空间
- [ ] 凡人角色支持
- ✅ 角色Effects系统增益/减益效果
-角色功
- ✅ 角色兵器 & 辅助装备
- ✅ 丹药
- ✅ 角色长短期记忆
- ✅ 角色的长短期目标,支持玩家主动设定
- ✅ 角色绰号
- [ ] 生活技能
- ✅ 铸造
- ✅ 炼丹
- [ ] 种植
- [ ] 饲养
- [ ] 技能可升级
- [ ] 凡人系统
- [ ] 天骄系统更强能力更强AI
### 🏛️ 组织系统
@@ -88,49 +217,48 @@
- ✅ 设定、功法、疗伤、驻地、行事风格
- ✅ 宗门特殊动作:合欢宗(双修),百兽宗(御兽)
- ✅ 宗门等阶
- [ ] 宗门意志ai、宗门任务、接引新人
- [ ] 宗门意志ai
- [ ] 宗门任务
- [ ] 世家系统
- [ ] 朝廷系统(不确定)
- [ ] 朝廷系统(定)
- [ ] 组织间关系网络
### ⚡ 动作系统
- ✅ 基础移动动作
- ✅ 动作执行框架
- ✅ 有明确规则的定义动作(Defined Action)
- ✅ 有明确规则的定义动作
- ✅ 长动作执行和结算系统
- ✅ 支持多月份持续的动作(如修炼、突破、游戏等)
- ✅ 动作完成时的自动结算机制
- ✅ 多人动作:动作发起与动作响应
- ✅ 影响人际关系的LLM动作(LLM Action)
- ✅ 影响人际关系的LLM动作
- ✅ 系统性的动作注册与运行逻辑
- [ ] 更丰富的角色动作
### 🎭 事件系统
- ✅ 天地灵气变动
- [ ] 世界范围大事件:
- [ ] 拍卖会
- [ ] 秘境探索
- [ ] 比武大会
- [ ] 宗门大比
- [ ] 突发事件
- [ ] 宝物/洞府出世
- [ ] 突发事件的小说化&CG化&影视化
- [ ] 自然事件:
- [ ] 自然灾害
- [ ] 兽潮
### ⚔️ 战斗系统
- [ ] 战斗方式设计(灵根影响技能与战斗风格)
- [ ] 优劣互克关系
- ✅ 胜率计算系统(简单)
- ✅ 优劣互克关系
- ✅ 胜率计算系统
### 🎒 物品系统
- ✅ 基础物品、灵石框架
- [ ] 物品交易机制
- [ ] 经济系统
- 物品交易机制
### 🌿 生态系统
- ✅ 动植物
- ✅ 狩猎、采集、材料系统
- [ ] 魔兽系统
- [ ] 魔兽
### 🤖 AI增强系统
- ✅ LLM接口集成
@@ -145,62 +273,27 @@
- ✅ 战斗小剧场
- ✅ 对话小剧场
- ✅ 小剧场不同文字风格
- [ ] NPC观测空间设计
- [ ] 一次性选择(如是否要切换功法)
- [ ] 长期记忆/刻骨铭心的记忆
- ✅ 一次性选择(如是否要切换功法)
### 🏛️ 世界背景系统
- [ ] 背景故事框架
- [ ] 世界观生成
- [ ] 上古历史生成
- ✅ 注入基础世界知识
- ✅ 用户输入历史,动态生成功法、装备、宗门、区域信息
### 特殊
### 特殊
- ✅ 奇遇
- [ ] 道途
- ✅ 天劫 & 心魔
- [ ] 夺舍 & 重生
- [ ] 阵法
- [ ] 机缘
- [ ] 天劫 & 心魔
- [ ] 可灵活自定义的世界法则
- [ ] 机缘 & 因果
- [ ] 占卜 & 谶纬
- [ ] 男生女相 & 女生男相
- [ ] 角色隐秘 & 双面人
- [ ] 飞升上界
- [ ] 阵法
- [ ] 道途
- [ ] 世界秘密 & 世界法则 (可灵活自定义)
- [ ] 炼蛊
- [ ] 灭世危机
## 使用方法
### 运行步骤
1. 克隆项目到本地:
```bash
git clone https://github.com/your-username/cultivation-world-simulator.git
cd cultivation-world-simulator
```
2. 安装依赖:
```bash
pip install -r requirements.txt
```
3. 配置LLM
在 `static/config.yml` 中配置LLM参数
```yaml
llm:
model_name: "qwen-plus" # 或其他litellm支持的模型名称
key: "your-api-key-here" # 你的API密钥
base_url: "https://dashscope.aliyuncs.com/compatible-mode/v1"
```
具体支持的模型请参考 [litellm文档](https://docs.litellm.ai/docs/providers)
4. 运行模拟器:
```bash
python -m src.run.run
```
## 贡献者
- Aku, 世界观\玩法设计与讨论
## 许可证
本项目采用 [LICENSE](LICENSE) 文件中指定的许可证。
## 联系方式
如果您对项目有任何问题或建议,欢迎提交 Issue 或 Pull Request。
也欢迎给我的[B站账号](https://space.bilibili.com/527346837)留言!
### 🔭 远期展望
- [ ] 历史/事件的小说化&图片化&视频化
- [ ] MCP agent化修士自行调用工具

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 335 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

BIN
assets/cities/揽月城.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

BIN
assets/cities/沙月城.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

BIN
assets/cities/沧澜城.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

BIN
assets/cities/翠林城.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

BIN
assets/cities/青云城.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

BIN
assets/clouds/cloud_0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
assets/clouds/cloud_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
assets/clouds/cloud_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
assets/clouds/cloud_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
assets/clouds/cloud_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
assets/clouds/cloud_5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
assets/clouds/cloud_6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
assets/clouds/cloud_7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
assets/clouds/cloud_8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 KiB

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 KiB

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 228 KiB

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 KiB

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 KiB

After

Width:  |  Height:  |  Size: 168 KiB

BIN
assets/females/16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

BIN
assets/females/17.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

BIN
assets/females/18.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 KiB

BIN
assets/females/19.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 KiB

After

Width:  |  Height:  |  Size: 191 KiB

BIN
assets/females/20.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

BIN
assets/females/21.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

BIN
assets/females/22.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

BIN
assets/females/23.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

BIN
assets/females/24.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

BIN
assets/females/25.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

BIN
assets/females/26.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

BIN
assets/females/27.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

BIN
assets/females/28.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

BIN
assets/females/29.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

After

Width:  |  Height:  |  Size: 202 KiB

BIN
assets/females/30.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

BIN
assets/females/31.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

BIN
assets/females/32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

BIN
assets/females/33.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

BIN
assets/females/34.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

BIN
assets/females/35.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

BIN
assets/females/36.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

BIN
assets/females/37.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

BIN
assets/females/38.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

BIN
assets/females/39.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

After

Width:  |  Height:  |  Size: 202 KiB

BIN
assets/females/40.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

BIN
assets/females/41.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 KiB

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 KiB

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 KiB

After

Width:  |  Height:  |  Size: 252 KiB

Some files were not shown because too many files have changed in this diff Show More