Jump to content
php.lv forumi

Browser based spēle


yuppio

Recommended Posts

Sveiki!

 

Ir radusies ar pāris domu biedriem ideja par browser based stratēģijas spēles radīšanu līdzīgu kā Travian, bet ar citādāku spēles ideju un gaitu.

 

Ir šāda tāda pieredze php/mysql koda rakstīšanā, bet ir neskaidrība par to kā šāda tipa projektos tiek realizētas pāris fīčas.

 

Piemēram armijas pārvietošana no viena reģiona uz otru - tas piemēram notiek 15 minutēs. Attiecīgi events tiek piefiksēts un pēc 15 min. tam jāizpildās, tad nu jautājums par to, ja ir čupa ar šādiem eventiem dažādos laikos, kas ir tas process kas seko līdzi kad ir kas jāizpilda.

 

Līdzīgi arī par to, ka, piemēram, tajā pašā travianā resursi tiek doti katram spēlētājam realtime. Tu piemēram saņem 600 resursus stundā - 100 resursus minūtē, bet nu tie cipari mainās uz katru refrešu - attiecīgi arī kkāds process, kas praktiski ir realtime un labo datubāzi.

 

Pēc skata jau izskatās, pēc kkādas C++ aplikācijas backgroundā, kas šīs te lietas dara, jo ar php pie puslīdz liela apjoma, tas diez vai ir normāli izdarāms.

 

Idejas/pieredze/ieteikumi ?

 

Paldies.

Link to comment
Share on other sites

C++ vai ne-C++, bet kautkādam softam backgroundā uz servera jābūt. Gan jau ka rakstīts arī php būs sākumā labs. Vēlāk redzēsi, ka bremzē - pārrakstīsi performancei kritiskās valodas zemākā līmeņa valodā.

Link to comment
Share on other sites

Par daļu projektā, varu realizēt šādus aprēķinus tīrā PHP, pie tam garantēju minimāli mazu noslodzi pie liela apmeklētāju skaita. Respektīvi, spēles loģikas noslodze noteikti būs mazāka par pašas lapas ģenerēšanas noslodzi (Viss tiek veikts ar dažādām matemātikas un augstākās matemātikas viltībām).

P.S. Ir tieša pieredze šādu online aprēķinu veikšanā.

Link to comment
Share on other sites

C++ vai ne-C++, bet kautkādam softam backgroundā uz servera jābūt. Gan jau ka rakstīts arī php būs sākumā labs. Vēlāk redzēsi, ka bremzē - pārrakstīsi performancei kritiskās valodas zemākā līmeņa valodā.

 

Nav jābūt nekādam softam bakgroundā, lai šos aprēķinus veiktu.

Link to comment
Share on other sites

Ar vārdu backgrounds es šajā kontekstā domāju kautko, kas strādā uz servera neatkarīgi no klienta pieprasījumiem. Atkarībā no spēles prasībām derēs arī cron-veidīgs risinājums.

Imho tas ievērojami atvieglos spēles koda struktūru. Nevis uz katra pieprasījuma kaut kādu maģiju rēķināt.

 

Bet nu augstāko matemātiku tur vajag? Tu ko tur diferenciālvienādojumus risināsi vai integrāļus vilksi?

Link to comment
Share on other sites

bubu, ar background es sapratu tieši to pašu un izmantojot šo "maģiju" - dažus rindu izvedumus un vēl šo to, forši var daudzu aprēķinus rēķināt uz katra pieprasījuma - tas samazina kopējo nepieciešamo aprēķinu resursu daudzumu simtiem un tūkstošiem reižu.

 

Principā integrešāna jau arī sanāk, bet ne pašos aprēķinos, bet, lai iegūtu formulas, kuras izmanto rēķināšanā pie pieprasījuma.

Edited by codez
Link to comment
Share on other sites

bubu, iedomājies tu veic aprēķinus ik pēc kāda noteikta laika dt. Šie aprēķini summāri summējas kādā lielumā - piemēram, resursi.

Bet patiesība tas, ko tu dari, tā ir tīrākā skaitliskā integrēšana, kur tu vari iegūt vajadzīgo vērtību, ja zini integrāli savai diferenciālās formas formulai.

Edited by codez
Link to comment
Share on other sites

Par daļu projektā, varu realizēt šādus aprēķinus tīrā PHP, pie tam garantēju minimāli mazu noslodzi pie liela apmeklētāju skaita. Respektīvi, spēles loģikas noslodze noteikti būs mazāka par pašas lapas ģenerēšanas noslodzi (Viss tiek veikts ar dažādām matemātikas un augstākās matemātikas viltībām).

P.S. Ir tieša pieredze šādu online aprēķinu veikšanā.

 

Nu pagaidām vēl viss ir idejas līmenī un vēlme kodēt pagaidām ir pašam, tāpēc cerēju uz padomu kā var realizēt tās interesantākās/sarežģītākās vietas.

 

Lai vai kā paldies par piedāvājumu.

Link to comment
Share on other sites

ne jau visu vajag saglabāt kā ciparus un burtiski skaitīt katru sekundi resursu pieaugumu vai etc. naudas plūsmu var piemēram kā laiku glabāt, cik sen tas naudas pods nav aiztikts un cik noteiktā laika posmā ir sakrājusies naudiņa.

 

cronu vajag viennozīmīgi, jo parasti darbības ir komplicētas, viens cilvēks dara, bet sekas rodas daudziem citiem cilvēkiem, neatkarīgi no tā vai viņi ir onlainā vai nav.

Link to comment
Share on other sites

cronu vajag viennozīmīgi, jo parasti darbības ir komplicētas, viens cilvēks dara, bet sekas rodas daudziem citiem cilvēkiem, neatkarīgi no tā vai viņi ir onlainā vai nav.

 

Kas attiecas uz komplicētām darbībām, tad labāk nedaudz padomāt un izveidot bez cron, jo cron ir resursu rīma.

Link to comment
Share on other sites

Kas attiecas uz komplicētām darbībām, tad labāk nedaudz padomāt un izveidot bez cron, jo cron ir resursu rīma.

Muļķīgāku apgalvojumu sen nav nācies dzirdēt...

 

crons jebšu crontabs jebšu task scheduleris (windows vidē) ir veids kā regulāri/cikliski (ar zināmiem nosacijumiem) izsaukt kaut kādas darbības/komandas/aplikācijas .. un resursus faktiski nerij absolūti nekādus..

 

Tas kā tu uzraksti savu aplikāciju ir kaut kas pilnīgi cits.

Link to comment
Share on other sites

nu cron 95% gadījumos darbosies arī tad ja tu viņu pats nemaz neizmanto. piemēram statistika tiek rotēta, bekupi taisīti.

 

tā ka, ja pieliski vēl vienu procesu, tad tur nekas būtisks nemainīsies.

 

lai gan es arī esmu par to, ka cronu vajadzētu pēc iespējas mazāk izmantot. es pats piemēram izmantoju kronu, lai sinhronizētu datus uz vairākiem serveriem. ja to darītu vienkārši atverot lapu, tad tas aizņemtu pārāk daudz laika un lapa lādētos aizdomīgi lēnu.

Link to comment
Share on other sites

ne jau visu vajag saglabāt kā ciparus un burtiski skaitīt katru sekundi resursu pieaugumu vai etc. naudas plūsmu var piemēram kā laiku glabāt, cik sen tas naudas pods nav aiztikts un cik noteiktā laika posmā ir sakrājusies naudiņa.

 

cronu vajag viennozīmīgi, jo parasti darbības ir komplicētas, viens cilvēks dara, bet sekas rodas daudziem citiem cilvēkiem, neatkarīgi no tā vai viņi ir onlainā vai nav.

 

Jā, līdzīgu domu man jau pasvieda viens cilvēks. Ja ir runa tieši par resursu updatošanu konkrētam userim, tad ideja laba ir par to, ka var updatot to ciparu tikai pie nepieciešamības.

 

Ja useris nav online un viņa resursu apjoms neietekmē kādu procesu, tad nav svarīgi cik ir pieaudzis tas cipars noteiktā laikā pēc atslēgšanās. Ja nu kāds izspiego/uzbrūk vai ko tamlīdzīgu, kur ir svarīgi redzēt konkrēto ciparu, tikai tad updatot to ciparu.

 

Bet nu userim sēžot online gan jāupdato tas cipars būtu uz katru refreshu domājams

Link to comment
Share on other sites

Muļķīgāku apgalvojumu sen nav nācies dzirdēt...

crons jebšu crontabs jebšu task scheduleris (windows vidē) ir veids kā regulāri/cikliski (ar zināmiem nosacijumiem) izsaukt kaut kādas darbības/komandas/aplikācijas .. un resursus faktiski nerij absolūti nekādus..

 

Nav jau brīnums, ka draugiem.lv vienā pieprasījumā slēdzās klāt 15 dažādām datubāzēm un regulāri novērojamas performances problēmas, ja šādi darbinieki tur kaut ko taisa. Agrāk nevarēju saprast, kā var būt performances problēmas tik mazai lapai. Tagad skaidrs.

 

Un tagad pie lietas. Ja tev piemēram ir 100 000 patstāvīgi spēlētāji, tad, ik pēc piecām minūtēm (vai pat biežāk, ja gribētu normālu online) cron izsauktajam pieprasījumam būtu jāaprēķina 100 000 lietotāju dažādu datu izmaiņas. Tā vietā, lai simtiem reižu diennakts laikā rēķinātu katra jūzera visus datus, tos var rēķināt tikai dažas reizes dienā. Pat pie regulārā spēlētāja resursu ieguvums būtu ļoti liels, nemaz nerunājot, ka ir tādi, kuri ieeiet vienreiz nedēļā, vai varbūt vēl retāk.

Spriežot pēc kādā konkrētā portālā izmantotas DB arhitektūras, arī DB klasteru sistēma dažiem varētu izklausīties, kā muļķīgākais apgalvojums, kuru nācies dzirdēt.

Link to comment
Share on other sites

Tu esi jocīgs, codez, jeb tikai izliecies? Neviens neapšauba to, ka cron'ā palaists process var būt resursu rijīgs, ilgs un bremzīgs.

Tas, kam Roze iebilde (un es tam pievienojos) ir tavis teiktais, ka "cron ir resursu rīma". Cron ir ļoti maziņš failiņš (uz mana linukša 16kB), kas praktiski neko nerij un netērē. Tas tikai palaiž citu procesu, pār kuru tev ir pilna kontrole kā to optimizēt un izveidot optimālāku.

Link to comment
Share on other sites

×
×
  • Create New...