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

13.12.2011, 15:41

Python Interpreter in C++ Projekt nutzen

Hi, weiß jemand von euch wie man einen Python Interpreter in ein C++ Projekt einbinden kann? Ich habe mir überlegt, dass es einfacher für mich wäre, wenn ich sowas in meinen Level-Editor einbauen würde, anstatt einen eigenen Script-Parser, für eine eigene Script-Sprache entwickeln würde.
Ich brauche eine Script-Sprache damit man die Ereignisse in der Szene dynamisch programmieren kann und das möglichst einfach.
Eben mit einer einfachen Script-Sprache, in der man sich um Speicherverwaltung u.ä. nicht kümmern braucht.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

3

13.12.2011, 16:08

du kannst dir auch anschauen, wie andere das Scripten in ihren Editoren gelöst haben
ein Beispiel wäre dafür der Hammer Editor von Valve (du bräuchtest ein Source-Spiel, um den Editor nutzen zu können)
die verschiedenen Objekte haben je nach Typ verschiedene Ausgaben (beispielsweise haben, soweit ich weiß, func_breakable Objekte die Ausgabe onDamaged)
für jedes Objekt bzw. jede Gruppe kann man einstellen, was mit anderen Objekten gemacht werden soll, wenn eine bestimmte Ausgabe vorliegt (func_breakable Objekte haben beispielsweise die Eingabe break)

mit dem Erstellen neuer Typen habe ich mich bisher noch nicht beschäftigt, weshalb ich nicht sagen kann, wie dies mit dem Hammer Editor gehandhabt wird

grundsätzlich würde ich dazu raten, den Level Designer möglichst wenig mit Programmierung zu belasten, auch wenn das auf ein "Zusammenklicken" hinaus läuft
damit will ich aber auch nicht sagen, dass du kein Python (oder Ruby oder Lua oder ...) verwenden sollst
letztendlich liegt es in deinem Ermessen, an welcher Stelle der Entwickler wie vorgehen kann oder muss
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

4

13.12.2011, 21:37

Ok danke für Posts, die waren schon mal hilfreich :) Grundsätzlich habe ich halt keine große Lust einen umfangreichen Parser zu schreiben. Das wäre nun wirklich 'das Rad neu erfinden'. Wenn's gar nicht anders geht ok.
Insgesammt muss ich mich noch genauer mit einem etwas umfangreicherem Script-Framework auseinander setzten. Bislang hatte ich in meinen alten Editoren immer nur ein Objekt "EventBox", das mit Eigenschaften Überladen war und trotzdem nicht genug konnte.
Mit Scripting hat man einfach mehr dynamik :D

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

13.12.2011, 23:50

Also ich kann python mit boost durchaus empfehlen. Man darf nur nicht anfangen in die Lib genauer reinzuschauen weil dann haut es einen doch schnell raus. Einige haben Probleme damit boost entsprechend installiert zu bekommen, was bei mir bisher eig noch nicht der Fall war und eigentlich wird es auch immer einfacher solange man sich an die Anweisungen hält.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

6

14.12.2011, 12:38

Gestern Abend ist mir ne einfachere Lösung in den Sinn gekommen. Das eigentliche Verarbeiten des Scriptings hätte ich sowieso in der GameEngine gemacht und nicht in meiner 3D Engine. Und für meine Zwecke reicht eine XML Syntax vollkommen aus. XML ist sehr leicht zu parsen.
Das könnte dann z.B. so aussehen:

Quellcode

1
2
3
4
5
6
7
8
<trigger>
    <input>
        <enter_area distance="15.0"/>
    </input>
    <output>
        <add_item type="weapon_pistol"/>
    </output>
</trigger>

Das ist viel einfacher und erfüllt seinen Zweck. Dann baue ich in meinen Sandbox Editor einfach noch einen SourceCode Editor mit verschiedener Syntax Highlighting.
u.A. eben XML Syntax Highlighting.

Die Verarbeitung des Scripts muss dann halt jeder in seiner eigenen GameEngine selber machen.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

7

14.12.2011, 13:42

Dann baue ich in meinen Sandbox Editor einfach noch einen SourceCode Editor mit verschiedener Syntax Highlighting.
u.A. eben XML Syntax Highlighting.

wenn du es dir einfach machen willst, kannst du das gerne machen
wenn du es dem Benutzer deines Editors einfach machen möchtest, solltest du dir ein wenig mehr Mühe geben
entweder sollten beim Schreiben Vervollständigungsvorschläge gebracht werden oder es sollte möglich sein, die Scripte durch "Zusammenklicken" zu erstellen
(wenn man in einer Baumansicht auf einem Element steht, könnte beim Versuch, ein weiteres Element einzufügen, eine Liste mit in dem Zusammenhang verwendbaren Elementen angezeigt werden)
immerhin interessiert den Benutzer später recht wenig, wie die Skripte gespeichert werden, sondern eher, wie er sie anzulegen hat und da ist es wesentlich einfacher, die richtigen Elemente aus einer Liste auszusuchen, als alles händisch einzugeben

zu dem XML-Schnipsel:
wenn ein Trigger (oder anderes Objekt, welches in dargestellt werden kann) mehrere Inputs hat, lässt sich so nicht sagen, was bei welchem Input geschehen soll
die Outputs sollten in die Inputs gelegt werden
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

8

14.12.2011, 16:41

Kommt drauf an wie es interpretiert wird. Vielleicht ist nur ein Input zulässig, oder mehrere Inputs bedeutet eine and/ or Verknüpfung. Das kommt dann ja auf die Semantik an.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

9

14.12.2011, 17:45

Aber du willst XML hoffentlich nicht selber parsen, oder? Dafür gibt es doch schone ein Menge guter Bibliotheken. Ebenso fürs Syntaxhighliting, z.B. Scintilla. Also klar, es ist ganz nett, sowas mal selber zu machen, aber die Frage ist halt, ob das andere nicht produktiver wäre...
Lieber dumm fragen, als dumm bleiben!

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

10

14.12.2011, 20:13

Syntaxhighlighting mache ich nicht selber. Aber einen XML Parser zu schreiben ist nicht viel Arbeit. Die Syntax ist sehr einfach.

Gruß, Lukas

PS: Das XML Schnipsel war nur ein Beispiel ;)

Werbeanzeige