Heroes of Asgard

Stato
Discussione chiusa ad ulteriori risposte.

ManHunter

Utente Jade
14 Settembre 2009
985
111
780
818
Ultima modifica:
Salve ragazzi,
quello che sto per presentare è Heroes of Asgard, un progetto al quale lavoro e del quale sono Lead Programmer.


Lascio subito qualche riferimento, se magari volete leggere la pagina in lingua originale.
Indiegogo: Heroes of Asgard - Indiegogo
Sito: Heroes of Asgard - Site
Devblog: Heroes of Asgard - Devblog
Facebook: https://www.facebook.com/groups/1498002640507387/


Heroes of Asgard è un MMORPG hack 'n slash, old school ma con l'inserimento di nuove idee e con un comparto grafico che abbiamo tentato di portare al passo dei nuovi giochi del settore.
E' basato sui concetti appresi da Metin2 (nel team siamo stati tutti giocatori del citato titolo), che ci ha influenzati parecchio.


Per la storia e la descrizione delle classi, vi rimando alla pagina di Indiegogo, dove è spiegato davvero bene.

Qualche screenshot:
B_p1evvWIAETuKc.jpg:large


B_FgF-lWoAAeDTn.jpg:large


B_AVJI-WoAAMrju.jpg:large


B-7ZFHlXAAEa04y.jpg:large


B-3BaxBWoAAr56j.jpg:large

Lo sviluppo è tuttora in corso, ci lavoriamo oramai da mesi e mi farebbe tanto piacere ricevere commenti e una valanga di critiche costruttive, dato che non si finisce mai di imparare, soprattutto dal confronto con gli altri sviluppatori!


UPDATE
Mentre attendiamo per la presentazione dei personaggi, uno dei nostri ragazzi sta realizzando la mappa del regno Talos. In questa anteprima, ne presentiamo la capitale.

Summary:
"Talos è un regno potente che combattè contro i titani, qui sono nati eroi leggendari che ora sono ricordati nel libro di Asgard. I Talosiani sono fieri delle proprie origini, combattono con coraggio e tentano di onorare i loro antenati, al fine di essere onorati e ricordati per sempre."

Screenshots:
8gL7voy.jpg

VvlVgSu.jpg

Gz6AtQG.jpg

zmWUaMk.jpg


Le immagini presentate raffigurano un work in progress non ancora completato. Pertanto, ci possono essere imperfezioni e la morfologia finale della mappa potrebbe cambiare.

Ci tengo a ricevere suggerimenti e consigli su ogni aspetto.


Al prossimo aggiornamento!


"Shake my hand..."
- Sura

20150326173823-hand.jpg



UPDATE
Come promesso, ecco uno degli update per i personaggi!

Il personaggio in questione è il Sura (molti di voi lo conosceranno proprio dall'esperienza in Metin2, ma per chi non sapesse cos'è: http://it.wikipedia.org/wiki/Asura), una entità a metà strada tra l'uomo e il demonio, capace di sviluppare la sua forza attraverso le arti oscure e il male. Il suo corpo viene via via corroso e corrotto dal male che lui stesso utilizza come suo punto di forza.
Ecco uno screenshot:
g2M8DXU.jpg



Ecco il guerriero:
KNEgiRV.jpg

CLXO85q.jpg


Commentate e fatemi sapere le vostre opinioni!

Saluti!

Vi porgo i miei saluti,
Emanuele.
 
Se non sbaglio Defiance e' su steam e per giocarlo devi avviare anche Glyph. E' come avviare steam e poi origin per giocare a battlefield xD Con questo volevo dire che le microtransazioni non mi pare passino per steam.
Se volete avere visibilita', steam e' una scelta obbligata. Almeno secondo me. Seguiro' il thread per ulteriori sviluppi, teneteci aggiornati. Buon lavoro ed in bocca al lupo :)
Mi documenterò meglio su Steam! Grazie!


"Shake my hand..."
- Sura

20150326173823-hand.jpg
 
E' un po' che non postavo niente, ma il tempo è, purtroppo, tiranno. Lo sviluppo ci ha tenuti impegnati un bel po', tanto da distogliere l'attenzione dalla parte "social".
Mi sono, però, ripromesso di creare un post oggi con alcuni degli aggiornamenti che sono stati fatti in questi mesi!

SERVER SIDE:
Oltre alle Meteore, ho avuto modo di aggiungere altri elementi simili alle mappe: parlo dei Mining Spots (giacimenti minerari) e dei Warp.
Al momento i giacimenti minerari sono lì tanto per, non hanno ancora una funzionalità rilevante, ma possono comunque essere piazzati nelle mappe.
Per quanto riguarda i Warp, mi sono adoperato per la creazione di un sistema molto flessibile, interamente configurabile dalle impostazioni delle mappe. La cosa interessante è come questi warp si disattivino in automatico quando la mappa non è raggiungibile.
Sono stati fixati alcuni bug sugli oggetti e sui bonus ad essi legati. Ora la serializzazione di questi bonus è stata riscritta a mano ed è più performante. I bonus sono generati casualmente alla creazione dell'oggetto secondo percentuali particolari (devo aggiungere anche un'altro parametro di generazione, ma lo farò prossimamente dato che ora non è strettamente necessario).
Sono stati aggiunti vari parametri per il personaggio: razza, sesso, classe e sottoclasse. Con questa modifica mi sono preparato la strada per permettere la creazione di razze differenti dagli umani (ne abbiamo già una in mente).

Ci sono due cose particolari, invece, che per me sono maggiormente importanti e alle quali ho lavorato in questo periodo.

La prima è sicuramente il Weather system. Pagine fa si accennavano idee sull'introduzione delle stagioni nel mondo di gioco.
Bene, l'ho realizzato.
Il mondo di Heroes of Asgard ora segue le stagioni. Le mappe hanno le loro temperature, la loro umidità. Questi parametri determinano anche quando pioverà, quando nevicherà, quando sarà nuvoloso, quando ci sarà il sole. Inoltre, varieranno in modo semi-casuale per generare un meteo non facilmente prevedibile.
Le stagioni, per come le ho strutturate ora, seguono effettivamente lo scorrere esatto delle stagioni reali. Anche la durata, quindi, sarà la medesima. Mi piacerebbe avere un parere da voi sulla cosa. Io credo possa essere un buon modo per avere una buona longevità e permettere vari tipi di attività stagionali (ad esempio, l'agricoltura in inverno è difficile, mentre in estate può essere migliore).
Inoltre, avevo in mente di potenziare o depotenziare mostri e personaggi giocanti sulla base delle condizioni atmosferiche.
Un giocatore che viene dalle terre nordiche, ad esempio, trarrà giovamento da una bufera di neve. E viceversa. Così come mostri abituati a temperature rigide, saranno più forti se combattuti a basse temperature, con neve, mentre saranno più deboli quando le temperature saranno alte.
Questo potrebbe introdurre un modo più intelligente di giocare, cercando di sfruttare anche l'ambiente a proprio favore. Attaccare, ad esempio, il regno del Nord di inverno potrebbe non essere la migliore delle idee...

La seconda cosa è più tecnica: riguarda il networking. L'attuale implementazione del lato server è "limitante" per certi aspetti e non può essere distribuita su più macchine fisiche. Questo può essere un problema qualora il numero degli utenti in gioco cresca esponenzialmente. Sto per questo motivo studiando un nuovo sistema di networking, totalmente distribuito e che abbatta i limiti dell'attuale implementazione. Vi lascio uno schema che mi sono creato tempo fa su questo concetto, sul quale sto costruendo la mia soluzione di networking:
YPeCZQW.png


Probabilmente non ci sarà nemmeno bisogno di tutta questa potenza di calcolo, ma dovesse esserci la necessità io sarò già pronto con la mia soluzione! :)

Ci sono anche altre varie modifiche, fix ed altro, ma sono cose tecniche e non interessanti.


Aggiornerò presto con le informazioni sullo sviluppo client, al momento non ho tantissimo tempo per continuare a scrivere!

Fatemi sapere le vostre opinioni, i vostri consigli. Siamo sempre attenti a ciò che i giocatori vogliono!

Saluti,
Emanuele - Crimson Games Development Department
 
UPDATE:
- Testato e debuggato il sistema di spawning dei mostri sui vari client
- Testato e debuggato il sistema di area of interest per mostri e players
- Piccole modifiche allo skill system, ora è possibile creare anche skill che richiamino script particolari
- Piccole modifiche al bonus system, ora è possibile assegnare un array di callback da richiamare quando il valore del bonus cambia
- Testata, debuggata e migliorata la prima skill (il classico melee attack) che sfrutta il nostro skill system
- Aggiunti elementi nella GUI per portare chiarezza al mondo di gioco (nomi di mostri e giocatori, danni fisici, danni magici, critici, ammontare curato, ecc)
- Fix sui MonsterGroup: ora per il respawn è necessario che tutto il gruppo di mostri sia morto
- Introdotto il sistema di exp e levelling server side
- Introdotto il sistema di exp e levelling client side, con relativi effect (da migliorare)
- Parallel tasks: riscritti alcuni service per migliorarne manutenibilità e velocità


A breve, probabilmente, posterò nuovi screenshot o un video. :)
Stay tuned!

Saluti,
Emanuele
 
Come pensate/pensi di gestire la garbage collection, se parli lato client o server dovrebbe essere già tutto ottimizzato di base o sbaglio?
Migrate a Mongo, quindi prima cosa usavate?
Beh, non è tutto ottimizzato di base. A seconda di ciò che fai, puoi generare più o meno garbage collection.
Ti faccio un esempio banale: il foreach. Se io ho una lista e ci itero sopra con un foreach, verrà creata un'istanza di un enumerator la cui reference sarà persa dopo il ciclo. Questa è una reference che andrà pulita dopo dal Collector. E così tanti altri casi.
Per fortuna siamo già abbastanza abituati a tenere presente questa situazione quando scriviamo codice, quindi sostanzialmente c'è stato poco lavoro da fare (ma nonostante questo, ogni tanto trovo sempre qualcosa da ottimizzare, come i cicli all'interno dei cast delle skill, ultimamente).
Altra cosa importante: nella nuova architettura è stato anche fatto un largo uso di pools di object, anche per i pacchetti, per le entities, ecc. Insomma, è stato organizzato tutto meglio, ma è una cosa ovvia: succede ogni volta che si riscrive una parte di software. Se lo riscrivo altre tre volte, probabilmente altre tre volte migliorerò qualcosa.

Siamo al momento su MySQL, però mi stavo documentando sul cluster MongoDB, dal momento che potrei evitare di scrivermi una logica custom di distribuzione per i dati in MySQL.
Ho appena scoperto ora il progetto e, per quanto ho letto, potrebbe essere interessante (considera che sono cresciuto con Metin), ma un consiglio: potreste prima di far uscire al pubblico una versione (qualsiasi essa sia, sia una possibile Open Beta, sia una versione ufficiale) una specie di Wiki (come quella di Metin2) dove spiegate come sarebbe meglio settare le varie razze, le varie skill, etc?
Ah, se dovesse (non ho ancora letto tutta la discussione) esserci il ninja (o qualche sua variante), per favore, settatelo in modo tale che sia almeno decente nei PvP e nelle risse tra PG;)
Sì, la Wiki sarà una buona idea probabilmente. Ma soltanto per la descrizione dei contenuti e cose simili. Non credo che aggiungeremo guide o tutorial nelle fasi iniziali, dato che a mio avviso vi priverebbe del piacerebbe della scoperta e della sperimentazione per cercare di capire cosa un personaggio può fare e cosa no.
Inoltre, ci sono idee che stiamo valutando riguardanti eventuali diari con appunti dei giocatori (vedi il creature-book che ho citato nel messaggio precedente), magari commerciabili: insomma, l'esperienza nel gameplay che un giocatore acquisisce potrebbe essere merce di scambio con i giocatori meno esperti.
Il che a mio avviso è interessante: un giocatore che investe molto tempo, che scopre segreti, dettagli e diventa esperto può diventare una sorta di guida per il popolo della sua fazione, facendo la differenza. Credo sia un buon esempio di RPG skill based.

Che ne pensate al riguardo?

Abbiamo già discusso riguardo l'Assassin (o Ninja, se vieni da Metin2): non vogliamo creare classi sbilanciate (tutti scelgono quella classe) o troppo piatte (non ha importanza quale scegli, tanto sono tutti forti uguale). Vogliamo creare classi caratteristiche, ad esempio (non è detto che sarà così) l'Assassin può essere debolissimo ad ammazzare tanti nemici, ma essere letale se affronta un nemico singolo ed isolato.
In questo modo non si crea il classico "eh, io prendo il Sura Magia Nera così in PvP e rissa vinco" che è banale, ma si crea una meccanica più sottile, del genere "prendo il Sura Magia Nera perché ho forti danni ad area e con l'attuale composizione di gilda con la quale andiamo in guerra/rissa riesco ad ottimizzare l'output di danno che faccio", quando però becco un Assassin che magari è forte nel duello singolo, non ho speranza perché il mio output di danno ad area non è capace di salvarmi.
Credo sia un miglior approccio rispetto a quello di Metin2.
Datemi una opinione e sentitevi liberi di esprimere idee al riguardo: come avete capito, siamo molto aperti ai suggerimenti fatti con criterio.

Stay tuned!
 
Guardando l'architettura di rete che proponi ti pongo questa domanda citando uno dei sviluppatori che hanno realizzato l'engine Snowdrop(il migliore dopo unreal/cryengine o anvilnext da quanto dicono)

Come gestite questo problema?
Afferma che per i massive multiplayer è un'altro discorso, non capisco il perché
Tanta roba lo Snowdrop Engine. Dovrebbe essere il motore di The Division. Dopo mi faccio un po' di ricerche al riguardo, nel caso stessi dicendo stupidaggini. :p

Ti risponderò in modo dettagliato, spiegando un po' di concetti del "dietro le quinte". Quando finirò qui, credo che uscirà fuori un articolo intero sull'argomento. :p

DEFINITION
Per definizione, un MMOG deve mettere in condizione di giocare con una enormità di persone contemporaneamente ed interagire con loro come fosse un normale gioco multiplayer, tutto questo in un mondo persistente.
Ora, se vogliamo sviscerare un po' di più questa affermazione, inizieremo a notare come questo sia impossibile senza applicare vari "trucchi" dietro le quinte.

WE ARE COMPLAINING ABOUT PERFORMANCES
Si può sicuramente capire come al crescere dei giocatori connessi, le performance del server vadano degradandosi.
Molte delle operazioni sul server necessitano di operare sull'insieme totale dei giocatori connessi o su un subset di essi, su tutti gli oggetti in giro, su tutti i mostri e le loro AI, ecc. Il tutto varie volte al secondo: immaginiamo, quindi, di dover iterare su 200 giocatori, dover iterare su 2000 giocatori o dover iterare su 20000 giocatori, ad ogni frame della simulazione. Ad ogni iterazione dovrò mandare pacchetti, fare calcoli, modificare posizioni, ecc. C'è, quindi, una crescita esponenziale del carico computazionale per ogni nuovo giocatore connesso.
Come si può ben immaginare, è una mole di lavoro molto grande per una singola macchina, questo per via di un ovvio cap hardware.
Di solito, quindi, esiste una soglia massima di giocatori gestibili contemporaneamente, oltre la quale il server stesso (la macchina fisica) non riesce a stare al passo, creando un'esperienza di gioco negativa (lag, unresponsive commands, etc).
Si può non accettare nuove connessioni oltre questa soglia finché non si libera un posto, al fine di non rovinare l'esperienza a chi è già collegato e sta giocando.
Si potrebbe quindi avviare più server su diverse macchine ai quali far collegare il giocatore, però ovviamente non potranno interagire con giocatori di altri server.
La divisione in varie "server instance" sicuramente non rientra nella definizione di MMOG, in quanto non ti permette di interagire con tutta l'utenza in un mondo persistente, ma crea istanze differenti dello stesso mondo.

Detto ciò, cosa si può fare per "aggirare" un pochino questo problema? E cosa è stato fatto nello specifico di Heroes of Asgard? Quello che descriverò è frutto della mia esperienza e, quindi, è anche ciò che ho infuso nella scrittura di Heroes of Asgard, tentando ovviamente di ottenere il meglio.

WHAT CAN WE DO?
Ci sono diversi accorgimenti che si possono applicare per migliorare quella soglia massima. Sì, migliorarla: ci sarà sempre una soglia massima oltre la quale è difficile andare mantenendo il medesimo hardware.

YOU ARE THE CODE THAT YOU WRITE
Primo fra tutti: scrivere codice decente, con un cervello collegato e senza inutile spreco di risorse. Può sembrare ovvio e banale, ma non lo è. Sprecare risorse equivale a peggiorare le risorse disponibili del server, facendo giungere prima alla soglia massima di giocatori ospitabili.
Sprecare banda significa esaurirla prima, ogni singolo dato che viene trasmesso va accuratamente selezionato. Se io mando un byte in più per ogni utente, quando ne ho 20000 significa inviare quasi 20KB in più per ogni frame.
Sprecare cicli di CPU è come darsi la zappa sui piedi: le operazioni che si eseguono devono essere ridotte al minimo indispensabile, aggiungere una sola chiamata a funzione in più per utente può significare aggiungere N cicli di CPU, che per 20000 utenti saranno N x 20000 cicli di CPU aggiuntivi.
Sprecare memoria (quindi allocare risorse inutili) è deleterio: l'allocazione richiede sia vari cicli di CPU, sia memoria. E la memoria finisce.
In ambienti managed, inoltre, lasciare risorse allocate provoca Garbage Collection, che può significare spendere enormi tempi di CPU per liberare risorse, anziché servire i giocatori e simulare il mondo.
In definitiva, sprecare risorse nel vostro codice farà sì che spenderete più soldi per server migliori e li spenderete più frequentemente per migliorarli al crescere dell'utenza, al fine di mantenere performance accettabili.

FIX YOUR SIMULATION
Come saprete, la simulazione di un mondo virtuale può essere eseguita un tot di volte al secondo dal server. Questo significa che ogni secondo, tutte le entità e i sistemi presenti nel mondo vengono "simulati" un tot di volte. La simulazione può comprendere routine di AI, aggiornamenti di posizioni/rotazioni, etc. Permette di dare una "vita propria" al mondo virtuale.
Il numero di volte che la simulazione viene eseguita è detto FPS, ovvero Frames Per Second. Va da sè che se la simulazione è pesante e richiede tempo, il nostro hardware tenderà a simulare il mondo meno volte in un secondo. Questo può portare ad un degrado della simulazione.
Ma riflettiamo: per ogni gioco è necessario un gran numero di simulazioni al secondo da parte del server? Dobbiamo per forza sforzare l'hardware in questa maniera? Non si può, invece, migliorare la cosa?
Sì. Per gran parte dei giochi con pochi giocatori nella stessa mappa e una velocità di gioco elevata (vedi gli FPS, con un alto numero di comandi) sono sufficienti 60FPS (o meno, dipende dal tipo di gioco ovviamente).
Per un MMOG possono bastarne anche meno, a seconda del genere.
Non c'è necessità di simulare il mondo quante più volte al secondo possibile, dato che la simulazione cambierebbe in modo minimo sprecando più risorse del necessario.
In Heroes of Asgard, ad esempio, il mondo è simulato 20 volte al secondo per ora.

DO WE NEED TO KNOW ABOUT THE ENTIRE WORLD?
Abbiamo detto che in un MMOG si deve interagire con gli altri giocatori e con l'ambiente circostante e devo avere la possibilità di farlo con chiunque si trovi nel mondo in quel momento. Giustissimo, certo.
Ma dal punto di vista di un giocatore è davvero necessario sapere cosa sta facendo un giocatore dall'altro lato della mappa? No, non sempre. Anzi, nella maggioranza dei casi ad un giocatore non interessa minimamente sapere se un altro giocatore, ad esempio, sta camminando o meno in un'altra area distante. Inviare, quindi, informazioni non rilevanti e che non possono essere mostrate sullo schermo dell'utente equivale ad uno spreco di risorse.
Questa osservazione è importante, ci permette di attuare un'ottimizzazione di un certo spessore.
Come posso fare ad informare un determinato giocatore solo sulle entità che possono interessargli?
Perché non suddividere la mappa (o le mappe) in zone? La suddivisione più facile è quella a griglia: dividere la mappa in N x M zone, dove N ed M sono maggiori o uguali ad 1. Questa tecnica è anche nota come space partitioning o zone partitioning.
In questo modo, un giocatore potrà ricevere informazioni solo sulle entità contenute nella sua zona, senza dover per forza avere conoscenza di entità lontane. Se nella mia mappa sono uniformemente distribuite 8000 entità ed è divisa in una griglia 4 x 4, il giocatore che si trova nella zona [1, 1] avrà l'onere di ricevere informazioni solo su 500 entità. Un bel vantaggio, no?
Ma riflettiamo: se il giocatore si trova sul bordo di una zona, non vedrà i giocatori nella zona vicina, nonostante essi debbano essere visibili.
Possiamo dunque capire che il giocatore dovrà essere informato sulle entità contenute nella sua zona e in quelle immediatamente contigue.
La dimensione delle zone permette di ottimizzare molto questo metodo, quindi a seconda delle dimensioni di una mappa può variare la dimensione della griglia, al fine di ottenere l'effetto migliore. Addirittura, può variare la forma delle zone, per adattarsi meglio alla composizione della mappa.

LOOK FAR AS THE EYE CAN SEE
Come detto, la divisione in zone offre già un discreto livello di ottimizzazione permettendoci di inviare informazioni su di una entità solo ai giocatori che realmente possono trarne beneficio.
Ma poniamoci una domanda: all'interno delle zone di interesse (che ricordiamo comprendono anche quelle contigue, quindi in una normale griglia saranno 9 zone nel peggiore dei casi) possiamo individuare informazioni inutili? Certo che sì.
Molto probabilmente ad un giocatore non interesseranno comunque le entità più distanti del suo raggio d'azione, ma di più non interesseranno le entità al di fuori del suo raggio visivo.
Se io non posso vedere un'entità, non mi interessa tracciare cosa sta facendo, nonostante possa trovarsi nella mia zona di interesse. Quindi l'invio di informazioni su quell'entità è uno spreco di risorse.
Come si può determinare quindi cosa effettivamente interessa ad uno specifico giocatore? Il modo più semplice è quello di tracciare, appunto, il raggio visivo. Tutto ciò all'interno di quel raggio è ciò che interessa allo specifico giocatore, le entità al di fuori sono non necessari alla simulazione del mondo per quello specifico giocatore.
E dal momento che abbiamo già una divisione in zone, possiamo semplicemente iterare sulle entità nella zona di interesse (invece che su tutte le entità nella mappa) per stabilire chi è dentro il nostro raggio visivo. Questa concetto è anche chiamato area of interest o AoI.
Quindi, riprendendo l'esempio di prima, itereremo su 500 entità invece di 8000, per estrapolarne quegli ipotetici 25 che rientrano nel raggio visivo e scambiare informazioni attraverso la rete solo con loro.
Da 8000 a 25, un bel risultato. E il tutto senza che l'utente risenta delle mancate informazioni, dato che non le vede. Anzi, potrà notare un minore utilizzo di risorse.
Si può ulteriormente migliorare l'area of interest, applicando vari accorgimenti:
  • organizzare vari livelli di raggi visivi; le entità più distanti riceveranno aggiornamenti meno frequentemente
  • filtrare ulteriormente le entità interessanti a seconda della morfologia della mappa; se una entità è nel nostro raggio visivo, ma dietro ad una montagna, posso eventualmente ignorarla. Quest'ultimo accorgimento, però, a mio avviso ha senso soltanto se già utilizzate il culling per altre cose, in modo da non introdurre ulteriori calcoli solo per filtrare poche altre entità

DISTRIBUTE YOUR COMPUTATION LOAD
Abbiamo già detto che una singola macchina avrà comunque una certa soglia oltre la quale, nonostante tutte le ottimizzazioni fatte, si avvertirà un degrado delle prestazioni (e quindi una cattiva esperienza di gioco).
Bene, ma quindi perché non sfruttare più calcolatori contemporaneamente?
Ci sono ovviamente diversi modi per farlo.
Ad esempio, in Heroes of Asgard ogni mappa che compone il mondo è ospitata su un processo a parte. Questo fa sì che ogni mappa può essere ospitata su una macchina fisica diversa.
Ovviamente, però, si può scendere ancor più di livello e ospitare insiemi di zone su processi separati (in modo che una singola mappa possa essere divisa in più parti e ospitata da diversi server).
Si possono, inoltre, raggruppare servizi globali (come la chat) su processi differenti e/o server differenti, in modo da dare l'impressione che, anche essendo collegati a mappe diverse (quindi server diversi), si possa interagire con giocatori distanti. Inoltre, scindere questo tipo di servizi dal mondo principale fa ottenere un ulteriore guadagno in termini di prestazioni.
 
Veramente un ottimo progetto.
Come già detto nei post precedenti, anche dal mio punto di vista la parte grafica dalla GUI e del PG, va rivista, è un po troppo statica e povera, per una possibile versione finale del gioco, lascerei un po' da parte la staticità di metin, rendendola più vostra e magari più inerente alla storia che il gioco vuole trasmettere.
Anche i movimenti del PG e dei mob renderli meno robotici( come detto da Rayper).
La grafica delle mappe da quanto si può vedere dal video, direi che sono praticamente perfette e curate nei dettagli.
Una cosa non mi è molto chiaro, il gioco sarà strutturato secondo una storia con delle quest che permettono di accedere a nuove mappe e altro? oppure le quest non incidono in maniera particolare nel gioco e sono un contorno?
Ovviamente andando avanti con il progetto lo seguirò da vicino cercando nel possibile dall'alto della mia ignoranza in materia, di consigliare migliorie, e magari perché no di contribuire economicamente.
Concludo dicendo che è davvero un bel progetto, una sorte di nuovo Metin2, che ben o male ha segnato la vita di 3/4 delle persone di questo forum xD.
Complimenti davvero e in bocca al lupo.
So che Man non ci deluderà, non lo faceva con gli item e novità sui p-server e non lo farà qui :D

ps. la grafica delle skill e cose più complesse è già presente? giusto per avere un'idea. ;D
 
Nuovi aggiornamenti sulla mappa di Talos. Procedono i lavori su di essa, abbiamo inserito delle luci per testare l'ambiente notturno.

rqEdMm8.jpg

VsU0aYB.jpg

zkEUx36.jpg

IV9DIcp.jpg

OKNJZ8i.jpg

XtlnPzc.jpg


Per il momento l'ambiente è abbastanza scuro: probabilmente alzeremo un po' le luci, ma non troppo.
La notte, molto probabilmente, verrà effettivamente coordinata con il server time: quindi se si gioca di notte, sarà notte anche nel gioco.
Vorremmo mantenere un ambiente notturno che rappresenti pericolo e incertezza, instillando nel giocatore timore di lasciare i centri delle città, protetti dai giocatori addetti.
Questo per due motivi:
- di notte ci saranno creature differenti (con drop differenti)
- vorrei creare una comunità player driven, cioè nel caso ideale si vedrebbero agglomerati di giocatori riuniti per una unica causa. Un esempio? Magari di notte non sarebbe sicuro uscire dai centri abitati perché i giocatori della fazione dei banditi (giocatori che di giorno sono ricercati dalla fazione della guardia cittadina, ad esempio) perlustrano i sentieri fuori città di notte e potrebbero depredarti!

Questa ora è soltanto l'idea (la comunità player driven), ma mi divertirebbe sia creare questo sistema, sia giocare in un ambiente tanto dinamico. Questo è il motivo per il quale vorrei poterlo offrire ai giocatori!
 
Sinceramente non sono molto convinto su questo punto, in pratica facendo ciò "costringerete" le persone a giocare di notte per completare degli obbiettivi. Magari si potrebbe inserire una mappa (per esempio una grotta) dove poter trovare le creature notturne anche di giorno, e di conseguenza giocare di notte sarà solo un "mezzo" per trovare le creature notturne più facilmente.
Bella l'idea della notte con creature differenti, ma come già detto da Thunder così si constringono i player a giocare durante la notte, e bisognerebbe ovviare a una situazione del genere. (Ad esempio le quest si completano con il drop di questi mob, che si possono comprare dai player che giocano la notte, l'economia gira e non bisogna stare svegli alle 3 di notte :asd:)
In più l'idea del Player-Driven è una cosa che mi affascina molto, e che ho ancora visto in alcun gioco MMORPG, sperò che vada avanti quest'idea e questo progetto :)
Sì, indubbiamente quello che dite è giusto.
Sicuramente, però, se Tizio non può giocare di notte succederà anche che Caio non può giocare di giorno. E' una situazione che si bilancia. E che porta indubbiamente a sfumature interessanti, come:
- il commercio si espande
- la componente RPG diventa più marcata; i giocatori che giocano di notte sono caratterizzati in modo differente da quelli che giocano di giorno. Ad esempio, chi gioca di notte riuscirà a sintetizzare/craftare equipaggiamento più "dark" mentre chi gioca di giorno più "light". E ancora una volta, il commercio si espande.
- chi gioca sempre di giorno avrà un'esperienza del tutto nuova quando si troverà a giocare di notte e viceversa
- si può pensare ad un sistema di profiling dei comportamenti dell'utente per proporre quest specifiche per la notte o per il giorno

Il player-driven affascina anche me, ci sarebbero belle cosette che ho in mente al riguardo. :)
 
Mi prendo la briga di commentare questa cosa.
A parer mio (e ripeto mio) i giocatori che giocherebbero la notte sono davvero pochi (parlando di Italiani). Poi vabbé, i stranieri con il fuso orario allora lì è più probabile che giocano nelle nostre ore "notturne".
Non credo ci siano problemi su questo fronte: ogni timezone avrà il suo server dedicato. Quindi si può prevedere un qualcosa tipo:
- West Europe
- East Europe
- West Asia
- Middle Asia
- East and South Asia
- America
Ovviamente ho tirato giù una lista veloce, posso suddividere meglio i timezone.

Credo che ci starebbe bene un sistema ad ora, magari ogni 2-4 ore si alterna giorno-notte, almeno per dare a tutti la possibilità di ottenere quel tipo di equip di cui parlate voi (che detti così mi piacciono da morire) ma nemmeno la possibilità di completarli facilmente, proprio perché si ha qualche ora, poi alterna il giorno/notte.
Almeno così si incita i Player a giocare anche di più.
Sinceramente, a me affascinava la sincronizzazione dell'ora con quella reale: d'altronde è un RPG, mi piacerebbe che ci fosse una componente di immedesimazione abbastanza consistente. Chi gioca di notte, quindi, ha questa caratterizzazione esplicita che chi gioca di giorno non ha e viceversa.
Con notte, comunque, intendo il crepuscolo: quando farà buio sarà notte. Quindi non significa dalle 00.00 alle 04.00, ma anche dalle 19.00 alle 05.00 per esempio. :p

Oltretutto, un sistema così favorirebbe molto il commercio e la specializzazione dei giocatori. Una cosa che a parer mio è il cuore pulsante di un buon mondo online!
 
Come promesso, ecco uno degli update per i personaggi!

Il personaggio in questione è il Sura (molti di voi lo conosceranno proprio dall'esperienza in Metin2, ma per chi non sapesse cos'è: http://it.wikipedia.org/wiki/Asura), una entità a metà strada tra l'uomo e il demonio, capace di sviluppare la sua forza attraverso le arti oscure e il male. Il suo corpo viene via via corroso e corrotto dal male che lui stesso utilizza come suo punto di forza.
Ecco uno screenshot:
g2M8DXU.jpg


Commentate e fatemi sapere le vostre opinioni!

Saluti!
 
Certo, ogni update che fate è sempre utile per il pubblico.Dimostrate che lavorate e non ci grattate i *******i come fa il tipo del mio avatar :\
Riporto solo i macro-update server side, quelli più piccoli o i bugfix non li riporto, sarebbe noioso. Inoltre, riporto gli update a partire dalla scorsa settimana, se volessi mettermi a riprendere le cose che ho già fatto in precedenza perderei la giornata:
  • Persistance manager aggiunto, la posizione dei giocatori ora è salvata ad intervalli regolari configurabili, con un sistema che ritrova sempre l'ultima posizione valida
  • Riscritto il wrapper del database, non mi piaceva come l'avevo fatto prima: ora mi garba di più
  • Varie modifiche e aggiunte sul gestore di equipment e di items, aggiunte anche funzionalità CRUD per il loro salvataggio
Ora sto lavorando allo spawn dei mostri nelle mappe, quindi:
  • la mappa viene caricata
  • in essa vengono caricati gli spawn group, comodamente configurabili (farò anche un tool per crearli direttamente passeggiando per la mappa)
  • viene instanziato lo spawner della mappa, che si occupa di controllare lo stato dello spawn group e di spawnarli effettivamente
Ora arriva la parte di comunicazione con i client e il debug per vedere se tutto è apposto. Poi si passa finalmente agli attacchi per il PvE :)
Per la questione del sura, su metin ha tutto il braccio corrotto, non solo l'avambraccio; Per questo mi era venuto il dubbo
Mah, da quel che ricordo io, il sura in Metin2 ha metà braccio corrotto: http://wiki.metin2.sg/images/4/40/Suras.png
Ad ogni modo, è semplicemente una leggenda: meglio reinterpretarla per farla calzare bene nel gioco, anche se non rappresenta esattamente la classe di Metin2. D'altronde, non è un Metin3, ma un gioco totalmente nuovo.
 
  • Mi piace
Reazioni: Versus_ e .xSingh.
Ho varie domande da porti:
1) Saranno presenti istance, raid tipo guild wars e world of warcraft
2) Avete una qualche azienda che vi supporta o vi supporterà nell'acquisto di server per mantenere un livello di gioco che non crei lag
3) Vi siete posti una ipotetica data di apertura di una beta del mmo
4) Quando l'mmorpg sarà "concluso" e perciò il gioco sarà aperto al pubblico avete intenzione di far pagare un canone, far acquistare una key/gioco per giocarci o sarà Free to play con uno shop moderato?
1) Sì, avevo intenzione di introdurli. Prima, però, mi interessava conoscere il parere dell'utenza, al fine di capire cosa piace, cosa non piace, cosa piacerebbe vedere di nuovo. Quindi, rigiro la domanda: cosa è un raid per voi? Cosa vi piace di esso? Cosa, invece, andrebbe eliminato? Vi piacerebbe vedere qualche concetto nuovo in esso?
2) Crimson Games è una normalissima azienda, che sta investendo nella realizzazione di questo progetto. Lanceremo comunque anche un'altra campagna quando lo sviluppo sarà più avanzato.
3) Ci sono diverse deadline qui nel team per quanto riguarda i vari obiettivi, speriamo di aprire una prima beta al pubblico verso la fine di questo anno.
4) Questo lo deciderà l'amministrazione, ma posso dirti che già ne abbiamo discusso con il PM e il CEO e sarà un F2P.

Spero di aver risposto esaustivamente alle tue domande! Sentiti libero di farne altre!

Saluti,
Emanuele
 
Ultima modifica:
UPDATE!
Client side:
  • Aggiunti e migliorati effetti alle meteore
    • L'heat distortion è ora più pronunciata
    • Le Meteore seguono una traiettoria obliqua alla caduta
    • Migliorato il decals projector e aggiunti nuovi decal per ottenere un miglior effetto "terreno spaccato e corrotto"
    • Aggiunto un effetto "aura" della Meteora, che influenza la vegetazione intorno agitando erba e piante (in forse, non sappiamo se mantenerlo)
  • Modifiche alla mappa di Talos
    • Erba e fiori completamente sostituiti con altri tipi, più realistici
    • Aggiunti dettagli e modelli 3D
    • Modificata leggermente la morfologia
  • Aggiunto shader per lo spostamento dell'erba al passaggio del personaggio
Server side:
  • Sistemato il behaviour delle Meteore
  • Sistemata la morte del giocatore
  • Varie

Insomma, si lavora per produrre la versione 0.0.5 quanto più completa e stabile possibile. :)
 
@ManHunter Proprio ieri stavo pensando, ma notize su Heroes of Asgard? Ed ecco qui le notizie.
Bellissime novità devo dire, ciò fa intendere che il progetto continua anche se non ci sono novità, in oltre sapere che si pensa ad avere il meglio per il player come la tua soluzione per il Networking fa davvero vedere l'emozione e l'entusiasmo con cui lavorate.

Riguardo al sistema delle stagioni devo dire che è una cosa davvero bella, ciò come hai detto tu porterebbe il player a fare scelte più intelligenti e quindi trasformando l'MMORPG anche in un gioco strategico nel quale ad ogni azione corrisponde una reazione (Possiamo dire uguale e contraria?)
Riguardo ai depotenziamenti & potenziamenti in base alle stagioni è una cosa molto bella, ma che secondo me porterà molto a discutere, pensate che i player del "Popolo del Nord" saranno svantaggiati nelle battaglie, allora per 3 mesi saranno costretti a giocare in modo più difensivo e a subire attacchi, limitando anche la loro possibilità di PVP/Bossing, quindi sarebbe una cosa da studiare attentamente per trarne i pro e i contro in modo bilanciato a mio parere.

In ogni casso, OTTIMO LAVORO! Continuate così!
 
Idea:
Ogni personaggio può utilizzare tutte le armi del gioco (senza distinzione di classe/razza) ma, con l'arma che rappresenta la sua razza ha un bonus sul danno/con le altre armi ha un malus sul danno.
Questo per permettere gruppi raid più elastici in quanto se sono tutti berserk nel gruppo, qualcuno può farsi "momentaneamente" tank, assassino, mago etc etc.

Se l'idea piace sarebbe carino un sistema di skill per ogni arma e per ogni razza, so che è lungo ma perchè un guerriero non potrebbe equipaggiare un arco? :asd:

Fammi sapere che ne pensi @ManHunter
Molto Final Fantasy XIV. E devo ammettere che non mi piace molto come idea! Ho visto spesso la mia ragazza giocarci e non mi entusiasmava il fatto che tutti potessero diventare qualsiasi classe.

Nell'ultimo mese si sono uniti allo staff un nuovo animatore e un nuovo environment artist.
I nuovi ragazzi lavorano davvero bene e a pieno regime.
Abbiamo un update carino da mostrare, ma lo stiamo rifinendo con le ultime patch, quindi lo vedrete a giorni.

Intanto vi lascio qualcosina, giusto per stuzzicarvi l'appetito!

Le texture della Sura sono state cambiate, ora ha un aspetto un tantino più demoniaco. Sono state realizzate anche delle animazioni per combo, skills e movimento.

Pagina Facebook: https://www.facebook.com/groups/1498002640507387/

Potete trovare qualche preview in questo gruppo, compresa una delle tante animazioni fatte dal nuovo 3D animator!

A presto,
Emanuele - Crimson Games Development Department
 
Ultima modifica:
Salve, un po' di update tecnici quest'oggi!
Prosegue ovviamente il lavoro su mappe, personaggi e animazioni (ormai i nuovi ragazzi hanno ingranato a dovere!), ma in questo post parlerò un po' di nuove introduzioni sul fronte server side (ovvero il mio campo).

Introduzione delle azioni
Ad ogni entità che rappresenta un personaggio (giocabile o no) è stato assegnato un gestore di azioni. Le azioni influenzano cosa il giocatore sta facendo, per quanto tempo, quali animazioni si attiveranno e quale risultato ci sarà alla fine.
Il tutto viene sincronizzato con il client, che mostra al giocatore (e ai giocatori circostanti) l'inizio dell'azione, il prosieguo di essa e la sua fine.

Introduzione degli status
Ad ogni entità che rappresenta un personaggio (giocabile o no) è stato assegnato un gestore di status. Uno status indica lo stato di quel personaggio, per quanto tempo dura e gli effetti di esso. In combinazione con le azioni, si aprono scenari interessanti.

Fishing
Abbiamo introdotto il fishing, cioè l'azione del pescare. E' stato realizzato grazie alla combinazione di una azione e uno status. Viene attivato da una skill e permette di lanciare la canna da pesca, attendere un tempo casuale in un range e sperare in un drop fruttuoso.

Mining
Abbiamo introdotto il mining, cioè l'azione dell'estrazione di minerale dai giacimenti che si trovano in giro per la mappa. E' stato realizzato grazie alla combinazione di una azione e uno status. Viene attivato da una skill e permette di iniziare l'estrazione del minerale, attendere un tempo casuale in un range e sperare in una estrazione positiva. Si otterranno minerali e materiali preziosi.

Wallet
Il Wallet è sostanzialmente il portafogli di un personaggio giocante. Contiene tutte le valute che egli è riuscito a conquistare e ne permette la gestione.
Sì, ho detto "tutte le valute".
Questo perché ogni impero che troverete nel gioco avrà una sua valuta principale e nei suoi territori (tutte le varie mappe che compongono l'impero) il loot conterrà maggiormente quella valuta.
Esistono anche i territori neutrali, che mettono a disposizione valuta neutrale.
Mi piacerebbe avere idee su come vi piacerebbe vedere sfruttate queste valute! Rispondete in tanti!

E' stato anche fixato il sistema di qualità degli oggetti equipaggiati, ora viene calcolato correttamente (per chi non lo sapesse, uno stesso oggetto può avere differenti qualità che moltiplicano la sua potenza).

Vari fix e refactoring inclusi in questa nuova build, ma sono tanti e molto specifici e non penso che a qualcuno possano interessare!

E, ovviamente, un video che ho dimenticato di postare! :D


Saluti,
Emanuele - Crimson Games Development Department
 
Eccezionale progetto! bellissimo, innovativo, ben fatto, curato! sarebbe bello espanderlo, cioè: molti giocatori ricercano la personalizzazione, magari invece di creare il pg e scegliere la razza, si potrebbe aggiungere un piccolo menù dove scegli capelli, barba, occhi, ecc ecc. Gli effetti atmosferici sono una gran cosa, la pioggia ad esempio sarebbe molto bella, implementare un sistema ''rifiugio'' dove puoi crearti una casa e personalizzarla come ti pare. Ergo: tutti i game hanno almeno UNA cosa bella, il mio suggerimento e di fare un gruppo di tutto ciò e implementarlo qui, per farne un completo di tutto =)
 
  • Mi piace
Reazioni: Kory e ManHunter
Ultima modifica:
Progetto magnifico, io e molti miei amici siamo molto entusiasti e fiduciosi, cercheremo di sostenerlo nel massimo delle nostre possibilità.

Per quanto riguarda le idee, stavo pensando, visto che è praticamente un seguito spirituale di Metin2, che ne direste di trovare anche qui un modo di creare delle specie di rocce Metin? Ho sentito di cosa tratta la storia, dell'underworld soprattutto, visto che è un mondo in una dimensione sottostante alla nostra, che ne direste di far uscire da sotto terra casualmente per la mappa delle mani, dei pugni di dimensioni più o meno dei metin? Come se fossero le creature dell'underworld a voler sfondare le barriere ma non fanno che tramandare l'energia al mondo superiore, riflettendola sul terreno fisico? @ManHunter
Roba del genere
13444405_10205000469206566_1174292980_n.png
[/spolier]


Poi ho pensato ad una modalità di ''fin di vita'', durante una qualsiasi battaglia, prendiamo un duello pvp come esempio, il giocatore che perde tutta la vita si accascia a terra e può muoversi a gattoni in fin di vita per una decina di secondi prima di morire, il giocatore che gli ha tolto gli HP può decidere se giustiziarlo definitivamente o rianimarlo, a seconda della scelta poi può ottenere un riconoscimento, non so tipo qualche punto karma.

Potrebbe anche succedere in un affronto fra due giocatori di regni diversi. Penso che mostrare pietà sia di diritto in un gioco di ruolo, cosicchè il giocatore possa immedesimarsi al meglio. Ovviamente ci sarebbe il rischio che il giocatore nemico (nel caso sia di regno straniero) riattacchi, per evitare questo potreste far sì che nel caso sia rianimato da un regno nemico, non abbia le forze per attaccare, magari creando un'apposita animazione di sfinimento, o riducendo il suo danno quasi a zero, dando tempo al giocatore che ne ha avuto pietà di allontanarsi pacificamente.
 
Ultima modifica:
Ti sei perso questo: http://crimson-games.com/devlog/meteors-fall/
Dai un occhio e fammi sapere! :)


Cosa comporterebbe, invece, il giustiziare un avversario? Cosa accade al giustiziato?
Bisognerebbe dare uno spessore più ampio a questa azione: fammi sapere, magari esce una buona idea!
Magari a sbloccare un determinato tipo di oggetto piuttosto che un altro, oppure, per esempio, poter accedere alla via bianca piuttosto che a quella nera e viceversa.
Ad esempio su Infamous, in base al karma, oltre a poter sbloccare un determinato tipo di skills, diventavi anche fisicamente "corrotto"
 
  • Mi piace
Reazioni: ManHunter e Kory
Stato
Discussione chiusa ad ulteriori risposte.