11 coaches online • Server time: 08:29
* * * Did you know? The best passer is Cherrystone Hotpack with 656 completions.
Log in
Recent Forum Topics goto Post Deep stalling mitiga...goto Post Windows 11 & Jav...goto Post Italy - FUMBBL lag
Ilios
Last seen 25 minutes ago
Overall
Rookie
Overall
Record
0/0/0
Win Percentage
n/a
2025-08-14 14:54:06
14 votes, rating 5.6
Introducing Jervis – A New Blood Bowl Engine Project


I want to share a personal project I’ve been working on for quite some time: Jervis, an open-source Fantasy Football engine that aims to deliver a faithful implementation of the Blood Bowl 2020 ruleset.

Originally, the goal was simple: build an AI for Blood Bowl. But over time, the project has evolved into something broader. A hybrid that includes both a robust rules engine and a brand-new client UI.

I’m well aware that similar projects have appeared in the past, and most (if not all) have fizzled out. So, healthy skepticism is probably warranted. That said, the project is far enough along that I feel comfortable sharing it with the world.

Project links

  1. Source Code - GitHub
  2. Web Client: WASM-based, requires a modern browser.
  3. Desktop Installers: Tested on Windows and Mac. Linux build available but untested.

The core UI flows work, and most common actions are implemented, albeit not fully tested. Expect bugs, weirdness, and inconsistent UI. Documentation (including a list of known missing features) is available here: https://github.com/cmelchior/jervis-ffb/tree/main/docs

For a quick test, open the website, click on "Dev Options" (in the top-right corner), and select "Start Manual Game" (this runs a game in a mode that also allows you to select dice rolls).

Key Features (UX)

  1. Scalable UI: Will scale to any size, but currently focusing on 16:10 / 16:9 screen formats.
  2. Full Undo Support: CTRL+Z works at every stage. Even across dice rolls, if the rules permit it.
  3. Multiple Game Variants: BB11 and BB7 are already supported. The goal is to eventually also support Dungeon Bowl and Gutter Bowl.
  4. Multiple Game Modes: Hotseat and Peer-to-Peer play are supported, both against human and AI opponents (currently a proof-of-concept “Random” AI).


Key Features (Technical)

  1. Cross-platform UI: Current builds target Desktop (Windows, Linux, Mac), Web, and iPad. Android support is possible but not prioritized.
  2. Modular Architecture: UI and rules are fully separated, which enables AI agents and makes the UI pluggable.
  3. Flexible Action System: Game Actions, like asking for skill usage, can be controlled by the server, or by clients, either automatically or manually.
  4. Kotlin Multiplatform: Technical foundation enabling all of the above. Probably only relevant if you are a developer.


What is Jervis not?
The aim with Jervis is not to be a team or league editor, only a play client. This also means it needs the capability to import teams from various sources. Right now, only importing from the FUMBBL API is supported.

What is the impact on FUMBBL?
At this stage, none. Jervis is a standalone project, still far from complete. The intention is not to compete with FUMBBL, but to create something that could complement it, whether as an alternative client, an AI agent, or as a broken mess of unfinished ideas on GitHub.

What are the next steps?
The project remains a work-in-progress, with several priorities ahead:

  1. Expand Rules Support: Expand engine capabilities to handle advanced rules such as Giants and Dungeon Bowl layouts with rooms and features. Focus on challenging rule interactions rather than every skill. Multiple Block and Ball Clone is already supported. This is, in part, because I was hoping BB2025 would drop, which could provide some more guidance for the project.
  2. UI Scaling: Create a client UI that works seamlessly from iPad to 4K displays. Likely requires a distinct UX for touchscreen vs. mouse/keyboard.
  3. Timer Support: Implement flexible timer mechanics, handling edge cases like latency and complex actions (e.g., timing out mid-Multiple Block).
  4. Full Server Implementation: Allow two web clients to play against each other without requiring a desktop host.
  5. FUMBBL Replay Conversion: Finish a prototype that converts full FUMBBL replays to Jervis format. This is a critical step for training a competitive Blood Bowl AI using reinforcement learning, which currently seems like the most promising approach.


What is the timeline?
This project has already taken hundreds of hours and will require many more. A full rules implementation feels possible next year. A somewhat decent AI will take longer.

If you’ve made it this far—thank you. I’d love for you to give Jervis a try and share your feedback or bug reports.

If people find this interesting, I will probably, in the future, create separate blog posts about specific subjects like how to implement timers or UX trade-offs.

– Ilios
Rate this entry
Comments
Posted by Carthage on 2025-08-14 15:43:44
That looks pretty slick.
I'd be a bit concerned from the legal perspective for you though if you get it looking too slick. I think part of what lets FUMBBL avoid C&Ds from GW trying to protect BB3 is that its so minimalist in comparison.
I worry that once you implement an AI system, if it gets popular, you may start to get into that space where GW will start caring.
Posted by MattDakka on 2025-08-14 19:24:37
Hello!
Does your client support a pitch 28x15 squares, with End Zone 15x1 squares?
Posted by Sp00keh on 2025-08-14 19:26:40
It's pretty impressive! well done
the AI is definitely random, lol
Posted by Ilios on 2025-08-14 19:30:15
You can fully configure the size of the pitch (width, length, widezone, endzone, line-of-scrimmage). So, yes.
Posted by MattDakka on 2025-08-14 19:40:01
That's awesome!
Can you use different dice, for example, D8 Block die instead of D6 Block die and D8 die when passing the ball? Can you use a different Injury and Casualty table?
Can you set the rrs usage to 1 per turn?
Posted by Ilios on 2025-08-14 19:55:21
I haven't created "extension-points" for those dice rolls, so the kind of dice is hard-coded right now. It wouldn't be super tricky to make customizable, but I don't think any rules need it, so it hasn't been on my radar.

Injury and Casualty tables are swappable in the code, but not the UI, except for choosing the BB7 Injury table.

Multiple Rerolls pr. Turns or not are also defined in the rules setup. Right now, there isn't a UI for changing it, but exposing that would be easy.


Generally, I tried to model the rules in a way that allows them to be very flexible because GW seems to keep adding new weird Star Player abilities, but you cannot think of everything up front 😅
Posted by MattDakka on 2025-08-14 19:58:38
Thank you very much for the replies and kudos for your work!
Posted by StrangeFeller on 2025-08-14 20:03:22
Amazing work!
Posted by Habeli on 2025-08-14 20:06:46
Where do you want the bugs etc. to be posted? I managed to get to 3rd activation before finding one: Trying to surf with frenzy and nothing happens after I chose pow to surf. All I can think of is esc->quit
Posted by Ilios on 2025-08-14 20:10:59
You can create an issue on GitHub: https://github.com/cmelchior/jervis-ffb/issues/new

There is also a link in the "About" page (it shows up if you click on the version label on the front page).

I should probably make it possible to create a log file for a game that can reproduce the state. It would make debugging stuff like this easier.
Posted by Ilios on 2025-08-14 20:17:56
@Habeli Trying to reproduce it, I can see that pushing into the crowd triggers a special "move action" the UI isn't set up to handle yet.

All game actions the UI doesn't "understand" are rendered in the bottom-right corner. This is the fallback for any actions the UI doesn't understand and is mostly for development to prevent getting stuck.
Posted by Lonewolfjackson on 2025-08-15 09:24:17
Just wanted to thank you for not only taking the time to dream of something like this but to take the steps to make it tangible. You're a legend dude!
Posted by Grod on 2025-08-15 12:44:24
Just in case you were unaware of it: https://github.com/njustesen/ffai

Might give you some ideas.