Ich habe eine kleine Engine in Go für OSX geschrieben (mit OpenGl für das Grafikfenster). Ich habe einige Erfahrungen mit C ++ - Spiele-Engines ( http://morganjeff.weebly.com/ ) und habe beschlossen, Go auszuprobieren, nachdem ich einige der darin enthaltenen Funktionen gelesen hatte.
Ab der Go 1.1-Version unterstützt go die meisten Funktionen, die ich zum Schreiben einer Game-Engine benötigte (wirklich ein Game-Core, wie eine Engine Editoren vorschlägt, und was nicht), einschließlich:
- Mitgliederfunktionsbindung (für das Nachrichtensystem)
- Reflection ist integriert (nützlich für die Serialisierung, Unterstützung externer Tools usw.)
- Schnittstellen (zum Implementieren von polymorphem Verhalten für Systeme, Komponenten usw.)
Einige der Vorteile von Go (für ein großes Projekt):
- Das Testen ist in die Sprache integriert (dies beinhaltet Benchmark-Tests und einige Behauptungen)
- Beispiele können leicht zur Sprache hinzugefügt werden (und sie werden zur Korrektheit kompiliert)
- Architekturspezifischer Code ist einfach hinzuzufügen (durch Dateinamenskonventionen)
- Die Profilerstellung ist in die Sprache integriert
- Integrierte Versionierung von Importen (ermöglicht das Hinzufügen großer Binärdateien zu einem separaten Repository von der Quelle, wobei die Versionierung und Aktualität beibehalten werden)
Einige Vorteile von Go im Allgemeinen:
- Einfach zu refaktorierender Code
- Go unterstützt Threading (im Gegensatz zu C ++, das es überlagert hat)
- Die superschnelle Kompilierungsgeschwindigkeit reduziert den Bedarf an Unterstützung für Skriptsprachen
- Statisches Typisierungssystem (Schnittstellen werden über Duck-Typisierung auch implizit erfüllt)
- mehrere Rückgabewerte, benannte Parameter, getaggte Strukturattribute
- Tolle integrierte Tools und Dokumentation
- verwaltete Sprache
Einige Nachteile der Verwendung von Go:
- Keine Makros oder Vorlagen
- Hat nicht die Bibliotheksunterstützung von ausgereifteren Sprachen
- verwaltete Sprache (zweimal absichtlich aufgeführt)
- KEINE IDE
Es gibt Möglichkeiten, Rohspeicher in go zu bekommen ("unsicher" importieren), und ich werde einen Artikel verlinken, der zeigt, wie ein go-Programm hinsichtlich Speicher und Geschwindigkeit profiliert werden kann. Alles in allem scheint Go's Behauptung, dass es ein modernes C ist, sehr wahr zu sein. Ich denke, es ist "intelligent" gestaltet (aus viel mehr Gründen als ich erwähnt habe) und, was noch wichtiger ist, es ist gut dokumentiert. Eine in Go entwickelte Engine wird sich ein wenig von einer in C ++ entwickelten Engine unterscheiden (etwas, an das ich mich immer noch gewöhnt habe), aber die Go-Engine löst viele Probleme, die in C ++ nicht wirklich gelöst sind (nämlich Parallelität, die Komplexität der Sprache von C ++ und der Missbrauch der Vererbung).
Hier ist der Artikel, den ich versprochen habe:
http://blog.golang.org/2011/06/profiling-go-programs.html
-Jeff