Thejuster (Admin)
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
|
Buonasera ragazzi.
Mi era sorto un dubbio mentre riguardavo i miei sorgenti di MMORpgmaker.
Un server scritto in Qt C++ può essere più veloce di un server C# .NET?
Chiedo questo perché seppur il server possa essere in c++ deve comunque comunicare con un client (Applicazione) .net
il server esegue poche query dal db sql locale quando richiesto, e mantiene in memoria le posizioni dei player
tramite una lista.
ovviamente, per vedere che i player si muovano, il client è in constante comunicazione con il server.
(non sò se possa essere il metodo migliore)
Voi cosa consigliate?
Questo è un piccolo test che ho fatto tempo fÃ
https://www.youtube.com/watch?v=vIkgkQ9FPpg
per chi invece è interessato a come procede il progetto
questo è l\'ultimo video di presentazione che ho fatto
https://www.youtube.com/watch?v=EyQ2NFVxOi4
Ultima modifica effettuata da Thejuster il 30/06/2016 alle 19:44
|
|
Snogar (Normal User)
Pro
Messaggi: 145
Iscritto: 09/01/2012
|
Se posso fare una critica al video di presentazione ...preferirei che ci fosse un commento parlato e non la musica che è \"a parer mio\" solo fastidiosa ...nel complesso complimenti per il lavorone che hai portato avanti.
|
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
Quanti player possono essere connessi allo stesso server contemporaneamente?
Perchè mysql?
Io non userei la tecnologia .net per la creazione di un server, perchè precluderei l\'utilizzo di un server con piccoli VPS linux (i meno costosi).
Se scrivi un web server in C++ che usi sqlite avrai un server molto comodo da utilizzare e configurare, e funzionerà anche su ambienti linux.
Visto il basso costo dei vps con linux molte persone potranno eseguirne uno, aumentando la diffusione del gioco/motore!
Sinceramente non userei Qt perchè significherebbe aggiungere dipendenze (di grandi dimensioni) inutilmente.
Fai un server piccolo e veloce.
Crea il progetto con CMake e controlla la compilazione con clang (su linux) e vs su windows. Aggiungi come libreria l\'amalgamation di sqlite e buon lavoro!
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
|
@Snogar
Grazie snogar in effetti ci lavoro da tanti anni sopra,
ed quasi giunto alla conclusione.
Il video si e venuto penoso, ma sicuramente ne farò altri.
@TheDarkJuster
ho scelto mysql perche\\\' e molto facile da da usare, e posso realizzare
pannelli di controllo direttamente da un webserver.
DarkJuster, io ho provato a dare un occhiata ad un progetto colossale.
un server scritto in C.
Tanto tempo fa\\\'Â giocavo ad un gioco chiamato ragnarok.
Quel server, riusciva a mantenere dai 700 fino ai 1000 e pu\\\' giocatori.
non ho mai capito bene con quale sistema o organizzazione hanno agito,
ma fatto sta che era incredibilmente performante.
ora il problema puo\\\' essere questo.
Anche in quel gioco, i player li vedevi muovere in tempo reale, e fare azioni tipo sedersi,
gesticolare, o molte altre funzioni.
Come cavolo si fa a gestire questo gran numero di situazioni?
ad oggi rimango ancora sconcertato.
https://github.com/eathena/eathena
Il server in realta\\\'Â aveva 3 applicazioni
Login-Server
Character-Server
Map-Server
il Character server, comunicava con il login server
il Map Server comunicava con il Character server.
entrambi erano intercomunicanti.
Forse per alleggerire il carico di istruzioni, hanno preferito utilizzare dei server separati ma intercomunicanti in locale. puo\\\' darsi che il trucco sia proprio questo non saprei proprio.
Fatto sta , che chiunque abbia provato a realizzare un mmorpg, con C# ed XNA ha sempre fallito per via del lag e delle basse prestazioni.
non so\\\' se ora realizzarlo in c++ puo\\\' servire a qualcosa.
Ma credo che bisogna ottimizzare di piu il codice e studiare per bene come spendere il minor numero di risorse per ottenere le massime prestazioni.
Che poi sono molto fissato sulle prestazioni.
Sopratutto se ti tratta di un engine.
Questa screen esprime il mio sconcerto
http://i1379.photobucket.com/albums/ah133/Iplay_Ragnarok/s ...
a questo gioco la sigla MMORPG gli si addice sicuramente
(Massive Multiplayer Online Role Play Game)
Ultima modifica effettuata da Thejuster il 01/07/2016 alle 9:57
|
|
GN (Member)
Guru
Messaggi: 772
Iscritto: 30/04/2011
|
Postato originariamente da TheDarkJuster:
Io non userei la tecnologia .net per la creazione di un server, perchè precluderei l\\\'utilizzo di un server con piccoli VPS linux (i meno costosi). |
Piccola precisazione, che io sappia utilizzando Mono ( http://www.mono-project.com/) le applicazioni .NET possono girare abbastanza tranquillamente su Linux (tantopiù se sono solo a riga di comando come un server, mi ricordo di aver letto alcuni tutorial per rendere applicazioni .NET compatibili con Linux usando Mono e i problemi erano principalmente sulle GUI WinForms, adesso comunque mi sembra che sia migliorato anche su questo fronte). Il progetto sembra oramai molto maturo, fra l\'altro era un po\' che non mi informavo e guardando la home adesso ho notato che è anche sponsorizzato da Microsoft.
Sul fatto che poi un\'applicazione nativa che viene realmente compilata in linguaggio macchina (e non in un linguaggio intermedio) sia più performante non c\'è dubbio. |
|
Thejuster (Admin)
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
|
Si basta scrivere nelle opzioni di compilazione il flag MONO
e poi andare nelle cartella di mono ed eseguire la conversione manualmente
mono Applicazione.exe
|
|
Template (Member)
Pro
Messaggi: 177
Iscritto: 09/12/2015
|
|
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
Io non adoro mono: aggiunge overhead in entrambi gli aspetti: complessità dell\'applicazione e spazio su disco.
MySQL è uguale: prende tantissimo spazio su disco e aggiunge complessità.
Esistono OTTIMI strumenti per gestire db sqlite, quindi in questo caso non c\'è alcun vantaggio per preferire mysql.
Per quanto riguarda la parte tecnica: usa solo socket UDP e per gli eventi più importanti implementa un controllo di correttezza.
Usare esclusivamente socket e/o stream TCP è una pessima scelta in ambito giochi online.
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
|
non saprei su sqlite.
ho letto questo
When Not To Use SQLite
Multi-user applications:
If you are working on an application whereby multiple clients need to access and use the same database, a fully-featured RDBM (e.g. MySQL) is probably better to choose over SQLite.
Applications requiring high write volumes:
One of the limitations of SQLite is the write operations. This DBMS allows only one single write*operating to take place at any given time, hence allowing a limited throughput.
|
|