PlayPendium
Contraption · Pagkain para sa Pag-iisip

Isang antas na nagpapatunay na malulutas ang sarili nito

Hindi kailanman nagsusulat ang laro ng palaisipan nang mano-mano. Pinatutubo nito ang isa mula sa iisang numero, at pagkatapos ay nilalaro nito ang palaisipang iyon laban sa sarili nito upang matiyak na hindi ito napakadali at hindi rin imposible bago mo pa man ito makita.

Ang petsa ngayong araw 1 numero, dinaan sa hash tungo sa isang seed
nagiging
Ang pang-araw-araw na palaisipan 1 field, pareho para sa lahat

Isinulat at in-edit sa Ingles. Ang bersyong Filipino na ito ay ginawa sa pamamagitan ng machine translation; kung saan mahalaga ang katumpakan, ang orihinal na Ingles ang awtoritatibo. Basahin ang orihinal sa Ingles →

01 · Lahat mula sa iisang numero

Isang buong mundo na nakatiklop sa isang seed

Ang isang antas ng Contraption ay hindi nakaimbak kahit saan. Walang file na naglilista kung nasaan ang goal o kung paano nakaayos ang mga ledge. Sa halip, ang buong antas, ang simula ng bola, ang posisyon ng goal, ang bilang at pagkakalagay ng mga nakapirming pader, ang imbentaryo ng mga bahaging ibinibigay sa iyo, ay kinukuwenta mula sa iisang panimulang numero na tinatawag na seed. Ibigay sa generator ang parehong seed at makukuha mo, byte kada byte, ang parehong palaisipan. 1

Posible iyon dahil ang tanging pinagmumulan ng "randomness" ng generator ay isang maliit at deterministikong pseudo-random number generator. Ang ginagamit ng Contraption ay ang mulberry32, isang compact na 32-bit generator na isinulat ni Tommy Ettinger, makikilala mo ito sa natatanging constant nito, 0x6d2b79f5, na idinaragdag sa state sa bawat pagkuha. 2 Mabilis ito, kasya ito sa ilang linya, at, higit sa lahat, hindi ito random sa anumang paraan: ito ay isang nakapirming matematikal na pagkakasunod-sunod na mukhang binalasa lamang. Bigyan mo ito ng panimula at magbubunga ito ng parehong daloy ng mga numero magpakailanman. Binabasa naman ng generator ang daloy na iyon upang magpasya kung saan ilalagay ang lahat.

02 · Ang pang-araw-araw na palaisipan

Paano nagiging isang pinagsasaluhang hamon ang isang petsa

Umaasa ang Daily mode (Araw-araw) sa determinismong ito upang gumawa ng isang bagay na panlipunan. Hindi random ang seed nito, ginagawa ito mula sa kalendaryo. Kinukuha ng laro ang petsa ngayong araw sa universal time, isinusulat ito sa isang maikling string tulad ng "contraption:2026-7-28", at pinadadaan ang tekstong iyon sa isang hash function upang paliitin ito sa iisang 32-bit na numero. 1

Ang hash ay FNV-1a, isang kilalang non-cryptographic na mixer: nagsisimula ito mula sa isang nakapirming offset, ang decimal na 2166136261, o 0x811c9dc5, at para sa bawat character ay isinasama nito ang titik sa pamamagitan ng exclusive-or at pagkatapos ay minumultiplika sa FNV prime na 16777619. 3 Nag-iiwan iyon ng numerong matatag para sa isang partikular na araw at lubhang naiiba mula sa isang araw patungo sa susunod, kaya ang pagbabago ng isang character sa petsa ay lubusang nagkakalat sa seed. Dahil pareho ang kalendaryo para sa lahat, pareho rin ang seed, at pareho rin ang palaisipan. Dalawang estrangherong nasa magkabilang panig ng mundo ang nagbubukas ng Daily at nakakaharap ng magkaparehong field, na siya mismong nagbibigay-saysay sa paghahambing ng score.

Patas ang pang-araw-araw na hamon hindi dahil may server na nagpapadala sa lahat ng parehong antas, kundi dahil ang kopya ng bawat isa ay nagkukuwentang muli nang nagsasarili ng parehong antas mula sa parehong petsa.

03 · Pinagdududahan ng generator ang sarili nito

Pagtanggi sa palaisipang lumulutas sa sarili nito

Madali ang random na geometry; ang magandang random na geometry ay hindi. Ang isang generator na basta na lamang nagkakalat ng goal at ilang ledge ay paminsan-minsang magbubunga ng antas kung saan ang bola, kapag inihulog mula sa itaas, ay basta na lamang diretsong bumabagsak sa goal nang kusa. Hindi iyon palaisipan, cutscene iyon. Kaya bago tanggapin ng Contraption ang isang kandidatong mundo, nagpapatakbo ito ng isang tahimik na pagsubok na tinatawag ng code na preSolved: sini-simulate nito ang antas nang walang anumang bahaging nakalagay at sinusuri kung naaabot ng hubad na bola ang goal sa pamamagitan lamang ng gravity. Kung naaabot, itinatapon ang antas at muling bumubunot ang generator. 1

Ito ay isang pinong pagbabaligtad ng karaniwang pag-iisip mo tungkol sa isang physics engine. Ang parehong simulate() function na nagpapatakbo ng iyong machine ay ibinabaling paloob, sa oras ng generation, upang suriin ang kahirapan ng antas mismo. Ang engine ay kapwa referee ng iyong solusyon at inspektor ng kalidad ng palaisipan.

04 · Isang maliit na solver, nakapaloob

"Magagawa ba ito gamit ang isang bahagi?"

Ang pagtanggi sa masyadong madaling antas ay kalahati lamang ng trabaho. Ang isa pang panganib ay ang imposibleng antas, isang goal na nakatago sa isang lugar na hindi maaabot ng anumang pagkakaayos ng mga bahagi. Nagbabantay ang Contraption laban dito gamit ang isang maliit na brute-force solver na pinangalanang plausiblySolvable. Hindi ito nag-iisip nang matalino. Sinusubukan lang nito. 1

Partikular, pinapadaan nito ang iisang ramp sa isang grid ng mga posisyon sa buong field at, sa bawat puwesto, sinusubukan ito nang nakatagilid sa apat na magkakaibang paraan. Para sa bawat isa sa mga pagsubok na paglalagay na iyon ay pinapatakbo nito ang buong simulation at nagtatanong: nadala ba ng iisang ramp na iyon ang bola pauwi? Sa sandaling magtagumpay ang anumang paglalagay, idinedeklara ang antas na malulutas at ipinapadala sa iyo. Kung wala sa mga ito ang gumana pagkatapos ng buong pag-sweep, mas pinipili ng generator na itapon ang antas at sumubok ng bagong seed.

Ang paghahanap ng iisang-bahaging solver, isang magaspang na grid, apat na tagilid bawat isa
Parameter ng sweepSaklawKahulugan
Ramp X15 → 85, hakbang 14mga kolum sa buong field
Ramp Y30 → 120, hakbang 18mga hilera pababa sa field
Mga anggulong sinubukan4±0.45 at ±0.8 radians
Pagsubok kada paglalagay1 buong simnaaabot ba ng bola ang goal?

Sulit na maging tapat tungkol sa kung ano ang pinatutunayan nito, dahil tapat din ang code tungkol dito: tinatawag ito ng comment na isang "murang pagsusuri ng plausibility … hindi lubusan." Ang antas na pumasa ay tiyak na may kahit isang magaspang na solusyong iisang ramp. Ang antas na bumagsak ay maaari pa ring malutas gamit ang fan, gear, o mas matalinong ramp na hindi kailanman sinubukan ng grid, kaya hindi itinuturing ng generator ang pagkabigo bilang patunay ng pagiging imposible. Iniingatan nito ang unang hindi-trivial na mundong natagpuan nito bilang fallback, at kung lumipas ang apatnapung pagtatangka nang walang malinis na solusyong iisang bahagi, ipinapadala nito ang fallback na iyon sa halip na umikot magpakailanman. Ang resulta ay isang praktikal na garantiya: hindi kailanman libreng panalo, halos palaging may tunay na daan papasok, at hindi kailanman walang katapusang paghihintay para sa "perpektong" antas. 1

05 · Ang malalim na ideya

Generate-and-test, ang pinakamapagpakumbabang uri ng katalinuhan

Umatras ka nang kaunti at ang tagagawa ng antas ng Contraption ay isang malinis na halimbawa ng isang napakaluma at napakalawak na pattern sa paglutas ng problema: generate and test. Magmungkahi ng kandidato nang random; suriin ito laban sa iyong mga kinakailangan; panatilihin ito kung pumasa, itapon at magmungkahing muli kung bumagsak. Ito ang loop sa likod ng procedural content sa hindi mabilang na laro, sa likod ng malaking bahagi ng evolutionary computation, at, kung titingnang mabuti, sa likod ng natural selection mismo: nagmumungkahi ang mutation, sumusubok ang kapaligiran, nananatili ang mga nakaligtas. 4

Ang nagpapaganda sa bersyon ng Contraption ay hindi murang pamalit sa playability ang pagsubok, ito ay ang playability mismo. Hindi tinatantiya ng generator kung patas ang isang antas sa pamamagitan ng pagbibilang ng mga ledge o pagsukat ng mga distansya. Literal nitong nilalaro ang antas, nang dalawang beses: isang beses nang walang laman upang matiyak na hindi ito regalo, at isang beses na may pansubok na ramp upang matiyak na may umiiral na daan. Ang parehong deterministikong physics na huhusga sa iyong solusyon ang physics na sumuri sa palaisipan. Walang hiwalay na "level validator" na maaaring lumihis mula sa tunay na mga patakaran, dahil iisa lamang ang set ng mga patakaran, na ginagamit para sa lahat.

At dahil deterministiko ang lahat ng ito, malaya sa suwerte ang pagsusuri sa magkabilang direksyon. Hindi makapagsasabwatan ang daily seed upang bigyan ang isang manlalaro ng mas madaling field kaysa sa iba, at hindi rin nito mabibigyan ang sinuman ng hindi patas na field, dahil bago pa maging hamon ang antas ay nakaligtas na ito sa pagkakalaro, ng laro, laban sa sarili nito.

Sources & notes
  1. Seed-to-level generation, the preSolved rejection test, the plausiblySolvable one-ramp solver (grid ranges, four angles, up to 40 attempts, fallback world), and the daily-seed date string are all read directly from Contraption's own game engine and random-number code. Grounded in the game's code, not invented.
  2. mulberry32 is a compact 32-bit pseudo-random generator by Tommy Ettinger; it advances its state with the constant 0x6d2b79f5 and has a period of 2³². Author's reference gist (with his own later caveats on its equidistribution). gist.github.com/tommyettinger/46a874533244883189143505d203312c
  3. "Fowler–Noll–Vo hash function." Wikipedia, the 32-bit FNV offset basis is 2166136261 (0x811c9dc5) and the FNV prime is 16777619 (0x01000193); FNV-1a XORs each byte into the hash first and then multiplies by the prime. en.wikipedia.org/wiki/Fowler–Noll–Vo_hash_function
  4. On generate-and-test / "generation followed by evaluation" as a general search and problem-solving strategy, and its kinship with procedural generation and evolutionary methods. See "Procedural generation," Wikipedia. en.wikipedia.org/wiki/Procedural_generation
  5. Further reading on Procedural generation, [2410.15644] Procedural Content Generation in Games: A Survey with Insights on Emerging LLM Integration. arxiv.org.
  6. Further reading on Procedural generation, Procedural Content Generation in Games: A Survey with Insights on Emerging LLM Integration. doi.org.
  7. Further reading on Procedural generation, "Procedural City Generation with Combined Architectures for Real-time V" by Gr. open.clemson.edu.
Was this worth reading?
← Back to Contraption
PlayPendium · About · Contact · Privacy · Terms · Cookies · Accessibility · Copyright · Browse all games · Inspirations · © 2026