Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Průběh souboje - ukládání do databáze

Aktivity
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Kit:11.8.2013 11:07

Přesně. JSON se hodí nejen pro ukládání polí, ale i celých struktur. Pokud v něm nebudeš potřebovat hledat fulltextem, tak to ani nebude porušení 1NF.

Odpovědět
11.8.2013 11:07
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 Michael Olšavský
Kit:11.8.2013 11:14

V databázích se dnes řeší třeba i takové záležitosti, jako jsou např. kolize a průniky polygonů, statistická analýza dat apod. Jen webaři dělají z SQL databází obyčejný KVS. Zabíjejí tak jejich schopnosti a výkon.

Nahoru Odpovědět
11.8.2013 11:14
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:11.8.2013 11:15

Porušení normální formy to je, když bude chtít přidat nějaký atribut k souboji, tak má problém. Teoreticky je všechno v pořádku, prakticky se někdy rozhodně něco změnit a bude mít velký problém. Tento způsob ukládání dat silně nedoporučuji.

Nahoru Odpovědět
11.8.2013 11:15
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:11.8.2013 11:20

Pokud kompletní zprávu ze souboje budu považovat za atomickou (jak tady všichni navrhujeme), tak to porušením 1NF není.

Nahoru Odpovědět
11.8.2013 11:20
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:11.8.2013 11:25

To je pravda, ale ona atomická není :) Pokud je ten postup souboje důležitý, měl by se normálně ukládat jako řádky, vybrat pár řádků podle klíče není nic hrozného. Pokud se do db něco ukládá serializované, asi na těch datech moc nezáleží, půjde je jen špatně editovat a je otázka zda jsou vůbec potřeba. IMHO když se tohle dělá, tak je někde chyba v návrhu.

Nahoru Odpovědět
11.8.2013 11:25
You are the greatest project you will ever work on.
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:11.8.2013 11:26

Jinak celá ta myšlenka ukládání postupu boje je dobré cvičení, ale prakticky nesmysl, jak tu již zaznělo. Ty informace jsou prakticky k ničemu.

Nahoru Odpovědět
11.8.2013 11:26
You are the greatest project you will ever work on.
Avatar
Neaktivní uživatel:11.8.2013 11:30

Zas takový nesmysl to není, jestli to dobře chápu, tak se to k těm 100 kolům téměř nedostane, je možný že protivník umře třeba ve třetím, občas, když to bude vyrovnané tak třeba v patnáctém (takhle to je běžně u her, ale nevím k čemu těch 100 kol, to je zbytečně moc). Pokud by to bylo kolem těch deseti kol, pak si to velká část hráčů bude chtít přečíst. Už třeba jen proto, že se z toho dají zjistit principy hry, důležitost různých atributů, nejvýhodnější jednotky, zbraně a tak dále :)

Editováno 11.8.2013 11:31
Nahoru Odpovědět
11.8.2013 11:30
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:11.8.2013 11:32

Nebyla zde ani zmínka o editaci reportu ze souboje, o přidávání atributů také ne. Články do DB také nedáváš po odstavcích, ale ukládáš je vcelku.

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

Hmm, jak tak vidím, tak asi celé detaily ukládat nebudu. Maximálně dát možnost hráči, aby si zprávu uložil - to by se převedlo do JSON a uložilo do DB, v jiném případě by se to jen jednou vypsalo a pak by ve zprávě byly jen základní informace (vítěz, odměna, celkové způsobené poškození atp.).

Takhle by problém nebyl ani s tím, kdybych třeba přidal nový atribut. Uložená zpráva o souboji by byla jen kopií toho, co se stalo před updatem hry.

Výsledek by byl takový, že by se nehromadily zbytečně nepoužitelné informace, ale zároveň by byla možnost se na ten výsledek podívat i jindy.
Mně se tohle zdá jako docela rozumné řešení, co myslíte?

Nahoru Odpovědět
11.8.2013 11:33
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:11.8.2013 11:33

Pokud to bude realtime boj, tak se mu to ukáže z paměti. Tam to má nějaký smysl, člověk na to čeká atd. Pokud to není realtime, tak mi průběh nepřijde moc důležitý.

Nahoru Odpovědět
11.8.2013 11:33
You are the greatest project you will ever work on.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Martin Konečný (pavelco1998)
David Hartinger:11.8.2013 11:35

To je snad ještě horší než předtím. Proč budeš ukládat do DB zprávu v JSON, kde je kdo vyhrál? Zpráva je normální řádek, vítěz je normální sloupec.

Nahoru Odpovědět
11.8.2013 11:35
You are the greatest project you will ever work on.
Avatar
Odpovídá na David Hartinger
Martin Konečný (pavelco1998):11.8.2013 11:40

Když budu chtít vědět, kdo vyhrál, podívám se na zprávu o souboji, která přijde vždy. Když si budu chtít uložit kopii detailů, bude mě zajímat pouze průběh souboje. V nejhorším případě se to dá poznat i z toho výpisu, kdo vyhrál (= ten, kdo dal poslední ránu).

Nahoru Odpovědět
11.8.2013 11:40
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:11.8.2013 11:42

Je vidět, že jsi tu jeho hru zatím nehrál. Už jsem ji zkoušel a vím o co v ní jde. Martin Konečný (pavelco1998) potřebuje jen vygenerovat zprávu ze souboje tak, aby si ji oba soupeři mohli kdykoli přečíst. Po přečtení ji zpravidla vymažou, ale někteří si ji budou chtít ponechat.

Nahoru Odpovědět
11.8.2013 11:42
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:11.8.2013 11:51

A to nějak odporuje tomu jak funguje řádek v databázi?

Nahoru Odpovědět
11.8.2013 11:51
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:11.8.2013 11:52

Zabiják na tebe vystřelil z kuše, ale minul. Udeřil jsi ho mečem, ale ochránila ho zlatá přilba. Zabiják na tebe zaútočil kopím, zasáhl tě a ubral ti 6 životů. Vystřelil jsi na něj z luku, ...

Už tušíš, o co tady jde?

Nahoru Odpovědět
11.8.2013 11:52
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:11.8.2013 11:53

Tohle ale není JSON :) Pokud tam chce mít tohle, tak je to ok. Předtím sjme se bavili o logu dat v JSONu.

Nahoru Odpovědět
11.8.2013 11:53
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:11.8.2013 12:00

Třeba nechce úplně ztratit strukturu a chce si zachovat možnost další případné analýzy bez nunosti parsování. Tohle je jen text, který uvidí hráč.

Nahoru Odpovědět
11.8.2013 12:00
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:11.8.2013 12:08

Pokud ten tvůj text uložím do JSONu, bude to poměrně složité. Když potom rozšíří způsob boje, bude potřebovat změnit ten formát. Skončí to tak, že bude udržovat zpětnou kompatibilitu se starými logy nebo je bude parsovat a updatovat, obojí je nešikovné. Pokud si uloží řádky textového výstupu, tak proti tomu řešení nic nemám a je správné.

Nahoru Odpovědět
11.8.2013 12:08
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:11.8.2013 14:00

Pokud ty záznamy bude chtít poslat klientovi přes AJAX, tak se naopak JSON docela hodí. A pokud po najetí myší na "zlatou přilbu" bude chtít v bublině zobrazit její schopnosti, je nějaká struktura nutná. Ale až u klienta.

Parsování a updatování JSONu je velmi jednoduché v PHP i v JS.

Nahoru Odpovědět
11.8.2013 14:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 19 zpráv z 69.