Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

1

03.04.2014, 13:33

Mono in eigene Game Engine integrieren

Hi,
seit gestern habe ich mich mal etwas über Mono - auf das schon Unity3D baut - informiert.
Genau wie Unity3D sollte man doch auch selbst in der Lage sein, Mono - und somit einen C# Compiler, Virtuelle Maschine etc. - in seine eigene Game Engine zu integrieren.

Was genau würde denn gegen Mono sprechen?
Oder was wäre an z.B. Lua besser, als Script Sprache für eine Game Engine?

Hat schon mal jemand versucht das selbst in eine eigene Engine oder Spiel zu integrieren?
Und kann man Mono überhaupt kostenlos für kommerzielle Projekte verwenden?
Schließlich wird da teils die MIT, teils die LGPL verwendet.

Evrey

Treue Seele

Beiträge: 245

Beruf: Weltherrscher

  • Private Nachricht senden

2

03.04.2014, 13:42

Noch ist es zu früh für meine Engine, über die Skript-Sprache zu entscheiden, aber meine zwei Top-Renner derzeit sind LuaJIT und MRuby. Ich habe noch nie mit Mono/.NET/C# gearbeitet, aber ich kann mir gut vorstellen, dass das Zeug mit der ganzen Runtime Lib usw. recht klotzig wird. Da kommt der Vorteil von LuaJIT und MRuby auf: Beide sind winzig. Und LuaJIT ist dazu noch lächerlich schnell.
(Momentan favorisiere ich ja eher MRuby als LuaJIT, da ich den Preis der niedrigeren Performanz gern zu Gunsten einer Klassen-basierten OOP zahle.)

Man sollte dabei auch im Hinterkopf halten, dass LuaJIT und MRuby genau dafür entwickelt wurden, eingebettet zu werden.
(Auch ein guter Kandidat ist im Übrigen RubiniusX. Vielleicht sind die ja fertig, bevor der Unterbau meiner Engine es ist.)

C-/C++-Quelltext

1
2
3
4
int main(int _argc, char** _argv) noexcept {
  asm volatile("lock cmpxchg8b %eax");
  return 0;
} // ::main
(Dieses kleine Biest vermochte einst x86-Prozessoren lahm zu legen.)

=> Und er blogt unter Hackish.Codes D:

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

3

03.04.2014, 13:48

Mein Renner ist Google V8.
JavaScript ist einfach sehr verbreitet, leichtgewichtig und einfach zu lernen (man siehe mal die ganzen JS Projekte auf GitHub).

Allgemein soll dann noch Lua und Python recht einfach zu integrieren sein.
Eure Sachen da kenne ich allerdings nicht.

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

4

03.04.2014, 21:24

Ich benutze auch sehr gerne Google V8. Aber bei V8 muss man ein ganz großes ABER dran hängen. Google V8 ist ein offenes Projekt aber man merkt deutlich, dass es primär (was auch verständlich ist) für ihre eigenen Zwecke entwickelt wird.

Die API wird ohne Rücksicht auf Verluste geändert und die Dokumentation ist… dürftig, nicht mal die v8.h ist vollständig dokumentiert. Aus diesem Grund sind schon einige V8 Projekte eingegangen oder pflegen einen eigenen V8 Zweig. Auch die Dokumentation der Beispiele ist oft veraltet/nicht vorhanden und es wurden nur Änderungen am Code übernommen. Das alles macht eine Einarbeitung unnötig schwer, zum glück macht es die an sich einfache API wieder wett.

Dennoch, empfehle ich auch gern V8. Wenn man sich dran gewöhnt hat… ist es wirklich angenehm damit zu arbeiten.

Edit: Oh und an den GC muss man auch auch erst mal etwas gewöhnen.
:love: := Go;

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »H5::« (03.04.2014, 21:33)


Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

5

03.04.2014, 21:32

Zumindestens unter Windows könnte man auch das .NET Framework benutzen. Wenn man die Skripte abkapseln möchte, muss man sie dann in eine eigene AppDomain verfrachten, aber da könnte man sie sandboxen ...

Edit: Um Mono zu integrieren gibt es doch ne schöne Wikiseite: http://www.mono-project.com/Embedding_Mono
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Legend« (04.04.2014, 15:39) aus folgendem Grund: Noch einen Kommentar zur Integration von Mono hinzugefügt


LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

6

07.04.2014, 16:38

Hat denn irgend jemand etwas Erfahrung mit Mono?

Ich habe erst versucht Mono selbst zu kompilieren. Nachdem das natürlich nicht geklappt hat, habe ich in der Dev-Mailing List nachgefragt.
Die meinten das wäre "World of Pain", das selbst zu kompilieren und man solle einfach die fertigen Builds verwenden.

Jetzt habe ich das komplette, fertige Paket runtergeladen, aber egal welche Beispiel Anwendung ich starten will, die Anwendungen stürtzen einfach ab:
"XYZ funktioniert nicht mehr" kommt als einzige Fehlermeldung von Windows.
Weiß jemand welchen Systempfad man da hinzufügen muss, damit das läuft?!

Und an die, die Unity3D nutzen: ist bei Unity wirklich ein 500 MB großes Paket nur für Mono dabei?

Werbeanzeige