A modded version of HollowPS with 5 custom levels
Find a file
2025-06-10 01:04:52 +00:00
assets Replacement for EventGraphCollection with modifications for new levels 2025-06-10 01:04:52 +00:00
common Proper character HP in battle, fix some ordering issues 2024-05-25 13:07:56 +03:00
gameserver Added character parameters and manual combo switch to the config file 2025-06-10 00:55:36 +00:00
protocol Proper AccountUID/PlayerUID implementation, RpcCreatePlayer 2024-05-31 20:31:22 +03:00
qwer Proper character HP in battle, fix some ordering issues 2024-05-25 13:07:56 +03:00
sdkserver Use recently stabilized std::sync::LazyLock and remove lazy_static 2024-05-27 23:19:03 +03:00
.gitignore Server configuration rework 2024-05-24 19:45:45 +03:00
Cargo.toml Use parking_lot::RwLock instead of tokio::sync::RwLock 2024-06-02 22:27:43 +03:00
LICENSE Initial commit 2024-03-19 01:42:32 +00:00
README.md Update README.md 2025-06-09 22:50:46 +00:00

HollowPS mod by inkursion

A Server emulator for closed beta test 1 version (cbt1) of the game Zenless Zone Zero with 5 custom levels and a few new features

It's just a glimpse at how custom levels for TV mode can be built for ZZZ private servers.

I'm nowhere close Xeon's skill level, so my code is held together by dact-tape and "if" statements and definitely isn't accurate to cbt1, but I wanted this version of the game to have a bit more content to play and it was pretty fun to make.

Changes:

  • New levels can be added and quests actually will send you to different grid maps instead of every HDD quest sending you to the same map (you need to specify which quest links to which map if you want to add new ones in "../gameserver/src/net/handlers/world.rs" and the maps themselves are hardcoded into the server in "../gameserver/src/game/manager/hollow_grid.rs" and can be edited there)

  • 5 Custom levels designed by me, sorted by difficulty in the HDD. I wanted them to be non-linear except for 1 which is just a strict time trial(don't get fooled by it being lvl 1, it's the hardest level in the Cretan Hollow). Idk how well I accomplished that tho.

  • Different time of day and weather for every commission. ChessboardID ultimately controls this and some battle encounters have set parameters, but the time of day is left blank for most IDs so it can be changed in "world.rs". (ChessboardIDs with their weather and time of day params can be found in ChessBoardPerformTemplateCollection)

  • Levels can be replayed now without logging out

  • Separate battle lists for every level (again, hardcoded in "hollow_grid.rs" and can be edited there. All of the game's battle Ids can be found in BattleEventConfigTemplateCollection).

  • Character parameters (level, ascension, star rank, talents(proto mindscapes), skill levels) and use of manual chain attacks can now be set in the config file

  • VisibleAtGridAround tiles

  • TV screens in the room light up

Installation

From Source

Requirements

NOTE: Nightly Rust is required to build the project. To install it, first install Rust itself, then run the following command:

rustup toolchain install nightly
rustup default nightly

Building

git clone https://git.xeondev.com/inkursion/HollowPS_Custom_levels.git
cd HollowPS
cargo install --path gameserver
cargo install --path sdkserver

From Pre-built Binaries

Navigate to the Releases page and download the latest release.

Usage

To begin using the server, you need to run both the SDK server and the game server.

If you installed from source, Rust's installer should have added .cargo/bin to your path, so simply run the following:

nap-gameserver
nap-sdkserver

If you installed from pre-built binaries, navigate to the directory where you downloaded the binaries and either a) double-click on the following executable names or b) run the following in a terminal:

./nap-gameserver
./nap-sdkserver

Once you get into the game world, DON'T TOUCH THE SOFA! You will be stuck on a black screen until you restart the game

Configuration

The game server can be configured using a gameserver.json file. Configuration file with default settings will be created in the working directory upon first startup.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change, and why.

Bug Reports

If you find a bug, please open an issue with as much detail as possible. If you can, please include steps to reproduce the bug.

Bad issues such as "This doesn't work" will be closed immediately, be sure to provide exact detailed steps to reproduce your bug. If it's hard to reproduce, try to explain it and write a reproducer as best as you can.