Leistung bricht ein nach Konvertierung

Das Board für Schwierigkeiten beim Adventure-Machen und zum Melden von Bugs
Post Reply
japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Leistung bricht ein nach Konvertierung

Post: # 83548Post japanhonk
31 Dec 2016, 09:40

Hi,

habe mal mein altes Projekt , erstellt mit Version 2.96 auf 3.14 umgebaut ( Videos konvertiert, EAX durch DSP ersetzt, playvideo Befehle angepasst...)


Problem : selbst bei Open GL Einstellung laufen die Kampfszenen als Diashow ab, die mit 2.96 erstellten Versionen taten das nicht, die Skripte sind also in Ordnung. Die Videosequenzen werden ebenfalls korrekt abgespielt, die kommen aber auch davor. Handelt die neue Version die Funktionsabarbeitung irgendwie anders ?

Woran kann das liegen ???


Gruß

Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

Zimond
Der Engine Papa
Posts: 3420
Joined: 06 Apr 2003, 19:34
Location: Krefeld
Contact:

Re: Leistung bricht ein nach Konvertierung

Post: # 83551Post Zimond
31 Dec 2016, 21:48

Das ruckeln ist also definitiv in einem bestimmten Teil und nicht im ganzen Spiel? Post mal ein paar Skripte von dem Kampf. Vielleicht fällt mir was auf woran ich was geändert hab.
Image

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Leistung bricht ein nach Konvertierung

Post: # 83552Post japanhonk
01 Jan 2017, 10:39

KAnn ich machen, wird aber schwierig, da die Skripte auch über Objektte gesteuert werden und vieles Zusammenhängt.

Zuerst war alles rein über Funktionen gesteuert. Das klappte von der Rechenleistung her mal so gar nicht.

Daher habe ich dann den "Lichtbalken" unter dem Sichtschirm als Zeitgeber benutzt. Jedes Frame ruft eine bestimmte Funktion auf.

- Objektpositionen auf dem Bildschirm erkennen, verändern und entsprechend der Flugrichtung weiterbewegen
- Particledarstellung
- Schaden verursachen im Kampf, Schäden anzeigen
- Schäden reparieren
-Ziel der Waffen auffassen, Waffen abfeuern und Trefferabfragen starten ( es hakte vorher auch ohne Waffen, mit abgefeuerten Waffen wurde es nur noch langsamer

Nach der Änderung funktionierte das ganz gut. DAs Projekt wurde zuletzt mit 2.9.6 bearbeitet.

Jetzt wollte ich es auf einen neuen Stand bringen, habe es umgebaut auf die neuen Befehle und Formate - und die o.g. Funktionen verhalten sich wieder, als ob sie wieder extrem viel Rechenleistung bräuchten.

Mach Dir da aber nicht zu viele Gedanken drum ,ich mach einfach mit 2.9.6 weiter und erstelle mit 3.1.4 sowieso eine neue Version in Breitbilformat.


Nur als Beispiel : die Dronen, die man auf dem Screen sieht, sollen sich aufgrund der Entfernung langsam bewegen.

Um aber zeitnah auf die Richtungsänderung reagieren zu können, wird die Funktion relativ oft aufgerufen.
Die Variable "duse" sorgt innerhalb der Funktion dafür, dass nicht bei jedem Durchlauf gleich jedes Objekt mitbewegt wird.

Das wurde damals eingebaut, um die Rechenleistung, die all die Funktionen brauchten, die ggf gleichzeitig abliefen, zu reduzieren.
Mit der objektgesteuerten Variante wäre das eigentlich nicht mehr nötig, hatte aber keinen Bock, es rauszunehmen. Es funktionierte ja.

Um den Aufwand zu reduzieren hatte ich seinerzeit beschlossen, die Funktion flexibel zu gestalten; ihr nur die jeweiligen Werte zu ändern und sie dann neu aufzurufen - also Objekt 1 in die Strings schreiben , Funktion aufrufen, Objekt 2 in die Strings schreiben, Funktion aufrufen usw.
Die Funktion sollte über mehrere Missionen mit verschiedenen Objekten benutzt werden.

Variablen :
-pardir ( particledirection ) : die Mausposition auf dem Sichtschirm wird erfasst und die "Sterne" werden dann in die gegenteilige Richtung bewegt

-duse : Verzögerungstimer, damit die Objekte nicht alle gleichzeitig bewegt wurden ( das kann aber nicht das gesamte Spiel inkl Mauszeiger ausbremsen )

-oposx / oposy : Objektposition des dahinter angegebenen Objektes.

-ospeed : Eigengeschwindigkeit des Objektes - wirkt sich auf die Bewegung auf dem Screen aus und wird bei der "Schiffsbewegung" berücksichtigt.

if_bool (m1running;true)
{
(*------------------------M1-----------*)
if_num (duse;1)
{
ifnot_obj (drone4;0)
{
setstring (object;drone4)
setnum (oposx;[objx:drone4])
setnum (oposy;[objy:drone4])
} }
(*------------------------M1-----------*)
if_num (duse;3)
{
ifnot_obj (drone3;0)
{
setstring (object;drone3)
setnum (oposx;[objx:drone3])
setnum (oposy;[objy:drone3])
} }
(*------------------------M1-----------*)
if_num (duse;5)
{
ifnot_obj (drone;0)
{
setstring (object;drone)
setnum (oposx;[objx:drone])
setnum (oposy;[objy:drone])
} }
(*------------------------M1ission1-----------*)
if_num (duse;6)
{
ifnot_string (ufo;none)
function (showufo)
}
(*------------------------M1ission1-----------*)
setnum (duse;+1)
if_num (duse;>6)
setnum (duse;0)
ifnot_num (pardir;360)
{
if_num (pardir;0)
setnum (oposy;+[ospeed])
if_num (pardir;45)
{
setnum (oposx;+[ospeed])
setnum (oposy;+[ospeed])
}
if_num (pardir;270)
setnum (oposx;-[ospeed])
if_num (pardir;315)
{
setnum (oposx;-[ospeed])
setnum (oposy;+[ospeed])
}
if_num (pardir;180)
setnum (oposy;-[ospeed])
if_num (pardir;225)
{
setnum (oposx;-[ospeed])
setnum (oposy;-[ospeed])
}
if_num (pardir;90)
setnum (oposx;+[ospeed])
if_num (pardir;135)
{
setnum (oposx;+[ospeed])
setnum (oposy;-[ospeed])
}
if_num (oposx;<51)
setnum (oposx;740)
if_num (oposx;>749)
setnum (oposx;60)
if_num (oposy;<21)
setnum (oposy;540)
if_num (oposy;>549)
setnum (oposy;30)
ifnot_obj ([object];0)
{
moveobj ([object];[oposx];[oposy];0)
wait (0,02)
} }
(*--------------END-------M1ission1-----------*)
}
if_bool (m2running;true)
{
(*----------------DATA-----------MISSION 2-Start-----Kl1-------------------*)
if_bool (attacked;true)
{
(*-------------At ATTACK--Start----MISSION 2-----------Kl2-------------------*)
ifnot_obj (Sensorsbridge;2)
setobj (Sensorsbridge;2)
randomnum (attacktimer;350)
if_num (attacktimer;150)
{
setnum (etorposx;[objx:elasiship])
setnum (etorposy;[objy:elasiship])
setnum (etorposx;+30)
setnum (etorposy;+40)
setobj (elasiship;1)
moveobj (drone3;[etorposx];[etorposy];0)
ifnot_obj (elasiship;0)
setobj (drone3;5)
}
(*------------------------M2-----------*)
if_obj (elasiship;0)
{
if_num (attacktimer;125) (*Schuss von Achtern setzen*)
{
setobj (drone3;0)
moveobj (drone3;400;40;0)
randomnum (etorposx;700)
randomnum (etorposy;500)
moveobj (drone3;[etorposx];[etorposy];7)
setobj (drone3;6) (*Schuss von Achtern geht vorbei*)
}
if_num (attacktimer;15)
function (attack) (*Schuss von Achtern trifft*)
}
(*-------------At ATTACK-----------MISSION 2-----------Kl2-End---------------*)
}
(*----------------DATA-----------MISSION 2-----------Kl1-End---------------*)
if_num (attacktimer;185)
{
ifnot_obj (elasiship;0)
{
randomnum (xy1;800)
randomnum (xy2;600)
if_num (xy1;<51)
setnum (xy1;740)
if_num (xy1;>749)
setnum (xy1;60)
if_num (xy2;<21)
setnum (xy2;540)
if_num (xy2;>549)
setnum (xy2;30)
}
moveobj (elasiship;[xy1];[xy2];7)
}
(*------------------------M2-----------*)
if_xobj (elasiship;>200) (*Gegner auf Screen sichtbar*)
{
if_xobj (elasiship;<700)
{
if_yobj (elasiship;<300)
{
if_yobj (elasiship;>90)
setobj (elasiship;1)
} } }
(*------------------------M2-----------*)
if_num (duse;1)
{
setstring (object;elasiship)
setnum (oposx;[objx:elasiship])
setnum (oposy;[objy:elasiship])
}
(*------------------------M2-----------*)
if_num (duse;2)
{
ifnot_obj (drone3;0)
{
setstring (object;drone3)
setnum (oposx;[objx:drone3])
setnum (oposy;[objy:drone3])
} }
(*------------------------M2-----------*)
if_num (duse;3)
{
setstring (object;drone4)
setnum (oposx;[objx:drone4])
setnum (oposy;[objy:drone4])
}
(*------------------------M2-----------*)
setnum (duse;+1)
if_num (duse;>3)
setnum (duse;0)
ifnot_num (pardir;360)
{
if_num (pardir;0)
setnum (oposy;+[ospeed])
if_num (pardir;45)
{
setnum (oposx;+[ospeed])
setnum (oposy;+[ospeed])
}
if_num (pardir;270)
setnum (oposx;-[ospeed])
if_num (pardir;315)
{
setnum (oposx;-[ospeed])
setnum (oposy;+[ospeed])
}
if_num (pardir;180)
setnum (oposy;-[ospeed])
if_num (pardir;225)
{
setnum (oposx;-[ospeed])
setnum (oposy;-[ospeed])
}
if_num (pardir;90)
setnum (oposx;+[ospeed])
if_num (pardir;135)
{
setnum (oposx;+[ospeed])
setnum (oposy;-[ospeed])
}
if_num (oposx;<51)
setnum (oposx;740)
if_num (oposx;>749)
setnum (oposx;60)
if_num (oposy;<21)
setnum (oposy;540)
if_num (oposy;>549)
setnum (oposy;30)
ifnot_obj ([object];0)
moveobj ([object];[oposx];[oposy];0)
}
(*---------------END------M2-----------*)
}
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

Zimond
Der Engine Papa
Posts: 3420
Joined: 06 Apr 2003, 19:34
Location: Krefeld
Contact:

Re: Leistung bricht ein nach Konvertierung

Post: # 83559Post Zimond
03 Jan 2017, 22:24

Ok, da werd ich so nie hinter kommen. Wenn du möchtest lass mir mal nen Export zukommen am besten mit Textdatei was ich machen muss um es zum Ruckeln zu bringen. Dann kann ich das mit Debugger laufen lassen und direkt sehen wo er lange hängen bleibt.
Image

Post Reply