When companies clutter first experience with legal disclaimers, signup offers, and every other thing, I wonder if they are always carefully balancing the competing interests of business and product design as a big picture weighing everything together.
To the extent they do that’s great, but it seems sometimes its a lawyer trying to do and think only of their job, a marketing person only thinking of their job, sales only thinking about revenue, rather than globally optimized decision.
Instead, having worked in web development, I know that website payload size is often driven by having to include vendored javascript for business reasons (analytics and social are big culprits) or because your boss doesn't give you the time to focus on performance because for the business, it is good enough and they want to use their limited web development resources to do something other than shrinking javascript payloads.
Another thing, you're impressed by the graphics and how the developer was able to include them while keeping the payload small. It seems to be made using vectors and particle effects. Both of these techniques are not heavy in terms of payload. Shaders and particle effects are generally very small amounts of code. Think about how this is different for a website that heavily relies on all sorts of user-generated content: jpgs, mp4, gif, png, etc. Much larger assets than a few shaders and svg.
For what it's worth, I do think this. It's easy to just drag another JS library into your code without thinking of how long it's going to take to load.
I don't doubt that there are junior web developers who don't know much better. But I don't really meet anyone who says that they just don't care about performance.
Rather than "lazy" or "don't know", how about:
- it's fast enough
- have other priorities (security, stability, usability, functionality)
- optimize developer time
...
> small
> website obesity
Phis is not a website, but my throttled phone connection disagrees either way.
Please have a look at js1k. Or go directly to size coding, e.g. .kkrieger, which is a FSP game techdemo in 96kb, see https://news.ycombinator.com/item?id=14409210
This. Is. Ace! Thank you!
Callsign: tseug
To the developer, if you want another, I develop another popular online game (TagPro) and I desperately want to help you make this a bigger game. This has incredible potential, and it mirrors a game I've been developing for like a year. I haven't had this much fun with a webgame in a long time.
Feel free to email me, my email is in my profile
Never did much game dev before but it gave me a lot of respect for people who can build one. It would probably take me a year just to figure out lag compensation.
Probably not worth supporting. :) Adding new features and figuring out ways to keep people playing might be much more worth your time.
The netcode in subspace was a bit better, probably due to needing to deal with 200ms+ pings that were common back in that era.
Subspace Continuum is an anti-hacking fork released in 2001 (Subspace was released in '95) and is now the only official version of the game.
Plenty of nostalgia there as that was the first computer game I ever played and a classic from the 90s.
One other quick request, now I think of it - can the key event handler pass F11 through? Being able to un-fullscreen would be handy.
Awesome game! I look forward to the writeup on the tech stack and how it's done.
There probably were a few flash games like this, but didn't caught on like it has now.
http://www.kongregate.com/games/CasualCollective/minions
http://everybodyedits.com was one of the first MMOs I played with no config (except a name and a map to join). In addition all of the maps were editable. So it was unique in that every map was completely user created.
Some gameplay footage: https://www.youtube.com/watch?v=LiO6XYt8M14&list=PL192CF249E...
Large list here: http://iogames.space
I use 2 WS connections mirroring some packets on both, to deal with head-of-line blocking.
When a packet is lost in a TCP stream, it must be retransmitted, and until the client receives it, all further packets are stuck in limbo (received by the client, but cannot be seen). For this reason, most games use UDP instead, and are designed so some packet loss is acceptable (if I received where you are at frame N, it no longer matters if I receive where you were at frame N-1).
Minecraft uses TCP, that's why in very populated servers occasionally you can see the whole world freeze for a second.
In the browser we have UDP with WebRTC data, the problem is that not all browsers support it, it may not work in some places and for now it's more difficult to work with.
An easy compromise is to use several TCP connections, so if one packet is lost, instead of having N packets stuck for a moment, you have 1/N where N is the number of connections. And if important packets are sent through all channels, the chance that they arrive too late is much lower.
There's also another important detail. Due to delayed ACKs on Windows and battery-preserving TCP stacks on most mobile devices/laptops, some of your packets will be delayed. Even with TCP_NODELAY. Desktop OSX/Linux do not display this behavior.
The only solution I have found, and it's a rather crude one, is to blast the server every 50ms with a 1-byte packet. It is ugly but it works well.
TCP from a master server to every client.
and
UDP low latency links from every client to every other client.
The client code sends a sample of received UDP packets to the server over the TCP connection, who will then verify that all info contained in the packets is true and accurate and nobody was cheating.
It's a nice model because you get the super low latency between clients, and at the same time within a few hundred milliseconds you can detect cheaters and kick/ban them.
Obviously, you have to design your game to handle asynchronous lossy information from many different sources and nobody having a complete and whole view of the game until half a second later or so. Thats quite do-able though by timestamping every event and then running rollback-able or checkpointed synchronous simulation on all clients.
And it even still exists! store.steampowered.com/app/352700/Subspace_Continuum/
Are there any plans on letting anyone host their own servers?
Great fun though!
Gameplay wise: looks like you may want to slow down the reverse speed... or not it's pretty fun as is
[1] http://www.sdispace.com/index.html
[2] http://www.windowsgames.co.uk/critical.html
Love this game :)
Might I ask what OS/Browser/ISP are you using?
I'm running chrome on ubuntu on a dell xps 13
1. Was cross-hair/radar lock, omitted on purpose to improve screen on time or would any upgrade give that ability ?
2. Analytics - In the free for all, do see players avoiding other players if they see their country flag on them?
OS: Windows 10 (Build 16251) Browser: Firefox Developer Edition (58.0b10 64-bit)
Is that low, high or normal(expected)?
I wish there were more stuff to upgrade/unlock, I've reached level 6 and even't unlocked anything in the past 3 levels.
Hi from "Moz://a" in the game!
1. You could sell "upgrades packets" in the login screen, so that one can start playing with an upgraded aircraft from the very beginning. 2. There could be other aircrafts that could be either unlocked with enough points or bought.
Sure, but please no P2W (Pay 2 Win).
> 1. You could sell "upgrades packets" in the login screen, so that one can start playing with an upgraded aircraft from the very beginning. 2. There could be other aircrafts that could be either unlocked with enough points or bought.
That's P2W. That has nothing to do with gaming, but with insecure people who wanna pay money to feel good cause else they can't win. And those who don't pay end up as being NS (narcissistic supply). Fuck that.
I don't know how to monetise the game other than serving some adds in the screen during the warming up. But please not via P2W mechanics. It ruins the equal playing field, and it lowers the quality of the game cause the good players who know about the mechanism won't fall for this.
I have so much work to do but can't keep off it!
Suggestion: place powerups in areas of the map that have not seen combat recently.
It seems like almost all the combat is over Europe, and the other areas of the map are almost always completely unpopulated. The most fun fight I had was when one other aircraft and I got into a dogfight near SA/Antarctica. It lasted several minutes, just the two of us. Even so, it only happened because I followed him there, and apparently he was just exploring the map.
So if you were to track combat activity on something like a heat map, you could spawn upgrades and powerups in cold areas of the map. This would encourage players to go hunting for them. As a result, different areas of the map would see combat regularly, and the hotspots would move around.
Also, if you spawned players in away from other players, it would encourage encounters around the map instead of concentrated in one area.
Finally, I use WASD in home-row position, and I'd like to rebind the the shoot and action keys. If you could make this possible, it'd be great.
Thanks for sharing your work. It's a fun game.
Mohawk (helicopter) and Prowler (stealthy) don't seem worth it.
The helicopter dies from a single stray rocket, random spam and attacks from behind. Alt+arrow for strafe worked in DooM because field of view always pointed away from the player. Here, strafing is hard to get used to.
Since there are already 2 keys for ability, why not make one of them "strafe left" and the other "strafe right" ?
Also, because helicopter lacks a clear point, it's harder to aim.Stealthy Prowler is very slow and not especially fun to play. To the point that only effective way to play is to cloak after every rocket fired. You crawl towards a victim, then shoot at close range, then recloak. Visual notification is quite subtle, there's no sound and you end up mashing the ability key never quite sure if it already worked. So it kinda works against newbies... but sneak attacks are also effective with Goliath (the fat one) and Tornado (multifire). So I don't see the point. And here's the kicker: advanced players see it because they play (and aim!) by radar. This is an issue when fighting away from the crowd.
Thoughts on upgrades: - I would appreciate a kind of "laser sight" upgrade. Each level would render a laser line in front of your plane, and the line would get longer with levels.
Prowler is awesome against the Goliath. So, so good. In fact, I'd say the Prowler is the Goliath's main counter, and when I lasted ~15min at #1 in a Goliath, it was a skilled Prowler that finally started annoying me, made me start missing my deflects, and knocked me off my balance. I was thinking the Goliath is unnecessarily OP, but the Prowler handles it. (Smart Prowler pilots: go stalk Goliaths.) Might OP the Prowler, but making it shoot a spread like the Tornado might turn the Prowler into basically an instant-backstab Rogue. Now that I've typed that, yeah, that'd be OP, don't do that.
This game is heavily influenced by Subspace/Continuum, and it's fairly obvious. I could even tell which ship mapped to which fighter in this, and I appreciated how well my skill transferred. My main annoyance was that score drop. I maintained about a 5:1 KD across 500 kills and regularly flopped from #1 to #25 to #2 to #30, because the score you lose on death is a little imbalanced. A few deaths in a row and you can lose 10-15 places, which seems a little rapid. Maybe knock a little off that multiplier on death, but leave the killer's score gain alone? The only way to stay near the top is not die, which makes sense since it's called a bounty, I suppose. Still rough.
Other random feedback to the author: Inferno needs a buff. That speed penalty hurts and is a pretty rapid way to die -- I noticed I was avoiding it as I played. Most of the power-ups and abilities could stand to last quite a bit longer, too. And spawners could really use a lockout on shooting for the same duration as their protective shield; you can spawn in, immediately press spacebar, and probably get a kill on a surprised person who happened to float through where you pop up with no chance to avoid.
Great game, though, I didn't expect to get sucked into a browser game for three hours. I'll be playing it again.
Tip I didn't realize until a long way in: 1, 2, 3, 4 map to upgrades. I was the idiot using the mouse.
Prowler is not very good against Goliath because the Goliath can deflect, and its deflect ability unstealths the Prowler. Only a Goliath who has bad reflexes and goes in a straight line gets hosed. And one rocket doesn't kill the Goliath. And as soon as they know Prowler is on them, they're on their toes.
Even in a FFA game a Goliath is easy to take, but only once they unloaded their energy bar or took a few hits. Other players can help with that, consciously or not. And if the Goliath has a large bounty on their head, it is in their interest to help. FFA isn't literally FFA all the time. Sometimes interests align. The bounty system aids that, and its fun. K/D ratio is the real, publicly hidden score.
As a player you should avoid being near the spawn points. You learn where they are after a while. Planes always spawn facing north.
Reason I bring this up is to back up this point with a caveat: a skilled Prowler pilot is able to solo take down a Goliath only if the Prowler is faster (with upgrades).
On the EU server, the meta was missile spam fest over Europe. So I took the stealth ship to the North Atlantic and Arctic Ocean. There, the playstyle of the Prowler is one of patience.
Your first goal is to never die. Period. This is how I was able to be consistently top 4, and off-and-on #1 on the server depending on the other players's fluctuations.
The second objective is one of cowardice. You are paper thin. One hit will decloak you and worse, you are so low health that a single helicopter missile will finish you off. This means the playstyle is to find a handful of jet pilots that are dogfighting. Be close enough to them you can zip in, but far enough away you are still on the outskirts. This means you have to learn to be incredibly agile dodging missiles and learn how to read dogfights, which takes practice. It also means no one else gets to see your skills doing this, and therefore will assume you are a shitty pilot.
The third rule is one of ruthlessness. As soon as one of the dogfighters is damaged, swoop in on top of them and fire right before you pass over them. This takes timing so you don't run into other missiles (rule #1). The reason for this is because you do have 1 shot before you have to flee and re-stealth. But the other reason is for the surprise factor and hiding amongst the explosion (if you hit your target). It buys you precious milliseconds to re-stealth.
With this playstyle I rarely died, and went after the top dogfighters over Africa: k, jj, test, qjp (?). After a couple of pickoffs and being told to fly a real plane, I sat near the top of the score board regardless of fluctuations.
That is, until BeatDaddy came along. A Goliath pilot of great skill, he took out most challengers. However, as a Prowler I was able to almost solo him until jj out of the blue took my kill. So I killed JJ. :)
The strategy is simple. Only shoot the Goliath from the sides or back (avoiding the big missile) and only when in range of the AoE effect. Why? You want to force the Goliath pilot to waste their energy spamming the AoE. You have time on your side, you can hit them once every 10 seconds or so and still whittle them down because of the slow Regen.
But beware, big missile is 1 hit kill!
I never was able to fully solo BeatDaddy, as once I lost my upgrades from an unrelated death the Prowler cannot tackle a more upgraded Goliath.
In general the optimal strategy seems to be sniping. Stay on the edges of the map (N. Europe, mid Africa) and then sweep in to more highly trafficked areas and pump in missiles. If you are ever hit retreat immediately until you recover your health. That's a pretty low risk way to stay at the top of the leaderboard.
> The second objective is one of cowardice.
Those should be your goals in BTR and perhaps also in FFA (with less punishment so requires more discipline). If you find yourself unable to follow this playstyle I recommend trying out BTR for a while and apply the lessons from adapting your playstyle there on FFA. But FFA is just warming up for CTF/BTR IMO.
The reason why I quoted this is that it is untrue in CTF. Cowardice doesn't yield you the flag in CTF so you need some people on offensive. How many? That depends how good your defensive holds as well as how good you're at intercepting (f.e. I like to switch to Predator when I want to intercept). In CTF, the strategy you mentioned allows for a strong long term solution because defending is much easier than offending. But sometimes you need to sacrifice yourself for the team, or you need to attack (which puts a massive crosshair on you). Getting a lot of kills (and pretty much therefore upgrades) isn't difficult whilst you're not going for the flag. Also, if you're escorting the flag carrier your first goal isn't you not dying; its them carrying the flag to safety. There are some tactics like spraying and stopping the enemy with distractions but that won't stop players who have strategic oversight. At best you're a nuisance to them; that could be your goal.
The Mohawk (helicopter) is great in CTF because of its speed and because it can put pressure on key points, and its a strong contender versus stationary and slow. Strafing required some practice but eventually you will get the hang of it. Its sometimes a bit "YOLO", like for example flying through explosions where I am not entirely sure if its friendly missiles or not. Then I end up with say an upgrade, but I wasn't sure it was safe. I took quite some risks grabbing some upgrades. Defensive upgrade can safe you there. Another thing to remember with Mohawk is that Prowler can be seen on radar and they cannot keep up with you if you don't want them to. If you can strafe and spray and be a bit unpredictable with your movement you can give other players a hard time aiming (although I found many people to be rather terrible with aiming).
> I never was able to fully solo BeatDaddy, as once I lost my upgrades from an unrelated death the Prowler cannot tackle a more upgraded Goliath.
That's because the Prowler isn't that great against a Goliath; it is good to snipe one shot kills.
I found the best recipe in non-CTF for Goliath is to ignore them. The Goliath players are constantly playing "you can't kill me nanana". True, I can't, but you can't kill me either in my Prowler/Mohawk/Predator/Tornado and even Goliath itself. Instead of seeing them as a target you want to kill, see them as something which is out there to lure you to beat them in tennis or (ping) pong where they have an easy time to bounce all your balls back. Yet if you don't play, you can't lose, and meanwhile you can win from all the other players and they (the Goliath players) can't beat you either. If more people would do this, it gets very boring for the Goliath players. That's when you read in chat "I'm at the Canary Islands come and get me". I'm still chuckling on that one. You just know he's bottomfeeding from noobs who go for the "challenge", to grab some upgrades.
That's for FFA. That doesn't work in BTR though. BTR makes for a very boring Goliath matches IMO. In CTF, Goliath is very weak IMO. I don't see the point. Its very slow, it can't easily build up upgrades, and it can't troll/lure. It can sit on a chokepoint but then there's other stronger contenders. Only thing is 2 or 3 of them I couldn't get past when they were defending. Cause I couldn't kill them and they shot me. But that was me soloing on offensive versus 5 people on defensive. Some good Tornado players were also able to kill me. And in the end I did get past.
The Prowlers are great at whittling down a Goliath and otherwise being a psychological nuisance; while there is some counterplay involved a lot of it comes down to a mixture of luck and intuition.
The Mowhawks are just downright nightmares over open water. They fire much faster than you can deflect, can maintain enough range to avoid the missiles you do deflect, won't die outright to one of their own missiles you've deflected, and will often outrun your missiles. In open waters they should win a 1v1 situation through overwhelming bullet hell mechanics; your best bet is to take them into mountains where you can limit their movement advantage.
I do think it would be interesting if each craft had its own upgrade line, but I imagine that'd muck with being able to change frames during gameplay.
The main issue I had with the game was trying to get to spectator mode - it was a very short amount of time between respawns which was great, but hard to actually hit when trying. I'd suggest either or both of a hotkey to enter spectator mode, or a button to spectate after next death.
Defense: +5% per upgrade. Goliath gains the most, while a Mohawk (helicopter) with 2 Defense upgrades blows up from a single Predator (default) missile. But you still need those 3 or 4 defense upgrades to survive a stray missile, or more importantly - a Prowler.
Speed: extra speed is not much needed on already fast aircraft, sight distance is limited and human reaction is limited.
Energy: it lets Goliath deflect and shoot more often. Others are not as energy intensive.
Actually I think all aircrafts could use a a little bit more speed.
btw it performs better on Firefox 57 than chrome, I had some lags on chrome then switched to Firefox and it worked without a single lag
It's fun, and implemented beautifully.
Great job!
please update to ignore case in controls.
also bug, BT KB kills any touch control on an ipad... plus it hangs on a certain direction and contrl dies very fast...
way too buggy to even play on an ipad with a BT KB