Guide

Kildekode til poolspil: indblik i 8-ball-pakken Velvet Pool

Fysik, regler, CPU og gemte data i separate filer: hvad Velvet Pool-kildekoden indeholder, og hvad en køber ændrer først.

Velvet Pool-grafik: køen rettet mod den hvide kugle på et grønt bord, med kuglerne 3, 8 og 4 ved et hjørnelomme.

Kildekode til poolspil er et godt køb, når tre ting ligger i separate, læsbare filer: kuglefysikken, 8-ball-reglerne og computermodstanderen. Er de viklet ind i hinanden, bliver hver ændring af dugens farve eller CPU'ens sværhedsgrad til en fejlsøgningssession. Velvet Pool, vores 8-ball-skabelon, holder dem adskilt, og denne guide gennemgår pakken fil for fil.

Vi dækker, hvordan koden er organiseret, hvad en køber typisk ændrer først, hvordan den hostes eller pakkes som app, hvad licensen tillader, og hvad udgaven udelader. Alle filnavne nedenfor stammer fra købervejledningen, der følger med spillet.

Kort fortalt: Velvet Pool er almindelig JavaScript på WebGL2, uden 3D-bibliotek og uden build-trin. Du redigerer en fil, kopierer den til spilmappen og genindlæser siden.

Hvad denne kildekode til poolspil indeholder

Velvet Pool er et færdigt 8-ball-spil, ikke en motor eller en startpakke. Downloaden har fire mapper: game/ er den færdige build, klar til upload, source/ er det samme spil som udviklerudgave med en README, package.json og tests, documentation/ indeholder den illustrerede guide på engelsk og portugisisk, og THIRD-PARTY-LICENSES/ gemmer licensteksterne til skrifttyperne.

Selve spillet spiller 8-ball med fouls, ball-in-hand og solids eller stripes (hele eller halve kugler). Der er tre CPU-niveauer (Easy, Medium og Hard), et gratis træningsbord (Practice) med undo, kugleplacering og re-rack, og kampe for to på én enhed. Spillerne tilføjer follow, draw eller side spin til hvidkuglen, og lokale achievements låser fem dugfarver og fem kø-stilarter op. Grænsefladen findes på 14 sprog.

  • Stak: almindelig JavaScript, ES-moduler og WebGL2. Ingen Three.js eller andre kodebiblioteker.
  • Kode: ren, formateret JavaScript i source/src og game/src. Intet er minificeret eller samlet i en bundle.
  • Tests: valgfri, med Node.js 20 eller nyere. De kontrollerer fysik, 8-ball-regler, CPU-kampe og oversættelsesnøgler.
  • Version på skrivetidspunktet: 1.1.0, opdateret 22. oktober 2026.

Se Velvet Pool-siden, demoen og manualen

Sådan er filerne organiseret

game/ og source/ har samme layout, så en sti i den ene mappe peger på samme fil i den anden. Den opdeling, der betyder mest for et poolspil, er mellem src/core/ (simulering og regler) og src/game/ (alt det, spilleren rører ved).

  • src/core/physics.js: kugle-simulering, spin og bandrespons.
  • src/core/rules.js: 8-ball-regler og fouldommere.
  • src/core/ai.js: hvordan CPU'en vælger sit stød.
  • src/game/controls.js: input til sigte, styrke og spin.
  • src/game/progress.js: achievements, dugfarver, køer og kampscoring.
  • src/game/i18n.js: teksterne på 14 sprog, listet i LANGS.
  • src/game/localRecords.js: den lokale scorehistorik.
  • src/game/audio.js: effekter og afspilning af musik.
  • css/style.css og css/fonts.css: tema, responsivt layout og skriftdeklarationer.
  • assets/: grafik, lyd og skrifttyper, med logofilerne i assets/logo/.

Fordi fysik, regler og CPU er separate moduler, kan du gøre CPU'en mere tilgivende uden at røre ved, hvordan kuglerne bevæger sig, eller ændre en foul-regel uden at justere bandene. Den adskillelse er det vigtigste, du skal kigge efter i enhver billardkode, du køber.

Hvad en køber ændrer først

De fleste projekter følger den samme rækkefølge. Start med det, spillerne ser, gå derefter til det, de mærker, og lad reglerne stå til sidst, for regler er det letteste sted at indføre en fejl.

  1. Branding: erstat logofilerne i assets/logo/ og juster de tilsvarende størrelser i CSS'en. White label er tilladt, så dit navn eller din kundes kan erstatte vores.
  2. Bordets udseende: farver og skrifttyper ligger i css/style.css. Definitionerne af dugfarver og køer ligger i progress.js. Hold deres ID'er stabile, ellers mister spillerne de kosmetiske ting, de allerede har låst op.
  3. Tekster og sprog: alle strenge ligger i i18n.js. Ret den formulering, du har brug for; listen over sprog ligger i LANGS.
  4. CPU-sværhedsgrad: valg af stød ligger i ai.js. Juster ét niveau ad gangen, og spil en hel kamp mod den.
  5. Fysik: friktion, spin og bandrespons ligger i physics.js. Små ændringer får stor effekt her, så kør testene efter hver enkelt.
  6. Regler: husvarianter hører hjemme i rules.js. Test fouls og ball-in-hand i hånden og med testpakken.

Arbejdsgangen er den samme for dem alle: ret filen i source/, kopier den til samme sti i game/, server mappen over HTTP og genindlæs. Købervejledningen foreslår, at du ændrer én funktion ad gangen og tester menuen, en kamp, pause, resultatskærmen og en genindlæsning efter hver ændring.

Hosting, indlejring eller pakning som app

Hosting er den enkleste del. Upload alt inde i game/ til en mappe som public_html/velvet-pool/, behold undermapperne, og åbn adressen. Der er ingen npm, terminal, PHP, database eller konto på serversiden. En plan, der serverer statiske filer over HTTPS, er nok.

  • Dobbeltklik ikke på index.html: browsere blokerer spilmodulerne på file://. Til en lokal test kører du python -m http.server 8765 inde i game/.
  • Hvis skærmen forbliver tom, så tjek at WebGL2 er aktiveret, og at filnavnene har samme store og små bogstaver.
  • Hvis browseren afviser et modul, sender din server .js med en forkert MIME-type.
  • Inde i et iframe på en portal skal du tillade fuldskærm og autoplay.

Alt, spillet har brug for under kørsel, ligger inde i game/, så intet hentes fra et CDN eller en anden side. En ny sideindlæsning rammer stadig din host, så det er ikke en app, der kan installeres til offline brug. Den kører på touchskærme: spillerne sigter på bordet og trækker i styrkekontrollen.

Native app-projekter indgår ikke i pakken. Vil du have spillet på Google Play eller App Store, er en indpakning som Capacitor en almindelig vej; udviklerne beskriver den som en tværplatforms native runtime til mobilapps bygget med webkode. At bygge og vedligeholde butiksprojektet er dit arbejde, eller en tjeneste, vi giver tilbud på særskilt.

Hvad udgaven udelader

Velvet Pool er den lokale browserudgave. Den har ingen online multiplayer eller private rum, ingen online-rangliste, ingen skykonti og ingen reklame-SDK. To personer kan spille på samme enhed, og personlige scorer fra berettigede CPU-kampe gemmes i browseren. Træning og kampe på samme enhed gemmer ingen score.

Online-spil kræver din egen server og udvikling. Det er et reelt projekt, så budgetter med det fra starten i stedet for at forvente, at skabelonen vokser ind i det. Hvis dit katalog har brug for flere sportsspil, sælges disse to også som færdige browserudgaver, klar til hosting.

Puttide: 3D-minigolf med 30 huller, også i almindelig JavaScript

Golazo: bordfodbold med 50 landshold

Licens og pris i ét afsnit

Velvet Pool koster 39 USD på listepris. Indtil 30. november 2026 giver en Black Friday-kampagne 15 % rabat på alle skabeloner, så den koster 33,15 USD, og bestillinger af to eller flere skabeloner får yderligere 5 % til 20 % rabat. Hvert køb er en evigvarende, ikke-eksklusiv licens til ét slutprodukt, dit eller én kundes. Du må ændre koden, grafikken og lyden i det produkt og sætte dit eget brand på det. Spillerne kan få adgang gratis eller via reklamer. Du må ikke videresælge skabelonen eller dens kode alene. Seks måneders support er inkluderet, eller 12 med tillægget ved kassen; skræddersyet arbejde, hosting og SDK- eller portalintegration tilbydes særskilt.

Læs de fulde licens- og supportvilkår

Ofte stillede spørgsmål

Er koden til poolspillet læsbar eller minificeret?

Læsbar. JavaScript'en i source/src og game/src er ren og formateret, uden minificerede eller samlede filer.

Har jeg brug for Node.js eller et build-trin?

Nej. Du redigerer filerne i source/ og kopierer dem til game/. Node.js 20 eller nyere er kun nødvendigt, hvis du vil køre de valgfri tests.

Kan jeg gøre CPU'en nemmere eller sværere?

Ja. CPU'ens valg af stød ligger i src/core/ai.js, adskilt fra fysikken, så du kan justere den uden at ændre, hvordan kuglerne bevæger sig.

Virker det på telefoner?

Ja. Touch-input understøttes, og kontrollerne tilpasser sig skærmen. WebGL2 kræves, og ydelsen afhænger af enheden, så test de telefoner, dine spillere bruger.

Beholder spillerne deres fremskridt, hvis jeg flytter spillet til et nyt domæne?

Nej. Gemte data hører til browserens origin, så et domæneskifte starter spillerne forfra. Vælg den endelige adresse før lancering.

Kan jeg tilføje online multiplayer?

Ikke med denne udgave alene. Den kræver din egen server og udvikling. Vi kan give et tilbud på det som skræddersyet arbejde.

Hvem denne poolkode passer til

Den passer til et portal eller en side, der vil have et 8-ball-spil i sit katalog, til et bureau, der leverer et brandet billardspil til én kunde, og til en udvikler, der vil læse, hvordan poolfysik og regler er skrevet, uden et 3D-bibliotek i vejen. Den passer dårligere, hvis din plan afhænger af online-kampe eller en fælles rangliste.

Spil demoen på en telefon og en bærbar, før du køber, og åbn manualens filoversigt. Hvis opdelingen mellem fysik, regler og CPU matcher, hvordan du planlægger at arbejde, er resten nogle få eftermiddage med ændringer.

Prøv Velvet Pool-demoen og køb licensen

Har du brug for ændringer eller flere licenser? Bed om et tilbud