Minigolfi mängu lähtekood: augud, füüsika ja 3D-rada
Kuidas Puttide pakett hoiab oma 30 auku, kus asuvad Three.js ja Rapier ning kuidas ostja lisab oma augu.

Minigolfi mängu lähtekood seisab või kukub ühe ülesande järgi: augu lisamine. Ostja, kes tahab bränditud rada, hooajalist taset või kliendi logo rohelisele, avab kõigepealt tasemefailid, ja kui auk on mootorikoodi sees peidus, jääb projekt seisma. Puttides, meie 3D-minigolfi mallis, on igal rajal oma augufail lihtsas JavaScriptis ja juhend kirjeldab, kuidas ühe lisada.
See juhend käib paketist läbi nii, nagu arendaja seda näeb: kaustad, teegid, rajafailid, muudatuste järjekord, majutus ja litsents. Failinimed pärinevad mängu kaasas olevast ostjajuhendist.
Kiire vastus neile, kes ei jaksa lugeda: Puttide on vormindatud JavaScript, joonistamiseks Three.js ja pallifüüsikaks Rapier, mõlemad kaasas. Ehitusammu ei ole, CDN-i ei ole ega serveri koodi.
Mida minigolfi mängu lähtekood sisaldab
Puttide on valmis mäng, millel on 30 auku viies saarerajas: Sunlit Ruins, Lantern Pier, Frost Peaks, Cloud Garden ja Volcano Forge, igaühes kuus auku. Rambid, portaalid, põrkajad ja tuuleveskid muudavad augud väikesteks pusleteks. Igal august saab kolm tähte (lõpetamine, par või parem ja peidetud münt) ning pronksi-, hõbe- ja kuldmedalid premeerivad parimaid voore.
Radade kõrval on päevane väljakutse keeranditega (tuuline, jäine green, raske pall, põrkuvad seinad, coin rush (mündikiirus) või birdie hunt (birdie-jaht)), Locker (kapp), kus mündid ostavad palle, jälgi ja muid kosmeetilisi asju, ning voorud kahele kuni neljale mängijale vahetusega ühes seadmes. Liides on 14 keeles.
- game/: valmis üleslaadimise ehitus, ainus kaust, mida avaldad.
- source/: sama mäng arendaja väljaandena, README ja package.json-iga.
- documentation/: üks illustreeritud juhend inglise ja portugali keeles.
- THIRD-PARTY-LICENSES/: teekide ja fontide litsentsitekstid.
- Versioon 1.1.0, uuendatud 22. oktoobril 2026.
Ava Puttide'i leht: demo, juhend ja hind
Three.js, Rapier ja ülejäänud virn
Palli simuleerib Rapier 3D 0.21.0, mis töötab WebAssembly'na, ja stseeni joonistab Three.js r186. Mõlemad asuvad kaustades lib/three/ ja lib/rapier/ koos litsentsifailidega ning index.html-is on importmap, mis suunab mängu nende juurde. Juhend märgib, et teekide failid on käitumises muutmata ja vormindatud ainult selleks, et neid saaks lugeda.
See on kahel põhjusel oluline. Esiteks ei laadita midagi CDN-ist, seega portaal või klient range turvapoliitikaga vajab ainult oma hosti. Teiseks on teegi uuendamine käsitsi ja teadlik samm: source/package.json loetleb täpsed versioonid ning uued moodulifailid kopeerid vastava lib/ kausta peale, hoides importmap'i teed.
- Three.js r186: MIT-litsents.
- Rapier 3D compat 0.21.0, WebAssembly sisse pakitud: Apache-2.0 litsents.
- Rubik ja Fredoka veebifondid: SIL Open Font License 1.1.
- Kaks muusikapala: music/menu.mp3 ja music/play-1.mp3.
Kus elavad augud, mündid ja tekstid
Teed on samad kaustades source/ ja game/. Rajaandmed on jaotatud saare järgi, mis hoiab iga faili piisavalt lühikesena, et seda ühe istumisega lugeda.
- src/course/courses.js: radade järjekord ja avamise nõuded.
- src/course/holes.js: Sunlit Ruins'i augud, geomeetria, par ja takistused.
- src/course/pier.js, ice.js, lava.js ja sky.js: ülejäänud nelja raja augud.
- src/sim/constants.js: füüsika häälestus.
- src/game/economy.js: pallid, jäljed ja riided koos hindadega.
- src/ui/i18n.js ja selle kaaslased: 14 keele sõnastikud, sealhulgas aukude nimed ja vihjed.
- src/game/localRecords.js: brauseris hoitavad raja rekordid.
- src/audio/audio.js: efektid ja muusika vastendus, funktsioonis probeTracks.
- css/style.css: liidese värvid, fondid ja kohanduvad stiilid.
Augu lisamine, samm-sammult
See on muudatus, mida enamik ostjaid teeb, ja juhend kirjeldab seda mõne reaga. Oleme selle laiendanud järjekorraks, mida ise järgiksime.
- Vali rajafail, kuhu uus auk kuulub, näiteks lava.js Volcano Forge'i jaoks.
- Dubleeri olemasolev augu definitsioon, mis näeb välja lähedane sellele, mida tahad.
- Anna sellele kordumatu id. Olemasoleva id taaskasutamine segab salvestatud edenemist.
- Määra par, tee asend ja augu asend, seejärel liiguta või asenda takistused.
- Lisa auk oma rajale failis courses.js.
- Lisa selle kuvanimi ja vihje sõnastikesse, igas keeles, mida tarnid.
- Mängi see läbi: kontrolli põrkeid, väljaspool ala taastumist ja kõiki kolme tähte, sealhulgas peidetud münti.
Muuda failid source/ kaustas, kopeeri muudetud failid samadele radadele game/ kaustas ning testi, serveerides kausta üle HTTP. package.json-il on serve-skript, või saad käivitada python -m http.server 8765. Node.js on valikuline ja vajalik ainult siis, kui tahad, et npm haldaks teekide versioone.
Ülejäänud muudatused mõistlikus järjekorras
- Bränd ja värvid: logo, värvid ja fondid failis css/style.css. White label on lubatud, nii et sinu bränd võib meie asendada.
- Hinnad Locker'is: economy.js. Odavamad kosmeetilised esemed teevad lihtsa saidi sõbralikumaks; kallimad venitavad pikka kampaaniat.
- Tekstid: sõnastus ja vihjed i18n-failides.
- Muusika: kaks kaasasolevat pala võib asendada salvestustega, mille litsentsi sul on. Kopeeri fail ja uuenda selget vastendust failis audio.js (probeTracks); stseeni muusika langeb tagasi mängu muusikale.
- Füüsika: constants.js viimasena ja väikeste sammudena, sest iga auk on häälestatud praeguste väärtuste järgi.
Sarnase projekti jaoks, millel on sama lihtne JavaScript ja üldse mitte 3D-teeki, on meie bassein-mall ehitatud samal viisil.
Velvet Pool: 8-palli piljard lihtsas JavaScriptis ja WebGL2-s
Sunset Rally: 3D-lauatennis üheksamängulise kampaaniaga
Majutus, MIME-tüübid ja rakenduse ümbrised
Laadi kõik kaustast game/ üles kausta nagu public_html/puttide/, hoia alamkaustad ja ava aadress HTTPS-i kaudu. Serveris ei ole vaja npm'i, PHP-d, andmebaasi ega kontot. index.html avamine kettalt ei tööta, sest brauserid blokeerivad moodulid file:// kaudu.
Puttides on üks majutusdetail, mida 2D-mäng ei vaja: füüsika töötab WebAssembly'na. Su server peab saatma .js-failid JavaScripti MIME-tüübiga ja .wasm-failid tüübiga application/wasm. Host, mis selle valesti teeb, näitab tühja ekraani või moodulivea, seega kontrolli seda esimesel päeval.
- Brauseri nõuded: JavaScript, ES-moodulid, WebAssembly ja WebGL2.
- Portaali iframe'is luba täisekraan ja automaatne käivitus.
- Puuteekraanidel: lohista sihtimiseks ja löögiks, kahe sõrmega pööra kaamerat, nipsa suumimiseks.
- Ei ole paigaldatav võrguühenduseta äpp: iga uus laadimine jõuab ikka su hostini.
Natiivseid äpiprojekte paketis ei ole. Kui planeerid poe väljaannet, arvesta ümbrise ja selle testimisega päris telefonidel, sest 3D-füüsikamäng on vanemates seadmetes raskem kui kaardimäng.
Ei sisaldu, ja litsents
See on kohalik brauseriväljaanne: ei mingit võrgumängu ega võrgutubasid, ei võrgu edetabelit, ei pilvekontosid, ei reklaami-SDK-d, ei natiivseid äppe ega hostingut. Raja rekordid, päevane edenemine ja samal seadmel mängitud voorud jäävad mängija brauserisse ning ühtegi tulemust ei laadita üles. Salvestused kuuluvad brauseri päritolule, seega teisele domeenile kolimine alustab mängijaid nullist.
Puttide maksab 39 $; kuni 30. novembrini 2026 viib Black Friday kampaania selle hinnaga 33,15 $-ni ja kahe või enama malli ostmine ühes tellimuses lisab 5–20% komplektisoodustust. Litsents on igavene ja mitteeksklusiivne ühele lõpptootele, sinu või ühe kliendi oma. Võid seda ümber brändida, muuta koodi, graafikat ja heli ning lasta mängijaid sisse tasuta või reklaamidega, aga malli või selle koodi eraldi edasi müüa ei tohi. Tugi kestab kuus kuud või kaksteist pikendusega; kohandatud augud, integratsioonid ja majutus pakutakse päringu peale.
Litsentsi-, toe- ja tagastustingimused täies ulatuses
Korduma kippuvad küsimused
Kas minigolfi lähtekood on TypeScriptis?
Ei. Puttide on lihtne, vormindatud JavaScript kaustades source/src ja game/src, ilma meie enda minimeeritud või kokkupakitud failideta.
Kas ma saan lisada oma augud või rajad?
Jah. Dubleeri auk rajafailis, anna sellele kordumatu id, määra par, tee ja auk, lisa see failis courses.js ning lisa nimi ja vihje keelefailidesse.
Kas see laeb Three.js-i CDN-ist?
Ei. Three.js, Rapier, fondid ja muusika on kõik kaustas game/, seega mäng vajab ainult sinu hosti.
Miks mu host näitab tühja ekraani?
Tavaliselt MIME-tüübid. Serveeri .js JavaScriptina ja .wasm application/wasm-ina, ava mäng HTTP(S) kaudu ja kontrolli, et WebGL2 on lubatud.
Kas sõbrad saavad koos mängida?
Jah, kaks kuni neli mängijat võtavad vahetusega samas seadmes käike. Võrgumäng ei ole selle väljaande osa.
Kas see on sinu jaoks õige minigolfi alus?
Puttide sobib pere- või spordiportaalile, agentuurile, mis ehitab bränditud raja ühele kliendile, ja arendajale, kes tahab näha, kuidas Three.js ja Rapier loetavas koodis koos töötavad. See sobib halvemini projektile, mis vajab esimesest päevast võrgu voore või ühist edetabelit.
Mängi demos täielikku rada telefonil ja loe siis juhendi peatükki augu lisamisest. Kui see peatükk tundub sulle pooleks päevaks tööks, on ülejäänud mäng juba ehitatud.
