Guide

Källkod till poolspel: insidan av ett HTML5-paket för 8-boll

Fysik, regler, CPU och sparade data i separata filer: vad källkoden till Velvet Pool innehåller och vad en köpare ändrar först.

Velvet Pool-grafik: kön bakom den vita bollen på ett grönt bord, med bollarna 3, 8 och 4 nära ett hörnhål.

Källkod till poolspel är värd att köpa när tre saker ligger i separata, läsbara filer: bollfysiken, reglerna för 8-boll och datormotståndaren. Om de är hopflätade blir varje ändring av dukens färg eller CPU:ns svårighetsgrad en felsökningssession. Velvet Pool, vår 8-bollsmall, håller isär dem, och den här guiden går igenom paketet fil för fil.

Vi går igenom hur koden är organiserad, vad en köpare oftast ändrar först, hur du lägger ut spelet eller paketerar det som app, vad licensen tillåter och vad utgåvan utelämnar. Varje filnamn nedan kommer från köparguiden som följer med spelet.

Den korta versionen: Velvet Pool är vanlig JavaScript på WebGL2, utan 3D-bibliotek och utan byggsteg. Du redigerar en fil, kopierar den till spelmappen och laddar om sidan.

Vad källkoden till poolspelet innehåller

Velvet Pool är ett färdigt 8-bollsspel, inte en motor eller en startmall. Nedladdningen har fyra mappar: game/ är det färdiga paketet att ladda upp, source/ är samma spel som utvecklarutgåva med en README, package.json och tester, documentation/ innehåller den illustrerade guiden på engelska och portugisiska och THIRD-PARTY-LICENSES/ sparar licenstexterna för typsnitten.

Spelet i sig spelar 8-boll med regelbrott (fouls), ball-in-hand (fri placering av vit boll) och heltonade eller randiga bollar. Det finns tre CPU-nivåer (Easy, Medium och Hard), ett gratis övningsbord med undo (ångra), bollplacering och re-rack (ny uppställning) samt matcher för två spelare på samma enhet. Spelarna lägger follow (framåtspinn), draw (bakåtspinn) eller sidospin på vita bollen, och lokala prestationer låser upp fem duksfärger och fem köstilar. Gränssnittet finns på 14 språk.

  • Stack: vanilla JavaScript, ES-moduler och WebGL2. Ingen Three.js och inget annat kodbibliotek.
  • Kod: vanlig, formaterad JavaScript i source/src och game/src. Inget är minifierat eller paketerat.
  • Tester: valfria, med Node.js 20 eller nyare. De kontrollerar fysik, 8-bollsregler, CPU-matcher och översättningsnycklar.
  • Version vid skrivandet: 1.1.0, uppdaterad 22 oktober 2026.

Se Velvet Pool-sidan, demon och manualen

Hur filerna är organiserade

game/ och source/ har samma struktur, så en sökväg i den ena mappen pekar på samma fil i den andra. Den uppdelning som betyder mest för ett poolspel går mellan src/core/ (simulering och regler) och src/game/ (allt spelaren rör vid).

  • src/core/physics.js: bollsimulering, spin och studsrespons vid bandet.
  • src/core/rules.js: reglerna för 8-boll och beslut om regelbrott.
  • src/core/ai.js: hur CPU:n väljer sitt slag.
  • src/game/controls.js: sikte, kraft och spinindata.
  • src/game/progress.js: prestationer, dukar, köer och poängsättning i matcher.
  • src/game/i18n.js: texterna på 14 språk, listade i LANGS.
  • src/game/localRecords.js: den lokala poänghistoriken.
  • src/game/audio.js: ljudeffekter och musikuppspelning.
  • css/style.css och css/fonts.css: tema, responsiv layout och typsnittsdeklarationer.
  • assets/: grafik, ljud och typsnitt, med logotypfilerna i assets/logo/.

Eftersom fysik, regler och CPU är separata moduler kan du göra CPU:n mer förlåtande utan att röra hur bollarna rör sig, eller ändra en regel om fouls utan att justera bandens studs. Den separationen är det viktigaste att leta efter i all biljardkod du köper.

Vad en köpare ändrar först

De flesta projekt följer samma ordning. Börja med det spelaren ser, gå sedan vidare till det de känner, och lämna reglerna till sist, eftersom reglerna är det lättaste stället att införa en bugg.

  1. Varumärke: ersätt logotypfilerna i assets/logo/ och justera de matchande storlekarna i CSS:en. White label är tillåtet, så ditt namn eller din kunds kan ersätta vårt.
  2. Bordets utseende: färger och typsnitt finns i css/style.css. Definitioner av dukar och köer finns i progress.js. Håll deras ID:n stabila, annars förlorar spelarna de kosmetiska föremål de redan låst upp.
  3. Texter och språk: varje sträng finns i i18n.js. Redigera den formulering du behöver. Listan över språk finns i LANGS.
  4. CPU-svårighet: valet av slag finns i ai.js. Justera en nivå i taget och spela en hel match mot den.
  5. Fysik: friktion, spin och studsrespons finns i physics.js. Små ändringar får stor effekt här, så kör testerna efter varje.
  6. Regler: egna varianter hör hemma i rules.js. Testa fouls och ball-in-hand för hand, inte bara med sviten.

Arbetsgången är densamma för alla: redigera filen i source/, kopiera den till samma sökväg i game/, servera mappen över HTTP och ladda om. Köparguiden föreslår att du ändrar en funktion i taget och testar menyn, en match, paus, resultatskärmen och en omladdning efter varje ändring.

Lägg ut det, bädda in det eller paketera det som app

Hosting är den enklaste delen. Ladda upp allt i game/ till en mapp som public_html/velvet-pool/, behåll undermapparna och öppna adressen. Det finns ingen npm, terminal, PHP, databas eller konto på serversidan. En tjänst som serverar statiska filer över HTTPS räcker.

  • Öppna inte index.html genom att dubbelklicka på den: webbläsare blockerar spelets moduler på file://. För ett lokalt test kör du python -m http.server 8765 inne i game/.
  • Om skärmen förblir tom, kontrollera att WebGL2 är aktiverat och att filnamnen behåller stora och små bokstäver.
  • Om webbläsaren vägrar en modul skickar din server .js med fel MIME-typ.
  • I en iframe på en portal, tillåt fullskärm och autoplay.

Allt spelet behöver under körning ligger i game/, så ingenting laddas från ett CDN eller en annan sajt. En ny sidladdning når ändå din server, så det är ingen app som kan installeras för användning offline. Spelet fungerar på pekskärmar: spelarna siktar på bordet och drar i kraftkontrollen.

Nativa appprojekt ingår inte i paketet. Vill du ha spelet på Google Play eller i App Store är ett omslag som Capacitor en vanlig väg. Capacitors tillverkare beskriver det som en plattformsoberoende native-runtime för att bygga mobilappar med webbkod. Att bygga och underhålla appprojektet är ditt arbete, eller en tjänst vi offererar separat.

Vad utgåvan utelämnar

Velvet Pool är den lokala webbläsarutgåvan. Den saknar onlinemultiplayer och privata rum, onlineranking, molnkonton och annons-SDK. Två personer kan spela på samma enhet, och personliga poäng från berättigade CPU-matcher sparas i webbläsaren. Övning och matcher på samma enhet sparar ingen poäng.

Onlinespel kräver egen server och egen utveckling. Det är ett riktigt projekt, så budgetera för det från början i stället för att räkna med att mallen växer in i det. Behöver din katalog fler sportspel säljs även dessa två som färdiga webbläsarutgåvor.

Puttide: 3D-minigolf med 30 hål, också i vanlig JavaScript

Golazo: bordsfotboll med 50 landslag

Licens och pris i ett stycke

Velvet Pool har listpriset 39 USD. Till och med 30 november 2026 ger en Black Friday-kampanj 15 % rabatt på varje mall, så den kostar 33,15 USD, och order med två eller fler mallar får ytterligare 5 % till 20 % rabatt. Varje köp är en evig, icke-exklusiv licens för en slutprodukt, din eller en kunds. Du får ändra koden, grafiken och ljudet inom den produkten och sätta ditt eget varumärke på den. Spelarna kan nå den gratis eller via annonser. Du får inte sälja mallen eller dess kod för sig. Sex månaders support ingår, eller 12 med tillägget i kassan. Skräddarsytt arbete, hosting och integration med SDK eller portal offereras separat.

Läs hela licens- och supportvillkoren

Vanliga frågor

Är källkoden till poolspelet läsbar eller minifierad?

Läsbar. JavaScript-koden i source/src och game/src är vanlig och formaterad, utan minifierade eller paketerade filer.

Behöver jag Node.js eller ett byggsteg?

Nej. Du redigerar filerna i source/ och kopierar dem till game/. Node.js 20 eller nyare behövs bara om du vill köra de valfria testerna.

Kan jag göra CPU:n lättare eller svårare?

Ja. CPU:ns val av slag finns i src/core/ai.js, separat från fysiken, så du kan justera det utan att ändra hur bollarna rör sig.

Fungerar det på telefoner?

Ja. Pekinmatning stöds och kontrollerna anpassar sig efter skärmen. WebGL2 krävs, och prestandan beror på enheten, så testa på de telefoner dina spelare använder.

Behåller spelarna sina framsteg om jag flyttar spelet till en ny domän?

Nej. Sparade data hör till webbläsarens ursprung, så en domänändring startar spelarna från början. Välj den slutgiltiga adressen före lansering.

Kan jag lägga till onlinemultiplayer?

Inte med den här utgåvan ensam. Det kräver egen server och utveckling. Vi kan offerera det som skräddarsytt arbete.

Vem den här poolkoden passar

Den passar en portal eller sajt som vill ha ett 8-bollsspel i sitt utbud, en byrå som levererar ett varumärkt biljardspel till en kund och en utvecklare som vill läsa hur poolfysik och regler är skrivna utan ett 3D-bibliotek i vägen. Den passar sämre om din plan bygger på onlinematcher eller en gemensam topplista.

Spela demon på en telefon och en laptop innan du köper, och öppna manualens filkarta. Om uppdelningen mellan fysik, regler och CPU stämmer med hur du tänker arbeta är resten några eftermiddagars ändringar.

Prova Velvet Pool-demon och köp licensen

Behöver du ändringar eller flera licenser? Begär en offert