
Play Counter-Strike 1.6 in your browser - m0ck
http://cs-online.club
======
ericzawo
I sunk many hours of my life into this beautiful, beautiful game (starting at
the tail end of 1.5, however!) and sometimes tune in to watch CS:GO
competitive matches. I know Valorant is apparently stepping up as a spiritual
successor to Counter-Strike, but I just love this game for it's emphasis on
pure skill, and I really am surprised few other games have come as close as
1.6 to perfecting a team-based FPS that lands all players on an almost
perfectly level playing field.

~~~
anoraca
Valorant appears to me to be an uninspired clone with a few gimmicks and a lot
of marketing money behind it. It's the same way that LoL was a clone of DotA
with extra marketing and a few gimmicks.

I don't understand why anyone knowledgeable would be installing a "free" game
that includes a kernel level rootkit.

[https://www.techspot.com/news/84841-valorant-anti-cheat-
soft...](https://www.techspot.com/news/84841-valorant-anti-cheat-software-
loads-kernel-based-driver.html)

~~~
ionwake
I believe you are wrong , Dota2 was a rip off of LOL.

Interesting you mention the root kit - you realise Steam monitors urls Your
machine has visited right? They also didn’t confirm whether or not these are
then uploaded to their servers.

~~~
07t15
Dota 2 was a (almost carbon) copy of a DotA map for Warcraft III (there was
even a settlement between Blizzard and Valve about this). Not that it's
necessarily a bad thing, but it makes more sense to claim that LoL was
inspired by a DotA map.

------
blattimwind
This could serve as a demonstration what a long way way web
sockets/rtc/channels still have to go, since the experience is much worse even
considering the ping compared to 20 year old netcode.

~~~
hombre_fatal
You're going to hang the state of networked browser gaming on this random
person's netcode implementation? Go to r/GameDev and you can find some
redditor Unity projects built on UDP that are even worse, but you aren't going
to say "wow, UDP sux".

Check out something like [https://krunker.io/](https://krunker.io/) which
gives me a surprisingly good FPS experience despite my distance from the
server.

Browser gaming does take some thought though, to be sure. UDP via WebRTC is
relatively new and isn't trivial. And I know some games get around TCP head of
queue blocking by opening up 2+ WebSockets.

~~~
baby
How good is krunker? Don't have a mouse but maybe I could get one.

~~~
KapKap55
It's quite fun and has a surprisingly deep movement system. The userbase is
very young so if you have any FPS experience you will shred through the
average player.

Expect to get annihilated by someone who knows the movement system though.
You'll know someone's using it when you see it, since they'll be moving at 999
units per second and circle strafing you to death.

------
me551ah
I love how people like to make browser versions of everything. From chat apps
to email clients to games. But they all end up consuming 10x the memory but
are still 10x slower than their native counterparts !

~~~
hombre_fatal
Seems a bit unfair to only acknowledge one side of the trade-offs. Obviously
native apps win the perf side.

How about being able to play with your friends after just handing them a link?
Native 1.6 doesn't even run on my computer at all.

I think browser ports are the only hope that old games have at coming back.
The other month I played Nox's quest mode with my friend on a browser
emscripten port (plus a lot of custom code / networking to get it online). And
it's a game I thought I'd never get to play again. Gog.com sells Nox for
Windows but of course the servers are long offline.

The adolescent glee over how much worse browser applications run really misses
the big picture.

[https://en.wikipedia.org/wiki/Nox_(video_game)](https://en.wikipedia.org/wiki/Nox_\(video_game\))

~~~
moooo99
> How about being able to play with your friends after just handing them a
> link? Native 1.6 doesn't even run on my computer at all.

This is actually one of the major selling points for Cloud Gaming. Although it
still has a lot of issues to be adressed before getting into the mainstream,
this is exactly what it promises. Just sending your friends an invite link and
get them to sign up is a much more pleasant experience than downloading
100+GBs of game files before being able to join the session.

I also enjoy seing browser implementations of popular games. My favorite
recent example is the classic version of Minecraft running in the browser [0].
The browser is obviously a much more restrictive environment than a native
app, but I can still imagine plenty of useful examples for performant 3D
graphics in a browser. After all, Games are often just used as a showcase for
the capabilities of new Apis and performance improvements.

[0] [https://classic.minecraft.net](https://classic.minecraft.net)

~~~
thefounder
I always thought the cloud gamming is really just a way to move gammers to
"subscriptions" instead of one time purchases, in the end milking more money
and taking more control from them just like Adobe did with their creative
products.

~~~
nuclear_eclipse
Microsoft has been successfully charging subscriptions to millions of players
every year without needing to run games in the cloud. Cloud gaming is a play
at capturing revenue from people who aren't willing to shell out $300+ for
hardware _and_ $60 for every AAA title they want to play.

------
tapoxi
In a similar vein, [http://www.quakejs.com/](http://www.quakejs.com/) is a
JavaScript port of Quake 3 (using GPL'd engine code and Q3 Demo assets) and is
equally impressive

~~~
therealdrag0
Reminds me of Quake Live, which looks like it's only available on Steam now,
but it used to be launch-able from Browser.

Anyone know how Quake Live worked?

~~~
CodeArtisan
Quake live's "main menu" interface was web based and a NPAPI plugin was used
to run native code. When Chrome dropped NPAPI support, Quake Live moved to
Steam, using Awesomium for the web interface part. The game is now an
unmaintained relic but there still an active community.

[https://en.wikipedia.org/wiki/NPAPI](https://en.wikipedia.org/wiki/NPAPI)

[https://developer.valvesoftware.com/wiki/Implementing_Awesom...](https://developer.valvesoftware.com/wiki/Implementing_Awesomium)

------
tupac_speedrap
I like how they have Russia as the flag of Europe despite most of the country
not even being in Europe, most people would use the EU flag but I guess this
is CS 1.6 so they are most likely a fair few Russians about.

~~~
rapsey
Russia is and always has been considered a European country.

~~~
crawlcrawler
I was always told Russia spans two continents.

~~~
valvar
France technically spans 6 continents. It's still a European country.

------
ProtoAES256
This is actually nice! If only CTRL+W didn't kill the tabs... We still got a
long way to achieve the glorious web everything but progress is progress and
I'll give them that.

~~~
kingosticks
I did this 3 times and then gave up! The muscle-memory is too strong.

------
vvpvijay
It is facing outage due to its popularity

[https://androidrookies.com/counter-strike-1-6-in-a-
browser-o...](https://androidrookies.com/counter-strike-1-6-in-a-browser-on-
cs-online-club-outage-due-to-popularity/)

------
simias
Is this made/approved by Valve? Or is it just that nobody cares about taking
down CS 1.6 piracy anymore because it's such an old game?

~~~
m0ck
Cracked (non-steam) CS 1.6 clients are available for years and I don't think
Valve ever cared.

~~~
mywittyname
It was never difficult to play CS for free, and that's probably the reason for
its success. I remember getting into CS because you could play online with
basically any Half-life product key and by 2000 you could buy bundles that
came with like 3-4 keys.

~~~
ohnope
I think CS, in that era, was free if you had a HL product key. It was a
community mod and even when it transitioned to a boxed standalone product you
could still download it if you had a HL key. CS: Source was also a free
upgrade.

------
georgewsinger
Who remembers CS 1.3 -- the last truly great CS, before 1.4 removed bunny
hopping and thus ruined the game?

~~~
andrewksl
Beta 7.1 was where it where I got hooked. The Steyr Scout was a 1 shot kill
with the same move speed and cs_mansion was the epitome of map balance. At
least at the 12-PC internet cafe I could play at.

------
jbverschoor
For me, this is a good gaming experience.. Just stream and cache :-)

Never mind, it's more like: download, wait, server full

Still awesome

~~~
aarong11
Faithful to the original in that sense!

~~~
andreigaspar
haha

------
MayeulC
As often, the keybindings use a QWERTY-centric layout, that doesn't make much
sense if that's a different keyboard, and no obvious way to change it.

The steam controller API is nicely designed: you define actions, and let the
user pick a way to trigger those actions. I think there are predefined ones
that already have mappings for common input devices. The API then returns an
image and name to correctly prompt the user. I wish we had something like this
at the browser or operating system level.

~~~
baby
I've had to deal with this all my life because of the French AZERTY, but
honestly the best solution to this problem is to get a QWERTY keyboard. I
haven't thought about this issue once in the last decade.

------
ArtWomb
Next gen network streaming api for the web is WebTransport:

[https://wicg.github.io/web-transport/](https://wicg.github.io/web-transport/)

You can experiment with the initial draft version of QuicTransport today:

[https://web.dev/quictransport/](https://web.dev/quictransport/)

~~~
dmitshur
Thank you for sharing this. I didn't know about that, and it's very
interesting to me.

------
fareesh
I don't know much about the topic - but from what I understand, Valve games
use Protocol buffers and UDP connections to the lobby server, in their netcode
(someone correct me if I'm wrong).

Is there an equivalent way to do this with the same level of efficiency in the
browser? What are browsers missing in order to achieve this?

~~~
blattimwind
> Valve games use Protocol buffers and UDP connections to the lobby server, in
> their netcode (someone correct me if I'm wrong).

The netcode originally used in GoldSrc/1.6 came from QuakeWorld and predates
Google. IIRC it got replaced at some point. The current iteration of Source's
netcode doesn't have anything to do with that, though.

~~~
reubenmorais
> IIRC it got replaced at some point. The current iteration of Source's
> netcode doesn't have anything to do with that, though.

Do you have a source (heh) to back that? Lots of the networking configuration
cvars from 1.6 are still there in CS:GO and do the same thing. Maybe it was
cleaned up but I wouldn't be surprised if it's still mostly the same code.

~~~
Jasper_
According to Valve, they deployed
[https://github.com/ValveSoftware/GameNetworkingSockets](https://github.com/ValveSoftware/GameNetworkingSockets)
successfully on CS:GO.

~~~
reubenmorais
GameNetworkingSockets is pretty cool, and integrating it must have required
some extensive changes, but it's more of a networking middleware library. I
thought blattimwind was referring to the gameplay related netcode (prediction,
interpolation, lag compensation, etc). My understanding is that it hasn't
changed much since the 1.6 days, because all of the configuration knobs are
still available today, but maybe they rewrote it and I'm just out of the loop.
It'd be a major task to do that without affecting gameplay "feel", which is
why I was interested in some source to read more about it.

------
sershe
The last version of CS worth playing was 1.2 (or 1.3? or 1.4? I don't recall),
where strafe jumping was still possible, so you could pretend it's Quake and
annoy the hell out of the more covert people.

------
minism
Basically unplayable if you're used to CS at all, however this is a really
cool and impressive project :)

------
perceptionist
Cool! Now please do Heroes of Might and Magic III.

~~~
pwm
Please don't, it would 100% swallow me after all these years of not playing
computer games :) I loved Heroes 3.

------
scoresmoke
I would say I really enjoyed it. Although the gaming experience in Safari with
a Magic Mouse is odd, the connection is somewhat laggy, and people are
constantly (dis)connecting, it worked really well and brought me some sweet
memories about playing CS 1.6 a long time ago.

------
unemphysbro
This brings back memories of 6-7 of my friends cramming our desktops into a
garage to play games all-night.

I still remember working summer jobs saving up for the next best video card.
Fun times.

------
ben-schaaf
This seems like quite the achievement. Can't crouch and walk forward though
(ctrl+w), nor is it anywhere close to the performance of say cs:go at least in
terms of input lag.

~~~
julianwachholz
So crouch + forward will close the game? This might become the new Alt+F4 for
more money hoax.

------
Hydraulix989
How does this work? CS 1.6 is closed source, as is HL1 engine?

~~~
Bayart
It's a clone with CS maps.

~~~
q3k
No, it seems to contain some leaked SDK and reverse engineered code:
[https://github.com/FWGS/cs16-client/tree/v1.32](https://github.com/FWGS/cs16-client/tree/v1.32)
, and to run on
[https://github.com/FWGS/xash3d-fwgs](https://github.com/FWGS/xash3d-fwgs) .

------
greatgib
Brings back good memories!

But, it is so sad that we can't change the keyboard layout. So, it is sadly
useless for all the people that don't have a Qwerty keyboard.

------
lovehashbrowns
This is actually a lot of fun! The mouse movement sucks and I don't remember
the spray patterns like this but it's still very enjoyable.

------
m00dy
How does this work actually ?

~~~
__alexs
It's a WebGL clone of Counter-Strike 1.6 that can even load original maps.

------
rcconf
That was amazing! This is so awesome. I just played for 30 minutes since I
haven't played since I was a kid. I use to be very good and apparently still
have it since I landed #1 after playing all the rounds :)

Thanks for sharing this, made my morning and took me away from development
work for once!

------
cagenut
On a semi-related note, if anyone feels nostalgia for CS1.6/CS:GO and has a VR
HMD, jump on Pavlov and join a Search & Destroy server/map. The experience of
spawning into and running around a map that you have played for 20 years is
beyond mind blowing.

------
Jyaif
Is it WebSocket or Data channel based?

------
IvanK_net
It took me almost a minute until I started to play. The rotation with a mouse
was very slow (you have to move the mouse by a huge distance).

I prefer to play [https://www.krunker.io](https://www.krunker.io), where you
can play immediately :)

~~~
m0ck
There is a disclaimer that first loading is always a lot slower, since it is
downloading and caching all the files

~~~
AnIdiotOnTheNet
Even after that first time, it takes a good 20-30 seconds to process the files
again.

------
shardulaeer
Anyone knows how this game has been ported to the browser? Is it compiled to
Webassembly?

------
leonfedden
Very cool, thank you for sharing.

Unfortunately I downloaded resources, waited, and the server was full. After
repeating for 3/4 times I gave up, so maybe a little more work needed there to
cache and/or manage servers a little better for the end-user.

Still a very cool project!

------
baby
I discovered that the other day, I find it completely insane. Also how is this
even legal. Well I hope Valve doesn't get angry at it, actually I don't know
why Valve is not even doing this (and adding their own skins marketplace)

------
gt565k
Wonder if the physics bugs exist on this web port of CS for maps like
ka_roadwars_v2

That was an epic map where you could glitch into the wall with a vehicle and
shoot yourself off in the air and go into the hidden gun room.

Fun times.

------
Insanity
That's amazing! Used to be addicted to CS:S (surfing) and found a surf server
on here.

But for something as fast-paced as surfing, the experience is not wonderful
(small input lag). Still, really impressed by this.

------
RogueBurger
Man, if you had told me back when I was playing 1.6 that one day I would be
playing it in a browser, I would have laughed. Crazy how far we've come with
video games.

------
bArray
Wow that was an awful experience, I lagged to some random location and died
instantly. Seems like browser based gaming might have some way to go. Good
effort though.

------
nullifidian
browser FPSs will never take off due to complete lack of protection from
cheating, and cheating is the core implementation issue with FPSs.

~~~
kroltan
How is it that running in a browser is inherently unprotected?

Sure, they don't usually have the thousands of man-hours dedicated to cheat
detection, but the basics are usually sorted out.

~~~
orbital-decay
Client-side anticheats are essentially advanced rootkits, and cannot be
implemented in a browser sandbox.

------
tartoran
Wow, I find this amazing though im not into this kind of games at all. I gave
it a run, took a while to load at first but the playing experience was quite
nice. I killed a few people with a knife and got killed a few times and thats
enough violence for me.

Nonetheless, having this run in the browser just like that, no downloads, no
installs, no tweaks.. im wowoed. Good job peeps

Edit: my experienece was quite nice, I launched this in Firefox on Win 10 on
my mediocre laptop (i7-7560u/8gb ram)

~~~
notRobot
That's not a mediocre laptop.

~~~
tartoran
I paid ~$500 for it, its an average laptop. Lenovo ideapad s340. We’re in
2020, whats an average laptop for this time and age

------
tomc1985
It's hard to figure out which server I'd want to play when they don't show
pings in the server browser

~~~
kbenson
> they don't show pings in the server browser

Pings are more complicated in this setup. A low ping to a server won't help
too much if you have high ping to the online client itself. Are there
different clients in different locations so you can select a low-ping client?

~~~
capableweb
No, ping is as complicated as for any gaming server. You have one central
server and many clients connected to that central server. I don't think the
game is running somewhere else, it's running directly in the browser, so only
ping you care about is from your computer to the central server.

~~~
kbenson
There's definitely not "one" central server. Depending on how they route your
connection (do they proxy you or redirect you), you might still just be
connected to the server you're playing on, but the "ping" is also more
complicated in itself since the protocol is more complicated. Instead of
information from the client to the server which updates all the dynamic entity
states, you are instead sending input commands and getting video and audio
back. So, not only would "ping" measure something entirely different, it would
possibly be optimized for in the path between you and the remote differently
as well.

They may have decided that instead of providing a metric that might lead
people to believe it's similar to and implies the same thing as it did in the
past, they'll remove it. If so, I would hope they would put something semi-
equivalent in it's place. Maybe they did, but it's so removed it's hard to
locate?

------
dirtyid
Wish I knew about this during quarantine.

------
jean-malo
It worked for me after a few tries, input lag is pretty significant though.

Anyhow it's a very neat project, thanks for sharing!

------
lxgr
Impressive! But it also feels like this is making a convincing case for an UDP
equivalent to websockets.

------
quyleanh
Such a memory... There is some lag due to network, but this is still a great
and very promise project.

------
catwind7
oh my god this is so cool. I just played a round of C.S in my browser. still
letting that sink in.

------
eddieoz
As a demo of a web application, it works very well. But definitely not for
playing yet.

------
ksec
Does it work on Safari? It has been initialize Shaders for the past 10 min.

~~~
solenlyser
Yes, works fine in Safari 13.1.1

------
ameyv
This reminds of Gary Bernhardt The Birth & Death of JavaScript :)

------
mleonhard
It feels like 15 years ago, complete with random lag. :)

------
darcien
Wow, this is really cool. I wonder if in the future, everything will run on
the browser, and most software doesn't care about the OS at all.

There's even a xkcd comic about this[0].

[0] [https://xkcd.com/934/](https://xkcd.com/934/)

~~~
Abishek_Muthian
Technically it can, but money from Appstore, Playstore, Windows Store is too
lucrative for the behemoths to give up their hold on them to improve the
browser ecosystem & web apps in general.

~~~
rhlsthrm
Is there a way to reconcile this? Web has such nice tooling to develop for,
but it's also nice to have the discoverability and monetization opportunities
of a centralized app store.

~~~
AnIdiotOnTheNet
> Web has such nice tooling to develop for

...really? Web development is the absolute worst development experience I've
had since doing COBOL in college. I have difficulty believing anyone can claim
this who has ever developed with proper tooling for anything else.

~~~
rhlsthrm
I guess I haven't done too much outside of web to know much else :). However I
have done some iOS stuff and the tools are okay but much less open source,
documentation, etc.

------
sid_dubey0312
This is so cool, the guy that made this has my respect!

------
sumityadav8181
Browser gaming is certainly going to evolve more and more. With Stadia and so
many other browser-based games show great examples of what can be achieved.

~~~
haolez
Stadia is a different kind of browser based gaming. It's a stream of inputs
and outputs.

------
pbasista
I have tried it in Firefox 77 on Linux running on a Core i7 CPU and the
experience was mediocre. Low fps, delayed sound and imprecise mouse movement.

~~~
Krasnol
FF77, i5 CPU on Win10 -> perfect.

------
imshashank
Not the same as a desktop version.

~~~
halgir
That's the point.

------
joyj2nd
And there goes the weekend...

------
sealthedeal
this is super cool. any chance this is open sourced?

------
weehack
These things need to be treated like crack cocaine.

------
andreigaspar
OMG! I love 1.6 this brings back so many memories!

------
VirgilShelton
Ah memories!

------
bajcmartinez
I just found a new lunch break hobby lol

------
conroydave
this is fantastic

------
jjkmk
This is really well done, is there an easy way to change mouse sensitivity?

------
timonoko
Welcome to 2003. This is quite ugly and those counter-jihadist bastards refuse
to die.

OTH. I think remember a very good browser version of Crysis. Where is it now?

