So Facepunch, I came to ask a more dedicated corps of Source engine modders about the artificially imposed limits the engine seems to enforce arbitrarily when I am led to believe these limits could be exceeded without grave error. Ha! What a fool I am. [del]Lettuce take a poll: see the above poll. Above? Below? Whatever.[/del] (Can't add a poll to an existing thread. That's a feature. Luxury package, I guess.) The point is I expected a more hearty and enthusiastic welcome than to just be told how impossible the idea of changing an engine with a changelog half-a-mile long would be for anybody outside the covenant.
Here's what I've learned (about the proposed modifications to the engine):
• The engine is extensible but requires knowledge of the engine's API
• The object handling portion of the code could use higher precision tracking (here an object is any bit of data needing to be tracked)
• To make larger worlds double or long integers need to be used in Hammer that would necessitate a fork of the world building and position tracking code to allow for corner origins rather than center origins due to double and long integers being unsigned
• The last one wasn't part of original question, but it's fun to think about maps the size of the solar system on a 1:1 scale
• Another thing that I hadn't originally asked but is also cool to think about: bounding a map with continuation portals (needs a name, I'm not sure if this is something that exists already) to achieve a looping map with draw distance limits to ensure client engine stability
All that and less has been discussed in this thread, like using a Lua script to negotiate the creation of tracked objects by the server (which decides if shit exists or not) to prevent server crashes. Fascinating.
My intent was originally to alter the engine itself, although as that was quickly sniped the idea of raised limits remained and my question changed. The concept is there are server crashes where the error is reported as "something exceeded some limit and I didn't feel like working anymore" which has never made sense to me. If it's a limit, that limit should be raised or able to be raised by the user and CVARs. Well, this idea seems to be lost on Facepunch forum-goers and that's OK-by-me. I've never stopped when told something is impossible, and it's always worked in my favor.
Time for me to make some cereal. Captain Crunch. The one with berries. Fuck yes, nom. With tequila. It's my day off and I'm going to use it.
Oh yeah, before I submit this edit; [b][highlight]THIS IS INTENDED FOR PRIVATE, OFFLINE AND NON-VAC USE BY EXPERIENCED USERS CAPABLE OF DECIDING WHAT LEVEL OF STABILITY WITH WHICH THEY ARE COMFORTABLE.[/HIGHLIGHT][/B]
[del]Let me put this out first: I've searched [url=http://www.google.com/search?q=gmod+custom+engine]Google[/url], [url=http://www.facepunch.com/search.php?searchid=683978]these forums[/url], [url=http://developer.valvesoftware.com/w/index.php?search=custom+engine]the Valve Developer Wiki[/url] and have not found this question answered to any satisfaction.
Rather than wait for you to ask me why I'll just explain it first: I run GMod on some very tight equipment (we're not talking your run-of-the-mill server), use the [url=http://www.srcds.com/db/engine.php?subaction=showfull&id=1097362093]Source Dedicated Server[/url] and can handle prop spam et alia to a great degree although the server is private. The server is ran with such performance/capacities limits as high as the hardware can handle; things like max_edicts and fps_max. The clients are all ran to match the server reducing those bottlenecks.
The server described above will run into fatal engine errors during what should be considered light load and minimal physics simulation even with the extensive optimizations in the config.[/del] [i]That's[/i] why I ask: [b]is there a way to load a custom/customized engine with SrcDS/GMod to remove/raise the limits/safeties that are artificially imposed?[/b]
-snip-
I have no recolection of making this dumb-ass post from 2011 :v:
if i read right
you want to modify the source engine to remove it's limitations so that your "amazing server" won't have a bottleneck
sorry bud engine limitations are not bottlenecks, [i] they're the fucking bottle[/i]
[QUOTE=Smashman;29682853][url]http://www.facepunch.com/forums/11-Garry-s-Mod[/url][/QUOTE]
Good show, but perhaps [url=http://www.facepunch.com/forums/193-Server-Hosting]Server Hosting[/url] or [url=http://www.facepunch.com/forums/16-Help-amp-Support]Help & Support[/url] would work as well? I think this issue applies to enough of the "[url=http://www.facepunch.com/forums/339-Valve-Games-and-Mods]Valve Games and Mods[/url]" to be here.
[QUOTE=Dachande;29682927]if i read right
you want to modify the source engine to remove it's limitations so that your "amazing server" won't have a bottleneck
sorry bud engine limitations are not bottlenecks, [i] they're the fucking bottle[/i][/QUOTE]
Certainly right; I'm asking for another bottle that doesn't break. I'd point out, though, that I'm just trying to eliminate the "it's your server" replies by saying up-front my server is not in question.
[QUOTE=saiko.kaiten;29683097]Good show, but perhaps [url=http://www.facepunch.com/forums/193-Server-Hosting]Server Hosting[/url] or [url=http://www.facepunch.com/forums/16-Help-amp-Support]Help & Support[/url] would work as well? I think this issue applies to enough of the "[url=http://www.facepunch.com/forums/339-Valve-Games-and-Mods]Valve Games and Mods[/url]" to be here.
Certainly right; I'm asking for another bottle that doesn't break. I'd point out, though, that I'm just trying to eliminate the "it's your server" replies by saying up-front my server is not in question.[/QUOTE]
to get another bottle would be to get another game. every engine has it's limits, and while i am actually doubting your [b] SPACE AGE SERVER HOSTING HARDWARE [/b] you're never going to improve the engine on which garrysmod runs. the answer to all of your questions is no.
[QUOTE=Dachande;29683130]to get another bottle would be to get another game. every engine has it's limits, and while i am actually doubting your [b] SPACE AGE SERVER HOSTING HARDWARE [/b] you're never going to improve the engine on which garrysmod runs. the answer to all of your questions is no.[/QUOTE]
I thank you for your input. I tend to disagree ([url=http://en.wikipedia.org/wiki/Source_(game_engine)#Modularity_and_notable_upgrades]short list of changes to the Source engine[/url]), though.
and what was your big fucking plan to "load a customized engine"
that is not how it works. garrysmod is not a like a cd drive where you can put in another engine in whichever way you please. it's the other way around
[QUOTE=saiko.kaiten;29683205]I thank you for your input. I tend to disagree ([url=http://en.wikipedia.org/wiki/Source_(game_engine)#Modularity_and_notable_upgrades]short list of changes to the Source engine[/url]), though.[/QUOTE]
all changes made and facilitated by valve or licensees which legally own the source code for the engine. you do not.
E-mail Gabe Newell about this, he'll give you access to the engine.
[email]gaben@valvesoftware.com[/email]
[QUOTE=Dachande;29683211]and what was your big fucking plan to "load a customized engine"
that is not how it works. garrysmod is not a like a cd drive where you can put in another engine in whichever way you please. it's the other way around
…
all changes made and facilitated by valve or licensees which legally own the source code for the engine. you do not.[/QUOTE]
Great question! I'm glad you asked. The Source engine can be modified to an incredible extent and Garry's Mod highlights this as a packaged game. It's quite a feat but with effort [url=http://www.garrysmod.org/downloads/?tag=gamemode]game modes[/url] can be made that change GMod entirely. Subtle differences exist in the engine code between Halflife:2 and GMod which can be seen in, for the sake of example, the sk_plr_num_shotgun_pellets CVAR which has no effect under GMod (much to my dismay) and implies the separation between game mode/files and the Source engine.
To the second part of your post I agree once more; naturally these are how things work. My question is specifically on the limits and safeties artificially imposed. These limits have been increased before and if logic follows they can be increased further or handled by CVARs.
[QUOTE=saiko.kaiten;29683598]
To the second part of your post I agree once more; naturally these are how things work. My question is specifically on the limits and safeties artificially imposed. These limits have been increased before and if logic follows they can be increased further or handled by CVARs.[/QUOTE]
you don't understand
these are not "precautions" or "safties"
these are the limitations of the engine entirely. you can't just remove a limit, it has no where else to go.
The reason those limits are at their current values is probably a good one. Such as stability, engines like Source are not very extensible without severe modification. You cannot just up the limits and expect it to still run well. It doesn't matter how powerful your equipment is, the engine itself just will not enjoy it. Valve use a older version of Havok than most new engines if I recall, modified a bit for their use. But it does not enjoy mass physics simulations right now, hence the hardcoded limits, to improve customer experience by not letting them do stupid shit to the engine then blaming it on valve.
[editline]8th May 2011[/editline]
Plus Source is built to manage the memory it uses currently properly, increasing the limits means it has to manage more memory than normal, and is bound to fuck it up.
[QUOTE=Dachande;29683653]you don't understand
these are not "precautions" or "safties"
these are the limitations of the engine entirely. you can't just remove a limit, it has no where else to go.[/QUOTE]
I'm going to question the extent of your Source engine familiarity here. Simple test: add [i]max_edicts 16[/i] to your Source game of choice and see how well it plays. Change that number to 8192 and do the same. The limit has been increased and that specific issue is resolved. Other such "hard-coded" limits exist and I'm wanting to know how to raise them to the extent that they are effectively removed.
[QUOTE=hexpunK;29683714]The reason those limits are at their current values is probably a good one. Such as stability, engines like Source are not very extensible without severe modification. You cannot just up the limits and expect it to still run well. It doesn't matter how powerful your equipment is, the engine itself just will not enjoy it. Valve use a older version of Havok than most new engines if I recall, modified a bit for their use. But it does not enjoy mass physics simulations right now, hence the hardcoded limits, to improve customer experience by not letting them do stupid shit to the engine then blaming it on valve.
[editline]8th May 2011[/editline]
Plus Source is built to manage the memory it uses currently properly, increasing the limits means it has to manage more memory than normal, and is bound to fuck it up.[/QUOTE]
I agree but I'm not looking to maintain my user experience; I'm looking to expand it. I'll also agree that hardware is not the last word in how well a server can be ran and that the engine will have trouble handling numbers that large. While I'm not expecting to stack a thousand crates and detonate a nuclear payload without lag, it would be nice to see the server chug through it. (That was an example and not something I seriously expect.) I've raised all the limits on which I could find documentation and have pushed the engine to breaking a few times. I stay in those limits but that doesn't mean I like them.
In regards to memory allocation I want to point out the heapsize CVAR and that while it might be ill advised to set this to very large sizes the engine will run and that limit is raised.
As always, when you modify something like this you take responsibility for your actions. In this manner Source engine≈car engine.
[QUOTE=saiko.kaiten;29684146]I'm going to question the extent of your Source engine familiarity here. Simple test: add [i]max_edicts 16[/i] to your Source game of choice and see how well it plays. Change that number to 8192 and do the same. The limit has been increased and that specific issue is resolved. Other such "hard-coded" limits exist and I'm wanting to know how to raise them to the extent that they are effectively removed.[/QUOTE]
you don't understand what we're telling you
there is no way for [b]you[/b] or [b]anyone else[/b] outside of valve, besides garry, who can change [b]anything[/b] further than what has already been opened up
you're going to have to [b]deal with it[/b] or make your own damn engine
[QUOTE=McNab;29682674]Quit a [b]manly[/b] server you have there.[/QUOTE]
Mockery.
[QUOTE=MasterFen007;29682789]No way that I can think of.[/QUOTE]
Pointless post.
[QUOTE=Smashman;29682853][url]http://www.facepunch.com/forums/11-Garry-s-Mod[/url][/QUOTE]
Implying "lurk more."
[QUOTE=Dachande;29682927][…]sorry bud engine limitations are not bottlenecks, [i] they're the fucking bottle[/i][/QUOTE]
Unhelpful and unthought.
[QUOTE=Dachande;29683130]to get another bottle would be to get another game[…][/QUOTE]
Hasn't given the question serious thought.
[QUOTE=Dachande;29683211][…]that is not how it works. garrysmod is not a like a cd drive where you can put in another engine in whichever way you please. it's the other way around[…][/QUOTE]
I found this one to be quite hilarious as well as repetitive.
[QUOTE=A big fat ass;29683295]E-mail Gabe Newell about this, he'll give you access to the engine.[…][/QUOTE]
This one deserved a cookie.
[QUOTE=Dachande;29683653][…]these are the limitations of the engine entirely. you can't just remove a limit, it has no where else to go.[/QUOTE]
Still beating the drum and not making a beat.
[QUOTE=hexpunK;29683714]The reason those limits are at their current values is probably a good one.[…][/QUOTE]
A learned poster that is still answering with the rhetoric of daddy knows best.
[QUOTE=Tark;29685605]you don't understand what we're telling you
there is no way for [b]you[/b] or [b]anyone else[/b] outside of valve, besides garry, who can change [b]anything[/b] further than what has already been opened up
you're going to have to [b]deal with it[/b] or make your own damn engine[/QUOTE]
I more than understand what I'm being told; I'm being told that by all that those having posted thus far know there currently exists no method by which the arbitrary limits which cause hard, irrecoverable faults within the SrcDS can be changed to values residing outside the operable range given the hardware on which the SrcDS is ran. Please understand that I'm not yet satisfied with this answer; from what I know of the Source engine the limits are simple integer variables (or the like) and they can be changed to higher values without the change or the exceeding of previous values causing irrecoverable faults (server crashes).
I do thank you, however, for your time and your input. Perhaps I should expand my question; has anybody experimented with replacing the core game files for any Source based game with the files of another to effect the core game-play mechanics? If so, with what level of success?
If you're just gonna ask us a question then say everything we say is wrong then just leave, please.
If you're asking us a question it must mean that you believe we know something you don't, or that we're more experienced. You then proceed to go on and on about why we're wrong despite the fact that I don't even know [I]shit[/I] about the engine and even I think you're wrong.
If we really don't know anything then please talk to Gabe Newell or Garry Newman. Maybe they'll know the answer, unless they're "wrong" too.
[QUOTE=saiko.kaiten;29686314]Implying "lurk more."[/quote]
No, implying "wrong forum."
[QUOTE=saiko.kaiten;29686314]A learned poster that is still answering with the rhetoric of daddy knows best.[/QUOTE]
When "daddy" has a good 15 years of experience on the subject, then yes, "daddy knows best"
[QUOTE=saiko.kaiten;29686314]I more than understand what I'm being told; I'm being told that by all that those having posted thus far know there currently exists no method by which the arbitrary limits which cause hard, irrecoverable faults within the SrcDS can be changed to values residing outside the operable range given the hardware on which the SrcDS is ran. Please understand that I'm not yet satisfied with this answer; from what I know of the Source engine the limits are simple integer variables (or the like) and they can be changed to higher values without the change or the exceeding of previous values causing irrecoverable faults (server crashes).[/QUOTE]
You've provided two examples. The first convar was not related to Source engine, but it was HL2 code specific. GMod is derived from that code, but doesn't use the cvar anywhere, which is why it does nothing. One of the best features of Source is the separation of engine and game code, which provides plentiful of freedom without having to give the engine source code.
Your another example was max_edicts. It is indeed engine related, but it's meant to be changeable, because Source can handle increased amounts of entities as long as the hardware can, which is exactly why it's a cvar. One thing not meant to be changed for example is the maximum velocity, which is implemented in stock GMod right now. You can see it wasn't meant to be changed, because at velocities higher than the default, the physics engine starts to break down and can cause crashes.
Source is an old engine, it still has lots of remnants from Q3 engine code. It hasn't aged very well, but Valve has pushed it amazingly far, while keeping it working on low-end machines as well. Trying to increase limits that have been placed for a good reason is pretty much begging for crashes.
[QUOTE=saiko.kaiten;29686314]I do thank you, however, for your time and your input. Perhaps I should expand my question; has anybody experimented with replacing the core game files for any Source based game with the files of another to effect the core game-play mechanics? If so, with what level of success?[/QUOTE]
I'd think so. I've seen an old HL mod ship with a custom OpenGL .dll for some fancier graphics effects. While not strictly modifing the engine, the idea was same. However, it ended in VAC bans to whoever played with the custom .dll online. I haven't seen anything similar on Source, but I'd think some people have tried it. It's not simple though without no kind of access to the source code.
For a semi-terrible analogy:
Engines, Source included, are like farms. You can add more chickens and feed them more but it doesn't mean 500 will get along as well as 100 did.
[QUOTE=saiko.kaiten;29686314]Mockery.
Pointless post.
Implying "lurk more."
Unhelpful and unthought.
Hasn't given the question serious thought.
I found this one to be quite hilarious as well as repetitive.
This one deserved a cookie.
Still beating the drum and not making a beat.
A learned poster that is still answering with the rhetoric of daddy knows best.
I more than understand what I'm being told; I'm being told that by all that those having posted thus far know there currently exists no method by which the arbitrary limits which cause hard, irrecoverable faults within the SrcDS can be changed to values residing outside the operable range given the hardware on which the SrcDS is ran. Please understand that I'm not yet satisfied with this answer; from what I know of the Source engine the limits are simple integer variables (or the like) and they can be changed to higher values without the change or the exceeding of previous values causing irrecoverable faults (server crashes).
I do thank you, however, for your time and your input. Perhaps I should expand my question; has anybody experimented with replacing the core game files for any Source based game with the files of another to effect the core game-play mechanics? If so, with what level of success?[/QUOTE]
"I'm better than you and I'm going to ignore you no matter how helpful you're trying to be"
[QUOTE=CakeMaster7;29686592]If you're just gonna ask us a question then say everything we say is wrong then just leave, please.
If you're asking us a question it must mean that you believe we know something you don't, or that we're more experienced. You then proceed to go on and on about why we're wrong despite the fact that I don't even know [I]shit[/I] about the engine and even I think you're wrong.[/QUOTE]
I'll take that under advisement. In the same spirit, consider the point of view of someone that has come to understand every documented aspect of the Source engine over seven years and is given poorly thought out answers that contradict previously established facts regarding the subject matter; all this amidst undue hostility. How would you react in a similar situation?
Having admitted your unfamiliarity with the engine if you were to answer "no" should I take that with finality? I encourage everybody that may doubt the things I've posted to double-check and make corrections where due; I'm admitting here that there may be somebody who knows at least this much more than me.
[QUOTE=raBBish;29686729][…]When "daddy" has a good 15 years of experience on the subject, then yes, "daddy knows best"[…][/QUOTE]
We'll apply this to Microsoft and their default configuration of Windows. Is there not one tweak or modification you've performed to Windows? Are you content with everything Microsoft has decided for you? Could there be another, perhaps more experimental and risky but equally viable point of view than that provided for you? Your expertise on the subject is obvious from your post, I'm just pointing out that while the settings Valve has landed on for a public release are stable they artificially inject faults when the engine might have otherwise rolled on.
[QUOTE=raBBish;29686729][…]You've provided two examples. The first convar was not related to Source engine, but it was HL2 code specific. GMod is derived from that code, but doesn't use the cvar anywhere, which is why it does nothing. One of the best features of Source is the separation of engine and game code, which provides plentiful of freedom without having to give the engine source code.
Your another example was max_edicts. It is indeed engine related, but it's meant to be changeable, because Source can handle increased amounts of entities as long as the hardware can, which is exactly why it's a cvar. One thing not meant to be changed for example is the maximum velocity, which is implemented in stock GMod right now. You can see it wasn't meant to be changed, because at velocities higher than the default, the physics engine starts to break down and can cause crashes.[…][/QUOTE]
This was what I intended to illustrate; the separation of game code and engine code that I was using to lend credence to my idea of somehow changing the engine. I had mistakenly cited the example as being part of the "engine code" whereas "game code" would be the correction. Thank you for catching this.
[QUOTE=raBBish;29686729][…]Source is an old engine, it still has lots of remnants from Q3 engine code. It hasn't aged very well, but Valve has pushed it amazingly far, while keeping it working on low-end machines as well. Trying to increase limits that have been placed for a good reason is pretty much begging for crashes.
I'd think so. I've seen an old HL mod ship with a custom OpenGL .dll for some fancier graphics effects. While not strictly modifing the engine, the idea was same. However, it ended in VAC bans to whoever played with the custom .dll online. I haven't seen anything similar on Source, but I'd think some people have tried it. It's not simple though without no kind of access to the source code.[/QUOTE]
As stated in an earlier post I'm aware of the risks but I'd like to see what the engine can do uncaged, as it were. I appreciate the input regarding my original question. Perhaps it would be possible to make a DLL or Lua script that ran to increase the useful capacity of the vector/array the engine uses to store the entries for the targeted limit. As I understand the way Source implements the things I wish to change, they're stored in fixed arrays to avoid needless reallocation of memory which can cause severe lag mid-game. To increase these limits you'd need to either add handling for the surplus entries in the array or change the array to a variable size array.
The latter being impossible with an addition to the code I had wondered if anybody had isolated that code in an external file and managed to find a suitable replacement, but the prior I have no idea how to effect although I'm going to say it could be possible to make the array pseudo-cyclic where the additional script simply determines and replaces the oldest entry with the surplus holding it in a temporary memory address. Naturally as the server itself would be running the altered code VAC would have to be disabled. (Cheating? In Garry's Mod? Why?)
[QUOTE=Juniez;29686915]"I'm better than you and I'm going to ignore you no matter how helpful you're trying to be"[/QUOTE]
Helpful seems to be in the eye of the beholder.
[QUOTE=Oicani Gonzales;29687529]it's just easier to reprogram the engine really
ask gabe for the source code if you explain to him what you want to do he'll let you for sure[/QUOTE]
I'm exceedingly reluctant to jump straight to that level of help without exhausting my resources otherwise. I'm also quite uncertain as to how forth-coming Valve would be concerning such things. If it comes to it I might explore the proper channels for obtaining the code; and that would be nifty but pointless as I'd have no hope of putting it together in a working engine. Perhaps I can count on your assistance? (Perhaps is a strong word, here.)
[QUOTE=saiko.kaiten;29687658]I'm exceedingly reluctant to jump straight to that level of help without exhausting my resources otherwise. I'm also quite uncertain as to how forth-coming Valve would be concerning such things. If it comes to it I might explore the proper channels for obtaining the code; and that would be nifty but pointless as I'd have no hope of putting it together in a working engine. Perhaps I can count on your assistance? (Perhaps is a strong word, here.)[/QUOTE]
you've exhausted all your other resources at this point
[QUOTE=Juniez;29688112]you've exhausted all your other resources at this point[/QUOTE]
ಠ_ಠ Bugger.
Saiko, you should really stop trying. You can't change the limit without decompiling dlls and risking a VAC ban.
[QUOTE=Wootman;29688254]Saiko, you should really stop trying. You can't change the limit without decompiling dlls and risking a VAC ban.[/QUOTE]
A ban? From my own private dedicated LAN server? Which would be the main thing running the altered code? And also doesn't log into Steam?
I'm going to give you this one for not having read the entire thread, which is getting long with nary a useful post aside from raBBish. You win for the FLCL avatar, but I'm not sure if you deserve it.
[QUOTE=saiko.kaiten;29688325]You win for the FLCL avatar, but I'm not sure if you deserve it.[/QUOTE]
Saying someone doesn't deserve an avatar?
:frog:
lol
[QUOTE=CakeMaster7;29688506]Saying someone doesn't deserve an avatar?[/QUOTE]
Ó.ò
Spot-on. Nothing could be more correct than the statement your question implies mine to have meant. Why let us all eat cake… Ooh, sorry.
[QUOTE=saiko.kaiten;29688569]Ó.ò
Spot-on. Nothing could be more correct than the statement your question implies mine to have meant. Why let us all eat cake… Ooh, sorry.[/QUOTE]
No, you don't seem to understand. Saying someone doesn't deserve an avatar is stupid and makes no sense. In other words what I meant is that is that for saying that you should:
[img]http://s3.amazonaws.com/kym-assets/photos/images/original/000/088/695/b7b1f3ee558b3c456f991300d0aee61d238539f6.gif?1292687096[/img]
[b]"Get out."[/b]
Sorry, you need to Log In to post a reply to this thread.