Minigolfo žaidimo šaltinio kodas: duobės, fizika ir 3D trasa
Kaip Puttide paketas saugo savo 30 duobių, kur yra Three.js ir Rapier ir kaip pirkėjas prideda savo duobę.

Minigolfo žaidimo šaltinio kodas stovi ar krenta dėl vienos užduoties: duobės pridėjimo. Pirkėjas, norintis prekinio ženklo trasos, sezoninio lygio ar kliento logotipo ant žalios vejos, pirmiausia atidarys lygių failus, o jei duobė paslėpta variklio kode, projektas sustoja. Puttide, mūsų 3D minigolfo šablone, kiekviena trasa turi savo duobės failą paprastu JavaScript, o vadove aprašytas jos pridėjimas.
Šis gidas seka paketą taip, kaip su juo susipažįsta kūrėjas: aplankus, bibliotekas, trasų failus, pakeitimų tvarką, talpinimą ir licenciją. Failų pavadinimai paimti iš pirkėjo gido, pateikiamo su žaidimu.
Trumpas atsakymas netantriems: Puttide yra suformatuotas JavaScript su Three.js piešimui ir Rapier kamuoliuko fizikai, abu įtraukti. Kūrimo žingsnio nėra, CDN nėra ir serverio kodo nėra.
Ką apima minigolfo žaidimo šaltinio kodas
Puttide yra baigtas žaidimas su 30 duobių penkiose salų trasose: Sunlit Ruins, Lantern Pier, Frost Peaks, Cloud Garden ir Volcano Forge, po šešias duobes. Rampos, portalai, bamperiai ir malūnai paverčia duobes mažomis galvosūkiais. Kiekviena duobė suteikia tris žvaigždes (baigti, par ar geriau, paslėpta moneta), o bronzos, sidabro ir aukso medaliai apdovanoja geriausius raundus.
Be trasų yra dienos iššūkis su posūkiu (Windy – vėjuota, Icy green – ledinis žalias, Heavy ball – sunkus kamuoliukas, Bouncy walls – šokinėjančios sienos, Coin rush – monetų antplūdis, Birdie hunt – paukštienos medžioklė), Locker skyrius, kuriame monetomis perkami kamuoliukai, pėdsakai ir kiti kosmetiniai daiktai, ir raundai dviem–keturiems žaidėjams, ėjimus atliekantiems iš eilės viename įrenginyje. Sąsaja pateikiama 14 kalbų.
- game/: paruoštas įkelti žaidimas, vienintelis aplankas, kurį publikuojate.
- source/: tas pats žaidimas kūrėjo leidimu, su README ir package.json.
- documentation/: vienas iliustruotas gidas anglų ir portugalų kalbomis.
- THIRD-PARTY-LICENSES/: bibliotekų ir šriftų licencijų tekstai.
- 1.1.0 versija, atnaujinta 2026 m. spalio 22 d.
Atidarykite Puttide puslapį: demo, vadovas ir kaina
Three.js, Rapier ir likęs rinkinys
Kamuoliuką modeliuoja Rapier 3D 0.21.0, kuris veikia kaip WebAssembly, o scena piešiama su Three.js r186. Abi bibliotekos yra lib/three/ ir lib/rapier/ aplankuose su savo licencijų failais, o index.html turi importo žemėlapį, nukreipiantį žaidimą į jas. Vadove nurodyta, kad bibliotekų failų elgsena nepakeista ir tik suformatuoti, kad juos būtų galima skaityti.
Tai svarbu dviem priežastimis. Pirma, niekas neįkeliama iš CDN, todėl portalui ar klientui su griežta saugumo politika reikia tik jūsų serverio. Antra, bibliotekos atnaujinimas yra rankinis, tyčinis veiksmas: source/package.json nurodo tikslias versijas, o naujus modulių failus nukopijuojate į atitinkamą lib/ aplanką ir paliekate importo žemėlapio kelius.
- Three.js r186: MIT licencija.
- Rapier 3D compat 0.21.0, WebAssembly įterpta: Apache-2.0 licencija.
- Rubik ir Fredoka žiniatinklio šriftai: SIL Open Font License 1.1.
- Du muzikos takeliai: music/menu.mp3 ir music/play-1.mp3.
Kur gyvena duobės, monetos ir tekstai
Keliai source/ ir game/ aplankuose yra tie patys. Trasos duomenys suskirstyti pagal salą, todėl kiekvienas failas yra pakankamai trumpas, kad būtų perskaitomas vienu prisėdimu.
- src/course/courses.js: trasų tvarka ir atrakinimo reikalavimai.
- src/course/holes.js: Sunlit Ruins duobės su geometrija, par ir kliūtimis.
- src/course/pier.js, ice.js, lava.js ir sky.js: kitų keturių trasų duobės.
- src/sim/constants.js: fizikos derinimas.
- src/game/economy.js: kamuoliukai, pėdsakai ir aprangos su jų kainomis.
- src/ui/i18n.js ir jo palydimieji failai: 14 kalbų žodynai, įskaitant duobių pavadinimus ir patarimus.
- src/game/localRecords.js: trasų rekordai, saugomi naršyklėje.
- src/audio/audio.js: efektai ir muzikos atitikimas probeTracks.
- css/style.css: sąsajos spalvos, šriftai ir atsakingi stiliai.
Duobės pridėjimas, žingsnis po žingsnio
Tai pakeitimas, kurį daro dauguma pirkėjų, o vadove jis aprašytas keliomis eilutėmis. Mes išplėtėme jį į tvarką, kurios laikytumėmės patys.
- Pasirinkite trasos failą, kuriam priklauso nauja duobė, pavyzdžiui, lava.js Volcano Forge.
- Nukopijuokite esamą duobės aprašą, kuris atrodo panašiai į tai, ko norite.
- Duokite jai unikalų id. Pakartotinis id painioja išsaugotą progresą.
- Nustatykite par, tee ir taurės pozicijas, tada perkelkite ar pakeiskite kliūtis.
- Pridėkite duobę jos trasai courses.js.
- Pridėkite jos rodomą pavadinimą ir patarimą į kalbų žodynus, kiekvienoje kalboje, kurią pristatote.
- Žaiskite: patikrinkite susidūrimus, grįžimą iš ribų ir visas tris žvaigždes, įskaitant paslėptą monetą.
Redaguokite source/ aplanke, nukopijuokite pakeistus failus į tuos pačius kelius game/ aplanke ir testui paleiskite aplanką per HTTP. package.json yra serve scenarijus, arba galite paleisti python -m http.server 8765. Node.js nebūtinas, nebent norite, kad npm tvarkytų bibliotekų versijas.
Kiti pakeitimai, tvarkingai
- Prekės ženklas ir spalvos: logotipas, spalvos ir šriftai css/style.css. White label leidžiamas, todėl jūsų prekės ženklas gali pakeisti mūsų.
- Kainos Locker: economy.js. Pigesni kosmetiniai daiktai padaro lengvą svetainę draugiškesnę; brangesni ištempia ilgą kampaniją.
- Tekstai: formuluotės ir patarimai i18n failuose.
- Muzika: du pridėti takeliai gali būti pakeisti įrašais, kuriems turite licenciją. Nukopijuokite failą ir atnaujinkite aiškų atitikimą audio.js (probeTracks); scenos muzika grįžta prie žaidimo takelio.
- Fizika: constants.js, paskutinis, ir mažais žingsniais, nes kiekviena duobė buvo suderinta su dabartinėmis reikšmėmis.
Susijusiam projektui su tuo pačiu paprasto JavaScript požiūriu ir be jokios 3D bibliotekos mūsų biliardo šablonas sukurtas taip pat.
Velvet Pool: 8 kamuoliukų biliardas paprastu JavaScript ir WebGL2
Sunset Rally: 3D stalo tenisas su devynių rungtynių kampanija
Talpinimas, MIME tipai ir programėlių apvalkalai
Įkelkite viską, kas yra game/ aplanke, į aplanką, pavyzdžiui, public_html/puttide/, išlaikykite poaplankius ir atidarykite adresą per HTTPS. Serveryje nereikia npm, PHP, duomenų bazės ar paskyros. Atidarymas index.html iš disko neveikia, nes naršyklės blokuoja modulius file://.
Puttide turi vieną talpinimo detalę, kurios 2D žaidimas neturi: fizika veikia kaip WebAssembly. Jūsų serveris turi siųsti .js failus su JavaScript MIME tipu, o .wasm – kaip application/wasm. Serveris, kuris tai padaro neteisingai, rodo tuščią ekraną ar modulio klaidą, todėl patikrinkite pirmą dieną.
- Naršyklei reikia: JavaScript, ES modulių, WebAssembly ir WebGL2.
- Portalo iframe leiskite viso ekrano ir automatinio paleidimo režimus.
- Jutikliniuose ekranuose: vilkite taikymui ir smūgiui, dviem pirštais sukite kamerą, suimkite pirštais didinimui.
- Ne programėlė, kurią galima įdiegti neprisijungus: kiekvienas naujas įkėlimas vis tiek pasiekia jūsų serverį.
Natyvių programėlių projektų pakete nėra. Jei planuojate parduotuvės leidimą, skirkite biudžetą apvalkalui ir testavimui tikruose telefonuose, nes 3D fizikos žaidimas sunkesnis nei kortų žaidimas senesniuose įrenginiuose.
Ko nėra ir licencija
Tai vietinis naršyklės leidimas: jokio internetinio daugiažaidimio ar kambarių, jokio internetinio reitingo, jokių debesies paskyrų, jokio reklamų SDK, jokių natyvių programėlių ir jokio talpinimo. Trasos rekordai, dienos progresas ir raundai tame pačiame įrenginyje lieka žaidėjo naršyklėje, ir jokie rezultatai neįkeliami. Išsaugojimai priklauso naršyklės kilmei (origin), todėl perkėlus į kitą domeną žaidėjai pradeda iš naujo.
Puttide kainuoja 39 USD; iki 2026 m. lapkričio 30 d. Juodojo penktadienio akcija ją padaro 33,15 USD, o jei perkate du ar daugiau šablonų viename užsakyme, taikoma 5–20% paketo nuolaida. Licencija neribota ir neišimtinė vienam galutiniam produktui, jums ar vienam klientui. Galite perkurti prekės ženklą, keisti kodą, meną ir garsą, leisti žaidėjams žaisti nemokamai ar su reklamomis, bet negalite perparduoti šablono ar jo kodo atskirai. Palaikymas trunka šešis mėnesius arba dvylika su pratęsimu; pasirinktinės duobės, integracijos ir talpinimas siūlomi pagal užklausą.
Licencijos, palaikymo ir grąžinimo sąlygos visos
Dažnai užduodami klausimai
Ar minigolfo žaidimo šaltinis parašytas TypeScript?
Ne. Puttide yra paprastas, suformatuotas JavaScript source/src ir game/src aplankuose, be mūsų pačių suglaudintų ar surištų failų.
Ar galiu pridėti savo duobių ar trasų?
Taip. Nukopijuokite duobę trasos faile, duokite jai unikalų id, nustatykite par, tee ir taurę, pridėkite ją į courses.js ir įrašykite jos pavadinimą bei patarimą kalbų failuose.
Ar jis įkelia Three.js iš CDN?
Ne. Three.js, Rapier, šriftai ir muzika yra game/ viduje, todėl žaidimui reikia tik jūsų serverio.
Kodėl mano serveris rodo tuščią ekraną?
Dažniausiai dėl MIME tipų. Teikite .js kaip JavaScript, o .wasm kaip application/wasm, atidarykite žaidimą per HTTP(S) ir patikrinkite, ar įjungtas WebGL2.
Ar draugai gali žaisti kartu?
Taip, du–keturi žaidėjai ėjimus atlieka iš eilės tame pačiame įrenginyje. Internetinis žaidimas nėra šio leidimo dalis.
Ar tai tinkamas minigolfo pagrindas jums?
Puttide tinka šeimos ar sporto portalui, agentūrai, kuri kuria prekinio ženklo trasą vienam klientui, ir kūrėjui, norinčiam pamatyti, kaip Three.js ir Rapier veikia kartu skaitomame kode. Jis mažiau tinka projektui, kuriam nuo pat pradžių reikia internetinių raundų ar bendros lyderių lentelės.
Pažaiskite visą trasą demo telefone, tada perskaitykite vadovo skyrių apie duobės pridėjimą. Jei tas skyrius atrodo kaip popietės darbas, likęs žaidimas jau sukurtas.
