Autor Beitrag
g1o2k4
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 493



BeitragVerfasst: So 25.03.07 14:55 
hi mal ne frage an den schöpfer des spiels:

ist nur bei mir die performance so schlecht bei vielen türmen oder auch bei anderen ? was ist das prinzip hinter dem abfeuern von geschossen ? timer ??? ich meine intel cpu haben maximal ca 30 benutzbare timer. d.h. wenn man mehr benutzt wird das software mäßig gelöst und das nimmt viel rechenleitung in anspruch.
ich hab immerhin nen 3.2 ghz xeon, daran kanns ja also schlecht liegen. aber ich hab jetzt ca 34 tower und eine sekunde dauert im spiel ca. 11sekunden... das kann doch nicht normal sein. also wie gesagt ich tippe auf zu viele timer, vielleicht könntest du das ja anders lösen.
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: So 25.03.07 15:20 
user profile icong1o2k4 hat folgendes geschrieben:
ist nur bei mir die performance so schlecht bei vielen türmen oder auch bei anderen ?

Nicht nur bei dir. Bei mir auch. So ab Level 40 geht das los.
Fabian E.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 554

Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
BeitragVerfasst: So 25.03.07 15:24 
das liegt an den vielen shapes und images... :(
Backslash
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 202

WIN XP
Delphi 5 Ent, Delphi 2005 Prof
BeitragVerfasst: So 25.03.07 15:45 
also auf meinem Pentium M 735 mit 1,7 GHz Prozessor im Notebook und der ATI Mobility Radeon 9800 läuft die Sache prima. Erst ab Wave 90 oder 120 ruckelt es da wirklich.

Problematisch wird es auf meinem 1,8 Ghz Pentium 4 Rechner mit ner GForce 3 Grafikkarte. Da laufen die Creeps von vorn herein nur halb so schnell.
Stefan-W
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 475

Win 7 SP1
D2005 PE
BeitragVerfasst: So 25.03.07 15:50 
es scheint es hängt auch von der Laufzeit des Programms ab. wenn ich das Spiel ein Dutzend mal neubeginne dann wird es auch schon von Anfang an langsamer
Fabian E.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 554

Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
BeitragVerfasst: So 25.03.07 15:54 
user profile iconStefan-W hat folgendes geschrieben:
es scheint es hängt auch von der Laufzeit des Programms ab. wenn ich das Spiel ein Dutzend mal neubeginne dann wird es auch schon von Anfang an langsamer

dann scheint user profile iconjann1k da nicht wieder alles freizugeben...
bei mir ruckelts wirklich erst ab 110-120...
Pentium D 2x3,4Ghz
Geforce 7900GTX
2gb ram
Backslash
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 202

WIN XP
Delphi 5 Ent, Delphi 2005 Prof
BeitragVerfasst: So 25.03.07 16:04 
Hier im Forum gibt es doch schon einen Thread mit ner fertigen 2d-Engine. Vielleicht hilft sowas ja. Wenn die Engine gut ist (sprich eine "echte" Engine), arbeitet sie zwangsläufig mit Performancecountern. Genau das fehlt hier, statt immer wieder zu berechnen und gleich drauf zu rendern. Timer sind da sehr (!) ungenau.

Die Sache mit den Performancecountern ist vom Prinzip her eigentlich ganz einfach.

Beispiel:
1. Du Speicherst in einer Variable TimeA mit Gettickcount die aktuelle Zeit ab.
2. Du zeichnest das aktuelle Frame auf das Formular
3. Du berechnest sämtliche Objekte in einem Frame, sprich Schusssalven, Ob ein Turm gerade feuert, ob ein Creep in Reichweite (Position der Objekte wird später bestimmt). Der Schaden, den ein Treffer auslöst wird hier auch bestimmt.
4. Du speicherst in einer Variable TimeB die aktuelle Zeit mit Gettickcount ab.
5. Du berechnest die Differenzen der verstrichenen Zeit (ZeitB - ZeitA).
6. Du wendest die Zeit auf die Positonen der Objekte an: Wenn ein Schuss beispielsweise 5 m/s fliegt, musst du die verstrichene Zeit entsprechend auf die Position des Objektes "Anwenden". (natürlich alle Objekte updaten)

Beispiel: Ein Creep fliegt 5 m/s. Das Berechnen eines Frames (ZeitB - ZeitA) hat eine Sekunde gedauert. Also ist der Creep am Ende
der Berechnung einen Meter weiter. (von mir aus Object.X := Object.X + 1, du verstehst was ich meine)

7. Fange mit Punkt 1 wieder an

Für diese Sache brauchst du nicht unbedingt Timer. Du kannst während der Berechnung und Zeichnung eines jeden Frames gleich die aktuellen Tastatureingaben und Mauseingaben gliech mit einbeziehen.


Ich hoffe das war soweit korrekt was ich da erzählt hab :P

Gruß

Backslash
Fabian E.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 554

Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
BeitragVerfasst: So 25.03.07 16:14 
redest du jetzt vom Timebasedmovement? :gruebel:
oder was hast du da jetzt genau gemeint?
das mit der engine wird für ihn so gut wie unmöglich sein...was diese engine kann sieht man ja an meinem klon...
--> www.delphi-forum.de/viewtopic.php?t=70976
das ganze ist sowas von performant das geht ga net ;)
ansonsten zur korrektheit ;) auf TBM bezogen stimmts ;) aber ka was du wirklich sagen wolltest... iwas zur performance? :lol:
g1o2k4
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 493



BeitragVerfasst: So 25.03.07 16:16 
wenn ich das spiel starte werden 4mb im arbeitsspeicher belegt. bei wave 40 sind schon 8-9mb. vielleicht sollte man statt shapes was anderes nehmen. kreise die er selbst generiert und danach wieder löscht oder sowas in der art.
Fabian E.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 554

Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
BeitragVerfasst: So 25.03.07 16:20 
das ist ja gerdae das problem mit der VCL...sie ist sehr langsam...
und speicherhungrig...
wenn du dann so an die 100 schüsse + 50 tower + 15 gegner hast...
das summiert sich...
g1o2k4
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 493



BeitragVerfasst: So 25.03.07 17:10 
hmm wie wärs denn wenn man mal über eine visualisierung mit directdraw nachdenkt oder alles in canvas macht ?
Fabian E.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 554

Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
BeitragVerfasst: So 25.03.07 17:49 
user profile icong1o2k4 hat folgendes geschrieben:
hmm wie wärs denn wenn man mal über eine visualisierung mit directdraw nachdenkt oder alles in canvas macht ?


wie gesagt...
was ich bis jetzt so von user profile iconjann1k gehört habe dürfte das nicht so einfach werden...außerdem hat er glaub keine ahnung von sowas...
canvas wäre eine möglichkeit...
aber ich denke auch das wäre recht kompliziert umzusetzten..
er müsste alle zeichenroutinen neuschreiben...
Backslash
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 202

WIN XP
Delphi 5 Ent, Delphi 2005 Prof
BeitragVerfasst: So 25.03.07 19:11 
@user profile iconFabian:

ich hab was gefunden zu "timebased movement" wiki.delphigl.com/in...p/Timebased_Movement. Komisch, in meinem DirectX-Buch steht da was von performancecounter. Ist schon eine weile her, dass ich mich damit beschäftigt hab.

Nachtrag: Performancecounter ist ein Bestandteil von timebased movement, soweit ich das jetzt sehe :D
Jann1k Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Mo 26.03.07 17:59 
So, nächste Version ist online jetzt sind wir schon bei 1.1 ^^

Wirklich neu ist die Highscoreliste auf der ihr euch von nun an um die besten Plätze prügeln dürft; gegner werden jetzt gar nicht mehr verkleinert, das führt zwar wieder zu fehlenden Informationen was den hp-status der gegner anbelangt, aber ich habs erstmal rausgenommen.

Changelog ist auch weg, das Spiel an sich ist komplett in English, in einer der nächsten Versionen bau ich eine Hilfedatei/Spielanleitung ein, auf der Neulinge über ein paar Eigenartern informiert werden(liest eh keiner aber was solls).

Und weil es erwähnt wurde: Nein, im ganzen Spiel gibt es nur einen Timer der alles regelt, der zählt quasi ob ein tower schießen darf.

Sry an alle bei denen das Spiel zu massig Performance Problemen führt - noch kann ich es nicht besser und großes Dankeschön an Backslash für seine Hilfe mit dem Highscore.

Auf die Plätze fertig los...
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Mo 26.03.07 18:55 
(+) die neue Markierung für die Tower
(+) ohne Changelog
(-) ich hätte den ChangeLog ins Menu verbannt
(-) CPU-Power dauerhaft bei 100%
(-) keine Save/Load
(+) neues Symbol für Plant-Tower
(+) geiles Spiel

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
Stefan-W
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 475

Win 7 SP1
D2005 PE
BeitragVerfasst: Mo 26.03.07 19:09 
das entspricht auch meiner Einschätzung :-) Hammer Game
hab es schon weiter empfohlen :D
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Mo 26.03.07 20:21 
Ich schließe mich meinen Vorrednern an. Allerdings habe ich was gefunden:
Wenn ich auf "End Current Game" drücke, und die wait between waves ist aktiv, dann wird gwartet bis das angelaufen ist. Ansonsten scheen.
Backslash
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 202

WIN XP
Delphi 5 Ent, Delphi 2005 Prof
BeitragVerfasst: Mo 26.03.07 22:33 
Die Implementierung hat ja prima geklappt. Danke für die Nennung in den Danksagungen ;) Wär aber nicht nötig gewesen.

Ich hab das Spiel jetzt getestet und alles läuft prima. Großes Lob wegen der Highscoreliste. Die Namen in unterschiedlich großer Größe zu schreiben war wirklich ne klasse Idee.

Das neue Icon für den Tower ist auch super.

Also alles in allem kann ich nicht meckern. Kurze Frage zum Abschluss: Hast du die Variablen geupdatet, sprich Int64? Das wär auf dauer nicht schlecht.

Gruß

Backslash
konbom
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 36

Win XP Home
Delphi 2005 Personal
BeitragVerfasst: Mo 26.03.07 22:35 
[Klugscheiß an]
Im Info-Screen:
"This game would be much bader without you guys."
sollte wohl besser worse heißen ;)
[Klugscheiß aus]

Ansonsten ist das echt 'n cooles Spiel!!! :)

MfG
Dragonclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: Mo 26.03.07 22:49 
Ist wirklich ein super geiles Spiel geworden. Meinen Respekt!

Noch was zum Infoscreen:

Meiner Meinung nach müsste es

"to make this game even better" heißen.