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
LG Glocke
Performance eingebetteter Skriptsprachen
- Xin
- nur zu Besuch hier
- Beiträge: 8861
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Performance eingebetteter Skriptsprachen
Scriptsprachen haben immer katastrophale Folgen....
Die Frage ist eher, wo brauchst Du das... oder... brauchst Du es? ^^
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.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Performance eingebetteter Skriptsprachen
Das habe ich befürchtetXin hat geschrieben:Scriptsprachen haben immer katastrophale Folgen....
Ich glaube es wäre wesentlich robuster die Teile nicht in Skripte auszulagern sondern direkt in C++ zu schreiben ... allein wegen Typsicherheit... mal abgesehen von der Geschwindigkeit.Xin hat geschrieben:Die Frage ist eher, wo brauchst Du das... oder... brauchst Du es? ^^
Da stellt sich mir die Frage: Wann nutzt man eingebettete Skripte?
LG Glocke
Rage - ein "modernes" Rogue-like (C++11, SFML)
- Xin
- nur zu Besuch hier
- Beiträge: 8861
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Performance eingebetteter Skriptsprachen
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.Glocke hat geschrieben:Ich glaube es wäre wesentlich robuster die Teile nicht in Skripte auszulagern sondern direkt in C++ zu schreiben ... allein wegen Typsicherheit... mal abgesehen von der Geschwindigkeit.Xin hat geschrieben:Die Frage ist eher, wo brauchst Du das... oder... brauchst Du es? ^^
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.
Wenn man viel Zeit hat und Dinge hochgradig konfigurierbar haben möchte.Glocke hat geschrieben:Da stellt sich mir die Frage: Wann nutzt man eingebettete 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.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Performance eingebetteter Skriptsprachen
Du meinst eine Anbindung für Python-Skripte innerhalb einer mit Genesys geschrieben Anwendung? KpXin 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.
Ich schreib meinen Kram einfach weiter in C++ ^^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.
Zeit habe ich - hochgradig konfigurierbar brauche ich es aber vermutlich nicht wirklichXin hat geschrieben:Wenn man viel Zeit hat und Dinge hochgradig konfigurierbar haben möchte.
LG Glocke
Rage - ein "modernes" Rogue-like (C++11, SFML)
- Xin
- nur zu Besuch hier
- Beiträge: 8861
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Performance eingebetteter Skriptsprachen
Nein, ich meinte eine Anbindung von C/C++ an Genesys-Skripte.Glocke hat geschrieben:Du meinst eine Anbindung für Python-Skripte innerhalb einer mit Genesys geschrieben Anwendung? KpXin 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.
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.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Performance eingebetteter Skriptsprachen
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
Ich verwende ein selbst erstelltes Framework für meine Netzwerkkommunikation (auf Basis von SDL_net, TCP Sockets und JSON): https://github.com/cgloeckner/networkingjeanluc 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.
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.
Rage - ein "modernes" Rogue-like (C++11, SFML)