Performance eingebetteter Skriptsprachen

Algorithmen, Sprachunabhängige Diskussionen zu Konzepten, Programmiersprachen-Design
Antworten
Glocke
Beiträge: 332
Registriert: Fr Okt 26, 2012 8:39 am

Performance eingebetteter Skriptsprachen

Beitrag von Glocke » Sa Apr 27, 2013 10:49 am

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 :)

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Performance eingebetteter Skriptsprachen

Beitrag von Xin » Sa Apr 27, 2013 6:31 pm

Scriptsprachen haben immer katastrophale Folgen....

Die Frage ist eher, wo brauchst Du das... oder... brauchst Du es? ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Glocke
Beiträge: 332
Registriert: Fr Okt 26, 2012 8:39 am

Re: Performance eingebetteter Skriptsprachen

Beitrag von Glocke » So Apr 28, 2013 10:58 am

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

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Performance eingebetteter Skriptsprachen

Beitrag von Xin » So Apr 28, 2013 11:40 am

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Glocke
Beiträge: 332
Registriert: Fr Okt 26, 2012 8:39 am

Re: Performance eingebetteter Skriptsprachen

Beitrag von Glocke » So Apr 28, 2013 6:00 pm

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

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Performance eingebetteter Skriptsprachen

Beitrag von Xin » So Apr 28, 2013 8:21 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

jeanluc
Beiträge: 33
Registriert: Mo Apr 22, 2013 10:18 pm

Re: Performance eingebetteter Skriptsprachen

Beitrag von jeanluc » Mo Apr 29, 2013 12:39 pm

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.

Glocke
Beiträge: 332
Registriert: Fr Okt 26, 2012 8:39 am

Re: Performance eingebetteter Skriptsprachen

Beitrag von Glocke » Mo Apr 29, 2013 1:43 pm

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.

Antworten