NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Avatar
Martin Konečný (pavelco1998):10.8.2013 12:36

Ahoj,

dejme tomu, že dělám souboj dvou protivníků v jedné RPG hře. Souboj probíhá ve stylu jednotlivých kol, kde se pokaždé určí, jaké poškození hráč způsobí. Poškození ovlivní několik různých faktorů a popis každého kola se poté objeví ve zprávě o souboji.

Potřebuji od vás zkušenějších radu - mám do databáze ukládat každé kolo zvlášť, nebo to průběžně ukládat do proměnné a tu pak hodit do jednoho řádku?

Počet kol může být až do 100 (v pozdějších fází možná dokonce i více). To znamená min. 100 insertů do DB, a to pouze průběh souboje (o dalších asi deseti query dotazech nemluvím). Pracují s MySQL databází (InnoDB), která, pokud si správně pamatuji, není v insertech úplně nejrychlejší.

Jen bych ještě chtěl dodat, že v jednu chvíli může probíhat více soubojů, takže se celý počet insertů znásobí n krát v závislosti na počtu.

Edit: Mám pocit, že už jsem to někdy někde řešil. Pokud to bylo zde, tak se omlouvám.

Díky moc.

Editováno 10.8.2013 12:36
Odpovědět
10.8.2013 12:36
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Martin Konečný (pavelco1998)
David Hartinger:10.8.2013 12:53

To přeci záleží na tom jestli chceš mít údaje o jednotlivých kolech nebo ne, jak to máme vědět? :)

Nahoru Odpovědět
10.8.2013 12:53
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Martin Konečný (pavelco1998):10.8.2013 13:02

Cituji: "Poškození ovlivní několik různých faktorů a popis každého kola se poté objeví ve zprávě o souboji."
Chci dát hráči vědět o detailním průběhu souboje, čili i o každém kolu. Varianta "co kolo, to insert" je podle mě lepší, ale nejsem expert na databáze a nevím, jak by to mohlo být zatěžující.

Nahoru Odpovědět
10.8.2013 13:02
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Kit:10.8.2013 13:08

Může hráč ovlivnit, zda bude další kolo nebo prchne?

Samozřejmě insert. Jestli ho databáze provede nebo jen udělá update záleží jen na ní.

Editováno 10.8.2013 13:12
Nahoru Odpovědět
10.8.2013 13:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Martin Konečný (pavelco1998)
David Hartinger:10.8.2013 13:12

Stále jsi mi neodpověděl. Že aplikace zobrazí nějaké zprávy o souboji neimplikuje, že je bude také ukládat. Mohla by jen uložit výsledek souboje, ne průběh. Inserty nemusíš dělat postupně, ale najednou (jedním dotazem) až zápas skončí, takže to pak pomalé nebude.

Nahoru Odpovědět
10.8.2013 13:12
New kid back on the block with a R.I.P
Avatar
Odpovídá na Kit
Martin Konečný (pavelco1998):10.8.2013 13:16

Hráč prchnout nemůže. Další kolo proběhne jen v případě, že oba soupeři mají vyšší život než 0.

Nahoru Odpovědět
10.8.2013 13:16
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na David Hartinger
Martin Konečný (pavelco1998):10.8.2013 13:18

Tím máš na mysli, abych si ukládal do pole průběh souboje a na konci provedl INSERT v tomto smyslu?

INSERT INTO table (col1, col2)
VALUES (val1, val2), (val1, val2), (val1, val2)
Nahoru Odpovědět
10.8.2013 13:18
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Kit:10.8.2013 13:23

A co když jsou dva souboje současně?

Jaká je časová prodleva mezi jednotlivými koly?

Nahoru Odpovědět
10.8.2013 13:23
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Martin Konečný (pavelco1998):10.8.2013 13:27

Souboj probíhá pomocí nekonečného cyklu, který se přeruší v případě, že život jednoho ze soupeřů klesne na nulu.
Když bude chtít hráč na někoho zaútočit, klikne na tlačítko, PHP vygeneruje souboj a stránka se hned přesměruje.

Nahoru Odpovědět
10.8.2013 13:27
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Kit:10.8.2013 13:33

To znamená, že hráč nevidí průběh souboje ale až výsledek?

Nahoru Odpovědět
10.8.2013 13:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Martin Konečný (pavelco1998):10.8.2013 13:42

V podstatě ano, uvidí až výsledek. Po vygenerování souboje se stránka přesměruje na stránku se zprávami, kde hráč uvidí, jak souboj probíhal. Ale v době generování souboje hráč nic neuvidí.

Nahoru Odpovědět
10.8.2013 13:42
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Kit:10.8.2013 13:46

Tak ten souboj udělej přímo v databázi. Jeden SQL dotaz, který zavolá vloženou proceduru. Bude to i rychlé.

Nahoru Odpovědět
10.8.2013 13:46
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Martin Konečný (pavelco1998):10.8.2013 14:01

Obávám se, že tak daleko mé znalosti nesahají.

Nahoru Odpovědět
10.8.2013 14:01
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Kit:10.8.2013 15:01

Je to programování jako každé jiné. Procedura je uložena přímo v databázi v přeloženém stavu. Jenom jí dodáš, kdo s kým válčí.

Nahoru Odpovědět
10.8.2013 15:01
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Martin Konečný (pavelco1998):10.8.2013 15:14

Teď to zkouším a je pravda, že je to jednoduché. Jen mi to oproti PHP přijde docela nepřehledné.

Pokud to chápu správně, pak nejvhodnější bude předat pouze ID soupeřů a procedura si vše potřebné najde sama a provede souboj. Znamená to, že pak bude stačit zavolat něco takového:

$q = $pdo->prepare("CALL fight (?, ?)");
$q->execute(array($attackerID, $defenderID));

Edit:
Mohl by ses, prosím, podívat, zda na to jdu správně?

DELIMITER $$
CREATE PROCEDURE fight(attackerID INT, defenderID INT)
BEGIN
        SELECT `damage`, `health` INTO @a_damage, @a_health FROM attribute WHERE user_id = attackerID;
        SELECT `damage`, `health` INTO @d_damage, @d_health FROM attribute WHERE user_id = defenderID;
        SET @winner = "attacker";

        loop_fight: LOOP
                SET @d_health = @d_health - @a_damage;
                INSERT INTO fight_lap (id, attacker_health, defender_health) VALUES (NULL, @a_health, @d_health);
                IF @d_health <= 1 THEN
                        LEAVE loop_fight;
                END IF;

                SET @a_health = @a_health - @d_damage;
                INSERT INTO fight_lap (id, attacker_health, defender_health) VALUES (NULL, @a_health, @d_health);
                IF @a_health <= 1 THEN
                        SET @winner = "defender";
                        LEAVE loop_fight;
                END IF;
        END LOOP;
END; $$
DELIMITER;
Editováno 10.8.2013 15:15
Nahoru Odpovědět
10.8.2013 15:14
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Martin Konečný (pavelco1998)
David Hartinger:10.8.2013 15:46

Přijde mi lepší napsat si tu logiku hezky objektově v PHPčku, SQL na tohle není dělané a vždy to bude nepřehledné. Na konci jen zavoláš jeden dotaz s pár inserty jak jsi napsat nahoře.

Nahoru Odpovědět
10.8.2013 15:46
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:10.8.2013 16:38

OOP není všelék. Business logika v databázi být může. Relační databáze nejsou jen skladištěm dat. Použitím OOP by se to dost zpomalilo. Kompilace několika set SQL dotazů je mnohem náročnější než kompilace jednoho.

Nahoru Odpovědět
10.8.2013 16:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Kit:10.8.2013 16:44

Vypadá to dost dobře. Možná ještě lépe než v OOP. Máš to docela přehledné.

Nahoru Odpovědět
10.8.2013 16:44
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na David Hartinger
Martin Konečný (pavelco1998):10.8.2013 17:57

Díky. Zkusím to napsat v SQL verzi a uvidím, jak to půjde. Koneckonců se naučím něco nového. :-)

Nahoru Odpovědět
10.8.2013 17:57
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na Kit
Martin Konečný (pavelco1998):10.8.2013 17:58

Také díky. Ještě bych se rád zeptal, zda nevadí vytváření hodně proměnných a provádění hodně výpočtů. Jde o to, že to, jaké hráč způsobí poškození, ovlivní cca 7 faktorů s tím, že se všechny faktory ještě přepočítávají na procentuální šanci (např. kritický útok, blokování, úhyb apod.).

Zatím se vytváří 27 proměnných pro jednoho hráče, čili 54 proměnných jen pro oba soupeře. Z toho 8 proměnných pracuje s funkcí RAND().

Nahoru Odpovědět
10.8.2013 17:58
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:10.8.2013 18:17

A říkám snad, že ano? Je opravdu hloupost dělat tohle v databázi, jedná se o simulaci, k tomu jsou určené objekty. Stored procedures jsou mocným nástrojem, ale určitě ne na tohle, kdy se ukládá jen výstup nějakého procesu, nedochází tedy k zpomalení databáze.

Nahoru Odpovědět
10.8.2013 18:17
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Kit:10.8.2013 19:08

Nevadí to. Jenom je to takové podivné. Podle mne tu hru děláš příliš komplexní.

Nemusíš to všechno cpát do jedné procedury.

Nahoru Odpovědět
10.8.2013 19:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:10.8.2013 19:24

Ten tvůj způsob zatíží a zpomalí tu databázi mnohem víc.

Nahoru Odpovědět
10.8.2013 19:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:10.8.2013 19:28

Tím, že uložím hotový výsledek? To ani ne. Má tak jednoduchou logiku že to více nejde a cituji tebe: " Podle mne tu hru děláš příliš komplexní.". Nechci vidět, jak bude v tom GOTO paskvilu vypadat až to bude opravdu komplexní.

Nahoru Odpovědět
10.8.2013 19:28
New kid back on the block with a R.I.P
Avatar
jan.vencl
Tvůrce
Avatar
jan.vencl:10.8.2013 20:46

co pozměnit nějak návrh průběhu souboje co třeba nějaká rekurzivní funkce? která by si předávala pole s datama a pak uložit výsledek jen na konci kdo vyhrál atd atd

 
Nahoru Odpovědět
10.8.2013 20:46
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:10.8.2013 21:06

Abys ten výsledek spočítal, musíš nejprve z databáze ty parametry vytáhnout a to je hodně velká zátěž, pokud jich má tolik. Taháš pak data mezi PHP a DB jak kočka koťata.

Nahoru Odpovědět
10.8.2013 21:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Kit:10.8.2013 21:08

Ten cyklus můžeš zjednodušit tak, že při každém běhu prohodíš role.

Nahoru Odpovědět
10.8.2013 21:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:10.8.2013 21:14

Až ten LOOP paskvil nahradí WHILE @health > 0, tak už to nebude vypadat tak hrozně.

Nahoru Odpovědět
10.8.2013 21:14
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Michael Olšavský:10.8.2013 21:15

Na co ty nepoužíváš SQL. Přijde mi, že 98% tvých rad je něco jako: "Proč používat tenhle jazyk, když to jde přes databázy...". Popř. když hájíš nějaký jazyk, oháníš se maticemi a nebo do každého sql kódu házíš triggery. :-D V SQL se nevyznám na takové úrovni, ale rohodně není všemocná. Je to dotazovací jazyk, tak proč tam dávat výpočetní funkce? Chci jen vysvětlení a argumentaci. Netvrdím, že nemáš pravdu. ;-) Každopádně pokud opravdu chce zaznamenávat každé kolo, bude to rychlejší.

Editováno 10.8.2013 21:16
 
Nahoru Odpovědět
10.8.2013 21:15
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Michael Olšavský
Kit:10.8.2013 21:39

Ty výpočty vůbec nejsou složité, dají se napsat do jednoho selectu. Ani nejsou výpočetně náročné a navíc tyto operace SQL zvládá lépe než PHP.

Základním argumentem je co nejjednoduší a co nejméně početná komunikace mezi vrstvami aplikace, ale i třeba mezi objekty. Tedy princip zapouzdření a izolovanosti.

Nahoru Odpovědět
10.8.2013 21:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Martin Konečný (pavelco1998):10.8.2013 21:40

Nenašel jsem nic, co by cyklus přerušilo, žádný ekvivalent k break. Proto mi přišlo nejvhodnější použít slovo LOOP, se kterým to jde snadno.

Edit: Pardon, kecám nesmysly. Potřebuji ukončit cyklus podle jedné nebo druhé podmínky, ale nedošlo mi, že to jde.
Možná by se sem měla přidat i možnost smazání vlastního příspěvku, ať pak nejsem za blbce. :-)

Editováno 10.8.2013 21:42
Nahoru Odpovědět
10.8.2013 21:40
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Michael Olšavský
Kit:10.8.2013 21:41

SQL není jen dotazovací jazyk. To je jen jedna část ze čtyř.

Nahoru Odpovědět
10.8.2013 21:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Kit:10.8.2013 21:42

Zkus prohazovat útočníka a obránce.

Nahoru Odpovědět
10.8.2013 21:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Martin Konečný (pavelco1998):10.8.2013 21:45

Jo jo, díky za nápad, to by mi rovnou mělo vyřešit i další problém.

Nahoru Odpovědět
10.8.2013 21:45
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Honza Bittner:10.8.2013 21:53

Jestli děláš hru jako shakes and fidget, gladiatus atp. tak nač potřebuješ ukládat průběh jednotlivých kol do databáze ?

Podle mně by bylo lepší ... hráč klikne na zaútočit na hráče BLABLA, přejde se na jinou stránku abc.cz/utok/blabla kde se provede výpočet a následně se provede animace kolo po kole souboje, nebo můžeš přeskočit na konečný výsledek.

Databázi do toho zatáhneš jen tak, že odečteš body či peníze apod. co hráč získá/ztratí...

Vážně nevidím důvod proč bys měl zaznamanávat průbehy jednotlivých kol ...

Nahoru Odpovědět
10.8.2013 21:53
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Odpovídá na Honza Bittner
Martin Konečný (pavelco1998):10.8.2013 21:57

Abys měl přehled o souboji i poté, co ho provedeš. A kdo ví, co se s těmi daty dá ještě dělat, přinejmenším nějaké statistiky, které by hráči určitě uvítali (a to mluvím z vlastní herní zkušenosti).

Kdysi jsem to takhle měl, že se uložilo prakticky jen to, kdo vyhrál a kolik jsi získal, ale průběžné ukládání je, alespoň pro mě, mnohem vhodnější.

Nahoru Odpovědět
10.8.2013 21:57
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Honza Bittner:10.8.2013 22:15

K čemu ti to bude ? Na konci zápasu vyhodnotíš celkové poškození, ubrané věci, získané věci atp.

Nejvyšší poškození porovnáš se současným a kdyžtak změníš a tak to uděláš podobně s dalšíma statistikama ... přičteš bod k vítězství/porážce atp.

Nahoru Odpovědět
10.8.2013 22:15
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
David Hynek:10.8.2013 22:16

trochu jsem nepochopil způsob, který jsi zvolil.
Neznám princip tvé hry, ale jestli jsem pochopil:
co kolo to cca jeden záznam do DB, jeden hráč, sto kol. Sto hráčů deset tisíc záznamů...

není to tak trochu zbytečné hromadění informací?

Spíš bych to viděl na podrobnější popis hráče, od záznamu zdraví, síly a pod.

Nahoru Odpovědět
10.8.2013 22:16
Čím víc vím, tím víc věcí nevím.
Avatar
Odpovídá na David Hynek
Martin Konečný (pavelco1998):10.8.2013 22:24

Právě proto jsem se na začátku ptal, zda každé kolo má být jeden insert.

Nahoru Odpovědět
10.8.2013 22:24
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
David Hynek:10.8.2013 22:36

Záleží na tom, co od toho chceš.
Bral bych to ve více rovinách. Zaznamenávat vývoj postavy je určitě potřebné, ale tam bych to zredukoval na záznam kdy dosáhl dalšího levelu, kdy koho porazil. Pak nějaký inventář který se bude také asi dost měnit.
A pak ten boj. A u toho bych si asi vystačil jen s tím, že bych updatoval data.

Podle funkce v DB soudím, že o programování něco víš a nerad bych tě svedl z tvé cesty. Je to na tobě :)

To že ti radím, ještě neznamená, že mám pravdu :)

Nahoru Odpovědět
10.8.2013 22:36
Čím víc vím, tím víc věcí nevím.
Avatar
Odpovídá na Honza Bittner
Martin Konečný (pavelco1998):10.8.2013 22:38

A když budu chtít vidět, jak probíhala jednotlivá kola, tak to jinak než za pomocí insertů udělat nemohu, ne? Kdybych chtěl například vidět, do kterého kola jsme si se soupeřem byli rovni, a od kterého šly mé šance na výhru výrazně dolu. Výsledky soubojů nebudou tak jasně předem určené, proto bych chtěl dopřát detailní výpis.

Editováno 10.8.2013 22:40
Nahoru Odpovědět
10.8.2013 22:38
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na David Hynek
Martin Konečný (pavelco1998):10.8.2013 22:39

Rád si vyslechnu každý názor, nápad a kritiku. Sice už nějakou dobu programuji, ale vím, že v tom pořád nejsem dobrý - a právě proto jsem založil tohle téma. :-)

Nahoru Odpovědět
10.8.2013 22:39
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
David Hynek:10.8.2013 22:40

ale stejně bych to raději dal do dvou vrstev a oddělil statistku od samotné hry.

Nahoru Odpovědět
10.8.2013 22:40
Čím víc vím, tím víc věcí nevím.
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Honza Bittner:10.8.2013 23:36

Když chceš udělat detailní výpis tak si ho udělej (nejdřív vypočítáš souboj a poté si to z informací vytáhni), ale nic neukládej do databáze, jsou to zbytečnosti...

Hráč ho chce vidět jen jednou, pak ho zajímá jen vítězství/prohra...

Editováno 10.8.2013 23:37
Nahoru Odpovědět
10.8.2013 23:36
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Kit:11.8.2013 9:38

Kompletní statistiku, pokud podle ní nebudeš vyhledávat, můžeš také do DB uložit jako jeden string v JSON nebo XML. Tím se to hodně zjedoduší.

Nahoru Odpovědět
11.8.2013 9:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Martin Konečný (pavelco1998):11.8.2013 10:25

Nevím, jestli tou statistikou máš na mysli to, co já, ale pokud ne, tak bych JSON formátem tedy mohl uložit klidně i detaily souboje (kolo po kolu). V PHP bych to pak dekódoval pomocí json_decode() a dostal bych pole, které bych pak jen prošel a vypsal detaily.

Nahoru Odpovědět
11.8.2013 10:25
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Honza Bittner:11.8.2013 10:33

Jako vážně nechápu proč pořád chceš ukládat celý zápas - 100 kol - do databáze, tam pak budeš mít strašně hodně záznamů a úplně zbytečných

Prostě budeš mít :

stránka 1 : vybereš si hráče na kterého zaútočíš -> klik -> odkaz na stranku 2

stránka 2 : výpočet souboje, vytáhnutí dat do statistiky(max úder atp.) + animaci souboje, zkontrolování ocenění (max úder, přidat 1 k vítězství/prohře), změna peněz/předmětů

do databáze si tedy uložíš jen maximálně záznam že jsi měl zápas a prohra/vítězství a případně si přeuložíš ocenění...

jako mít tam při 1000 soubojů denně 100,000 zápisů je zbytečnost ...

Nahoru Odpovědět
11.8.2013 10:33
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Odpovídá na Honza Bittner
Martin Konečný (pavelco1998):11.8.2013 10:40

Při JSON formátu by tam bylo tolik záznamů, kolik by bylo soubojů. Možná se budeš divit, ale hodně hráčů zajímají detaily souboje i potom, co se provede.

Nahoru Odpovědět
11.8.2013 10:40
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Honza Bittner:11.8.2013 10:40

nevidím důvod proč by to chtěli, ale je to tvá hra, tvá věc

mě teda nezajímá, že jsem před měsícem v souboji udeřil silou 550 ...

Editováno 11.8.2013 10:41
Nahoru Odpovědět
11.8.2013 10:40
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Odpovídá na Honza Bittner
Martin Konečný (pavelco1998):11.8.2013 10:43

OK, jestli mi s tím nemáš jak pomoci, tak bych byl nerad, aby se to tu zaspamovalo. Díky.

Nahoru Odpovědět
11.8.2013 10:43
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 50 zpráv z 69.