Entitys beschleunigen

» Siedler Map Source Forum » Siedler DEdK Script Forum » Entitys beschleunigen

Seiten: 1

DerMacherDieserMap
#1
18.07.2010 10:19
Beiträge: 57

Entitys beschleunigen

Kann man einzelne Entitys beschleunigen?

Wenn ja, wie? Bei der Map "Der Rote Baron IV" (oder wars III?) hab ich das, glaub ich, gesehen. Iwo beim Intro, als Dario seine Ritter zu sich ruft.

Ich bräuchte das für die Map, an der ich grad arbeite.

____________________
Was nennen die Menschen am liebsten dumm? Das Gescheite, das sie nicht verstehen.

fritz_98
#2
18.07.2010 10:33
Beiträge: 472

Entities einzeln zu beschleunigen, geht schonmal nicht.

Mit

Game.GameTimeSpeedUp()


Kannst du die ganze Map beschleunigen. Wurde auch beim roten Baron so gemacht. Willst dus noch schneller haben, einfach nochmals obige Funktion aufrufen.

Mit

Game.GameTimeReset()


stellst du die Normalgeschwindigkeit wieder her.

Fritz

DerMacherDieserMap
#3
18.07.2010 10:38
Beiträge: 57

Okay. Dann muss ich mir was anderes überlegen. Trotzdem Thx.

____________________
Was nennen die Menschen am liebsten dumm? Das Gescheite, das sie nicht verstehen.

warrior1024
#4
18.07.2010 10:48
Beiträge: 345

Es geht, nur sehr umständlich. Man(n) muss zuerst die Entity vorbereiten, d.h., sie sollte stillstehen und die Tasklist sollte die Walk-Form sein. Dann per SetPosition und HiResJob die Entity bewegen. Wenn du sie nicht zu schnell bewegst, dürfte es halbwegs flüssig aussehen. Das Problem ist wohl die Optik, da der Skripter keine Chance hat, Ereignisse 25mal/sek auszuführen.

____________________
"Banken machen keine Fehlentscheidungen! Haben Euch das Eure Eltern nicht beigebracht?"
- Bankier Samael Silren, Enderal

DerMacherDieserMap
#5
18.07.2010 10:51
Beiträge: 57

Warriors Vorschlag müsste ich mal probieren. Wird aber sicher schwer umzusetzen sein. Mal sehen.

____________________
Was nennen die Menschen am liebsten dumm? Das Gescheite, das sie nicht verstehen.

Anarki
#6
18.07.2010 13:24
Beiträge: 518

Zitat von DerMacherDieserMap:
Warriors Vorschlag müsste ich mal probieren. Wird aber sicher schwer umzusetzen sein. Mal sehen.


An das habe ich auch gedacht bei meiner Fussball-Map als Spezialfähigkeit eines Fusball-Helden.

Hauptproblem dürfte sein, bei jedem 'Sprung' der Entity zu überprüfen der der Ort nicht geblockt ist... gibt es eine Funktion "IsPositionBlocked"??? Wäre mir sehr hilfreich

____________________
Siedler V Tool: Selbstextrahierende Maps erstellen
Bitte testen und kommentieren

Mordred
#7
18.07.2010 16:24
Beiträge: 939

Zitat von Anarki:

Hauptproblem dürfte sein, bei jedem 'Sprung' der Entity zu überprüfen der der Ort nicht geblockt ist... gibt es eine Funktion "IsPositionBlocked"??? Wäre mir sehr hilfreich


Siehe Förster-Funktion von Noigi

@warrior1024:
Das Spiel arbeitet doch so schnell, wie man es sehen soll, nicht?
Dann kann man doch einen Hack konstruieren.

warrior1024
#8
18.07.2010 19:01
Beiträge: 345

@Mordred:
Noigi hat keine IsBlocked-Funktion geschrieben. Er nimmt alle Entities.XD_TreeStump in der Nähe, fügt sie in ein Table ein und lässt sie dann wachsen.
Wenn du auf die Försterfunktion im Wiki verweisen willst:
Da wird eine Entity als Tester verwendet, aber so eine Funktion mit Tester ist sehr schwer zu entwickeln, da man entweder für jede Entity im Spiel und für jedes Terrain überprüfen muss, ob Blocking aktiv ist. Das kostet mehr Rechenleistung als 250 Legenden gleichzeitig, die in einem 1k- vs. 1k-Mann-Kampf mitmischen. Kurz:
Absturz.
Und wie willst du eine Funktion 25mal/Sek ausführen? Das geht nicht mit HiRes-Jobs(10mal/Sek), aber mit der Delayfunktion und Rekursion oder der coroutine-LUA-Funktion und Rekursion könnte es klappen.

____________________
"Banken machen keine Fehlentscheidungen! Haben Euch das Eure Eltern nicht beigebracht?"
- Bankier Samael Silren, Enderal

Mordred
#9
18.07.2010 19:17
Beiträge: 939

Zitat von warrior1024:
@Mordred:
Noigi hat keine IsBlocked-Funktion geschrieben. Er nimmt alle Entities.XD_TreeStump in der Nähe, fügt sie in ein Table ein und lässt sie dann wachsen.


Da gibt es doch schon eine vorgefertigte.. meine ich mich jedenfalls zu errinnern.
Vielleicht steht im _g ja was.

warrior1024
#10
18.07.2010 19:23
Beiträge: 345

Das habe ich schon lange überprüft. 1 Ergebnis, und zwar Logic.UpdateBlocking.
Was anderes gibt´s nicht in der _G.

B2T:
Habe es geschafft, eine Funktion, die eine andere Funktion 100-mal pro Sekunde ausführt. Dürfte aber ziemlich resourcenfressend bis Super-GAU-Resourcenverbrauch sein D:
Test:
Noch vor dem Anfangsbriefing ein StackOverflow. Wer kann sowas unterbieten?

____________________
"Banken machen keine Fehlentscheidungen! Haben Euch das Eure Eltern nicht beigebracht?"
- Bankier Samael Silren, Enderal

Dieser Beitrag wurde von warrior1024 am 18.07.2010 um 19:44 editiert.

Mordred
#11
18.07.2010 19:31
Beiträge: 939

eine eher unzuverlässige Variante:

function IsBlocked(_pos,_range)
 local entities = {Logic.GetEntitiesInArea(0,_pos.X,_pos.Y,_range+50,16)}
  if (table.getn(entities) > 0)then
   return true
  else
   return false
  end
end

totalwarANGEL
#12
18.07.2010 19:47
Beiträge: 2123

Zitat von Mordred:
eine eher unzuverlässige Variante:

function IsBlocked(_pos,_range)
 local entities = {Logic.GetEntitiesInArea(0,_pos.X,_pos.Y,_range+50,16)}
  if (table.getn(entities) > 0)then
   return true
  else
   return false
  end
end


Und was ist mit Texturblocking?

____________________
Die Welt ist arschlochförmig und wir leben in der Mitte.

warrior1024
#13
18.07.2010 19:48
Beiträge: 345

Wenn sich jemand die Mühe macht und alle blockierenden Entitys mit Größe in einem Table zusammenfasst, dann mach ich mir die Mühe, daraus eine stackOverflowproduzierende IsBlocked-Funktion zu speichern. Alles andere wäre dagegen unbrauchbar. Und mit StackOverflow-Bremsen und StackOverflow-Fehlern kenn ich mich aus
Aber wer erstellt das Table?

@TWA:
Und Gebäude? Ställe haben eine Ausdehnung von 2000 in y-Richtung und 1800 in x-Richtung. Somit liegt eine noch geblockte Ecke ganze Wurzel(181) Siedlermeter ausserhalb des Mittelpunkts und blockt noch.

____________________
"Banken machen keine Fehlentscheidungen! Haben Euch das Eure Eltern nicht beigebracht?"
- Bankier Samael Silren, Enderal

Dieser Beitrag wurde von warrior1024 am 18.07.2010 um 20:34 editiert.

Anarki
#14
19.07.2010 00:09
Beiträge: 518

ja nur sind eben nicht nur die entitys, sondern unter umständen auch Gelände das blocken kann

Wäre doof wenn deine zu bewegende Entity in Gelände reinhüpft und sich dann nicht mehr bewegen kann.

Bei meinem 'Fussball' hab ich beim rumschießen des Balls entsprechende Funktionen schreiben müssen.... nur der Ball wird auch nie nicht passierbares Gelände berühren...
Bei einer beschleunigten Entity könnte der Fall ja durchaus eintreten

____________________
Siedler V Tool: Selbstextrahierende Maps erstellen
Bitte testen und kommentieren

Seiten: 1

SiteEngine v1.5.0 by nevermind, ©2005-2007
Design by SpiderFive (www.siedler-games.de) - English translation by juja

Impressum