Creați un joc, designeri joc, motoare de joc

Ghidul începătorului pentru creatorii de jocuri MMORPG.

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.

Pasul 2. Crearea unei schițe de design

Baze de date
avantaje:
• se pot adăuga cu ușurință sau modifica câmpul.
• Modificarea statistici despre 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
• Este ușor de actualizat ș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
• Trebuie să 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
• Dacă din anumite motive 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ă)
fișiere
avantaje:
• acces foarte rapid (citire / scriere)
• punerea în aplicare ușoară
• 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:
• Acesta 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
• Nu puteți 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)
• Trebuie să scrie cod special pentru a permite actualizarea / verificarea stării de jucători
• Puțin mai dificil de a efectua operațiuni de recuperare și de actualizare
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.







Etapa 3. Elaborarea protocolului intern pentru transmiterea datelor de joc

Această sarcină, de asemenea, pare simplu, dar din nou, nu e. Nu puteți trimite doar un șir de caractere la un simbol al Terminalului Zero „# 92; 0“. Veți avea nevoie de un protocol comun pentru a fi în măsură să transmită ambele șiruri și date binare. Neînțelepți, în acest caz, utilizați 0 (sau orice alt set) ca un element de terminator, deoarece terminatorul poate fi parte a fluxului de date pe care le trimite. De asemenea, dacă doriți să trimiteți 20 de octeți, și apoi un alt 20 de bytes, cel mai probabil, serverul nu primește un pachet cu 20 de octeți, urmat de un alt pachet cu celelalte 20 de octeți. In schimb, el va primi 40 bytes dintr-o dată, deoarece acest lucru reduce sarcina pe rețeaua din cauza antetul pachetului (trimis unul, nu două titluri). În mod similar, puteți trimite un pachet de dimensiunea de 1 kb, dar serverul va primi două pachet mai mic. Astfel, este necesar să se cunoască în cazul în care pachetul începe și unde se termină. Proiectul Lands Eternal utiliza următoarea metodă:
• Offset 0: 1 octet care definește comanda transmis.
• 1 Offset 2 bytes, lungimea datelor transmise.
• Offset 3: lungime variabilă a corpului mesajului.
Această metodă are avantajul că toate datele sunt transmise, respectiv, un anumit standard. Dezavantaj - unele echipe au un fix, cunoscut în prealabil dimensiunea, astfel încât traficul este irosit. În cele din urmă, am trecut la utilizarea de soluții hibride.
Următoarea întrebare este de a decide - „prize blocate, multi-threading“ ce model pentru a utiliza pe server, „prize non-blocare, un singur fir de aplicare“ sau Ambele metode (multi- și un singur fir) au avantajele și dezavantajele lor.
multithreading:
1. Un răspuns mai precis de la server, într-un moment în care jucătorii au nevoie de o mulțime de timp (de exemplu, citirea datelor dintr-o bază de date), va rula în propriul său fir, fără a atinge alți jucători.
2. Este foarte dificil de a depana și își dau seama: Veți avea nevoie pentru a crea o mulțime de sincronizare, iar cea mai mică pas greșit poate duce la consecințe grave (accident de server, obiecte care se suprapun, etc.)
o singură intrare:
1. Este mult mai ușor de implementat și apoi depanare
2. Un timp de răspuns mai mare
În compania mea, am optat pentru un singur fir de aplicare, pentru că pur și simplu nu au suficiente resurse pentru a face față cu crearea unei soluții multi-thread.

Pasul 4. Client

1. Nu se poate face un MMORPG, este nevoie de o companie mare.
Nu sunt de acord cu acest lucru. În timp ce crearea de jocuri World of Warcraft, Ever Quest 2, Call Asheron lui 2, de Lineage 2, iar celălalt este o sarcină imposibilă pentru o mică echipe independente de dezvoltare, creând un joc modest, este destul de posibil, și depinde numai de nivelul de experiența dumneavoastră, motivația și timp liber. Veți avea nevoie de cel puțin 1.000 de ore de programare pentru a crea un demo tehnic simplu, și, probabil, 10-15000 ore pentru a finaliza crearea server și client. Dar, ca șef al echipei va trebui să facă mult mai mult decât doar de programare. Păstrați echipa împreună, pentru a rezolva conflictele, pentru a face declarații publice (PR), suport tehnic, de configurare a serverului, probleme cu blocarea de jucători, „brainstorming“, etc. vă va însoți tot timpul. Aceste griji te zasosut complet. Cel mai probabil, va trebui, de asemenea, pentru a merge la locul de muncă / școală, care în continuare se va ajusta în momentul în care poate fi dedicat proiectului. Am fost foarte norocoși că nici un membru al echipei nu a ieșit din ea, dar dacă sa întâmplat, aceasta ar putea deveni o mare problemă. Imaginați-vă că artistul merge în mijlocul unui proiect. Și ceea ce este mai rău, nu lasă dreptul de a utiliza munca sa pe. Desigur, această problemă poate fi rezolvată în funcție de disponibilitatea contractului, dar căutarea unui nou artist va fi plictisitor. Utilizarea a două stiluri artistice diferite, într-un singur proiect va fi, de asemenea, o problemă.

2. Este nevoie de o cantitate mare de (4-6 cifre) pentru întreținerea serverelor.
Acest lucru nu este adevărat. Am văzut o mulțime de servere dedicate, cu o limită de 1000 GB / luna

3. Crearea unui MMORPG foarte interesant.
Acest lucru nu este valabil. Poate crezi că totul va fi simpatic pentru tine, jucătorii vor ajuta să fie capabil să facă quest-uri inovatoare, și vor exista mulți jucători în jocul tău. Jucătorii pot fi enervant. Chiar dacă este un joc complet gratuit, ei găsesc încă un motiv să se plângă. Și cele mai neplăcute - oamenii de multe ori se plâng de lucruri absolut opuse. Soldații nu-mi place că o lungă perioadă de timp este necesară pentru a obține un nou nivel, în timp ce comercianții vor fi dezamăgiți de faptul că soldații primesc o mulțime de bani cu trofee. Dacă reduce deficitul de monstri trofee, unii oameni vor amenința plecarea lui din joc. În cazul în care creșterea - aceleași persoane vor fi nemulțumiți de faptul că acum chiar și începătorii pot face cu ușurință bani. Dar să-l lăsăm așa cum este - nu este cea mai bună idee. Aici este necesar de a utiliza idei noi și îmbunătățiri. Dacă vă decideți să schimbați ceva, de exemplu, au adăugat noi provocări pentru cei care produc articole, unii vor spune că e prea dificil. Dacă nu face acest lucru - ei spun că este foarte ușor sau plictisitor. Trebuie să ne amintim că cei mai mulți dintre jucătorii de obicei, nu spun nimic și sunt complet mulțumiți de tot ceea ce, în timp ce o parte va plânge mereu.

Economie în MMORPG-ul este mult mai dificil de a echilibra decât în ​​joc pentru un singur jucător. În single player puteți îmbunătăți treptat armele, astfel încât jucătorul se deplasează treptat înainte, pot primi cele mai bune echipamente, aruncarea (sau vânzarea) vechi. Într-un joc multiplayer, această abordare nu a reușit, deoarece toată lumea va fi încercarea de a obține arme mai bune, în timp ce ignoră cel mai rău. Mulți jucători preferă să nu folosească armele în primul rând, și să păstreze finanțele pentru cumpărare imediat după cele mai bune dintre posibilele arme din joc. Dezvoltarea economiei merită propriul articol scris.

Tot ceea ce am enumerat până la acest punct, împreună cu activitatea și provocările suplimentare ar trebui să te gândești cel puțin de două ori înainte de a prefera un astfel de proiect serios. Trebuie să înțelegeți toate consecințele alegerii dumneavoastră.
Concluzie.