[HN Gopher] Show HN: I made a browser-based RTS game
       ___________________________________________________________________
        
       Show HN: I made a browser-based RTS game
        
       I've posted this game here before, hopefully a repost is fine as
       the game has changed quite a bit (improved AI, improved mapeditor,
       much quicker gameplay, etc).  Game is based on JavaScript/Canvas
       and WebSockets. On the browser side the map is pre-rendered (as a
       background image), just the mobile units/buildings and animations
       are dynamically rendered. The lobby server is made in node.js, but
       the game server is C++ for performance reasons (mainly the
       pathfinding). I found the C++ WebSocket libraries out there to be
       too difficult to use so I made my own based on the rfc. Overall I
       think making a game like this is quite easy with the browser
       performance/features nowadays. The game server and client side
       JavaScript are around 5000 lines of code each.  If you have any
       questions about the tech I'm happy to answer them.
        
       Author : Gluten
       Score  : 137 points
       Date   : 2022-05-07 16:45 UTC (6 hours ago)
        
 (HTM) web link (www.battle-of-flags.com)
 (TXT) w3m dump (www.battle-of-flags.com)
        
       | caretak3r wrote:
       | Yeah the AI is pretty tough, pretty much only spams workers and
       | warriors. Only issue for me is being able to accurately click on
       | my base and/or individual chars. But otherwise pretty fun!
        
         | all2 wrote:
         | Would love to see support for viewing the group of selected
         | units, group hot-keys, fog of war, a* path finding...
        
       | strongbond wrote:
       | Please make the tutorial more prominent.
        
       | DistrictFun7572 wrote:
       | That looks great.
       | 
       | * By JavaScript/Canvas I suppose you are talking about WebGL?
       | 
       | * Is the source code available for public viewing?
       | 
       | * Did you use any of the popular frameworks like ThreeJS?
       | 
       | * Do you use differently sized textures depending on whether the
       | user is on a mobile phone or desktop?
        
         | Gluten wrote:
         | - Not WebGL, there are just some "canvas" draw functions. -
         | Source is not public currently. - Just jQuery - Game is desktop
         | only, based on 32x32 sprites, there is an option to scale
         | though if you are on a high resolution display.
        
       | bytehowl wrote:
       | I would recommend allowing people to just pick a name and hop in.
       | One of the keys to the success of web games is that there's
       | (often) literally no barrier to entry, including the need to
       | create an account.
        
         | mLuby wrote:
         | Skip picking a name, just jump in. If they want a name, _that
         | 's_ when they register an account.
         | 
         | A recent web game on HN ("Pounce") did the first part well:
         | https://news.ycombinator.com/item?id=31073332
         | 
         | Also I suggest making it really easy to invite someone else to
         | play with you by sending them a link. That's more complex
         | though.
         | 
         | Also since you already have a spectator mode, it'd be cool if
         | people see an active game when they go to the home page, like
         | lichess.org. That might be even harder to do that invite links.
         | 
         | Nice that you can share the result of a game!
         | http://www.battle-of-flags.com/match/index/695
        
         | adventured wrote:
         | I second this. The likelihood that I'll try the game out is
         | drastically increased if I can enter a throw-away name and
         | quickly start playing.
         | 
         | You could automatically assign a throw-away generic name, and
         | then slap a 'try it right now' type button prominently on the
         | home page. If the game is good, then I'd be willing to create
         | an account.
        
           | all2 wrote:
           | You could also do a "link to Steam" option or something like
           | that in the user settings menu. So if someone is interested
           | in continuing to play, or even just persist a user name, they
           | have the option to link it to something more permanant.
        
         | Gluten wrote:
         | Thank you for the feedback! This sounds like something that I
         | will get implemented in due time.
        
         | z3t4 wrote:
         | My experience is that almost 100% do sign up. Signing up is not
         | a barrier. Funny statistic I had in a game was that while
         | almost 100% did sign up, only 50% of those entered the game.
         | After highlighting the "enter game" button, that 50% went up to
         | something like 85%. But the takeaway is that almost everyone do
         | signup almost automatically.
        
           | karmakaze wrote:
           | Do an A/B test, and see how many enter the game when
           | presented with a sign up form vs without.
        
         | Ruthalas wrote:
         | I second this.
         | 
         | I opened a tab to give it a try, but backed out when I had to
         | provide an email to see how it played. Assuming I enjoyed it,
         | I'd then be motivated to make an account to keep track of my
         | play.
        
       | hejpadig wrote:
       | Cool, the graphics are very reminiscent of Tibia, an old school
       | MMO that I loved as a kid.
        
         | mrstone wrote:
         | Exactly what I thought. I wonder if OP played
        
           | gberger wrote:
           | The OP did play Tibia, in fact they develop Zezenia, which is
           | essentially a Tibia clone.
           | 
           | https://news.ycombinator.com/item?id=8940655
        
       | mikenew wrote:
       | This is awesome, but I do have a nitpick. Using left click to
       | select as well as move feels _really_ unnatural to somebody
       | coming from other RTS games. I probably have over 5k hours in
       | StarCraft 2 and WC3, and that 's a lot of muscle memory to
       | contend with.
        
         | all2 wrote:
         | This. I don't have nearly that much time in SC/2, but I still
         | want to R-click to move.
        
           | beebeepka wrote:
           | This is how things have been for almost 30 years now. Are we
           | old or are we old. WarCraft 2 was quite something
        
         | 8note wrote:
         | Left click to select and move is how the Westwood RTSs worked.
         | 
         | Eg. Red alert 2
        
         | gavmor wrote:
         | > Using left click to select as well as move feels really
         | unnatural to somebody coming from other RTS games.
         | 
         | Is there a documented standard for RTS controls, at least for
         | baseline features?
        
           | mikenew wrote:
           | Not that I've ever come across, but Blizzard RTSs would have
           | to be the gold standard. Age of Empires being second. Looking
           | at those franchises would cover the majority of player
           | expectations, at least in terms of basic mechanics like
           | attack-moving, move-commands, unit selection, and so on.
        
         | mLuby wrote:
         | Agreed but maybe this is a concession for mobile users? Can't
         | confirm without registering an account.
        
       | crickcreek wrote:
       | I love rts but i just have an old-ass android phone! look for me,
       | 551154305985 TIM
        
       | dandigangi wrote:
       | This is pretty cool. I love a good RTS. Nice job.
        
       | mLuby wrote:
       | I'm curious if it's reasonable to push more processing to the
       | browsers to save on server costs.
       | 
       | I know multiplayer games generally need a server to "referee"
       | (and to matchmake) but I wonder if games ever offload most of
       | that work so the client does the heavy lifting (e.g. find a path
       | from A to B) and then submits its work for the server to validate
       | (e.g. this path from A to B works) and broadcast rather than the
       | server doing _all_ the game simulation work. My understanding is
       | that multiplayer game clients generally just do graphics /sound
       | and user interaction processing.
       | 
       | (yeah yeah distributed consensus don't say the B word)
        
       | kwhitefoot wrote:
       | Why can nicknames not contain spaces?
        
         | [deleted]
        
       | Sujeto wrote:
       | Had some fun with the ai. That flag has a lot of hp and was tough
       | 
       | https://i.imgur.com/5AcAD66.jpg
        
       | iWillOffshoreU wrote:
       | Nice, big fan of browser based multiplayer stuff. I think there's
       | so much potential now to make some crazy browser based games
       | given current state of web apps.
       | 
       | Edit: How long did it take you to create?
        
         | emteycz wrote:
         | I'd love to make a good browser game and I know how, but I am
         | absolutely useless wrt. game design stuff itself.
        
         | Gluten wrote:
         | I've been working on this since 2014, but the actual time spent
         | on development is maybe a few months.
        
           | ricardobayes wrote:
           | it's very nice, I enjoy the tutorial and love the fact there
           | is both PvE and PvP optionally. Very well thought out game so
           | far, hope it gets more depth later as in more things to
           | build, train etc.
        
         | bmacho wrote:
         | > I think there's so much potential now to make some crazy
         | browser based games given current state of web apps.
         | 
         | I believe that this could have be done ~20 years ago with about
         | the same effort.
         | 
         | Websocket is maybe minimally easier than AJAX + 20 years old
         | javascript, and the newer ECMA standards also have some nice
         | syntactic sugars, but nothing radical. Objects, classes,
         | closures, passing and modifying functions, javascript was so
         | powerful and easy to work with from the beginning. People just
         | didn't used it back then.
         | 
         | I remember playing e.g. travianer 15 years ago, different
         | genre, but the technology was given.
        
       | closedloop129 wrote:
       | Is it possible to play the game without having to register an
       | account?
        
         | bmacho wrote:
         | You can type in a random name/password/email if you want, and
         | start playing.
        
         | dt3ft wrote:
         | I was going to ask the same question. I'd love to try it, but
         | creating an account just to do so is a deal breaker.
        
       | visox wrote:
       | remind me of my old old abandoned side project where i tried to
       | create a diablo clone in browser with scala.js
       | 
       | does not work in most browsers, think in safari it works :D
       | 
       | http://diablo-forever.com/
        
         | crickcreek wrote:
         | Awesome dude
        
       | [deleted]
        
       | smegsicle wrote:
       | this obviously isn't as simple of a game as tagpro or agar.io,
       | but i think one factor for their success was being able to pop in
       | without making an account.. i guess they call that ".io" style
       | browser games?
        
       ___________________________________________________________________
       (page generated 2022-05-07 23:00 UTC)