Astăzi, suntem cu voi să examinăm mecanismele de pradă și dezordine în jocuri. Vom continua să evaluați - elementele de bază de a crea jocuri.
Cum aleatoare (generare aleatorie a numerelor) în joc (și programele în general) și cum să facă astfel de lucruri necesare pentru RPG-ul ca deschiderea cufere cu lucruri aleatorii.
Ce este prada și aleatoare
Să începem o mică distanță. Fură și aleatoare, desigur, cuvintele din limba engleză.
Fură (Fură) - este o recompensă, poate fi tradus ca - trofee. În mod normal, precipită din mafioti date pentru completarea nivelului, sau pentru finalizarea misiunii.
Aleatoare (Random) - știm cu toții ce este, a fost un accident. Numărul aleatoriu, în mod aleatoriu, evenimente, etc. Aceste cuvinte au fost mult timp în lexiconul multora.
Există, de orice șansă?
Acum să mai fac o digresiune despre probabilitatea și întâmplării, la toate. Anterior, sa crezut ca sansa nu exista. Noi pur și simplu nu înțeleg cum se întâmplă ceva și, în consecință, nu se poate explica de ce, relativ vorbind, a căzut Reshko sau vultur.
Se credea că căderea monedelor pe una dintre părți este imposibil de prezis, de fapt, pentru că o persoană nu se poate calcula cu exactitate poziția monedei în mână atunci când a aruncat, forța de aruncare și toate celelalte lucruri.
Există de fapt o foarte gravă va trebui să meargă în filozofia, dacă vom începe să analizăm această întrebare, dar ceea ce este interesant. Deși secolul al 19-lea, teoria probabilitatii a dovedit că accidentul încă aleatoriu, jocuri și programarea toate programele care sunt responsabile pentru generarea de numere aleatoare, este foarte supusă anumitor legi.
Începe jocul în filtru de joc și montați-l pentru a genera un număr aleator de la 0 la 10. Apoi rulați din nou, va scadea același număr, dacă toate condițiile sunt absolut egale. Este amuzant modul în care lumea virtuală este absolut previzibil, și toate elementele impredictibilă este chiar posibil să se facă afară și să înțeleagă ce se va întâmpla în continuare.
Probabil știți sau auzit de un astfel de lucru ca o sămânță joc - joc de porumb. Ai auzit? Oricum. Este chiar și în Minecraft. De ce am nevoie de ea? Și asta e ideea este că întreaga generație a lumii va fi legat de un anumit cereale, iar dacă știi că e doar un singur număr - sămânța, puteți recrea complet întreaga lume avtosgenerirovanny unu la unu!
Nu e ciudat? Acesta generează un milion de unități diferite, iar în cazul în care scorul de cereale = 5, lumea întotdeauna va fi la fel mai. Pentru că nu este în generarea fiecărei unități în parte, nu este accidentală, dar este doar un singur număr - total generație din lume. Pe scurt, deosebit de dificil de explicat, dar principiul general am crezut că am Donos.
Psevdorandom
Să chiar mai ușor. Orice număr aleatoriu, care oferă programe aleatorii (10) - nefiga nici un accident. Există un algoritm foarte clar pentru a genera. Acest lucru înseamnă că cunoașterea algoritmului, este posibil pentru a da rezultatul este întotdeauna același. Dacă sunteți interesat de toate aceste lucruri, urmați în vikipidiyu. De exemplu - o variabilă aleatoare.
Să ne amintim un astfel de lucru ca un psevdorandom de DotA. Acest lucru înseamnă - crearea de vizibilitate a întâmplării. Să presupunem că o șansă crit = 10%. Dar noi știm că, teoretic, putem avea un rând de 10, 30 sau chiar 10.000 de accidente vasculare cerebrale, fără Crit. Există posibilitatea ca o va face.
Probabilitatea generală scade cu numărul de încercări și cade puternic, dar teoretic este posibil. Astfel aleatoriu, după cum probabil știți de la World of Tanks - un lucru ciudat și nu foarte onest. Noi nu vin doar cu coreeană și Belorumynsky aleatoare.
Pentru a depăși acest lucru, unele jocuri vin cu unele psevdorandom. Acest lucru este atunci când, de exemplu, la 10% crit la întâmplare Crit nevypadenii pentru creșterile sale pierderi. Se pare un nonsens, și modul în care acest lucru nu este corect, dar pe de altă parte, în timp corect în cazul în care Crit de 100 de atacuri în 10% și nu se încadrează? Și acest lucru poate fi.
Ei bine, totul a fost doar o bază teoretică pic, creierul sa se intinda, cum se spune. Acum să trecem la codul specific și a vedea cum să facă cufere loot la întâmplare.
Cum sa faci un piept cu loot la întâmplare în (studio filtru de joc) joc
Din nou, deși, ca bază, voi folosi jocul Lonely Dude. Am făcut acest lucru:
Noi cufere - stânga
benzi Hippie nu este necesar, se arată doar atunci când se deschide. De fapt, atunci când eroul următor (sau se referă), eroul bate trunchiul și ia hipy. end Hipy - piept este deschis.
Am uitat cum se face benzi hippie? Sunteți aici:
- Cum helsbar? Strip hippie în filtru de joc
Ei bine, personal, am făcut acest lucru, metodele pot fi diferite. Puteți să-l deschideți și, atunci când este atins, dar puțină așteptare nu poate fi plăcut jucătorilor.
Toate prescrise în noul obiect - Chest
deschis = 300 Doar o variabilă locală poate fi orice, deși CP. În acest caz, luați 1 tick, piept deschis după 10 secunde.
Aici am de fapt, nu distrug, deși se încadrează obiecte ar putea-au chestii aici și aici.
Aici avem toate minciuni.
Aici este codul de piept cu un loot aleatoare:
dacă distance_to_object (o_hero)<5 then open-=1
dacă este deschis = 0
effect_create_above (ef_ring, x, y, 1, c_red)
jefuiesc = irandom (4)
dacă loot = 0 instance_create (x, y, o_gold)
dacă loot = 1 instance_create (x, y, o_grenade)
dacă loot = 2 instance_create (x, y, o_shotgun)
dacă loot = 3 instance_create (x, y, o_ammo_4_1)
dacă loot = 4 instance_create (x, y, o_hp_1)
instance_destroy ()
> În general, totul este simplu. Există încă un standard de filtru efect de joc. Ei bine.
dacă distance_to_object (o_hero)<5 then open-=1 Это один из способов отнимать у сундука "жизни", просто если рядом с ним есть герой.
Metoda care este utilizată rar, de obicei, face coliziune și scrie totul acolo, poți să faci ce vrei. Doar atunci când conflictele au nevoie de buton pentru a clemă (pentru a merge la partea laterală a pieptului), ci pentru că a deschis doar după 10 secunde dacă vom închide și toate.
M-am imbracat cea mai mare parte cu caractere aldine, tot ce avem nevoie este o funcție de:
irandom (n) Acest lucru va avea numărul (n) într-o recepție de bandă aleatorie. Să-l 10 scrie va lua 0 la 10, deduse. Nu uita că aici ia 0.
Dacă tocmai ați scrie aleatoriu - nu va include numerele nu sunt rotunjite, nu întreg. că nu avem nevoie de multe ori.
Am scris mai devreme runda (aleator (n)) - deci doar rotunjit, dar nu este nevoie să fie atât de pervertit.
irandom suficient utilizate (n)
Apoi, pur și simplu a crea un premiu, sau un obiect pe care îl doriți pentru fiecare versiune.
Aici cele 5 opțiuni, rata de scădere de 20% fiecare.
O altă întrebare, cum o astfel rata de scădere de loot spun 5%, în timp ce pot scădea doar 1 tip de pradă. De exemplu - super-sabie sau altceva se răcească.
Acest lucru am scris la moartea dușmanilor, este scris ca aceasta:
Aici există deja un pic diferit:
dacă aleator (100)> 99 apoi instance_create (x, y, o_gold) // 1%
dacă aleator (100)> 95 apoi instance_create (x, y, o_ammo_1) // 5% Din nou, la fel, "atunci" scrie aici nu este necesar. Asta e ceva de genul am folosit pentru a face toate de dezordine.
Apoi, aruncă zarurile 0 la 100, cu pierderea de mai mult de 99 (95), chiar și inclusiv neintregii, creați prada noastră. Și totul este scris cu moartea inamicului.