336 comments

[ 2.7 ms ] story [ 308 ms ] thread
Such a memory... There is some lag due to network, but this is still a great and very promise project.
Does it work on Safari? It has been initialize Shaders for the past 10 min.
Facing same issue on Chrome.
For me, this is a good gaming experience.. Just stream and cache :-)

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

Still awesome

How does this work actually ?
It's a WebGL clone of Counter-Strike 1.6 that can even load original maps.
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.
I guess it is where the server is? See Asia (Indonesian flag?)

Also most of the dannish kingdom's land is not in Europe either.

It is not indonesia but singapore which is just 0.0017% of asia.
but 100% of the money laundered in Asia! /joke
A good chunk of Russia is geographically in Europe.
So is Holland's. Let's use the Dutch flag for Europe.
It's a good addition to the running joke about Valve's games that EU servers are Russia West.
Became moderately proficient at Russian thanks to Valve. такая халява.
My kids can swear in Russian as they play CS:GO ...

I enjoy when I get foreign language players of a language I know some of, it's a good way to practice IMO - wish one could choose a preferred language.

I guess they don't do that because of the impact on matchmaking (mm), the mm seems crazily sub-optimal I'd love to know that logic behind it : like when you have a game of 9 people, why you abandon it rather than finding a person from the pool of 100k waiting that will play. It could be a setting "allow game requests from mm" and they could give a little xp for it - beats searching and waiting another 10mins to start a game.

The server is most likely in Saint Petersburg or Moscow which both are very much in Europe.
I'm guessing all their EU servers are in Russia. My ping was pretty high from France.
Most of the land isn't in Europe but most of the population is and I daresay Russians outnumber other nationalities on European servers.
Last time I checked - Valve has no game servers/entry nodes in Russia.

Western Russia connects to Sweden or Poland. Northern European and Eastern European countries connect through the same nodes.

Connections within Valve network are handled internally (since they can tune it for better latency, etc.) and you don't even know where the actual game server is hosted. So there is always a big mix of players no matter where you are in Europe.

Fun thought: it depends on how much throughput can be handled by Starlink, but Valve could waste some money on it to bring players closer from further away. They already have the dynamic, latency based entry node selection set up. If they hooked up some of the internal network through Starlink, it could be amazing low latency cross-continent gaming. And games like CS:GO and Dota 2 doesn't require too much bandwidth.

(comment deleted)
Russia is and always has been considered a European country.
I was always told Russia spans two continents.
France technically spans 6 continents. It's still a European country.
The Russians are firmly in charge. Try asking some Turks in Russian territory whether they have an equal voice in the country compared to the Russians.

Is the US more of a European country or an Amerind country? What would its geographic location suggest?

That's news to me, an European.
Then you payed poor attention at school.
Isn't network topology is the determining factor (instead of world politics) for these naming conventions?
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!

Is it WebSocket or Data channel based?
It worked for me after a few tries, input lag is pretty significant though.

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

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/

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.
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.
> 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.

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.
The current answer here seems to be Electron, which unfortunately means that I have about 20 copies of Chromium/Electron taking up disk space and memory on my computer.
IMO, only when native apps dependency on smartphones are reduced we can see web apps maturing.

PWA, Linux phone's dependency on web apps can help a bit, but I don't see it beyond the enthusiast/privacy market.

Because App publisher - Appstore relationship is 'scratch my back, I'll scratch yours' type relationship. Top apps isn't going to get as much telemetry from web app as they get from native app, at least not without people knowing or fighting with ad-blockers.

So everything just moves up one layer of abstraction, takes the associated resource hit, and the cycle begins anew.
Everything just pops up a layer though, you now have to deal with performance and behavior differences between browsers. And for games you'll see everyone accounting for the 80% case (Chrome) maybe the 20% case (Firefox/Safari) and everyone else left out in the cold. Somewhat simpler API surface layer though.

The real beauty of the web is to be able to jump into something just by following a link and that lets you do some really fun things. For example we recently collaborated with the streamer Day[9] to build this swarm game* he played with his audience. That basically requires the ease of access you get from the web experience: https://www.youtube.com/watch?v=bs1p22oI_V4

* - The whole game was also built from inside a browser.

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.
Noice. A mac mini late 2012 w/ a 4K monitor was faster than my water-cooled AMD K6. :-@-)

~20 years after playing CS beta 0.4x, I just am too old to play FPS twitch games. :D I was playing from Davis, CA to Stanford, CA with a 7 ms ping due to 1/2 T1 (768 kbps) SDSL (with a static IP!) from Verio/NTT for $60/month around 1999. At our house, our router was a Linux box I cobbled together and put a CS server on it. Good times. B-]

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?

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.
(comment deleted)
I remember playing CS around 2000 on a 333-MHz Pentium II with an ATI Rage graphics card, and it was a much smoother experience in every way.
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/ 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.

Krunker is fantastic. I have wasted many hours in that game :)
That was impressive, on mobile and I was able to just hop in and start playing. Not something I’d play, but just impressed that I was able to so easily
This is not random. Prediction and compression is all GoldSrc original, from leaked sources. WebRTC/WebSocket is HumbleNet.
damn krunker is really not bad at all
Amazing experience there with kunker. So snappy. Thanks for sharing.
(comment deleted)
How good is krunker? Don't have a mouse but maybe I could get one.
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.

Do you have any more information on getting around head-of-queue blocking by opening up multiple websocket connections instead of just one? Seems like an interesting solution.
Then again, the netcode of the original HL1 engine was extremely good for its time.
On a similar note, I think people were _way_ too early to celebrate the death of Flash (security issues aside of course). Developers were making content in 2000 which their contemporaries 20 years later don't come anywhere close to in terms of performance, design, or responsiveness.
That style of content just disappeared or turned into video only as far as I can tell.
Flash had more than just security issues. There were definite limits on complexity.

A great example is the original Binding of Isaac; written in flash, but near the end everything was so precarious that backups had to be made before certain publishing stages because sometimes it would corrupt the files it was trying to build (Due to the complexity.)

If bugs in flash forced people to use source control for complex projects then I would call that a feature.
Well ignoring those issues, is there a html/websocket "framework" which works like flash did?

AFAIK, "zero code" systems still haven't reached the level of hypercard (the spiritual predecessor to flash) when it comes to being able to define event->action with a mouse, much less expanding them to the full capabilities of flash.

I dunno. I implemented my games'[1] netcode on top of WebRTC and it runs just as well as proper UDP stuff. If you configure it be unreliable and pack everything into small binary commands then it behaves exactly like you'd want for a fast-paced multiplayer game. Obviously most web games use websockets for networking but it is certainly possible (albeit much more difficult) to have very fast netcode in a browser game.

[1] https://redka.games/mages

What do you mean by "small binary commands"?
Use websocket in binary mode, pack operations into tiny messages.
actually binary websockets won't do in this case since the underlying protocol is still TCP with automatic retransmission mechanism which kills performance for very fast-paced games. You have to use WebRTC in that case
So there's no reason to use binary commands when using something like socket.io?
not much but shaving off some bytes is good in itself
Instead of cramming ecoded json into the data channels, like you'd with websockets, you can build binary buffers with all the data that has to be communicated between server and client. For example movement commands like up/down/left/right alongside some flags like isJumping can be packed into a singe uInt8
(comment deleted)
Yup, delta compression and potential visibility sets are also a huge win as well.

The best thing is to design your gameplay to be "predictive", that's how we had ~300 player games like Subspace over 28.8/56k way back in the day.

It's been awhile since I took a crack at WebRTC. Do you still need to go through all the peer negotiation even when you are just trying to get to a known server?
Yes, you still have to go through the negotiation. I put together a tutorial for a minimal Node.js Server + Browser Clients example a while back:

https://www.marksort.com/udp-like-networking-in-the-browser/

Bleh! I was really hoping they would have smoothed that out by now. I just want a damn UDP socket to my server!

I guess it's easier to piggyback on the security model of the P2P handshake than work out a separate model for client-server communication.

I built a pair of libraries for a nodejs<->browser DataChannel, it was a nightmare at the time though, and I'm sure totally obsolete by now.

Given how long it took for us to get %*@!$ data channels, I guess we'll get a simpler way to connect to a regular server in... 2030? (I watched WebRTC very closely from the Ericsson prototype was released... for awhile I was contemplating trying to pass data in the audio or video streams -_-)

This appears to strictly use WebSocket, and not touch WebRTC at all.

It is no surprise that a TCP text-based protocol sucks for realtime gaming purposes.

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.

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.
So crouch + forward will close the game? This might become the new Alt+F4 for more money hoax.
Use "c" to crouch.
browser FPSs will never take off due to complete lack of protection from cheating, and cheating is the core implementation issue with FPSs.
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.

Client-side anticheats are essentially advanced rootkits, and cannot be implemented in a browser sandbox.
Because it runs in the browser it's trivial to apply client side cheats. For example see through walls, auto aim.
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 !
On the other hand, they don't require admin rights, disk space or installation time, and are platform independent (including for example chromebooks)
I'm all for web apps, but does CS actually require admin rights?

> disk space

CS just downloaded 185mb of network resources for me to play. I would have thought those resources are stored on my disk, and not just in memory.

> installation time

That 185mb of resources took ~1 minute to download. By the time it had finished, it told me the server was full.

Regardless this is still very impressive.

I'm not going to claim that one is better than the other, because it's all about tradeoffs.

But I'm sure more people played this right now because of the low barrier to entry.

And the admin rights might not even be technical. Not a lot of people are fond of installing games on the laptop from work.

But like I said, everything has tradeoffs.

> But I'm sure more people played this right now because of the low barrier to entry.

This is the key point. If I'd seen a post about CS with a zip of an executable I would have passed.

Why? Because it probably wouldn't have run correctly or I would have had some other issue with it.

Let alone checking the provenance and worrying about malware.

>I'm all for web apps, but does CS actually require admin rights?

No. The cracked version(s) that are played in schools and whatnot are usually just a zip file you extract and run.

More like a portable CS that can be placed in the documents directory and run from there. I remember my son's cousins installing software while not as admin on my Windows PC by installing in the documents directory. CS, AOL Chat, etc.

A good way to get malware as well. I could never trust those cracked versions. One cracked version made CS 1.6 with Navy Seals looking for bin Laden, which I thought was fun.

The first two are trivially solved by portable applications (AppDirs, Application Bundles, AppImage, etc.). Platform independence is only kinda true, as many of these things don't actually function correctly on anything but Chrome, so they effectively target just one platform.
Omg the modern web has become a monoculture!
Chrome runs on many different platforms.
Those are all very minors inconveniences. Installation took a few clicks, disk space is negligible for that category of apps (and if it isn’t re-downloading on each access is a more pressing issue). Only the platform thing matters, yet the exemple you give isn’t convincing given it’s super low market share.
(comment deleted)
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)

Hey, can you send me a link to that Nox port? What a blast from the past - I remember saving up to buy that game as a kid :)
The subreddit has a small community of people playing. iirc there's a community server you can point the Gog.com binary to: http://old.reddit.com/r/nox. (The Gog.com binary actually runs on macOS if you're pre-Catalina as it's 32bit, they just removed the indication since everyone is on Catalina now)

The browser "port" is here: https://playnox.xyz/ (200mb) -- Whether online play is available or not can be hit or miss. The single player campaign does work as well -- worth it for insta-nostalgia.

I say "port" in quotes because it's not just a matter of `cat nox.exe | emscripten > nox.js` of course. The creator posts in the subreddit / the nox community forums and has some really interesting technical comments where he explains some of the challenges.

People who can pull off something like this (talk about cross-cutting engineering skills) really blow me away.

nice. i once spent a week trying to hack the engine to support widescreen resolutions. time to re-play it :D
Mouse tracking is clearly broken on Firefox here. The input lag is insance. I wouldn't link this to any of my friends with the intention of getting them to play Counter Strike with me.
Shame, I just played a few rounds in Firefox on a Mac without any mouse tracking or input lag issues and had a blast! Is it possible that you have some Firefox Add-ons installed that are messing with it?
> 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

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.
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.
(comment deleted)
> How about being able to play with your friends after just handing them a link?

That doesn’t work well for games with lots of modern assets.

> Native 1.6 doesn't even run on my computer at all.

That is strange, it works on the latest Windows.

> I think browser ports are the only hope that old games have at coming back.

Why? Steam, GoG, DOSBox, Proton, DXVK, emulators, VMs, etc. all give you access to almost every game that has been produced, today.

Many of those have thriving online communities, too.

You know no-one is forcing you to play CS in your browser, right? Why is it so offensive to you that this exists and someone else is finding joy in playing it? Why does HN love to rag on web technologies so much?
I simply stated that downloading dozens of gigabytes from a link is far from ideal. You also lose performance, features, community, and everything a place like Steam gives you.

> Why does HN love to rag on web technologies so much?

HN is quite pro-web and there are dozens of startups based on the web.

Nevertheless, my counter is: why does "the web" try to recreate existing technologies and operating systems?

I mean, before Steam this was basically the state of gaming. No community, limited features, spotty performance. This is just teething issues. There is no reason a platform like Stadia can't work in the future as these things get better.

And, in terms of downloading gigs from afar, you're already doing that, but instead of being able to play games while downloading you have to wait to download 60gb of COD updates, consume your entire PS4 drive with a single game. And while that is happening, you're just sitting there not using your PS4 because opening another application pauses the download.

We are starting to see more cross platform support for games between PS4, XBO, and PC. But older games won't ever support cross platform between Windows, OSX, and *Nix. A browser port could easily change that.

> Why does "the web" try to recreate existing technologies and operating systems?

It's the same trend we've had since basically the dawn of computers. We move things into deeper abstraction layers. Why is this an issue in your opinion? Isn't more options better? Isn't ideal to adapt old concepts to new implementations? At the very least does it not provide potential educational value?

(comment deleted)
> I mean, before Steam this was basically the state of gaming. No community, limited features, spotty performance.

That makes no sense. Before Steam there were many gaming online communities, all games were native and were marvels of technology for the time, etc.

> There is no reason a platform like Stadia can't work in the future as these things get better.

Stadia does not run games on web tech. Quite the opposite. They are native Linux Vulkan binaries.

> you're already doing that

There is a big difference between downloading a game once vs every time.

If you mention offline web storage, that is exactly the same solution as Steam and others do. A good example of the web reinventing the wheel.

> consume your entire PS4 drive with a single game

Not the case with a PC with terabytes of space.

> you're just sitting there not using your PS4

Not the case with Steam/PC. > We are starting to see more cross platform support for games between PS4, XBO, and PC. But older games won't ever support cross platform between Windows, OSX, and Nix.

That has nothing to do with technology. It is a matter of licensing, finances and support.

The overwhelming majority of games use engines which target all platforms, from PC to mobile to console.

> A browser port could easily change that.

No, because it has nothing to do with technical issues.

> Why is this an issue in your opinion?

I have never claimed it is an issue.

> Isn't ideal to adapt old concepts to new implementations?

A new implementation does not imply a better implementation.

>No community, limited features, spotty performance.

GameSpy.

Because the web is the closest to a universal platform where as the existing operating systems are walled gardens?
How are Linux, Windows or even macOS walled gardens?
https://en.wikipedia.org/wiki/Closed_platform

The average non-technical person isn't installing unsigned software on Mac or Windows, and the average person isn't using Linux at all so it's not worth considering in this conversation.

For all intents and purposes, approved windows applications and mac app store apps are what they get.

> The average non-technical person isn't installing unsigned software on Mac or Windows

False. The average non-technical person is installing unsigned software from Steam and other cross-platform game stores.

In fact, the vast majority of all PC/Mac users play games downloaded from Steam and similar stores, not from the Microsoft/Apple stores.

> the average person isn't using Linux at all so it's not worth considering in this conversation.

The average gamer isn’t using Mac at all either (4% vs. 1% according to Steam), so I guess it is "not worth considering in this conversation" either.

Which leaves us with Windows. So porting to the browser is irrelevant since all games are played in a single platform, according to your own logic.

"Nevertheless, my counter is: why does "the web" try to recreate existing technologies and operating systems?"

Was your exact statement so I'm not talking about just games and limiting it to them after the fact is disingenuous.

> Nevertheless, my counter is: why does "the web" try to recreate existing technologies and operating systems?

Why not? Why is it so offensive to you? You know you can just ignore it and move on, right? You don't have to be an asshole and shit on everything you see.

pretty sure I can't run 1.6 on my mac
I think you can, it has a native Mac port on Steam.
You definitely can.

But regardless of this particular game, it is not a valid complaint. It is like complaining your phone or your toaster cannot run a given game because it was never designed for them.

You can, I run 1.6 in Parallels VM, FPS is very good.
>How about being able to play with your friends after just handing them a link?

I ll tell you how. It sucks.

> I think browser ports are the only hope that old games have at coming back.

Dosbox? Wine? Look them up.

We used to hold game nights at my previous company and we would all play quake on the browser together. No installing, no sharing files, nothing. Just click the link on Slack and you're in. Nothing beats that.
I don't think that lowering friction is a great thing. A certain amount of easy-to-overcome exclusiveness helps keep a community vibrant.

When I was a kid I heard about a group of hippies that would have parties deep into the desert, far from roads or civilization. They had a "list", and if you were on it you'd get invited to the parties. Long story short, I figured out how to get on the list and one of the coolest things about those parties was how much effort everyone who attended went through to get there, both in however they managed to get invited and how much of a potential ordeal the journey was just to show up. The friends I made there put me on my current life course and now I'm surrounded by great people and a good tribe, which is really hard to find once you finish university. All because I put in the effort to get on the list and attend.

Sure, not making things super easy creates slightly less inclusive communities and they are definitely smaller, but they're longer lasting, have some shared plight to bond around, and are generally of much higher quality. Allowing any old yokel easy access kills community because there are too many tourists

This is such a joke. Elitist, even. Technology-sourced friction is not a great thing. Software that is hard to run does not improve the act of running it. It just prevents others from experiencing the same things you enjoy.

Are you really suggesting that you bond with fellow gamers because of how hard setting up the game was?

Yes. And in the scene I am describing we are being overrun with tourists because everybody is just so damn inclusive now. There's nothing wrong with elitism; it keeps things hardcore and gives newcomers something to strive for.
There's even less wrong with being "so damn inclusive".

There's nothing preventing these type easy-access browser based games from having "elite" servers for high ranked players.

then there are apps like photopea.com. feature parity with Photoshop, but starts immediately, consumes virtually no memory, requires no special permissions, runs on virtually any os. compare that to the adobe app which loads half a dozen services, takes about a minute to load, wont run on linux, etc...
I would actually love to see an old browser (e.g. IE 6) purely implemented in JavaScript to run inside a browser, without using the browser's DOM rendering capabilities (the web page should be rendered by the JS code on a <canvas> element, input events should be correctly handled, and of course a JS engine also has to be implemented).
What is a solid alternative that allow access to applications cross OS without an explicit installation step?
Well since we now have 10x the memory and 10x the compute we are able to do this.

Also, you don't need no stinkin App Store, zero time for installation. The only next step would be to have everything open source I think these are good tradeoffs. I rather have Freedom than performance and more and more tech users are doing this.

Justifying everything becoming a web app to avoid app stores seems to me a lot like swallowing a spider to catch the fly.
Agree. I seriously do not understand what is so hard about going to a website and downloading a program. It takes literally all of 30 seconds.
think the biggest issue with browser apps is proper asset management. what you see most of the times is a huge payload of assets getting loaded at the start. I would like to see some kind of streaming service for assets. specially with textures that would be really neat.
The hard part there isn't a browser vs native thing (native apps also generally ship with all of the assets in a front-loaded client) but abstracting your rendering pipeline to handle streaming or incremental LoD over the network.

It's more of challenge of taking the time to add that level of polish.

Kind of like the rare native game, like League of Legends, that will let you play before the entire client is finished downloading. Being a native app didn't give Riot Games that for free, they had to specifically build it for their game. Even in the native game market, it's AAA-level polish for a small fraction of games.

This is a flippant useless negative comment on someone's cool effort. Looking at your other comments, and at your blog - everything is negative. "This sucks, this is crap, I would never use this". What's with all the negativity? Just give creating comments and posts about stuff you like a try. The internet is not short of critics to make useless negative comments.
Yeah, enumerating why something sucks is trivial. Anyone can do that about anything. Yet for some reason it's tempting to do it. Maybe because it makes us feel like a critic?

For some reason it takes more effort to see the positives in something or someone, even ourselves.

It's often a good practice to stop and think of the positives of something. Maybe it's not so obvious. Why did someone decide to build it this way? They probably are well aware of the downsides (after all, they're the one who built it) yet they saw some upsides. They must have thought the upsides outweighed the downsides. What were they? The harder that question is to answer, I think the more useful the practice is.

Internet (and HN) discourse would be a lot better if we did more of that.

I know it's a challenge for me -- it's really easy to get stuck in a negative thought loop, especially while spending so much time on social media (incl Twitter, Reddit, and HN) where we like to award ourselves points for being critical.

This was actually explored in this Cracked article [0] which I heard about on the Cracked Podcast. Basically, being cynical and negative is one of the easiest ways of appearing smart because you don't need to back up any of your assertions and people are less likely to be called out for shitting on something.

[0] https://www.cracked.com/blog/the-7-stupidest-things-that-mak...

I don't see how being negative allow one to not back anything, I can say something sucks, but I'd have to explain why. And people will get called for shitting on something, see the GP comment.

I'd even say you're less likely to be called out for being negative without giving an explanation than being positive without giving an explanation.

Though it's usually easier to explain why something sucks than why something is great, since a negative explanation has only to find which part don't work, rather than explaining why something is globally good.

This isn't about being negative or critical. It's about being negative all the time. It's about labelling yourself as cynical and making all of your schtick be about that negativity.

I see plenty of well-thought out criticism on hacker news and reddit. I see excellent deconstructions and refutations which show excellent balance and are clearly the work of a lot of thought and rumination. This isn't about those posts.

The 'cynical is an easy way to appear smart' comment will apply most to daily conversation and low-effort drive-by comments on forums. In an everyday example, think about how people will make a joke or comment about how they dislike certain bands or pieces of technology. Do they always follow up with a bullet pointed list of what it is that they found disagreeable? No. I mean, sometimes, but if I were to take a clicker with me throughout my day and count every time someone made a casual negative comment, it would be higher than those presented with backing evidence, justification or even explanation. So to counter this comment:

>I don't see how being negative allow one to not back anything, I can say something sucks, but I'd have to explain why.

I disagree. You absolutely don't have to say why something sucks and most people don't most of the time.

But this is ok, though, because people are mostly just expressing their opinion. There may be some signalling that you have a better taste in music or that you have a more refined taste in technology, but most people won't even consciously register that that is the intent that you are trying to signal. So I'd say that this covers this:

>I'd even say you're less likely to be called out for being negative without giving an explanation than being positive without giving an explanation.

I will agree with you if the comment is negative and controversial but most of the time people are negative, it passes most people's internal 'controversiality test', it doesn't get challenged and nothing further happens.

>And people will get called for shitting on something, see the GP comment.

They will. Sometimes. However, we're not talking here about nobody ever being called out for being overly negative. We're talking about how overall it is easier to appear to be coming from a place of authority by taking a negative stand point.

Hacker News is rife with this. A new technology is posted and the first things that will be commented will be picking holes in it, finding obvious flaws, decrying or otherwise.

Statistically, this would seem to be fine and you're likely to be on the winning side of history most of the time. New stuff is more likely to be either undeveloped or unstable, ignore or duplicate work or be so forward looking that it isn't viable in the near term. However, this then also becomes the intellectually lazy stance to take. 'This is probably going to be bad, so let's find all the flaws first and then we can call it a day'. You will see many comments which will include lots of technical flaws without themselves saying what experience their criticism is based on. And the cost would appear to be minor: some things that become good and viable ideas eventually get shot down, but so what? If they become good then that person can just change their mind and no harm no foul.

Overall, this means that the 'cynical' mindset appears to be a stable one, one that means that you're right more often than you're wrong and one that means that you can appear to be talking from a position of authority without actually having to back that up.

So, sure, I see what you mean to an extent, but I think your point grossly misses the point of what my post (and indeed the two parents) were really getting at.

> It's about being negative all the time. It's about labelling yourself as cynical and making all of your schtick be about that negativity.

But you are talking about being positive all the time, and about labelling yourself as a better person and and making all of your schtick be about that positivity.

> I think your point grossly misses the point of what my post (and indeed the two parents) were really getting at.

Most likely.

(comment deleted)
I think it's a perfectly valid criticism of the ridiculous levels of resource wastage of software today.

This has merits as a form of art, but as something for practical use, I do not think we should be so wasteful with computing power.

For something related, but not so wasteful (and also a form of art), look at: https://en.wikipedia.org/wiki/.kkrieger

> In many ways, the work of a critic is easy. We risk very little yet enjoy a position over those who offer up their work and their selves to our judgment. We thrive on negative criticism, which is fun to write and to read. But the bitter truth we critics must face, is that in the grand scheme of things, the average piece of junk is probably more meaningful than our criticism designating it so.

> Anton Ego

Maybe GP will learn this someday, but based on their replies to you, that day is not today.

Meanwhile, they're raking in the upvotes thanks to their cyniscim, so why change their approach?

I agree with you on one level-- I think people on HN are generally overly critical of projects like this which are clearly huge accomplishments and the culmination of tons of effort... But on the flip side, I think it's plenty valid to look at projects like this as case studies into why modern web tooling isn't up to the standards of the tooling of 20 years ago (on much less performant hardware no less). Even within the browser, decades old flash games run circles around their JS contemporaries.
Which may be good. If I post to HN I'm looking for critics, not for an empty Attaboy.
constructive criticism exists tho, being just negative is just cheap
Comment OP here

I am an avid gamer who players a couple of hours of Apex Legends and Call of Duty Modern Warfare everyday. And I've been info FPS gaming for 2 decades now.

To play a game released a couple of decades ago and see it take up almost the same amount of resources as the games I mentioned earlier gave me a chuckle.

I commend the developer for his effort though. To make a game like that run on browsers is a mighty impressive effort and it is Uber cool. I don't dispute that even for a second.

Are you actually saying you need an Apex Legends-capable machine to play Counter Strike on the browser? You can probably play this with an Intel integrated card from 10 years ago.
Weird, I'm similar to you and seeing 1.6 running in my browser was just mind-blowing and took me back.
GP's comment is a short and non-insightful comment, this usually gets downvoted but for some reason it made it in this thread. I usually call this "driveby feedback" at work.
I think mad props are due to people figuring out how to port non-trivial, closed-source applications to browser javascript environments.
This is a clone, not a port.
I didn't check but I don't think what you said is the case with graphical resources.
Was it 10x faster to build and easier to maintain or are 10x of statistics not true?
It taking like 1gb of ram in chrome.

Your point? I literally just clicked on a link, downloaded a few assets and was into an online FPS. Virtually any modern computer in the world no matter what OS/browser should be able to do the same.

But I guess for someone like you it has to be written in assembly so it's 100% efficient, even though you take 100x more to attempt to get it working than your counterpart.. and you never actually finish.

This is a pretty short sighted observation. It's obvious to most tech folk here that yes, moving up to higher abstractions, higher level languages and paradigms comes at a performance cost.

But we could have just stopped at assembler with that insight. I mean all the rest is just slower, and less efficient.

> This is a pretty short sighted observation. It's obvious to most tech folk here that yes, moving up to higher abstractions, higher level languages and paradigms comes at a performance cost.

This is not even necessarily true. There are zero cost abstractions. Compilers can generate better assembly code than the overwhelming majority of developers.

It works well on my laptop without installing a darn thing. Why do I care if it's 10x the memory if I have that memory to use? Graphics are good enough. Gameplay is like I remember it 20 years ago (was it that long?!?!). I think this is pretty amazing.
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?

There's nothing stopped anyone from using protobuf in the browser, it's just not that common since JSON is easier to work with. Not sure how the netcode on this game works though.
> 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.

> 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.

Those are GC (Game Coordinator, server list, matchmaking) and Steam (items, trading, etc) protobufs, not for the actual netcode of Source games. There also seems to be some demo (saved game replays) related messages there, but I don't see anything gameplay related.
According to Valve, they deployed https://github.com/ValveSoftware/GameNetworkingSockets successfully on CS:GO.
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.
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, where you can play immediately :)

There is a disclaimer that first loading is always a lot slower, since it is downloading and caching all the files
Even after that first time, it takes a good 20-30 seconds to process the files again.
> almost a minute

Going 20 minutes already on a fast connection... still downloading things. Very ominous.

Is your partner keeping secrets of lately and you want to know why? you feel your partner is cheating on you? Do you or someone you know have a police or court case and want the case CLEARED and forgotten by us hacking into FBI or government server and wiping off HISTORY of its existence? Did someone steal your money and you want the person found and your money recovered? Do you feel somebody is spying on you or bugging you and you want the person out of your way or exposed? Did you lost or forget password to your Facebook,Instagram,twitter,Gmail,Yahoomail,Hotmail etc and want them recovered? Do you wish to spy on somebody's computer or phone? Did you loose contact with someone(family member or old friend) and wish to know where they are and how to locate them for you all to reconnect? Did you lose a pet(dog,cat etc)and want them found? You're welcome to our world. We're professional hackers and can invade devices(phones, emails,whasapp,text messages,Facebook,Instagram etc),hack out information you need and forward to you. Then you will stay happy.

+13026485479 (texts only) globalhacker1986@gmail.com

As a demo of a web application, it works very well. But definitely not for playing yet.
PRO HACKERS HELPING PEOPLE +1302-648-5479 (text)

Is your partner keeping secrets of lately and you want to know why? you feel your partner is cheating on you? Do you or someone you know have a police or court case and want the case CLEARED and forgotten by us hacking into FBI or government server and wiping off HISTORY of its existence? Did someone steal your money and you want the person found and your money recovered? Do you feel somebody is spying on you or bugging you and you want the person out of your way or exposed? Did you lost or forget password to your Facebook,Instagram,twitter,Gmail,Yahoomail,Hotmail etc and want them recovered? Do you wish to spy on somebody's computer or phone? Did you loose contact with someone(family member or old friend) and wish to know where they are and how to locate them for you all to reconnect? Did you lose a pet(dog,cat etc)and want them found? You're welcome to our world. We're professional hackers and can invade devices(phones, emails,whasapp,text messages,Facebook,Instagram etc),hack out information you need and forward to you. Then you will stay happy.

+13026485479 (texts only) globalhacker1986@gmail.com

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