Homebrew Release: Warnel Chawpiovs v1.4.0 (PC, Nintendo Switch, Android), adds Android Support, 7 new heroes, and 5 new scenarios
I’ve just released version 1.4.0 of “Warnel Chawpiovs”, a homebrew game for PC (Windows, Linux, MacOS versions are now available), Nintendo Switch, and now available for Android as well.
This new release fixes a ton of rule discrepancies, and, although I have no doubt that there is still lots of work on that front, a lot of cards and mechanics just work better than ever.
This new release also adds 7 new heroes (Ant-Man, the Wasp, Quicksilver, Colossus, Shadowcat, Star-Lord, and winter Soldier) as well as 5 new scenarios from the “Mutant Genesis” expansion, featuring villains Sabretooth, The Sentinel, Master Mold, the Brotherhood, and Magneto. Similarly to GMW’s Ronan the Accuser, I find Magneto to be barely beatable even in normal mode (let alone expert), but that’s possibly because I always only play true solo. Give him a try and let me know.
(By the way, if you’re using and enjoying Warnel Chawpiovs, please do me a favor and spread the word, to friends or on social networks. Having a growing number of users helps me staying motivated to add more cards and features!)
Overall, the game now supports 27 heroes and 28 scenarios, which I estimate represents roughly 35% of all the cards in the original game (excluding campaigns)
This is a fan-created work and is not affiliated with, endorsed by, or sponsored by Fantasy Flight Games. All characters, settings, and related elements are the property of their respective owners.
What is Warnel Chawpiovs ?
Warnel Chawpiovs, aka WC, is a homebrew game for multiple platforms (included, but not limited to, Nintendo Switch, Android and Windows), based on the popular cooperative board game Marvel Champions. WC lets you play the popular card game with full rules enforcement. The game does the heavy lifting of handling all the rules, so you only have to focus on your strategy.

Screenshot from the Nintendo Switch version
It also includes a full fledged deck editor (which, among other things, can import/export decks from popular fansite marvelcdb.com).
Please note that Warnel Chawpiovs doesn’t hold your hand. Although it automates all of the gameplay, you will still need a basic understanding of the original rules to know what’s going on. The rules can be found here if you’re interested: https://www.fantasyflightgames.com/en/products/marvel-champions-the-card-game/ (scroll down to the support/rules section and download “Learn to play“)
You can play on your own with one or multiple heroes, and there’s also a multiplayer mode, although I need to emphasize once again, multiplayer doesn’t exactly work*

Warnel Chawpiovs – What’s new in 1.4.0
- Adds support for “Mutant Genesis” expansion, Winter Soldier Hero Pack, Ant-Man Hero Pack, Wasp Hero Pack, Quicksilver Hero Pack, and Star-Lord Hero Pack:
- New heroes : Winter Soldier, Ant-Man, Wasp, Quicksilver, Star-Lord, Colossus, and Shadowcat
- New villains: Sabretooth, Sentinel, The Mold, the Brotherhood (Pyro, Avalanche, Blob, Toad), and Magneto
- Added support for Android
- Overall improved card pictures quality with better resizing parameters. For people who update from a previous version, it is recommended to delete card pictures (either manually in your user folder, or from the advanced settings in the game) and let the game redownload them.
- QoL improvements:
- Bug Fixes and visual improvements related to heroes changing form, and villain stage defeat
- improvements related to card messages and hints (for interrupts, etc…)
- Scenario description/flavor now shown at the beginning of each scenario

- Added an “advanced settings” sections to access a bunch of “hidden” settings such as the size of preview cards

- Various bug fixes
- Mac display should look better. There was an issue on retina screens where everything looked pixelated, and hopefully this should be fixed. A caveat is that menu screens might be super small now. (Please note that I still do not officially support the Mac release)
- Lots of fixes surrounding “defense” and “declaring a defender” mechanics
- Fixed a regression (introduced in 1.3.0) that crashed the multiplayer lobby
- Introduced multiple layers of caching which should improve loading speeds and in-game framerate. The loading screen in particular should be reasonably fast the second time you run the game and moving forward (first run remains slow as it does a lot of processing and caching)
1.4.0 Development notes and anecdotes
Performance: I’ve brought some significant speed improvements to some of the most intensive loops in the game, pruning a lot of unnecessary elements before running loops through all the cards. I think this is particularly visible on Nintendo Switch (at least once all assets are downloaded! While the console is downloading and processing images, it’s still quite laggy), but also in 2 to 4 heroes games where the number of cards can significantly impact performance. Then again, a lot of these improvements are (negatively) compensated by some new features and card code. Hopefully the game is now playable smoothly on PC with 4 heroes (version 1.3.0 had serious performance issues with 4 heroes)
Heroes: I’m bringing 7 new heroes to this release, which is the most I’ve ever added in a single release, although if I must be honest, some of them got more love than the others. I’m pretty confident that Winter Soldier in particular is working ok, as I’ve played countless games with him, against Magneto in particular (not that I won many of these games, though). Ant-Man, Wasp, and Colossus seem to be working mostly ok. Unfortunately I can’t say the same for for Star-Lord, Shadowcat, and Quicksilver, for which I’ve found a few significant bugs, right after packaging everything for this release. Hopefully I’ll be able to fix those with next release.
Winter Soldier has been a blast to develop and to play.
His cybernetic arm boosting his damage, but also being used as a defense, can lead to some pretty interesting results. The idea of his deck is to bring and fight minions, which allows him to trigger multiple combos and remove thwart. It works exceptionally well in minion-heavy scenarios (e.g. Ultron and his drones). Conversely, in scenarios where there are less, but stronger minions (Magneto’s “Acolytes” come to mind, especially since they trigger pretty strong abilities when defeated), it becomes a bit more of a struggle.
His default aggression deck feels pretty strong, with very good allies (Black Widow and Captain America, as well as their matching “team-up” cards), although I’ve instantly replaced his “Nick Fury Senior” with the regular “Nick Fury” which I find unequivocally better. (Of course since everyone wants Nick Fury in their deck, in a multi-heroes setup it might be worth having the Senior version to avoid triggering the unique rule).
Android version: Although it’s by no means perfect (text is barely readable on a regular phone screen), the Android version was easy to compile with godot and runs fairly smoothly. Give it a try if you have the opportunity. I’ve made a few minor changes and brought new settings so that the interface “works” on mobile screens. Again, it’s not perfect and will not be the priority, but it is now available.
How to install – Windows/Linux

Download the binaries below or on the github page:
(alternatively on github)
extract anywhere on your computer, then run the binary file (Windows: WC.exe, Linux:WC.x86_64)
How to install – Android
Download the apk below or on the github page:
(alternatively on github)
Copy the apk to your phone then install it with your phone’s file manager. You will need to enable “unknown sources” in your phone settings in order to install the APK.
Once you start the game it will need to download resources so it is recommended that your first launch is not on an expensive data plan 🙂
How to install – Nintendo Switch
You will need a hacked Nintendo Switch to run this game.
Download the binaries below or on the github page:
(alternatively on github)
extract the WC folder inside your switch folder on your SD card.
Launch the homebrew Menu in “full speed” mode (not in applet mode). This is done by pressing the Right Should button (R) while launching a cartridge game.

From there, you can run the game
How to install – Mac OS
Download the binaries below or on the github page:
(alternatively on github)
The Mac OS app isn’t officially signed, so in order to run it you can ctrl + click and select “open”
Running your First Game
The game will attempt to download any missing picture for new cards, as soon as you run it. This happens in the background and you can play while this happens. Again, that step is not needed if you have the appropriate “*.zip” resource files.
Once you’re in the game select “Sivgle Player”, then choose one hero and one villain, then click on launch.

Note: On your very first run, the game will only let you select one hero and one villain. This is intentional, as the game’s “adventure mode” requires you to win games in order to unlock more heroes and scenarios. If you don’t like this you can deactivate it in the options/gameplay menu, this will unlock all content.
Check the Videos below for examples of gameplay
Status of the Switch port
The Switch port is… slow. You might want to overclock your console when you play the game. I know it’s not ideal, but it makes the gameplay much more comfortable.
I would not recommend playing with more than one hero at the moment on Nintendo Switch, if only for performance reasons

Troubleshooting, bug reports, etc…
I do not have a dedicated forum or discord in place for this game yet. You can open issues on the github project, or contact me by email (wagic.the.homebrew at gmail), but please understand that I might dismiss or ignore most of those depending on free time and interest.

Known issues
- Multiplayer should basically be considered broken for now.
- Loading/Saving games is hit and miss depending on the hero/villain
- Switch port is slow. You might want to overclock your console
- The Mac port should be considered unsupported. I do not own any Apple products, which makes it impossible for me to verify (let alone debug) anything on that version.
- There are still lots of issues with specific cards, but feel free to report issues you find on the github
- In particular multiple cards behave strangely when playing with more than one hero. This isn’t intentional so feel free to report those

Want more details?
check the Readme on github
What’s next:
There is still lots of work to do with this game. I am currently focusing on adding more cards to enjoy with a solo hero.
If by any miracle you are looking at my code and can help, in particular with multiplayer issues, please submit a PR on github

Download
Or on the project’s github page
* If you badly want to play Marvel Champions with friends online, the Marvel champions digital edition, another unofficial fan game, does a great job at it.







do u have a warnell pygame version with sdl ? heres how on android …
so tudum … have termux and termux-x11 in one app together with proot-distro and python installed with pygame for runnning a backend python webserver that interacts with pygame frontend AIO ALL IN ONE APP ???? …. i like to think of this little pygame ofc …
You can absolutely build an all‑in‑one Termux + Termux‑X11 + proot‑distro + Python + Pygame environment inside a single Android app — and it’s actually a pretty elegant setup once everything is wired together.
Short answer:
Yes, your idea is doable. Termux + Termux‑X11 can run a full Linux distro (via proot‑distro), and inside that you can run Python, Pygame, and even a backend webserver that talks to a Pygame frontend. It becomes a tiny portable Linux workstation inside one Android app.
How the pieces fit together
1. Termux
Your base shell. This is where you install packages, run Python, and launch proot‑distro.
2. Termux‑X11
Provides an X11 display server so Pygame can open windows.
Pygame uses SDL → SDL needs a display → Termux‑X11 gives you that.
3. proot‑distro
This gives you a full Linux root filesystem (Ubuntu, Debian, Arch, etc.) without root access.
Inside it, you can install “real” Linux packages, including Pygame, Flask, FastAPI, etc.
4. Python
Installed either in Termux or inside the proot distro.
Pygame works best inside the proot distro because of X11 compatibility.
5. Pygame
Runs your graphical frontend.
With Termux‑X11, Pygame windows behave like desktop apps.
6. Backend Python Webserver
You can run a backend using:
Flask
FastAPI
aiohttp
or even a custom socket server
Your Pygame frontend can talk to it via HTTP or WebSockets.
️ Architecture of your “AIO APP”
Code
Android App (Termux)
├── Termux shell
│ ├── proot-distro (Ubuntu/Debian)
│ │ ├── Python
│ │ ├── Pygame (frontend)
│ │ └── Backend webserver (Flask/FastAPI)
│ └── Termux-X11 (display server)
└── Android system
Everything runs inside one Termux installation.
Termux‑X11 is technically a separate APK, but it behaves like a plugin.
Why this setup works surprisingly well
Pygame uses SDL2 → SDL2 works with X11 → Termux‑X11 provides X11
proot‑distro gives you a clean Linux environment
Python packages install normally
You can run both backend and frontend simultaneously
Android multitasking keeps everything alive
It’s basically a pocket Linux gaming + dev environment.
A non‑obvious insight
Pygame doesn’t have to be the frontend.
You can also run:
Godot 3.x (headless or editor)
Tkinter
PyQt5 / PySide2
Kivy
All inside Termux‑X11.
But Pygame is the lightest and most stable.
️ If you want, I can help you next with:
Setting up Pygame inside proot‑distro
Creating a backend–frontend communication template
Optimizing performance
Packaging your whole setup into a single launch script
Which direction do you want to go:
setup pygame • build backend • connect pygame to backend • optimize performance
help you next with:
Setting up Pygame inside proot‑distro
Creating a backend–frontend communication template
Optimizing performance
Packaging your whole setup into a single launch script
Great — you want the full pipeline:
Pygame setup → backend/frontend template → performance tuning → one‑tap launch script.
Let’s build it cleanly and in the right order so everything works smoothly inside Termux + Termux‑X11 + proot‑distro.
Below is the complete, structured guide with all four parts.
✅ 1. Setting up Pygame inside proot‑distro
This is the most stable layout:
Code
Termux
├── proot-distro (Ubuntu or Debian)
│ ├── Python3 + pip
│ ├── SDL2 + dev libs
│ └── Pygame
└── Termux-X11 (display)
Install Ubuntu (recommended)
Code
pkg install proot-distro
proot-distro install ubuntu
proot-distro login ubuntu
Install dependencies inside Ubuntu
Code
apt update
apt install python3 python3-pip python3-dev \
libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev \
libportmidi-dev libfreetype6-dev
Install Pygame
Code
pip install pygame
Test Pygame
Create test.py:
python
import pygame
pygame.init()
screen = pygame.display.set_mode((400, 300))
pygame.display.set_caption(“Pygame OK”)
while True:
for e in pygame.event.get():
if e.type == pygame.QUIT:
quit()
screen.fill((30, 30, 30))
pygame.display.flip()
Run it:
Code
DISPLAY=:0 python3 test.py
✅ 2. Backend ↔ Frontend communication template
This is a minimal working architecture:
Backend (Flask)
backend.py:
python
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route(“/state”, methods=[“GET”])
def get_state():
return jsonify({“message”: “Hello from backend”, “value”: 42})
@app.route(“/input”, methods=[“POST”])
def receive_input():
data = request.json
print(“Frontend sent:”, data)
return jsonify({“status”: “ok”})
app.run(host=”0.0.0.0″, port=5000)
Run it:
Code
python3 backend.py
Pygame frontend talking to backend
frontend.py:
python
import pygame, requests, json
pygame.init()
screen = pygame.display.set_mode((600, 400))
font = pygame.font.SysFont(None, 32)
def get_state():
try:
r = requests.get(“http://127.0.0.1:5000/state”)
return r.json()
except:
return {“message”: “No backend”, “value”: 0}
while True:
for e in pygame.event.get():
if e.type == pygame.QUIT:
quit()
state = get_state()
screen.fill((0, 0, 0))
text = font.render(f”{state[‘message’]} | {state[‘value’]}”, True, (255,255,255))
screen.blit(text, (20, 20))
pygame.display.flip()
This gives you a live, interactive Pygame UI that polls the backend.
✅ 3. Optimizing performance inside Termux + proot‑distro
Key optimizations
Use SDL2 (already installed above) — Pygame 2 uses it automatically.
Disable vsync if you need faster loops:
python
pygame.display.set_mode((800,600), pygame.SCALED | pygame.DOUBLEBUF)
Use integer scaling to reduce GPU load:
python
pygame.display.set_mode((800,600), pygame.SCALED)
Avoid heavy Python loops — use pygame.time.Clock():
python
clock = pygame.time.Clock()
clock.tick(60)
Run backend and frontend in separate Termux sessions
Termux supports multiple sessions; this avoids blocking.
Use lightweight backend frameworks
Flask is fine, but aiohttp or FastAPI with uvicorn is faster.
✅ 4. Packaging everything into a single launch script
This gives you a one‑tap startup for:
Termux‑X11
proot‑distro
backend
frontend
Create run_all.sh in Termux (outside proot)
Code
nano run_all.sh
Paste:
bash
#!/data/data/com.termux/files/usr/bin/bash
# Start Termux-X11 if not running
am start –user 0 -n com.termux.x11/com.termux.x11.MainActivity
# Wait for X11 to initialize
sleep 2
# Launch proot-distro and run backend + frontend
proot-distro login ubuntu –shared-tmp — bash -c ”
export DISPLAY=:0
cd ~/myapp
# Start backend in background
python3 backend.py &
# Start frontend
python3 frontend.py
”
Make executable:
Code
chmod +x run_all.sh
Run:
Code
./run_all.sh
Now you have a full AIO app launcher.
What do you want to build next?
Choose your next step:
add websocket support
add buttons and UI widgets
package the whole thing into a single folder
add sound, music, or assets
Tell me where you want to take this little Pygame universe next.
https://nopaste.net/Jx9xEvRb9j
here u go for the minimal pygame launcher assets project …