God game · Navigateur · Prototype v0.1 alpha

Une île.Une divinité.Un royaume.

Thanks God est un god game temps réel codé entièrement à la main en JavaScript et Three.js. Sans moteur de jeu, sans asset externe. Votre main plane sur le monde, son ombre est votre curseur, et vos actes font de vous un dieu bienveillant ou un tyran.

Statut
● En développement actif
Rôle
Game design, code, rendu, réseau
Plateforme
Navigateur (WebGL)
Logo Thanks God
Menu principal de Thanks God : décor 3D vivant derrière le titre Menu · décor 3D vivant
Main divineÉconomie physiqueForteresses à rempartsCréature qui apprendBien / MalBrouillard de guerreLockstep déterministeAudio procédural Main divineÉconomie physiqueForteresses à rempartsCréature qui apprendBien / MalBrouillard de guerreLockstep déterministeAudio procédural
Le jeu

Un genre que personne n'a refait depuis vingt ans

Les god games ont quasiment disparu du marché. Le pari de Thanks God : reprendre les trois piliers du genre, la main, la créature, le village vivant, et les finir. Tout le reste est une couche additive posée sur une base qui tient.

Vue de jeu : château bleu, remparts, main divine, créature et villageois Jour 1 · votre château
🖐️

Main divine

Saisir, transporter, lancer. Posture de prise au survol, elle s'élève au-dessus des bâtiments et n'a de pouvoir que là où porte votre vision.

🪓

Économie physique

Les villageois coupent, fauchent, piochent, puis portent réellement leur récolte jusqu'au dépôt. Rien n'est téléporté.

🏰

Forteresses

Remparts, porte ouvrable d'un clic, poternes réservées à vos unités, soldats et archers postables sur les murs.

⚖️

Bien / Mal

Bénir ou sacrifier : la jauge change votre main, votre créature et vos bonus. Le monde se souvient de ce que vous êtes.

🌫️

Brouillard de guerre

Terrain toujours visible, troupes ennemies seulement dans votre vision. Minimap cliquable et menu pause.

🧟

Mode survie

La nuit, les morts se relèvent contre vous. Difficulté choisie au lobby, victoire en tenant cinq nuits, alliance possible avec le rival.

La main

Un dieu n'a pas de voix. Il a une main.

Tout passe par elle. Attraper un paysan et le déposer sur un arbre, une ferme, une mine. Le relâcher en bougeant vite pour le lancer. Balayer quelqu'un d'un geste pour la claque. Chaque villageois pris en main révèle sa fiche : son bonheur, son cœur, ses enfants, sa passion, le métier où il excelle.

  • 01Prise contextuelle. Villageois, soldat, arbre, rocher, animal : tout s'attrape, et la main change de posture selon ce qu'elle tient.
  • 02Dépôt intelligent. Un soldat posé sur une ferme raccroche l'épée. Six villageois dans une caserne sortent en troupe.
  • 03Offrande. Déposer quelque chose contre votre créature : elle le prend et en fait ce que bon lui semble.
MaléfiqueBienveillant
La main divine porte une villageoise, sa fiche apparaît à gauche Agnès · amoureuse de Foulque · excelle en mineur
La créature

Elle apprend de ce que vous faites

Un loup mythique aux runes lumineuses qui reflètent votre alignement. Il garde, patrouille, récolte, projette les ennemis d'un coup de patte. Surtout, il a un caractère : cinq lubies, une réputation qui ne fait peur aux villageois que si elle est méchante, un carnet de souvenirs, des rêves.

L'apprentissage se fait par l'action. Punie, elle arrête cette action précise. Caressée, elle la refait. Ses états d'âme passent par des bulles façon dessin animé : nuage vaporeux pour les pensées, emoji nu animé pour les réactions vives, peur, joie, pleurs.

  • 🐺Sélection au clic droit, ordre au clic gauche : terrain, elle garde. Arbre, elle récolte. Cible, elle attaque.
  • 💤Une bulle persistante quand elle dort, agrandie après un retour joueur « c'est trop petit ».
La créature loup à côté de la main divine, avec une bulle d'émotion Caresse · bulle d'émotion
« Car un Dieu n'a pas de voix. Un Dieu a une main. Ta main. »
Cinématique d'introduction · narrée, synchronisée sur la voix off
Multijoueur

Deux dieux, deux PC, un seul monde

Le multijoueur est le chantier prioritaire. Plutôt que d'envoyer l'état du monde en boucle, chaque PC simule la partie entière à partir des mêmes ordres, dans le même ordre : c'est le lockstep déterministe, la technique des RTS classiques.

Écran multijoueur : héberger une partie avec un code à quatre chiffres Héberger · code à 4 chiffres
La nuit tombe : lucioles, torches, villageois qui rentrent Nuit · lucioles et torches
📜

18 types d'ordres

Chaque action du joueur devient un ordre daté. Prendre, déposer, construire, attaquer, bénir : tout voyage sur le réseau, jamais l'état.

🎲

Dé commun

Un générateur aléatoire à graine partagée pour la simulation. Le décoratif, sons, fumée, lucioles, reste sur Math.random pour ne pas coupler le visuel à la synchro.

🔍

Désync-mètre

À chaque pas, un résumé chiffré de tout l'état. Touche F8 : vert si les deux PC sont identiques, rouge avec le pas exact de divergence sinon.

🐍

Relais Python

Le serveur sert les fichiers et relaie le WebSocket entre deux salles, en pure bibliothèque standard. Rien à installer, un tunnel Cloudflare pour jouer à distance.

Sous le capot

Zéro moteur, zéro asset binaire

Tous les modèles sont construits en code : le château, les remparts, les arbres low-poly, les villageois, le loup et ses animations. Le son aussi : ambiances, pas, épées, musique sont générés par WebAudio. Un mode « Graphismes+ » ajoute l'occlusion ambiante, le bloom et l'étalonnage couleur.

  • 01Ombres 4096² avec cull des arbres dans le brouillard : seuls ceux autour de vos unités projettent une ombre.
  • 02Pool fixe de lumières. Ajouter une lumière en jeu recompile tous les shaders, donc les torches piochent dans un pool créé au démarrage.
  • 03Pathfinding A* qui contourne les bâtiments, murs restant escaladables pour la créature.
  • 04Village vivant. Couples, naissances, deuil, rats et maladie quand les morts traînent, micro-événements à résoudre à la main.
Règle d'assaut · combat_rules.js
AttaquantRempartPorteBâtiment
Épéiste, piquier, archer0 %5 %100 %
Créature mythique100 %100 %100 %
Engin de siège (à venir)100 %100 %100 %
// Effets purement visuels : hors simulation, jamais le dé commun. export const SOLDIER_GATE_DAMAGE_MULT = 0.05; export function fortificationDamageMult(attacker, target) { // Créatures mythiques et futurs engins de siège ne sont pas des soldats. if (!attacker || attacker.kind !== 'soldier' || !target) return 1; if (target.type === 'wall') return 0; if (target.type === 'gate') return SOLDIER_GATE_DAMAGE_MULT; return 1; }
Vue large de la forêt, lacs et nuages, tout modélisé en code Forêt, lacs, nuages · 100 % procédural
24 000
lignes de JavaScript, 50 modules ES
0
moteur de jeu, framework ou asset 3D importé
15
branches actives, une par chantier
2
dieux sur un même monde, en lockstep
Stack

Le navigateur comme console

Rien à installer pour jouer : un serveur statique et un navigateur moderne. Le prototype se lance d'un double-clic et s'expose en ligne par tunnel.

Three.js · rendu WebGL EffectComposer · GTAO, Bloom, Grade WebAudio · sons et musique générés ES modules · sans bundler Python · serveur + relais WebSocket Cloudflare Tunnel · jouer à distance Lockstep · simulation déterministe A* · pathfinding sur grille

Prototype privé en développement, testé par des joueurs proches. Pas encore de démo publique.