Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

drakon

Supermoderator

  • »drakon« ist der Autor dieses Themas

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

1

25.11.2006, 16:41

Exe-Datei verhält sich auf Test-PC anders

Hallo zusammen

Ich habe ein einfaches Konsolenspiel fertig erstellt. Und wollte es auf andere PC's laufen lassen. Doch zuerst bekam ich immer den Fehler,wie schon viel vor mir. Ich konnte die Exe nicht ausführen. Nach langem gebastel habe ich dann eine Lösung gefunden.
Aber das Tut eigentlich nichts zur Sache.
Mein Eigentliches Problem ist, dass ich das Spiel auf dem meinem Test-PC anders verhält, als ich es programmiert habe.
Die gleiche Exe funktioniert auf meinem PC einwandfrei, auf andere PC's jedoch nicht ganz.
Auf dem Test-PC erscheint es mir, als ob der Befehl Sleep() nicht richtig funktioniert.

Ich habe die Dll's statisch dazugelinkt und das Projekt ist Relase, ist es möglich, dass da wirklich ein zusammenhang ist, oder was ist da los?
Ich benutze Microsoft Visual C++ Express Edition.

lg drakon

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

2

25.11.2006, 16:43

Wie schliesst du denn darauf das Sleep sich anders verhält? Weil damit ansich ist 100% nix falsch, eher in deiner Benutzung ;)

drakon

Supermoderator

  • »drakon« ist der Autor dieses Themas

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

25.11.2006, 16:49

Weil ich Pfeile und "Figuren" habe, welche sich zu schnell bewegen.
Ich kann das auf meinem PC auch reproduzieren, und eben dafür muss ich nur den Sleep (0) setzen.
In meinem Spiel aber habe ich irgendwei Sleep(1500), oder so..
Die Benutzung ist schon richtig, wie gesagt auf meinem PC lauft es so, wie ich es will, nur auf dem Test-PC nicht!

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

4

25.11.2006, 16:53

Höhö, du hast da ein allgemeines Problem der Spieleprogrammierung erkannt.

Du darfst deine Figuren nicht einfach jeden Frame um zB 20 Einheiten bewegen. Wenn ein PC dann wesentlich mehr FPS hat werden die Figuren auch dementsprechend schneller.

Hab grad leider nicht wirklich Zeit dir alles zu erklären, wenn du Davids Buch hast ist es darin sehr früh erklärt und ich gehe ne Menge Wetten ein das sich auch in Heikos Buch etwas darüber findet.

Ansonsten mal Forensuchen ;)

Edit:
Oder sprich mich mal im MSN an, dann kann ich dir das vllt erklären.

drakon

Supermoderator

  • »drakon« ist der Autor dieses Themas

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

25.11.2006, 16:59

Ich habe es so gemacht, dass wenn eine Taste gedrückt wird, dass dann ein neues Frame berechnet wird. Also müsste es auch unabhängig von der Leistung gehen, vorallem, da ich ein Notbook habe, welches schneller ist, als mein test pc.
Und vorallem habe ich es auf meinem pc mit verschiedenen Taktraten versucht, da gab es dieses Problem auch nicht.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

25.11.2006, 17:00

Du solltest versuchen rauszufinden, ob es tatsächlich daran liegt, dass Sleep "nicht richtig funktioniert". Lass dazu einfach auf den Test-PCs ein Programm à la

C-/C++-Quelltext

1
2
3
4
5
for(int i = 10; i >= 0; i--)
{
    cout << i << endl;
    Sleep(1000);
}


laufen und lass dir dann von den Testern sagen, ob sie einen normalen Count-Down gesehen haben oder nicht.
Oder wenn du genaue Messergebnisse willst:

C-/C++-Quelltext

1
2
3
4
DWORD t0 = timeGetTime();
Sleep(1000);
DWORD dt = timeGetTime() - t0;
// dt sollte jetzt *ungefähr* den Wert 1000 haben

drakon

Supermoderator

  • »drakon« ist der Autor dieses Themas

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

7

25.11.2006, 17:39

hmm...das funktioniert einwandfrei..
komisch...

Anonymous

unregistriert

8

25.11.2006, 17:41

Eventuell spielt auch die Vsync der Monitore eine Rolle.

cu

drakon

Supermoderator

  • »drakon« ist der Autor dieses Themas

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

9

25.11.2006, 17:43

Also was mir aufgefallen ist, ist, dass er in den Vollbildschirm gegangen ist. Das mach die exe bei mir nie.

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

10

25.11.2006, 18:08

Zitat von »"drakon"«

Also was mir aufgefallen ist, ist, dass er in den Vollbildschirm gegangen ist. Das mach die exe bei mir nie.

Wie die Konsole dargestellt wird is die Sache von Windows, dein Programm hat da nix zu sagen. Mach einfach mal ne Verknuepfung auf deine EXE, da kannste irgendwo einstellen ob du Vollbild haben willst oder nicht.
"Have you tried turning it off and on again?"

Werbeanzeige