Diskussionen über interessante Themen
-
Genau. Und die Mehrheit ist sowieso für 'Game-Engine'.
-
Nur gut, das wir schon das Schattenthema angefangen haben.
Bye, TGGC \-/
-
Sieht so aus als ob es jetzt durch wäre. Dann können wir ja mit dem 2. Thema anfangen. Game-Engine.
Ich lese dazu gerade die 'Artikelreihe' 'Enginuity' auf Gamedev.net
-
Jover schrieb:
Ich lese dazu gerade die 'Artikelreihe' 'Enginuity' auf Gamedev.net
Die hab ich bis zum 2. Teil auch gelesen, hab dann aber aufgehört... Ich fand das Design da auch teilweise ziemlich komisch.
Ich finde es zum Beispiel unlogisch, dass ein MemoryObject eine (statische) Liste mit allen toten, bzw. lebenden Objekten hat. Ich hätte das eher mit einer MemoryManager Klasse gelöst, die eben diese Objekte speichert.
-
godlikebot schrieb:
Jover schrieb:
Ich lese dazu gerade die 'Artikelreihe' 'Enginuity' auf Gamedev.net
Die hab ich bis zum 2. Teil auch gelesen, hab dann aber aufgehört... Ich fand das Design da auch teilweise ziemlich komisch.
Ich finde es zum Beispiel unlogisch, dass ein MemoryObject eine (statische) Liste mit allen toten, bzw. lebenden Objekten hat. Ich hätte das eher mit einer MemoryManager Klasse gelöst, die eben diese Objekte speichert.Ich kann dazu noch nichts sagen, da ich gerade erst begonnen habe zu lesen.
Kennt jemand noch andere lesenswerte Dokumente über dieses Thema?
-
Ich kenn sonst nur noch das Portal Engine Tutorial auf Flipcode.
-
Also da es wohl nun doch niemand gibt, der über "Game-Engine" (was auch immer genau das für'n Thema wär) diskutieren wollte, ist als nächstes mit 2 + 3 Stimmen "Scriptsprache" dran.
Bye, TGGC \-/
-
scriptsprache ist sehr interessant, ich hab mal was gegoogelt, und war geschockt, dass man sofort in der tiefsten compiler theorie gefangen ist.
es wär mal interessant, wieviel eine scriptsprache können muss, um schon eine scriptsprache zu sein, und wieviel scriptsprache man in der Praxis wirklich braucht.
-
Ne Skriptsprache schreiben und anwenden ist ja etwas total anderes, man muss sich
keine eigene Sprache schreiben, sondern kann fertige Skriptsprachen benutzen.Was mich jedoch interressieren würde, wäre wie man diese in sein Programm einbindet.
Habe nur einmal ein kleines Stückchen Code bei dem Lua benutzt wurde gesehen und
mir ist zwar die benutzung klar, aber nicht wie man so etwas weiträumig in ein
Programm einbindet und nacher z.B. die KI in der Skriptsprache schreibt.
-
TGGC schrieb:
Also da es wohl nun doch niemand gibt, der über "Game-Engine" (was auch immer genau das für'n Thema wär) diskutieren wollte, ist als nächstes mit 2 + 3 Stimmen "Scriptsprache" dran.
Bye, TGGC \-/
Ich lese gerade
-
SirLant schrieb:
Was mich jedoch interressieren würde, wäre wie man diese in sein Programm einbindet.
Kommt natürlich immer darauf an, welche Sprache man benutzt. Meine Skriptsprache der Wahl ist Python. Und das Einbinden dieser in C(++) Programme ist ein Kinderspiel. Man muss lediglich den Interpreter in sein Programm linken (bzw die Wrapper - lib für die Interpreter DLL), ein bisschen Wrapper Code schreiben um seine Python Funktionen von C aus aufrufbar zu machen und umgekehrt, und schon hat man ein Skript - Interface zu der (meiner Meinung nach) schönsten Skriptsprache wo gibt. Ich denke ähnlich wird es bei allen Skriptsprachen sein, die (auch) dafür gedacht sind als Skriptsprache eines Programmes zu dienen. Bei Python finde ich vorteilhaft, das es ein ähnliches Objektmodell wie C++ hat, das sich leicht miteinander integrieren lässt (zu sehen ua bei www.wxPython.org), eine schöne Syntax (besser als bei C, C++) hat und eine soooo grosse Auswahl von Modulen hat. Das ließe sich noch um einiges fortsetzen, aber wer wollte das dann noch lesen :D.
Generell: Wer an C++ gewöhnt ist, dürfte mit Python keine Probleme haben.
-
nehmen wir mal an, ich wollte eine scriptsprache erstellen, ich hab mir mal ein tutorial dazu durchgelesen, und eigentlich geht mir das viel zu weit, was die da machen...
wenn ich sowas machen würde, dann würde ich das vielleicht nach folgendem prinzip machen:
\1:
restart_game 5
im programm soll dann einfach die funktion restartgame(5); aufgerufen werden,dh meine scriptsprache soll die scriptsprache in funktionen übersetzen, die dann ausgeführt werden.
das kriegt man noch hin, also das ist nicht so das problem.
wie kann ich aber sowas lösen:
a=b+c;
in einem c++ programm, indem ich keine operatoren kennen würde, würde ich einfach folgendes machen:
zuweisung(a,addition(b,c));
sowas kann das script aber nicht generieren,der return wert ist im moment mein großes problem.
ich hab mir überlegt,ob man das so machen kann:
jede funktion besitzt eine return Variable,und der compiler macht folgendes:
aus: a=b+c wird
[cpp]
//irgendwo innerhalb einer Klasse
T return_addition;
addition(b,c);
zuweisung(a,return_addition);
der weg ist natürlich sehr umständlich, und ich bin auch nich sehr zufrieden damit, aber ich möchte soweit wie möglich von (pseudo) assembler entfernt sein(wenn das überhaupt möglich ist, falls nicht, dann muss ich mich dem schicksal beugen :P)
-
@ChokoCookie das meinte ich eigentlich nicht, das ist mir ja klar, habe ja wie
oben genannt schon kleine Beispiele bei Lua gesehen, was ich meine ist, wie man
die Skriptsprache in den C++ Code einbaut, so dass die Funktionen des Interpreters
meine Spielfunktionen mit den passenden Werten usw. aufrufen.
Dass ich das je nach Sprache anderst machen muss ist klar, und dass man einfach
die richtigen Funktionen des Interpreters hinschreiben muss, aber wie kann man
so etwas durchplanen und anschließend einbauen, dass es funktioniert.Mir fehlt einfach die vorstellung denkweise dazu um zu verstehen wie man das
in den Code 'flickt'
-
btw: kennt jemand ein gutes tutorial (wenns auf deutsch ist, noch besser
) für die aktuelle lua version?
-
Na ich denke, wenn man ein ordentlich designtes Klassenmodell in seinem Spiel hat, kann man das, oder Teile davon einfach für Skripte zugänglich machen. Ein paar Funktionen um die Kamera und die Modelle zu Steuern, dann noch für Sounds uä, das dürfte für Zwischensequenzen reichen. Kommt natürlich immer darauf an, wieweit man mit den Skripten in das Spiel eingreifen können will/soll. Wenn man zB Teile der KI skripten will, muss man detaillierten Zugriff auf die Spielmechanik erlauben.
-
ja klar,solche sachen werden einfach zu implementieren sein, aber sowas wie:
lightobjekt=turn_light_on(raum1->licht3)
bind(raum1->schalter1,lightobjekt)
kriegt man nichmehr so einfach hin,immerhin ist lightobjekt ein funktionpointer...
-
Ich schreiben unsere Scripts in C++ und binden sie dynamisch in das Hauptprogramm ein.
Ja genau, Dlls unter Win und SOs unter LinuxIch hatte mich voher mit Tcl und Lua abgequält, beide sind nicht geeignet
C++ Objekte vernünftig anzusprechen geschweige denn die Engine zu erweitern.Bei mir hat jetzt jeder Level eine eigenen shared object File, in dem der gesamte Scriptsource für den Level compiliert wurde.
Die Funktionen lade ich dann zur Runtime.
Nicht mehr benötigte Module werden über Garbage Collection aussortiert.Bin sehr zufrieden mit der Entscheidung, hat sich bisher nur bewährt.
Ok, man muß etwas mehr compilen, aber dafür brauche ich nacher keinen RuntimeInterpreter im Speicher halten und mir über die Speicherverwaltung und Parameterübergabe in Scriptfunktionen Gedanken machen.
Außerdem ist die Performance unerreicht
-
@Otze: Wenn du dich damit nicht abgeben willst, nimm Pyhton ;).
@Kane: für jedes Level eine DLL? Ist ja abgefahren. lol. Aber eine "Skriptsprache" (is ja wohl bei dir keine mehr), soll ja wohl vor allem einfach zu bedienen sein. Für dich und andere Leute, die Levels erstellen. Naja, falls ich mal genug Zeit habe ein "ernsthaftes" Spiel zu schreiben, verwende ich dafür auf jeden Fall auch wieder Python. Denn die von dir Beschriebenen Probleme gibt es damit sicher nicht. Ich glaube Performance ist bei Levelskripten auch nicht wirklich ein Problem.
-
vorallem nimmt dir dieser compilezwang die möglichkeit runtime zu scripten, du kannst also während des testes nich durchs level gehen, schalter betätigen, und im zweifelsfall vorort fixen.
aber das problem mit dem rückgabewert einer funktion geht mir nich ausm kopf,wie kann man das lösen?
(für leute die erst später zugeschaltet haben: a=b+c, b+c ist eine addition und deren rückgabewert wird a zugewiesen, wie krieg ichs hin, dass der rückgabewert der addition der gleichungsfunktion übergeben wird)
-
otze, auf die Schnelle wird kann man das schwer erklären. Am besten du liest ein Tutorial dazu.