AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte [Game] Gefangen in der virtuellen Welt (mit Source)
Thema durchsuchen
Ansicht
Themen-Optionen

[Game] Gefangen in der virtuellen Welt (mit Source)

Ein Thema von halinchen · begonnen am 9. Okt 2007 · letzter Beitrag vom 13. Dez 2009
Antwort Antwort
Seite 9 von 22   « Erste     789 101119     Letzte »    
Benutzerbild von halinchen
halinchen
Registriert seit: 13. Jun 2006
[Game] Gefangen in der virtuellen Welt Version 1.5.10.56

In diesem kleinen Spiel geht es um einen Wissenschaftler, welcher dank einer selber gebastelten Maschine in die Virtualität eindringen kann. Allerdings verläuft nicht alles nach Plan. Den er kann leider nicht mehr entkommen. Der einzige Ausweg ist das Spiel zu gewinnen, in dem er sich befindet und dabei den Highscore zu knacken.

Etwas eigenwillige Geschichte, aber ich hoffe es testet trotzdem jemand .

Steuerung
Gesteuert wird das Spiel mit den Pfeiltasten.
Schalter (diese Kästen welche rot oder grün leuchten) kann man mit der Leertaste umlegen. Dadurch werden Blöcke im Spiel (un)sichtbar. Z ist Freitod.

Ziel des Spieles
  • Das E (steht für Exit) erreichen
  • Möglichst viele Punkte erreichen (irgendwie logisch... )
    • Gegner besiegen
    • Münzen einsammeln

Gegner kann man durch einen einfachen Sprung auf den Kopf besiegen. (Bei Gegner höheren Levels muss man mehrmals draufspringen.)


Genutzte Fremdunits
  • DEC-Unit von Hagen Reddmann
  • DGL SDK (OpenGL - Header)
  • BASS.DLL
  • TextSuite (c) Steffen Xonna (http://www.opengl24.de/)

Screenshots
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4

Schreibrechte
Das Spiel benötigt Schreibrechte im Verzeichnis um die SaveGames in die Datei "SaveGames.sav" zu speichern.
Der Updater braucht logischerweise auch Schreibrechte. (Ich finde es blöd, wenn Freeware Ordner zumüllt in die man fast nie reinguckt. Deswegen hab schreibe ich direkt ins Anwendungsverzeichnis. Ich bitte um Verzeihung... )

Link zur Seite: http://stefan315.st.funpic.de/Gefangen/index.htm (Da gibt's auch den Sourcecode)

Setup: Direktlink (1.901 MB)
ZIP: Direktlink (1.938 MB)

Ich würde mich über Feedback freuen!

//edit 37 : Ich habe mal das Attachment hier gelöscht. Da muss ich die Datei nicht immer mehrmals hochladen. (Bei DSL 2000 dauert das auch immer noch recht lang)
 
Benutzerbild von halinchen
halinchen

 
Delphi 2007 Professional
 
#81
  Alt 17. Nov 2007, 09:48
Zitat von Avicenna:
Hallo,
seit der neuen [Musik-]Version kann man sich nicht mehr in die Highscore eintragen.
Ich bin nicht mehr in Übung...

Zitat von Avicenna:
Ich will ja nur ungern gleich wieder herumnörgeln, aber die Musik passt wirklich nicht.
Das denke ich auch. Leider ist es auch nicht so leicht passende Musik zu finden. Die Sounds sollten dann auch noch dazu passen.

Zitat von Avicenna:
Außerdem ist sie zu sehr im Vorderung. Ich würde eine dezentere Musik bevorzugen, oder eine, die nicht durchgehend ist, z. B. fängt sie bei jedem Level neu an und spielt sich dann nur einmal durch.
Ich dachte eine Loop-Variante ist für Spiele gerade besser. Ich kann die Backgroundmusik leiser machen. (Schon nur auf 25%) Ich weiß nicht ob du das meinst, aber ich denke du willst einfach einen andere Musik.

Zitat von Avicenna:
Außerdem empfinde ich den Ton des Schmerzens (wenn man Lebenspunkte verliert) zu realistisch.
Du meinst also doch alles im Comic-Style? Ich bin noch auf der Suche.

Sehen wir die jetzige Version als "Test" an .


edit: Noch ein Bug: Level Laden geht nicht mehr korrekt.
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

 
Delphi 2007 Professional
 
#82
  Alt 19. Nov 2007, 15:36
Ich hab mal neues Sounds gemacht.
Diese sind allerdings nur über das Update-Programm erhältlich.

Ich wollte nämlich das Timebased-Movement einbauen.
Näheres dazu hier.

Das Problem ist nun die Kollision.
ImBomberman-Tutorial ist beschrieben, das man die Funktion IsValid aufruft und erst wenn es true liefert wird die Position gesetzt.

Bei meinem Spiel geht das nicht, da man sich z.B 5 Pixel nach rechts bewegt. Ist aber nach 2 Pixel eine Wand, sagt die Funktion: "Nö". Man würde also 2 Pixel vor der Wand stehen bleiben und könnte nicht ganz ran.
Im Moment gehe ich Pixel für Pixel durch und checke immer. Da ich aber aufgrund des Timebased Movement mit Gleitkommazahlen rechnen muss gehe ich in 0,001er Schritten vor.
Entweder ist das zu ungenau, oder es ist vielleicht doch was anderes...

Ich muss mal irgentwo ein 2D-OpenSource-Spiel suchen, wo ich das lernen könnte.
Falls das auch nix hilft, frage ich mal im DGL-Forum nach (Das Problem ist, im Moment kenne ich das Problem noch nicht richtig). Da kann doch nicht so schwer sein.

@Avicenna: Was sagst du zu den Sounds? Vielleicht noch nicht 100%, aber doch schon besser, oder?
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#83
  Alt 19. Nov 2007, 15:54
Um Timebased-Moving zu erreichen solltest du auf jeden Fall alle Koordinaten in Floats umwandeln - dann sollte das mit der Kollision auch kein Problem sein.

Ich habe mal ein kleines Jump & Run Spiel von mir angehängt, in dem ich Timebased Moving verwende - vielleicht hilft es dir etwas.
Angehängte Dateien
Dateityp: zip tmp_343.zip (928,7 KB, 43x aufgerufen)
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

 
Delphi 2007 Professional
 
#84
  Alt 19. Nov 2007, 15:59
@igel457: Super! Danke!

Das werde ich mir mal ansehen.

Die Zahlen hab ich schon in Floats umgewandelt. Aber es mangelt vielleicht auch noch an der Logik. (Vieleicht mache ich das mal wieder schwerer als es ist. )
  Mit Zitat antworten Zitat
Avicenna
 
#85
  Alt 19. Nov 2007, 16:50
Also alle Effekt-Sounds sind auf jeden Fall besser (das Klingeln der Münzen ist super!).

Die Hintergrundmusik finde ich aber etwas zu... ich weiß nicht wie ich es ausdrücken soll. Sie passt zwar etwas besser, klingt aber so schrecklich. Solch eine Musik kommt in Krimis vor, ind enen gleich schreckliche Dinge passieren.
Wenn ich mich zwischen den beiden Hintergrounds entscheidne müsste, würde ich auf jeden Fall den ersten vorziehen.

Gruß,
Avicenna


P.S.: In Level 3 am Anfang ist es furchtbar langweilig zu warten, bis der Gegner aus dieser Bucht herauskommt. [Evtl. etwas weiter vorne hinsetzen].
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

 
Delphi 2007 Professional
 
#86
  Alt 19. Nov 2007, 17:22
Zitat von Avicenna:
Also alle Effekt-Sounds sind auf jeden Fall besser (das Klingeln der Münzen ist super!).
Da gibt es aber noch ein Problem. Ich habe für jedes Geräusch einen Channel. Wenn ich aber nun schnell Münzen hintereinander einsammel gehen im Moment 2 Dinge:
a) immer warten bis der Sound fertig ist -> wirkt nicht. Wenn man z.B. 5 Münzen schnell einsammelt spielt es nur 1x den Sound
b) Sound restarten -> besser, aber es klingt komisch.
am besten wäre für jede Münze einen Channel belegen und dann so machen, das sich das Münzgeklappere überlappt. (Ist etwas schwer zu beschreiben, aber ich denke ihr wisst was ich meine)

Zitat von Avicenna:
P.S.: In Level 3 am Anfang ist es furchtbar langweilig zu warten, bis der Gegner aus dieser Bucht herauskommt. [Evtl. etwas weiter vorne hinsetzen].
Kann ich. Aber ich mach erstmal eins nach dem anderen.

Zur Musik: Ich guck mal.

@igel457: Das lässt sich zwar nicht kompilieren, aber ich kann das recht gut verstehen. Hat mir schon sehr geholfen!
edit: Ich hab mir mal Andorra heruntergeladen, jetzt geht's.
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

 
Delphi 2007 Professional
 
#87
  Alt 19. Nov 2007, 18:18
@igel457:

Ich bin jetzt mal bei DoMove in Sprites.
Am Anfang (Zeile 210 bis 231) berechnet er die Geschwindigkeit in die er nach unten fällt.
Dann verlangsamt er die X-Geschwindigkeit der Spielfigur.
Dann guckt er, ob er ein anderes Bild einsetzen muss.
Z 261: Er setzt die Bewegung in Richtung der X-Achse, welche er oben verlangsamt hatte.
Dann setzt er die Werte auf die Spielfigur. (Hier ist der Punkt, wo das passieren kann, was im Anhang dargestellt ist, oder?)
Dann guckt er ob er irgendwo kollidiert.

Ab Z 269 verstehe ich das nicht mehr.
Er hat nun also Collision aufgerufen und hat dort FColSides gesetzt.
Was bewirktX := X - movvect.x; ? movvect wurde doch in der Prozedur Collision gar nicht geändert.
Miniaturansicht angehängter Grafiken
bild1_128.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#88
  Alt 19. Nov 2007, 18:33
Delphi-Quellcode:
//Verschiebt die Figur temporär an die neu berechnete Position
X := X + movvect.x;
Y := Y + movvect.y;

//Prüft, ob es an dieser Position eine Kollision gibt
FColSides := [];
Collision;

//Wenn ja, dann wird das Sprite wieder entsprechend zurückgesetzt - die Bewegung hat die Figur schließlich in eine Kollision hereinlaufen lassen
if (csLeft in FColSides) or (csRight in FColSides) then
begin
  X := X - movvect.x;
  FV.x := 0;
end;
if ((csBottom in FColSides) and not (FStartJump > 0)) or (csTop in FColSides) then
begin
  Y := Y - movvect.y;
end;
//Wenn es keine Kollision gegeben hat, wird die Figur an der berechneten Position belassen - schließlich ist sie nicht Kollidiert.
Das Prinzip an sich sollte recht gut sein, in meinem Progrämmelchen ist es allerdings nicht so perfekt implementiert - die Figur hängt zum Beispiel teilweise an den Steinen am Rand fest. Es soll ja aber auch mehr so als "Anregung" dienen und ich hoffe, du kannst damit etwas anfangen .
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

 
Delphi 2007 Professional
 
#89
  Alt 19. Nov 2007, 18:37
Zitat von igel457:
Es soll ja aber auch mehr so als "Anregung" dienen und ich hoffe, du kannst damit etwas anfangen .
Und wie. So werde ich das erstmal implementieren. Für Verbesserungen ist später ja immer noch Zeit .

Nochmal Danke, du hast mir sehr geholfen!
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

 
Delphi 2007 Professional
 
#90
  Alt 28. Nov 2007, 15:00
So jetzt gibt es die Version 1.3.0.0.

[+] Timebased-Moving
[-] bewegbare Blöcke

Tja, viel zu sagen gibt es nicht. Ich habe quasi die gesamte Klasse neu geschrieben, welche für die Bewegbaren Objekte zuständig war. Dann mussten natürlich im Rest des Codes auch noch Anpassungen vorgenommen werden. Eigentlich war das Programm schon eher fertig, ich hatte allerdings vergessen to in downto zu ändern. Und so ging das nicht so wie ich wollte.

Das Handling fühlt sich jetzt komplett anders an. Die Schwierigkeit hat sich auf jeden Fall geändert. Ich schätze die Figur springt etwas höher (dafür langsamer) und man bekommt nicht so viel beim Herunterfallen abgezogen.

Eigentlich wollte ich die Spielfigur (also jetzt die, die man als User steuert) 32x32 Pixel groß machen. Naja, ich hätte 4 Grafiken neumachen müssen. Und ich glaube ihr wölltet die nicht sehen. Sie sahen noch erbärmlicher aus, als die jetzigen. Vielleicht später einmal.

Die Sounds hab ich noch nicht geändert.

Ein Bug ist mir im Moment bekannt: Sobald man ESC drückt und ne Weile wartet und dann auf Nein klickt, bekommt man Gesundheit abgezogen. Der Zeitfaktor wird durch das nicht neu zeichnen des Spiels sehr groß. Dann wird der nach unten Wert mit einem großen Wert multipliziert und dann erkennt das Spiel, das man den Boden berührt. Naja, es denkt eben man würde mit einer großen Geschwindigkeit herunterfallen.

Achja, die bewegbaren Blöcke habe ich erstmal rausgelassen. Da muss ich mir noch ein neues System überlegen.

Wen es interesiert, wie ich die Kollision mache, habe ich hier ein Bild: *klick mich*

Es wird auch in der nächsten Zeit den aktuellen Sourcecode online stellen.

//edit: Das Intro ist auch nicht neugemacht. Also nicht wundern, das die Figur auf einmal in der Luft verschwindet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 9 von 22   « Erste     789 101119     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz