[Projekt] 2D-Adventure

Freddycbv

Komplett-PC-Aufrüster(in)
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 :D.

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

Anhang anzeigen Game.zip
 
Zuletzt bearbeitet:
1) Hi :D
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 :fresse:
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 :ugly: Warte vielleicht lieber mal bis jemand aus dem 2D-Bereich etwas posten tut ^^
 
Facebook war jetzt halt der erste Testgegner, bevor wir uns an die Lehrer wagen :D
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 :D Nach nochmaligem Googeln habe ich jetzt die SDL-Erweiterung SDL_gfx gefunden, mal schaun, ob das Skalieren damit besser geht.
 
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 :D
Aber sonst echt klasse das Projekt. Ich selber kann nur im DOS-Fenster proggen da ich an meiner "hochmordernen" Schule nur sowas lerne :daumen2:
 
:D 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 :D
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 :D

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 :D.
Jetzt noch ein bisschen umschreiben, nachher hab ich dann eine Version mit komplett variabler Auflösung :D


//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 :D 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 :D
 
Zuletzt bearbeitet:
Ich selber kann nur im DOS-Fenster proggen da ich an meiner "hochmordernen" Schule nur sowas lerne :daumen2:

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.
 
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.
 
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 :D
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 :D
 
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.
 
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 :daumen2:) 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 :D
Ich hätte schon mal Lust, auszuprobieren, ob ich mein "Spiel" (bis jetzt sieht man ja noch nicht viel davon :ugly:) 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 :)
 
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. ;)
 
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 :D
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 :D

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?
 
Zuletzt bearbeitet:
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.


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 :kotz:
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...


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 :ugly:.
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.


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 ;)
 
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 :kotz:
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...
 
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 :ugly:)
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.

Anhang anzeigen Game_0001.zip

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
 
Zuletzt bearbeitet:
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!
 
hab ich verschlafen?
Neee - nur die Ferien genossen :D

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 :what:
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.
 
Zurück