BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Jeu inspirer du liar's bar
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Une petite salle d'arcade en ligne. Chaque jeu vit dans son dossier sous public/games/, le site d'accueil les présente.README 전문 보기 ↗
Une petite salle d'arcade en ligne. Chaque jeu vit dans son dossier sous
public/games/, le site d'accueil les présente.
Les jeux
server/street.js),
un mode Arcade (sept combats, son rival, un boss, une fin pour chaque
combattant, et des pièces à remettre), des replays (le moteur rejoue les
entrées : on revoit ses combats, on garde les plus beaux), des murs qu'on
brise pour passer dans la zone d'à côté, trois tenues par combattant, un
héros qui monte de niveau dans l'histoire et débloque des coiffures, des
tenues et des accessoires, des commandes tactiles réglables,
l'entraînement avec cinq défis de combos par combattant, un tutoriel
jouable, une difficulté Récit pour l'histoire, et la progression
sauvegardée en ligne avec le profil de l'arcade ; commandes tactiles sur
téléphone. Moteur dans public/shared/street/ (testé sans écran), dessin,
arènes, effets et cinématiques dans public/games/street-combat/js/.public/shared/fiesta/, tables en ligne dans server/fiesta.js.public/games/baltrou/js/musique.js) : un thème pour la table, un
pour la boutique, et un par boss. Le moteur
(public/shared/baltrou/) tient toute la run dans un objet JSON, hasard
compris : elle se range dans le navigateur et se reprend.Dans tous les jeux en ligne, une connexion qui tombe en pleine partie n'est
pas un départ : la place attend son joueur cinq minutes (un bot joue pour lui
quand c'est son tour), et il la reprend en revenant — même après avoir fermé
l'application. Le retour est automatique : la connexion se vérifie dès que
l'appli revient au premier plan, et rouvrir le jeu ramène droit dans la partie
(l'accueil de l'arcade propose aussi de la rejoindre). Voir server/hub.js,
public/shared/connexion.js et public/shared/reprise.js.
node server/index.js # ou : npm start
Aucune installation n'est nécessaire pour jouer en local : le serveur
n'utilise que les modules fournis par Node (≥ 18), y compris son
implémentation WebSocket, écrite à la main dans server/wsproto.js.
npm test # règles, équilibrage, bots, parties en ligne
Huit champions, 30 PV chacun. Chaque tour alterne un recrutement — de l'or, une taverne à rangs, un plateau de sept places — et un combat automatique contre un autre survivant. Le perdant perd le rang de taverne du vainqueur plus les étoiles de ses survivants, sous un plafond qui monte avec les tours.
TEMPO partagée avec le serveur, qui sait ainsi
quand relancer le recrutement.modes.js) : classique ; Quête (au tour 3, une quête parmi trois, qui
rapporte un serviteur exclusif, des cartes spéciales ou de l'or) ;
Anomalie (une ou deux règles spéciales pour toute la table). En local,
BRASIER_MODE=quete ou anomalie impose le genre.agir que les joueurs : mêmes
règles, même or, même réserve. Ils prennent les chaises vides au lancement,
et la chaise de quiconque quitte la partie en cours.Un jeu de rôle solo. On choisit un seul héros parmi cinq ; il part niveau 1 au pied du donjon. L'histoire tient en dix chapitres : cinq pour monter jusqu'au Dragon Cendré, cinq pour descendre vers ce qu'il gardait. Chaque chapitre a son boss, sa cinématique, et se débloque quand on l'atteint ; l'écran « Chapitres » les fait défiler et permet d'y recommencer une aventure.
shared/raid/carte.js) : chaque acte est une carte à chemins,
sept paliers et le boss au sommet. On choisit sa prochaine salle parmi
celles que son chemin relie : combat, élite, événement, marchand, feu de
camp, trésor, rencontre.personnages.js) : des compagnons se présentent en route —
toujours après le boss des trois premiers actes — jusqu'à quatre
personnages. Chacun a ses points de vie et de mana, son niveau (jusqu'à 12),
ses deux sorts (l'ultime s'apprend au niveau 3) et trois pièces
d'équipement (equipement.js) : arme, armure, bijou.bataille.js) : chaque manche, tout le monde agit une fois,
du plus rapide au plus lent. À son tour, un personnage attaque, lance un
sort, se défend ou utilise un objet. Les ennemis annoncent leur attaque
chargée à l'avance ; cinq écoles de magie se percent en cycle
(×1.5 / ×0.7). Les rencontres se règlent sur la taille du groupe.aventure.js) : expérience et or à chaque victoire, un
don à choisir aux niveaux 3, 5, 7 et 9, la chance qui pèse sur les
critiques, le butin et les choix risqués, et des événements dont les
réponses rendent plus fort, coûtent de la vie ou pèsent sur les boss à
venir.talents.js, reliques.js) : un point de
talent par niveau à placer dans deux branches par rôle ; des reliques de
groupe lâchées par les boss, vendues en boutique ou gagnées en quête ; deux
quêtes proposées par acte. En combat, chaque effet en cours se lit en
pastille verte ou rouge, et se détaille en touchant le combattant.games/raid/js/histoire.js, cinematique.js).eveils.js) : un compagnon revenu de voyage gagne une
compétence d'éveil, propre à chaque personnage.L'équilibrage est mesuré, pas deviné : un joueur automatique (ia.js, le
même que le bouton « Auto » du combat) joue des aventures entières en tête de
série fixe. Il sort du premier combat avec les deux tiers de sa vie, perd de
temps en temps contre un boss, et arrive au Dragon avec un groupe de quatre.
Les personnages et les créatures sont dessinés en pixel art paramétrique : des grilles de 16×16 décrites en données, colorées par l'école, teintées par le peuple — un orc n'a pas la peau d'un nain — et décalées pour chaque personnage. Le reste de l'animation — l'élan, le cut-in, l'encaissement, la chute — est affaire de transformations CSS déclenchées par les événements que renvoie le moteur : rien n'apparaît à l'écran qui ne soit passé par une règle.
Tout est original : noms, personnages, sorts, bestiaire et dessins. Seuls les codes du genre sont repris.
On entend un son de une à deux secondes et demie, puis on l'imite au micro. Le moteur compare chaque prise au modèle sur trois axes — mélodie (45 %), rythme (35 %) et attaques (20 %) — par autocorrélation de hauteur et corrélation d'enveloppes. Le silence qui entoure la prise est retiré avant de noter, pour la référence comme pour le joueur : sans cela, une imitation parfaite enregistrée dans une fenêtre de quatre secondes ne valait qu'une quarantaine de points.
À partir de la deuxième manche, une roue distribue bonus et sabotages. Un sabotage déforme la restitution — saturée, hachée, en écho ou remplacée par un canard — mais jamais la note, calculée sur le signal propre.
Deux équipes de trois. Les cartes arrivent toutes seules en main ; chacune coûte du ki, qui remonte d'autant plus vite que le combattant est rapide.
Les combattants sont dessinés en pixel art, générés à partir de grilles de 16×16 décrites en données plutôt qu'en images : cinq poses — repos, garde, frappe, encaisse, vaincu — déclinées en trois carrures selon les statistiques, et colorées par une palette propre à chacun. Aucun fichier à charger, donc rien qui manque hors connexion.
Le combat avance par ticks de 100 ms. Les joueurs n'attendent pas leur tour : ils envoient des intentions que le moteur applique au tick suivant. C'est ce qui donne la nervosité d'un jeu d'action tout en restant synchronisable sur le réseau, les actions étant discrètes.
L'équilibrage est tenu par les tests : chaque combattant dispose du même budget de points, et une simulation vérifie qu'aucun n'écrase ni ne subit le roster, et que les trois niveaux de difficulté sont bien ordonnés.
Vingt cartes : 6 Rois, 6 Dames, 6 As, 2 Jokers. À chaque manche la table réclame une figure, et chacun reçoit cinq cartes.
public/
index.html accueil du hub
css/hub.css
sw.js service worker : installation et jeu hors connexion
manifest.webmanifest identité « Insert Coin »
icons/
shared/ moteurs de règles, partagés client ⇄ serveur
engine.js Liar's Saloon : règles pures, aléa injecté
ai.js Liar's Saloon : bots
hasard.js aléa déterministe, partagé par les jeux
zenith/ ZÉNITH : roster, moteur, adversaires, sprites
mimic/ ÉCHO : analyse du son, sons de référence, manches
brasier/ BRASIER : serviteurs, héros, combat, partie, bots
raid/ RAID : écoles, héros, bestiaire, personnages,
équipement, carte, bataille, aventure, sprites, ia
skullking/moteur.js SKULL KING : cartes, plis, points, partie, bots
games/liars-saloon/
index.html
manifest.webmanifest identité « Liar's Saloon »
icons/
css/{base,menu,table}.css
js/{main,ui,offline,online,sfx}.js
games/zenith/ même forme : index, manifest, icônes, css, js
games/brasier/
js/{main,net,ui,arene,regles,sfx}.js navigation, réseau, recrutement, combat rejoué
games/echo/
js/{main,offline,online}.js navigation, partie sur un appareil, en ligne
js/{karaoke,avatars}.js courbe en direct, photos et bonhommes
js/{ui,audio,regles}.js rendu, micro et sabotages, règles
games/raid/
js/{main,combat,textes,regles,sfx}.js écrans de l'aventure, combat, textes, règles, sons
games/skull-king/
js/{main,table,enligne}.js solo, dessin de la table, partie en ligne
js/{cartes,score,regles,sfx}.js dessin des cartes, feuille de score, règles, sons
server/
index.js serveur autonome : statique + WebSocket
wsproto.js RFC 6455 minimal, sans dépendance
hub.js routeur : dirige chaque connexion vers son jeu
saloon.js salons de Liar's Saloon
zenith.js arènes de ZÉNITH
mimic.js salons d'ÉCHO
brasier.js tables de BRASIER, bots compris
skullking.js tables de SKULL KING, bots compris
fiesta.js tables de FIESTA, ordis compris
api/
ws.js même logique, exposée comme Function Vercel
test/
engine.test.js Liar's Saloon
zenith.test.js ZÉNITH
echo.test.js ÉCHO
raid.test.js RAID
skullking.test.js SKULL KING
enligne.test.js sessions et reprises en ligne, tables de SKULL KING
RAID n'a pas de module serveur : c'est un jeu solo, tout tient dans l'onglet.
Deux principes structurent le tout :
public/shared/ ne
connaissent ni le DOM ni Node. Le mode hors-ligne les fait tourner dans
l'onglet ; le mode en ligne les fait tourner sur le serveur. Les deux
produisent les mêmes états, donc l'interface est identique dans les deux
cas — et les règles ne peuvent pas diverger entre les modes.public/games/<slug>/.GAMES dans public/index.html.Le dépôt se déploie tel quel sur Vercel : public/ est servi en statique et
api/ws.js devient une Function WebSocket.
Limite du mode en ligne sur Vercel. Les salons vivent en mémoire. Les Functions pouvant être servies par plusieurs instances, deux joueurs arrivant sur des instances différentes ne se verraient pas. À faible trafic (des amis qui se rejoignent en même temps) cela fonctionne. Pour un usage plus large, faites tourner
server/index.jssur une machine unique (Railway, Fly, Render, un VPS…), qui n'a aucune dépendance.
Le site est une application installable (PWA) : depuis le navigateur du téléphone, « Ajouter à l'écran d'accueil » (Safari : bouton Partager ; Chrome : menu ⋮) pose une icône qui ouvre le jeu en plein écran, sans barre d'adresse.
Chaque jeu est installable séparément, avec sa propre icône et son propre point d'entrée : le hub Insert Coin depuis l'accueil, puis RAID, ÉCHO, ZÉNITH et Liar's Saloon depuis leurs pages.
Une fois la page visitée une première fois, public/sw.js met la coquille en
cache : le mode hors-ligne devient jouable sans aucune connexion, en
avion comme dans le métro. Le mode en ligne, lui, a évidemment besoin du
réseau. La stratégie de cache est « réseau d'abord, cache en secours » : une
mise à jour du site arrive dès que la connexion revient, sans risque de
servir une version périmée.
La mise en page s'adapte aux deux orientations. En paysage — où la hauteur est la ressource rare — le tapis se dimensionne sur la hauteur disponible et la barre du bas passe en ligne, pour rendre au jeu la place des boutons.
prefers-reduced-motion est respecté : la distribution, la rotation du
barillet et les secousses d'écran sont réduites ou supprimées. Tout est
jouable au clavier — Entrée pour poser, L pour accuser, Échap pour
fermer les règles. Le son se coupe depuis le menu et le choix est mémorisé.