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

30.09.2014, 12:50

Wie sieht das Script System in euren Projekten aus?

38%

C# (9)

29%

AngelScript (7)

33%

Lua (8)

21%

Python (5)

8%

Ruby (2)

0%

Boo

0%

Go

13%

JavaScript (3)

25%

selbst entwickelte Sprache (6)

Hi,
ich befasse mich mal wieder mit dem Einbinden einer Script Sprache in mein C++ Projekt.
Ich habe mir in zwischen schon einige Sprachen zum Scripten angeschaut, aber noch keine so richtig in mein Projekt integriert.
Stattdessen habe ich immer nur ein paar kleine Tests geschrieben in denen ich die jeweilige Sprache mit C++ verknüpfe.

Ich hatte mir bis jetzt folgende angeschaut:

1.) AngelScript
Das sieht der C++ Syntax sehr ähnlich, aber ich habe wirklich nur einen ganz kleinen Test damit geschrieben.

2.) Lua
Wird von einer großen Reihe von Spielen genutzt [1]. Aber da gefällt mir die Syntax so gar nicht :P

3.) C# mit Mono
C# gefällt mir immer besser, und in Unity3D sieht man, dass es sich als Script Sprache hervorragend eignet.
Ich habe es nach ca. einer Woche geschafft, Mono mit einem kleinen Test zum Laufen zubringen.
Das Framework ist riesen groß; andere Script Sprachen lassen sich wohl sehr viel leichter integrieren.
Bislang habe ich mich nicht getraut, weiter damit zu arbeiten, wegen geringer Dokumentation und Umfang des Frameworks.

4.) Python
Zur Zeit versuche ich Python als Script Sprache in mein C++ Projekt zu integrieren,
weil sich Python leicht bauen lässt, das C Interface nicht so kompliziert und gut dokumentiert ist
(im Gegensatz zu Mono) und die Sprache sehr einfach gehalten ist.
Das einzige was mich an Python so richtig stört ist, dass White-Spaces Teil der Grammatik sind :dead: .
Ansonsten lässt sich mit Python aber sehr einfach und schnell scripten.

Wie sieht das bei euren Projekten aus und welche Script Sprache verwendet ihr?
Wer Unity3D verwendet wird wohl meistens auf C# zurückgreifen ^^

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »LukasBanana« (30.09.2014, 15:27)


Techie

Alter Hase

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

2

30.09.2014, 13:46

Ich habe bereits C#, Lua und Python verwendet. An angenehmsten anzuwenden war Lua.

Gruß Techie
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

3

30.09.2014, 14:07

Wenn du Mono integriert hast, müsstest du doch mit wenig Aufwand noch mehr als "nur" C# erhalten. Müssten nicht auch IronPython und IronRuby nahezu direkt ebenfalls möglich sein?
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

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

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

4

30.09.2014, 14:17

Das Ding heißt übrigens AngelScript, wie der Engel, nicht Angle wie der Winkel. Das ist aktuell meine Wahl, wenn auch eher aus historischen Gründen. Damals (tm) war Lua in unseren Experimenten sehr absturzfreudig, und AngelScript die einzige Alternative, die wir auf die Schnelle gefunden hatten und auch simpel integriert bekamen. Seitdem nie wieder darüber nachgedacht.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

5

30.09.2014, 15:37

Was etwas unschön ist, ist wenn ich jetzt mehrere Script Sprachen anbinden will und diese ganzen Wrapper Funktionen für jede Script Sprache neu schreiben muss.
In Python z.B. müssen die Wrapper Funktionen immer das selbe Interface haben:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
static PyObject* PythonWrapper_Log_Error(PyObject* self, PyObject* args)
{
    // Parse arguments
    char* input;
    if (!PyArg_ParseTuple(args, "s", &input))
        return NULL;

    // Run actual C++ function
    IO::Log::Error(input);

    Py_RETURN_NONE;
}

Das das lässt sich wohl kaum vermeiden.

Das Ding heißt übrigens AngelScript, wie der Engel, nicht Angle wie der Winkel.

Wörter wie "Angle" tippen sich als Engine Programmierer schon von ganz alleine ^^

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

30.09.2014, 15:39

Was etwas unschön ist, ist wenn ich jetzt mehrere Script Sprachen anbinden will und diese ganzen Wrapper Funktionen für jede Script Sprache neu schreiben muss.
Das das lässt sich wohl kaum vermeiden.

Dann kennst du wohl SWIG nicht! ;)

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

7

30.09.2014, 15:41


Das Ding heißt übrigens AngelScript, wie der Engel, nicht Angle wie der Winkel.

Wörter wie "Angle" tippen sich als Engine Programmierer schon von ganz alleine ^^


Ganz schlimmer Anglezismus.
Heh.
Hehe.


... nicht gut? Okay...
WIP Website: kevinheese.de

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

8

30.09.2014, 15:59

Was etwas unschön ist, ist wenn ich jetzt mehrere Script Sprachen anbinden will und diese ganzen Wrapper Funktionen für jede Script Sprache neu schreiben muss.
Das das lässt sich wohl kaum vermeiden.

Dann kennst du wohl SWIG nicht! ;)


Mit SWIG hatte ich bei einem Experiment von C++ nach Java nur mittelmäßigen Erfolg. :/

Im Moment benutze ich C++ Interop von .NET. Aber das ist keine Option für 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/

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

9

30.09.2014, 16:00

Dann kennst du wohl SWIG nicht! ;)

Nein, kannte ich noch nicht. Werde ich mir mal anschauen, danke :-)

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

10

30.09.2014, 16:28

... nicht gut? Okay...


Ich lolte. Und ja, das ist ein deutsches Verb.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Werbeanzeige