# [Projekt] 2D-Adventure



## Freddycbv (29. Juli 2012)

Liebe PCGH-Community,

ich möchte euch hier mein neues Projekt vorstellen, ein Story-basiertes 2D-Adventure.
_Mein _Projekt ist eigentlich falsch: Wir sind 2 Schüler, wobei ich den Programmierpart übernommen habe,
und meine Klassenkameradin den Großteil der Story entwirft, bzw. entworfen hat.
Auch sämtliche Grafiken sind von ihr.
Unser Projekt ist noch jung, vor etwa 1,5 Monaten haben wir angefangen, und ein bisschen was haben wir jetzt schon.
Das ganze Projekt ist in C++ und Lua gehalten, und als Grafikausgabe benutze ich SDL. Die Soundausgabe erledigt dagen IrrKlang.
Das ganze ist auch eher ein Fun-Projekt, und der Ort des Adventures ist unsere Schule.
Ich hatte vor, hier so eine Art Tagebuch zu erstellen, also alle Fortschritte festzuhalten, und immer die aktuellen Spiel/Testdateien zu liefern.

Bis jetzt war ich zum großen Teil mit der Engine beschäftigt, ich habe erst vor ein paar Tagen angefangen zu Scripten, und die nächsten
Tage kommen dann die ersten Level rein.
Bisher habe ich nur ein kleines Testlevel, in dem der Erste der beiden auswählbaren Chars spawnt, zudem ein Gegner "Facebook". 
Den kann man mit bisher einer Attacke besiegen, und sofort spawn schon das nächste Facebook .

Ich hänge die aktuelle Version an, es gibt bisher nur ein Problem (EDIT: fixed): Die verschiedenen Bildschirmauflösungen. Bisher sind alle Grafiken auf 1500 * 900 optimiert,
hat man eine kleinere Auflösung, startet das Spiel nicht. Deshalb gibt es dazu eine 2.Exe, die das Spiel in einer kleineren Auflösung im Fenstermodus startet, dort ist dann allerdings das Hintergrundbild abgeschnitten.
On-The-Fly Runterrendern via SDL war mir bis jetzt nicht möglich, da dabei die Transparenz Probleme macht.
Ehrlichgesagt ist es auch ziemlich blöd, alle Grafiken in mehreren Größen abzuspeichern, dann gäbe es zwar keine Probleme, 
aber das ist mir ein zu großer Zeitaufwand / zu ungeschickt .
Naja, wenn die Zeit kommt, dann werde ich mich nochmal mit dem Problem beschäftigen, aber momentan taugt es (für mich) auch so 
Vielleicht hat ja jemand von euch eine Idee dazu, wie man das lösen könnte. Eigentlich brauche ich ja nur einen anderen Skalierungs-Algorithmus, der mir nicht die Farbe der Transparenten Pixel (Pink) mit der Farbe der nicht-Transparenten Pixeln(also die, die angezeigt werden sollen ) mischt.


Feedback erwünscht!

FreddyCBV


EDIT: Jetzt gibt es nurnoch eine Version, mit variabler Auflösung, und wahlweise Vollbild.
Die Einstellungen können in der Datei ./Game/script/OnStartUp.lua geändert werden




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## fadade (29. Juli 2012)

1) Hi 
2) auch mal wieder ein interessantes Projekt! Vor allem als Schüler sollte man darauf achten (sinnvolle) Hobbys zu haben, bei denen man auch ein bisschen knobeln kann
3) Facebook besiegen ist da auch eine nette Idee 
4) Zu deinem Skalierungsproblem:
Also ich selbst habe im 2D-Bereich noch gar nicht gearbeitet (nur 3D), aber üblicherweise hat man seine Grafiken nur einmal in einer Größe gespeichert (beste Qualität) und die wird dann je nach Auflösung von der API bzw. beim rendern "runtergerechnet"; dazu haben halt die Bildschirmecken die Koordinaten -1,-1   -1,1  1,-1   1,1   und die Vertexdaten können dann beliebig auf einen Wert gesetzt werden, der dann zwangsläufig schon eine gewisse Skalierung beinhaltet, je nachdem, was welche Pixelkoordinaten mit den genannten Bildschirmkoordinaten verknüpft wird ...... mein Gott, kann ich mal wieder "gut" erklären  Warte vielleicht lieber mal bis jemand aus dem 2D-Bereich etwas posten tut ^^


----------



## Freddycbv (30. Juli 2012)

Facebook war jetzt halt der erste Testgegner, bevor wir uns an die Lehrer wagen 
Ich probiere grad mal ein wenig bei der Skalierung rum, bisher habe ich eine Funktion aus dem Internet benutzt, aber die macht halt wie gesagt diese Probleme mit der Transparenz  Nach nochmaligem Googeln habe ich jetzt die SDL-Erweiterung SDL_gfx gefunden, mal schaun, ob das Skalieren damit besser geht.


----------



## Robonator (30. Juli 2012)

Ganz nett auch wenn ich es teilweise gar nicht checke... Man drückt E und der Char bekommt rote Augen mehr passiert nicht aber das Monster nimmt Schaden oO 
Aber sonst echt klasse das Projekt. Ich selber kann nur im DOS-Fenster proggen da ich an meiner "hochmordernen" Schule nur sowas lerne


----------



## Freddycbv (30. Juli 2012)

Ist ja noch prepreprepreprepreprealpha xD
Das soll später so eine Art "Laser-Augen"-Attacke werden. Bis jetzt fehlen nur die Effekte (Laser-Strahl), und es ist egal, ob man den Gegner anschaut, oder nicht... muss noch ziemlich am Attacken-System arbeiten.

Bei uns an der Schule ist das ähnlich, außerdem wird nur Java unterrichtet. 
C++ lerne ich deshalb selber, was auch gut geht, wenn man's will 
98% meiner Programme sind in der Konsole, mehr braucht man ja oft für kleine Projekte nicht... 
Und mit SDL sind es am Anfang nur ein paar Funktionen, aus denen man sich eine kleine Engine schreiben kann, und plötzlich braucht man auch die nicht mehr 

Ich glaub ich hab das Rätsel der Skalierung gelöst, mit SDL_DisplayFormatAlpha() kann ich aus dem Colorkey der Surfaces einen Alpha channel erstellen, und meine Skale-Funktion macht keine Probleme mehr .
Jetzt noch ein bisschen umschreiben, nachher hab ich dann eine Version mit komplett variabler Auflösung 


//EDIT:
Problem gelöst, oben gibt es den neuen Link.
Es kann sein, dass das alte Spiel auf zu schnellen PC's abgestürzt ist, das lag an zu hohen FPS Werten.
Laut SDL sind dann (bei schnellen PC's, bzw. niedrige Auflösung) seit dem letzten Frame weniger als 1ms vergangen, also 0ms.
Und Framerate ist halt 1000/vergangeneMillisekunden, also 1000/0 => Absturz  Naja, ist jetzt fixed.

//EDIT 2:
Hab jetzt heute noch ziemlich am Skripting herumgefeilt, jetzt hat jeder Spieler seinen eigenen Skript.
Morgen kommen dann die Attacken dran, und Level mit mehr als einem aktiven Gegner gleichzeitig.
Vielleicht schaffe ich es auch noch die ersten Dialoge einzufügen, damit es ein bisschen mehr Adventure wird


----------



## hardware_fanatiker (30. Juli 2012)

Robonator schrieb:


> Ich selber kann nur im DOS-Fenster proggen da ich an meiner "hochmordernen" Schule nur sowas lerne



Das hat nichts mit modern oder eben nicht zu tun. Viel eher halte ich es für sehr vernünftig von deinen Lehrern, den Fokus auf Programmierkonzepte etc. zu setzen und nicht auf biegen und brechen den Schülern ein GUI reinzuwürgen. Das ist eher ne freiwillige Komponente, die finde ich in der Oberstufe nicht unbedingt sein muss.


----------



## shady1080 (2. August 2012)

Cooles Projekt, kannst du Lektüre oder Tutorials empfehlen die du benutzt hast? Beschäftige mich auch schon seit einiger Zeit mit Java und hab auch in Java 3D reingeschnuppert. 

Hab die letzten Tage etwas C++ Luft geschnuppert aber bin mir nicht ganz sicher wie ich am besten anfangen soll weil die eigentlich Programmierkenntnisse schon da sind (Patterns usw. auch) aber C++ dann doch einige Eigenheiten hat.


----------



## Freddycbv (2. August 2012)

Auch wenn du dich schon mit Java auseinandergesetzt hast, würde ich dir auf jeden Fall zu C++ - Büchern raten, ich kann mit Tutorials, etc. im Internet nichts anfangen. Bei C++ hat mir dieses Buch weitergeholfen: "C++ - Lernen und professionell anwenden".
Es fängt bei den Grundlagen an, und hört bei den Feinheiten auf. Jede 2.Seite ist ein Codebeispiel, das einem das aktuelle Thema verdeutlicht. Ist zwar nicht grad billig, ist aber wirklich sein Geld wert. Wesentlich knapper, aber auch empfehlenswert ist das Buch "C++: Objektorientiertes Programmieren von Anfang an".
Das Buch setzt zwar ein wenig Grundlagen in C voraus (Ich habe auch das Exemplar zu C: "C- Programmieren von Anfang an"), aber ich denke, dass es auch gut mit Java-Kentnissen zu bewältigen ist.
Übrigens, bei mir ist es momentan genauso: In meinem Spiel benutze ich neben C++ für die Engine, Lua als Scriptsprache. Die Basiselemente (Schleifen, Kontrollstrukturen, Funktionen) habe ich mir schnell ergoogelt, aber für die Feinheiten werde ich mir auch noch ein Buch bestellen. Es macht einfach mehr Spaß, wenn man die gesammte Sprache ausnutzen kann.

Ich sitze momentan immer noch an den Attacken fest; irgendwie habe ich mir das einfacher vorgestellt 
Ich habe alles in Lua verschoben, sodass es ziemlich leicht ist, später neue hinzuzufügen... Die gesammte Story, die KI, quasi das gesammte Spiel schreibe ich in Lua, sodass es später gut möglich ist, Modifikationen vorzunehmen


----------



## Robonator (2. August 2012)

> Das hat nichts mit modern oder eben nicht zu tun. Viel eher halte ich es für sehr vernünftig von deinen Lehrern, den Fokus auf Programmierkonzepte etc. zu setzen und nicht auf biegen und brechen den Schülern ein GUI reinzuwürgen. Das ist eher ne freiwillige Komponente, die finde ich in der Oberstufe nicht unbedingt sein muss.


Das "Modern" war auf die Schule im allgemeinen bezogen. 
Wir nutzen teilweise 800Mhz PC´s mit Software von ~2003.


----------



## Freddycbv (2. August 2012)

Robonator schrieb:


> Das "Modern" war auf die Schule im allgemeinen bezogen.
> Wir nutzen teilweise 800Mhz PC´s mit Software von ~2003.



Gut, das ist zwar nicht das Beste, aber ich denke, dass reicht für normalen Informatik-Unterricht, bzw. einfaches Recherchieren im Internet.
Bei uns an der Schule ist das so, dass wir in einigen Räumen auch noch richtig alte Gurken haben, dafür aber auch teilweise Neuere. 
(Aber alle ohne Powerpoint 2010 ) Das "PC-Zeitalter" muss halt auch erstmal bei den Schulen, bzw. Lehrern ankommen  

Zu langsamen Gurken: 
Kennt ihr den Raspberry Pi? Das ist ein kleiner Mini-Computer, in GB entwickelt, um ärmeren Schulen / Kindern einen Informatik-Unterricht zu ermöglichen.
Der basiert auf einer 700 Mhz ARM CPU, und ist wirklich langsam... Aber cool 
Ich hätte schon mal Lust, auszuprobieren, ob ich mein "Spiel" (bis jetzt sieht man ja noch nicht viel davon ) dort zum Laufen bekommen kann.
SDL scheint dort zu funktionieren, allerdings habe ich keine Ahnung vom Erstellen von C++-Programmen unter Linux.
Da muss ich mich erstmal schlau machen, aber vielleicht hat ja jemand von euch Tipps für mich


----------



## Dragonix (2. August 2012)

Freddycbv schrieb:


> (Aber alle ohne Powerpoint 2010 )


Beamer (LaTeX)


Freddycbv schrieb:


> Da muss ich mich erstmal schlau machen, aber vielleicht hat ja jemand von euch Tipps für mich


Compiler ist klar, und je nach Komplexität des Projekts noch ein simples Makefile oder scons oder cmake oder oder oder... hier wären konkrete Fragen bei Problem hilfreicher.


----------



## JimSim (3. August 2012)

1) PowerPoint ist *******. LaTeX auch, aber leider immer noch die bessere Alternative... 
2) Bei der Implementierung von realen Personen in Spielen immer vorsichtig sein... das gibt ganz schnell rechtliche Probleme. Besonders wenn man Lehrer mit Laser-Augen wegbrutzelt.


----------



## Hydroxid (3. August 2012)

[X] Abo


----------



## shady1080 (3. August 2012)

Freddycbv schrieb:


> Auch wenn du dich schon mit Java auseinandergesetzt hast, würde ich dir auf jeden Fall zu C++ - Büchern raten, ich kann mit Tutorials, etc. im Internet nichts anfangen. Bei C++ hat mir dieses Buch weitergeholfen: "C++ - Lernen und professionell anwenden".
> Es fängt bei den Grundlagen an, und hört bei den Feinheiten auf. Jede 2.Seite ist ein Codebeispiel, das einem das aktuelle Thema verdeutlicht. Ist zwar nicht grad billig, ist aber wirklich sein Geld wert. Wesentlich knapper, aber auch empfehlenswert ist das Buch "C++: Objektorientiertes Programmieren von Anfang an".
> Das Buch setzt zwar ein wenig Grundlagen in C voraus (Ich habe auch das Exemplar zu C: "C- Programmieren von Anfang an"), aber ich denke, dass es auch gut mit Java-Kentnissen zu bewältigen ist.
> Übrigens, bei mir ist es momentan genauso: In meinem Spiel benutze ich neben C++ für die Engine, Lua als Scriptsprache. Die Basiselemente (Schleifen, Kontrollstrukturen, Funktionen) habe ich mir schnell ergoogelt, aber für die Feinheiten werde ich mir auch noch ein Buch bestellen. Es macht einfach mehr Spaß, wenn man die gesammte Sprache ausnutzen kann.
> ...


 
Danke für die Tipps, Lua klingt als ob ich mir das auch mal ansehen sollte. Wird nicht auch in der Cryengine Sandbox Lua verwendet? Wie bringst du C++ und Lua zusammen, benutzt du da eine spezielle Library oder ein Framework für Games?

EDIT: Ist dein Code zufällig auf GitHub? Würde mich mächtig interessieren, und du kriegst vielleicht noch den ein oder anderen guten Input anderen?


----------



## Freddycbv (3. August 2012)

Dragonix schrieb:


> Compiler ist klar, und je nach Komplexität des Projekts noch ein simples Makefile oder scons oder cmake oder oder oder... hier wären konkrete Fragen bei Problem hilfreicher.


Ich kann mich ja einfach hier wieder melden, wenn ich Probleme bekomme. Ich denke, dass ich unter Linux einfach mal versuchen werde, mit make ein Hello-World Programm zum Laufen zu bringen, bevor ich mich an Libraries wage. 




JimSim schrieb:


> 1) PowerPoint ist *******. LaTeX auch, aber leider immer noch die bessere Alternative...


LaTeX kannte ich ja noch garnicht... Werde es mir auf jeden Fall mal anschauen. Bisher hatte ich immer ein portables LibreOffice dabei, aber dass ist auch zum 
Zum Präsentationen-Erstellen, fande ich 2010 eigentlich ganz gut, im Gegensatz zu den älteren Versionen mal etwas, in das man sich schnell einarbeiten kann.
Aber ich habe natürlich keinen Vergleich... 




JimSim schrieb:


> 2) Bei der Implementierung von realen Personen in Spielen immer vorsichtig sein... das gibt ganz schnell rechtliche Probleme. Besonders wenn man Lehrer mit Laser-Augen wegbrutzelt.


Das stimmt. Das wird hier auch ein größeres Problem... So als Spiel für einen selbst (also nicht zum Weitergeben), ist das mit den Lehrern denk ich mal OK. Aber sobald das dann eine halbe Klasse hat, und womöglich noch im Internet steht, bekommt man natürlich Probleme .
Deshalb werde ich die Versionen für hier immer anpassen müssen, heißt Namen, und eigentlich auch Dialoge/Story ändern, was natürlich eine ziemliche Arbeit ist... Da muss ich mir noch etwas einfallen lassen, und mich informieren, wie weit ich gehen darf, ohne Probleme zu bekommen.




shady1080 schrieb:


> Danke für die Tipps, Lua klingt als ob ich mir das auch mal ansehen sollte. Wird nicht auch in der Cryengine Sandbox Lua verwendet? Wie bringst du C++ und Lua zusammen, benutzt du da eine spezielle Library oder ein Framework für Games?
> EDIT: Ist dein Code zufällig auf GitHub? Würde mich mächtig interessieren, und du kriegst vielleicht noch den ein oder anderen guten Input anderen?


Das mit der Cryengine weiß ich nicht, aber Lua wird sehr häufig als Skriptsprache in Spielen eingesetzt. Das tolle, zB bei der Entwicklung der KI ist: Wenn mir ein Fehler im Spiel auffällt, brauche ich nur die Skriptdatei für die KI öffnen, und den Fehler beheben (bzw. KI verbessern), abspeichern, und die Änderung ist SOFORT im Spiel da. Kein blödes Neukompilieren, noch nicht einmal das Beenden des Spieles ist erforderlich.
Für C++ gibt es eine Bibliothek, die man einfach nur einbinden muss, und man kann auf die Skripts zugreifen (Tutorial). Die Skripts wiederum können auf Funktionen in der Engine (also meinem C++ - Programm) zugreifen, und somit den Spielfluss beeinflussen. Aber ich bin wirklich kein Experte, das ist erst mein erstes Projekt mit Lua. Meinen Engine-Code behalte ich erstmal noch für mich (vielleicht lasse ich mich ja später noch überreden, wenn das Spiel reifer ist), aber der Lua-Code ist offen im Script Ordner von meinem Spiel. Ich muss allerdings sagen, dass ich da grad noch ziemlich dran arbeite, weshalb es noch keinen längerfristigen Sinn hat, Modifikationen zu schreiben, da sie Struktur noch ziemlich oft umgeworfen werden muss, damit es auch perfekt passt


----------



## shady1080 (3. August 2012)

Sehr schön, ja das wird dann wohl meine Beschäftigung wenn ich (wie jetzt grade) im Praktikum nix zu tun hab


----------



## JimSim (3. August 2012)

Freddycbv schrieb:


> LaTeX kannte ich ja noch garnicht... Werde es mir auf jeden Fall mal anschauen. Bisher hatte ich immer ein portables LibreOffice dabei, aber dass ist auch zum
> Zum Präsentationen-Erstellen, fande ich 2010 eigentlich ganz gut, im Gegensatz zu den älteren Versionen mal etwas, in das man sich schnell einarbeiten kann.
> Aber ich habe natürlich keinen Vergleich...



Naja, das Hauptproblem von PowerPoint ist halt, das man den kram immer nur auf dem Rechner zeigen kann, auf dem man die Präsentation erstellt hat. sobald man die Präsi weiter gibt und auf nem anderen PC (geschweige denn auf nem Mac!) zeigen will, wird es wahrscheinlich Abweichungen geben. Das ist halt nen Problem, besonders wenn man irgendwo arbeitet und nicht unbedingt seinen Rechner an den Beamer hängen kann... Deswegen sind Präsentationen als pdf grundsätzlich zu empfehlen.
Wenn es dein Rechner ist auf dem du die Präsentation zeigst, und du Präsentation auf diesem Rechner erstellt hast, ist auch nichts weiter gegen PowerPoint zu sagen. Nur am besten immer mit Master-Template arbeiten etc...


----------



## Freddycbv (3. August 2012)

So, noch ein kurzes Update:
Mein Attacken-System ist fast fertig, ich muss nurnoch an ein paar Kleinigkeiten arbeiten.
Ich werde für die verschiedenen Bilder der Monster/Spieler jeweils noch einen Wert einfügen, nämlich einen, der mir die Mitte der Bilder angibt. Also nicht die theoretische Mitte (Breite/2), sondern die Mitte vom Monster/Spieler auf dem Bild, also eine Senkrechte, die den Spieler/ das Monster in 2 Teile teilt.
(Wenn man mich versteht )
Es gibt momentan nämlich noch ein paar Render-Bugs, die ich damit beseitigen kann.
(Der mittlerweile eingefügte Beta-Laserstrahl geht zB manchmal über den Gegner hinaus. Außerdem gibt es bei manchen Bildübergängen unschöne Verschiebungen: es scheint so, als ob der Spieler / das Monster zur Seite springt)
Trotzdem habe ich die aktuelle Version mal angehängt.




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Komischerweise gab es bei mir noch nie Probleme mit Powerpoint, wenn sowohl das Programm, mit dem man die Präsentation erstellt hat, sowie das Programm, das die Präsentation einliest, die selbe Version haben (beide 2003, oder beide 2010). Morgen schaue ich mir aber mal LaTeX an.


EDIT: Uuups, ich hab grad mal das Spiel in einer emulierten Windows-XP Umgebung getestet, und es stürzte schon kurz vorm Renderstart ab.
Werde das jetzt erst einmal fixen


----------



## shady1080 (6. August 2012)

Scheiss auf XP Support haha
Latex ist schon sehr stark aber es verfolgt natürlich ganz einen anderen Ansatz als die üblichen Office Tools. Wir verwenden es für grosse Dokumente, wie Projektprotokolle oder Bachelorarbeiten und da ist es Gold wert!


----------



## Freddycbv (1. September 2012)

hab ich verschlafen?
Neee - nur die Ferien genossen 

Nach der Pause gehts jetzt aber weiter...
Ich meine die Ursache für den XP - Bug im Scripting gefunden zu haben.  Das mach ich jetzt erstmal sicherer, dh. dass durch einen Skriptfehler das Programm nicht mehr abstürzt, sondern lieber einen Fehler ausgibt.

Ich hatte jetzt lange Zeit mit meinem VS2010 gekämpft, da plötzlich viele meiner Projektmappen nicht mehr funktioniert hatten (Link-Fehler: LNK1123)
Der Grund: Das böse VS2012 
Hat nach der (Test-)Installation mein VS2010 beschädigt, was selbst nach Deinstallation von 2012 und Reinstallation von 2010 nicht behoben wurde.
Erst durch das Deinstallieren vom MS Framework 4.5 und Neuistallieren vom MS Framework 4.0 funktionierten meine Projekte wieder.


----------



## Low (1. September 2012)

Hast du dir denn wissen einfach "Just-for-Fun" angeeignet oder brauchst du das für deinen Beruf?


----------



## Freddycbv (2. September 2012)

Just-for Fun 
Beruf steht noch in weiter Ferne (in ner Woche gehts weiter mit der 10.Klasse Gymn.), und auch nichts in Richtung Informatik geplant
Es macht mir einfach Spaß verschiedene Sachen mal auszuprobieren, ohne Stress, und irgendwelche "erzwungenen" Ziele
Ich mach einfach das worauf ich grad Lust hab, und da kam halt schon vor längerem die Idee eines kleinen Spieles (hatte schon vorher zig Ideen für andere Spiele, aber die waren mir dann irgendwie alle zu groß )


----------



## Low (2. September 2012)

Ich fang im WS an mit dem Studium mal schauen wie ich zurecht komme.

Mit welchem Buch hast du denn gelernt und seit wann.

Da ich Wirtschaftsinformatik studiere und auf der Schule auch Wirstschaftsinformatik hatte, habe ich nur Ahnung von Anwendungen also wie man ERP Software erstellt bzw.allgemein Software für Prozesse wie Produktion oder Lager etc.


----------



## fadade (2. September 2012)

Wenn du(/ihr) etwas weiter bist kannst du mal auf GameDev.net Developer Community (unter "Forums") schauen. Das ist so mit eine der besten Communities finde ich 
Wobei Anfangs-Tutorials gibt es dort eigentlich auch ....


----------



## Freddycbv (3. September 2012)

@Fadade 
Das ist ja ne coole Seite, danke für den Link!

@Low
Ich habe vor etwa 2,5 Jahren angefangen, mit den Büchern "C: Programmieren von Anfang an" und danach gleich "C++ Objektorientiertes Programmieren von Anfang an".
Etwas später noch mein 3.Buch "C++ Lernen und professionell anwenden", um noch ein bisschen tiefer einzutauchen  Kann alle 3 Bücher empfehlen
Zum Thema Spieleprogrammierung hatte ich mir mal "Spieleprogrammierung mit DirectX 11 und C++" besorgt, aber schon bald weggelegt. Keine Ahnung, obs das Buch war, oder DirectX, ich konnte nix damit anfangen 
Und für die ganzen Libraries gibts ja haufenweise Tutorials im Internet

Es läuft jetzt wieder unter XP, aber irgendwie check ich nicht so ganz, was der Fehler war...
Auf jeden Fall machte folgender (Lua-)Code Probleme:

```
Level.Sporthalle = function()
    setBackground("./Media/Level/L_1/Scene_1/ground.png")
    Player = createPlayer("./script/Player/Jana.lua")
    --Facebook = createEnemy("./script/Enemy/Facebook.lua")
    createEnemy("./script/Enemy/Facebook.lua")
    Engine_setNextLevel("END_OF_GAME")
    io.write("Skripting: Level geladen!\n")
end
```
So stürzt das Programm unter XP ab,
so nicht:

```
Level.Sporthalle = function()
    setBackground("./Media/Level/L_1/Scene_1/ground.png")
    [B]print("OLLA")
[/B]    Player = createPlayer("./script/Player/Jana.lua")
    --Facebook = createEnemy("./script/Enemy/Facebook.lua")
    [B]print("MERCATONE")[/B]
    createEnemy("./script/Enemy/Facebook.lua")
    Engine_setNextLevel("END_OF_GAME")
    io.write("Skripting: Level geladen!\n")
end
```
Lustig, oder?  Auch wenn ich zB im 2.Code das "Player = " vor createPlayer wegnehme, stürzt es ab...
Ich schau mir nachher nochmal die createPlayer, bzw. createEnemy Funktionen an (sind aus Engine importiert), vielleicht ist da ja irgendeine (Lua-)Stack-Verwurschtlung drin.
Aber dass das unter Win7 nicht abstürzt? Das einzige was ich mir denken könnte, ist dass es der XP VM nicht schmeckt, kein VS-Runtime, kein .Net Framework, und kein DirectX zu haben...
Naja, ich teste dann mal ein bisschen herum,  wird sich schon lüften 
Sonst ist die Engine jetzt schonmal viel stabiler, hatte mir da vorher einige grobe Schnitzer erlaubt


----------



## fadade (4. September 2012)

Freddycbv schrieb:


> l "Spieleprogrammierung mit DirectX 11 und C++"


 

Genau das habe ich auch, damit habe ich den Grundstein meiner kleinen 3D-Engine programmiert 

ich kenne mich zwar mit Skriptsprachen nicht so aus, aber vielleicht benötigt "setBackground(...)" einfach ein bisschen Zeit, die z.B. schon die Print-Anweisung liefert bzw. direkt ein Screen-Update, was durch Print direkt danach iniziiert werden könnte ...


----------



## Freddycbv (10. September 2012)

Freddycbv schrieb:


> Ich schau mir nachher nochmal die createPlayer, bzw. createEnemy Funktionen an (sind aus Engine importiert), vielleicht ist da ja irgendeine (Lua-)Stack-Verwurschtlung drin.
> Aber dass das unter Win7 nicht abstürzt? Das einzige was ich mir denken könnte, ist dass es der XP VM nicht schmeckt, kein VS-Runtime, kein .Net Framework, und kein DirectX zu haben...


Wusst ichs doch 
Ich hab mal absichtlich den Stack von Lua noch mehr "falsch" benutzt, und siehe da, auf WindowsXP stürzt es in jedem Fall ab, Win 7 bleibt stabil...
Und es hat wirklich WinXP nicht geschmeckt, kein VS Runtime zu haben, denn mit Runtime-Libraries stürzt es genauso wenig ab wie unter Win 7 
Und dabei will ich doch grad vermeiden, ein Runtime vorrauszusetzen, indem ich statisch die Libraries einlinke, aber das mag Lua net...
Naja, heißt zum einen, dass ich wirklich einen Stack-Fehler habe, und zum anderen, dass ich noch ein Lua suchen muss, dass bei einem Stack-Fehler net sofort ohne Runtime abschmiert. Vielleicht kann hier ja irgendein Lua-Gesegneter damit etwas anfangen:

```
void CSkriptengine::callFunction(string File, string Funktionnname, int Param1)
         {
            int AnzahlParams = 0;
            lua_dofile(LuaInstance, File.c_str());
            lua_getglobal(LuaInstance,  Funktionnname.c_str()); /* function to be called */
            if(Param1 != -1)
            {
                lua_pushnumber(LuaInstance, Param1);
                AnzahlParams++;
            }


            int luaresult = lua_pcall(LuaInstance, AnzahlParams, 0,0);     /* call 'f' with 1 (0) arguments and 1 result */
            if(luaresult != 0)
            {
                string serror = "Problem beim Aufruf der Funktion " + Funktionnname + "() in der Datei " + File + " !!!\n";
                Log->ErrorOut(serror);
            }
        }
        bool LuaOK(lua_State * Lua, int Parameter, bool Warn = true)
        {
            bool OK = lua_gettop( Lua ) == Parameter;
            if(!OK)
            {
                if(Warn)
                {
                    string Error = "Parameter stimmen nicht überein: Falscher Aufruf durch Lua!!\nAnzahl erwarteter Parameter: ";
                    Error += Parameter + 48; Error += "\nAnzahl gegebener Parameter: "; Error += lua_gettop(Lua) +48 ; Error += "\n\n";
                    Log->ErrorOut( Error);
                
                }
                return false;
            }
            
            
            return true;
        }

       //Das hier wird im Lua Script aufgerufen, benutzt obige Funktionen
        int createPlayer(lua_State * Lua) //Gibt Nummer des neuen Spielers zurück
        {
            CEntity * Entity = CEngine::getActLevel()->createEntity();
            Entity->setMode(Mode_Player);
            if(LuaOK(Lua, 1, false)) //1 Parameter
            {
                string Path = lua_tostring(Lua, 1);
                Entity->setScript(Path);
                CSkriptengine::callFunction(Path,"init", Entity->getNumber());
            }
            lua_pop( Lua, lua_gettop( Lua ) );
            lua_pushnumber(Lua, Entity->getNumber());
            return 1;
        }
```
Ich hab auch ein bisschen am Rendern herumgeschrieben, jetzt gibts keine komischen "Sprünge" von den Bildern mehr, wenn sich die Figuren bewegen, durch eine virtuelle vertikale Achse durch den Spieler, bzw. den Bildern von den Spielern


----------



## Freddycbv (11. September 2012)

Hab jetzt mal das Projekt unter CodeBlocks (GNU GCC Compiler) erstellt, um mal vollständig unabhängig von den VS Runtimes zu sein.
Und damit läuft es dann auch unter WinXP 
Werd's in Zunkunft dann auch immer so machen, dass ich unter VS programmiere, und dann die GCC version weitergebe.

edit: Sorry für Doppelpost, wollte eig. editieren, irgendwie aber das Antworten-Feld erwischt .


----------

