Ruka hadi maudhui makuu
Mafunzo ya AI

Jenga na Uchunguze Ulimwengu Uliopanuliwa kwa AI ukitumia Infinite Pokémon

Jifunze jinsi ya kusanidi Infinite Pokémon kwa Node.js au msaidizi wa AI, kuanzisha ulimwengu wa mchezaji mmoja au wa wachezaji wengi, kutumia onyesho la awali la mafunzo lisilo na AI, kusanidi uundaji wa ramani, na kulinda hifadhi endelevu. Mafunzo haya pia yanaeleza muundo wa mradi unaoongozwa na seva, ujumuishaji wa Codex, vidhibiti, nakala za kuhifadhi, chaguo la Docker, na tahadhari za uenyeji wa mbali.

Jenga na Uchunguze Ulimwengu Uliopanuliwa kwa AI ukitumia Infinite Pokémon

Infinite Pokémon ni nini?

Infinite Pokémon ni mfano wa TypeScript unaoweza kuchezwa wa RPG ya kudumu ya kukamata viumbe, yenye mtindo wa Pokémon na michoro ya pikseli. Jaribio lake kuu ni dunia inayoweza kuendelea kuandikwa unapocheza. Mfumo wa ndani wa AI hutumia historia iliyorekodiwa ya safari yako kupendekeza maeneo, wahusika, mazungumzo, chaguo za bioma na misingi ya hadithi inayofuata.

Uchezaji wa Infinite Pokémon na uundaji wa dunia unaosaidiwa na Codex

Mradi hauruhusu AI kudhibiti hali kuu ya mchezo. Mwendo, migongano, mapambano, orodha ya vitu, maendeleo na sheria nyingine za mchezo zinatekelezwa na seva. Mapendekezo ya AI lazima yapitie taratibu za schema, uthibitishaji wa ramani na ukaguzi wa utegemezi kabla ya kuingia duniani. Maeneo yaliyotembelewa hubaki thabiti, huku maeneo mapya yakitengenezwa na kuhifadhiwa kabla ya mchezaji kuyafikia.

Muhimu: Infinite Pokémon ni mradi wa majaribio wa mashabiki unaolenga matumizi ya kielimu na yasiyo ya kibiashara pekee. Si bidhaa rasmi ya Pokémon na hauhusiani na Nintendo, Creatures, GAME FREAK au The Pokémon Company.

Jinsi Dunia Inayoendelea Kufanya Kazi

  1. Seva hubaki kuwa yenye mamlaka. Mapendekezo ya AI hayawezi kumsogeza mkufunzi, kutoa ushindi, kupita ukaguzi wa migongano au kubadilisha maendeleo moja kwa moja.
  2. Dunia hurekodi matukio halisi. Kila mchezo huhifadhi ramani, chaguo, kumbukumbu za NPC, wachezaji, kazi za uundaji na historia ya matukio katika hifadhidata ya SQLite ya ndani.
  3. Codex hupendekeza maudhui yajayo. Mchakato wa Codex wa ndani wa mwenyeji husoma nakala isiyobadilika na kutoa mapendekezo yenye mipaka yanayooana na injini ya sasa.
  4. Uthibitishaji hulinda mfumo wa uendeshaji. Schema na ukaguzi wa ramani huamua kama maudhui yaliyopendekezwa yanaweza kukubaliwa.
  5. Vituo vya ukaguzi huwezesha matawi. Kuendelea kutoka kituo cha zamani cha ukaguzi huunda tawi tofauti lenye hifadhidata, kumbukumbu na muktadha wake wa uundaji.

Kwa sasa mfumo hutegemea violezo vya ramani vilivyothibitishwa na kuanzishwa kwa mbegu badala ya uchezaji wa kiholela unaoandikwa na AI. Mfumo unaweza kutoa majina, maelezo, wasifu wa NPC, salamu, chaguo za bioma, misingi ya hadithi na vipengele vya ardhi vyenye mipaka. Miundo mipya ya viumbe, vitu na magari inaweza kutolewa kwa mapishi ya sanaa ya pikseli yaliyothibitishwa, lakini uingizaji wa picha zilizotengenezwa nje haujatekelezwa.

Vipengele Muhimu

  • Ramani, matukio, chaguo za hadithi na kumbukumbu za NPC zinazodumu kwa kila mchezo.
  • Mwendo, migongano, mapambano, orodha ya vitu na maendeleo yanayodhibitiwa na seva.
  • Uchunguzi wa mchezaji mmoja kwa kutumia muunganisho wa Codex wa ndani wa mwenyeji.
  • Onyesho la mafunzo la maeneo matano lisilo na miito ya modeli wala matumizi ya tokeni.
  • Wachezaji wengi wa mwenyeji na wanaojiunga kwa hadi miunganisho minane kwa wakati mmoja na wakufunzi 64 waliohifadhiwa.
  • Undani wa maandalizi ya ramani unaoweza kusanidiwa kutoka 0 hadi 3.
  • Mafungu ya uundaji yanayoweza kusanidiwa kutoka vizuizi 1 hadi 8 kwa wakati mmoja.
  • Hali ya foleni, kujaribu tena na vidhibiti vya kughairi kwa maeneo ambayo hayajakamilika.
  • Vituo vya ukaguzi visivyobadilika na matawi ya kalenda yaliyotengwa.
  • Duka, uponyaji, mapambano ya porini, wakufunzi wa njia, baiskeli, vitalu vya kulelea na mayai mseto.
  • Mitiririko ya kazi ya kivinjari, Electron ya eneo-kazi inayoendeshwa kutoka chanzo na Docker ya Linux ya hiari.

Mahitaji ya Awali

Kwa mtiririko wa kawaida wa kazi wa ndani, sakinisha Node.js 22.13 au mpya zaidi. Matoleo ya Node.js 22.13 hadi 22.15 yanaungwa mkono, ingawa nakala rudufu za hifadhidata hutumia njia mbadala ya SQLite VACUUM INTO inayozuia kwa muda mfupi pale API mpya ya nakala rudufu mtandaoni haipatikani.

Docker ni ya hiari. Huhitaji usakinishaji tofauti wa kimataifa wa Codex CLI kwa sababu vitegemezi vya mfumo vinajumuisha Codex CLI 0.153.4. Daraja hupendelea CLI ya ndani ya mradi ili kuzuia kitekelezi cha zamani cha kimataifa kubadilisha uoanifu.

Chaguo la 1: Sanidi kwa Msaidizi wa AI

Njia fupi zaidi ya usanidi ni kusakinisha skill ya kuanzisha ya hazina kwa kutumia Skills CLI:

npx skills add Shellishack/infinite-pokemon --skill infinite-pokemon

Kisha muulize Codex au msaidizi wa AI anayeoana:

Tumia $infinite-pokemon kunisanidia kusanidi na kuanzisha mchezo.

Skill ya kuanzisha humwelekeza wakala katika kunakili faili zinazokosekana, kukagua mahitaji ya awali, kusakinisha vitegemezi, kujenga mradi na kuuzindua. Kusakinisha skill pekee hakuzindui programu. Chanzo cha hazina kinahitajika; npx skills add infinite-pokemon si lakabu ya kimataifa inayoungwa mkono.

Unaweza kukagua skill ya kuanzisha kwenye GitHub kabla ya kuitumia.

Chaguo la 2: Sakinisha na Endesha Mwenyewe

Fanya clone au pakua hazina, fungua terminali kwenye saraka yake ya mzizi, kisha endesha:

npm install
npm run build
npm start

Fungua dashibodi ya faragha ya mwenyeji kwenye http://127.0.0.1:8788. Usaidizi wa SQLite uliojengwa ndani ya Node unaweza kuonyesha onyo la majaribio; onyo hilo linatarajiwa na mradi.

Unganisha Codex na uingie duniani

  1. Chagua Mchezaji mmoja.
  2. Chagua Unganisha na Codex ikiwa muunganisho wa ndani bado haujathibitishwa.
  3. Kagua na uidhinishe taarifa ya matumizi ya tokeni iliyoonyeshwa.
  4. Kamilisha kuingia kwa mtoa huduma ukiombwa.
  5. Subiri uthibitishaji mfupi wa nonce. Ukifaulu, mchezo utaingia kiotomatiki kwenye ramani ya kuanzia.

Uthibitishaji haupakii ujuzi wala kusoma faili; unaomba tu uthibitisho wa nonce na jibu ok. Baada ya kuunganishwa, ramani za karibu huandaliwa chinichini kulingana na kina cha uzalishaji kilichosanidiwa. Uthibitishaji, majaribio yaliyoshindikana na uzalishaji wa chinichini vinaweza kutumia mgao wa mtoa huduma, na vikomo vya kawaida vya mtoa huduma pamoja na malipo bado vinatumika.

Muunganisho halali hutumika tena. Baada ya kuanzisha upya mchezo ulioidhinishwa, mchezo hukagua kuingia kwa ndani kwa ombi jingine dogo la uthibitisho. Ukaguzi huo ukishindikana, kiolesura hurudi kwenye kitendo cha kuunganisha.

Cheza Bila Codex kwa Kutumia Onyesho la Mafunzo

Ili kujaribu mbinu za mchezo bila ufikiaji wa mtoa huduma au matumizi ya tokeni, chagua Single player, kisha Play tutorial preview kutoka skrini ya kuunganisha Codex.

Onyesho lina maeneo matano ya nje yaliyotayarishwa pamoja na vyumba vyake vya ndani:

  • Willowbrook: uwanja wa mji, bustani, maabara ya Professor Fern, na nyumba tofauti.
  • Whisperwood Trail: miti minene, njia zinazopinda, maeneo wazi, na kibanda cha mlinzi wa msitu.
  • Cloverbank River: malisho yenye maua, mto, daraja la mbao, na nyumba ya mapumziko.
  • Sunbreak Coast: maji ya wazi, njia za ufukweni, njia za mbao, na kituo cha pwani.
  • Waystone Terraces: njia za zigzagi, matuta ya mawe, nguzo zilizoanguka, na kibanda cha kumbukumbu.

Onyesho halitumii miito ya modeli wala kutengeneza ramani mpya au mipango ya NPC. Kwenye mpaka wake, unaweza kuunganisha Codex na kuendelea na hifadhi ileile katika uchunguzi kamili. Mkufunzi wako, ramani zilizofichuliwa, na maendeleo ya mafunzo huhifadhiwa. Hifadhi za onyesho ni za faragha na tofauti na ulimwengu wa awali hadi zitakapokuzwa; wachezaji wengi hupatikana tu baada ya Codex kuunganishwa na kuthibitishwa.

Vidhibiti vya Msingi na Uchezaji

  • Sogea kwa WASD au vitufe vya mishale.
  • Simama moja kwa moja kando ya NPC, bango, kitu au kompyuta ya chumba, ikabili, kisha bonyeza E au Space.
  • Ukaribu wa kimshazari hauhesabiki kwa ajili ya kuingiliana.
  • Ingia kwenye mlango wa jengo unaoonekana, au ukabili ukiwa kwenye kigae kilicho karibu kisha bonyeza E.
  • Bonyeza Escape au START kufungua menyu ya timu, begi, wasifu wa mkufunzi, shajara, ramani na kuhifadhi.
  • Bonyeza Escape tena kufunga menyu.

Watu, mabango, ua, kuta na samani huzuia mwendo. Kabili kitu unapoingiliana nacho badala ya kujaribu kupita ndani yake. Nyasi ndefu zinaweza kuanzisha mapambano ya viumbe wa porini, wakufunzi hutoa changamoto, na waelekezi hutoa mazoezi kwa wanaoanza. Wahudumu wa ndani wanaweza kuponya timu yako.

Makazi yanaweza kuwa na mfanyabiashara na mtunzaji wa kitalu. Unaweza kununua vifaa, kununua Baiskeli, au kuwapatanisha wenza wawili wa kiwango cha 5 ili kupata yai mseto. Menyu za ziada kama CODEX, NURSERY, RIDES na RECORDS zinapatikana kupitia START.

Sanidi Uzalishaji wa Ramani

Fungua START → SESSION ili kurekebisha tabia ya uzalishaji. Kina cha uzalishaji wa ramani huamua umbali ambao mwenyeji huandaa ulimwengu mapema:

  • Depth 0: zalisha unapowasili.
  • Depth 1: andaa ramani nne zinazozunguka; hii ndiyo chaguo-msingi.
  • Depth 2: andaa ramani 12.
  • Depth 3: andaa ramani 24.

Kazi zilizo kwenye foleni huipa kipaumbele ramani zilizo karibu zaidi na wachezaji, na ramani zilizohifadhiwa kwenye akiba hutumika tena. Maeneo ambayo hayako tayari huonyesha hali yao halisi ya foleni au uzalishaji badala ya kujifanya yamekamilika. Vidhibiti vya kujaribu tena na kughairi vinapatikana.

Ukubwa wa kundi la uzalishaji kwa chaguo-msingi ni vizuizi vitatu kwa wakati mmoja na unaweza kuwekwa kutoka kimoja hadi vinane. Chagua kimoja ukipendelea uzalishaji wa mfuatano au ukitaka kupunguza kazi za wakati mmoja. Kina na wakati mmoja wa juu zaidi vinaweza kuandaa eneo kubwa zaidi, lakini vinaweza kuongeza matumizi ya mtoa huduma na shughuli za uzalishaji.

Unda Hifadhi, Vituo vya Ukaguzi na Matawi

Fungua START → SAVES ili kudhibiti michezo na vituo vya ukaguzi visivyobadilika. Kuchagua SAVE huunda kituo cha ukaguzi. Ukiendelea kutoka kituo cha ukaguzi cha zamani, mchezo huunda tawi tofauti badala ya kuandika upya ratiba ya awali.

Kila tawi lina historia yake ya ulimwengu, kumbukumbu za NPC, muktadha wa uzalishaji na hifadhidata yake ya kuhifadhi kiotomatiki. Matukio yanayotokea baadaye katika mchezo wa awali hayawi kumbukumbu katika tawi jipya. Hii huwezesha kuchunguza matokeo mbadala huku ukihifadhi tukio la awali.

Hifadhi za kivinjari huhusishwa na tokeni ya kikao isiyoeleza maana iliyohifadhiwa kwa kivinjari na asili ya sasa. Kubadilisha jina la mwenyeji, mpango au porti, au kufuta hifadhi ya kivinjari, kunaweza kusababisha kivinjari cha mgeni kupoteza uhusiano wake na mkufunzi. Mchezo hautoi kiolesura cha mikono cha ufunguo wa kurejesha.

Simamia Kikao cha Wachezaji Wengi

  1. Kwenye skrini ya kichwa, chagua Multiplayer → Host session.
  2. Unganisha na uthibitishe kikao cha Codex cha mwenyeji ikihitajika.
  3. Fungua START → SESSION ili kupata anwani ya mgeni.
  4. Shiriki tu anwani ya mchezo ya mgeni na wachezaji unaowaamini.

Unaweza pia kuanza peke yako na baadaye kuchagua Enable multiplayer kutoka menyu ya Session. Wageni huchagua Multiplayer → Join session na kuingiza anwani kama http://HOST_LAN_ADDRESS:8787 au URL ya HTTPS ya mwenyeji. Jina la utani ni maandishi ya mhusika kwa hiari, si akaunti.

Mwenyeji pekee ndiye huunganisha Codex na kutoa mgao wa uzalishaji. Wageni hushiriki mchezo na historia ya sasa ya mwenyeji lakini hawaunganishi Codex wenyewe. Kuchagua Return to single player hufunga miunganisho ya sasa ya wageni na kuzuia wageni wapya wa umma huku ikihifadhi hifadhi za upande wa seva.

Elewa porti mbili za mtandao

  • 0.0.0.0:8787 ni huduma ya mchezo kwa wageni. Uandikishaji wa umma hufunguka tu wakati wachezaji wengi wamewezeshwa.
  • 127.0.0.1:8788 ni dashibodi binafsi ya mwenyeji kwa muunganisho wa Codex, mipangilio ya uundaji na vidhibiti vya nakala rudufu.

Usiwahi kufichua au kutumia reverse proxy kwa porti 8788. Usiweke wazi mchakato wa Codex, saraka ya vitambulisho, au API za mwenyeji kwa wageni. Ukitumia proksi au handaki, pitisha tu huduma ya wageni kwenye porti 8787.

Kwa upangishaji wa intaneti, hazina inajumuisha mfano wa usanidi wa Caddy unaopitisha tu porti 8787 na kusaidia WebSockets. Proksi lazima ihifadhi kichwa asili cha Host kwa ukaguzi wa chanzo kimoja. Upitishaji wa kiotomatiki wa NAT na relay ya upangishaji havijajumuishwa.

Endesha Toleo la Maendeleo au Kompyuta ya Mezani

Kwa maendeleo, endesha seva ya TypeScript na middleware ya Vite pamoja:

npm run dev

Ili kufungua dirisha la mwenyeji la Electron, kwanza jenga mradi kisha endesha:

npm run build
npm run desktop

Hali ya Electron ni ganda la kompyuta ya mezani linaloendesha chanzo, si kisakinishi kilichofungashwa. Inahitaji Node.js kwenye PATH, au njia kamili iliyotolewa kupitia NODE_BINARY. Bonyeza F11 kuwasha au kuzima hali ya skrini nzima, au anza moja kwa moja katika hali ya skrini nzima:

npm run desktop:fullscreen

Usanidi wa Hiari wa Docker kwa Linux

Usanidi wa Compose uliotolewa unalenga Docker Engine kwenye Linux na hutumia mtandao wa mwenyeji. Kwa makusudi hauna mipangilio ya uchoraji wa porti, ili kisikilizaji cha usimamizi cha loopback kibaki kufikika ndani ya mfumo bila kuwekwa kwenye kiolesura cha bridge.

docker compose build
docker compose up -d
docker compose exec game node node_modules/@openai/codex/bin/codex.js login --device-auth

Kamilisha uthibitishaji mwenyewe kama mmiliki wa seva. Juzuu ya world-data huhifadhi dunia kwenye /app/data, huku codex-private ikihifadhi uthibitishaji na usanidi kwenye /home/node/.codex. Hifadhi juzuu zote mbili na ilinde codex-private kama vitambulisho vya akaunti.

Kagua hitilafu za seva kwa:

docker compose logs game

docker compose stop huhifadhi juzuu. Usiendeshe down --volumes ikiwa unataka kuhifadhi dunia. README inapendekeza amri za asili badala ya usanidi huu wa Compose kwenye Windows na macOS.

Fanya Nakala Rudufu na Rejesha Dunia Yako

npm start ya asili huhifadhi data kwenye ./data. Electron hutumia saraka ya world chini ya eneo la data la mtumiaji wa programu. Weka INFINITE_DATA_DIR kwenye njia kamili ikiwa unataka mbinu nyingi za kuanzisha zitumie dunia moja.

Kwa nakala rudufu ya haraka ya hifadhidata iliyo mtandaoni, fungua START → SESSION → World settings → Back up world. Nakala rudufu huandikwa chini ya backups/. Inajumuisha hali ya hifadhidata lakini si kila faili ya muktadha, kumbukumbu ya uundaji au kitambulisho binafsi cha Codex.

Kwa jalada kamili:

  1. Simamisha seva kwa usafi.
  2. Nakili saraka nzima ya data, ukijumuisha saraka za hakikisho ikihitajika.
  3. Rejesha nakala hiyo kwenye saraka tofauti.
  4. Weka INFINITE_DATA_DIR kwenye saraka iliyorejeshwa.
  5. Washa upya na uunganishe Codex inapohitajika.

Usiwahi kubadilisha hifadhidata inayotumika au kuitenganisha na faili za SQLite WAL zinazotumika. Hifadhi jalada asili hadi dunia iliyorejeshwa ithibitishwe.

Vigezo Muhimu vya Usanidi

  • INFINITE_DATA_DIR: hifadhidata ya dunia, picha za hali, kumbukumbu na nakala rudufu.
  • PORT: porti ya mchezo wa wageni; chaguo-msingi ni 8787.
  • ADMIN_PORT: porti ya dashibodi ya mwenyeji ya loopback; chaguo-msingi ni 8788.
  • CODEX_EXECUTABLE: hiari ya kutaja programu au kubatilisha codex.js; vifungashio vya shell hukataliwa.
  • CODEX_HOME: saraka ya hiari inayomilikiwa na mwenyeji kwa uthibitishaji na usanidi wa Codex.
  • NODE_BINARY: programu ya Node.js inayotumiwa na Electron.
  • INFINITE_MAP_TIMEOUT_MS: muda wa mwisho wa uundaji kwa kila ramani; chaguo-msingi ni 180000 na kiwango cha juu ni 600000.

Vidokezo vya Juu

Pitisha usimamizi wa mbali kwa faragha

Kwenye mwenyeji wa mbali, thibitisha Codex kutoka kwenye shell binafsi ya mwendeshaji:

node node_modules/@openai/codex/bin/codex.js login --device-auth

Kisha pitisha porti ya usimamizi ya loopback kutoka kwenye kompyuta yako:

ssh -N -L 127.0.0.1:8788:127.0.0.1:8788 operator@your-server

Fungua http://127.0.0.1:8788 ndani ya kompyuta yako. Muunganisho huu wa SSH ni handaki la usimamizi la mmiliki pekee, si proksi ya mchezo wa umma.

Tumia seti za majaribio kabla ya kubadilisha injini

npm test
npm run build
npm run test:movement
npm run test:gameplay
npm run test:preview
npm run test:saves
npm run test:streaming
npm run test:variety
npm run test:e2e
npm run test:desktop

Ratiba bainifu hujaribu mekaniki za mchezo bila kuita watoa huduma. Ukaguzi wa kivinjari wa movement na gameplay hutumia hakikisho lililoandaliwa na kuthibitisha kuwa hakuna simu za Codex zinazofanyika.

Weka upya tu inapohitajika

Kitendo cha Settings → Full game reset kwenye skrini ya mwanzo ni tofauti na usimamizi wa hifadhi. Baada ya kuthibitisha kwa RESET, hufuta michezo yote, vituo vya ukaguzi, maudhui yaliyoundwa, maendeleo na mipangilio ya mchezo. Pia husahau idhini ya Codex ya mchezo, ingawa CLI ya Codex hubaki ikiwa imeingia.

Vikwazo vya Sasa

Infinite Pokémon ni mfano wa awali badala ya toleo lililokamilika. Uzalishaji bado unawekewa mipaka na hifadhi yenye ukomo, mipaka ya mtoa huduma, muda wa uzalishaji, na msamiati wa sasa wa injini. Mandhari hutumia violezo vilivyothibitishwa, na AI haiundi mbinu za utekelezaji kiholela. Ubadilishanaji, mifumo kamili ya vituo vya huduma na Dojo, pamoja na uagizaji wa picha zinazozalishwa nje, imeelezwa kama kazi za baadaye badala ya vipengele vya sasa.

Mipaka ya wachezaji wengi ya miunganisho minane kwa wakati mmoja na wakufunzi 64 waliohifadhiwa ni mipaka ya utekelezaji, si ushahidi wa uwezo wa ukubwa wa intaneti. Ukaribishaji kwenye intaneti pia unahitaji mwendeshaji kusanidi ngome za moto, DNS, HTTPS, uelekezaji wa trafiki, au handaki la faragha inapofaa.

Hitimisho

Infinite Pokémon huunganisha kiini cha RPG kinachoaminika na kinachodhibitiwa na seva pamoja na mwendelezo wa ulimwengu unaosaidiwa na AI wenye mipaka. Anza na onyesho la awali lisilohitaji tokeni, unganisha Codex ukiwa tayari kwa uchunguzi unaopanuka, na utumie vituo vya ukaguzi kujaribu mustakabali mbadala. Kwa uwekaji wa wachezaji wengi au wa mbali, weka dashibodi ya seva na vitambulisho vya ufikiaji kuwa vya faragha, fanya huduma ya wageni pekee ipatikane, na udumishe nakala kamili za kuhifadhi za saraka zote za data.

Tembelea hazina ya Infinite Pokémon kwenye GitHub kwa msimbo wa chanzo, nyaraka, maelezo ya utekelezaji, ujuzi, shukrani, na kanusho.