Players' guide on GitHub Pages, built from docs/

A guide site for players (https://ayozetr.github.io/bloodborne_linux/), made with MkDocs Material
from docs/ itself, so the guide and the repository's documents never disagree. A theme of its
own, "Hunter's Dream" (moonlit blue-grey, IM Fell English headings, EB Garamond text, a moon and
mist on the home page), with no artwork or typeface from the game. New pages for players:
getting started, Steam and the Steam Deck, getting a log (Game Mode too) and a FAQ from the
questions asked in issues and on Reddit. A hook points links to files outside docs/ at GitHub.

Online play now starts with Seamless Hunt, the default server, and links read as words instead
of file names. The workflow builds the site (strict) and publishes it when docs/, mkdocs.yml or
site/ change on main. The README and the launcher's About page link to it.
This commit is contained in:
ayozetr committed 2026-10-27 02:27:45 +00:00
1 parent 619826c20b
commit 0e03a5c29e
22 files changed
+554 -25

No files matched your search

+47
View File
@@ -0,0 +1,47 @@
# The players' guide on GitHub Pages: built from docs/ with MkDocs Material (mkdocs.yml) whenever
# the documents or the site's theme change on main.
name: Guide
on:
push:
branches: [main]
paths:
- docs/**
- mkdocs.yml
- site/**
- .github/workflows/guide.yml
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install -r site/requirements.txt
- run: mkdocs build --strict
- uses: actions/configure-pages@v5
- uses: actions/upload-pages-artifact@v3
with:
path: _site
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
+3
View File
@@ -44,3 +44,6 @@ navigation-map*/
atlas-tools/
# Hunter's Atlas's own art (shipped; the launcher converts it for the game)
!tools/hunters-atlas/art/*.png
# The players' guide, built by mkdocs (mkdocs.yml)
_site/
+3
View File
@@ -17,6 +17,9 @@ projects ([credits](docs/CREDITS.md)).
> 1.09, from a retail release ([which ones](docs/COMPATIBILITY.md)). This project is not
> affiliated with Sony Interactive Entertainment or FromSoftware.
**[The players' guide](https://ayozetr.github.io/bloodborne_linux/)**: installing, playing online and
seamless co-op, the Steam Deck, and what to do when something goes wrong.
## Features
- **Multiplayer**: online messages, bloodstains, ghosts, bells and summons, on
+3 -3
View File
@@ -1,18 +1,18 @@
# Credits
Everyone whose work is in this fork, and every project it took something from. Everyone listed
under *People* and *Help and testing* also appears in the launcher's **About** section. Components and their licenses: [BBPORT.md](../BBPORT.md#credits-and-licenses).
under *People* and *Help and testing* also appears in the launcher's **About** section. Components and their licenses: [bbport's notes](../BBPORT.md#credits-and-licenses).
## Projects
| Project | What this fork takes from it |
|---|---|
| [deadinside28/bloodborne_pc](https://github.com/deadinside28/bloodborne_pc) | **bbport**, the native Linux port everything here is built on. Its README is [BBPORT.md](../BBPORT.md). |
| [deadinside28/bloodborne_pc](https://github.com/deadinside28/bloodborne_pc) | **bbport**, the native Linux port everything here is built on. Its README is [here](../BBPORT.md). |
| [Supermedo/bloodborne_pc](https://github.com/Supermedo/bloodborne_pc) | The Windows port: online play, DLSS, the cheats page, Add to Steam, the icon, the direct mouse camera, ultrawide, Quit to Desktop, the keyboard sprint and many fixes. |
| [Awakenchan/LanternEngine](https://github.com/Awakenchan/LanternEngine) (formerly BloodBorneButPc) | Lantern Engine by Awaken (https://github.com/Awakenchan/LanternEngine) (GPL-3.0-or-later): video memory on 4 GB cards, crash and freeze fixes, fewer stutters while areas load, stick options, save import and the version selector. |
| [shadPS4](https://github.com/shadps4-emu/shadPS4) | The renderer and shader recompiler, and the online code. |
| [Wozzardman/shadp2p](https://github.com/Wozzardman/shadp2p) | The network and PSN libraries for online play. |
| [Wozzardman/shadnet-p2p](https://github.com/Wozzardman/shadnet-p2p) | The shadNet server for a group's own co-op server ([SERVER.md](SERVER.md)). |
| [Wozzardman/shadnet-p2p](https://github.com/Wozzardman/shadnet-p2p) | The shadNet server for a group's own co-op server ([hosting your own server](SERVER.md)). |
| [MaskZeus/bbbridge](https://github.com/MaskZeus/bbbridge) | Co-op on The Hunter's Dream's pool ([bbbridge/](../bbbridge/)). |
| [Classmg22/BBSC](https://github.com/Classmg22/BBSC) | Seamless Co-op, by CLS_AMG, with Wozzardman's seamless summon ([bbsc/](../bbsc/)). |
| [fhody125-web/NoDreamForHunter](https://github.com/fhody125-web/NoDreamForHunter) | The base of BBSC's game server. |
+18 -18
View File
@@ -9,6 +9,21 @@ everyone needs the game at version 1.09 and the same pool.
> right after the login ("This shadNet server doesn't accept your shadPS4 build" in the log), and
> the launcher says so. The pools for bbport are Seamless Hunt (the default), The Hunter's Dream's and a server of your own.
## Seamless Hunt
[Seamless Hunt](https://install.seamlesshunt.com) is a community server for Seamless Co-op (BBSC),
where Windows players join with BBSC's package for the Windows port.
1. In the launcher's **Multiplayer → Online** tab, turn on **Play online** and choose **Seamless Hunt**: its
shadNet server, WebAPI and game server come with it.
2. Type a name and a password under **Account** and press **Create** (once). The server wants an
email for each account; the launcher makes one from the name, as Seamless Hunt's own tool does.
3. Turn on BBSC in the **Seamless co-op (BBSC)** group and press **Test** in the **Status** row.
Its bloodstains and death visions crash the game with "Transaction failed", on Windows too: they
are off by default, as in Seamless Hunt's package (**Bloodstains on Seamless Hunt** brings them
back). Messages, ghosts and summon signs are not affected.
## The Hunter's Dream (with bbhost's players)
Choose **The Hunter's Dream (with bbhost players)** in the launcher's **Multiplayer → Online** tab.
@@ -28,24 +43,9 @@ show you.
do not support bbport: report problems here ([issues](https://github.com/ayozetr/bloodborne_linux/issues)),
not to The Hunter's Dream's support.
## Seamless Hunt
[Seamless Hunt](https://install.seamlesshunt.com) is a community server for Seamless Co-op (BBSC),
where Windows players join with BBSC's package for the Windows port.
1. In the launcher's **Multiplayer → Online** tab, turn on **Play online** and choose **Seamless Hunt**: its
shadNet server, WebAPI and game server come with it.
2. Type a name and a password under **Account** and press **Create** (once). The server wants an
email for each account; the launcher makes one from the name, as Seamless Hunt's own tool does.
3. Turn on BBSC in the **Seamless co-op (BBSC)** group and press **Test** in the **Status** row.
Its bloodstains and death visions crash the game with "Transaction failed", on Windows too: they
are off by default, as in Seamless Hunt's package (**Bloodstains on Seamless Hunt** brings them
back). Messages, ghosts and summon signs are not affected.
## Your own server
Its owner creates the account ([SERVER.md](SERVER.md)), or you make it with **Create** under
Its owner creates the account ([hosting your own server](SERVER.md)), or you make it with **Create** under
**Account** when the server lets anyone register.
1. In the launcher's **Multiplayer → Online** tab, turn on **Play online**, choose **Your own server** with
@@ -74,7 +74,7 @@ items and echoes it gets, and enemies get stronger for every guest. It runs insi
normal game.
3. The server decides how much of it works:
- **BBSC's game server** (Seamless Hunt's, which comes with it, or your group's,
[SERVER.md](SERVER.md#seamless-co-op-bbsc)): everything, summons across areas and 5 hunters included. Set it as the
[hosted with it](SERVER.md#seamless-co-op-bbsc)): everything, summons across areas and 5 hunters included. Set it as the
**Game server** of the Online tab.
- **The Hunter's Dream**: the session stays together (deaths, lamps, bosses), but summons are
the normal game's: BBSC turns its own summon changes and the 5 hunters off on public servers.
@@ -114,7 +114,7 @@ the game's log has its warnings (`BBSC:` lines). Not in the Linux build: BBSC's
## Ports
Co-op traffic is UDP, straight between the players' computers. With your own server on
Tailscale ([SERVER.md](SERVER.md)) it goes through Tailscale: turn **UPnP** off and skip this
Tailscale ([hosting your own server](SERVER.md)) it goes through Tailscale: turn **UPnP** off and skip this
section. Otherwise each player has to be reachable from the Internet:
1. **The router.** With **UPnP** on (the default), the game opens its port on the router itself:
+7
View File
@@ -2,6 +2,13 @@
## For players
The same documents, with a few pages written for players, make up the
[players' guide](https://ayozetr.github.io/bloodborne_linux/) (built from this folder: `mkdocs.yml`).
- [getting-started.md](getting-started.md): what you need, the first launch, saves and updates.
- [steam-deck.md](steam-deck.md): Add to Steam, the Steam Deck's Game Mode, Steam Input and the overlay.
- [logs.md](logs.md): getting a log, also from Game Mode, and sending it.
- [faq.md](faq.md): the questions players ask most.
- [COMPATIBILITY.md](COMPATIBILITY.md): which releases of Bloodborne run, and which have been
checked.
- [TROUBLESHOOTING.md](TROUBLESHOOTING.md): common problems and what to do.
+1 -1
View File
@@ -203,4 +203,4 @@ settings).
the server; `tailscale ping <player>` from each side. Everyone needs the game at version 1.09
and the same co-op mode.
See also [ONLINE.md](ONLINE.md) for the bells, passwords and log lines of a summon.
See also [Online play and co-op](ONLINE.md) for the bells, passwords and log lines of a summon.
+3 -3
View File
@@ -12,7 +12,7 @@ The launcher checks the game folder before starting. What it says, and what to d
| bbport needs the 1.09 update merged into the game folder | Copy everything from the dumped 1.09 update into the game folder, replacing files (`eboot.bin` and `sce_sys` too). |
| param.sfo is from 1.09 but eboot.bin is not | Copy `eboot.bin` from the dumped 1.09 update over the old one. |
| This eboot.bin has the 60 fps patch by Lance McDonald applied | Use a clean `eboot.bin` from the 1.09 update. bbport has its own 60 FPS. |
| This is not a retail release of Bloodborne | Alpha tests and other games do not run. See [COMPATIBILITY.md](COMPATIBILITY.md). |
| This is not a retail release of Bloodborne | Alpha tests and other games do not run. See [supported releases](COMPATIBILITY.md). |
| eboot.bin could not be read as a decrypted PS4 executable | Dump the game and the update again. |
| The game files are damaged | The extraction tool broke compressed files (LibOrbisPkg PkgTool on .NET 6 or newer); the game would hang while loading. Extract the game and the update again with a fixed tool. |
@@ -112,9 +112,9 @@ camera can feel heavier: the game's own *Camera speed* setting makes up for it.
Press **Test** in the **Status** row of **Multiplayer → Online**. An error mark on the shadNet server's UDP line means
the server never learns your address, and no summon can connect: check that the server is running
and that its log lists the UDP listener, and that no firewall blocks UDP 31314 on its side
([SERVER.md](SERVER.md)). shadPS4's public server does not accept bbport builds at all: use The
([hosting your own server](SERVER.md)). shadPS4's public server does not accept bbport builds at all: use The
Hunter's Dream, Seamless Hunt or your own server.
## Other online problems
See [ONLINE.md](ONLINE.md): the account, the bells, the ports and the log lines of a summon.
See [Online play and co-op](ONLINE.md): the account, the bells, the ports and the log lines of a summon.
+47
View File
@@ -0,0 +1,47 @@
# FAQ
## Is this an emulator?
No. The game's own code runs directly on the CPU, and its graphics are translated to Vulkan. It is
built on [bbport](https://github.com/deadinside28/bloodborne_pc) by deadinside28.
## Where do I get the game?
From your own PS4: a dump of your copy with update 1.09. No game files are included, and none can
be shared here.
## Can I play with Windows players?
Yes. On Seamless Hunt or The Hunter's Dream, Linux and Windows players play together; for seamless
co-op everyone needs the same BBSC version (0.0.2). [Online play](ONLINE.md).
## Summons take a long time
Some waiting is normal: the game checks for summon signs about every 35 seconds, as the PS4's
servers had it, so a sign can take over half a minute to show up.
## My friend never gets summoned with the Kin Bell
It depends on the server:
- On **Seamless Hunt** (or your own server with BBSC's game server), seamless co-op works fully:
summons across areas and up to 5 hunters.
- On **The Hunter's Dream**, BBSC keeps the session together, but summons are the normal game's:
both hunters must be in the **same area**, the area's boss must still be alive in the host's world,
and your levels must be within range.
[Seamless co-op on each server](ONLINE.md#seamless-co-op-bbsc).
## Do I need to open ports on my router?
No. With seamless co-op (BBSC) on, Seamless Hunt relays players who cannot reach each other
directly, and The Hunter's Dream's bridge relays by itself. Only [your own server](SERVER.md) needs a few ports, through Tailscale.
## How do I get a log on the Steam Deck?
Turn on *Advanced → Developer → Save the log and statistics to a file* once in Desktop Mode; Game
Mode sessions then save theirs too. [Getting a log](logs.md).
## The game updated and my Steam shortcut stopped working
Press **Add to Steam** again in the launcher: it updates the shortcut.
+41
View File
@@ -0,0 +1,41 @@
# Getting started
## What you need
- **Your own dump of Bloodborne with update 1.09**, from your PS4: any retail release (US, Europe,
UK, Japan, Asia, and the editions with The Old Hunters). No game files are included, and other
versions of the game's executable start and then crash. [Which releases work](COMPATIBILITY.md).
- **Linux x86-64** and a GPU with **Vulkan 1.3**: AMD or Intel with Mesa, or NVIDIA with NVIDIA's
driver. The Steam Deck works too.
- About **6 GB of free memory**, 10 GB for 1440p or 4K.
## First launch
1. Download `Bloodborne-bbport-x86_64.AppImage` from the
[latest release](https://github.com/ayozetr/bloodborne_linux/releases/latest).
2. Make it executable (in a file manager: *Properties → Permissions → Allow executing*, or
`chmod +x Bloodborne-bbport-x86_64.AppImage`) and run it.
3. In the launcher, choose your **game folder**: the one with `eboot.bin` in it.
4. Press **Play**.
!!! tip "The first minutes"
The first time, the game builds its shaders as it meets them, so it can stutter for a few
minutes. The next sessions start with them ready.
## Saves, settings and the DLC
- Saves and settings go to `~/.local/share/bbport`.
- **Setup → Saves** exports your saves into a `.zip` and imports them back, also from shadPS4.
- The Game of the Year edition already has *The Old Hunters*. With the base game, put its DLC
folder in **Setup → DLC folder**.
## Updating
The launcher's **About** page says when a new release is out and installs it; it can also go back
to an earlier one. Your saves and settings stay as they are.
## Next steps
- [Play online](ONLINE.md), alone or in seamless co-op.
- [Add the game to Steam](steam-deck.md), or play on the Steam Deck.
- Something wrong? [Troubleshooting](TROUBLESHOOTING.md) and [getting a log](logs.md).
+32
View File
@@ -0,0 +1,32 @@
---
template: home.html
title: Home
hide:
- navigation
- toc
---
# Where to begin
The PlayStation 4 version of *Bloodborne*, running natively on Linux and the Steam Deck: the
game's own code runs on the CPU and its graphics are translated to Vulkan. You need your own dump
of the game with update 1.09; no game files are included.
<div class="hd-cards">
<a class="hd-card" href="getting-started/"><strong>Getting started</strong><span>Your dump, the AppImage and the first launch.</span></a>
<a class="hd-card" href="ONLINE/"><strong>Playing online</strong><span>Seamless Hunt, The Hunter's Dream or your own server, and seamless co-op.</span></a>
<a class="hd-card" href="steam-deck/"><strong>Steam and the Steam Deck</strong><span>Add to Steam, Game Mode, controllers and the Steam overlay.</span></a>
<a class="hd-card" href="TROUBLESHOOTING/"><strong>When something breaks</strong><span>Common problems, and how to send a log.</span></a>
</div>
## What you get
- **Online and co-op**: messages, bloodstains, bells and summons, and **seamless co-op** that
lasts through deaths, lamps and areas, with Linux and Windows players together.
- **Local co-op**: 2 to 4 players on one PC, each with their own controller.
- **Hunter's Atlas**: a fullscreen in-game map with fast travel to the lamps you have found.
- **Frame rate unlocked** or capped at 30, 60 or 90, from **720p to 4K**, and ultrawide screens.
- **FSR 3.1, FSR 4 and DLSS** upscaling.
- **Any controller**, with its own button prompts in the game, and **keyboard and mouse**.
- **Trophies**, **Discord** status and **Add to Steam** in one click.
- An **AppImage** for any distribution and the Steam Deck, which **updates itself**.
+28
View File
@@ -0,0 +1,28 @@
# Getting a log
A log is the first thing needed to fix a problem: it says what the game and the GPU were doing.
## From the launcher
1. Turn on *Advanced → Developer → Save the log and statistics to a file*. It stays on.
2. Play until the problem happens, then close the game.
3. The log is in `~/.local/share/bbport/logs`, named after the time the game started
(`20261026_183438.log`). The launcher's **Log** page shows the last one too.
This also works when the game is started from Steam or from the Steam Deck's Game Mode: turn the
option on once in the launcher, and every session saves its log.
## Sending it
Open an [issue](https://github.com/ayozetr/bloodborne_linux/issues/new/choose) and attach the
`.log` file. It helps a lot to say:
- what happened, and roughly when (an area, a boss, a menu, after a lamp travel);
- your distribution, GPU and driver;
- the upscaler, preset and output resolution;
- for online problems, which server and whether seamless co-op (BBSC) was on, and the other
player's log too if you can.
!!! note "Crashes"
*Advanced → Developer → Crash diagnostics* adds checks that point at what went wrong in some
crashes. The game runs a bit slower with it on: turn it on when asked in an issue.
+37
View File
@@ -0,0 +1,37 @@
# Steam and the Steam Deck
## Add to Steam
**Setup → Game → Add to Steam** puts *Bloodborne* in your Steam library as a non-Steam game. It
starts the game straight away, with the launcher's settings, without opening the launcher. Steam
has to close for it, and the launcher offers to do that.
After updating from an older release, press **Add to Steam** once more so the shortcut points to
the right place.
## On the Steam Deck
1. In Desktop Mode, download the AppImage and set the game up in the launcher, as in
[Getting started](getting-started.md). A resolution of **720p** with an upscaler (FSR) suits the
Deck's screen.
2. Press **Add to Steam**.
3. Back in Game Mode, start *Bloodborne* from your library.
To change a setting later, go back to Desktop Mode and open the launcher: what you change there is
what Game Mode uses.
!!! tip "Logs in Game Mode"
Turn on *Advanced → Developer → Save the log and statistics to a file* once in Desktop Mode:
every session played from Game Mode then saves its log too. [Getting a log](logs.md).
## Controllers and Steam Input
With Steam Input on, the game gets Steam's virtual controller. On a Wayland desktop the game then
opens its window through Xwayland, so Steam's input reaches it. With Steam Input off, the game reads
the controller itself. [More](TROUBLESHOOTING.md#the-controller-does-nothing-when-the-game-is-started-from-steam).
## The Steam overlay
Shift+Tab, Steam's FPS counter and F12 screenshots need **Steam overlay**, under *Add to Steam* in
the launcher (off by default), and the game started from Steam.
[More](TROUBLESHOOTING.md#the-steam-overlay-does-not-open-in-the-game).
+148
View File
@@ -0,0 +1,148 @@
/* The players' guide: "Hunter's Dream" theme over MkDocs Material's dark scheme. Moonlit
blue-grey; IM Fell English for headings and menus, EB Garamond for reading (IM Fell has only
old-style figures: 1 and 0 read as ı and o in versions and values). No artwork or typeface from
the game. */
@import url("https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,500;0,600;1,400&family=IM+Fell+English:ital@0;1&family=IM+Fell+English+SC&family=JetBrains+Mono:wght@400&display=swap");
[data-md-color-scheme="slate"] {
--hd-bg: #0f1218;
--hd-bg-raised: #12161e;
--hd-line: #2a3140;
--hd-text: #d4d9e2;
--hd-muted: #a9b3c4;
--hd-bright: #f2f4f8;
--hd-moon: #e4eaf5;
--hd-blood: #e0a0a0;
--md-default-bg-color: var(--hd-bg);
--md-default-fg-color: var(--hd-text);
--md-default-fg-color--light: var(--hd-muted);
--md-default-fg-color--lighter: #6f7a8c;
--md-default-fg-color--lightest: var(--hd-line);
--md-primary-fg-color: #141924;
--md-primary-fg-color--dark: #1a2030;
--md-primary-fg-color--light: #2a3140;
--md-primary-bg-color: var(--hd-bright);
--md-accent-fg-color: #ffffff;
--md-typeset-a-color: #b9c8e6;
--md-code-bg-color: #0a0d12;
--md-code-fg-color: #c8d3e6;
--md-footer-bg-color: #0b0d12;
--md-footer-bg-color--dark: #08090d;
--md-text-font-family: "EB Garamond", Georgia, serif;
--md-code-font-family: "JetBrains Mono", monospace;
}
body, input { font-family: "EB Garamond", Georgia, serif; font-variant-numeric: lining-nums; }
.md-typeset { font-size: .92rem; line-height: 1.65; }
.md-typeset code, .md-typeset pre { font-family: "JetBrains Mono", monospace; }
/* Headings, the header and the navigation in the small-capitals cut. */
.md-typeset h1, .md-typeset h2, .md-typeset h3, .md-typeset h4,
.md-header__title, .md-nav__title, .md-tabs__link, .md-nav__item--section > .md-nav__link {
font-family: "IM Fell English SC", Georgia, serif;
font-weight: 400;
letter-spacing: .02em;
}
.md-typeset h1 { color: var(--hd-bright); font-family: "IM Fell English", Georgia, serif; }
.md-typeset h2 { color: var(--hd-bright); border-bottom: 1px solid var(--hd-line); padding-bottom: .2em; }
.md-typeset h3 { color: #c4cfe2; }
.md-header { background: rgba(15, 18, 24, .85); backdrop-filter: blur(6px); border-bottom: 1px solid var(--hd-line); box-shadow: none; }
.md-sidebar--primary .md-nav__link--active { color: #fff; }
/* The phone drawer: its repository strip and title in the theme's colours, not Material's blue. */
.md-nav__source { background-color: #1a2030; }
.md-nav--primary .md-nav__title[for="__drawer"] { background-color: #141924; }
.md-sidebar--primary .md-nav__link--active::before { content: "✦ "; color: #9fb0d0; }
.md-nav__link:hover, .md-typeset a:hover { color: #fff; }
/* Admonitions: quiet frames instead of Material's bright ones. */
.md-typeset .admonition, .md-typeset details {
background: rgba(160, 180, 215, .06);
border: 1px solid #2f3a4f !important;
border-radius: 4px;
box-shadow: none;
font-size: .85rem;
}
.md-typeset .admonition-title, .md-typeset summary {
background: transparent !important;
font-family: "IM Fell English SC", Georgia, serif;
color: #c4cfe2;
}
.md-typeset .admonition-title::before, .md-typeset summary::before { background-color: #9fb0d0 !important; }
.md-typeset .warning, .md-typeset .danger { border-color: #5a3a3a !important; background: rgba(170, 80, 80, .08); }
.md-typeset .warning > .admonition-title, .md-typeset .danger > .admonition-title { color: var(--hd-blood); }
.md-typeset .warning > .admonition-title::before, .md-typeset .danger > .admonition-title::before { background-color: var(--hd-blood) !important; }
.md-typeset table:not([class]) { border: 1px solid var(--hd-line); font-size: .8rem; }
/* Reference tables (ENVIRONMENT.md): names whole, and every column wide enough to read. */
.md-typeset table:not([class]) td:first-child code { white-space: nowrap; word-break: normal; }
.md-typeset table:not([class]) td:nth-child(2) { min-width: 6rem; }
.md-typeset table:not([class]) td:nth-child(3) { min-width: 15rem; }
.md-typeset table:not([class]) td:nth-child(4) { min-width: 7rem; }
/* Wider pages than Material's 61rem: the reference tables have four columns. */
.md-grid { max-width: 90rem; }
.md-typeset table:not([class]) td code { word-break: break-word; }
.md-typeset table:not([class]) th { background: var(--hd-bg-raised); font-family: "IM Fell English SC", Georgia, serif; font-weight: 400; }
/* Home page: the moon and the mist (overrides/home.html). */
.hd-hero {
position: relative;
overflow: hidden;
text-align: center;
padding: 7rem 1rem 6.5rem;
background:
radial-gradient(circle at 78% 22%, #eef2f9 0 42px, rgba(220, 228, 244, .35) 43px, rgba(200, 212, 236, .10) 110px, transparent 210px),
radial-gradient(ellipse 70% 40% at 50% 100%, rgba(160, 175, 205, .22), transparent 70%),
linear-gradient(#1c2335, var(--hd-bg) 75%);
}
.hd-hero::after {
content: "";
position: absolute;
inset: auto 0 0 0;
height: 160px;
background: linear-gradient(transparent, rgba(190, 200, 220, .10) 60%, var(--hd-bg));
}
.hd-hero__content { position: relative; z-index: 1; }
.hd-hero h1 { margin: 0; font: 400 clamp(2.4rem, 6vw, 4.4rem) "IM Fell English", Georgia, serif; color: var(--hd-bright); }
.hd-hero p { margin: .9rem 0 0; color: #b8c2d3; font-style: italic; font-size: 1.3rem; }
.hd-buttons { display: flex; gap: .9rem; justify-content: center; flex-wrap: wrap; margin-top: 2rem; }
.hd-button {
padding: .75rem 1.75rem;
font: 1.1rem "IM Fell English SC", Georgia, serif;
color: #e9edf3 !important;
border: 1px solid rgba(220, 228, 240, .45);
border-radius: 2px;
background: rgba(15, 18, 24, .55);
transition: background .2s, border-color .2s;
}
.hd-button:hover { background: rgba(255, 255, 255, .1); border-color: rgba(240, 244, 250, .8); }
.hd-button--primary { background: rgba(228, 234, 245, .92); color: #141822 !important; border-color: transparent; }
.hd-button--primary:hover { background: #fff; }
.hd-home { max-width: 54rem; margin: 0 auto; }
.hd-cards { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; margin: 1.2rem 0 2rem; }
.hd-card {
display: block;
border: 1px solid var(--hd-line);
background: rgba(160, 180, 215, .05);
padding: 1.1rem 1.2rem;
border-radius: 4px;
color: var(--hd-text) !important;
transition: border-color .2s, background .2s;
}
.hd-card:hover { border-color: #5b6a86; background: rgba(160, 180, 215, .09); }
.hd-card strong { display: block; font: 1.25rem "IM Fell English SC", Georgia, serif; font-weight: 400; color: #dfe5ef; margin-bottom: .3rem; }
.hd-card span { color: var(--hd-muted); font-size: .85rem; }
@media screen and (max-width: 44.9375em) {
/* A smaller moon in the corner: in the middle it covered the title. */
.hd-hero {
padding: 4.5rem 1rem 4rem;
background:
radial-gradient(circle at 86% 11%, #eef2f9 0 22px, rgba(220, 228, 244, .35) 23px, rgba(200, 212, 236, .10) 60px, transparent 120px),
radial-gradient(ellipse 70% 40% at 50% 100%, rgba(160, 175, 205, .22), transparent 70%),
linear-gradient(#1c2335, var(--hd-bg) 75%);
}
.hd-cards { grid-template-columns: 1fr; }
}
+7
View File
@@ -716,6 +716,7 @@ EN = {
"Couldn't update: {}",
"Сначала закройте игру":
"Close the game first",
'Руководство для игроков': "Players' guide",
"Этот проект":
"This project",
"Основано на bbport от deadinside28":
@@ -1635,6 +1636,7 @@ PT_BR = {
"Não foi possível atualizar: {}",
"Сначала закройте игру":
"Feche o jogo primeiro",
'Руководство для игроков': 'Guia para jogadores',
"Этот проект":
"Este projeto",
"Основано на bbport от deadinside28":
@@ -2518,6 +2520,7 @@ ES = {
"No se pudo actualizar: {}",
"Сначала закройте игру":
"Cierra el juego primero",
'Руководство для игроков': 'Guía para jugadores',
"Этот проект":
"Este proyecto",
"Основано на bbport от deadinside28":
@@ -3401,6 +3404,7 @@ IT = {
"Impossibile aggiornare: {}",
"Сначала закройте игру":
"Chiudi prima il gioco",
'Руководство для игроков': 'Guida per i giocatori',
"Этот проект":
"Questo progetto",
"Основано на bbport от deadinside28":
@@ -4284,6 +4288,7 @@ FR = {
"Mise à jour impossible : {}",
"Сначала закройте игру":
"Fermez d'abord le jeu",
'Руководство для игроков': 'Guide des joueurs',
"Этот проект":
"Ce projet",
"Основано на bbport от deadinside28":
@@ -5167,6 +5172,7 @@ DE = {
"Aktualisierung fehlgeschlagen: {}",
"Сначала закройте игру":
"Schließe zuerst das Spiel",
'Руководство для игроков': 'Anleitung für Spieler',
"Этот проект":
"Dieses Projekt",
"Основано на bbport от deadinside28":
@@ -6021,6 +6027,7 @@ ZH_CN = {
"无法更新:{}",
"Сначала закройте игру":
"请先关闭游戏",
'Руководство для игроков': '玩家指南',
"Этот проект":
"本项目",
"Основано на bbport от deadinside28":
+2
View File
@@ -3106,6 +3106,8 @@ class LauncherWindow(Adw.ApplicationWindow):
for title, subtitle, url, icon in (
(tr("Этот проект"), bbport_update.REPOSITORY_URL, bbport_update.REPOSITORY_URL,
"github-symbolic"),
(tr("Руководство для игроков"), bbport_update.GUIDE_URL, bbport_update.GUIDE_URL,
"help-browser-symbolic"),
(tr("Основано на bbport от deadinside28"), bbport_update.UPSTREAM_URL,
bbport_update.UPSTREAM_URL, "github-symbolic"),
(tr("Порт для Windows от Supermedo"), bbport_update.WINDOWS_URL,
+2
View File
@@ -19,6 +19,8 @@ REPOSITORY_URL = f"https://github.com/{REPOSITORY}"
UPSTREAM_URL = "https://github.com/deadinside28/bloodborne_pc"
WINDOWS_URL = "https://github.com/Supermedo/bloodborne_pc"
LICENSE_URL = f"{REPOSITORY_URL}/blob/main/LICENSE"
# The players' guide (GitHub Pages, built from docs/: mkdocs.yml).
GUIDE_URL = "https://ayozetr.github.io/bloodborne_linux/"
KOFI_URL = "https://ko-fi.com/ayozetr"
RELEASES_URL = f"{REPOSITORY_URL}/releases"
LATEST_API = f"https://api.github.com/repos/{REPOSITORY}/releases/latest"
+71
View File
@@ -0,0 +1,71 @@
# The players' guide on GitHub Pages (.github/workflows/guide.yml): built from docs/ with
# MkDocs Material, so the guide and the repository's documents never disagree.
site_name: Bloodborne for Linux
site_description: How to install, play online and fix problems with the Linux port of Bloodborne.
site_url: https://ayozetr.github.io/bloodborne_linux/
repo_url: https://github.com/ayozetr/bloodborne_linux
repo_name: ayozetr/bloodborne_linux
edit_uri: edit/main/docs/
copyright: GPL-3.0-or-later. Bloodborne is by FromSoftware and Sony Interactive Entertainment; this project is not affiliated with either. No game files are included.
docs_dir: docs
# Not MkDocs' default site/: that folder holds the theme and the hook.
site_dir: _site
exclude_docs: |
README.md
RELEASE_TEMPLATE.md
theme:
name: material
custom_dir: site/overrides
font: false
palette:
scheme: slate
features:
- navigation.instant
- navigation.sections
- navigation.top
- navigation.footer
- search.suggest
- search.highlight
- content.code.copy
- toc.follow
icon:
repo: fontawesome/brands/github
hooks:
- site/repo_links.py
extra_css:
- stylesheets/hunters-dream.css
markdown_extensions:
- admonition
- attr_list
- md_in_html
- pymdownx.details
- pymdownx.superfences
- toc:
permalink: true
nav:
- Home: index.md
- Getting started: getting-started.md
- Steam and the Steam Deck: steam-deck.md
- Playing online:
- Online play and co-op: ONLINE.md
- Your own server: SERVER.md
- Help:
- Troubleshooting: TROUBLESHOOTING.md
- Getting a log: logs.md
- FAQ: faq.md
- Supported releases: COMPATIBILITY.md
- Mods: MODS.en.md
- Credits: CREDITS.md
- For developers:
- Environment variables: ENVIRONMENT.md
- Debugging a crash: DEBUGGING.md
- GPU commands in parallel: parallel_gpu.md
- Upscaling and frame generation: upscaler.md
- The translator: TRANSLATOR_ARCHITECTURE.md
- The memory module: MEMORY_MODULE_PLAN.md
+19
View File
@@ -0,0 +1,19 @@
{% extends "main.html" %}
{# The home page: the moon-and-mist hero above the page's own content (docs/index.md). #}
{% block hero %}
<section class="hd-hero">
<div class="hd-hero__content">
<h1>Bloodborne for Linux</h1>
<p>Welcome home, good hunter. Here is how to play, alone or together.</p>
<div class="hd-buttons">
<a class="hd-button hd-button--primary" href="https://github.com/ayozetr/bloodborne_linux/releases/latest">Download</a>
<a class="hd-button" href="{{ 'getting-started/' | url }}">Read the guide</a>
</div>
</div>
</section>
{% endblock %}
{% block content %}
<div class="hd-home">{{ page.content }}</div>
{% endblock %}
+7
View File
@@ -0,0 +1,7 @@
{% extends "base.html" %}
{# The site is dark already: Dark Reader would recolour it (the light Download button came out
dark), so it is told to leave it alone. #}
{% block extrahead %}
<meta name="darkreader-lock">
{% endblock %}
+26
View File
@@ -0,0 +1,26 @@
"""MkDocs hook: links in docs/ to files elsewhere in the repository (../BBPORT.md, ../bbsc/) point
to them on GitHub, since the guide is built from docs/ alone. The documents stay as they are, so
the same links keep working when they are read on GitHub."""
import posixpath
import re
REPOSITORY = "https://github.com/ayozetr/bloodborne_linux"
LINK = re.compile(r"(\]\()([^)\s]+)(\))")
def on_page_markdown(markdown, page, **kwargs):
folder = posixpath.dirname(page.file.src_uri)
def outside(match):
target = match.group(2)
if "://" in target or target.startswith(("#", "mailto:")):
return match.group(0)
path, _, anchor = target.partition("#")
resolved = posixpath.normpath(posixpath.join("docs", folder, path))
if resolved == "docs" or resolved.startswith("docs/"):
return match.group(0)
kind = "tree" if path.endswith("/") or "." not in posixpath.basename(path) else "blob"
url = f"{REPOSITORY}/{kind}/main/{resolved.rstrip('/')}" + (f"#{anchor}" if anchor else "")
return match.group(1) + url + match.group(3)
return LINK.sub(outside, markdown)
+2
View File
@@ -0,0 +1,2 @@
mkdocs==1.6.1
mkdocs-material==9.8.0