|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Quote:
Se poi guardi il tutorial che ho suggerito è quello di Lazy foo su SDL usato in C++. So bene che per varie necessità il mondo dell'industria videoludica usa C++, ma non è una legge e non credo esista un "linguaggio migliore" in assoluto per i videogames. Notch ha sfornato diversi quattrini con minecraft, quelli di gameforge 3D incassano tranquillamente con giochi in Python e così via, questo voleva essere il senso del mio intervento. Gli assolutismi non portano mai niente di buono. E comunque tutto è riportato nel thread di Indievault che ho linkato nel mio intervento di prima in cui è spiegato abbastanza bene come partire.
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
|
|
|
|
|
|
|
#22 | ||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Un'altra ragione che mi viene in mente è il problema della frammentanzione della RAM e la conseguente neccessità di dover gestire allocazione/deallocazione della memoria in maniera chirurgica. Nei miei ricordi mi pare lo disse fek proprio in questo forum (da qualche parte). Vista l'esperienza specifica del tizio, tenderei a fidarmi.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
||
|
|
|
|
|
#23 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Ricordi bene, era quello il motivo principale.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#24 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
E' un motivo che mi lascia perplesso perché la gestione della memoria della jvm di Sun è un grosso punto di vantaggio rispetto ai linguaggi non gestiti, non solo perchè libera da un peso superfluo il programmatore ma anche per una mera questione di forza bruta:
http://www.ibm.com/developerworks/ja...275/index.html Ed esiste una chirurgia della memoria Java che, ovviamente, funziona in modo diverso e si basa sulla combinazione di parametri del garbage collector e codice - che consiste nel far generare al codice una quantità di "spazzatura" per frame compatibile con le dimensioni della young generation. Insomma, io sulla questione "memoria" ci andrei coi piedi di piombo.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#25 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
C'è anche da dire che i problemi legati alla memoria e al garbage collector sono parzialmente risolti dalla tecnologia hardware.
Non avere la possibilità di deallocare "chirurgicamente" la memoria può portare ad occupare più ram? E quindi? Oggi si viaggia sui 4-8 GB dei pc domestici e oltre. L'altro problema è il garbage collector che entra in funzione quando la cpu è già troppo impegnata di suo. Ma anche qui i sistemi multicore alleviano enormemente il problema. Un gioco java multithreaded non vedo perchè dovrebbe soffrire pesantemente queste limitazioni. Discorso a parte va fatto per i sistemi embedded chiaramente, ma ancora per poco vista la velocità di evoluzione dell'hardware in questo settore. Il C++ dà vantaggi prestazionali e non ci piove, ma a che prezzo? E il prezzo è giustificabile? A volte si, altre volte no. |
|
|
|
|
|
#26 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Bisogna comunque considerare il fattore console: si può (o poteva) installare java sulla PS3 ma sulle XBox che io sappia non ci sono stati neanche tentativi.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#27 | |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
Per fortuna i gamer si stanno risvegliando e leggo molte critiche portate alle console. Chiramente va stretta la mancata espandibilità, ma soprattutto le politiche commerciali volte a blindare le libertà più essenziali ( come comprare e vendere giochi usati ). Spero che crollino sotto il peso della loro arroganza. |
|
|
|
|
|
|
#28 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
E il tutto implicava (mi pare) la neccessità di poter indirizzare direttamente la memoria. Qualcosa così (si lo so che sono molto vago, ma parlo di cose che non conosco, ergo
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#29 | |||||||||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
http://www.hwupgrade.it/forum/showpo...&postcount=336 Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Non penso che i programmatori di giochi "di spessore" siano così masochisti da continuare a usare il C++ quando ci sono linguaggi ben più comodi. Quote:
Quote:
Per caso riesci a farci girare codice non firmato SENZA alcuna modifica? Quote:
Le console sono un assaggio di quello che vedremo in futuro in termini di tecnologie liberamente utilizzabili per proteggere le proprietà intellettuali di chi ne detiene i diritti. Ma su questo sono anni che ne discutiamo, in questo forum e in altri posti. Quote:
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||||||||||
|
|
|
|
|
#30 | |||
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
la latenza è un fattore che incide sul limite di tempo massimo per svolgere un'operazione se l'hardware è sufficientemente potente, tale limite verrà rispettato sempre...puoi far girare il garbage collector su un core, mentre il gioco gira sugli altri e allora è come avere un gioco scritto in c++ dal punto di vista delle latenze è il motivo per cui un banale gioco 2d lo fai in java e nessuno si accorge dei limiti legati alla presenza di un garbage collector ??? io ho detto che sono piattaforme chiuse, mica aperte Quote:
di certo piattaforme castra-rusted non sono tanto tollerate dall'utenza sony ha accennato alla possibilità di bloccare i giochi usati e si è già giocata il futuro della ps4 e la faccia, oltre ai profitti e ad un bel mucchio di impiegati....ms sembra volerla seguire e probabilmente rimarrà solo wii Quote:
se vogliono difendere solo i diritti di chi i giochi li fa, devono pure essere pronti a perdere quote di mercato del resto c'è pure il diritto di un pinco pallino di vendere la copia di un videogioco regolarmente acquistato, di prestarlo ad un amico, ecc.... queste derive fasciste del proteggere tutto e a tutti i costi mi fanno solo ridere Ultima modifica di pabloski : 20-04-2012 alle 13:00. |
|||
|
|
|
|
|
#31 | |||||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Posso permettermi di affermare, invece, che la deriva attuale è quella degli scrocconi che vogliono giocare / fruire di contenuti senza pagare i legittimi proprietari? Immagino che tu propenda di più per la tutela di questi ultimi e non dei primi...
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||||||
|
|
|
|
|
#32 | ||
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
lol e alla fine è finita a una battaglia sul fatto che Java è veloce come gli altri linguaggi
![]() Da (recentemente) addetto ai lavori vi assicuro che questo NON IMPORTA A NESSUNO. Anche perchè le prestazioni pure sono un aspetto che interessa solamente di un tipo di videogiochi (AAA) che compongono una minoranza molto piccola del mercato del lavoro, oggi. La quasi totalità dei giochi indie, casual, o comunque non AAA ormai gira con una frazione delle risorse di un computer. Per fare un esempio, il gioco su cui sto lavorando ora è totalmente scritto in Lua, ed è pure complesso per essere un indie game Non a caso HTML5, Flash, Unity, e XNA usano tutti linguaggi e VM che sono più lenti che Java (C# per xbox è lentissimo). Ma il linguaggio si sceglie sulla base delle possibilità che dà il suo ecosistema, e soprattutto sulla base dei COSTI. Se Java mi fa spendere più di C#, Java è accannato. E no, il fatto che jMonkeyEngine sia gratis NON rende Java più economico. Il costo da affrontare per "trainare" uno sviluppatore su una tecnologia sconosciuta e magari non del tutto adatta al progetto è spesso maggiore dei 1500 euri che vuole Unity per la versione pro. Per cui: il garbage collector è perfettamente compatibile col gaming, e esistono tecniche tipo pooling etc che lo rendono sostenibile anche per giochi decisamente "pesanti" (sebbene a quel punto stai gestendo la memoria a mano esattamente come in C, ma quello è un'altro discorso ma la scelta di un tool o di un linguaggio è economica e poco influenzata dalle ragioni tecniche, e sicuramente non è influenzata da quanto il linguaggio è "elegante" ![]() @pabloski: per cortesia. Risponderò solo alle boiate più grandi per brevità: Quote:
![]() Inoltre dimostri di essere ignorante su come funziona il multithreading e un garbage collector in generale: mentre il GC gira, deve per forza di cose acquisire i mutex delle regioni di memoria che va a toccare, altrimenti se leggesse/cancellasse oggetti su cui sta operando un'altro thread il programma crasherebbe molto rapidamente Un pò di multithreading si può usare in un GC, ma un momento di pausa nel thread che sta "pulendo" è obbligatorio, e questo significa che un GC, per costruzione, causa lag imprevedibile. C'è poco da fare. Quote:
Ultima modifica di Tommo : 20-04-2012 alle 14:22. |
||
|
|
|
|
|
#33 | |||||
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
come ho detto più sopra, ci sono situazioni in cui è possibile farlo e altre in cui non è proprio possibile, ma sta al progettista valutare però escludere a priori linguaggi diversi dal c++ è sbagliato il punto fondamentale è che le latenze di cui parlava fek sono strettamente legate a quanto il gioco richiede in termini di potenza bruta e quanta è in grado di fornirne l'hardware man mano che il carico di lavoro verrà sempre più spostato verso le gpu, diventerà sempre meno necessario usare il c++ spesso leggo cose tipo "java non è adatto ad applicazioni real-time" o applicazioni che fanno uso intensivo della cpu...questo è parzialmente errato e ci sono vari articoli su developerworks e la stessa sun, in passato, ha cercato di spiegare come loro hanno mitigato il problema e come e cosa fare per rendere java adatto a tali scopi Quote:
così come lo sono le assurde pretese delle multinazionali del software Quote:
tu confondi diritto e giustizia, due cose che quasi mai vanno a braccetto Quote:
Quote:
non passa giorno senza dover leggere assurdità fasciste come il controllo 24 ore sue di internet, lo spionaggio delle major, le lettere estorsive di Peppermint e soci, le sempre più restrittive eula, ecc... per fortuna i giudici ancora ragionano http://punto-informatico.it/3498695/...non-reato.aspx almeno siamo sicuri di non vederci appioppare un ergastolo solo perchè abbiamo violato un'eula io sono un vero liberista, loro no |
|||||
|
|
|
|
|
#34 | |||||||||
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
Quote:
Quote:
Quote:
Quote:
da come hai risposto non mi sembra di aver detto boiate Quote:
Quote:
Quote:
prendo lo stesso gioco, lo faccio girare su hardware via via più dotato di risorse di calcolo e misuro il risultato l'hardware più dotato avrà ridotto le latenze e abbassato l'incidenza di eventi imprevedibili se così non fosse, la tua affermazione circa la possibilità di usare sistemi gc per sviluppare giochi non si reggerebbe in piedi la questione è sembra la stessa, ovvero quante risorse richiede il gioco....superata una certa soglia, diventa impossibile realizzarlo tramite sistemi di gestione automatica della memoria senza che si presentino lag randomici e problemi vari p.s. per capirci meglio Quote:
il concetto di realtime non è assoluto, ma è relativo alla capacità del sistema di calcolo di rispondere in tempi accettabili al mondo esterno....per cui un lag, per quanto imprevedibile, può essere insignificante o meno a secondo del rapporto in questione Ultima modifica di pabloski : 20-04-2012 alle 14:45. |
|||||||||
|
|
|
|
|
#35 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Non concordo con i necro-post citati. Il riassunto delle ragioni è che il gc è deterministico (non capita quando gli pare, ci si potrebbe regolare un orologio) e se ne può tenere matematicamente conto anche in presenza di un sistema estensibile - con gli opportuni interventi in codice, esattamente come occorre scrivere un certo C++ per non mandare tutto in vacca.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#36 | |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Quote:
Esistono casi in cui Java è il linguaggio più conveniente, e lì non c'è nessun problema ad usarlo. Ad esempio io lo uso per tutti i tool del mio motore, dato che sono pc-only e lo conosco già. C++ mi avrebbe obbligato a rebuildare per ogni OS (e comunque richiede uno sforzo superiore). Però, rimane che Java è una pessima scelta per fare giochi, per bazzecole come la non-portabilità totale su consoles e IOS (vedi minecraft che è stato riscritto da zero per xbox, android e iphone, con costi piuttosto importanti - fosse stato C++ sarebbe stato molto più facile) e la mancanza di tool affermati e una community di sviluppatori di un certo livello. @PGI-Bis: il GC sarà pure deterministico, ma non è sincronizzato con la logica dei thread che va a interrompere. Per cui dal "punto di vista" del thread interrotto, il blocco capita in un punto casuale della sua esecuzione, e quindi è essenzialmente casuale. C'è un modo per chiamare il GC a mano quando c'è tempo? Ultima modifica di Tommo : 20-04-2012 alle 15:25. |
|
|
|
|
|
|
#37 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Vedi, la prospettiva che adotti è quella di un linguaggio unmanaged.
Suona come un indovinello ma è giusto dire che non puoi chiamare il gc a mano sebbene tu possa stabilire a mano quando interverrà. Considera il serial collector (il JRE ha cinque diversi tipi di gc quindi il discorso non è generalizzabile) e prendiamo solo la tenured gen per semplicità. Il serial collector esegue una pulizia completa della tenured gen esattamente quando questa è piena. La dimensione della tenured gen è controllabile. Se sai quando monnezza infili in quella regione per ogni ciclo del tuo motore di gioco sei anche in grado di predire con esattezza il momento in cui il gc interviene. E' una questione di mere divisioni. Non è il garbage collector sia un programma che parte quando vuole lui, fa quello che gli pare... no: ha tempi e modi certi e misurabili e, soprattutto, che dipendono dal codice che scrivi tu. L'effetto è lo stesso della gestione manuale della memoria C++. Cambia il modo in cui lo ottieni.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#38 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Bon, non lo sapevo.
Rimane sempre il problema che idealmente in un gioco tutti i frame dovrebbero essere quanto più omogenei come sequenza di eventi che vengono eseguiti, e avere un GC che viene lanciato un frame si e 33 no non è un granchè, per quanto sia controllato. Certo, puoi accoppiare questo tipo di GC a un pooling che elimina le allocazioni a runtime, e poi puoi fare il "clean" quando il gioco cambia "stato", ovvero carica qualcosa. Però in qualche modo questo dimostra come quando si hanno determinati requisiti il GC è più un impiccio che altro, e poter gestire la memoria a mano è una gran cosa Che poi, personalmente non l'ho mai trovato difficile. Basta usare l'OOP come si deve e ricordarsi di chiamare delete |
|
|
|
|
|
#39 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Qui l'unica cosa che conta è che quando avrò finito il mio FPS coi Mech dovrò tenere i giocatori lontani a bastonate!
Ho quasi finito il modello della parte sotto del primo mech. Quando ho fatto anche gli altri novantanove passo al terreno del primo livello... ci vediamo quando ci vediamo.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:16.




















