Pagina 1 di 1

Definire tipi

Inviato: 25/11/2015, 9:27
da Barnack
È possibile in gm definiretipi personalizzati che occupino n bit scelti dal programmatore?

Re: Definire tipi

Inviato: 25/11/2015, 10:38
da Cash
Non che io sappia, forse puoi imitare il concetto di struct del C creando degli oggetti che hanno solo un create event con delle variabili dentro ma di sicuro non puoi mettere quanti bit occupano

Re: Definire tipi

Inviato: 25/11/2015, 12:49
da Solid Snake
Tutti i dati in GM occupano lo stesso spazio di un double. Non puoi farci niente.

Re: Definire tipi

Inviato: 26/11/2015, 20:14
da Jak
Che uso vuoi farcene? Un caso così generico non serve praticamente a nulla e quei pochi casi non hanno senso con la relativa lentezza di game maker.
Finchè stai in un range opportuno puoi tranquillamente usare le bitmask su qualunque variabile (game maker usa SEMPRE double per i numeri) quindi puoi accedere ai bit usando quelle come faresti in qualunque altro linguaggio.
Anche se usa più memoria (che resta comunque quasi sempre un concetto trascurabile in gm per svariate ragioni) ti consiglio piuttosto di usare liste o array per gestire i tuoi dati.
Altrimenti se vuoi semplicemente packare tutto su GMStudio ci sono i buffers
http://docs.yoyogames.com/source/dadios ... index.html

Re: Definire tipi

Inviato: 01/12/2015, 23:36
da Barnack
Il punto è che essendo diventato un fan dell'ottimizzazione mi sembra un po' uno spreco creare un double per un semplice booleano, giusto per fare un esempio :fapensare:
O per, ad esempio, statistiche di un personaggio che sarebbero degli interi tra tipo 0 e 99... perché non definre un tipo che occupi meno memoria se possibile? Beh, se non si può fa neiente...
Jak ha scritto:(che resta comunque quasi sempre un concetto trascurabile in gm per svariate ragioni)
Sarei curioso di sapere quali sono queste ragioni

Re: Definire tipi

Inviato: 02/12/2015, 19:16
da Jak
Specifico prima di tutto che ho detto "in GM" nel post, non sto facendo casi generali ma game maker nello specifico.

La ragione principale sono le prestazioni, il peso di una conversione se ne fai in grande quantità aumenta notevolmente la richiesta di calcolo e quando la ram non è trascurabile molto probabilmente con la conversione lo sarà il processore. Non si fa altro che spostare il problema da una parte all'altra.
Altro motivo è l'essere un gioco nel 99% dei casi, in un gioco difficilmente hai problemi relativi alla memoria per la parte relativa al gioco stesso. Quasi sempre il peso ricade in ciò che normalmente è game maker a gestire autonomamente(grafica) ed un'eventuale risparmio è quindi completamente insensato.
Anche se parliamo di giochi alla terraria o altri che usano grosse quantità di dati l'uso eccessivo della memoria è quasi sempre un problema di fondo che si può risolvere con sistemi più semplici ed efficaci piuttosto di impacchettare i dati.
Se ad esempio hai un mondo enorme alla terraria la soluzione non è packare tutto ma streammare il terreno caricandone da file parti di esso in realtime.
I casi in cui è effettivamente meglio ovviamente ci sono ma sono una piccolissima percentuale di quelli che puoi invece evitare cambiando la gestione della cosa.