Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
ariczek

TC2 a cloudové zpracování ?

Recommended Posts

Zdravíčko :)

 

hledal jsem, a nenašel jsem ani fň, a vzhledem k tomu že to nemají ani velké servery - ** a podobně... tak to asi neexistuje, ale stejně se zeptám vás ?

 

Nevíte někdo o úpravě TC2 (obecně libovolného emulu wowka) která by podporovalo cloudové (či alespoň paralelní na úrovni několika serverů) zpracování ?

 

Pokud bude odpověď negativní - což předpokládám... měl bych tu návrh:

 

Co takhle spojit síly serverů CZ/SK wow scény dohromady, spojit nejlepší programátory z nich, a třeba pod záštitou WS si ho vytvořit ?

 

Co by bylo potřeba pro začátek:

 

1) dokonale porozumět jak funguje emul...

tím nemyslím:

hurá napsal jsem si teleportera umím všechno...

nebo hurá opravil jsem spell...

 

tady bychom šli mnohem hlouběji, na úrovni vláken, synchronizace vícevláknové aplikace, komunikace world <-> realm <-> DB <-> klient a podobně...

 

2) může být trochu problém - získat dump komunikace z offi - tam je novější patch... do cata bych se nepouštěl.

hlavně třeba možnosti přesměrování serverové IP či portu... při přechodu z mapy do mapy - kalimdor <-> EK, nebo kdekoliv <-> BG ... případně LFG a dung ? ...

kterej packet či opcode to má na starosti a podobně - souvisí s 1)

 

3) dát dohromady první takový milník - dokázat oddělit world a třeba BG server... že by server nesestával z realm.exe a world.exe, ale přidal by se třeba ještě bg.exe

 

z tohohle milníku by se už pak dalo pokračovat podle potřeby relativně snadno - program pro každou mapu - Kal, EK, OL, NR, - proces pro dungy ... proces pro BG, areny...

a proč to všechno ? Jednak rozdělení zátěže - s dostatečným HW třeba 10K lidí bez lagu na jednom realmu ? A pak třeba mezirealmové BG či LFG :)

 

Myslím že by to všem zúčastněným přineslo spoustu nových poznatků, znalostí atd, a myslím že komunita kolem wow emulace by za to utrhala ruce :D .

Takže se ptám, byl by o něco podobného zájem, dále byli by zdatní programátoři ochotni spolupracovat ?

 

Osobně bych se musel hodně věcí doučit - netvrdím že vše co sem napsal výše v bodu 1 zvládám :)

 

Sleduji fórko WS celkem pečlivě, a mam vytipováno pár vhodných lidí (bLuma, Wolf Officious, Smrtokvitek, Hkarta, ...) s dostatečným potenciálem tohle zvládnout - pokud by měli zájem a byli by ochotní prohlubovat své veliké znalosti dále - bylo by to super... :)

 

Ariczek

  • Upvote 4

Share this post


Link to post
Share on other sites

Mno myslím určitě že by bylo dobré oslovit více fór než tohle. Myslím že i na Webtrh by měli možná zájem se zlepšovat v praxi, proto by to nemuseli dělat za peníze..

Možná oslovit i anglické fóra (ac-web/oc/tc/mangos/skyfire/mmo-champion/atd atd..) pokud by vedoucí projektu zvládal komunikaci v angličtině..

 

V každém případě dobrý nápad +1

Share this post


Link to post
Share on other sites
hledal jsem, a nenašel jsem ani fň, a vzhledem k tomu že to nemají ani velké servery

 

MW na to funguje jen kdyz to zapnou cross realm BG a LFG system

 

to noell:

jezis netahej na webtrh wowko, to je web na uplne urovni nez je tento projekt=web

 

jinak k tematu

 

napad je to skvelej mit cas rad bych pomohl co se tyce implentovani ingame contentu

Edited by STONERSVK

Share this post


Link to post
Share on other sites

Z mojí strany by zájem byl. Po pravdě jsem se o něco podobného pokoušel sám asi před rokem. Nazval jsem to Multi-MaNGOS a v podstatě šlo o rozdělení emulátoru na kousky podle kontinentů atd. Nějakej koncept mám. Teď mám v podstatě spuštěný 2 emulátory který si přehazujou data hráčů když cestují mezi Eastern Kingdoms a Kalimdorem. Je to nedokončený, jsou tam chyby, prakticky stejně rychle jak jsem začal, tak jsem skončil. Synchronizace taková že žádná, ty worldy musí mezi sebou komunikovat daleko víc než jen na úrovni přehození hráče jako horký brambory. Když mi došlo kolik by s tim bylo práce, tak jsem se na to vybodnul. A padalo to, realm to často nechápal. Dalo by se to vyladit, ale nebudu vás tu zatěžovat minulostí, stejně je to na nic.

 

Noeele, cože? Webtrh? Souvislost?

Share this post


Link to post
Share on other sites

Je tam spoustu lidí co umí C/C++/C#.. A to že se to týká WoWka to by snad zas tak moc nevadilo.. každá zkušenost je dobrá

Share this post


Link to post
Share on other sites

MW na to funguje jen kdyz to zapnou cross realm BG a LFG system

 

Hm, tohle je info ktery nezna ani google... nemaj ho ani v changelogu nikde... pravda ingame jsem nešel, ale MW byl prvni server na ktery jsem koukal...

jediny info co ma google - je z forka nekdy z dubna, ze snad nekdy v budoucnu...

 

kazdpopadne nepredpokladam, ze kdyby to MW meli, ze by se o to volne podelili se vsema :)

 

Wolf: prave proto ze to bude hardcore na dlouho, jsem udělal tenhle topic, sám to nedávám :)

 

 

Jinak nemám problém, pokud by se sehnal i anglicky mluvící programátor přepnout do angličtiny...

na TC2 né, ale jak arcemu tak aspire Hearthstone má pár commitů ode mě... na jejich IRC jsem byl pečenej vařenej :)

 

to je bohužel i moje mínus - do dnes si víc rozumím s klony ascentu než s klony mangosu... :(

Share this post


Link to post
Share on other sites

Nechci vás zklamat, ale vaše znalosti dané problematiky vám neumožní tohle dobře realizovat. Tohle je už trochu vyšší dívčí. Jediný kdo by možná věděl ze zmiňovaných je bLuma a pochybuji, že ten se bude chtít podílet.

Share this post


Link to post
Share on other sites

SneakerXZ: zkus trochu rozepsat, co myslis ze bychom nezvladli ?

 

Znalosti C++ ? znalosti knihoven v C++ ? znalosti emulu ? znalosti wowka ?

Nebo navrhnout vhodnej algoritmus pro vymenu dat mezi stroji ? TCP/UDP komunikace ?

 

Tohle odrazovani ze na neco nemame, bez zduvodneni nemam rad ;) Ale rekni fakta.

Share this post


Link to post
Share on other sites

Spíš tu synchronizaci mezi těmi servery, protože i když budou všechny kontinenty rozřezané. Stále musí existovat nějaký primární server, který zpřístupní chat a další věci. Plus bude routovat traffic na ty další servery. Bude muset detekovat, kde zrovna hráč je, aby poslal pakety na správný server. Plus když bude hráč opouštět jeden kontinent a půjde na druhý. Musí být smazán a přesunut na ten další server.

 

Problém je, že stejně bude muset být vždy jeden hlavní server přes, který vše půjde. Tím pádem ten musí být extrémně výkonný a bude bottleneck celého tohoto nápadu. Mám za to, že WoW klient neumožňuje uživatele přepojit na jiný server, aby uzavřel jedno TCP připojení a otevřel nové během loading screenu, ale možná v tomto se mýlím?

 

Jinak UDP vůbec WoW nepoužívá. Jen na voice chat.

 

Každopádně než se snažit o tohle v C/C++. Bylo by lepší celý emulátor od píky napsat v nějakém jazyce, který podporuje Actor model či jiný druh concurrence a potom se ta komunikace a vše vyřeší na úrovni jazyka a o distribuci na servery se postará runtime společně s jazykem. K tomu stačí použít jazyky jako je Scala (s knihovnou Akka) nebo Erlang. Tady máte např. jeden z pokusu o implementaci WoW emulátoru v Erlangu https://github.com/keymone/wower nebo použít jazyk Go a jeho goroutines nebo klidně i jiný jazyk, který řeší concurrence na úrovni jazyka jinak přes vlákna a potom distribuce na více strojů je jednoduchá.

Share this post


Link to post
Share on other sites

Osobne si o tom myslím že zmysel by malo radšej opraviť a vylepšiť využívanie pamäte RAM a pozor prípade vytvoriť pre nové SSD HDD nejaký swap súbor (Nie OS) na nejaké tie nepotrebné bočné záležitosti ktoré

nepožadujú neustále ukladať v RAM.

 

To by bolo ideálne pretože toto by bolo naozaj náročné ale na druhej strane zaujímavé sledovať ako to pracuje.

 

 

Inač takýto systém používa Second Life. Vždy keď prejdete na inú časť môže sa stať že dostanete napr. hlášku "túto časť spravuje server v inej verzií ako je váš klient"

Takže je to možné a zaujímavé ale bolo by náročné dať do nejako dohromady aby to fungovalo :)

 

 

EDIT: http://wiki.secondlife.com/wiki/Server_architecture

Edited by Jamira

Share this post


Link to post
Share on other sites

Děkuji za zajímavé poznatky a odkazy - budu mít večer před spaním co číst a o čem přemýšlet :)

 

ad SneakerXZ:

to routování na víc serverů - to je věc proč mě štve, že na offi je cata (přeci jen wotlk na TC2 je o řád funkčnější)... teď už se bude blbě dohledávat nějaký tcpdump komunikace, zda lze přesměrovat IP, či aspoň port...

nikdy jsem také nenapsal, že to bude jednoduché, být to easy, tak už to někdo dávno udělal...

 

nicméně nějak to musí být řešeno na offi - cross realm BG - kde se podle mého názoru musí měnit port...

 

pro začátek by myslím byl dobrý cíl to rozříznutí world.exe na 2 nezávislé procesy. I to by dalo hodně přehled, co je možné, a co ne.

 

Tyhle všeobjímající problémy - chat - guild, world channel, whisp etc. by se nechaly převést do vlastního procesu... všechno je to o dělení zátěže...

 

pokud bychom měli například 9 serverů - po jednom pro každý svět (4), BG, dungy, chat, realm, DB - spojené rychlou sítí např. Infiniband a dostatečnou konektivitou ven - cisco routery s dostatecnou propustnosti... tak by ten bottleneck se nechal celkem eliminovat.

 

to UDP jsem myslel pro komunikaci mezi servery - na LAN je většinou nulová ztrátovost, takže nepotřebujeme potvrzování... případně použít něco pro cloudy - MPI na wiki - ten se taky právě stará sám o to rozdělení, programuje se to jako multithread na lokalu :)

Pokud by byl zájem, můžu ukázat jak v tom vypadá napsaná jednoduchá semestrálka na prohledávání do hloubky - paralelně.

 

Jinak tyhle "jiné" jazyky - já z těch Actor model like znám trochu jen Smalltalk... a napsání v tom emulu - to je podle mě ještě o řád vyšší dívčí než to co jsem prvotně navrhnul já, ale zase by nám to asi dalo i víc věcí do života ;)

Páč C++ umí pořád o řád víc lidí než tyhlensty ;)

 

ad Jamira:

tohle by zas takovej HC nebyl... něco podobnýho dělaj studenti CVUT FITu v druhym semestru - vlastní správce paměti.

Nejjednoduší verze by byla - přidat nějakou třídu pro správu paměti(RAM a disk(SSD)) - a pro každou jednu třídu v core (uffff a ze jich je) přetížit operátory new a delete s pomocí tohoto správce... tam používat nějaké návrhové vzory, jako singleton - proč vytvářet objekt 6x, když stačí jednou, a zničí ho až poslední destruktor?

 

Tohle by taky bylo na hlubší analýzu co a jak, a vyžadovalo výbornou znalost emu (jmenovat se Burlex pro ascent... :D )

Edited by ariczek

Share this post


Link to post
Share on other sites

Mám za to, že WoW klient neumožňuje uživatele přepojit na jiný server, aby uzavřel jedno TCP připojení a otevřel nové během loading screenu, ale možná v tomto se mýlím?

vis jak funguje prenos postavy z worldu do BG ? myslim na retailu presne takhle BG server je samotnej ´´realm´´

Share this post


Link to post
Share on other sites

vis jak funguje prenos postavy z worldu do BG ? myslim na retailu presne takhle BG server je samotnej ´´realm´´

 

Nevím, tohle jsem nezkoumal. Resp. už je to fakt dávno a zapomněl jsem toho hodně. Pokud to jde, lépe pro vás. :)

 

Jinak tyhle "jiné" jazyky - já z těch Actor model like znám trochu jen Smalltalk... a napsání v tom emulu - to je podle mě ještě o řád vyšší dívčí než to co jsem prvotně navrhnul já, ale zase by nám to asi dalo i víc věcí do života

Páč C++ umí pořád o řád víc lidí než tyhlensty

 

Scala je JVM jazyk podobný syntaxí Javě. Akka se dá klidně použit i z Javy a tu zná víc lidí než C++ viz. http://akka.io/ Každopádně vše má své výhody. Já pokud bych dnes dělal emulátor, tak takový, abych využil těchto věcí a nemusel tu synchronizaci nikterak řešit sám.

Share this post


Link to post
Share on other sites

Scala je JVM jazyk podobný syntaxí Javě. Akka se dá klidně použit i z Javy a tu zná víc lidí než C++ viz. http://akka.io/

 

aha :) rikam, jen jsem precet nazvy, a blizsi hledani si nechavam na vecer, ale jo, i ja umim lip s javou - aspon J2SE, nez s C++ :)

netusil jsem tu provazanost na javu.

 

Edit: Navíc... aspon z lidí tady javu znáš nejspíš Ty, na FELu je povinná... pak bLuma, no a tím jsem asi skončil, C++ je tu mezi wowkařema rozšířenější

Edited by ariczek

Share this post


Link to post
Share on other sites

Já už nestuduji FEL, ale samozřejmě umím Javu. Každopádně např. já C++ nesnáším. Dle mého názoru je to hrozný jazyk. Když potřebuji něco nízkoúrovňový, tak používám C eventuálně Objective-C. V tomhle je lepší Lineage komunita, kde jsou emulátory v Javě. :)

Share this post


Link to post
Share on other sites

To je na velmi dlouhou diskuzi s nejasným koncem - zda C++ nebo java :D třeba v javě nemáš takovou kontrolu nad uvolňováním paměti... což je u projektu týhle velikosti jako wow emul kritická vlastnost :) ale to bychoom zabrousili off topic ;)

Share this post


Link to post
Share on other sites

V době kdy mají servery běžně 16 GB paměťi, řešit paměťové nároky mi přijde jako blbost. Dneska se už drží co nejvíc věci v paměti. např. sociální síť Foursquare drží celou jejich databázi v paměti a sharduje jí na několik strojů. Každý z těch strojů má 68 GB paměti. Před rokem když jsem o tom četl měly 2 takové servery. Hádám, že jich dneska budou mít daleko více.

 

Hrát si na to, že s C++ ušetříš trochu paměti je blbost. :) Naopak ten čas, který strávíš laděním memory leaku, dangling pointerů apod. by byl lepší investovat do vývoje features.

Share this post


Link to post
Share on other sites

V době kdy mají servery běžně 16 GB paměťi, řešit paměťové nároky mi přijde jako blbost. Dneska se už drží co nejvíc věci v paměti. např. sociální síť Foursquare drží celou jejich databázi v paměti a sharduje jí na několik strojů. Každý z těch strojů má 68 GB paměti. Před rokem když jsem o tom četl měly 2 takové servery. Hádám, že jich dneska budou mít daleko více.

 

Hrát si na to, že s C++ ušetříš trochu paměti je blbost. :) Naopak ten čas, který strávíš laděním memory leaku, dangling pointerů apod. by byl lepší investovat do vývoje features.

 

Stavíš mě do role obhájce C++... ale jo, paměť je důležitá, my jsme na našem projektu měli třeba 6GB RAM... a na tom jelo: 1x auth, 2x world, 1x DB, 1x ET, 2x CS:S, a nejaky drobnosti jako TS, ventrilo :) takze tam opravdu pametova narocnost byla kriticka :D ne kazdej ma na to koupit si nejvykonnejsi servr, mozna ty top servry wowka ;)

 

Jinak já nechci bejt zastánce C++ v týhle debatě ! :D Já si za 2 měsíce u obhajoby diplomky budu muset obhájit, že jsem pro serverovou část zvolil javu ! :D

 

 

Wolfiku: proto ze je to narocny jsem udelal tenhle topic, Ted tomu dam tak tyden jestli se ozve jeste nekdo ochotnej spolupracovat - zatim jsme tri, ja, stoner a ty. A pak bych nejak probral na co v tom slozeni mame, a na co ne ;)

Share this post


Link to post
Share on other sites

Taky bych se mozna zapojil, ale nevim, jestli na to mam dostatecny znalosti, taky jde o to, v jakym jazyku se to bude teda delat.

Share this post


Link to post
Share on other sites

zeptejte se raczmana ten to kdysi dotahnul az na funkcni prototyp :D

 

Asi se zeptám blbě, kdo je raczman ? Vůbec netuším kam ho zařadit, o koho jde :)

Share this post


Link to post
Share on other sites

bejvalej developer trinitycore nevim jestli se da jeste pres forum kontaktovat kdyztak na githubu je celkem aktivni

Edited by OneB1t

Share this post


Link to post
Share on other sites

Alebo ešte jeden úplne geniálny nápad spravte podporu multithreadingu. To je asi najrozumnejšie.

Lebo celé to padá na hubu že presne toto to nepodporuje (Nehovorím o mapách)

  • Upvote 1

Share this post


Link to post
Share on other sites

vzhledem k tomu ze se daj koupit serverovy procesory taktovany na 4,4ghz (Xeon X5698) ktery utahnou 4-5k online na jednom realmu tak zpracovani na vice vlaknech postrada smysl(samozrejme je zajimave pro studijni ucely) daleko vic by me potesilo kdyby se nekdo zameril na stabilitu :-) a pripadne propojeni realmu pro chat,bg,areny apod

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×