Delphi-PRAXiS
Seite 9 von 22   « Erste     789 101119     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   [Game] Gefangen in der virtuellen Welt (mit Source) (https://www.delphipraxis.net/101180-%5Bgame%5D-gefangen-der-virtuellen-welt-mit-source.html)

halinchen 17. Nov 2007 09:48

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

Zitat von Avicenna
Hallo,
seit der neuen [Musik-]Version kann man sich nicht mehr in die Highscore eintragen.

:wall: Ich bin nicht mehr in Übung...

Zitat:

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:

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:

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


edit: Noch ein Bug: Level Laden geht nicht mehr korrekt.

halinchen 19. Nov 2007 15:36

Re: [Game] Gefangen in der virtuellen Welt (mit Source)
 
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... :gruebel:

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?

igel457 19. Nov 2007 15:54

Re: [Game] Gefangen in der virtuellen Welt (mit Source)
 
Liste der Anhänge anzeigen (Anzahl: 1)
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.

halinchen 19. Nov 2007 15:59

Re: [Game] Gefangen in der virtuellen Welt (mit Source)
 
@igel457: Super! Danke! :thumb:

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. :mrgreen: )

Avicenna 19. Nov 2007 16:50

Re: [Game] Gefangen in der virtuellen Welt (mit Source)
 
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].

halinchen 19. Nov 2007 17:22

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

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:

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! :thumb:
edit: Ich hab mir mal Andorra heruntergeladen, jetzt geht's.

halinchen 19. Nov 2007 18:18

Re: [Game] Gefangen in der virtuellen Welt (mit Source)
 
Liste der Anhänge anzeigen (Anzahl: 1)
@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 bewirkt
Delphi-Quellcode:
X := X - movvect.x;
? movvect wurde doch in der Prozedur Collision gar nicht geändert.

igel457 19. Nov 2007 18:33

Re: [Game] Gefangen in der virtuellen Welt (mit Source)
 
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 ;-).

halinchen 19. Nov 2007 18:37

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

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!

halinchen 28. Nov 2007 15:00

Re: [Game] Gefangen in der virtuellen Welt (mit Source)
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:38 Uhr.
Seite 9 von 22   « Erste     789 101119     Letzte »    

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