Ghidul începătorului pentru creatorii de jocuri mmorpg

Prefață de traducător

Recent, un foarte larg răspândite jocuri online multiplayer (MMOG - masiv joc multiplayer online) joc din lume, care sunt proiectate pentru un număr mare-mare de jucători. Desigur, toată lumea aude numai despre proiecte de succes care colectează venituri financiare semnificative. Acesta atrage cei mai mulți începători în igrostroy în acest gen. Cu toate acestea, foarte puțini oameni de fapt imagina ce probleme și provocări sunt pentru a crea acest tip de jocuri, ce cunoștințe este necesar să existe, etc.







Ca rezultat - mână, chiar în spatele creării unui astfel de proiect, începător să înțeleagă rapid modul în care totul este complicat și confuz. Și a aruncat toate dezamăgit.

Scopul acestui articol - pentru a da o idee inițială dispus să facă performanța sa în stil MMOG, cu privire la ceea ce este necesar pentru a avea cunoștințe ce trebuie să știi cum și de ce să fie pregătit. Nu este un secret faptul că, dacă o persoană încearcă ceva o dată, iar rezultatul este negativ - apoi din nou să-l înapoieze este puțin probabil să fie. De aceea, aș dori să avertizez încă o dată dispus să plonja în lumea jocurilor de crearea și să le ofere mai mult timp să se gândească lucrurile prin intermediul și se cântărește. Poate că ar trebui să înceapă cu jocuri mai simplu, pentru a obține doar experiența minimă necesară?

Articolul descrie crearea de MMORPG (joc de rol), dar cred că am descris că se aplică tuturor tipurilor de jocuri online multiplayer masiv.

cunoștințelor necesare:
    1. Cunoașterea a cel puțin un limbaj de programare. Care dintre dezvoltatorii de cele mai populare limbajul C ++, datorită avantajelor sale în materie de eficiență și viteză. Visual Basic, Java sau C # pot fi de asemenea utilizat în această calitate.
    2. Este necesar să se familiarizeze cu biblioteca grafică. O alegere populara este SDL, OpenGL sau DirectX / Direct3D.
    3. Decide cu privire la biblioteca de rețea. Puteți alege WinSock, SDL_net sau DirectPlay.
    4. Au experiență în joc de programare. De exemplu, pentru a avea o noțiune a ceea ce este: coada de evenimente, multithreading, dezvoltarea interfeței cu utilizatorul (GUI), etc.
Este foarte recomandat să știe:
    1. Arhitectura de comunicare client-server și construirea unor astfel de sisteme.
    2. Crearea unei aplicatii cross-platform. Destul de probabil doriți să creați jocul, și, în principal clientul, astfel încât să poată rula pe sisteme de operare diferite. Pentru această caracteristică, se recomanda folosirea SDL, OpenGL și SDL_net.
    3. Dezvoltarea unui Web (Internet). Acest lucru este necesar dacă doriți să oferiți persoanelor interesate posibilitatea de a vizualiza statisticile de jucători, informații despre server, sau orice alte informații prin intermediul site-ului.
    4. Protecția și Management. Nu vrei pe cineva hacked serverul dvs.?
    5. Lucrul în echipă, managementul echipei. Trebuie să fii o echipă care va fi capabil de a gestiona cu succes.






Am observat că o mulțime de oameni scrie în posturi forum despre echipele de căutare pentru dezvoltare MMOG. Mulți dintre ei începe cu cuvintele: „Noi - devenire studio de companie / joc si avem nevoie de 3 artiști, 2 programatori, 1 muzician, etc. pentru a crea inovatoare, nu a existat niciodată înainte de MMOG, în cazul în care veți avea libertate deplină de acțiune și posibilitatea de a schimba lumea, etc. Vom plăti pentru munca ta privind dezvoltarea la sfârșitul anului, atunci când vom face acest lucru un pic de bani. " Din păcate, cu tehnologia modernă și lățimea de bandă limitată (de rețea) Nu se poate crea o lume dinamică. Încercarea de a crea ceva imposibil duce la eșec. Acesta va fi corect să înceapă cu o arhitectură mică, complet operațional, scalabil sistem.

Arhitectura de bază a programului:

stochează informații despre un caracter din sarcina de la prima vedere pare destul de simplu, dar nu este. De exemplu, există două moduri de a face acest lucru: a se utiliza baza de date sau de a folosi fișierele. În plus, tabelul enumeră avantajele și dezavantajele pentru fiecare variantă:

avantaje:
  • Se poate adăuga cu ușurință sau modifica câmpul.
  • Schimbarea statistici cu privire la player-ul (nu jocul) este mult mai ușor
  • Puteți obține statistici diferite rapid și eficient folosind interogări SQL
  • Nu este nevoie pentru a crea o operație I / O într-un fișier, bază de date, toate acestea vor face pentru tine
  • Ușor de a actualiza și de a restabili

    dezavantaje:
  • Este ușor de a face greșeli. De exemplu, interogând un „unde“ declarație uitată. Acest lucru poate avea consecințe dezastruoase, mai ales dacă aveți doar vechi (sau nu la toate) backup-uri
  • Lucrul cu baza de date poate fi mai lentă decât de lucru cu un jucător fișier direct. Este posibil să pierdeți câteva milisecunde, atunci când obține date, mai ales în cazul în care un număr mare de jucători, în același timp, de intrare / ieșire din joc
  • Ai nevoie pentru a scrie cod suplimentar pentru a converti datele la / de la baza de date
  • Necesită experiență cu baze de date și interogări de limbaj SQL. Bibliotecile sunt, de asemenea, necesare pentru organizarea interacțiunii dintre aplicație și baza de date
  • În cazul în care pentru un motiv sau altul sunt deteriorate fișierele bazei de date, vă sunt de noroc. Puteți pierde toți jucătorii (mai ales în cazul în care nu există nici o rezervă în stare proaspătă)

    avantaje:
  • acces foarte rapid (citire / scriere)
  • ușor de punere în aplicare
  • Nu există biblioteci suplimentare
  • Nu există nici o relație cu serverul de baze de date. Prin urmare, nu trebuie să vă faceți griji cu privire la obtinerea de actualizări și patch-uri pentru baza de date

    dezavantaje:
  • Ea poate fi destul de dificil pentru a adăuga noi domenii, în cazul în care anterior nu cred că despre structura și formatul de fișier
  • Este imposibil de a face o cerere pentru un număr mare de jucători (această problemă poate fi rezolvată prin utilizarea unui program care în fiecare noapte se adaugă date importante la serverul de baze de date)
  • Mi-aș dori să scrie cod personalizat pentru a permite actualizarea / verificarea stării de jucători
  • Un pic mai greu de a efectua operațiuni de actualizare și de recuperare

    Acum, că v-ați decis cum să stocheze informații despre personaje, aveți nevoie pentru a decide ce fel de protocol de rețea pe care îl va utiliza pentru comunicare client-server: TCP sau UDP? TCP este cunoscut ca un mai lent, dar mai precis, este nevoie de mai mult de lățime de bandă. În practică, nu am observat nici o problemă atunci când se utilizează TCP. Dacă ați furnizat suficientă lățime de bandă de rețea, TCP - este o alegere bună, cel puțin pentru un început. UDP poate fi foarte neplăcut, mai ales pentru incepatori. Amintiți-vă că testele inițiale ale motorului, iar jocul se va face în rețeaua locală, astfel încât toate pachetele vor ajunge la destinație în aceeași ordine ca și care a mers. Dar acest lucru nu poate fi garantată atunci când se utilizează internetul, și anume, într-un mediu real. La acea vreme, ca de obicei pachetele ajung într-o anumită ordine, unele dintre ele pot fi pierdute, iar aceasta este o problemă constantă pentru Internet. Desigur, vă puteți dezvolta protocolul, astfel încât clientul / serverul poate recupera pachete pierdute. Dar este un proces greu, ceea ce nu este recomandat pentru incepatori.