Login

Benvenuto! Accedi o registrati.
Luglio 29, 2010, 04:57:33 pm
Nome utente: Password:
Accesso con nome utente, password e durata della sessione

Dimenticato la password?

Ultimi messaggi

Siggraph 2010
By: Marco Salvi
Oggi alle 04:03:48 pm

Kongregate acquired ...
By: claudio scolastici
Luglio 28, 2010, 09:48:11 pm

Ghost of Sparta, e a...
By: Simone Cicconi
Luglio 28, 2010, 04:05:19 pm

Presentazione
By: Paolo Tajè
Luglio 28, 2010, 09:57:28 am

Realismo
By: Enrico Colombini
Luglio 28, 2010, 08:20:40 am

Sparatemi pure addos...
By: Paolo Tajè
Luglio 27, 2010, 02:05:59 pm

Re: Eurogamer.it di ...
By: Nicola Ferruzzi
Luglio 26, 2010, 02:40:35 pm

Presentazione
By: Nicola Ferruzzi
Luglio 26, 2010, 02:33:03 pm

No More Sweden
By: Enrico Colombini
Luglio 26, 2010, 11:47:46 am

Dream job ?
By: Gianmarco Leone
Luglio 20, 2010, 09:55:51 pm

CaptainRon's Modules
Forum arrow Programmazione arrow Game programming e AI arrow GUI per game/tool dev nel 2007 GUI per game/tool dev nel 2007
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: GUI per game/tool dev nel 2007  (Letto 3499 volte)
Davide Pasca
Independent, Tokyo


Karma: +75/-42
Messaggi: 1535



Mostra profilo WWW
« inserita:: Ottobre 30, 2007, 06:05:36 pm »

Risalta fuori l'ennesima questione di GUI per sviluppo d giochi.
Piu' precisamente per creare qualcosa che si integri bene e senza complicazioni con l'engine, quindi probabilmente una API con interfaccia C++ piuttosto che fare salti mortali per comunicare con C#, Python, etc.

Attualmente uso una microgui che mi sono fatto in OpenGL, ma a lungo termine non vale la pena, soprattuto se devono usarla altri programmatori.
Usare Win32 piana non mi pare il caso (anche con i dovuti wrappings), wxWidgets lo provai ma non mi fece una gran impressione. Poi c'e' Qt che costa, ma vale la pena ?

wxWidgets di suo e' usato in UE3, mentre Qt e' piu' popolare al livello professionale ma credo piu' che altro per la portabilita' che offre specie per Linux (cosa che non mi interessa particolarmente).

Fosse solo per me, so che probabilmente finirei col riscrivere la GUI, magari wrappando Win32, ma cosi' finirei per farmi un bel mazzo da solo.. ummmm
Registrato

"Mi perdono di aver parlato cosi' perche' io sono un povero ignorante" - M.Magnotta
http://kazzuya.com
http://v5.kazzuya.com
http://tokyoclubbers.com
Nicola Ferruzzi
Casa dolce casa
Administrator
*****

Karma: +26/-7
Messaggi: 1165



Mostra profilo WWW
« Risposta #1 inserita:: Ottobre 30, 2007, 06:51:36 pm »

Python + PyQt4

e vivi felice x sempre nei secoli dei secoli amen

Aggiunta:
Qt4 e' una libreria scritta in C/C++ che imho si accompagna meglio all'uso col python che col C++ stesso. La licenza e' commerciale per prodotti commerciali.
« Ultima modifica: Ottobre 30, 2007, 06:56:54 pm da Nicola Ferruzzi » Registrato

-Nicola, admin
AKA "ilwoody" Type
Davide Pasca
Independent, Tokyo


Karma: +75/-42
Messaggi: 1535



Mostra profilo WWW
« Risposta #2 inserita:: Ottobre 30, 2007, 07:32:58 pm »

Python + PyQt4

e vivi felice x sempre nei secoli dei secoli amen

Aggiunta:
Qt4 e' una libreria scritta in C/C++ che imho si accompagna meglio all'uso col python che col C++ stesso. La licenza e' commerciale per prodotti commerciali.
OK.. come funzionerebbe la cosa ? Ovvero integrare C++ con Python.
Il mio mainloop puo' rimanere C++, oppure prende piede Python ?

Python mi interessa, ho cominciato ad usarlo di recente per fare scripts casalingui e al lavoro lo usa qualche technical artist.. in quel caso pero' si tratta di interfacciarsi con Maya.
Registrato

"Mi perdono di aver parlato cosi' perche' io sono un povero ignorante" - M.Magnotta
http://kazzuya.com
http://v5.kazzuya.com
http://tokyoclubbers.com
Nicola Ferruzzi
Casa dolce casa
Administrator
*****

Karma: +26/-7
Messaggi: 1165



Mostra profilo WWW
« Risposta #3 inserita:: Ottobre 30, 2007, 09:33:13 pm »

Python + PyQt4

e vivi felice x sempre nei secoli dei secoli amen

Aggiunta:
Qt4 e' una libreria scritta in C/C++ che imho si accompagna meglio all'uso col python che col C++ stesso. La licenza e' commerciale per prodotti commerciali.
OK.. come funzionerebbe la cosa ? Ovvero integrare C++ con Python.
Il mio mainloop puo' rimanere C++, oppure prende piede Python ?


se ho capito per te le strade sono 2:

1) usi l'accoppiata python + pyqt4 , il tuo eseguibile principale e' uno script python (e se ti piacciono i .exe puoi sempre farlo diventare un exe dopo usando pyinstaller o tool simili).
Il questo caso il mainloop in C/C++ x la gui non ti servirebbe in quanto pyqt e' un binding x python alle api di Qt e lo usi direttamente. Se dopo vedi che hai bisogno di usare codice gia' scritto in C puoi anche evitare wrapper e mal di testa in quanto il modulo python ctypes ti permette di aprire una dll e invocarne qualunque metodo facendo per te il cambio dei tipi di dato.

2) Qt e C/C++ sono un'accoppiata vincente anche senza python, per cui puoi semplicemente iniziare con quella. Pero' leggiti assolutamente l'introduzione della documentazione perche' Qt ha dei tool importantissimi che agevolano a dismisura lo sviluppo e fanno del lavoro magico al posto tuo.
Tipo:
- il sistema di build che genera progetti x qualunque piattaforma/ide supportato, ovvero gli dici "dati questi file, mi crei un Makefile/una solution/un xcodeproject?" lui crea per te e sono gia' configurati per compilare e linkare con le qt. Come il cmake per dire.

- il "moc" della gui ovvero a grandiline dato un xml che descrive l'interfaccia (creato tramite un editor visuale) crea i file .h delle dialog/main window che poi semplicemente includi per usarne gli oggetti. Ci sono anche qua piu' modi x farlo tipo estendendo un oggetto vuoto o derivando dalla classe generata..ma ecco sono banalissimi li owni in 1h di prove e piu' che altro sono paradigmi moderni non cose vetuste come ascoltare i msg che passano di windows o derivare mer*a come le mfc Wink

- localizzazione e unicode, per te che stai in giappone credo sia il pane quotidiano.. cmq Qt ti offre il tool che parsa i tuoi file sorgenti e genera dei file che possono essere dati ad un traduttore e riusati nella propria applicazione.

Da python i primi 2 punti sono ancora piu' magici in quanto il sistema di build non ti serve (esegui uno script..), il "moc" non serve perche' non devi generare file .h intermedi apri direttamente i file xml (oppure altre vie di mezzo come al solito) oppure la programmi direttamente. Mentre per la localizzazione non mi ricordo se il parser che abbiamo noi ce lo siamo scritti o e' quello ufficiale per cui non mi pronuncio.

Citazione
Python mi interessa, ho cominciato ad usarlo di recente per fare scripts casalingui e al lavoro lo usa qualche technical artist.. in quel caso pero' si tratta di interfacciarsi con Maya.


bene bene gli sviluppatori python sono ricercatissimi Smile
Ti consiglio di guardare alcuni video del PyCon Italia

http://www.develer.com/website/video-pycon-2007

specialmente gli interventi di Alex Martelli
Registrato

-Nicola, admin
AKA "ilwoody" Type
Sebastiano Mandalà
Portsmouth, UK


Karma: +2/-2
Messaggi: 1222



Mostra profilo WWW
« Risposta #4 inserita:: Ottobre 31, 2007, 03:20:47 pm »

Risalta fuori l'ennesima questione di GUI per sviluppo d giochi.
Piu' precisamente per creare qualcosa che si integri bene e senza complicazioni con l'engine, quindi probabilmente una API con interfaccia C++ piuttosto che fare salti mortali per comunicare con C#, Python, etc.


Sei sicuro di quello che dici? Cioe' c# mica e' solo gui....ti accelera lo sviluppo da tutti i punti di vista....certo comunicare con l'engine in c++ e' una gran magagna...ma nessuno lo ha mai risolto fino ad ora?

Python di contro potrebbe essere un'ottima soluzione, non l'ho mai usato cosi a fondo, ma se e' facile comunicare con una DLL e fare binding beh....potrebbe valere la candela.
Registrato

Best Regards,
Sebastiano Mandalà
"La via più semplice non è sempre la più facile"
Davide Pasca
Independent, Tokyo


Karma: +75/-42
Messaggi: 1535



Mostra profilo WWW
« Risposta #5 inserita:: Ottobre 31, 2007, 07:18:15 pm »

bene bene gli sviluppatori python sono ricercatissimi :)
Ti consiglio di guardare alcuni video del PyCon Italia

http://www.develer.com/website/video-pycon-2007

specialmente gli interventi di Alex Martelli

Grazie per le info. La storia di relegare la porzione C++ ad una DLL pero' non mi convince, perche' non si tratta di avere un engine ben definito ma piuttosto di qualcosa molto in fase di costruzione.
Magari quindi Python funziona meglio se c'e' una definizione netta tra un engine con basi solide ed un editor che deve fare parecchio lavoro di suo.

Per me e' piu' una questione di aggiungere una GUI minima ad una applicazione-engine.
Alla fine ho escluso Qt perche' tutto sommato costa troppo per quello che mi serve: piu' roba di settaggio parametri che veri e proprio dialoghi complicati.

Un'altra cosa che vorrei provare e sviluppare con Cocoa e Objective C adesso che almeno a casa sto switchando a Mac 8)

Sei sicuro di quello che dici? Cioe' c# mica e' solo gui....ti accelera lo sviluppo da tutti i punti di vista....certo comunicare con l'engine in c++ e' una gran magagna...ma nessuno lo ha mai risolto fino ad ora?

Dipende dalle applicazioni. Nel mio caso ho poca logica da gestire e molta roba di performance. Cioe' piu' una tech demo che un gioco, per cui mi serve giusto una GUI e basta. Per ora ci buttiamo su wxWidgets, ma vorrei espandere i miei orizzonti con qualcosa di piu' innovativo nel futuro.. tipo Cocoa, come dissi sopra 8)
Registrato

"Mi perdono di aver parlato cosi' perche' io sono un povero ignorante" - M.Magnotta
http://kazzuya.com
http://v5.kazzuya.com
http://tokyoclubbers.com
Gaetano Campagna
Raylight s.r.l. - Napoli


Karma: +1/-4
Messaggi: 152



Mostra profilo WWW
« Risposta #6 inserita:: Novembre 01, 2007, 08:11:04 pm »

Risalta fuori l'ennesima questione di GUI per sviluppo d giochi.
Piu' precisamente per creare qualcosa che si integri bene e senza complicazioni con l'engine, quindi probabilmente una API con interfaccia C++ piuttosto che fare salti mortali per comunicare con C#, Python, etc.
In Raylight abbiamo affrontato questo problema quando abbiamo iniziato a sviluppare il nostro editor.
In prima battuta abbiamo usato QT, ma nonostante l'enorme comodità di tools, generatori di make e simpatiche amenità annesse e connesse, l'abbiamo scartato senza remore non appena verificato che crea problemi con le eccezioni. Dato che usiamo un memory manager che genera eccezioni a manetta, le due cose non erano compatibili e... beh, il memory manager per uno sviluppatore è più importante di una bella gui! Cool
Onestamente non ci si è perso molto tempo alla ricerca di workaround (che non escludo possano esserci), non appena abbiamo letto nell'help di QT che usa internamente le eccezioni per gestire i messaggi tra i suoi oggetti.
Inoltre l'editor di GUI non è poi quella gran meraviglia che appare non appena lo lanci.
Devo comunque precisare che questo mio parere personale è viziato dal fatto che sono un fan sfegatato della RAD di C++ Builder (solo della RAD, non del compilatore e soprattutto dell'editor di codice, che hanno pecche assurde).
Comunque sia una volta passati alle wxWidgets: il problema delle eccezioni è stato banalmente risolto mettendo a 0 una #define nel file .h di configurazione, gli oggetti di base per il resizing degli elementi della gui (wxSizer) erano volutamente ispirati al sistema di C++Builder (è stato amore a prima vista, lo ammetto! Laughing), ed un sacco di componenti gratuiti (tipo le wxAUI che ora sono integrate nel pacchetto base) di altissima qualità sono disponibili gratuitamente per risolvere il 99.999% dei problemi finora incontrati, anche quelli estetici. Wink
L'unico prezzo da pagare è che le eventuali RAD disponibili in rete sono più macchinose da usare rispetto a QT, ma chissenefrega dato che non le usiamo! Laughing
Creare gui via codice C++ è semplice e versatile e soprattutto ti lascia quella fantastica sensazione di avere sempre il controllo di ciò che stai facendo, oltre al bonus non trascurabile della portabilità praticamente istantanea su altre piattaforme (che però, voglio precisarlo, non abbiamo avuto modo di sperimentare).
Per il discorso settaggio parametri: hai già dato un occhio a wxPropGrid? E' il componente più usato nel nostro editor. Wink
Registrato

Gaetano DareDevil Campagna
Raylight s.r.l. - Napoli
Nicola Ferruzzi
Casa dolce casa
Administrator
*****

Karma: +26/-7
Messaggi: 1165



Mostra profilo WWW
« Risposta #7 inserita:: Novembre 02, 2007, 12:32:12 pm »

Onestamente non ci si è perso molto tempo alla ricerca di workaround (che non escludo possano esserci), non appena abbiamo letto nell'help di QT che usa internamente le eccezioni per gestire i messaggi tra i suoi oggetti.

non proprio, qt e' neutrale rispetto alle eccezioni, non le genera ne' le catcha per cui non le usa proprio. Ma come dici te, e altri prima di te, generare eccezioni e sperare di farle propagare correttamente in mezzo a codice che non le prende neppure in considerazione (e magari non e' neppure compilato per farlo come qt di default) e' sicuramente dannoso e certamente porta a crash.
Per questo Qt ti da la possibilita' di attivare l'eccezioni (non definendo #QT_NO_EXCEPTIONS) e reimplementando il metodo virtuale QApplication::notify dove andare a catchare le eccezioni che eventualmente hai tirato nei tuoi eventi.

WxWidgets e' una buona alternativa, un po' troppo limitata alla sola gui e ha il limite della non coerenza tra piu' piattaforme (cosa importante xchi ovviamente fa' prodotti che devono essere identici e comportarsi identicamente su linux mac windows e tra poco wince) X tutto il resto ho avvertito le stesse emozioni quando mollai tcl/tk x le wxwidget per poi passare tanti anni dopo a Qt, almeno con queste due il layout e' dinamico, pensa che c'e' chi crede che imporre le coordinate fisse dei widget sia il sistema di creare gui nel 2007 ... Wink

aggiunta, cmq mi sembra che wxwidgets siano messe peggio come gestione delle eccezioni Razz
http://www.wxwidgets.org/docs/faqgen.htm#exceptions

« Ultima modifica: Novembre 02, 2007, 12:38:12 pm da Nicola Ferruzzi » Registrato

-Nicola, admin
AKA "ilwoody" Type
Stefano Cristiano
Foggia


Karma: +0/-0
Messaggi: 107


Quasi laureato


Mostra profilo WWW
« Risposta #8 inserita:: Novembre 03, 2007, 12:25:20 pm »

Ogni tanto riiemergo  Cool

Cmq voglio dire la mia. Le wxWidgets "workano" fondamentalmente  Smile.
Proprio adesso ho mandato in stampa la tesi di laurea su robaccia di AR
e per fare la gui (minimale) del programma ho usato wxWidgets.

In realtà avevo fatto una prima GUI "a mano" con wxWindows per un editor di
particellari e devo dire che è decisamente una rottura...

Per questo progettino della tesi ho usato wxFormBuilder e nonostante
tutto devo dire che ha funzionato. Praticamente ti genera un .cpp che costruisce
tutta la GUI, ed hai molto piu' controllo rispetto agli XRC.
Genera anche i metodi associati agli eventi,come un vero RAD Very Happy! Subclassando
questo oggetto (ti genera lui anche il file cpp) puoi avere accesso a tutti i controlli
e ridefinire l'handling degli eventi...Se cambi qualcosa nella gui, fai rigenerare solo il Cpp
"padre", ricompili e tutto worka...
Io mi ci sono trovato stupendamente bene. Se non hai voglia di sbatterti con altri linguaggi
mi sembra una valida  alternativa. Ciò non toglie che Qt sia probabilmente più coerente
e ben strutturato e che avendo  scelta scriverei tutto in C# e windows form.

Questo è quanto.

Ciao!

Stefano
Registrato

Stefano Cristiano
Domenico Troiano
Geniaware - Italy


Karma: +8/-4
Messaggi: 200



Mostra profilo
« Risposta #9 inserita:: Novembre 05, 2007, 11:57:29 am »

Qt funzionano a meraviglia e hanno tutto, ma proprio tutto. E' un framework completo, e il famigerato MOC di cui sopra è ben più di un tool che legge un xml: è il supporto fondamentale per il paradigma di programmazione segnali/slot rende Qt tanto semplice e funzionale (a scapito delle prestazioni). Praticamente puoi collegare un qualsiasi segnale (evento) di una classe (nota, non solo oggetti grafici, ma classi, quindi anche dispositivi di I/O, memoria, timer, ecc, ecc) ad un ricettore (slot) di altre classi. Il moc (che sta per meta object compiler) non è altro che un preprocessore di codice che va a sostituire delle macro per la creazione di segnali e slot con del codice C++ normalissimo.
Ovviamente Qt funziona basandosi fortemente su concetti quali copy-on-write, reference counting, thread safeness e chi più ne ha più ne metta, con il risultato di avere un framework completo, potente, molto ben documentato e portabile (tra l'altro è a pagamento solo se usate Visual Studio sotto Windows, altrimenti no).
Non so che problemi possa avere Qt con le eccezioni, mi spiegate un po' meglio?

Non sto a dirti delle solite altre alternative come GTK, FOX, FLTK, wxWidgets, etc, etc, perchè tanto grosso modo è la stessa solfa (le wxWidgets sono un po' più complete, FLTK ha un look&feel cagoso ma è una scheggia).
Sconsiglio python e C# per lo sbattone di usare due linguaggi. Poi in C# hai anche lo sbattone di dover chiamare Pinvoke e tutte le menate per mischiare codice managed con unmanaged.

Ti consiglio invece una minuscola libreria scritta interamente in OpenGL (simile a come fa Blender), si chiama GLui:
http://www.cs.unc.edu/~rademach/glui/.
E' portabile, semplice (anche troppo), ma fa il suo porco lavoro.

My fifty cents, again

Dome
Registrato

Love & Peace
Angelo Theodorou
SpinVector - Benevento


Karma: +3/-0
Messaggi: 35



Mostra profilo WWW
« Risposta #10 inserita:: Marzo 21, 2008, 05:36:34 pm »

Python + PyQt4

e vivi felice x sempre nei secoli dei secoli amen
Mi permetto di aggiungere le mie umili considerazioni: Python + PyGTK + Glade e vivi felice ed in pace per sempre. Wink
Registrato

LinkedIn | Twitter | Vimeo
All problems in computer graphics can be solved with a matrix inversion. - James Blinn
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.4 | SMF © 2006-2007, Simple Machines LLC XHTML 1.0 valido! CSS valido!
Pagina creata in 0.146 secondi con 16 interrogazioni al database.