#1 Inviato 10 August 2009 - 11:13 AM
in realtà è praticamente concluso da mesi oramai...sistemo ualche piccolo errore quando e se mi capita e cerco di migliorarlo di più...
ha solo un grande difetto per me... i pg non sono animati! e poco importa per il bs (ho delle soluzioni per avere gli altri utenti proprio accanto ai propri pg durante una battle...cioè mandare anche loro in campo a combattere , gestiti sempre dal proprietario dell'account).
vi spiego brevemente, vengono inviati X ed Y (le coordinate su mappa) ogni volta che cambiano, tra le tante cosette diciamo che il movimento tutt'ora lo gestisco con Game Netplayer (modificata rispetto a Game Player).
vi posto anche il codire:
def refresh(data)
return if @netid == $net_id
@oldx = @x
@oldy = @y
eval(data) unless data == nil
@transparent = (not $game_map.map_id == @map_id) rescue @transparent =false
net_move if @oldx != @x or @oldy != @y
@real_x = @x * 256
@real_y = @y * 256
end
cioè in pratica nel refresh quando riceve i dati nuovi, calcola real x e real y che sono le coordinate reali su schermo se no nsbaglio e basta...
guardando in Game_Character ho trovato cose tipo update_move, update_animation (questo tral'altro mi cambia il chara dell'utente animandolo, ma solo se gli impedisco di spostarsi su mappa XD non so spiegarmi lo so)...
comunque so benissimo che ci sono scripter suquesto forum, lo seguo da anni (lo seguivo già da anni al tempo della versione vecchia quando si chiamava rpgshrine o come si scriveva XD) e quindi ho la certezza che ci siano scripter che sappiano come fare o che almeno abbiano un'idea...
scusate se dico tutto questo ma già tempo fa avevo chiesto questo stesso aiuto ma nessuno mi aveva risposto...
chiunque abbia un'idea o persino sa come posso fare ad animare e far camminare fluidamente il pg di un utente avendo X ed Y della destinazione, potrebbe spiegarmelo anche solo qui per post?
non ho richiesto chissàche... ho sfogliato i vari script di rpgmaker e qualcosina ho capito ma veramente poco e in ogni caso da solo senza aiuto credo che non riuscirei ad animarli lostesso....
e poi va anche a vantaggio vostro! chi ha provato la mia demo e ha giocato con altri utenti ha potuto constatare che il progetto va bene, funzionano gli script...la chat, le gilde, le battle eccetera funzionano tutti come dovrebbero...questo sarebbe uno script per un mmorpg italiano.. che rilascerò appena riusrò a eliminare altri eventuali errori e appena avrò reso animati i pg!
please help me! attendo con ansia (XD) le vostre rispostre...sopratutto di chi vorrebbe aiutarmi che almeno abbia una soluzione....
P.S.: quel pezzo di codice volendo modificatelo già se basta qualche modifica piccola....
grazie in anticipo delle vostre risposte sperando di averne questa volta
#2 Inviato 11 August 2009 - 01:45 AM
#3 Inviato 11 August 2009 - 11:48 AM
Game Contest #3
#5 Inviato 11 August 2009 - 14:33 PM
hai il punto in cui eri (coordinate precedenti), quello nuovo (coordinate aggiornate), invece di assegnare le nuove coordinate a muzzo devi avviare un evento "sposta personaggio verso coordinate X Y".
Questo ti provoca un leggero lag, ma è normale.. altrimenti come dici te scattano i pg!
Membro Segreto della
Vecchia Guardia del Making [Gif in fase di reload]
[icona di un premio]
#6 Inviato 11 August 2009 - 16:03 PM
mi è venuta un'idea però ho paura che si appesantisce troppo lo scambio di dati tra il server e i client...in pratica invece di inviare solo le coordinate nuove, ogni client invierebbe per ogni passo (formato da 16 frame se non sbaglio) ad esempio 4 coordinate differenti, cioè ogni 4 frame invia le coordinate reali e così via... facendo così ad ogni passo le stringhe inviate passano da 1 a 4 però la camminata risulterebbe più fluida e animata....
questa soluzione per me forse potrebbe funzionare però è troppo drastica... in quando quadruplica le stringhe inviate dei movimenti (che tutt'ora occupano più del 60% delle stringhe inviate in totale!) quindi se riuscirei a trovare una soluzione più "automatica" sarebbe meglio...
comunque Dax in effetti potrei renderli degli eventi gli utenti...anche se si appesantirebbe tutto XD XD XD però in alternativa può essere una soluzione ;)
#7 Inviato 11 August 2009 - 20:12 PM
avrai delle funzioni per manovrare le stringhe no? explode e simili?
Membro Segreto della
Vecchia Guardia del Making [Gif in fase di reload]
[icona di un premio]
#8 Inviato 12 August 2009 - 01:30 AM
la mia soluzione è troppo drastica in quanto per ogni passo invierebbe un numero di stringhe pari al numero di frame per ogni passo visualizzati su tutti gli altri client (usando anche solo 3 frame, il flusso di stringhe inviate e ricevuto si triplicherebbe, come già detto le azioni dei movimenti occupano più della metà delle stringhe inviate e ricevute tra server e i client...quindi sarebbe troppo drastica).
se automatizzo i passi rendendo ogni utente un evento si appesantirebbe troppo il gioco!
ci sono pro e contro quindi... la soluzione migliore e FATTIBILE sarebbe automatizzare l'animazione e i frame di ogni passo direttamente sul client (sul gioco) attraverso codice senza però rendere ogni utente un evento!
spero di riuscirci... se con gli aiuti sarebbe più veloce...per il momento accantono questo grande e importante aggiornamento (per la seconda volta lo rimando -.- vabbè XD) in attesa di scoprire il meccanismo o in attesa di aiuti....
avanzo con tutto il resto accantonando questo....
in ogni caso rendere le camminate fluide credo che con un numero elevato di utenti in una mappa potrebbe rallentare anche solo un po il gioco...
per ora se consideriamo l'ambito tecnico e funzionale del gioco sarebbe meglio lasciarli a scatti...anche perchè rimane giocabile ugualmente e non da molto fastidio...
c'è da pensare che parliamo di rpgmaker! che di default non considera nemmeno il multiplayer! figuriamoci l'online!!!! XD
#9 Inviato 12 August 2009 - 08:59 AM
ti spiego:
tu invii la seguente stringa a tutti : "p123-x1-y1-x2-y2-x3-y3-x4-y4"
quando la ricevi col client esplodi questa stringa spezzandola per ogni - .
solitamente c'è una funzione di nome explode, ma non sono sicuro non conoscendo rgss.
con explode ottieni un array di valori in cui il primo è l'id del personaggio che si muove e i succesivi dispari le X dei vari passi, i pari sono invece le y.
una sola stringa, tanti passi assieme!
Membro Segreto della
Vecchia Guardia del Making [Gif in fase di reload]
[icona di un premio]
#10 Inviato 12 August 2009 - 09:49 AM
Del tipo che ogni secondo vengono inviati i dati aggiornati delle posizioni, nel caso lo spostamento riguardi solamente 1 tile non c'è problema di animazione (in quanto la direzione sarebbe solo quella), nel caso di 2 o più tile di movimento (sempre lato client) si calcolerà la strada più breve per arrivarci, facendo partire l'animazione del movimento.
#11 Inviato 12 August 2009 - 11:24 AM
in una stringa al 90% dei casi inserisco più dati! compreso per camminare!
quando si cammina non invia solo x e y ma anche altri dati...
il problema non è delle stringhe... avevo detto che aumentavano per il fatto che ogni frame da aggiornare su tutti i client deve essere inviato quando viene visualizzato, cioè se io mando una sola stringa con i tre frame mi rimangon asincroni...
cioè la stringa viene mandata quando cambia frame... non so se riesco a spiegarmi ma non importa perchè questa soluzione la scarto sicuro...
x havana24: io per ora mando già x ed y della destinazione ma non del punto di partenza in quanto se le va a cercare già il client... a dire la verità invia solo x o y che cambia, ad esempio se cammini in alto invierà solo y XD
ma non è questo il problema...
cerco di spiegare bene la situazione:
quando il mio pg (per esempio) lo muovo, vengono inviate trammite stringhe la destinazione di ogni passo.... quindi invio x e y. (ogni passo ha una stringa, non posso raggrupparle insieme! non sarebbe istantaneo l'aggiornamento sugli altri client ).
le stringhe vengono ricevute dal server e inviate a tutti i client.
gli altri client ricevono le stringhe e creano il pg su mappa (se la mappa mia e quella del client ricevente è uguale logico, cioè se siamo sulla stessa mappa).
se il pg era già stato creato allora semplicemente aggiorna le coordinate con quelle ricevute...
il problema è che x e y non essendo quelli reali in pixel ma solo le coordinate del "quadratino della grigli della mappa", quando aggiorna fa lo scatto da un quadratino all'altro...
per renderli animati e con passi di più frame devo per forza aggiornare lo stesso movimento in più frame del gioco, facendolo avanzare di pochi pixel ad ogni frame...
spero che mi sono spiegato meglio...
#12 Inviato 12 August 2009 - 12:34 PM
Se hai la destinazione ti amnca solo di anniamre lo sprite... lo spostamento e l'animazione lo fa il client del giocatore! @@
#13 Inviato 12 August 2009 - 12:35 PM
Membro Segreto della
Vecchia Guardia del Making [Gif in fase di reload]
[icona di un premio]
#14 Inviato 12 August 2009 - 12:49 PM
potrei fare un ciclo che controlla per ogni utente se l'animazione è conclusa o no però non ho idea se sia una buona soluzione
#15 Inviato 12 August 2009 - 13:34 PM
devi avere praticamente degli eventi contemporanei non puoi fare tutto con una struttura lineare.
Membro Segreto della
Vecchia Guardia del Making [Gif in fase di reload]
[icona di un premio]
#16 Inviato 13 August 2009 - 17:45 PM
#17 Inviato 13 August 2009 - 19:25 PM
Membro Segreto della
Vecchia Guardia del Making [Gif in fase di reload]
[icona di un premio]