cool danke ich hoffe nur das es auch schon bei 3.30 funktioniertKonne hat geschrieben: Ein Code aus der Purearea der die Rahmen größe ermittelt.
SNOOKER (Billard, jetzt mit Netzwerkmodus[1vs1])
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Es hat zwar etwas lange gedauert aber in den letzten tagen hatte ich ein bisschen Zeit an Snooker weiter zu programmieren.
UPDATE AUF 1.31
Das Spiel kann jetzt auch im Netzwerk gespielt werden (1 Server, 1 Client)
Ein kleiner Chat ist auch mit dabei.
Bitte sagt mir ob ihr irgend welche Bugs findet, vor allem beim Netzwerk.
Ich würde mich auch freuen wenn jemand mit/gegen mich mal Snooker spielt
http://hometown.aol.de/Hmmpgutt/Snooker+1.31.zip
UPDATE AUF 1.31
Das Spiel kann jetzt auch im Netzwerk gespielt werden (1 Server, 1 Client)
Ein kleiner Chat ist auch mit dabei.
Bitte sagt mir ob ihr irgend welche Bugs findet, vor allem beim Netzwerk.
Ich würde mich auch freuen wenn jemand mit/gegen mich mal Snooker spielt
http://hometown.aol.de/Hmmpgutt/Snooker+1.31.zip
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
xperience2003
- Beiträge: 972
- Registriert: 04.10.2004 18:42
- Computerausstattung: Amiga, LinuxMint, Windows7
- Wohnort: gotha
- Kontaktdaten:
- HeX0R
- Beiträge: 3055
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Die Reibung ist für Snooker viel zu hoch.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
das liegt dann daran das dein PC zu schnell ist !HeX0R hat geschrieben:Die Reibung ist für Snooker viel zu hoch.
deswegen sieht es so aus als ob die Kugeln sehr schnell sind und damit auch schnell abbremsen.
Aber ist mir auch schon aufgefallen (bei langsamen PCs ist fast keine Reibung ^^)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Mal ne dumme Frage: warum machst Du die Geschwindigkeit dann nicht einfach Rechner unabhängig!?STARGÅTE hat geschrieben:das liegt dann daran das dein PC zu schnell ist !HeX0R hat geschrieben:Die Reibung ist für Snooker viel zu hoch.
deswegen sieht es so aus als ob die Kugeln sehr schnell sind und damit auch schnell abbremsen.
Aber ist mir auch schon aufgefallen (bei langsamen PCs ist fast keine Reibung ^^)
(Soll keine grundsätzliche Kritik an Deiner Arbeit sein. Bin schwer begeistert von Deinen Projekten
Mal ne dumme Frage zurück ^^, wie soll ich das machen oder besser wie geht das.Hades hat geschrieben: Mal ne dumme Frage: warum machst Du die Geschwindigkeit dann nicht einfach Rechner unabhängig!?
Mit SetFrameRate(FrameRate) alleine geht das nicht.
hast du schon 1.32, da habe ich nämlich die FrameRate auf 50 gesetzt müsste dann besser sein
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Ah fein, darum frag ich.
Du gehst folgendermaßen vor:
Anstatt zu überlegen wie schnell sich die Kugeln pro Frame bewegen, überlegst Du wie weit sie sich z.B. pro Millisekunde bewegen sollen. Dann multiplizierst Du diese Strecke mit der Zeit, die der letzte Frame gedauert hat. Dann hast Du den Weg, den die Kugel in der Zeit zurückgelegt hat.
Wenn auf einem schnellen Rechnern ein Frame weniger lange dauert, bewegt sich die Kugel in der Zeit dann auch weniger weit.
ElapsedMilliseconds() wäre eine Möglichkeit die Zeit zu messen, ist aber sehr ungenau.
Besser wäre es hiermit:
Das rufst Du einmal am Programmstart auf, um das Ganze zu initialisieren.
Am Start eines Frames schreibst Du dann z.B.:
Und am Ende:
FrameTime enthält dann die vergangene Zeit in Millisekunden.
Achtung! Du solltest überprüfen ob FrameTime einen bestimmten Wert (z.B. 100) überschreitet, und FrameTime dann auf diesen Wert begrenzen, so das Deine Kugeln sich nach einem Hänger des Rechners nicht 10 Kilometer weit bewegen wollen.
cu
Hades
Du gehst folgendermaßen vor:
Anstatt zu überlegen wie schnell sich die Kugeln pro Frame bewegen, überlegst Du wie weit sie sich z.B. pro Millisekunde bewegen sollen. Dann multiplizierst Du diese Strecke mit der Zeit, die der letzte Frame gedauert hat. Dann hast Du den Weg, den die Kugel in der Zeit zurückgelegt hat.
Wenn auf einem schnellen Rechnern ein Frame weniger lange dauert, bewegt sich die Kugel in der Zeit dann auch weniger weit.
ElapsedMilliseconds() wäre eine Möglichkeit die Zeit zu messen, ist aber sehr ungenau.
Besser wäre es hiermit:
Code: Alles auswählen
Procedure InitGameTimer()
Protected _GT_DevCaps.TIMECAPS
timeGetDevCaps_(_GT_DevCaps,SizeOf(TIMECAPS))
timeBeginPeriod_(_GT_DevCaps\wPeriodMin)
EndProcedure
Am Start eines Frames schreibst Du dann z.B.:
Code: Alles auswählen
FrameStart.l = timeGetTime_()Code: Alles auswählen
FrameTime.l = timeGetTime_() - FrameStartAchtung! Du solltest überprüfen ob FrameTime einen bestimmten Wert (z.B. 100) überschreitet, und FrameTime dann auf diesen Wert begrenzen, so das Deine Kugeln sich nach einem Hänger des Rechners nicht 10 Kilometer weit bewegen wollen.
cu
Hades