Ceļvedis

Minigolfa spēles pirmkods: bedrītes, fizika un 3D trases karte

Kā Puttide pakotnē glabā savas 30 bedrītes, kur atrodas Three.js un Rapier un kā pircējs pievieno savu bedrīti.

Puttide mākslas attēls: golfa bumbiņa ripo pa zaļumu starp akmens drupām un palmām uz sarkana karoga pusi, aiz tās mazas salas jūrā.

Minigolfa spēles pirmkods balstās uz vienu uzdevumu: bedrītes pievienošanu. Pircējs, kas vēlas zīmolotu trasi, sezonas līmeni vai klienta logotipu uz zaļuma, vispirms atvērs līmeņu failus, un, ja bedrīte ir iekšā dzinēja kodā, projekts apstājas. Puttide, mūsu 3D minigolfa sagatavē, katrai trasei ir sava bedrītes fails vienkāršā JavaScript, un rokasgrāmata izskaidro, kā pievienot vienu.

Šis ceļvedis seko pakotnei tā, kā to satiek izstrādātājs: mapes, bibliotēkas, trases faili, izmaiņu secība, hostings un licence. Failu nosaukumi ir no spēles pavadošā pircēja ceļveža.

Īsā atbilde nepacietīgajiem: Puttide ir formatēts JavaScript ar Three.js zīmēšanai un Rapier bumbiņas fizikai, abi iekļauti. Nav būvēšanas soļa, nav CDN un nav servera koda.

Ko satur minigolfa spēles pirmkods

Puttide ir pabeigta spēle ar 30 bedrītēm piecās salu trasēs: Sunlit Ruins, Lantern Pier, Frost Peaks, Cloud Garden un Volcano Forge, katrā sešas bedrītes. Rampas, portāli, bumperi un vēja dzirnavas pārvērš bedrītes nelielās puzlēs. Katra bedrīte piešķir trīs zvaigznes (pabeigt, par vai labāk, slēptā monēta), un bronzas, sudraba un zelta medaļas atalgo labākos raundus.

Papildus trasēm ir ikdienas izaicinājums ar pagriezienu (Windy, Icy green, Heavy ball, Bouncy walls, Coin rush (monētu drudzis) vai Birdie hunt (putnu medības)), Locker (skapītis), kur monētas nopērk bumbiņas, trases un citus kosmētikas priekšmetus, un raundi diviem līdz četriem spēlētājiem pēc kārtas vienā ierīcē. Saskarne ir 14 valodās.

  • game/: gatavā būve augšupielādei, vienīgā mape, ko publicē.
  • source/: tā pati spēle kā izstrādātāja izdevums ar README un package.json.
  • documentation/: viena ilustrēta rokasgrāmata angļu un portugāļu valodā.
  • THIRD-PARTY-LICENSES/: bibliotēku un fontu licenču teksti.
  • Versija 1.1.0, atjaunota 2026. gada 22. oktobrī.

Atver Puttide sarakstu: demonstrācija, rokasgrāmata un cena

Three.js, Rapier un pārējais steks

Bumbiņu simulē Rapier 3D 0.21.0, kas darbojas kā WebAssembly, un aina tiek zīmēta ar Three.js r186. Abi atrodas lib/three/ un lib/rapier/ ar savām licenču failiem, un index.html ir importu karte, kas norāda spēlei uz tiem. Rokasgrāmata atzīmē, ka bibliotēku failu uzvedība nav mainīta un tie ir tikai formatēti, lai tos varētu lasīt.

Tam ir divi iemesli. Pirmkārt, nekas netiek ielādēts no CDN, tāpēc portālam vai klientam ar stingru drošības politiku vajag tikai tavu hostu. Otrkārt, bibliotēku jaunināšana ir manuāls, apzināts solis: source/package.json uzskaita precīzas versijas, un jaunos moduļu failus kopē pār atbilstošo lib/ mapi, saglabājot importu karšu ceļus.

  • Three.js r186: MIT licence.
  • Rapier 3D compat 0.21.0, WebAssembly iestrādāts: Apache-2.0 licence.
  • Rubik un Fredoka tīmekļa fonti: SIL Open Font License 1.1.
  • Divi mūzikas skaņdarbi: music/menu.mp3 un music/play-1.mp3.

Kur atrodas bedrītes, monētas un teksti

Ceļi source/ un game/ ir vieni un tie paši. Trases dati ir sadalīti pa salām, kas katru failu tur pietiekami īsu, lai to varētu izlasīt vienā reizē.

  • src/course/courses.js: trašu secība un atslēgšanas prasības.
  • src/course/holes.js: Sunlit Ruins bedrītes ar ģeometriju, par un šķēršļiem.
  • src/course/pier.js, ice.js, lava.js un sky.js: pārējo četru trašu bedrītes.
  • src/sim/constants.js: fizikas regulēšana.
  • src/game/economy.js: bumbiņas, trases un tērpi ar to cenām.
  • src/ui/i18n.js un tā palīgfaili: 14 valodu vārdnīcas, ieskaitot bedrīšu nosaukumus un padomus.
  • src/game/localRecords.js: trases rekordi, kas glabājas pārlūkā.
  • src/audio/audio.js: efekti un mūzikas kartējums probeTracks funkcijā.
  • css/style.css: saskarnes krāsas, fonti un adaptīvie stili.

Bedrītes pievienošana soli pa solim

Šī ir izmaiņa, ko vairums pircēju veic, un rokasgrāmata to apraksta dažās rindās. Mēs to esam izvērsuši līdz secībai, ko paši sekotu.

  1. Izvēlies trases failu, kuram pieder jaunā bedrīte, piemēram, lava.js Volcano Forge.
  2. Dublē kādu esošu bedrītes definīciju, kas izskatās tuvu tam, ko vēlies.
  3. Dod unikālu id. Id atkārtošana sajauc saglabāto progresu.
  4. Iestati par, tee pozīciju un cup pozīciju, tad pārvieto vai nomaini šķēršļus.
  5. Pievieno bedrīti tās trasei failā courses.js.
  6. Pievieno tās parādāmo nosaukumu un padomu valodu vārdnīcām, katrā valodā, ko piegādā.
  7. Nospēlē to: pārbaudi sadursmes, atgriešanos no ārpus laukuma un visas trīs zvaigznes, ieskaitot slēpto monētu.

Rediģē source/, kopē mainītos failus uz tiem pašiem ceļiem game/ un testē, servējot mapi pāri HTTP. Package.json ir serve skripts, vai vari palaist python -m http.server 8765. Node.js nav obligāts, tikai ja vēlies, lai npm pārvalda bibliotēku versijas.

Pārējās izmaiņas pareizā secībā

  1. Zīmols un krāsas: logotips, krāsas un fonti failā css/style.css. White label ir atļauts, tāpēc tavs zīmols var aizstāt mūsējo.
  2. Cenas Locker: economy.js. Lētāki kosmētikas priekšmeti padara vietni draudzīgāku; dārgāki izstiepj garu kampaņu.
  3. Teksti: formulējumi un padomi i18n failos.
  4. Mūzika: abus iekļautos skaņdarbus var aizstāt ar ierakstiem, kuriem tev ir licence. Nokopē failu un atjaunini skaidro kartējumu audio.js (probeTracks); skatuves mūzika atkrīt uz spēles skaņdarbu.
  5. Fizika: constants.js, pēdējo, un nelielos soļos, jo katra bedrīte tika noregulēta pret pašreizējām vērtībām.

Citam, saistītam projektam ar to pašu vienkāršā JavaScript pieeju un bez 3D bibliotēkas, mūsu baseina sagatave ir veidota tāpat.

Velvet Pool: 8 bumbas baseins vienkāršā JavaScript un WebGL2

Sunset Rally: 3D galda teniss ar deviņu spēļu kampaņu

Hostings, MIME tipi un lietotņu apvalki

Augšupielādē visu game/ iekšpusē uz mapi, piemēram, public_html/puttide/, saglabā apakšmapes un atver adresi pāri HTTPS. Serverī nav vajadzīgs npm, PHP, datubāze vai konts. Index.html atvēršana no diska nedarbojas, jo pārlūki bloķē moduļus file://.

Puttide ir viena hostinga detaļa, ko 2D spēle nedara: fizika darbojas kā WebAssembly. Tavam serverim jāsūta .js faili ar JavaScript MIME tipu un .wasm kā application/wasm. Hosts, kas to izdara nepareizi, parāda tukšu ekrānu vai moduļa kļūdu, tāpēc pārbaudi to pirmajā dienā.

  • Pārlūkam vajag: JavaScript, ES moduļus, WebAssembly un WebGL2.
  • Portāla iframe atļauj fullscreen un autoplay.
  • Skārienekrānos: velc, lai mērķētu un iesistu, divi pirksti, lai pagrieztu kameru, saspiež, lai tuvinātu.
  • Nav instalējama bezsaistes lietotne: katrs jaunais ielādes reizes sasniedz tavu hostu.

Lietotņu projekti nav pakotnē. Ja plāno veikala laidienu, budžetā ieplāno apvalku un tā testēšanu uz reāliem tālruņiem, jo 3D fizikas spēle ir smagāka nekā kāršu spēle vecākās ierīcēs.

Nav iekļauts un licence

Šis ir vietējais pārlūka izdevums: nav tiešsaistes daudzspēlētāju vai tiešsaistes istabu, nav tiešsaistes reitinga, nav mākoņa kontu, nav reklāmu SDK, nav lietotņu un nav hostinga. Trases rekordi, ikdienas progress un raundi vienā ierīcē paliek spēlētāja pārlūkā, un neviens rezultāts netiek augšupielādēts. Saglabājumi pieder pārlūka izcelsmei (origin), tāpēc pārcelšanās uz citu domēnu sāk spēlētājus no jauna.

Puttide maksā 39 USD; līdz 2026. gada 30. novembrim Black Friday akcija to nolaiž līdz 33,15 USD, un, nopērkot divas vai vairāk sagataves vienā pasūtījumā, pienākas 5% līdz 20% komplekta atlaide. Licence ir bezterminā un nelicencēta vienam gala produktam – tavam vai viena klienta. Tu vari to zīmolot, mainīt kodu, mākslu un audio un ļaut spēlētājiem spēlēt bez maksas vai ar reklāmām, bet sagatavi vai tās kodu atsevišķi pārdot nedrīksti. Atbalsts ilgst sešus mēnešus vai divpadsmit ar paplašinājumu; pielāgotas bedrītes, integrācijas un hostings tiek cenoti pēc pieprasījuma.

Licence, atbalsta un atmaksas noteikumi pilnībā

Biežāk uzdotie jautājumi

Vai minigolfa spēles pirmkods ir TypeScript?

Nē. Puttide ir vienkāršs, formatēts JavaScript source/src un game/src mapēs, bez mūsu pašu minificētiem vai saliektiem failiem.

Vai es varu pievienot savas bedrītes vai trases?

Jā. Dublē bedrīti trases failā, dod unikālu id, iestati par, tee un cup, pievieno to courses.js un pievieno tās nosaukumu un padomu valodu failiem.

Vai tā ielādē Three.js no CDN?

Nē. Three.js, Rapier, fonti un mūzika ir visi iekšā game/, tāpēc spēlei vajag tikai tavu hostu.

Kāpēc mans hosts rāda tukšu ekrānu?

Parasti MIME tipi. Servē .js kā JavaScript un .wasm kā application/wasm, atver spēli pāri HTTP(S) un pārbaudi, vai WebGL2 ir ieslēgts.

Vai draugi var spēlēt kopā?

Jā, divi līdz četri spēlētāji pēc kārtas vienā ierīcē. Tiešsaistes spēle nav šī izdevuma daļa.

Vai tā ir pareizā minigolfa bāze tev?

Puttide der ģimenes vai sporta portālam, aģentūrai, kas veido zīmolotu trasi vienam klientam, un izstrādātājam, kas vēlas redzēt, kā Three.js un Rapier darbojas kopā lasāmā kodā. Tas ir vājāk piemērots projektam, kam no pirmās dienas vajag tiešsaistes raundus vai kopīgu reitingu.

Nospēlē pilnu trasi demonstrācijā telefonā, tad izlasi rokasgrāmatas nodaļu par bedrītes pievienošanu. Ja šī nodaļa tev šķiet kā pēcpusdienas darbs, pārējā spēle jau ir uzbūvēta.

Nospēlē Puttide demonstrāciju un pērc licenci