• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    CYBERWOLFOn-line WebBased hry kreativně - udělejte si vlastní webovku!
    Hráli jste někdy nějakou webovku a napadlo Vás někdy udělat si nějako vlastní?
    Máte nějaký nápad na bezva hru a neumíte ho realizovat?
    Nebo umíte skvěle programovat webové aplikace, ale nemáte nápad na dobrou hru?
    Nebo namáte ani jedno a umíte cokoliv jiného, co by mohlo při tvorbě hry pomoct (malovat, dělat hezky vylížející html stránky, jakoukoli grafiku, nebo jste matematický génius, prostě COKOLI)
    Pokud Vám vyšla alespoň jedna kladná odpověď, jste tu správně!

    domenu radeji stylem

    17 hlasy od 17 respondentů

      rozbalit záhlaví
      TENCOKACISTROMY
      TENCOKACISTROMY --- ---
      WEWERKA: Nemyslim radky, ale stranky. Napr. MSSQL (ale u ostatnich to bude imho stejne) si tu tabulku rozdeli na jednotlivy casti (= stranky) o velikosti X radku. Kdyz pak delas nejakej update zamykaj se jen ty stranky, kde se neco updatuje. Kdyz updatujes na zaklade sloupcu, ktery maj indexy tak se ti i rychle vyhodnotej stranky, ktery se maj zamknout. Navic si u transakci muzes (zase - neznam moc dobre postreges, ale urcite to bude umet) nastavit, aby se ti to lockovalo jenom pro zapis, ne pro cteni.

      Jestlize mas velky mnozstvi ruznejch typu objektu, spis nez nejakou univerzalni strukturu o par tabulkach pro ulozeni vseho bych pouzil "dedeny tabulky", ktery by byly jakoby tridy (class v OOP). Tim by jsi cekani na zamky docela dost omezila.
      CYBERWOLF
      CYBERWOLF --- ---
      WEWERKA: cemu by vadilo zamykat jenom radky?
      WEWERKA
      WEWERKA --- ---
      TENCOKACISTROMY: Vsechno v jedne tabulce. Ridici tabulky k jednotlivym typu a konfigurace jsou mimo.

      Zamykat stranky? Myslis row? To umi, ale nepouzivam.
      CYBERWOLF
      CYBERWOLF --- ---
      Co rozdelit tah na (nejak logicky navazujici) faze a provadet je postupne? Tj. ze kdyby mel probehnout tah - rekneme - jednou za hodinu, tak by se misto toho provedlo kazdych 15 minut neco.

      Napr. (podle minimalne predstavy, kterou o tve hre mam:) ):
      1) presuny (pracovnik odejde do jineho mesta)
      2) produkce (pracanti pracuji - vyrabi veci)
      3) spotreba (pracanti jdou na obed)
      4) ztraty (shorela kovarna)

      Pokud je mozne rozclenit tah na vic samostatne vyhodnotitelnych fazi, tak se tim zatez prijemne rozlozi - samozrejme cim vic fazi, tim lepe se rozlozi. Hraci co u toho budou prilepeni ve dne v noci pak muzou taky lepe reagovat na to, co se deje, namisto toho, aby se po provedeni celeho velkeho tahu divili, co se jim to stalo :)
      TENCOKACISTROMY
      TENCOKACISTROMY --- ---
      WEWERKA: Jako ze mas vsechny atributy v jedny tabulce nebo ze mas ty tabulky jakoby podedeny od sebe?

      Ten postgress neumi zamykat jen jednotlivy stranky misto cely tabulky?
      WEWERKA
      WEWERKA --- ---
      TENCOKACISTROMY: Pouzivam db navrh jako ma ucetnictvi Noris. Jedna obrovska tabulka, kde jsou uplne vsechny mozne subjekty - lidi, material, produkce, vylepseni, kouzla atd. Proste vsechno v jedne tabulce.
      Sice nepouzivam explicitni row lockovani, ale i tak si myslim, ze sance na deadlock je velka. Predikci treba propocitavam po jednotlivych subjektech tzn. po 1 radku.

      Mozna kdybych to prepsala na "select for update" a k tomu si koupila 8 jadrovy stroj, tak by tu byla urcita sance :) Ale i tak necekam obrovske zrychleni..
      TENCOKACISTROMY
      TENCOKACISTROMY --- ---
      WEWERKA: Tak ono se da paralelizovat mnoha zpusoby. To ti tam opravdu uplne vsechno zalezi na uplne vsem? Nemuzes to rozdelit na nekolik fazi, ktery se daj rozdelit na nekolik na sobe nezavislejch vypoctech?
      WEWERKA
      WEWERKA --- ---
      TENCOKACISTROMY: 200k uzivatelu ne, spis tak 200k "jednajicich db radku"
      WEWERKA
      WEWERKA --- ---
      TENCOKACISTROMY: Problem je v tom, ze opravdu neumim udelat uplne paralelni vypocet. Sance na deadlock je v mem pripade hodne velka.
      Taky mi neni prijemne, ze to musim delat sekvencne :( Kurzory nepouzivam.
      TENCOKACISTROMY
      TENCOKACISTROMY --- ---
      WEWERKA: Jestlize celej ten vypocet je sekvencni, tak ti je jedno, ze si zamyka tabulky, ne? Teda v pripade, ze do nich nechces zaroven psat data od uzivatelu - ale proc neco takovyho delat?

      Kdyz se vyhnes kurzorum a vyuzijes toho, v cem je to sql silny - mnozinovy operace, tak bych v tom nevidel zasadni problem.

      WEWERKA: Jestlize chces mit 200k uzivatelu, tak bych to cely resil rovnou nekolika serverama. Atom je fajn na vyzkouseni, ale v realu budes mit dost jiny prostredi a na to bych se soustredil.
      WEWERKA
      WEWERKA --- ---
      TENCOKACISTROMY: Ne, 80k je jen na testovani. Realnejsi odhad je tak kolem 200k za plneho provozu.
      WEWERKA
      WEWERKA --- ---
      Jeste ohledne paralelizace. Postgres pri updatu nejake spolecne tabulky zamkne ostatni pripojeni (idle in transaction) a ceka na dokonceni toho puvodniho. Musela bych asi jen selectovat a proste nejde.
      Vsechno je to delane pres pl/pgsql, co pusteni fce to transakce. Nenapada me zpusob jak bych tohle mohla udelat vice threadove.
      TENCOKACISTROMY
      TENCOKACISTROMY --- ---
      WEWERKA: Jestlize chces mit 80k samostatne se rozhodujicich subjektu, tak se vubec divim ze se ti to na Atomu spocita za 20 minut :). V tomhle mnozstvi mi prijde naprosto korektni reseni na to poridit viceprocesorovej nadupanej server.

      To cislo 80k je konecny?

      Jediny, co me napada je udelat pripravny vypocty, ktery se zakladaj na jiz odehranejch tazich a po odehranym tahu nasledne aplikovat novy skutecnosti. Ale tezko rict, jak to mas provist, ten popis je dost obecnej.
      WEWERKA
      WEWERKA --- ---
      TENCOKACISTROMY: To uz jsem zkousela. Mam naprogramovano rekneme 10% vsech moznosti, ktere se v tom tahu muzou stat a pri testovacim vzorku 80k subjektu si pockam cca 20 minut. Testovaci stroj je teda jen maly atom, ale i tak je to hodne.
      Pak jsem udelala takovy hybrid tzn. neco se spocita prubezne a neco az na prelomu. To bylo rychlejsi, ale stejne zadna slava.
      Vsechno jsem zoptimalizovala. Napr. zadne updaty, pouze inserty a stejne je to pomale.
      Paralelizace tu asi nepujde. Nechci riskovat a isolaci mam nastavenou na bezpecnou. DB je BTW postgres.

      Problemem v te moji hre je, ze kazdy radek v db ma svoje jmeno :) A nejen jmeno, ale i potreby a vlastnosti. On sam jedna. Napr. jde na rande, soulozi, stara se o rodinu, ma touhu byt vojakem, utraci vydelane penize atd atd. To predstavuje hrozne hw naroky.
      Nehodlam delat hloupou klikaci hru, jakych jsou uz tucty, takze tohle budu muset nejak vyresit...
      TENCOKACISTROMY
      TENCOKACISTROMY --- ---
      WEWERKA: Ja bych se na predpocitavani dalsiho tahu, jenz zavisi na aktualnim tahu, uplne vykaslal. Co tim chces ziskat? Vetsi rychlost? Nebylo by lepsi tu rychlost resit treba paralelizaci?
      WEWERKA
      WEWERKA --- ---
      Mela bych tu takovy maly problem.

      Delam tahovou strategii a rozhodla jsem se vsechny budouci aktivity predpocitat tzn. hraju tah 1, ale v pozadi se pocita tah 2. Na prelomu se jen presmeruji ukazatele na novejsi verzi a je to.
      Vsechno uzasne, jen mam takovy "maly" problem. Pokud se uz na predpocitanem subjektu stane zmena, musim provest predpocitani znova i u vsech, kterych se ta zmena muze tykat.

      Uvedu priklad - mam 3 pracovniky a vyrabi v kovarne podkovy. Originalni predikce rika, ze pristi tah budu mit 3 podkovy (od kazdeho 1).
      Ted 2 verze
      a) 1 pracovnik odejde do jineho mesta => musim prepocitat produkci kovarny => 2 podkovy (menim parent, ostatnich na stejne urovni se to netyka)
      b) kovarna vyhori => musim presmerovat pracovniky na jinou cinnost => zadna podkova (menim vsechny child + self)

      Takovych situaci mam tisice a potrebovala bych vyresit jak zjistit co vlastne mam pocitat. Napadaji me ruzna reseni se savepointy, stromy dle aktivit atd., ale vsechno ma svoje mouchy :(

      Neresil nekdo z vas podobnou vec? Pripadne kdyby nekdo mel odkaz na literaturu, kde se neco obdobneho resilo.
      TRANCEWARP
      TRANCEWARP --- ---
      WEWERKA: MMOS ;) tema je tajny zatim ;)
      WEWERKA
      WEWERKA --- ---
      TRANCEWARP: Tak uz je mi jasne proc TANCOKACISTROMY potreboval v databazovem klubu select pro vypocet hexa pozic :)

      Muzes aspon nastinit typ hry?
      TRANCEWARP
      TRANCEWARP --- ---
      WEWERKA: zadny online demo nebude ;D
      bude tezce strezena alfa verze pro testery s podepsanou NDA...

      pak bude open beta, ale to uz bude defakto start...

      samozrejme do toho alfa testerskyho programu se dostat da, chci ruzny lidi z ruchnnejch koutu internetu ;D


      CYBERWOLF: konkretne to melo bejt fansup, fan supported... nevim, co mi tam dela to "b" :0)

      myslenka byla takova, ze to je nase full time pracovni napln, nedelame to ve volnym case... ok, kecam, delame to i ve volnym case ;D delame to skoro furt holt...



      KOC256: mno mame imho nejlepsi grafiky v CR ;) kluci ze studia DrawEtc., pokud znate... ja ale tyhle technologicky veci resim sam, grafik to nakresli, ale jak to ma presne udelat, to uz mu musim rict sam...

      nicmene sme to asi vcera vyresili, nebude to isometricky, ale bimetricky... jako uz to teda vlastne mame, tzn. pomer stran 2:1 ne 1,7:1 jako u izo...
      TENCOKACISTROMY
      TENCOKACISTROMY --- ---
      WEWERKA: verejne neni
      CYBERWOLF
      CYBERWOLF --- ---
      TRANCEWARP: co presne znamena fansub? Hadam, ze "fan subtitles" asi ne:)
      WEWERKA
      WEWERKA --- ---
      TRANCEWARP: To demo je nekde k dispozici?
      Kliknutím sem můžete změnit nastavení reklam