Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Web browser game - kako programirati borbu?

[es] :: PHP :: Web browser game - kako programirati borbu?

[ Pregleda: 3628 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.telenor.rs.



+303 Profil

icon Web browser game - kako programirati borbu?25.11.2009. u 11:11 - pre 175 meseci
U igrici koju pisem jedan igrac ce moci da napada nekog drugog igraca. E sad ako igrac 1 posalje par vojnika na igraca 2 skripta ce izracunati za koliko vojska dolazi do igraca 2. E sad problem je sledeci: ja izracunam da ce vojska stici u selo drugog igraca u 14h i 30 min. Kad stigne tamo moram da izracunam ko je pobedio i da posaljem igracu poruku sa rezultatom borbe. Ovo mi nije problem. Problem broj jedan je kako pokrenuti skriptu u 14h i 30min? Da li cron job moze da se namesti da svake sekunde pokrece istu skriptu? Problem broj dva je to sto vecina igraca ima po par napada u isto vreme. Evo da kazemo da svaki igrac ima po 10 napada. Ako ogranicim da jedan server ima maksimalno 10.000 igraca to je 100.000 napada u isto vreme. Znaci ja svake sekunde radim query koji ce da uradi if (trenutno vreme = vreme borbe) {bori se} else {trazi i dalje}. Recimo da taj query nadje 5.000 napada koji se odigravaju te sekunde. Ja onda moram da odradim drugi query nad tabelom sa vojskom(opet gomila redova) i da posaljem poruku korisniku. Sad mislim da za sve ovo treba vise od jedne sekunde? Cak i da ne treba sta ako bude veliko opterecenje servera pa zatreba? Ako se skripta izvrsava preko jedne sekunde korisnici mogu da zloupotrebe to pa da varaju u igrici, poruke ce kasniti, ko zna kakvi jos problemi mogu da se dogode kao posledica kasnjenja. Znaci ljudi sta da radim? :) Da li da smanjim dozvoljeni broj igraca(sto ce dovesti do manjeg broja borbi(sto ce opet resiti ovaj problem(da li ce resiti ovaj problem?:) )), ili da borbe resim na neki drugi nacin? Svaki savet je dobrodosao. Samo da napomenem da skriptu pisem onako, bezveze. Samo zbog provere znanja i vezbanja oop-a.:)
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
91.148.95.*

Sajt: norway.dakipro.com


+190 Profil

icon Re: Web browser game - kako programirati borbu?25.11.2009. u 11:24 - pre 175 meseci
Pa bez da se teoretise, probaj 100k redova na serveru, pa vidi.. mislim, napravi petlju koja ce da ubaci 100k simuliranih borbi, pa pusti kron. Moze da bude i na granici od 1s, ali opet probaj.
A mozda da stavis recimo polje fight_is_over kao flag, pa ako je vreme> 14:30 && fight_is_over==0, echo molimo sacekajte, borba je u toku, tako da igrac ne moze nista da radi (ili ne moze da se bori dalje) ako je borba u toku, a kron je jos nije obradio. cisto kao ideja ako ti moze vrsiti posao.
 
Odgovor na temu

batika

Član broj: 72401
Poruke: 67
*.adsl.eunet.rs.



Profil

icon Re: Web browser game - kako programirati borbu?25.11.2009. u 11:38 - pre 175 meseci
I ja mislim da stavis neki uslov za borbu, da ne moze iste sekunde.

A inace ako cron pokrene skript u 14:30:00 taj skript ce da se zavrsi,
bez obzira sto je zapocet isti taj skript u 14:30:01

Znaci u isto vreme ce se raditi posao dva puta.
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.telenor.co.yu.



+303 Profil

icon Re: Web browser game - kako programirati borbu?25.11.2009. u 13:59 - pre 175 meseci
E vidite to je odlicna ideja. Cak mi je dala ideju kako da prosirim funkcionalnost skripte. A test brzine cu da uradim kad stignem do njega. Jos uvek radim dodavanje jedinica, gradjevina i ostalih dzidzabidza. Valjda volim da razmisljam unapred :D
Moram da pitam jos nesto. Vise je matematicki problem ali ce valjda neki programer znati odgovor:)
Ako imam mapu cija je velicina 10x10 polja:
Code:

    1 2 3 4 5 6 7 8 9 10
-1  X X X X X X X X X X
-2  X X X X X X X X X X
-3  X X X X X X X X X X
-4  X X X X X X X X X X
-5  X X X X X X X X X X
-6  X X X X X X X X X X
-7  X X X X X X X X X X
-8  X X X X X X X X X X
-9  X X X X X X X X X X
-10 X X X X X X X X X X

i "prelazak" preko svakog polja traje jedan h, kako da izracunam koliko ce igracu vremena trebati da dodje od polja koje se nalazi na -9,9 do polja -1,1 ako se krece najkracim putem? Valjda nije pretesko pitanje:)
 
Odgovor na temu

vatri
Banja Luka, RS

Član broj: 68697
Poruke: 1006
*.dial-up.dsl.siol.net.



+18 Profil

icon Re: Web browser game - kako programirati borbu?25.11.2009. u 14:14 - pre 175 meseci
recimo da imas (3,3) i (6,2) - trebace ti 3+1 = 4h. Znaci oduzmes x osu manjeg od x ose veceg i isto tako za ipsilon i onda saberes to dvoje

pogledaj kako travian izgleda, mozda ti pomogne (ako nisi vec)...
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.telenor.rs.



+303 Profil

icon Re: Web browser game - kako programirati borbu?25.11.2009. u 14:31 - pre 175 meseci
Travianovu mapu sam imao u glavi kad sam razmisljao o mapi :) Samo nisam znao kako da izracunam, ali eto sad znam.
Mnogo hvala obatrojici na pomoci :). Mucio bih se sa ovim problemima par dana da nije bilo vas(sa ovim zadnjim par godina:D).
 
Odgovor na temu

Nemke_BG

Član broj: 163822
Poruke: 341
*.static.sbb.rs.

Jabber: Nemke_BG@elitesecurity.org
Sajt: https://www.nmdesign.rs


+45 Profil

icon Re: Web browser game - kako programirati borbu?25.11.2009. u 14:38 - pre 175 meseci
i na ogame-u se desavaju redovno lagovi servera...tipa do nekih 3 seki, bassss retkoooooo i do 5 sek...tako da je to nesto na sta je igraci na kraju naviku i planiraju oko toga...

ili mozes kao na ikariamu da udaris da borbe traju po rundama tj. svakih 20 minuta se desi okrsaj trupa...
...
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.telenor.rs.



+303 Profil

icon Re: Web browser game - kako programirati borbu?25.11.2009. u 15:27 - pre 175 meseci
Ja sam zamislio nesto kao travian zato sto sam ga nekad igrao(15 neprospavanih noci, onda delete account-a :D) pa otprilike znam sta bi mi sve trebalo. Ne znam kako da objasnim ali pokusacu ovako: Ja pravim nesto kao cms za browser igricu. Znaci ko hoce online igricu skine moju skriptu, postavi je na server, doda rase, gradjevine, jedinice, bonuse i ostala cuda i ima igricu :) Skripta ce biti besplatna (naravno), a ako neko ne zna da prilagodi template ili neki njen deo svojim potrebama ja i drug to mozemo da odradimo uz odgovarajucu nadoknadu(naravno :))
 
Odgovor na temu

K4R10
Karlo Hubai
Student, FTN
SO(NS), Srbija

Član broj: 236574
Poruke: 20
*.neobee.net.

Sajt: www.dijabetesbezgranica.i..


Profil

icon Re: Web browser game - kako programirati borbu?25.11.2009. u 21:18 - pre 175 meseci
Citat:

recimo da imas (3,3) i (6,2) - trebace ti 3+1 = 4h. Znaci oduzmes x osu manjeg od x ose veceg i isto tako za ipsilon i onda saberes to dvoje

pogledaj kako travian izgleda, mozda ti pomogne (ako nisi vec)...


Koliko se ja secam u travian-u vojska ide po dijagonali, tj u ovom slucaju po dijagonali pravougaonika sa temenima (3,3), (3,2),(6,3),(6,2) pa je rastojanje:

sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))

tj u ovom slucaju:

sqrt((3-6)*(3-6) + (3-2)*(3-2)) = sqrt(3*3+1*1) = sqrt(10) = 3.16227766...


Mislim da je ovo bolje resenje. Malo je glupo da igrac koji je "fizicki blizi" putuje vise vremena.
Zamisli da imas 2 polja koja su tvoja (0,0) i (0,1) i saljes vojsku na polje (20,0)
Po ovoj formuli vojska stize:
iz (0,0) na (20,0) za sqrt((0-20)*(0-20)+(0-0)*(0-0)) = 20:00:00 sati
iz (0,1) na (20,0) za sqrt((0-20)*(0-20)+(1-0)*(1-0)) = 20:01:30 sati

razlika je samo 1 min i 30 sek.

po onoj formuli bi razlika bila ceo sat (20h i 21h)





[Ovu poruku je menjao K4R10 dana 25.11.2009. u 22:35 GMT+1]
 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
91.148.86.*



+13 Profil

icon Re: Web browser game - kako programirati borbu?26.11.2009. u 08:43 - pre 175 meseci
[offtopic]
Ostavi link do igrice, cim izadje neka Alpha/Beta verzija :-))
[/offtopic]
 
Odgovor na temu

u_m
Urukalo Milan
PH

Član broj: 18631
Poruke: 889
*.static.sbb.rs.

ICQ: 32554731
Sajt: https://milan.urukalo.com


Profil

icon Re: Web browser game - kako programirati borbu?29.11.2010. u 22:43 - pre 163 meseci
Citat:
Milos911: Ja pravim nesto kao cms za browser igricu. Znaci ko hoce online igricu skine moju skriptu, postavi je na server, doda rase, gradjevine, jedinice, bonuse i ostala cuda i ima igricu :) Skripta ce biti besplatna (naravno), a ako neko ne zna da prilagodi template ili neki njen deo svojim potrebama ja i drug to mozemo da odradimo uz odgovarajucu nadoknadu(naravno :))


:) .. ovako nesto sam i ja imao u glavi, bas me zanima kako napredujes..

reci mi samo zasto borba mora da se izvrsi u 14:30h? .. zasto se ne bi izvrsila onog trenutka kad neko posalje zahtev za rezultatom borbe?

napravis borbe i njihove zavisnosti.. i kad se desi da nekakav zahtev trazi podatak koji zavisi od te borbe, ti odradis borbu sa podacima koje si imao u "14:30"

primer: igrac salje 4 vojnika u 12h, koji ce stici u 14:30 na odrediste i desice se borba sa 2 vojnika na lokaciji (zapises ovo u bazu kao trenutno stanje, koje ce biti aktuelno u 14:30). u 14h se loguje igrac koji ce biti napadnut, pogleda mapu i ti tad okidas racunanje, upis u bazu, onih vojnika koji se trenutno krecu na tom delu mape. on kad vidi opasnost(ako ima opciju da vidi ovo?) pomera 1 vojnika sa polja pored, stici ce npr u 14:15 na napadnuto polje (promenis trenutne podatke u bazi, na nove, koji ce takodje biti aktuelni u 14:30) u 17h se loguje komsija-igrac i salje zahtev za pregled statusa kod komsije i ti tad gledas poslednje aktuelne podatke i okidas bitku 4 protiv 3, pises u bazu rezultat i saljes prikaz na mapi, polje je osvojeno, ali preziveo je samo 1 vojnik od 4 napadaca
#include <music.h>
#include <beer.h>
#include <girls.h>
main(){ run(partytime);}
---------
Moj licni sajt
Moj wap sajt--offline
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.mbb.telenor.rs.



+303 Profil

icon Re: Web browser game - kako programirati borbu?30.11.2010. u 00:24 - pre 163 meseci
Citat:
u_m: :) .. ovako nesto sam i ja imao u glavi, bas me zanima kako napredujes..
Odustao sam jer sam shvatio da nemam dovoljno iskustva da zavrsim projekat... Ali sam pre toga bas bas dobro prostudirao tematiku tako da sve sto te zanima pitaj.
Citat:
u_m
reci mi samo zasto borba mora da se izvrsi u 14:30h? .. zasto se ne bi izvrsila onog trenutka kad neko posalje zahtev za rezultatom borbe?

Zato sto je to prevelika komplikacija koja ne bi donela mnogo ubrzanja, a sa druge strane donela bi mnogo glavobolje.
Recimo situacija:
Kao sto si i rekao, u 12:00 korisnik posalje vojsku na selo 1. Znaci ja kreiram borbu i izracunam sve kako ce biti u 14:00? E sad korisnik 2 posalje vojsku na selo 1 u 13:00. Opet racunamo sta ce biti (2). Korisnik u selu 1 pocinje da pravi par vojnika u 13:10. Opet racunajnje(3). Korisniku saveznici salju pomoc koja stize u 13:50. Opet racunanje(4). Korisnik u 12:00 ima x resursa. Vidi da nece preziveti napad i salje x resursa u drugo selo. Opet racunanje, jer se sad broj resursa koje bi vojska verovatno oduzela ne poklapa sa brojem koji bi se dobio u 12:00(5). I tako u krug. Znaci imamo 5 nepotrebnih opterecivanja servera, a dovoljno je samo jedno. U 14:00h uzmemo trenutno stanje i odradimo borbu i sve ostalo.
E sad, tu ima mnogo proracuna. Ako uzmemo da ovaj prvi salje 3 razlicite jedinice, treba da izracunate snagu u napadu, odbranu, bonuse protiv nekih jedinica, koje jedinice prvo napada (ako ne razumes sta sam hteo da kazem sa ovim pitaj), koliko resursa svaka jedinica nosi.... Znaci morate da razvijete neki dobar algoritam za proracunavanje svega (idealno bi bilo da imate razne bonuse i pravila koja vaze vec izracunate i upisane u bazi(tipa ako je jedinica lvl2 vi negde vec upisete koliko cega ima, da ne racunate svaki put)), dobro ispanirate bazu, isplanirate koliko korisnika moze da koristi skriptu u isto vreme, i tako...
Ne znam sta vise da pisem, ako te sta zanima pitaj :)
 
Odgovor na temu

[es] :: PHP :: Web browser game - kako programirati borbu?

[ Pregleda: 3628 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.