Category Archives: Primary

Restoration of an Old Testament

After trolling through some very old client backups, after noticing a bzipped file of unknown origin, or name for that matter. Low and behold it’s the very same blog I loved to bits years ago. I have decided to resurrect said blog and hopefully bring you guys some new refreshing, non biased and bullshit free content!

Bare with me whilst I attempt to bring all the posts back from this very corrupt and unstable database.

Big Props to Monk for the content, Mark for the nagging and the idea to begin with.

Amended for June 2020!

Criticisms of PBBans and other sites

I am writing this to complain about the entire system of anticheating. VAC etc all fall into this category. First and foremost, cheating is something that is given. People who cheat, cheat to piss others off. Plain and simple. If you can read memory and write to it, you can hack. There is no system of banning that will stop it. Banning players is a complete waste of time, because for $30, you can have a full undetected hack for about 2 months and another key. Now, sites like PBBans rely on the following:

A large group of clueless users who are more concerned with banning players than stopping cheats. I just looked at some ban lists, and they are screenshots of players with ESP running. I found it funny though because the people in the screenshots were saying ‘fuck you I hope you die’

To continue further. I am not advocating cheating. It’s a given. I used to write them, so I know a good bit about them.. One thing people don’t realize is that game developers don’t want to do anything about it to save money on buying worthless products like PB or the others. You simply need to do tricks like stop sending everyone positions to you that aren’t in your viewangles(), you can do this once per server frame, just before a prediction. This has the added benefit of saving the client tons of overhead as they don’t have to draw things you cannot see. This makes the server CPU have more overhead, but what’s a little more CPU into stopping wallhacks?

The people who run the ban sites criticize cheaters for not having any lives, but who really doesn’t have a life? A guy who buys a cheat or writes one that goes into a server for 30 minutes and all out rages, or a person who spends thousands of hours of time and money to create a site to ban groups of people from a game? What about when that one anticheat site was getting blasted by multi gigabit attacks for weeks on end because they thought it would be funny to humiliate a user? Doing that behaviour to people won’t even stop them because they will be back online in 15 minutes hacking the shit out of the game in revenge?

Shrug.

Updated Services

I’ve expanded my services

Support for the following OS’s
– CentOS
– Fedora
– Gentoo
– FreeBSD
– NetBSD

Features for Linux
– Optimized kernel package with different headers
– Optimized i686 glibc packages for x86_64 that are faster and lower CPU usage on large servers. I have personally used these in production and they are much faster. As soon as I have enough time, I’ll post some benchmarks (I/O etc)
– PaX / SSP / Security Packages available (BETA)
– uboost plugin that optimized gameservers:
– SSE2 memory copies
– Userland timecounter support. Avoids overhead calling time over and over and caches last timestamp if it hasn’t changed and uses that value.
– Free updates, access to beta test code, and newer kernels. Unlimited support.
Features for FreeBSD + Linux emulation

– Custom rewritten timecounter code that gives very excellent tickrate / FPS behavior
– SSE2 based bcopy/bzero support
– A bunch of other things 🙂

Pricing for all services:

$99 USD one time fee. Refunds are NOT available, but I’ve never had a request for a refund.

Pricing for services

Here’s my consulting pricing; all in USD.

– Total machine optimization, including userland tools (optimized glibc), custom kernel additions for super low latency (written by me): $150 per machine (one time fee, unlimited support)
– Kernel only based optimization: $99
– A generic wrapper library to alter the frame time for games by reducing the cycles for each tick: $50 (It has a neat thing to allow you to pick which timesource on the system to use) 🙂

Other things include MySQL tuning, apache tuning, etc etc.. I also offer security audits.

The glibc/kernel stuff is for people who require maximum speed without the ability to debug coredump files. My kernel additions are heavy modifications to how the kernel services time for x86 based binaries, I memory map the results and have userland use the memory mapped section of memory of the last clock tick from hardware. It gives the BEST behaviour under load. My stuff doesn’t require those ridiculous idler programs that reduce scheduler latency, everything I have is custom.

The source code to my wrapper library, userland tools and kernel mods are not being released with my products, due to the fact people will copy my ideas and resell them to their friends without having a clue to what they do.

My modifications also have other benefits with other games, like COD etc.

The best OS for hosting games?

Is FreeBSD, or even newer versions of NetBSD. FreeBSD will busy wait on sleeping, so you get more accurate timing. Linux is okay, but I don’t really like using it for game server hosting due to each kernel having newer bu… err features than previous ones.

The problem with any of the linux binaries is they consume large amounts of CPU compared to their windows counterparts, plus they aren’t as optimized. Alfred from VALVe spoke with me and said they won’t move to a newer GCC because it breaks so many mods.

2000FPS 1.6

I’ve done it. Kind of. The problem is finding the correct divisor for sys_ticrate.

The engine uses sys_ticrate to step time in increments of 20hz (20ms). So a sys_ticrate of 2000 (2000fps) increases the amount of heartbeats, therefor timers etc all go 2x faster. For example, a bomb plant takes half the time.

HPET based timers (For fun)

What good is usleep()/nanosleep() when you have to more or less wait for the scheduler to give you time (even with SCHED_FIFO)

I’m trying a different approach that will give me much better results, the only downside is I have to read() /dev/hpet which is more expensive than syscalling into the kernel at all. Bummer.

Back to the drawing board.

I could use posix timers, but that would be messy, because the engine calibrates CPU speed on startup/mapcycles to step time in the engine, otherwise you’ll get clock aliasing so it needs control over how long something sleeps.