DUNE 2077

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Macros hat geschrieben:Genau parallel, aber die Rechenleistung deines Computers erhöht sich nicht. :wink:
wie meinst du das, das wollte ich ja eigendlich wissen ob am eine Berechnung die ca. 2s dauert so als Thread machen kann das das Hauptprogramm ohne stocken weiter läuft ?
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
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Wenn du rechenleistungsintensive Aufgaben im Tread erledigen lässt,
wirkt sich dass auch auf dein Hauptprogramm aus.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Macros hat geschrieben:Wenn du rechenleistungsintensive Aufgaben im Tread erledigen lässt,
wirkt sich dass auch auf dein Hauptprogramm aus.
das heißt es hat überhaupt keinen zweck oder wenig, wenn die die komplette Wegberechnung als Tread laufen lasse.

Ich habe es nämlich schon umprogrammiert und es wurde ehr noch langsammer :freak:
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
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Du kannst jedem Thread eine andere Priorität geben. Allen anderen
Threads neben dem Hauptthread würde ich also einen Priorität unter 16
geben, also entweder 15 oder auch 14. Das musst du dann ausprobieren.
Benutzeravatar
Hades
Beiträge: 100
Registriert: 21.05.2005 11:54

Beitrag von Hades »

das heißt es hat überhaupt keinen zweck oder wenig, wenn die die komplette Wegberechnung als Tread laufen lasse

Ich habe es nämlich schon umprogrammiert und es wurde ehr noch langsammer


Also eigentlich sollte es nicht wesentlich langsamer sein. Schneller wird es aber natürlich nur, wenn Du mehr als einen Prozessor (core) zur Verfügung hast.

Die Wegberechnung als extra Thread laufen zu lassen finde ich sogar eine sehr gute Idee. :allright:
Du könntest sogar die komplette KI in einem extra Thread laufen lassen. Es ist doch gar nicht notwendig, dass das Programm auf die Entscheidung einer einzelnen Einheit wartet. Die überlegt dann halt einen kurzen Augenblick. :D

Damit könntest Du sehr einfach erreichen, dass das Programm mit konstanten fps durchläuft, und nicht immer wieder stockt. Ok, bei nem RTS ist das nicht ganz so wichtig wie bei Spielen in EGO-Perspektive, aber dennoch schön zu haben. :mrgreen:
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

aha gut danke für eure Hinweise :allright:
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
Benutzeravatar
SDX
Beiträge: 95
Registriert: 14.01.2005 18:37
Wohnort: Bremen
Kontaktdaten:

Beitrag von SDX »

Also erstmal: echt Klasse, was Du da auf die Beine gestellt hast. Ich hab selbst schon mal angefangen ein RTS zu basteln. Hab's aber wegen Zeitmangel und Freundin (Zitat:"Du sitzt ja den ganzen Tag nur vor'm Rechner...bla") abgebrochen. Meins war Hexagonal aufgebaut... fand ich hübscher :D und sollte ne eigenständige Story bekommen, nämlich Vampiere gegen Werwölfe (ein wenig and den Film Underworld angelehnt).
STARGÅTE hat geschrieben:nach dem ich mich jetzt schon 3 Tage nur mit der Kollision und Wegsuch beschäftigt habe ist mir jetzt (5:15 :freak: ) aufgefallen das ich einfach nur "scheiße" berechnet habe (sin() mit cos() vertauscht), da ich aber noch ein paar Winkelkorrekturen mit drinne hatte (jetzt weg) ist das nicht so doll aufgefallen....
Wenn Du noch ein wenig Rechenzeit brauchst, kannst Du hier optimieren. Sin und Cos würde ich in Tabellen vorberechnen (einfach ein array z.B. Dim _Sin(360) (hier kannst du auch gleich auf Grad umrechnen :allright: )). Das hab ich mal ausgetestet und es ist ca. 5 bis 10 mal so schnell!!! Nur nicht mit Floats arbeiten!

Noch ein kleiner Tipp: x*0.01 ist um ca. 20% schneller als x/100

Vielleicht hier und da noch mit Pointern arbeiten, das beschleunigt einige Sachen enorm (hab mal ein Programm geschrieben um Sprites umzufärben, also z.B. alles was Rot ist Blau machen), da hat das Einsetzen von Pointern die ganze Sache EXTREM beschleunigt (Faktor 100 oder so... war auf jeden Fall fantastisch).

Benutzt Du StartDrawing() irgendwo? Raus damit! Das bremmst übelst.

Und wie siehts aus mit ClearScreen()? Kannst Dir sparen, wenn Du eh den ganzen Screen neu malst. Das bringt Dir auch nochmal ein ganz klein wenig.

... und besorg Dir UNBEDINGT die aktuelle Version von PB :wink:
.oO SDX Oo.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

erstmal danke für die Beschleunigungshinweise
obwohl ich mit der Array(360) für sin und cos überhaupt nicht zufrieden bin. Ich finde es besser wenn ich das direkt berechne außerdem muss ich doch wenn ich ein Array nehme erst int() benutzen oder ?

Code: Alles auswählen

SinWert(Int(Winkel))
weil meine winkel meisten im 1/10 bereich sind

StartDrawing() benutze ich nur im Menü aber im Spiel habe ich inzwischen alles rausgenommen das wusste ich schon.

Das X*0.01 schnelle ist ist mir auch schon aufgefallen aber ist es wirklich ausschlaggebend :roll: ? Klar auch 100 kleine Verbesserungen ergeben später eine sichtbare beschleunigung :allright:

Aber das mit den Pointern bei Sprites verstehe ich nicht.
HINWEIS: Im ganzen Spiel veränder ich bei keinem Sprite die Farbe.
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
Benutzeravatar
SDX
Beiträge: 95
Registriert: 14.01.2005 18:37
Wohnort: Bremen
Kontaktdaten:

Beitrag von SDX »

STARGÅTE hat geschrieben:erstmal danke für die Beschleunigungshinweise
obwohl ich mit der Array(360) für sin und cos überhaupt nicht zufrieden bin. Ich finde es besser wenn ich das direkt berechne außerdem muss ich doch wenn ich ein Array nehme erst int() benutzen oder ?

Code: Alles auswählen

SinWert(Int(Winkel))
weil meine winkel meisten im 1/10 bereich sind...
Um die Genauigkeit zu verbessern, bzw. diese Methode erst überhaupt sinnvoll zu machen sollte man die Werte vorher mit 100 multiplizieren und beim benutzen wieder durch 100 teilen (bzw. mit 0.01 multiplizieren :wink: ).
STARGÅTE hat geschrieben:...StartDrawing() benutze ich nur im Menü aber im Spiel habe ich inzwischen alles rausgenommen das wusste ich schon.
:allright:
STARGÅTE hat geschrieben:...Das X*0.01 schnelle ist ist mir auch schon aufgefallen aber ist es wirklich ausschlaggebend :roll: ? Klar auch 100 kleine Verbesserungen ergeben später eine sichtbare beschleunigung :allright:
Jup...
STARGÅTE hat geschrieben:...Aber das mit den Pointern bei Sprites verstehe ich nicht.
HINWEIS: Im ganzen Spiel veränder ich bei keinem Sprite die Farbe.
Also das mit den Sprites war nur ein Beispiel von mir, wo ich gemerkt habe, daß wenn man via Pointern und direktes schreiben in den Speicher einiges an Zeit sparen kann.

Hier mal ein "Bauhof" aus meinem Spiel... andere Gebäude hatte ich noch nicht :freak:
Bild
Eventuell werde ich jetzt weitermachen mit meinem Spiel. Ich hoffe, ich kann dann auf Dein Wissen zurückgreifen, was die Programmierung von RTS betrifft.
.oO SDX Oo.
Benutzeravatar
Sylvia
verheiratet<br>1. PureGolf-Gewinner
Beiträge: 487
Registriert: 29.08.2004 09:42
Wohnort: Old Europe

Beitrag von Sylvia »

Ich bin zu blöd. Das Spiel verstehe ich nicht ! Keine Ahnung was ich tun muss.
Nirgendwo eine "So gehts"-Readme. :freak:

Kann jemand mal das Spiel erklären ? Und wenn möglich so, dass es auch jemand
versteht, der noch nie so ein Spiel gespielt hat. :shock:
Basic Pur = PureBasic
Antworten