Schönes Jump and Run erstellen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: Schönes Jump and Run erstellen

Beitrag von DarkSoul »

Das kann ich so nicht nachvollziehen. Das "Männchen" ist 13*23 px groß und wird auch so in alle Himmelsrichtung korrekt von der Kollisionserkennung erfasst.
Beim Fall (oder sonst) steht das "Männchen" auch korrekt auf dem Boden und versinkt nicht.
Dies ist nur beim Jump nötig: player\y = bottom - player\h - 1 ;Figur steht nun bündig auf dem Boden (1px Abstand)
Man kann (beim Sprung) auch (fast) immer sehen was unter einem ist. ????
Dein Spiel ist auch nicht kaputt. Kollisionserkennung macht, was sie soll. Ich meinte lediglich die Abstände zwischen dem Männchen und den Fensterrändern.
- Der Abstand zwischen männchen und linkem Fensterrand ist viel größer als der zum rechten Fenster.
- Das Männchen ist zu tief platziert. Wenn du hochspringst, wandert da Sprungziel manchmal aus dem sichtbaren Bereich heraus.
Das Männchen soll nur, wie es ist, ein wenig höher und horizontal mittig platziert werden.
Das ist gewöhnungsbedürftig, aber so schlecht finde ich das Sprungverhalten gar nicht.
Ich denke aber über ein dynamischeres (physikalisch besseres) Sprungverhalten nach.
Physikalisch korrekt wäre es:
1. Die Sprungbeschleunigung nimmt zuerst schnell zu (der Absprung mit dem Fuß), bis sie einen gewissen Wert erreicht hat (Je höher dieser ist, desto höher der Sprung).
2. Die Sprungbeschleunigung nimmt stetig ab, bis der Scheitelpunkt erreicht ist (Beschleunigung=0, das Männchen steht "ganz oben")
3. Die Sprungbeschleunigung geht weiter in den negativen Bereich; das Männchen fällt wieder.... Aber auch nur bis zu einem bestimmten Wert (ausprobieren, bis es realistisch wirkt)
4. Solange fallen lassen, bis der Boden erreicht ist (sobald er kollidiert ist, auf Bodenlevel setzen -> Sprungvorgang beendet, ggf. Aufprallsound abspielen.)
Stößt sich das Männchen während dem Sprung den Kopf, wird das Vorzeichen der Beschleunigung von + auf - gewechselt und der Fallvorgang wird eingeleitet.
Also hier scheinst du die alte Version zu meinen. Bei der "aktuellen Version" existiert so ein Verhalten nicht. Es gibt ein "Ammo" von 5 Bällen, die mit einem "Reload-Timer" verknüpft sind.
Ich habe getestet, was du zum Download angeboten hast (https://workupload.com/file/XT78mNE). Vermutlich hast du zwischenzeitig ein Update eingespielt.
Ach das ist doch ganz niedlich für die Auflösung. Du kannst aber auch Großbild nehmen: Kommentiere mal "OpenWindowedScreen(...)" aus und "OpenScreen(...)" ein.
Dass das geht, ist mir klar. Das sollte aber nicht über Code-Änderungen gemacht werden müssen. Besser wäre eine entsprechende Option im Spiel.
Die schöne Variante: Alt-GR + Return bei laufendem Spiel
Die dennoch akzeptable, einfachere Variante: Optionsauswahl speichern und zum Neustart des Spiels auffordern.
Ich habe mir deinen Source gar nicht angesehen, sondern getestet, wie es ist.

Hier noch ein paar Nachzügler:
- Ich kann mich nicht mehr bewegen, wenn ich auf einem der sich bewegenen Steinen stehe und geschossen habe.
- Die Hintergrundmusik klingt nach Blech. Es bringt nichts, eine schrottige MP3 in OGG mit hoher Bitrate zu verwandeln (oder du hast einen Schrott-Encoder für die OGG-Datei benutzt). OGGs sind normalerweise spätestens ab 128kbps ohne hörbare Verzerrungen :)

Ich habe mir mal den Code angesehen:

Code: Alles auswählen

If InitEngine3D()
  InitSprite()
EndIf
InitMouse()
InitKeyboard()
InitSound()
Hier musst du damit rechnen, dass kein DirectX vorhanden ist. Wenn einer der InitXXX() versagt, musst du dem User mitteilen, dass DirectX fehlt und das Spiel abbrechen.

Den großen if-Block in Tb_plotFrame() kann man auch eleganter lösen. So, wie du es mit der X-Koordinate machst, kannst du auch die Y-Koordinate behandeln <)

Die Tastatureingaben laufen um ein Frame versetzt. Die Abfrage sollte vor dem Rendern der Welt kommen und nicht zwischen Rendern und FlipBuffers().

Warum greifst du auf die Maus zu, wenn du sie doch nicht benutzt? :allright:
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Schönes Jump and Run erstellen

Beitrag von NicTheQuick »

DarkSoul hat geschrieben:Physikalisch korrekt wäre es:
1. Die Sprungbeschleunigung nimmt zuerst schnell zu (der Absprung mit dem Fuß), bis sie einen gewissen Wert erreicht hat (Je höher dieser ist, desto höher der Sprung).
2. Die Sprungbeschleunigung nimmt stetig ab, bis der Scheitelpunkt erreicht ist (Beschleunigung=0, das Männchen steht "ganz oben")
3. Die Sprungbeschleunigung geht weiter in den negativen Bereich; das Männchen fällt wieder.... Aber auch nur bis zu einem bestimmten Wert (ausprobieren, bis es realistisch wirkt)
4. Solange fallen lassen, bis der Boden erreicht ist (sobald er kollidiert ist, auf Bodenlevel setzen -> Sprungvorgang beendet, ggf. Aufprallsound abspielen.)
Stößt sich das Männchen während dem Sprung den Kopf, wird das Vorzeichen der Beschleunigung von + auf - gewechselt und der Fallvorgang wird eingeleitet.
Tut mir Leid, aber daran ist nichts physikalisch korrekt.
Normalerweise löst man das so, dass es eine globale Konstante gibt, die die Beschleunigung zur Erde definiert. Hier auf der Erde wäre das 9,81 m/s². Solange der Spieler nicht auf festem Boden steht, wird diese Konstante bei jedem Frame(*) auf die aktuelle Geschwindigkeit des Spielers drauf addiert/subtrahiert (je nach Vorzeichen). Das heißt der Spieler hat immer eine Position und eine aktuelle Geschwindigkeit. Möchte man jetzt springen, setzt man die Geschwindigkeit einmalig auf einen positiven Wert. Dadurch, dass die Geschwindigkeit pro Frame mit der Erdbeschleunigung verrechnet wird, fällt der Spieler von ganz alleine.

(*): Das funktioniert nur gut, wenn die Framerate konstant ist. Falls dies nicht gewährleistet werden kann, muss man die Zeit, die ein Frame benötigt, in die Kalkulation miteinbeziehen.
Bild
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Schönes Jump and Run erstellen

Beitrag von ccode_new »

Hallo, ihr Alle!

Ich habe bis jetzt einige viele Bugs behoben.
Vorwiegend Grafikbugs die teilweise auch nur unter Linux auftreten.

DarkSoul, deine Vorschläge( Sprung, Abstand) habe ich optimiert.
Aber:
Sprite_jnrMove(...) hat ja schon fast vollständig deinem beschriebenen Verhalten entsprochen.

Ein Beispiel mit vielen weiteren Änderungen wird noch folgen.
(muss vorwiegend noch ein paar nervende Fehler beheben)


Anmerkung (bis jetzt):
-InitEngine3D() (und alles was dazugehört) wurde entfernt
-Tribase-Engine wurde hinzugefügt
-Player_scrollMap wurde optimiert
-Player_jnr/ Player_move wurde optimiert
-

Code: Alles auswählen

If StartDrawing(ScreenOutput())
      DrawingMode(#PB_2DDrawing_AlphaChannel)
      Game_drawHUD()
      GameEvent_drawText()
      StopDrawing()
    EndIf
geht unter Linux nicht!!!!
-> wurde daher optimiert/entfernt und behoben
-> Auflösung(modus) wurde optimiert. (kein Stretch - weil 1. Hässlich und 2. nicht unter Linux möglich)
->Map/Tiles/Level wurden bearbeitet.
-... mehr kommt noch (bis zum Beispiel)

Frage: Wie kann ich tolle bewegbare Plattformen erstellen? (Springen und Fallen, etc muss funktionieren)
Ich kann mich nicht mehr bewegen, wenn ich auf einem der sich bewegenden Steinen stehe und geschossen habe.
->Dies ist leider noch nicht behoben. ("Down-Key" lässt den Spieler von der Plattform fallen)
Zuletzt geändert von ccode_new am 04.12.2016 20:06, insgesamt 3-mal geändert.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Re: Schönes Jump and Run erstellen

Beitrag von True29 »

und wo kann man sich die neue version anschauen ? ;)
i7,12gb ram , Windows 10 ,Purebasic 5.50
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Schönes Jump and Run erstellen

Beitrag von ccode_new »

Hier mal ein kleines Winter(Schnee)-Beispiel. (Das war der 1. Tribase-Test)

http://workupload.com/file/vNVKXvs
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: Schönes Jump and Run erstellen

Beitrag von udg »

nice obwohl das Männlein ganz schön klein ist :D

scrollen tut hier butterweich.
die Schneeflocken kommen ganz schön brutal herunter geschossen :D

mach doch den Schnee so (ein Xmas Demo das ich 2012 gemacht habe):
Google Drive:
https://drive.google.com/open?id=0B_iCX ... DJBSHJJM1U

FileUpload:
xmastro_inc_2012.rar


braucht DX9
ob Vollbild geht kann ich nicht sagen, da bei mir Vollbild abschmiert. Besser Fenstermodus anklicken

BITTE ca 15 Sec. Warten da wird gerechnet bevor es losgeht

Bild

:allright:
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Re: Schönes Jump and Run erstellen

Beitrag von True29 »

das mit den partikel ist so ne sache ;) hier hilft nur viel probieren und testen bis man hier erfahrungen hat oder halt einen partikel editor benutzen.
i7,12gb ram , Windows 10 ,Purebasic 5.50
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: Schönes Jump and Run erstellen

Beitrag von DarkSoul »

Frage: Wie kann ich tolle bewegbare Plattformen erstellen? (Springen und Fallen, etc muss funktionieren)
- Ermitteln, wo der Spieler draufsteht (ist ja durch die Kollisionsabfragen bereits bekannt). Steht er auf zwei Blöcken gleichzeitig, zählt der Block, wo er "mehr" draufsteht.
- Bewegt sich der Block? Den Spieler entsprechend mitbewegen (zusätzlich zur regulären Tastatureingabe!)
- Springen: Beim Absprung verliert der Spieler den Kontakt und er wird nicht mehr weiterbewegt. Der Spieler muss beim Fall selber dafür sorgen, dass er wieder auf die Plattform fällt. Physikalisch nicht ganz korrekt, aber in 99% der Jump&Runs so gelöst.
- Fallen: Entweder der Spieler läuft runter oder er wird vom Block heruntergeschoben.... Er verliert den Kontakt zum Block und fällt normal herunter.

Der Hang zum Herunterfallen muss immer gegeben sein. Es muss IMMER geprüft werden, ob der Spieler noch Boden unter den Füßen hat (es sei denn, er hat gerade Auftrieb durch Sprung, Raketenrucksack, Flügel etc.). Nicht nur nach erfolgtem Sprung. Dadurch weißt du bereits zu jeder Zeit, wo der Spieler draufsteht. :)
Bild
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: Schönes Jump and Run erstellen

Beitrag von udg »

True29 hat geschrieben:das mit den partikel ist so ne sache ;) hier hilft nur viel probieren und testen bis man hier erfahrungen hat oder halt einen partikel editor benutzen.
In meinem Code habe ich 1 Schneflocke als png Bild. diese mehrfach dupliziert und mit einem Sinus versehen. das Erscheinen geschiet random und speed angepasst.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Re: Schönes Jump and Run erstellen

Beitrag von True29 »

@udg sorry der kommentar war nicht zur sondern zum thread ersteller ;)
i7,12gb ram , Windows 10 ,Purebasic 5.50
Antworten