31-07-2010, 02:22 AM
Sebbene l'Unity Engine supporti entrambi questi linguaggi con l'aggiunta di Boo(una variante del Python) ho considerato l'utilità di utilizzare un solo linguaggio per tutta la community in modo da non disperdere le forze nel tentativo di trattarne 3.
In generale la documentazione per questi 3 linguaggi è abbastanza interscambiabile essendo molto simili nell' uso con Unity3d quindi tutte le guide e tutorial saranno perfettamente fruibili anche per altri linguaggi.
La scelta è ricaduta sul C# perchè è uno dei linguaggi che considero più utili da conoscere attualmente anche al di fuori dello sviluppo Unity.
Considerazione Velocistica
Sebbene L'unity nativamente sia scritto in C/C++ il suo script è concepito sulla base di Mono (.Net Framework Multipiattaforma di Novel)nato per essere utilizzato con c#.Per aggirare l'uso del C# per permettere l'utilizzo di javascript i ragazzi di Unity hanno creato un interprete Javascript che dovrebbe e dico dovrebbe resistuire lo stesso bytecode di C#.Il dubbio e sulle mancate possibilità di ottimizzazione, sulle differenze di feature in generale dei due linguaggi ed alcune feature addirittura dannose del Javascript che minano le prestazioni(es il non esplicitare i tipi delle variabili che seppur comodo risulta estremamente lento a runtime).
Ma se gia Utilizzo Javascript per Web e Browser Games?!?
Il C# sintatticamente nn è dissimile dal javascript soprattutto nell' uso con Unity.
Chi normalmente utilizza il javascript per la componente clientside di un sito e per giochi browser converrà con me che il suo utilizzo all' interno di Unity è comunque ben diverso in quanto per applicazioni browser javascript si ha a che fare per la maggior parte con la componente DOM dei browser web la cui conosceza non aiuta nello sviluppo con Unity.
Il C# da più sbocchi in Unity grazie anche alle svariate librerie in c# gia mirate all' uso videoludico che invece latitano in javascript.
L'importanza dell' ide.
Lo sviluppo in C# può essere fatto attraverso Visual c# express che oltra ad essere gratis è uno dei tool più potenti di sviluppo.
L'intellisense del tool interno di Unity per Javascript è inefficiente a confronto della completezza e dell' efficienza dell' intellisense di Visual Studio che ci permette di scrivere di più, più velocemente e di evitare spiacevoli errori.
Il C# Xna e i videogames.
Anche grazie a Xna il C# si è diffuso in ambito videoludico comportando una crescita di tutorial sull argomento dello sviluppo videoludico e di applicazioni 3d avanzate.
Sebbene L'unity sia completamente diverso da Xna per quanto riguarda la componente Grafica, sonora e di input è abbastanza realistico affermare quanto i due sianoabbastanza interscambiabili quando si tratta di Gameplay, Ai e programmazione in generale, cosi che molte librerie scritte in C# con in mente Xna possono essere tranquillamente utilizzate anche a modifiche zero in Unity come ad esempio box2d c# per la fisica bidimensionale.
La documentazione di Unity è in Javascript.
Questa affermazione è vera, ma a livello di Engine le uniche differenze sono descrivibili nelle poche pagine che il manuale di unity dedica alle differenze tra Javascript e C#.
E' anche vero che il manuale porta esempi esplicativi in Javascript, ma essi
1)Possono essere facilmente converiti in linguaggio c# con la sola conoscenza delle differenze sopracitate.
2)Sono esempi atti a comprendere dei concetti e non troppo utili in ambito reale.Servono quindi a rafforzare i concetti espressi nel manuale con un esempio utile, ma abbastanza fine a se stesso.
I miei giochi comunicano con il server via Xml o Json
Sul lato comunicazione con il server il c# permette tutte le operazioni del Javascript se non di più.
Potrete quindi utilizzare Ajax e l'XML in generale, JSON, ma anche AMF del remoting di Adobe Flash, anche nella sua ultima incarnazione, che sicuramente batte sia XML che JSON in velocità e potenza e sicuramente in c# potrete utilizzare i potentissimi Socket Tcp e Udp.
Fonte: Unity3D.it
In generale la documentazione per questi 3 linguaggi è abbastanza interscambiabile essendo molto simili nell' uso con Unity3d quindi tutte le guide e tutorial saranno perfettamente fruibili anche per altri linguaggi.
La scelta è ricaduta sul C# perchè è uno dei linguaggi che considero più utili da conoscere attualmente anche al di fuori dello sviluppo Unity.
Considerazione Velocistica
Sebbene L'unity nativamente sia scritto in C/C++ il suo script è concepito sulla base di Mono (.Net Framework Multipiattaforma di Novel)nato per essere utilizzato con c#.Per aggirare l'uso del C# per permettere l'utilizzo di javascript i ragazzi di Unity hanno creato un interprete Javascript che dovrebbe e dico dovrebbe resistuire lo stesso bytecode di C#.Il dubbio e sulle mancate possibilità di ottimizzazione, sulle differenze di feature in generale dei due linguaggi ed alcune feature addirittura dannose del Javascript che minano le prestazioni(es il non esplicitare i tipi delle variabili che seppur comodo risulta estremamente lento a runtime).
Ma se gia Utilizzo Javascript per Web e Browser Games?!?
Il C# sintatticamente nn è dissimile dal javascript soprattutto nell' uso con Unity.
Chi normalmente utilizza il javascript per la componente clientside di un sito e per giochi browser converrà con me che il suo utilizzo all' interno di Unity è comunque ben diverso in quanto per applicazioni browser javascript si ha a che fare per la maggior parte con la componente DOM dei browser web la cui conosceza non aiuta nello sviluppo con Unity.
Il C# da più sbocchi in Unity grazie anche alle svariate librerie in c# gia mirate all' uso videoludico che invece latitano in javascript.
L'importanza dell' ide.
Lo sviluppo in C# può essere fatto attraverso Visual c# express che oltra ad essere gratis è uno dei tool più potenti di sviluppo.
L'intellisense del tool interno di Unity per Javascript è inefficiente a confronto della completezza e dell' efficienza dell' intellisense di Visual Studio che ci permette di scrivere di più, più velocemente e di evitare spiacevoli errori.
Il C# Xna e i videogames.
Anche grazie a Xna il C# si è diffuso in ambito videoludico comportando una crescita di tutorial sull argomento dello sviluppo videoludico e di applicazioni 3d avanzate.
Sebbene L'unity sia completamente diverso da Xna per quanto riguarda la componente Grafica, sonora e di input è abbastanza realistico affermare quanto i due sianoabbastanza interscambiabili quando si tratta di Gameplay, Ai e programmazione in generale, cosi che molte librerie scritte in C# con in mente Xna possono essere tranquillamente utilizzate anche a modifiche zero in Unity come ad esempio box2d c# per la fisica bidimensionale.
La documentazione di Unity è in Javascript.
Questa affermazione è vera, ma a livello di Engine le uniche differenze sono descrivibili nelle poche pagine che il manuale di unity dedica alle differenze tra Javascript e C#.
E' anche vero che il manuale porta esempi esplicativi in Javascript, ma essi
1)Possono essere facilmente converiti in linguaggio c# con la sola conoscenza delle differenze sopracitate.
2)Sono esempi atti a comprendere dei concetti e non troppo utili in ambito reale.Servono quindi a rafforzare i concetti espressi nel manuale con un esempio utile, ma abbastanza fine a se stesso.
I miei giochi comunicano con il server via Xml o Json
Sul lato comunicazione con il server il c# permette tutte le operazioni del Javascript se non di più.
Potrete quindi utilizzare Ajax e l'XML in generale, JSON, ma anche AMF del remoting di Adobe Flash, anche nella sua ultima incarnazione, che sicuramente batte sia XML che JSON in velocità e potenza e sicuramente in c# potrete utilizzare i potentissimi Socket Tcp e Udp.
Fonte: Unity3D.it