JACoders / OpenJK

Community effort to maintain and improve Jedi Academy (SP & MP) + Jedi Outcast (SP only) released by Raven Software
GNU General Public License v2.0
2.02k stars 614 forks source link

Logical entities #206

Open Razish opened 11 years ago

Razish commented 11 years ago

Entities such as target_print should not be added to the main g_entities array, but an array that only the game module knows about, and will not be networked to clients.

Must add entity thinking code to G_RunFrame too.

Lugormod and JKG could provide code.

eezstreet commented 11 years ago

Want.

Sent from my Windows Phone


From: Razishmailto:notifications@github.com Sent: ‎5/‎6/‎2013 8:33 AM To: Razish/OpenJKmailto:OpenJK@noreply.github.com Subject: [OpenJK] Logical entities (#206)

Entities such as target_print should not be added to the main g_entities array, but an array that only the game module knows about, and will not be networked to clients.

Must add entity thinking code to G_RunFrame too.

Lugormod and JKG could provide code.


Reply to this email directly or view it on GitHub: https://github.com/Razish/OpenJK/issues/206

ensiform commented 11 years ago

So... actual alternate list of entities ala serverEntity_t or just adding SVF_NOCLIENT ?

Obviously, this is gpl3 but its an idea... https://github.com/id-Software/Enemy-Territory/blob/master/src/game/g_sv_entities.c

xycaleth commented 11 years ago

JKG implemented it as a separate list of entities.

On 6 May 2013, at 16:40, Ensiform notifications@github.com wrote:

So... actual alternate list of entities ala serverEntity_t or just adding SVF_NOCLIENT ?

— Reply to this email directly or view it on GitHub.

ensiform commented 11 years ago

But how does ICARUS then have ability to manipulate them?

cadika-orade commented 11 years ago

Forgive my newbishness, but what would be the purpose of this, exactly? Decreased network usage? Prevention of hacked cheat clients?

Razish commented 11 years ago

Decreased network usage, more entities can be used before reaching the classic "G_Spawn: no free entities" error.

cadika-orade commented 11 years ago

No more "free entities" error?

WANT!

On Tuesday, May 14, 2013, Razish wrote:

Decreased network usage, more entities can be used before reaching the classic "G_Spawn: no free entities" error.

— Reply to this email directly or view it on GitHubhttps://github.com/Razish/OpenJK/issues/206#issuecomment-17914335 .

Razish commented 11 years ago

It will still exist, but certain types of entities (target_print etc) won't count towards that limit.

cadika-orade commented 11 years ago

Anything that helps. I can't play certain maps because of that error, and I'd really like to see Jurancor park working correctly. No idea how anyone else plays it.

SecretApprentice commented 11 years ago

Someone tell me how I can fix this error I am new to open jk.

xycaleth commented 11 years ago

What error?

cadika-orade commented 11 years ago

Presumably the error when the game has too many NPCs, items, etc on a single map and just craps out.

SecretApprentice commented 11 years ago

Or I could send it to someone who can fix it for me then they can send it back.

xycaleth commented 11 years ago

This issue hasn't been fixed yet. If you're getting the error in maps you've created yourself, then you need to reduce the number of entities you add.

cadika-orade commented 11 years ago

But I'm still not clear why this limit exists in the first place.

On Sunday, June 2, 2013, Alex Lo wrote:

This issue hasn't been fixed yet. If you're getting the error in maps you've created yourself, then you need to reduce the number of entities you add.

— Reply to this email directly or view it on GitHubhttps://github.com/Razish/OpenJK/issues/206#issuecomment-18813518 .

xycaleth commented 11 years ago

The game has a fixed number of entities which it can handle. There's a number of reasons for doing this: performance constraints (this game was made over a decade ago after all), better performance predictability, to reduce the maximum bandwidth usage of the game, etc. Creating too many entities will trigger the "No free entities" error.

The problem is (and what this issue was raised to solve), is that entities which will never be networked (i.e. never sent from the server to the players), such as the target_* entities and a few other groups of entities, also contribute to the number of entities. The solution then, is to change the server so that these entities do not contribute to the number of entities, by storing them in a separate list. It just takes a fair amount of work to do, and to make sure that everything works the same :p

cadika-orade commented 11 years ago

Could the limit at least be increased for single-player maps? Some of the coolest JA maps I've ever seen simply don't work because they have too many entities.

Surely there is a line somewhere in the code that defines the size of whatever datastructure organizes these entities. If you know where this is, perhaps you could tell me where to find it so that I can modify it for myself? With 16GB to use, I think I can stand a few more entities.

Exactly what is the limit, specifically?

On Sunday, June 2, 2013, Alex Lo wrote:

The game has a fixed number of entities which it can handle. There's a number of reasons for doing this: performance constraints (this game was made over a decade ago after all), better performance predictability, to reduce the maximum bandwidth usage of the game, etc. Creating too many entities will trigger the "No free entities" error.

The problem is (and what this issue was raised to solve), is that entities which will never be networked (i.e. never sent from the server to the players), such as the target_* entities and a few other groups of entities, also contribute to the number of entities. The solution then, is to change the server so that these entities do not contribute to the number of entities, by storing them in a separate list. It just takes a fair amount of work to do, and to make sure that everything works the same :p

— Reply to this email directly or view it on GitHubhttps://github.com/Razish/OpenJK/issues/206#issuecomment-18813660 .

xycaleth commented 11 years ago

The limit is 1024 I think. You can possibly change the limit by changing the MAX_GENTITIES definition, but I can't remember where it's defined.

mrwonko commented 11 years ago

With 16GB to use, I think I can stand a few more entities.

Due to the current lack of 64 bit support OpenJK won't be able to use more than 4GB.

I believe raising the limit would make OpenJK incompatible with existing mods so it probably won't happen.

cadika-orade commented 11 years ago

Darn it!

But wait. I thought engine hax were not going to supported. That's what it says on the readme.

Also, I seem to recall the suggestion of 64-bit support coming up, but the powers-that-be saying that it would have no tangible benefits.

mrwonko commented 11 years ago

I thought engine hax were not going to supported. That's what it says on the readme.

That refers to changing the executable in-memory to change, which relies on it being unmodified, i.e. the original one Raven provided. That is obviously not the case if you use OpenJK instead. However those in-memory modifications are not necessary anymore anyway since you can now just change the source code.