Spiel gleich schnell auf verschiedenen Systemen!?!

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

BB-Fan

Betreff: Spiel gleich schnell auf verschiedenen Systemen!?!

BeitragMi, Dez 19, 2007 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Was muss ich tun, um einen Quellcode also ein Spiel auf verschiedenen Systemen gleich schnell laufen zu lassen?

ozzi789

BeitragMi, Dez 19, 2007 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau mal unter WaitTimer() , CreateTimer nach.

MFG
OZzi789
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

RollingStone

BeitragMi, Dez 19, 2007 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Das kann man meiner Meinung nach nicht wirklich beeinflussen. Das Spiel auf so wenig Code wie möglich zu komprimieren wäre eine kleine Möglichkeit.
 

ChristianK

BeitragMi, Dez 19, 2007 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
RollingStone hat Folgendes geschrieben:
Das kann man meiner Meinung nach nicht wirklich beeinflussen. Das Spiel auf so wenig Code wie möglich zu komprimieren wäre eine kleine Möglichkeit.

Das ist Blödsinn. Weniger Code heißt nicht, dass das Programm überall gleich schnell läuft. Und natürlich kann man es beeinflussen.
Wie schon oben gesagt mit Timern oder frameunabhängig. Dazu gibt es schon ein paar Threads.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

RollingStone

BeitragMi, Dez 19, 2007 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
ChristianK hat Folgendes geschrieben:
RollingStone hat Folgendes geschrieben:
Das kann man meiner Meinung nach nicht wirklich beeinflussen. Das Spiel auf so wenig Code wie möglich zu komprimieren wäre eine kleine Möglichkeit.

Das ist Blödsinn. Weniger Code heißt nicht, dass das Programm überall gleich schnell läuft. Und natürlich kann man es beeinflussen.
Wie schon oben gesagt mit Timern oder frameunabhängig. Dazu gibt es schon ein paar Threads.


Nagut...gleich schnell nicht..das stimmt...bei weniger Code hätten eben die langsameren PCs einen kleinen Geschwindigkeitsboost. Die schnellen dann aber auch, stimmt schon.

Hatte jetzt mal von Timern abgesehen. Wäre keine elegante Möglichkeit wie ich finde. Das hieße ja man macht sein Programm/Spiel extra langsamer, nur damit langsame PCs auch mitkommen. Die User der schnellen PCs freut das nicht. Wink

Lunatix

BeitragMi, Dez 19, 2007 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Das hat rein garnichts mit 5mb oder 5Kb Code zu tun, nur sehr sehr begrenzt, wenn man weiss, was man tut. Auch mit wenig Code kann man Rechner lahmlegen.

Timer sind etwas für Anwendungen, ein Spiel darf ruhig mal etwas Leistung benötigen, da es normal auch als Vollbild läuft und in diesem Moment des Spielens ja das Haupthema ist. Und da kann man dann mit "Frameunabhängigem Programmieren" viel viel wirkung erziehelen.
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

TheProgrammer

BeitragMi, Dez 19, 2007 22:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Am besten ist es, wenn du alle Bewegungen in deinem Spiel an die Fps anpasst, also frameunabhängig programmierst. Zur Erklärung: Du "misst" jedes Frame die Zeit in ms, die es zum rendern und zur Berechnung benötigt. Diesen Wert nimmst du dann als Multiplikator für alle Bewegungen in deinem Spiel.

Mfg
TheProgrammer
aktuelles Projekt: The last day of human being

FireballFlame

BeitragMi, Dez 19, 2007 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
RollingStone hat Folgendes geschrieben:
Das kann man meiner Meinung nach nicht wirklich beeinflussen. Das Spiel auf so wenig Code wie möglich zu komprimieren wäre eine kleine Möglichkeit.

Also bitte, das ist Unfug.

Es gibt 2 Möglichkeiten:
Die erste wäre, wie schon gesagt Create/WaitTimer.
Die zweite, in meinen Augen bessere, wäre, sich eine kleine Funktion zu schreiben, die in jedem Schleifendurchlauf aufgerufen wird und mit Millisecs() die seit dem letzten Aufruf vergangene Zeit ermittelt und einen "Tempo-Faktor" errechnet, den man dann in jedem Bewegungsbefehl im Programm miteinbeziehen kann.
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Silver_Knee

BeitragDo, Dez 20, 2007 0:26
Antworten mit Zitat
Benutzer-Profile anzeigen
RollingStone hat Folgendes geschrieben:
Hatte jetzt mal von Timern abgesehen. Wäre keine elegante Möglichkeit wie ich finde. Das hieße ja man macht sein Programm/Spiel extra langsamer, nur damit langsame PCs auch mitkommen. Die User der schnellen PCs freut das nicht. Wink


hmm du soltest dich mal im tut bereich über "Hurra 100% auslastung" oder so ähnlich erkunndigen das ändert deine Meinung ganz schnell ändern.

@BB-Fan
auch dir würd ich dien Thread im Faq und Tut bereich empfehlen. da steht näämlich in groben zügen auch die lösung auf dein problem
 

BB-Fan

BeitragDo, Dez 20, 2007 1:16
Antworten mit Zitat
Benutzer-Profile anzeigen
@theprogrammer: hast du da ein beispiel dazu, vielleicht, oder eine nähere erläuterung, bitte.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Dez 20, 2007 1:50
Antworten mit Zitat
Benutzer-Profile anzeigen
BB-Fan, dazu die Suche anschmeissen, dass Thema wurde bereits oft diskutiert.

100% Prozessorauslastung ist nicht gut. Auch dann nicht, wenn kein anderes Programm in Hintergrund laufen muss. Daher ist ein reines frameunabhängiges programmieren nicht alles.

Eine reine Timersteuerung kann unter bestimmten Umständen bereits ausreichen.

In den meisten Spielen wird aber eine Kombie zeischen abgebremster Frames und frameunabhängiges Programmieren empfohlen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Foppele

BeitragDo, Dez 20, 2007 2:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Da das Thema immer mal wieder aufkommt, hab ich nochmal im lite-c manual gekramt, weil das eine extra Funktion dafür hat und die Funktionsweise schön erklärt ist.

Wenn mich nicht alles täuscht reicht es, die Zeit zu messen, die der letzte Framedurchlauf gebraucht hat.
Diesen Wert multipliziert man auf alle Bewegungen.
Dauert ein Frame auf Rechner X doppelt so lange wie auf Rechner Y, muss auch jedes Objekt pro Frame den doppelten Weg zurücklegen, damit beide Rechner die gleiche Geschwindigkeit haben.

Was hectic sagte, bleibt davon natürlich völlig unangetastet, erstmal die Prozessorauslastung so niedrig wie möglich halten, und dann siehe oben.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group