Spiel gleich schnell auf verschiedenen Systemen!?!
Übersicht

BB-FanBetreff: Spiel gleich schnell auf verschiedenen Systemen!?! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Was muss ich tun, um einen Quellcode also ein Spiel auf verschiedenen Systemen gleich schnell laufen zu lassen? | ||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schau mal unter WaitTimer() , CreateTimer nach.
MFG OZzi789 |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
RollingStone |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() |
||
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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.
![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@theprogrammer: hast du da ein beispiel dazu, vielleicht, oder eine nähere erläuterung, bitte. | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group