Entity Limit aufheben

Kiran Müller

Commander Keen
Hallo Leute, ich hätte da so ein kleines Probelm! Und zwar komme ich den 4000 Entity's nahe! Jetzt habe ich auf ner Seite gelesen, dass die Entity's auf 4048 stk. begrenzt sind! Gibt es da ne möglichkeit, dass Limit aufzuheben? Müsste ja eig. iwo eingestellt sein in den Files vom Game oder Editor ;-)

Ich habe das ganze nur noch nicht gefunden! Wäre geil, wenn Ihr helfen könntet!

Gruß,
Kiran
 

Kiran Müller

Commander Keen
Ich habe noch nie irgendwas mit nem SDK gemacht ;-) Weiß net mal wo man das bekommt, oder wie das geht ;-) Bin nur einfacher Mapper ;-)

Kannste mir da kurz helfen?
Also muss dann SDK downloaden, kurz nen Mod erstellen und dann da drin den Entity wert ändern?!?
 

MacX

Light Guard
Das SDK bekommst du z.B. über id's FTP: ftp://ftp.idsoftware.com/idstuff/doom3/source/win32/ Ist meist aber recht langsam. Kannst ja bei doom3.filefront oder so nach Doom3 SDK 1.3.1 schauen. Ansonsten wirst du dafür wohl Microsofts Visual Studio brauchen, wenn du eine neue gamex86.dll bauen willst. Die Alternative wäre wohl SCons.

Was man genau im Quellcode ändern muss, weiß ich im Moment auch nicht. Ich kann beim Vergleich der Quellen im Doom 3 SDK und der von The Dark Mod jetzt keine genauen Änderungen hinsichtlich der Limitierung der Entitäten feststellen. Kann demzufolge auch nicht versprechen, dass es sich nur um eine Anpassung eines einzelnen Wertes handelt.

Prinzipiell solltest du aber schon wissen, was du da tust. Wenn du herausfindest, was man genau am Code ändern muss, kann ich dir da auch eine neue DLL zusammenbasteln.
 
Last edited:

Kiran Müller

Commander Keen
KA Check dat net, im SDK is ja keine Exe drin.... Was dat fürn murx ;-(

Die gamex86.dll kann ich net öffnen auch net mit visual studio!
 

MacX

Light Guard
Ja, da ist keine ausführbare Datei drin. Am einfachsten ist es, wenn du Microsofts Visual Studio herunterlädst. Damit kannst du dann einfach die Solution-Datei (.sln) öffnen und den Code für die gamex86.dll kompilieren. Quellcode -> kompilieren -> gamex86.dll = fertiges Kompilat.

Aber ich denke, dass das zu viel Aufwand ist, nur weil du bald an die Entitäten-Grenze stößt. Vielleichst schaust du dir mal an, wie man am besten die Entitätenanzahl reduzieren kann ( s. darkmod-wiki ) oder spaltest die Map auf.

http://www.modwiki.net/wiki/How_to_build_the_SDK_on_Windows
http://www.modwiki.net/wiki/Coding
http://www.iddevnet.com/doom3/code.php
 
Last edited:

Kiran Müller

Commander Keen
Ja wie reduzieren?!?

Das Level ist noch im Rohbau und ist noch net mal Monster drin!!! Habe halt massig Mover, und will auch meine Machinen net wieder schrotten ;-)

Nene, muss schon sein, dass ich das erweiter ;-)

Spalten geht auch net, weil ich das ganze als eine Riesige Firma mache, wo man immer hin und her soll! Und zwar nicht nur einmal!

EDIT: Visual Studio 2005 is zu alt und das neue 2010 ist zu neu, was nu?
 
Last edited:

MacX

Light Guard
An die Entitätengrenze bin ich selber noch nie gestoßen. Ich schaue mal nach, ob ich das irgendwie über das SDK hinkriege. Ich benutze übrigens Microsofts Visual Studio 2005. Mit dem 10er Studio wirst du die Solution-Dateien nicht öffnen können. Vielleicht gibts da einen Konverter, ka.

Ich melde mich, wenn ich was herausgefunden habe.

Edit: Natürlich kann man eine Solution-Datei vom 2005er Studio mit dem 2010er Studio öffnen. Diese muss aber konvertiert werden. Im Aufbau der Projektdateien haben sich ein paar Details geändert, weshalb eine reibunglose Kompilierung nicht gewährleistet ist. Werde ich bei Gelegenheit mal testen...
 
Last edited:

MacX

Light Guard
Wenn du an das Limit stößt, probiers dann mal mit der DLL: http://rapidshare.com/files/442543335/gamedll.pk4

Falls es wen interessiert:
Habe nur den Wert für GENTITYNUM_BITS in Game_local.h erhöht:
von
Code:
#define	GENTITYNUM_BITS			12
#define	MAX_GENTITIES			(1<<GENTITYNUM_BITS)
zu
Code:
#define	GENTITYNUM_BITS			13
#define	MAX_GENTITIES			(1<<GENTITYNUM_BITS)

Ich garantiere für nichts. Bitte selber testen.
 
Last edited:

Kiran Müller

Commander Keen
Hi erst mal Danke für die Bemühungen! Leider funktioniert das nicht! Ich habe das mal eben schnell Getestet, also bis 4095 gehts, danach kommt no free entity, mit und ohne die neue Datei.

Scheinbar war es wohl doch nen falschen Wert...
Egal, ich durchforste mal weiterhin das Internet ;-)


By the way: Gäb es ne Möglichkeit Key's oder sowas beim Levelwechel mitzugeben? Weil wenn ein Spieler zurück soll, und er vorher Leitern und so bewegt hat, dann sollten die ja auch an entsprechender Stelle sein, und wenn nicht, dann sollten Sie ja auch nicht an der anderen Stelle sein....

Alles so Kompliziert, und das nur wegen son Scheiß Limit...
 

MacX

Light Guard
Kannst du mal bitte Doom 3 oder den Radianten mit dem Parameter "+set logfile 1" starten, den Editor (oder Doom3) dann wieder schließen und die Datei qconsole.log hochladen die sich im base-Ordner befindet. Kannst mir auch einen Link per PM schicken, wenn du dies hier nicht willst.
Ich will nur mal sichergehen, ob auch wirklich die neue DLL geladen wurde.

Zu den Keys: Du könntest die Werte in einem Skript speichern und beim Levelwechsel diese auswerten und entsprechend was machen.
Vielleicht mit der Skriptfunktion "setKey" und "getVectorKey" und dann mit setWorldOrigin positionieren. Dies würde aber nur funktionieren, wenn du zwischen dem Mapwechsel nicht Doom 3 neustartest. Wenn du die Werte dauerhaft speichern willst, musst du das wohl über das SDK lösen.

Anmerkung: Den Skriptweg habe ich noch nicht probiert. Allerdings hatte ich mal ein Geldsystem über Skript erstellt, wo der Wert beim Mapwechsel gespeichert wurde. Der Wert wurde einfach in einer globalen Skriptdatei gespeichert, die von jedem Mapskript inkludiert werden konnte. Das globale Skript wurde halt von der doom_main beim Spielstart geladen. Wenn ich mich recht erinnere, funktionierte das so.
Später habe ich das dann aber in den Quellcode verlagert.

Edit: Sehe gerade, dass ich den Geldwert auch über eine cvar gespeichert hatte. Kann auch sein, dass das nur so funktioniert hat.
 
Last edited:

MacX

Light Guard
So, in deinem Log steht folgendes:

found DLL in pak file: D:\Spiele\Doom 3\base\game03.pk4/gamex86.dll
copy gamex86.dll to D:\Spiele\Doom 3\base\gamex86.dll
Es wurde die DLL aus der game03.pk4 genommen.
Wenn du die DLL nehmen willst, die ich ich erstellt habe, musst du diese entweder auf "schreibgeschützt" stellen oder du musst die gameXX.pk4s temporär aus deinem base-Ordner entfernen.
 

Kiran Müller

Commander Keen
Ok, dann wer ich dass mal Probieren ;-) Melde mich gleich zurück ;-)


EDIT: So... ;-) Scheinbar sind die Entitys kein Problem mehr, doch funktionieren tut es trotzdem nicht -> "No more free Events"... Was mach IdSoft da eig ;-)
 
Last edited:

Kiran Müller

Commander Keen
Vielen Dank dafür ;-)

Sag mir mal was, was ich dafür für dich machen kann? ;-) Geht schlecht, dass du die ganze Zeit investierst, nur weil ich meinen Kop durchsetzen will ;-)

Aber nix mit Geld, kla!
 

MacX

Light Guard
So, neue DLL: http://rapidshare.com/files/442730636/gamedll_neu.pk4
Diesmal habe ich die DLL gleich auf schreibgeschützt gestellt.
Es wurden die Werte von MAX_EVENTSPERFRAME und MAX_EVENTS jeweils von 4096 auf 8192 gestellt. Falls notwendig kann ich auch die geänderten Dateien hochladen.
Wenn du deine Map/Mod veröffentlichen willst, musst du die DLL dazu tun.

Bitte testen. Haben will ich nichts. Bin nur froh, wenn es funktioniert.

Ich will nur noch mal das darkmod-wiki zitieren:
Entities that spawn use up the following resources:

* CPU time during spawn (and during destroy). So avoid constantly spawning/destroying entities, that can be very costly (f.i. an arrow trap that shoots an high amount of arrows that than later disappear)

* CPU time during runtime, because some operations need to filter through all entities just to find their entities. F.i. an AI that wants to check if there is another AI needs to run through all existing entities to find them. The more entities your map has (say 7000 vs. 700) the longer that takes. Note: This time is very small, but it can add up if you have a really high entity number. This is the main reason why you should save entities and not just ask us to raise the entity limit.

* CPU time thinking (unless the entity is dormant)

* GPU time during drawing if the entity is visible

The entity limit itself does not use any mentionable resources, e.g. if we would raise the entity limit from 8192 to 16384 would not use up any more resources. Only entities actually spawned use resources.
 
Last edited:

Kiran Müller

Commander Keen
Hey da! Schon mal Danke!!! ES KLAPPT ;-)

Getestet habe ich es in ner kleinen Map und habe ne Menge Lights erstellt ;-)
Also mit der Datei geht es bis 8155 Entitys, danach sagt das Game nein danke ;-) Also brauch die Engine nochmal 37 Entitys für den Char und so!

Also wegen langer Ladezeit kann ich jetzt bei dieser Testmap nicht feststellen, 2 Sekunden... Auch wenn ich aus meinem kleinen Raum rausgehe mit Noclip, die beleuchtete Fläsche is zwar schneeweiß, aber mein PC laggt erst minimal ;-)

Nunja liegt vllt. an dem heutigen PC's ;-) 8 Kerne schaffen halt mehr als damals 2 ;-)


Dann kann ich ja jetzt wieder loslegen ;-)
Nochmal vielen Dank für die Dateien!
 

Kiran Müller

Commander Keen
Noch mal grad, du sagtest ja was von, du hättest das in den cvar's gespeichert?
Hast du da vllt. grad ne Seite zur Hand? Weil Interessant ist das nichts destotrotz, weil ich überlege, sowas noch nach Style von Silent Hill einzubauen mit 2 welten und so...
Oder ist das vllt. nicht grad der bringer??? Halt dann einmal die Map normal, und einmal in einer Hell Version, dass man da ständig wechelt...
 
Top