HN in RSCserver-reason-react
top.mdnew.mdbest.mdask.mdshow.mdjobs.md
← Back to stories

Show HN: Airmash – Multiplayer Missile Warfare HTML5 Game

1535 pointsby fivesigma 3209 days ago304 comments

Discussion

Loading discussion
  • jws · 3209 days ago

    A lot of friendly fire among the HN crowd. "Make go boom" appears to be our goal.

    • proactivesvcs · 3209 days ago

      The Brits seemed to be fairly good towards each other :-D

    • tricolon · 3209 days ago

      There are teams?

  • anilshanbhag · 3209 days ago

    The game space is a little crowded i felt. Otherwise pretty cool game ! Do you plan to open source or do you know of a HTML5 game of similar complexity that is ? Would love to read the code.

    • Jarwain · 3209 days ago

      On the map I played, everyone spawns in over Europe. However, there's a whole entire world and NA and Eastern China was typically pretty barren

  • tonetheman · 3209 days ago

    Fun fun fun. Good stuff.

  • AngeloAnolin · 3209 days ago

    Really enjoyed this even after playing a few minutes. Good graphics and nice controls.

  • jonplackett · 3209 days ago

    this is fun! how did you make it? give us some details.

  • sidcool · 3209 days ago

    Super smooth.

  • sidcool · 3209 days ago

    What did u use too make the game?

    • fivesigma · 3209 days ago

      PIXI.js for the graphics. Serverside is mostly Node.js.

      • sidcool · 3209 days ago

        No websockets for persistent connections? How are you handling RTC?

        • Kiro · 3209 days ago

          Open up the Network tab and you'll see that it's using WebSockets.

          • sidcool · 3209 days ago

            Ah. Sounds cool. Would WebRTC serve better here?

  • mring33621 · 3209 days ago

    totally fun!

  • kharms · 3209 days ago

    The gameplay reminds me a bit of an old favorite of mine - Starport: Galactic Empires. I wonder of games of that nature could undergo a revival as browser games.

  • robmaceachern · 3209 days ago

    A+ nice work!

  • misotaur · 3209 days ago

    Nifty and addictive little game! Good job.

  • qmarchi · 3209 days ago

    I can't seem to get my aircraft to move forward using a keyboard. Flying backwards is fine, but using the ^ key is a nogo. Controller works fin theough! OS: Windows 10 (Build 16251) Browser: Firefox Developer Edition (58.0b10 64-bit)

    • samstave · 3209 days ago

      Off topic, but did they really have 16,251 builds of windows. Is that low, high or normal(expected)?

      • GroSacASacs · 3209 days ago

        normal, modern dev with automated builds and git creates a build every time you commit (or every push), and you can commit for a missing comma so ... with 10 or more people working on it on a daily basis it can go up very fast

        • samstave · 3209 days ago

          ah, yeah that makes sense - I was thinking of “releases” not so much “builds” and thats why it looked weird to me...

          • mschuster91 · 3209 days ago

            Also I believe that this is the kernel build counter, and it's the same counter that's used since Win95. Someone has published a list: https://www.gaijin.at/en/lstwinver.php edit: it's not the kernel build counter and MS has cheated with it in the past, but it has stayed sequential across the whole NT tree (as this is where any post-2K Windows originates). https://www.howtogeek.com/140411/learn-the-secrets-of-the-wi...

      • tambre · 3209 days ago

        Raymond Chen has got a video exactly regarding this! ( https://channel9.msdn.com/Blogs/One-Dev-Minute/One-Dev-Quest... )

    • mechanical_berk · 3209 days ago

      Same issue on both Firefox (57.0.2) and Chrome (62.0.3202.94) on Windows 10 (build 16299.64). At least for me forward doesn't seem to be completely ignored; while holding it down it will occasionally spurt forward a bit.

    • behringer · 3208 days ago

      I had to refresh the page once or twice throughout my play time because of key issues.

  • shortoncash · 3209 days ago

    This is incredibly fun. Nice job.

  • samstave · 3209 days ago

    blue tooth physical keyboard on ipad: caps lock kills controls. 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

    • fivesigma · 3209 days ago

      Safari on iOS is generally buggy. WebGL and WebAudio are very glitchy. I don't have a BT KB so I didn't test that case. Will do!

      • samstave · 3208 days ago

        I am using chrome on the ipad

  • ajp · 3209 days ago

    Kind of reminds me of SubSpace. I think, it has been a very long time since I've played it.

    • dannyrosen · 3209 days ago

      Thought the same exact thing. Whatever happened to SubSpace?

      • meritt · 3209 days ago

        http://store.steampowered.com/app/352700/Subspace_Continuum/ 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.

      • Tharkun · 3209 days ago

        It's still alive, to some extent. Priit Kasesalu (of Skyroads, Kazaa and Skype fame) wrote an alternative client back in 2001: Continuum. Some of the bigger servers (EG, TW) are still around. Many of the smaller ones like SFSS have long since perished.

    • mck- · 3209 days ago

      Yes! Loved that game. You could mount each other and create the almighty LevTerr. I wonder if it's still alive

      • spython · 3209 days ago

        Trench Wars zone is still alive and you can play the game. Though there are always the same <100 players around: http://www.subspace.tw/

    • vvanders · 3209 days ago

      Yup, pretty much same mechanics. The netcode in subspace was a bit better, probably due to needing to deal with 200ms+ pings that were common back in that era.

  • borplk · 3209 days ago

    What does it use for networking?

    • stuxnet79 · 3209 days ago

      Very curious about this as well. I was expecting this submission to be an endorsement for WebRTC.

      • meritt · 3209 days ago

        WebRTC really isn't suitable for multiplayer gaming due to it being entirely P2P. You need the server to operate as a single source of truth and enforce clients to play by the rules.

        • TheCowboy · 3209 days ago

          Is it entirely P2P? It seems like it has use cases for streaming audio and video, where low-latency is desired and dropped packets are acceptable.

          • meritt · 3209 days ago

            Yep. The server provides signaling (who the peers are, what data is being requested/should be snet, etc) but you're absolutely correct: WebRTC primarily envisioned for high-bandwidth peer-to-peer suitable content such as video/audio/file-sharing. People have tried using it for gaming (e.g. server is the master peer) but it's tenuous and folks should just stick to WS.

        • lxtx · 3209 days ago

          It is not entirely P2P, a server can act as a "peer" for all clients and handle the connections itself.

        • londons_explore · 3209 days ago

          Having both models 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.

          • alanning · 3208 days ago

            Know of any games that have implemented this method?

        • gregmac · 3209 days ago

          I'm not that familiar with WebRTC, but can the server not act as the only peer?

    • fivesigma · 3209 days ago

      Just plain ol' Websockets. But with a twist. I use 2 WS connections mirroring some packets on both, to deal with head-of-line blocking.

      • johnhenry · 3209 days ago

        Interesting. Could you talk more about this?

        • fivesigma · 3209 days ago

          Will do when this is over. Right now I'm trying to prevent servers from melting. HN traffic...

          • Meegul · 3209 days ago

            You've done a great job! It's stayed very responsive for the time I've played. I haven't even noticed any dropped packets, so your method for dealing with them seems to be working very well despite the high load.

            • fivesigma · 3209 days ago

              Nothing too fancy. Just proper devops and a lot of testing. https://i.imgur.com/oSwGgFA.png

              • swanify · 3209 days ago

                Where are you hosting it? That looks quite custom to gaming

                • fivesigma · 3209 days ago

                  It better be! It's my homegrown panel that I use for all my projects.

                  • mcescalante · 3208 days ago

                    I would love to hear more about this dashboard in your write up. Would love to create something like this myself :)

                  • meebs · 3208 days ago

                    Do you have a blog or write ups about this process / your workflow / etc.? I feel as a novice I could learn a lot.

              • comboy · 3209 days ago

                That is fancy. It is actually so beautiful I got emotional.

                • fivesigma · 3209 days ago

                  THE comboy of bitcoinity fame? I'm honored. I remember donating back in the day!

                  • comboy · 3209 days ago

                    Huh wow, thanks :) I need to make bitcoinity working as stable as airma.sh does. Congrats on the well earned success btw, clearly the game is here to stay. It would be sweet to be able to change fire from spacebar to something else. Spacebar tends to be big and loud.

              • ngrilly · 3209 days ago

                Is it an home made dashboard or do you use some standard tool?

          • pvsukale3 · 3209 days ago

            Great job with the Game. Would love to read an article about how you developed this game and handled initial traffic.

          • Kiro · 3209 days ago

            Really looking forward to a write-up!

          • z3t4 · 3209 days ago

            Would be nice to know what you use for hit detection and interpolation, it seems very smooth!

          • Fifer82 · 3209 days ago

            Also want to show appreciation for your work. I tried to create a game similar to this (I spent 6 months on it). Very basic Geometry. Circles. I got the concept working well locally, but I ran into problems on how to deal with the networking. I got things running in Node with SocketIO and so on but there could be 400 players, each made of upto 8 moving pieces, and each can fire several times a second. I spent a lot of time on a book, "Real time collision detection" and generally I have fond memories of the whole project and trying different partition and slicing up space. However, how to package and deal with this snapshot of world "over the network" or for example "how to smooth any lag relative to the client"... this middle region was largely undocumented or ill accessible to me. I will look forward to when/if you write any thoughts.

            • fivesigma · 3209 days ago

              I will definitely do a write-up but you're right. It's really hard to find info on any of that online. A lot of trial and error.

              • Fifer82 · 3205 days ago

                I am still playing :D

              • pmchung · 3205 days ago

                Do you have a blog? Been visiting this daily to see if there's a new update about the write up on networking trial errors. :)

          • alphaomegacode · 3209 days ago

            Fantastic game. Enjoyable, simple. Wish you all the best with it. Thank you for your outstanding work

        • DiThi · 3209 days ago

          (Not OP but I had the same idea) 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.

          • dested · 3209 days ago

            Do both websocket connections send the same data, or do you split your data logically between two channels (movement data vs state data)

            • DiThi · 3209 days ago

              I interleave information that becomes redundant (like the position of players, I can handle losing every other packet for a while, interpolating/predicting missing info) but send important data in all channels (like when a rocket is fired, it's just one event that must be seen). Again, I'm not OP but I did similar things and explained what probably happens with this game.

        • fivesigma · 3209 days ago

          What DiThi said (read his excellent post) 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.

  • Keyframe · 3209 days ago

    Addictive! Great job!

  • batrat · 3209 days ago

    So much productivity for today. :) Very nice game. Congrats.

  • Aaronmacaron · 3209 days ago

    I'm amazed by how well this works on mobile. I literally played this game for about half an hour on my phone in the HN app web view because it's just so much fun. I'm used to normal web pages that don't even really work on mobile and this game just worked seamlessly without any problems whatsoever. Great Job!

    • sillysaurus3 · 3209 days ago

      Meanwhile, I tried 3 different browsers and can't get past the "enter your name" screen on mobile. Apparently native inputs are too dated to use.

      • bufferoverflow · 3209 days ago

        Worked fine on my aging Nexus 5X.

        • andai · 3208 days ago

          Aging?! Worked fine on my S4!

          • styfle · 3208 days ago

            Works fine on the iPhone 6 running iOS 11

      • fivesigma · 3209 days ago

        Admittedly mobile was a bit of an afterthought and I only tested it on 4 devices. What device are you using?

        • sillysaurus3 · 3209 days ago

          iOS 8.1.2 model A1532. I don't upgrade because it will slow down my phone. Probably not worth supporting. :) Adding new features and figuring out ways to keep people playing might be much more worth your time.

          • jachee · 3209 days ago

            It says, right on the mobile mode interstitial, that it "requires the latest mobile/tablet hardware." And yet, you seem surprised when it doesn't work on older hardware?

          • flashman · 3209 days ago

            > Probably not worth supporting. I was going to disagree because the same countries that really like web games are often the ones using older handsets, but Apple themselves say only 8% of handsets are on iOS < v10: https://developer.apple.com/support/app-store/

            • sleepychu · 3208 days ago

              1 in 10 handsets isn't a market you want?

              • imtringued · 3208 days ago

                Even at it's peak apple only had 23% market share. 1 in 10 out of 23% is 2.3% and not everyone plays this game on a phone so the percentage is even lower in reality.

                • sleepychu · 3207 days ago

                  Not this game but in general. Good point about market share though, hadn't considered that.

      • make3 · 3208 days ago

        you're doing something wrong

  • iamd3vil · 3209 days ago

    Really fun game. Very smooth and addictive. Curious to know about tech stack

    • irascible · 3209 days ago

      I think pixi.js and websocket + node backend.

  • thejosh · 3209 days ago

    This is great, it's going to be the next big hit, calling it now. Awesome work :).

  • MulliMulli · 3209 days ago

    Awesome game, played for almost ah hour already!

  • orb_yt · 3209 days ago

    How long has this been released? Seems very polished. How long did it take you to build?

    • Aaronmacaron · 3209 days ago

      In the changelog ( https://airma.sh/changelog ) it says today (10th Dec 17) was the first release.

      • PhasmaFelis · 3209 days ago

        I'd implied the same from the general player skill level. It's nice to play against people who are just as bad as me for a change!

  • orliesaurus · 3209 days ago

    This is SO MUCH FUN! (and so smooth!)

  • hsson · 3209 days ago

    Very good on mobile, got in first place a couple of times. Should stop disclaiming about the mobile experience

  • elheffe80 · 3209 days ago

    Damn you. This is amazing.

  • briholt · 3209 days ago

    Awesome game. My only request would be make the planes less maneuverable and move more like real planes. This would make it less chaotic and allow more dog-fight and strategic play.

  • indescions_2017 · 3209 days ago

    Works great in Firefox 57. But Chrome 63 on Linux 17.10. With GPU accel. The bitmap sprites are just rendering as weird grey bounding rects :(

    • DennisP · 3209 days ago

      Chrome 63 on Mac is working fine.

    • fivesigma · 3209 days ago

      I have tested all browsers on Linux. Got a screenshot?

  • skraelingjar · 3209 days ago

    Great job! Would love to read a write up on how you made it.

  • pvsukale3 · 3209 days ago

    I opened this game in an incognito tab. And started dev tools. The entire game is only 2.8 MB. It loads fast. Such graphics, much small. A lesson for modern web developers about website obesity and performance.

    • subcosmos · 3209 days ago

      As an obesity geneticist, I fully approve of your invention of this term! LOL

      • pvsukale3 · 3209 days ago

        Haha. This term is quite old actually. http://idlewords.com/talks/website_obesity.htm

    • chickenfries · 3209 days ago

      I mean this is nice but it's really not a lesson for web developers. The fact that this is 2.8mb doesn't really teach a web developer any lessons, unless you think that large website payloads exist because developers are literally too lazy or don't know how asset optimization works. 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.

      • rev_bird · 3209 days ago

        >unless you think that large website payloads exist because developers are literally too lazy or don't know how asset optimization works. 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.

        • chickenfries · 3209 days ago

          I don't know what to tell you if you're convinced that's the problem. I know and work with many web developers who do care about performance. I follow the blogs of many web developers who write about performance. 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.

          • debaserab2 · 3209 days ago

            Caring about performance means weighing the decision carefully when choosing vendor libraries that fill up your payload. You can consciously care about performance but still be negligent to the things that affect it. I see competent devs reach for libraries all the time when a simple solution already exists within the language. It's easy to feel like you're doing the right thing by not reinventing the wheel. Areas I see this happening a lot in are anything dealing with file systems, HTTP request/responses, database connections, DOM/string manipulation/parsing/validation. The common theme among all these things is usually a lack of understanding of what the library/package does well enough to implement the specific use case needed.

          • BurningFrog · 3209 days ago

            Let me just point out that you can care deeply about performance and still lack the skills to achieve it.

            • chickenfries · 3209 days ago

              Yes, I agreed with you in my post. > I don't doubt that there are junior web developers who don't know much better. I just think it's very... puritanical the way that people bemoan the state of websites as a personal failing of web developers as a profession rather than the a result of what kind of deliverables their employers care about and are willing to pay for.

              • CaptSpify · 3208 days ago

                Whenever I see the term "web developers" in this context, I'm assuming it means all of the decisions they make given the requirements and inputs from others in the business. I think the web is currently terrible and I think modern web-development is to blame, but that includes the people behind the web-devs making the decisions that are being pushed onto the web-devs. There are a lot of things to blame for the current state of the web, but ultimately the current practice of web-development (and whatever behind-the-scenes processes that involves) is clearly the biggest reason why.

                • chickenfries · 3208 days ago

                  See in my mind that’s like blaming construction workers for condos built quickly with shoddy materials. I don’t choose the materials I work with most of the time. I have worked on maybe one greenfield application in my entire life. It was really small and performed well. Everything else has been making the best out of bad decisions made by other people.

                  • CaptSpify · 3208 days ago

                    I agree that it isn't fair, but that's also just how it goes. I get blamed all the time for poor decisions made by my group, even if I agree that they are poor decisions.

        • sebringj · 3209 days ago

          If you balance pay vs. skill and the rarity of such an incredible web game...things are quite the way they should be. Reality. No one is going to pay an average web developer to care that much because they themselves do not care enough to invest in the talent or the time involved.

          • chickenfries · 3209 days ago

            Even if you're a great developer, you might not be getting paid to care about performance. If "loads fast" is not a deliverable your employer cares about, they are not going to give you the time or budget to care about performance. Think of how many websites, especially for marketing purposes, are built by contractors who are getting tasked with making shiny, asset heavy websites that look good on the nice macbooks of businesses paying them. I've never seen a heard a client say "oh and make sure the page loads in under 2s" to be honest.

            • flamedoge · 3208 days ago

              facebook takes 25s to fully load

              • chickenfries · 3208 days ago

                Not on any of my devices. And time until “fully loaded” is just one piece of the performance pie.

            • ryandrake · 3208 days ago

              When you're talking about code written for hire, you have to separate the developer's priorities/cares from the company's. There are many, MANY companies that do not care about performance or quality, where good enough means "At least won't actively enrage customers." These companies sometimes hire individual developers who do care about performance and quality. But if you're Third Developer From The Left on Project 123, what you personally care about is irrelevant. This is one of the reasons I got out of actually writing software as a profession. My interests as a developer rarely aligned with my employers' business goals. I got tired of the whole "Cram features as fast as you can, quality be damned" mode of development and bailed.

              • TeMPOraL · 3208 days ago

                I'm increasingly feeling the same frustration with the industry. What do you do nowadays, if I may ask?

                • ryandrake · 3208 days ago

                  Still in software, but I've been bouncing back and forth between product management and project management. I feel these roles (esp. Product) better allow one to "set the tone" on the priorities, compared to the individual engineer role. I can focus on what is the business case for undertaking engineering activities, manage risk, and help management balance features vs. quality. Suits me better. If I want to code I do it at home on my personal projects 100% on my own terms.

              • chickenfries · 3208 days ago

                Yes, thank you. I suspect all of these people complaining about the size of web pages don't actually work as web developers. Especially because they think the only aspect of performance that matters is payload size.

        • kbutler · 3208 days ago

          Website payload is easily measurable (it is probably the most easily measurable factor), and optimizing it is attractive to developers. That doesn't mean it is the most important factor, much less the only important aspect of development. Rather than "lazy" or "don't know", how about: - it's fast enough - have other priorities (security, stability, usability, functionality) - optimize developer time ...

          • TeMPOraL · 3208 days ago

            > it's fast enough It's fast enough for people with as good computers and Internet connections as me, who are also employed at the same company as I am, and so do not use anything but the product on their computer at the same time. > optimize developer time Saving 1h for a developer for each 30min wasted over the lifetime of the application * number of users. Yeah, that scales right. Electricity is free too.

            • chickenfries · 3208 days ago

              So is there any situation where you would say that the gains from performance optimization are marginal? Also, you fail to consider the opportunity cost of developer time. It's not free. Your business needs you to do other things. Also, like GP said, there are factors to performance beyond payload size. Do you actually develop web applications for a job where someone else decides the priorities?

              • TeMPOraL · 3208 days ago

                > So is there any situation where you would say that the gains from performance optimization are marginal? Yes! But the current trends around software - and in particular web stuff, both in-browser and in-browser-but-pretending-to-be-native - very, very far from that point. Look, I know that business has its priorities. But I have a right to dislike a business based on its priorities, and I believe chasing ultra-short-term gains by resorting to shitty engineering is a bad thing, and I do avoid using products of such companies, and I do call it out when I see it. Ultimately, business priorities are determined by the market, and I'm doing what little I can to create market pressures towards user-respecting solutions. And yes, I've been doing webdev as a regular employee, and I always pushed against both needless inefficiency and user-hostile "features", with quite a good success.

                • chickenfries · 3208 days ago

                  We're on the same side. The difference is that I see most developers to essentially be like me: wanting and knowing how to do the right thing, arguing with their Bosses and PMs, but still failing to get performance to be as big a priority as they'd like. You seem to think that since you care and have been able to deliver the kind of performance you want, that other people must not be trying hard enough or know how to write well-performing apps. Maybe you can share some advice about how you get your boss or PM to care about performance. Because I've tried your arguments, and it's not like by explaining the amortized cost of performance I'll get an extra week or sprint to improve performance.

            • kbutler · 3208 days ago

              So you're writing all your web applications in hand-optimized assembly language? respect If improving performance is not a significant concern to your customers or benefit to you, further optimizing performance should probably not be a significant concern for you. Your time is the least scalable thing you've got - you're not getting any more of it.

              • TeMPOraL · 3208 days ago

                No, of course not. I just try to write code in a performant way the first time around[0] - it's usually more than enough. The problem here is lack of effective feedback on the market. You may be writing your application totally bloated, and due to the nature of software, you might not notice any significant impact on your business. It turns out that your application may be lagging just enough to make it unusable for the 1% of your userbase that has shitty connection... that's basically an accessibility problem. But then that "accessibility problem" actually impacts your customers too, just not in a way most of them can tie back to you. It's your app, plus that other app, plus that third app, and suddenly their stupidly powerful[1] computer becomes sluggish, and they can't get any work done. Performance is commons. Unless you're writing bare-metal embedded, your software is not running alone on the machine. By producing bloated code, you're implicitly taking away your users' productivity beyond what you could with little extra care. It's something that I try to keep in mind when writing software, too. (Also, RE developer time tradeoff - people seem to not appreciate how software scales. If you save 100 man hours of development time at the expense of 1h per user over their whole use of the application, with 1M user you just wasted the world 1Mh - 100h = 999.9k man hours. Something to keep in mind, too.) Related: http://idlewords.com/talks/website_obesity.htm . -- [0] - It's usually entirely possible to write code both fast and clean, if you don't overdo abstractions. As a bonus, the code is usually simple. [1] - Compared to what they had 5 years ago. User-facing software seems to be not gaining useful features, but rather constantly losing them. And yet it becomes only ever slower, for no actually good reason, just accumulation of bloat at every level of the stack.

      • manigandham · 3209 days ago

        This is true for the sites, however then it's the vendors who are then lazy and put out bloated packages, which is much worse since they have an outsized impact on all the sites they're included on.

        • chickenfries · 3209 days ago

          Yes. Not only that, it's the cumulative effect of having to include tags from so many vendors.

    • WhitneyLand · 3209 days ago

      Yes, also the immediacy of experience. No signup, no prompts or forms, no friction. Just one click and you’re immersed in the action. 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.

      • rictic · 3209 days ago

        And developers only thinking about the development experience. In my next project I'm going to monitor the gzipped size of my deployed site as part of continuous integration.

        • potench · 3209 days ago

          npm bundlesize might help you: https://github.com/siddharthkp/bundlesize

          • kevas · 3209 days ago

            This is what gets me... here's a dependency to reduce the size of your dependencies. I understand that it's useful, but at what point enough?

            • yoz-y · 3209 days ago

              It is a development dependency though. So it does not get included in the final bundle at all.

    • grondilu · 3209 days ago

      This is the kind of gaming experience I'm hoping webassembly will bring. No installation, just visit a website and play.

      • iainmerrick · 3209 days ago

        Why do you need webassembly for that, since this game already works great right now?

        • grondilu · 3208 days ago

          For more CPU demanding games, that is. Like AAA games.

        • TeMPOraL · 3208 days ago

          So that you can write in something saner than JavaScript, for starters.

          • iainmerrick · 3206 days ago

            You can already compile C/C++ (and I think Rust) to JavaScript via Emscripten.

            • steveklabnik · 3206 days ago

              Yes, you can use Emscripten with Rust.

      • thaumasiotes · 3209 days ago

        Isn't that the gaming experience Flash already brought?

        • jhasse · 3208 days ago

          You had to install Flash though.

          • fb03 · 3208 days ago

            It was really nice to see browsers simply incorporate slow but steadily all the APIs that made Flash worth its plugin install (canvas, opengl, webaudio, input devices, sockets). Instead of battling head on with it they simply made it pointless since you now have the same capabilities inside the engine.

          • thaumasiotes · 3208 days ago

            > You had to install Flash That's a choice by the browser, just like wasm.

    • 0xcde4c3db · 3209 days ago

      Am I horribly out of touch to think that 2.8 MB seems big for this level of complexity? I'm not saying every web game needs to be a js1k, but that's roughly the size of a well-above-average SNES or Genesis game (e.g. Super Metroid or Phantasy Star IV).

      • ivm · 3209 days ago

        Yes, but that's what the world without Flash games looks like. :)

    • posterboy · 3207 days ago

      > 2.8MB > 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

  • nwrk · 3209 days ago

    Arrrgh, clicked too! So much fun and beware - addictive!

  • erikig · 3209 days ago

    Works buttery smooth on Chrome 53 on Android over a cell connection (90ms latency). Can't wait to review on desktop to view the WebSocket traffic!

  • Improvotter · 3209 days ago

    And I quit... This is too addicting...

  • marxdeveloper · 3209 days ago

    I have now accidentally closed the game twice ctrl + w and bookmarked once ctrl + d but the game itself is so much fun :) +1 from me

    • Kairin · 3209 days ago

      Use mouse mode :)

      • marxdeveloper · 3209 days ago

        Actually arrow keys are good enough to avoid that trap

  • Decabytes · 3209 days ago

    Is it just me or is this becoming a more popular Internet game format. The reason I ask is because Slither.io uses this same idea.

    • DiThi · 3209 days ago

      This is the so called "io game" genre, started by agar.io.

    • djsumdog · 3209 days ago

      The new era of Flash-type games?

      • DiThi · 3209 days ago

        "io games": Massively multi-player, real time, no login, no rounds (continuous game), just type your name and play. There probably were a few flash games like this, but didn't caught on like it has now.

        • milofeynman · 3209 days ago

          How do they pay for server cost? Someone told me slither.io had made it's owner millions. I'm assuming there are ads?

          • ag_47 · 3208 days ago

            Yea they show ads in between game sessions.

        • samschooler · 3207 days ago

          Casual Collective with their robot battle games from 10 years ago. Though they did have more configuration, you could just add your name, pick a bot and play. 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.

          • DiThi · 3207 days ago

            What I said... It's not a new idea, but it didn't made a genre back then. It was a very different internet world, too.

    • PhasmaFelis · 3209 days ago

      Here's a list of several hundred(!) games in the IO format: http://iogames.space/

  • NKCSS · 3209 days ago

    Played on the pc for about 20 minutes; great fun but controls mess up sometimes (shooting). Tried on my iPhone6s but screen isn’t correctly; bottom 20px or so are missing in safari. Great fun though!

  • dbg31415 · 3209 days ago

    Well there went an hour and a half of my time. Very nicely done.

  • rdl · 3209 days ago

    This worked surprisingly well on iPad. Great game!

  • deforciant · 3209 days ago

    Amazing game! fun fact - works a lot smoother on mobile nexus 6P than MB Pro 2015 :)

  • mistakenot238 · 3209 days ago

    I'm not proud that most of my kills were AFK, but meh, I mostly sustain myself on low hanging fruit.

    • JorgeGT · 3209 days ago

      All's fair in love and war.

  • swanify · 3209 days ago

    You're traffic is about to go up, I just put it on ProductHunt also :)

  • puddlypanda123 · 3209 days ago

    This game is so awesome! Can you make a tutorial on how you designed it?

  • nkkollaw · 3209 days ago

    Wow. It's fun, and implemented beautifully. Great job!

  • threeeyed-raven · 3209 days ago

    This thing is addicting as crap. Hahah just spent the last few hours. 3.15 KD!

  • blumomo · 3209 days ago

    Now somebody say web apps are not the future.

  • denvercoder904 · 3209 days ago

    How does one turn into a helicopter or a large drone?

    • spydum · 3209 days ago

      i suspect you register and begin to level up?

      • Kinrany · 3209 days ago

        You don't have to register, they're all in the upper left corner.

    • jsnell · 3209 days ago

      For a couple of seconds until you spawn, you can click on the icon of the type of plane you want. The icons are on the left side of the screen.

  • JepZ · 3209 days ago

    CTF is actually fun too, it just needs more players :D

  • ryanmarsh · 3209 days ago

    OMG this game is so fun. Great job!

  • y0ss · 3209 days ago

    ADDICTIVE! Very nice game, well done!

  • smnscu · 3209 days ago

    Staying #1 is incredibly exhilarating. My strategy was upgrading defense and staying out of big clusters while still shooting towards them.

    • airfoil · 3209 days ago

      Yes, that strategy works well. I've also found that "hitting the brakes and they'll fly right by" works really well in a knife fight.

  • kbumsik · 3209 days ago

    BTW, it does not recognize 4 simultanous key inputs on Firefox 57. Other than that, it is really cool game! Great job!

    • fivesigma · 3209 days ago

      That is up to your keyboard hardware. Unfortunately, most consumer level keyboards can't handle that.

      • kbumsik · 3209 days ago

        Oh, I didn't know that. Thank you very much for the quick reply!

      • explainplease · 3208 days ago

        Please forgive the random reply, but it's the closest to a direct message I can get. :) 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.

  • spookyuser · 3209 days ago

    Really fun! I was super excited to see that it also supports controllers but for some reason there is at least a one second delay between button presses on my xbox controller and the game :(

    • fivesigma · 3209 days ago

      Are you using Chrome? Gamepad API is a bit buggy on 62.x

      • spookyuser · 3209 days ago

        Yeah I was. I'll try it on Firefox, thanks!

  • rsashwin · 3209 days ago

    what is the backend tech being used?

  • ateesdalejr · 3209 days ago

    Really slow in the seattle area. Not sure if this is because of servers being overloaded right now.

  • whage · 3209 days ago

    Such a simple and good looking game. Fantastic! Gives you a sense of just how big our oceans are.

  • ngrilly · 3209 days ago

    This is fucking amazing!!!

  • orless · 3209 days ago

    I don't know if this is HN effect or what but I just dont't get to the game. All I see after log in is some terrain and, a few moments later "Destroyed by " someone. No units movement, nothing.

    • fivesigma · 3209 days ago

      Everything is running smoothly so it's not the HN effect. Might I ask what OS/Browser/ISP are you using?

      • the_jeremy · 3209 days ago

        I also have this problem. Windows 10, Chrome (hardware accel disabled), Comcast.

        • drewmol · 3209 days ago

          Maybe the JS Comcast is injecting that says you need a new modem is having an adverse effect, or maybe you just need a new modem. /s

        • elsherbini · 3208 days ago

          I had to enable hardware acceleration to get more than 1 frame/second. It was smooth with hardware acceleration turned on. I'm running chrome on ubuntu on a dell xps 13

    • djsumdog · 3209 days ago

      Works fine for me on FF57/Linux. Tons of people on too .. lots of fun and addictive.