Seite 1 von 1

Performance eingebetteter Skriptsprachen

Verfasst: Sa Apr 27, 2013 10:49 am
von Glocke
Hallo

ich bast'le derzeit an einer primitiven Game Engine (2D isometrisches RPG) mit C++ auf Basis von SDL. Mit den Grundlagen (d.h. einem Framework um eine TiledMap zu managen, Objekt zu bewegen oder auch einem ImageManager um Grafiken zu laden und zu rendern usw.) bin ich soweit durch. Parallel habe ich auch ein auf JSON und SDL_net basiertes Netzwerkframework gebastelt. Das ganze soll zum Schluss auf einem Netbook flüssig laufen - tut es bisher auch (d.h. Rendering, Pathfinding, Kollisionserkennung usw.).

Nun überlege ich, ob ich eine Skriptsprache verwende, um Vorgänge im Spiel innerhalb der C++-Anwendung zu implementieren. Dabei ist mir zunächst Lua ins Auge gesprungen. Prinzipiell soll aber auch die Verwendung von Python möglich sein. Hat jemand Erfahrung im Einbetten von Skritpsprachen in C++-Projekte?

Prinzipiell sollte die Einbettung einer Skriptsprache die Erweiterbarkeit und Wartbarkeit der Anwendung positiv beeinflussen. Allerdings frage ich mich, wie groß der Preis dafür ist - der vermutlich durch Performance-Einbußen bezahlt wird. Was mich also effektiv interessiert ist, ob es sich für mich lohnt eine Skriptsprache in mein Projekt einzubetten - oder ob ich bei reinem C++ bleiben sollte. Hat da irgendjemand Erfahrungen mit? Ich möchte vermeiden mir die Arbeit zu machen, eine Skriptsprache einzubetten und dann zu merken, dass es "fatale" Folgen für meine Performance hat :D

LG Glocke :)

Re: Performance eingebetteter Skriptsprachen

Verfasst: Sa Apr 27, 2013 6:31 pm
von Xin
Scriptsprachen haben immer katastrophale Folgen....

Die Frage ist eher, wo brauchst Du das... oder... brauchst Du es? ^^

Re: Performance eingebetteter Skriptsprachen

Verfasst: So Apr 28, 2013 10:58 am
von Glocke
Xin hat geschrieben:Scriptsprachen haben immer katastrophale Folgen....
Das habe ich befürchtet :D
Xin hat geschrieben:Die Frage ist eher, wo brauchst Du das... oder... brauchst Du es? ^^
Ich glaube es wäre wesentlich robuster die Teile nicht in Skripte auszulagern sondern direkt in C++ zu schreiben ... :D allein wegen Typsicherheit... mal abgesehen von der Geschwindigkeit.

Da stellt sich mir die Frage: Wann nutzt man eingebettete Skripte?

LG Glocke

Re: Performance eingebetteter Skriptsprachen

Verfasst: So Apr 28, 2013 11:40 am
von Xin
Glocke hat geschrieben:
Xin hat geschrieben:Die Frage ist eher, wo brauchst Du das... oder... brauchst Du es? ^^
Ich glaube es wäre wesentlich robuster die Teile nicht in Skripte auszulagern sondern direkt in C++ zu schreiben ... :D allein wegen Typsicherheit... mal abgesehen von der Geschwindigkeit.
Wenn Du (sehr (,sehr)) viel Zeit hast, überlegen wir uns eine Anbindung für Genesys. Typsicher, auch katastrophal langsam, und vor allem noch lange nicht fertig.

Also programmiere es in C++ und wenn Du Lust hast, gucken wir mal, ob wir was hinbekommen, was uns beiden nutzt. Experimentell, aber für mich wäre das eine neue Herausforderung.
Glocke hat geschrieben:Da stellt sich mir die Frage: Wann nutzt man eingebettete Skripte?
Wenn man viel Zeit hat und Dinge hochgradig konfigurierbar haben möchte.

Re: Performance eingebetteter Skriptsprachen

Verfasst: So Apr 28, 2013 6:00 pm
von Glocke
Xin hat geschrieben:Wenn Du (sehr (,sehr)) viel Zeit hast, überlegen wir uns eine Anbindung für Genesys. Typsicher, auch katastrophal langsam, und vor allem noch lange nicht fertig.
Du meinst eine Anbindung für Python-Skripte innerhalb einer mit Genesys geschrieben Anwendung? Kp :D
Xin hat geschrieben:Also programmiere es in C++ und wenn Du Lust hast, gucken wir mal, ob wir was hinbekommen, was uns beiden nutzt. Experimentell, aber für mich wäre das eine neue Herausforderung.
Ich schreib meinen Kram einfach weiter in C++ ^^
Xin hat geschrieben:Wenn man viel Zeit hat und Dinge hochgradig konfigurierbar haben möchte.
Zeit habe ich - hochgradig konfigurierbar brauche ich es aber vermutlich nicht wirklich :D

LG Glocke

Re: Performance eingebetteter Skriptsprachen

Verfasst: So Apr 28, 2013 8:21 pm
von Xin
Glocke hat geschrieben:
Xin hat geschrieben:Wenn Du (sehr (,sehr)) viel Zeit hast, überlegen wir uns eine Anbindung für Genesys. Typsicher, auch katastrophal langsam, und vor allem noch lange nicht fertig.
Du meinst eine Anbindung für Python-Skripte innerhalb einer mit Genesys geschrieben Anwendung? Kp :D
Nein, ich meinte eine Anbindung von C/C++ an Genesys-Skripte.

Re: Performance eingebetteter Skriptsprachen

Verfasst: Mo Apr 29, 2013 12:39 pm
von jeanluc
Kannst ja einen Gameserver-Prototypen in Python schreiben. Mit JSON-RPC hast eine Grundlage und UDP statt TCP/IP ist grundsätzlich auch möglich. Die Logik solltest eh in einen Server-Prozess auslagern.

Re: Performance eingebetteter Skriptsprachen

Verfasst: Mo Apr 29, 2013 1:43 pm
von Glocke
jeanluc hat geschrieben:Kannst ja einen Gameserver-Prototypen in Python schreiben. Mit JSON-RPC hast eine Grundlage und UDP statt TCP/IP ist grundsätzlich auch möglich. Die Logik solltest eh in einen Server-Prozess auslagern.
Ich verwende ein selbst erstelltes Framework für meine Netzwerkkommunikation (auf Basis von SDL_net, TCP Sockets und JSON): https://github.com/cgloeckner/networking

Damit verbunden geht eine Trennung zwischen Darstellung (clientseitig) und Datenbestand/Logik (serverseitig) bei mir einher. Effektiv bekommen meine JSON-Pakete eine Kommando-ID, anhand auf der Gegenseitige die zugehörige Funktion bzw. Methode aufgerufen wird.