View previous topic :: View next topic |
Author |
Message |
martinezzz
Joined: 02 Feb 2010 Posts: 42
|
Posted: Fri Feb 05, 2010 10:40 am Post subject: par masivam daudzrotlajbiedru lomu spelem :D |
|
vai kads no forumieshiem ko tadu ir taisijis es vienkarshi taisu un velejos varbut ko iejautat kadam ar pieredzi lai nekaptu uz grabeklja kartejo reizi :)
pirmakie jautajumu kas man jau sen stav ir shie ...
1. izmantoju sql bet esmu dzirdejis briesmas ka taka neesot pratigaakais
varjants ka labak object db .... vaita tik traki ir ??? jo man jau diezgan sadrukats sql aa..
http://doublebuffered.com/2006/10/30/why-sql-sucks-for-mmorpgs/
2. man ir taa ka vis pa lielo shaibu notiek serverside clients tikai tads UI.
tobish man ir masivs kas satur visus rotaljnieku datus kurus katraa lupa gremo pariet pari serveris...
vai shads risinajums nenovedis pie totala bremzes kad bus daudz lietu taja masiva ka rezuldtata geims updeitosies makten reti ....
vai tomer nevajag lai katrs klients rekjina savu dolju un serveris tikai kko tur apkopo korekte utt ... |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Fri Feb 05, 2010 10:58 am Post subject: |
|
1. SQL ir tikai valoda, ar kuru tu vari operēt ar datubāzi, pašai datubāzes tehnoloģijai ar to nav sakara. Ar "object db" tu droši vien domāji object orientētu valodu, tad tev būs jāizmanto Oracle (PL/SQL) vai kāda cita DB, kas izmanto Object-orientētu valodu.
2. Vari turēt visu serversaidā, atkarībā no tā, kāda tipa spēle tev ir. FPS spēlēm tas nederēs, jo tās ir tik ātras, ka tev daļa ir jārēķina arī uz klienta. Ja tu pastāstītu sīkāk par projektu, tad varētu pateikt sīkāk, ko tev labāk izmantot.
PS. par to, ka parasts SQL sucks priekš MMORPG varētu nedaudz piekrist. Man pašam arī servera pusē tas sagādā daudz problēmu. Tāpēc lēnām pāreju uz Oracle _________________ long time; /* know C */ |
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Fri Feb 05, 2010 11:18 am Post subject: |
|
Manuprāt, servera dizains spēlēm, kas piesauc datubāzi pei katras darbības ir vienkārši nepareizi un slinks risinājums arhitektūrai. Rekur no saita, ko meta, "The problem is that SQL databases are designed for high throughput, not low latency.", so secinājums ir, ka vajag vairāk pre-cache informāciju, kas tiešā veidā atbrīvo no daudz izsaukumiem. Sevišķi, kad mūsdienās atmiņa nav problēma. |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Fri Feb 05, 2010 11:25 am Post subject: |
|
Te jau diskusija nav par daudz/maz izsaukumiem. Šobrīd runājam par tehnisko risinājumu. Tas, kā pēc tam to izmantot jau ir paša ziņā. _________________ long time; /* know C */ |
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Fri Feb 05, 2010 11:33 am Post subject: |
|
Doma, bija, ka neredzu iemeslu nelietot SQL, tā kā problēmu nav, ja jamo lieto atbilstoši. Es lietoju MySQL serverim un neesmu vēl saskāries problēmu ātrdarbībā, jo ļoti maz sazināšanās ar datubāzi ir nepeiciešama. Protams neesmu testējis tur 40+ cilvēkīem, bet nekam daudz nevajadzētu mainīties arī tad. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Fri Feb 05, 2010 1:26 pm Post subject: |
|
Nu es īsti nerunāju par ātrdarbību, bet lietošanas ērtumu un visām pārējām fīčām, ko piedāvā objektu glabāšana datubāzē.
Un taviem piemēriem bubu varu likt pretī World of Warcraft, kas izmanto Oracle. _________________ long time; /* know C */ |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Feb 05, 2010 1:58 pm Post subject: |
|
Cik man nācies darbojies ar Oracle - tur no lietošanas ērtuma ir 0. Parasti dabūju lielu pain-in-the-ass ņemšanos ar to. Un pēc tam nav ne mazākās vēlmes to lietot atkal. Pie tam bezmaksas versija ir dikti limitējoša, bet maksas versija indie developerim maksā drusku par daudz $$$.
Ar vienkāršiem wraperiem normālā valodā, kur ir reflekcija (C#, Python, Java, ...), var uzrakstīt visai ērtu interfeisu jebkuram SQL - vai tas MySQL, vai PostgreSQL, vai pat SQLite, ko ļoti rekomendēju iesākumam. Velāk vienmēr var db nomainīt. |
|
Back to top |
|
|
martinezzz
Joined: 02 Feb 2010 Posts: 42
|
Posted: Fri Feb 05, 2010 2:03 pm Post subject: |
|
man serveris sanak tagad nevis vienreiz lupa aistiek datubazi bet faktiski visas darbibas tiek veiktas sql aaa ... protams es varu ustaisiit luupa sakuma bazi panjem atminja tad visas darbibas veic tur un velak vienkarshi updeito db no atmijas . tobish serveris 2 reiz turna aistek bazi...
tachu ta man jaraksta pasham visas komandas un es zaudeju ertibas :D
tas object db cik saprotu ir datubazes kuras informacija glabajas tadapasha struktura kaa piemeram spele. sqla ir tab un rov. a ODB kope tavu struct ... un tad nevajag wraperi kas sql datus sagrupe tava velamaja forma.
tipa es visu savu player[] varetu glabat pa taisno nevis tur dalit itemi viena lista skili otra utt... man tagad ir 3 listes 1 general par visem objektiem kas atrodas spele 2 sho objektu skili 3 sho objektu itemliste.
tad man pie lupa sakuma no sql a nolasas visi objekti tad katram objektam itemliste un katram objektam skilliste ....
tad loops iet cauri jauniegutajam objects[] un if kautkas tad sql="update object bla bla"
lidzaro katram objektam tien n reizes tramdits db no servera puses...
aa jaa tieshi lietoju sqlite .... webam uSQLite tads vienkarsh serveritis un clients |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Fri Feb 05, 2010 2:39 pm Post subject: |
|
Doma tev pareiza. Oracle DB tu piereģistrē savu datu tipu. Piemēram:
Player
{
int ID
string name
string getPasswordHash();
blablabla...
}
Pēc tam izveido tabolu šim objektam, piemēram, Players. Tad vari no C++ saglabāt savu objektu DB un to arī izgūt. Taču pati labākā fīča, ka ar PL/SQL vari izgūt objektus arī pēc member funkcijām, piemēram WHERE player.getPasswordHash() = 'kautkadsMD5hash.'
Bet nu jā, kā jau bubu teica, pašā sākumā Oracle licence ir nedaudz par dārgu. Bet vēlāk tas atmaksājas ne tikai dēļ šīs objektu orientācis, bet arī dēļ dāžādiem tehniskajiem risinājumiem, piemēram, ar Oracle, atšķirībā no MySQL, tev nav jāuzstraucas, par load balansēšanu, proxijiem utt. Vismaz cik es esmu lasījis par MySQL, viņiem tādas lietas, kā klasteri, proxiji utt eksistē, bet šitām lietām nav pārāk laba dokumentācija. _________________ long time; /* know C */ |
|
Back to top |
|
|
martinezzz
Joined: 02 Feb 2010 Posts: 42
|
Posted: Fri Feb 05, 2010 3:00 pm Post subject: |
|
bet par to risinajumu ... vai ir ok ka serveris vislaik aistiek to db ?? vai labak kamer nav parvelu ustaisiit lai divreiz tikai aistiek to db per loop ?? |
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Fri Feb 05, 2010 3:35 pm Post subject: |
|
Kapēc vispār, tev, jaaiztiek datubāze tik bieži? |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Fri Feb 05, 2010 3:58 pm Post subject: |
|
Nē, loopaa gan DB querijus nevajag likt. Ja peiprasījums ilgst ilgāk par loopa ilgumu, tad veidosies rinda, līdz beidzot tev viss nosprāgs. Ar datubāzi biežākais vajag komunicēt tad, ja kāds pieprasa informāciju vai arī pasaulē ir notikušas izmaiņas. Ja ir vajadzība rēķināt kaut kādus masīvus datus (piemēram useru topus utt.), tad ir vērts apdomāt kaut kādu shcedule'šanu, piemēram, to pašu topu rēķināt tikai reizi stundā (diezvai tas īpaši biežāk mainīsies). _________________ long time; /* know C */ |
|
Back to top |
|
|
VEGETABLE
Joined: 02 Feb 2010 Posts: 6
|
Posted: Fri Feb 05, 2010 4:30 pm Post subject: |
|
SQL nav ne vainas (ja visi indexi un tipi utt ir pareizi salikti (to parasti iemācās "grūtajā ceļā" )), protams viena par sevi vina nenoturēsies itsevišķi ja esi iecerējis viņu tik daudz izmantot, te nāks palīgā kāda cash sistēma - piemēram MC. |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Fri Feb 05, 2010 4:58 pm Post subject: |
|
Nejauc te iekšā memcached. Mēs nerunājam par web, bet gan par spēles serveri - persistentu aplikāciju, kas var operēt/glabāt RAMā visu kā vēlas. _________________ long time; /* know C */ |
|
Back to top |
|
|
|