• ú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í
      MICTECH
      MICTECH --- ---
      CYBERWOLF: pokud chces usetrit komunikaci mezi php a db, tak to udelej pres storovane procedury
      CYBERWOLF
      CYBERWOLF --- ---
      CHARLEZ: drtivou vetsinu databaze. Puvodne jsem k tomu pristupoval tak, ze kazdy ukol je samostatny objekt se svymy metodami atd., takze jsem pro kazdy zvlast navysoval casy atd. takze pocet dotazu na DB narustal dost strme a s tim i cas co si vzala komunikace mezi PHP a databazi. Rikal jsem si, jak to bude narame prehledne, atomicke, snadno udrzovatelne...no ale cena ztraty vykonu byla prilis vysoka.

      Ted jsem to vyresil tak, ze navysovani tahu dela jeden dotaz, pak si vyberu jen ty ukoncene ukoly, z nich udelam objekty a provedu ukonceni a pripadne aktivaci dalsiho ukolu (v PHP).
      WEWERKA
      WEWERKA --- ---
      Zpracovani pouze pres php je cesta do pekel :( Po predchozich zkusenostech mam veskerou logiku v db (pgsql).
      CHARLEZ
      CHARLEZ --- ---
      CYBERWOLF: vetsinu toho casu ti zpracovava databaze nebo je to zpracovani na urovni php?
      WEWERKA
      WEWERKA --- ---
      CYBERWOLF: Taky jsem se potykala s timhle problemem :) Na zkusebni databazi jsem si vytvorila okolo 100 000 objektu, ktere delaji ruzne ukoly. Napr. starnou, pracuji, ji atd atd. a postupne jsem to zoptimalizovala tzn. inserty misto updatu, cachovani vseho mozneho atd. No a nakonec to bude tak, ze ta urcita akce se vykona v prubehu celeho tahu. Nebudu vedet kdy presne, ale nekdy se vykona. V podstate hrac bude mit moznost treba do pulky tahu jeste zmenit co se ma stat, jen protoze objekt se jeste neoznacil jako zpracovany.

      Takze proc by se treba tovarna nemohla dostavet uprostred tahu.

      S cronem urcite pocitej. Ja si to napsala tak, abych neblokovala transakce, takze se to pousti porad za sebou a vybira si prednostne typy akci, ktere se maji provest. Udela vzdy par veci a jde na dalsi cyklus (nekonecny cyklus, cron je tam jen pro jistotu).
      CYBERWOLF
      CYBERWOLF --- ---
      Tak jsem to udelal tak, ze se po urcitem casovem useku (tedy asi tech 10 min) pusti UPDATE na databazi, ktery vsechny aktivni ukoly posune o jeden tah. Potom vyberu vsechny aktivni ukoly, ktere maji naplneny pozadovany pocet tahu a ukoncim je.

      Co se tyka ukoncovani ukolu, tak to probiha zhruba stejne dlouho, jako predtim probihal kazdy tah (spis se to blizi k 12 vterinam, ale je to zhruba stejne). Pouhe navyseni tahu trvalo necelych 0.1 sec, takze ve vetsine pripadu se jedna o usporu 99% casu (zrychleni o vice nez 10 000% zni jeste lip :))
      CYBERWOLF
      CYBERWOLF --- ---
      TOMG: Proc stahovat kalhoty, kdyz brod je jeste daleko? Nejdriv udelam hru, pak forum a az se zacnou mnozit spameri, tak budu hledat adminy (nebo lepe receno mazace) :)
      TOMG
      TOMG --- ---
      CYBERWOLF: Pocitam, ze hra bude potrebovat i forum a tudiz nekdo to tam bude muset umravnovat. Ale forum tam mit nemusis ze.
      CYBERWOLF
      CYBERWOLF --- ---
      TOMG: Tak s optimalizacemi mam celkem dobre zkusenosti, jeden cas jsem delal na projektu, ktery ve spicce delal 15000 hitu za vterinu (samozrejme jsem na tom nedelal sam, bezelo to na farme atd, ale stejne jsem se naucil docela dost, jak co udelat maximalne efektivni).

      Co se tyka adminu, tak nejak mam pocit, ze nejsou tak moc potreba. Na multilogy se da udelat skript, ktery vetsinu z nich odhali, na dotazy hracu si odpovi sami mezi sebou no a jinak, co s adminy?
      TOMG
      TOMG --- ---
      CYBERWOLF: No i stovka hracu = potreba mit tam nejake adminy na dohled, ale zase je fakt, ze jsou lidi co za virtualni pocit moci ve hre makaji zadarmo :) U tisicu me fakt zajima jak to budes optimalizovat :)
      CYBERWOLF
      CYBERWOLF --- ---
      TOMG: S freehostingem nepocitam, nechtel bych aby mi to za tejden stopli:) Mam vyhlednuty hosting, ktery obsahuje vsechno co potrebuji a vim, ze pokud cokoliv nebude stacit, tak mi to poskytovatel za primereny poplatek navysi, takze neni problem. Vim, ze nic jako neomezeny hosting neexistuje:)

      Co se tyka poctu hracu - cim vic, tim lip:) Pocital bych tak radove stovky, kdyby to lezlo do tisicu, tak uz bych si na treba mohl zaridit i zivnost...
      CYBERWOLF
      CYBERWOLF --- ---
      Dalsi vec je, ze to samotne provadeni tahu neni ani tak moc vypocetne narocne, protoze vetsinou se jen nastavi pocitadlo hotovych tahu u toho ktereho ukolu a jenom kdyz se naplni pozadovana kvota, tak se teprve ukonci. Problem je v tom, ze je jich hodne.

      Ale dostal jsem napad, jak tohle trochu zjednodusit, tak vyzkousim a uvidime:)
      TOMG
      TOMG --- ---
      Na free hostingu budeš rád, když tam budeš mít možnost CRONu co minutu a limit na trvání skriptu. Velice brzo zjistíš, že ty různé sliby, že nejsou limity, nejsou tak úplně pravda v okamžiku, kdy některý z jejich limitů překročíš. Ti slušnější tě na to upozorní, před tím, než ti to sestřelí.
      TOMG
      TOMG --- ---
      CYBERWOLF: Pro kolik hráčů to plánuješ?
      CYBERWOLF
      CYBERWOLF --- ---
      sakra, jak jsem dokazal napasat mlatit misto platit? :)
      CYBERWOLF
      CYBERWOLF --- ---
      MICTECH: PHP + MySQL

      Ze by mi bezel skript, ktery by to chroustal s nejakym semaforem, to uz me taky napadlo, ale me prostredky na hosting jsou omezene a mlatit si managed server se mi nechce, no a kdybych na beznem hostingu mel skript, ktery by bezel treba 90% casu, tak to by ze me asi radost nemely:)

      Ale zas tak bohate zkusenosti s frontami taky nemam, takze pokud mas nejake tipy, budu rad kdyz se o ne podelis :)
      MICTECH
      MICTECH --- ---
      CYBERWOLF: ty tahy se musi vykonavat defakto porad. V nejaky fronte, kde to postupne pojede.

      Kdyby jsi treba nastinil v cem to programujes, tak by se dalo neco konkretniho vymyslet.
      CYBERWOLF
      CYBERWOLF --- ---
      Tak ja jsem se rozhodl pro variantu B, ale potykam se s problemem, ze pokud bych vyhodnocoval vsechny ukoly po kazdem tahu, tj. kazdych tech 10 minut, tak to asi poslu pekne k sipku, protoze kdyz uz jich je 450, tak mi to bezi nejakych 11 sekund. No a vzhledem k tomu, ze v ostrem provozu by tech ukolu bylo radove vic, tak to takhle proste nepujde.

      Z hlediska rozlozeni zateze (a minimalizace rezie s inicializaci) by bylo asi nejvhodnejsi, kdyby se akce vyhodnotili ve chvili, kdy se hrac pripoji, nebo provede jakoukoliv akci v dobe, kdy se ma provest dalsi tah, nebo tahy. Tim padem by se ukoly provedli najednou, ale az v momente, kdy hrac neco udela, takze by se to mohlo docela hezky rozlozit, ale na druhou stranu taky docela hezky zahltit, kdyby se 50 hracu najednou rozhodlo, ze se zase po tydnu podiva, jak jsou na tom.

      Pak jsou tu jeste dalsi problemy, jako ze kdyz nekomu treba poslu zasoby, tak by mu neprisli, dokud bych se nepripojil, kdyz by mi nekdo zboril tovarnu minutu pred tim, nez bych se pripojil, tak od meho posledniho prihlaseni nevyrobi se nic atd.

      Nejlepsi, co me zatim napadlo, je jakesi sdilene spousteni ukolu: Pokud se jedna o neco, co ovlivni jineho hrace, tak to spusti i ten jiny hrac. Takze, pokud nekomu poslu zasoby, tak se tahy provedou spolecne s tahy ciloveho hrace, kdyz mi nekdo napadne zakladnu, tak se nejprve provedou vsechny me doposud nevyuzite tahy a pak teprve zacne bitva atd.

      To je ale desive komplikovane a nejsem si uplne jisty, jestli to resi problem uplne idealne. Taky bych se v tom nerad utopil.

      Jak jinak by se jeste dala rozlozit zatez?
      WEWERKA
      WEWERKA --- ---
      CYBERWOLF: b) pricemz prupocty se deji v prubehu tech 10 minut.. z hlediska zpracovani mi tohle prislo nejefektivnejsi a zaroven zajimave
      CYBERWOLF
      CYBERWOLF --- ---
      TOMAS3333: doposud ne, ale jak to tak vypada, urcite je dobre o tom vedet
      Kliknutím sem můžete změnit nastavení reklam