Live data from Hacker News

Ex Valve dev on CS:GO’s codebase

twitter.com

11–20 of 129 posts

Re: Ex Valve dev on CS:GO’s codebase

#11
I still don't get why they can't make a basic anticheat or protect the process memory like most other games (even the Faceit AC client itself for CS:GO!). Is there some explanation like keeping compatibility with very low end PCs?

You can get wallhacks in multiplayer by simply using WriteProcessMemory calls. [0]

[0] https://github.com/Snaacky/Diamond/blob/master/diamond.py

Re: Ex Valve dev on CS:GO’s codebase

#12
TBH this issue exists in many larger codebases that don't take separations of concerns seriously. Solution: take it seriously. That's harder than it sounds and depending on the problem domain is next to impossible, you should still try it.

Re: Ex Valve dev on CS:GO’s codebase

#13
post #9

Doesn't suprise me. I was watching a video where they had devs watch a speedrun for HL:2, and they said that there are a ton of hacky fixes that never got properly fixed. They said that same code is now in HL:Alyx, and that it's funny looking through the code for a modern AAA game and seeing comments like "Quick hack to get demo stable for E3 2005. Add permanent fix after show".

Yep, that happens all the time. Some quick fix is added before a trade show and 2-3 years later it's still there and going into the release. The reasons vary but it's usually one or more of: people forgot, issue was created but was never important enough to get worked on, the fix works fine and the comment should be removed, the code path is no longer executed.

Re: Ex Valve dev on CS:GO’s codebase

#14

"Also, if you touched the renderer, even in a simple way, and a team later encountered a rendering bug, you would be blamed and have to fix it. Even if the bug had nothing to do with your change. This taught programmers to not change anything unless absolutely necessary." I've seen this effect in code that wasn't nearly this bad, and I've even felt this way... But in the end, I've decided to do it anyhow. The end res…

No unit test ?

Re: Ex Valve dev on CS:GO’s codebase

#15

I still don't get why they can't make a basic anticheat or protect the process memory like most other games (even the Faceit AC client itself for CS:GO!). Is there some explanation like keeping compatibility with very low end PCs? You can get wallhacks in multiplayer by simply using WriteProcessMemory calls. [0] [0] https://github.com/Snaacky/Diamond/blob/master/diamond.py

When the code is chaotic enough it may be impossible to write an anti-cheat that can't be guaranteed to not trip from ordinary in-game code.

Re: Ex Valve dev on CS:GO’s codebase

#16
post #9

Doesn't suprise me. I was watching a video where they had devs watch a speedrun for HL:2, and they said that there are a ton of hacky fixes that never got properly fixed. They said that same code is now in HL:Alyx, and that it's funny looking through the code for a modern AAA game and seeing comments like "Quick hack to get demo stable for E3 2005. Add permanent fix after show".

Professional game development seems to revolve around the art of quick hacks. Gamers aren't going to care whether your code is clean or not, and they sure as hell won't want to wait for you to tidy it up.

Re: Ex Valve dev on CS:GO’s codebase

#17
post #4

One of the best, and first, things we did when starting our machine learning platform was to design it using a plugin architecture. There's a lot of scar tissue and horrible experience through our previous ML products we built for enterprise. Namely, it was extremely hard to onboard new developers to work on the product. They had to understand the whole thing in order to contribute. Changing something was also hard,…

Are there any drawbacks of using a plugin centric approach? Typically there is loss of expressiveness in code, loss of performance or disconnect between core and plugin development.

Re: Ex Valve dev on CS:GO’s codebase

#18
post #4

One of the best, and first, things we did when starting our machine learning platform was to design it using a plugin architecture. There's a lot of scar tissue and horrible experience through our previous ML products we built for enterprise. Namely, it was extremely hard to onboard new developers to work on the product. They had to understand the whole thing in order to contribute. Changing something was also hard,…

Definitely; the biggest challenge in software development is keeping things manageable. I think this is why microservices are so popular; the individual services are manageable. But that's a misconception, because the overall architecture becomes a monstrosity, especially if there is no oversight (which in my experiences with the pattern, there wasn't).

Re: Ex Valve dev on CS:GO’s codebase

#20
this is yet another issue for programmers but not for the business. the product is seen as a black box by the business and if it gets expected output for provided input, it does not matter what is going on inside of it. it makes money and in the end that is the only thing that truly matters.

of course programmers will keep on complaining but in the end, it does not matter. if it works, don't fix it. doing rewrites brings nothing to the business, only to the developers. sure, the rewrite will save dev hours along the way but the rewrite itself is not free so all in all...if it works...

btw this is also why language design of composition instead of inheritance is so important for big projects. you will learn this way way too late if you do not get it already.

Post reply on HN