barra salute e orologio non sincronizzato

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
DarkCloud24
Newbie
Messaggi: 17
Iscritto il: 13/10/2016, 9:33
Specialità: Disegno grafica
Uso: GM:Studio 1.4 Standard
Contatta:

barra salute e orologio non sincronizzato

Messaggio da DarkCloud24 »

Salve, ho lavoricchiato anni fa a game maker , premetto che non sono bravo nella programmazione(sebbene mi sono diplomato in informatica XD ) ma sono più tipo da disegno e un pò di grafica stile photoshop e gif animate. Mi piacerebbe fare un gioco che contenga molte cose realistiche, mi potreste aiutare? ovviamente io sto già spulciando i tutorial qui. ogni tanto riesco a trovare qualcosa ma provando i tutorial spesso saltano fuori errori e certi codici non li trovo.
Lavoro per lo più col sistema drug & drop e non pretendo ovviamente di creare un gioco pieno di queste cose soltanto facendomi passare i codici sia chiaro, ma volevo chiedere una due cose che non ci sono mai riuscito e che col mio metodo è sbagliato.
Mi servirebbe:
- una guida su come creare una barra (che sia di salute o quant altro), ma penso che per quello basti creare una variabile e poi fare i dovuti eventi che mi interessano giusto?forse non avrei problemi per quello, però dal punto di vista grafico non riesco proprio a creare la barra graficamente parlando, non ci sono mai riuscito, e non saprei come farla "ridurre" quando si verificano certe condizioni;
-creare un orologio ma che non sia sincronizzato con quello del pc ma che conti magari anche i giorni della settimana (se fosse per me andrei tutto a variabili e drug e drop ma gli step e alarm so che non vanno bene per un orologio e non ho trovato dei codici con funzioni e tutto il resto, inoltre manco trovo le funzioni apposite su game maker, la mia versione è quella standard 1.4);

Vorrei fare tante cose realistiche, vorrei fare che il salvataggio sia spesso automatico e obbligatorio ogni tot di tempo così, come nella realtà, non si può tornare indietro e ormai un danno è fatto XD vorrei metterci un bel paio di barre non troppo grandi(per non essere troppo invasive) una per la salute(che diminuisce anche se il personaggio si ammala in zone fredde, per emorragia per colpa di un attacco da un mostro ecc) una per i punti magia, una per la fame, una per la sete, per la stanchezza(che diminuisce stando troppo inginocchiati nascosti dal nemico o correndo troppo a lungo, una per la paura e poi tante altre cose :first: ovviamente la grafica è tutta una cosa a cui penserei all'ultimo una volta che sarei sicuro di essere riuscito a fare tutto questo mi sembra molto impossibile, ditemi voi e anche se aveste consigli e proposte da farmi. Se qualcuna di queste cose pensate che siano difficili e mi vorreste dare un suggerimento per poi lavorarci io sono tutto orecchie!
Inoltre vorrei sapere per cortesia come fare per far sì che quando si salvi rimanga tutto come è stato lasciato,quindi orario, giorno, salute ecc rimangono memorizzati, ovviamente per gli oggetti ho già visto che ce qualche tutorial e vedrò di lavorarci ;)
Grazie mille in anticipo, siate sinceri se il progetto pare troppo grande :lol:

Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da Barnack »

Se sei diplomato in informatica non fare il pigro ed usa il codice :asd:
Per fare una cosa essenziale con le barre basta giocare nell'evento draw con i rettangoli, ad esempio

Codice: Seleziona tutto

//variables
/*
life:max_life = ?:width
dove ? è la larghezza della barra vita, salvata in tmp
*/
var tmp;
tmp = (life/max_life)*width

//background
draw_set_color(c_black)
draw_rectangle(x, y, x+width, y+height, false)
//bar
draw_set_color(c_green)
draw_rectangle(x, y, x+tmp, y+height, false)
//border
draw_set_color(c_black)
draw_rectangle(x, y, width, height, true)
Dove sostituirai:
x, y con le coordinate della barra
width, height con le dimensioni della barra
life, max_life con le variabili relative a di cosa stai facendo la barra.

Ovviamente poi ci sono mille modi per fare una cosa più bella, ma questa è la base. Puoi mettere il tutto in una cornice sprite, puoi fare uno sprite "separatore" tipo linea verticale con fading a dx ed sx, e poi chiamare "draw_sprite(separatore, -1, x+tmp, y)", aggiungere effetti particellari etcc... il tutto sta a prendere mano con le funzioni di gm.
Se anche tu sei un maniaco dell'ottimizzazione al posto di una variabile temporanea tmp, crea una variabile d'istanza "current_lifebar_width" inizialmente settata a width, e SOLO quando l'oggetto che ha la vita viene colpito (o usa la magia calando la barra magia o quel che ti pare), aggiorna la detta variabile. Così facendo eviti di ricalcolare inutilmente in ogni singolo step la larghezza della barra "verde". (soprattutto considerando che si tratta di moltiplicazioni e divisioni, e non di semplici somme)

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da Barnack »

Per i salvataggi ti dico una cosa: NON USARE ASSOLUTAMENTE le funzioni game_save e game_load!
Gm ha di default tutte le funzioni necessarie per l'utilizzo dei files .ini e per i files di testo normali. Ti consiglio di usare gli ini (c'è nel sito ufficiale una libreria più ottimizzata che riduce notevolmente i tempi di accesso). Creati tu le tue funzioni "save" e "load", e salva solo ciò che ti serve.
Per salvare ogni tot di tempo niente di più facile. Creati un oggetto (con la spunta su "persistent" se necessario), e setta un allarme (nel create, alarm[0] = 60*room_speed) e nell'evento dell'allarme fagli richiamare sé stesso (in alarm[0] scrivi "alarm[0] = 60*room_speed), e fagli chiamare la tua funzione di salvataggio. Con 60*room_speed otterrai un salvataggio ogni circa 60 secondi, ma altri potrebbero suggerirti di utilizzare delta_time, con cui personalmente non ho esperienza.

Per l'orologio invece non ho capito niente di quello che vuoi

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



DarkCloud24
Newbie
Messaggi: 17
Iscritto il: 13/10/2016, 9:33
Specialità: Disegno grafica
Uso: GM:Studio 1.4 Standard
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da DarkCloud24 »

Barnack ha scritto:Se sei diplomato in informatica non fare il pigro ed usa il codice :asd:
ho specificato che sono diplomato in informatica giusto perchè così alcuni termini li potevi usare e li avrei capiti ma non sono portato per la programmazione e non ci ho mai capito nulla :piagne: XD per quello chiedevo il codice dell'orologio, e capire dove dovessi andare a modificare per cambiare grafica della barra: proprio perchè più che a codice me la caverei a drag & drop. in sostanza mi hanno diplomato sebbene in informatica fossi una sega(punteggio della seconda prova d'esame di informatica: 8/15. voti sufficienti in informatica? due in tutta la mia carriera scolastica :baron: ). Grazie mille per tutto ! :D proverò col codice grazie, perchè con la funzione draw su gm non mi appariva nulla :O

DarkCloud24
Newbie
Messaggi: 17
Iscritto il: 13/10/2016, 9:33
Specialità: Disegno grafica
Uso: GM:Studio 1.4 Standard
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da DarkCloud24 »

NON USARE ASSOLUTAMENTE le funzioni game_save e game_load!
grazie mille per il consiglio e tutto il resto che mi hai scritto, potrei giusto sapere altrimenti a cosa andrei in contro?cioè, cosa non ha il salvataggio e caricamento standard di game maker che invece creandoli di sana pianta avrebbero?
Per l'orologio invece non ho capito niente di quello che vuoi
intendevo creare un orologio che contasse l'attuale ora di gioco e magari il giorno della settimana ecc, quindi non sincronizzato con la data e l'ora reali del pc ma una data e ora del gioco di cui il loro scorrere avvenga solo durante il gioco stesso e che questo sia memorizzato una volta salvato. Della serie che se salvo il gioco di cui l'ora del gioco stesso sia 2:00 quando poi caricherò il gioco mi segnerà ancora le 2:00 ;)

Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da Barnack »

DarkCloud24 ha scritto:
NON USARE ASSOLUTAMENTE le funzioni game_save e game_load!
grazie mille per il consiglio e tutto il resto che mi hai scritto, potrei giusto sapere altrimenti a cosa andrei in contro?cioè, cosa non ha il salvataggio e caricamento standard di game maker che invece creandoli di sana pianta avrebbero?
Beh il salvataggio di default ha due problemi:
1) Salva troppo:
Per ovvie ragioni gm non sa quali dati ti servano, quindi salva tutto ciò che può salvare, includendo informazioni superflue. Esempio stupido: hai un oggetto A che ogni step si teletrasporta alle coordinate dell'oggetto B. Perché mai dovresti voler salvare le coordinate di A?
2)Salva troppo poco:
Ci sono anche casi in cui alcune informazioni, magari proprio quelle che ti servivano, non vengono salvate. Un esempio importante sono le ds se non erro.
DarkCloud24 ha scritto:
Per l'orologio invece non ho capito niente di quello che vuoi
intendevo creare un orologio che contasse l'attuale ora di gioco e magari il giorno della settimana ecc, quindi non sincronizzato con la data e l'ora reali del pc ma una data e ora del gioco di cui il loro scorrere avvenga solo durante il gioco stesso e che questo sia memorizzato una volta salvato. Della serie che se salvo il gioco di cui l'ora del gioco stesso sia 2:00 quando poi caricherò il gioco mi segnerà ancora le 2:00 ;)
Anche qui ti consiglio di prendere mano con il sistema degli steps ed approfittare degli alarm. Ogni oggetto li ha in memoria, che tu li usi o meno, ogni step vengono decrementati quindi... tanto vale usarli no?

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



DarkCloud24
Newbie
Messaggi: 17
Iscritto il: 13/10/2016, 9:33
Specialità: Disegno grafica
Uso: GM:Studio 1.4 Standard
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da DarkCloud24 »

Ah ok grazie mille per le delucidazioni! ;) :D grazie grazie!! :D

DarkCloud24
Newbie
Messaggi: 17
Iscritto il: 13/10/2016, 9:33
Specialità: Disegno grafica
Uso: GM:Studio 1.4 Standard
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da DarkCloud24 »

Per fare una cosa essenziale con le barre basta giocare nell'evento draw con i rettangoli, ad esempio
aspetta ora mi trovo in dubbio perchè mi hai detto lavorare con draw però poi mi hai messo il codice: vuol dire che non uso il drang & drop ma il codice? comunque ho provato ad inserirlo e scambiando i vari parametri ma mi esce questo errore di cui non sono certo di capire e come risolvere "FATAL ERROR in
action number 6
of Draw Event
for object Pg:


Variable Pg.max_salute(100003, -2147483648) not set before reading it.
at gml_Object_Pg_DrawGUI_6 (line 7) - tmp = (salute/max_salute)*widht" dovrei definire le varie variabili? e se sì come?ci ho provato mi appare comunque lo stesso errore. non c'è un modo per creare una variabile e crearne la relativa barra tramite drag & drop ? Sono riuscito a disegnare un rettangolo tramite Draw ma ho difficoltà a capire come poter accorciare la barra(rettangolo) con uno degli eventi e azioni se volessi fare il tutto con drug & drop. In compenso sono riuscito a far apparire in numero il valore tramite draw var XD :manual:

Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da Barnack »

Beh senti se vuoi programmare ma non ti piace programmare non so che dirti.
I d&d sono fatti per i bambini che devono familiarizzare con la programmazione e basta, non per farci progetti completi. Anche se non ti piace programmare, avendo una laurea dovresti almeno sapere che le variabili vanno inizializzate no? Altrimenti dimmi che università hai fatto che ci vado e prendo la laurea in un mese.
L'errore l'hai letto? Perché lì c'è scritto esattamente qual è il problema. La variabile non esiste. Vai nel create e creala

Codice: Seleziona tutto

max_hp = 100
hp = 100
width = 320
O qualsiasi numero ti serva.
Ora ragiona: che significa accorciare la barra? Significa ridurne la larghezza, ovvero la distanza tra le due coordinate x. Il draw viene chiamato ad ogni step giusto? Nel codice che ti ho dato, ogni step ricalcola la larghezza della barra facendo la proporzione tra vita, vita massima e larghezza massima (e te l'ho anche scritto commentato). Tante cose con il d&d sono semplicemente impossibili.
Più di ripeterti quanto ho già scritto non posso fare.
Rinnovo l'invito a dirmi dove ti sei laureato che potrebbe interessarmi accorciare i tempi con l'università.
E si scrive DRAG

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



DarkCloud24
Newbie
Messaggi: 17
Iscritto il: 13/10/2016, 9:33
Specialità: Disegno grafica
Uso: GM:Studio 1.4 Standard
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da DarkCloud24 »

Veramente ho detto da subito che mi sono diplomato in informatica non laureato :asd: anche perchè è già un errore enorme diplomarsi su un campo che non piace(e io l ho provato) figuriamoci chi è il pazzo ad andare in una università se non gli piace il campo XD lo so che si scrive drag, ho scritto un pò di fretta senza badare ad una misera lettera sperando capissi. :roll: certo se non ho la passione per la programmazione è inutile che io lavori a codice, il problema è che game maker si è sempre ritenuto, e tutti l'hanno sempre detto, un editor semplificato per creare giochi in modo che anche chi non è esperto di programmazione sappia creare giochi 2d, in teoria dovrebbe essere l'equivalente di un cms: chi non sa programmare può creare qualcosa di decente però ovviamente cose più complesse le può fare chi è programmatore.
Sì sì delle variabili lo so, infatti mi sono messo a lavoro e sono riuscito anche con il drag&drop un bel paio di variabili che diminuissero ecc ;) in realtà ragionandoci su se usassi il drag&drop sarebbe fattibile crare una barra che diminuisca ma non sarebbe precisa tanto quanto fatto su codice, quindi vedrò come muovermi! grazie mille per i consigli e le spiegazioni

Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da Barnack »

Avevo letto male, neanche sapevo dell'esistenza del diploma in informatica O.o che scuola è? Btw se vuoi usare il d&d ai livelli che dici tu, beh allora limitati ad uno scrolling-shooter o un pacman senza troppe pretese. Quelli dei tutorial di default per capirci. Cambia gli sprites, aggiungi qualcosina ma non aspettarti niente di epico

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



DarkCloud24
Newbie
Messaggi: 17
Iscritto il: 13/10/2016, 9:33
Specialità: Disegno grafica
Uso: GM:Studio 1.4 Standard
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da DarkCloud24 »

Certo, ho fatto l'istituto industriale nell'indirizzo informatica che però poi è diventato indirizzo Informatica e Telecomunicazioni ma sull'informatica non cambia nulla. Sono rimasto una pippa nella programmazione, visto che la mia vera e più grande passione è il disegno manga XD, però mi sono messo all'opera e col drag & drop sono riuscito più o meno a creare fin ora:
-la salute(che diminuisce gradualmente quando il riposo è basso, la fame è a 0 e la sete pure, ovviamente poi diminuisce bene con danni da attacchi nemici e tanto altro);
-il riposo(diminuisce poco col passare del tempo, dovrà diminuire anche correndo per molto tempo, combattendo battaglie lunghe ecc);
-fame & sete(parametri a se stanti che diminuiscono gradualmente col tempo);
-calma(diminuirà in circostanze di ansia e quando sarà basso il personaggio inciamperà, sarà scarso nella mira);
-igiene(diminuisce gradualmente, cadendo per terra, combattendo a lungo e correndo, quando è basso si suda e si attirano di più i mostri);
-velocità(parametro non mostrato nello schermo che rappresenta l'effettiva velocità di corsa e lancio degli attacchi che diminuisce quando la salute e il riposo sono bassi e quando si è ammalati(ci si ammala se si rimarrà a lungo in zone fredde) e avvelenati);
-l'orario(completato);
-giorno della settimana(completato);
sono riuscito effettivamente a fare quasi tutte queste cose :rockrock: chissà quando incontrerò seriamente limitazioni :paura: :asd: :lol:

Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da Barnack »

La limitazione principale nelle cose semplici se continui ad usare il d&d è la leggibilità. Un conto è avere 10 righe di codice, un conto è avere 3 schermate piene di quadrati colorati
Le limitazioni meno immediate le vedrai quando inizieranno a servirti strumenti non poi così avanzati come gli array

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



DarkCloud24
Newbie
Messaggi: 17
Iscritto il: 13/10/2016, 9:33
Specialità: Disegno grafica
Uso: GM:Studio 1.4 Standard
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da DarkCloud24 »

Sinceramente, non essendo un programmatore e odiando la programmazione in se :spat: , preferisco di gran lunga avere molte di queste schermate piuttosto che un paio di righe di codice, sono consapevole che se capissi e piacesse la programmazione la vedrei diversamente ma il codice devo faticare solo per capirlo o ricordarmi una semplice istruzione :NO: , quindi riesco a capire qualcosa di più semplice e intuitivo come il drag & drop. Sì ne sono consapevole, vedrò se riuscirò a trovare qualche codice altrimenti mi creerò una scappatoia con qualche limitazione e avrò pazienza :cry:

Avatar utente
boxbuilder
Membro
Messaggi: 158
Iscritto il: 25/06/2015, 10:37
Specialità: programmatore
Uso: GM:Studio 1.4 HTML5
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da boxbuilder »

DarkCloud24 ha scritto: Sì ne sono consapevole, vedrò se riuscirò a trovare qualche codice altrimenti mi creerò una scappatoia con qualche limitazione e avrò pazienza :cry:
Ma non riesci a trovare qualche amico con cui lavorare? Tu ti occupi della grafica e lui del codice?

DarkCloud24
Newbie
Messaggi: 17
Iscritto il: 13/10/2016, 9:33
Specialità: Disegno grafica
Uso: GM:Studio 1.4 Standard
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da DarkCloud24 »

Purtroppo non ho amici che se la cavano nella programmazione e che addirittura vogliano fare un gioco, però finchè non ci va troppo di mezzo il codice non è male programmare col drag & drop, inoltre posso così fare il gioco completamente come vorrei XD lavorerò ad entrambi gli aspetti e se non lo bloccherò, se lo finirò e se uscirà qualcosa di decente un giorno ve lo linkerò :lol:

DarkCloud24
Newbie
Messaggi: 17
Iscritto il: 13/10/2016, 9:33
Specialità: Disegno grafica
Uso: GM:Studio 1.4 Standard
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da DarkCloud24 »

Avrei più che altro una domanda sugli eventi draw: in cosa consistono precisamente i predraw, postdraw, drawbegin, drawend, drawgui begin, end? :) so che il draw gui è utile per disegnare qualcosa che rimanga in quelle coordinate e non si sposti. Grazie! :D

Avatar utente
boxbuilder
Membro
Messaggi: 158
Iscritto il: 25/06/2015, 10:37
Specialità: programmatore
Uso: GM:Studio 1.4 HTML5
Contatta:

Re: barra salute e orologio non sincronizzato

Messaggio da boxbuilder »

DarkCloud24 ha scritto:Avrei più che altro una domanda sugli eventi draw: in cosa consistono precisamente i predraw, postdraw, drawbegin, drawend, drawgui begin, end? :) so che il draw gui è utile per disegnare qualcosa che rimanga in quelle coordinate e non si sposti. Grazie! :D
Ciao, così ad occhio direi che tutti questi eventi a te non servono, comunque il draw gui hai capito più o meno cos'è, pre e post sono un'ulteriore frammentazione dell'evento draw. Pre e postdraw sono riferiti al disegno di tutto lo screen buffer, cioè o di tutte le view che stai usando al momento o di tutto lo schermo se non usi view. La cosa più importante è che il pre viene lanciato prima e il post dopo, questo ti fornisce un sacco di vantaggi nel caso devi usare degli effetti, tipo nel post ci metti quelli di post porcessing come sfuocature sull'immagine o regolazioni della temperatura del colore, ecc ecc...

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 141 ospiti