WebHra a plánování událostí

jeezaa

WebHra a plánování událostí
« kdy: 31. 07. 2012, 01:18:38 »
Ahoj,
resim ted jednu otazku, a to sice jak udelat zpracovani nejake naplanovane udalosti.
Pro priklad:
 - nejaka herni postava ma 60HP regen za minutu, takze ji mam kazdou sekundu pripsat 1HP

Toto resim tak, ze dopocitavam z doby posledniho updatu celkovy pocet HP bodu, ktere mam postave pricist.
Problem ale nastave v pripade tezsich udalosti, jako napriklad ze hrac ma nejakou spotrebu surovin.
Da se trenovat a v okamziku, kdy trenovani skonci, se mu spotreba potravin zmeni.

V tu chvili bych jiz musel dopocitavat nejprve dobu, kdy mu skoncil trening a z toho pak spotrebu potravin.
O to hur, pokud na teto udalosti bude zaviset i jiny hrac, popripade vice hracu..

Neresil nekdo, jak na to?

Pres crona ani nonstop bezici demony to delat nechci - kvuli slozitosti a mozne nestabilite.
Pro jednodussi pripady me napada pouzit v DB(mysql) stored procedury spoustene kazdou sekundu, ale jinak pro slozitejsi pripady me zadny univerzalni zpusob nenapada.

Dekuji za kazdou prinosnou odpoved..
« Poslední změna: 31. 07. 2012, 11:36:28 od Petr Krčmář »


Smucik Kluci

Re:WebHra - planovane udalosti
« Odpověď #1 kdy: 31. 07. 2012, 09:53:06 »
Co kdybys to nakreslis?

Nejaky flow diagram s krabicema?

Zaprve ti to dost pomuze a zadruhe to pomuze vsem pochopit problem.

Myslim, ze tvuj dotaz nikdo moc nechape.

Sten

Re:WebHra - planovane udalosti
« Odpověď #2 kdy: 31. 07. 2012, 10:07:48 »
Nechápu, co je na tom dopočítávání složitého

DK

Re:WebHra - planovane udalosti
« Odpověď #3 kdy: 31. 07. 2012, 10:19:12 »
on mysli spise neco jako toto

produkce obili - 500/hod
uzivatel da stavet obilne pole, ktere zvysi produkci o 100/hod, stavba trva 10 minut
uzivatel se prihlasi za 20 minut -> 10 minut je uz produkce vyssi, ale do teto doby se celkove obili navysi pouze o ~166 misto o ~183



a to mu dela problem :)

Smucik Kluci

Re:WebHra - planovane udalosti
« Odpověď #4 kdy: 31. 07. 2012, 11:00:52 »
DK:

Ok - vysvetleni o dva rady jinde, cili naprogramovat to uz nebude takovy problem ne? ;)


Ovrscout

Re:WebHra a plánování událostí
« Odpověď #5 kdy: 31. 07. 2012, 11:49:21 »
dva samostatne zdroje -> takze pocitat zvlast a pak secist? .Vysledek presunout do zásobárny, zapamatovat/vynulovat čas od kdy se počítalo, a počkat do další události kdy se bude sčítat výroba.   (událost pak může být cokoliv např přihlášení,krádež cizím hráčem, nebo událostí co změní případné bonusy, např záplavy,...)

jeezaa

Re:WebHra a plánování událostí
« Odpověď #6 kdy: 31. 07. 2012, 13:10:04 »
Pardon za spatne vysvetleni :-)
po jedne hodine ranni jsem uz asi byl duchem uz nekde jinde..

Nicmene priklad s obilim je presne to co potrebuji.
Obavam se ale problemu, ze kdyz budu mit vice takovych udalosti, jako napriklad:

Hrac 1 si necha po nejake dobe zlepsit vyrobu obili.
Hrac 2 posle vojsko na hrace 1 a snizi mu vyrobu obili.

V tom pripade mel bych musel updatovat hrace 1 ve chvili, kdy dorazi vojsko druhe hrace..

To znamena, ze bych mel pri kazdym zacatku nejake akce (napriklad zacatek boje, zacatek lovu v lese po ujiti nejake cesty..) updatovat stavy hracu, ke kterym se akce vaze..

Pri boji vice hracu to pak polozi server.

+ Cas od casu (pres cron) pingnout hrace, aby se jim v DB prepocital stav a nemuseli dlouho cekat na vsechny zmeny, kdyby prisli po mesici neaktivity.

Diky za vase prispevky :-)
 

Sten

Re:WebHra a plánování událostí
« Odpověď #7 kdy: 31. 07. 2012, 13:22:02 »
Pardon za spatne vysvetleni :-)
po jedne hodine ranni jsem uz asi byl duchem uz nekde jinde..

Nicmene priklad s obilim je presne to co potrebuji.
Obavam se ale problemu, ze kdyz budu mit vice takovych udalosti, jako napriklad:

Hrac 1 si necha po nejake dobe zlepsit vyrobu obili.
Hrac 2 posle vojsko na hrace 1 a snizi mu vyrobu obili.

V tom pripade mel bych musel updatovat hrace 1 ve chvili, kdy dorazi vojsko druhe hrace..

To znamena, ze bych mel pri kazdym zacatku nejake akce (napriklad zacatek boje, zacatek lovu v lese po ujiti nejake cesty..) updatovat stavy hracu, ke kterym se akce vaze..

Pri boji vice hracu to pak polozi server.

+ Cas od casu (pres cron) pingnout hrace, aby se jim v DB prepocital stav a nemuseli dlouho cekat na vsechny zmeny, kdyby prisli po mesici neaktivity.

Diky za vase prispevky :-)

Pokud to při boji více hráčů položí server, asi bude potřeba koupit (pronajmout) lepší železo nebo optimalizovat ty algoritmy. Např. je zbytečné to počítat při každé akci, můžete to implementovat jako tahovou strategii a všechny změny počítat pro všechny hráče najednou na konci každého tahu.

cl1d3

Re:WebHra a plánování událostí
« Odpověď #8 kdy: 31. 07. 2012, 13:42:21 »
Ahoj,
resim ted jednu otazku, a to sice jak udelat zpracovani nejake naplanovane udalosti.
Pro priklad:
 - nejaka herni postava ma 60HP regen za minutu, takze ji mam kazdou sekundu pripsat 1HP

Toto resim tak, ze dopocitavam z doby posledniho updatu celkovy pocet HP bodu, ktere mam postave pricist.
Problem ale nastave v pripade tezsich udalosti, jako napriklad ze hrac ma nejakou spotrebu surovin.
Da se trenovat a v okamziku, kdy trenovani skonci, se mu spotreba potravin zmeni.

V tu chvili bych jiz musel dopocitavat nejprve dobu, kdy mu skoncil trening a z toho pak spotrebu potravin.
O to hur, pokud na teto udalosti bude zaviset i jiny hrac, popripade vice hracu..

Neresil nekdo, jak na to?

Pres crona ani nonstop bezici demony to delat nechci - kvuli slozitosti a mozne nestabilite.
Pro jednodussi pripady me napada pouzit v DB(mysql) stored procedury spoustene kazdou sekundu, ale jinak pro slozitejsi pripady me zadny univerzalni zpusob nenapada.

Dekuji za kazdou prinosnou odpoved..

Udalosti zavisle na case by som ja osobne riesil priamo na urovni databazy. MySQL ma na to od verzie 5.1.x event scheduler, ktory kazdu sekundu / minutu alebo v inom casovom intervale aky si nastavis vykona nejake algoritmy ktore potrebujes.