Backhander

Backhander

Underhand is a card game where you run a cult. You feed it, you keep the police away, and with a bit of luck you wake an Ancient God.

Backhander is my own take on it in Godot, an unofficial fan project, and it is slowly becoming an engine where the cards live in packs anyone can edit.

Underhand est un jeu de cartes où l’on dirige une secte. On la nourrit, on tient la police à distance et, avec un peu de chance, on réveille un Ancien.

Backhander est ma version sous Godot, un projet de fan non officiel, qui devient peu à peu un moteur où les cartes vivent dans des paquets que chacun peut modifier.

How the game works. Each turn, an event card shows up with up to three answers. Each answer has a price in cards, which you pay from your hand, and gives other cards in return, or moves the story on. Some answers lead to an Ancient God: summon one and you win. No answer you can afford, and you lose. The project explains the rules in detail.

Le fonctionnement du jeu. À chaque tour, une carte événement propose jusqu’à trois réponses. Chacune a un prix en cartes, que vous payez avec votre main, et rapporte d’autres cartes ou fait avancer l’histoire. Certaines réponses mènent à un Ancien : invoquez-en un et vous gagnez. Plus aucune réponse que vous puissiez payer, et vous perdez. Le projet détaille les règles.

A Backhander event card: Wandering Children Une carte événement de Backhander : Enfants égarés

How it startedComment c’est arrivé

I stumbled on Underhand by chance and fell head over heels for it. A free game, well made, funny. I ran into a few bugs, but I loved it. When I finished the game, I thought: let’s start over.

So I waited for updates, more cards, more gods. The authors had already given us a great game, I told myself, and that was plenty. But it was a student project, made by a group of students, and it was unlikely to go on.

I waited and waited, and then I thought: what if I recoded it? I combed through the wiki, the community site and the “reborn” projects around the web. Then I started decompiling the APK. The port and Backhander came out of that.

How the game works

Je suis tombé sur Underhand par hasard, et j’en suis tombé raide dingue. Un jeu gratuit, bien fait, drôle. Je suis tombé sur quelques bugs, mais j’ai adoré. Quand j’ai fini le jeu, je me suis dit : recommençons.

Alors j’ai attendu des mises à jour, des cartes, des dieux en plus. Les auteurs nous avaient déjà donné un super jeu, me disais-je, c’était déjà beaucoup. Mais c’était un projet étudiant, fait par un groupe d’étudiants, et il y avait peu de chances qu’il continue.

J’ai attendu, attendu, et puis je me suis dit : et si je le recodais ? J’ai épluché le wiki, le site de la communauté et les projets de « reborn » qui traînent sur internet. Puis j’ai attaqué la décompilation de l’APK. Le portage et Backhander sont nés de là.

Comment le jeu fonctionne

Three stepsTrois étapes

I told myself I had to go about it in three steps.Je me suis dit qu’il fallait y aller en trois étapes.

The Godot port, identical to the original Le portage Godot, identique à l’original a

Port the exact gamePorter le jeu exact

The same game under Godot: same cards, same look, same sounds. I wrote the rules down from the decompiled code and handled the edge cases I had run into. I do not share it.

Le même jeu sous Godot : mêmes cartes, même rendu, mêmes sons. J’ai noté les règles à partir du code décompilé et géré les cas limites sur lesquels j’étais tombé. Je ne le partage pas.

Choosing the starting deck Choisir son paquet de départ b

Look, and see what could be doneRegarder ce qui pourrait être fait

Once the original ran, I looked at it again with fresh eyes: what is missing, what could be better. Choosing your starting hand, a Collection, chains and quests came from there.

Une fois l’original en marche, je l’ai regardé d’un œil neuf : ce qui manque, ce qui pourrait être mieux. Le choix de la main de départ, la collection, les chaînes et les quêtes viennent de là.

The Packs screen L’écran des paquets c

Clean up, and add extension pointsClarifier, ranger, étendre

I sorted everything out and put the content in packs. Cards, gods, resources, rules and texts can now be extended almost anywhere, by anyone. That is Backhander.

J’ai tout clarifié et rangé, et mis le contenu dans des paquets. Cartes, dieux, ressources, règles et textes peuvent maintenant être étendus presque partout, par n’importe qui. C’est Backhander.

a

The portLe portage

First I wanted the same game. I took the APK apart, read the rules in the decompiled code, wrote them down, and redid it all in Godot.

  • 118 cards, 7 gods, the original art, sounds and animations.
  • Costs, punishments and chains are in data files, not in the code.
  • Edge cases handled: foresight with a short deck, a few loops, “Reset Game”, cards with no playable option.
  • Texts in translation files, English and French.
  • Automated tests, with bots playing thousands of turns.

I will not share this version. It contains the art, the sounds and the recorded voices of the Spoopy Squad, which are theirs, and which they ask not to be reused. It was my way of understanding the game, and it stays on my machine. If you want to play the original game, get the APK and run it.

Je voulais d’abord le même jeu. J’ai démonté l’APK, lu les règles dans le code décompilé, je les ai notées, et j’ai tout refait sous Godot.

  • 118 cartes, 7 dieux, l’art, les sons et les animations d’origine.
  • Coûts, punitions et chaînes sont dans des fichiers de données, pas dans le code.
  • Cas limites gérés : la prévoyance avec une pioche courte, quelques boucles, « Reset Game », les cartes sans option jouable.
  • Textes dans des fichiers de traduction, en anglais et en français.
  • Des tests automatiques, avec des robots qui jouent des milliers de tours.

Je ne partagerai pas cette version. Elle contient l’art, les sons et les voix enregistrées de la Spoopy Squad, qui sont les leurs, et dont ils demandent qu’ils ne soient pas réutilisés. C’était ma façon de comprendre le jeu, et elle reste sur ma machine. Si vous voulez jouer au jeu d’origine, récupérez l’APK et lancez-le.

The port’s menu Le menu du portage The port’s event card Une carte du portage
b

Extending the gameÉtendre le jeu

Once the port ran, I took my freedom from Underhand: I kept what I had ported, gave it my own graphic touch, and started to see what could be edited… and made it editable, moddable! The first version of Backhander is what came out of it, and the screenshots show it.

  • You choose your starting hand and the cards of your deck, or leave it to chance.
  • A Collection that remembers the cards you have met, with a 3D view.
  • Chains of events, side quests with deadlines, and flags so that a story can branch.
  • More ways to act on the deck: foresight that reorders, keeps one card or casts some aside, shuffling, cards added after a few reshuffles.
  • A new interface, drawn by the engine, and cards redrawn in my own style.

Une fois le portage en marche, j’ai pris ma liberté par rapport à Underhand : j’ai conservé ce que j’avais porté, je lui ai donné ma patte graphique, et j’ai commencé à voir ce qui pourrait être édité… et rendu éditable, moddable ! La première version de Backhander en est sortie, et les captures la montrent.

  • On choisit sa main de départ et les cartes de son paquet, ou on laisse faire le hasard.
  • Une collection qui retient les cartes rencontrées, avec une vue en 3D.
  • Des chaînes d’événements, des quêtes annexes avec échéance, et des drapeaux pour que l’histoire bifurque.
  • Plus de moyens d’agir sur la pioche : une prévoyance qui réordonne, garde une carte ou en écarte, le mélange, des cartes ajoutées après quelques remélanges.
  • Une nouvelle interface, dessinée par le moteur, et des cartes redessinées dans mon style.
Choosing the starting deck Choisir son paquet de départ The Collection La collection
c

The final version: everything is a packLa version finale : tout est un paquet

An engine that works without me, and that anyone can mod, translate and tinker with.Un moteur qui marche sans moi, et que chacun peut modder, traduire et bricoler.

In the final version, the game is an engine that runs packs, and nothing else. A pack is a folder or a .zip that you drop into the game: its cards, gods, resources, texts, pictures and sounds, and even the look of the interface. Translations are files, and any language can be added. The community makes the packs it wants, and the game keeps living without me. The modding page shows how.

Dans la version finale, le jeu est un moteur qui fait tourner des paquets, et rien d’autre. Un paquet est un dossier ou un .zip que l’on dépose dans le jeu : ses cartes, ses dieux, ses ressources, ses textes, ses images et ses sons, et même l’apparence de l’interface. Les traductions sont des fichiers, et on peut ajouter n’importe quelle langue. La communauté fait les paquets qu’elle veut, et le jeu continue de vivre sans moi. La page modding montre comment.

PacksPaquets

Cards, gods, resources, punishments and rules are JSON files checked against a schema. A pack can depend on another and add cards to its gods.

Cartes, dieux, ressources, punitions et règles sont des fichiers JSON vérifiés par un schéma. Un paquet peut dépendre d’un autre et ajouter des cartes à ses dieux.

Chains & questsChaînes & quêtes

Stories in several steps, optional quests with a deadline, rewards and penalties, and flags so a story can branch.

Des histoires en plusieurs étapes, des quêtes facultatives avec un délai, des récompenses et des pénalités, et des drapeaux pour que l’histoire bifurque.

Starting handMain de départ

You can pick your starting resources and the cards of your deck, or leave it to chance. Draws can be weighted, and foresight lets you reorder the next cards.

On peut choisir ses ressources de départ et les cartes de son paquet, ou laisser faire le hasard. Les tirages peuvent être pondérés, et la prévoyance permet de réordonner les cartes suivantes.

A pantheon per packUn panthéon par paquet

The gods you summoned are kept in a gallery, with the blessings they give for the next games.

Les dieux invoqués sont gardés dans une galerie, avec les bénédictions qu’ils donnent aux parties suivantes.

ChecksVérifications

The loader reports every inconsistency in a pack, and bots can play it thousands of times to see if it is balanced. An editor is planned.

Le chargeur signale chaque incohérence d’un paquet, et des robots peuvent le jouer des milliers de fois pour voir s’il est équilibré. Un éditeur est prévu.

Phone firstPour le téléphone

Portrait layout, touch controls, and Android builds of the same project.

Mise en page en portrait, commandes tactiles, et des versions Android du même projet.

See it playLe voir jouer

A short run: the pantheon, a few turns of play, the Collection and a card in 3D.Une courte partie : le panthéon, quelques tours de jeu, la collection et une carte en 3D.