[{"data":1,"prerenderedAt":439},["ShallowReactive",2],{"project-31296227":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":44,"post_text":46,"what":47,"said":87,"maker_in_thread":222,"shape":232,"grid":235,"attempts":393,"same_week":403,"maker_shows":34,"maker_hidden":432,"reader_version":433,"card":434},"31296227","Battle of Flags","A browser-based RTS game","title","Show HN: I made a browser-based RTS game","https:\u002F\u002Fwww.battle-of-flags.com","battle-of-flags.com","Gluten",1651941954,2022,212,61,262,2570,11,"notable","games","browser rts game","web_app",[24,25,26,27],"browser rts","real-time strategy","websocket game","canvas game","curious",0.19,{"positive":31,"neutral":32,"mixed":33,"critical":34},8,25,1,3,37,{"execution":37,"design":39,"idea":41,"performance":42,"docs":43},{"positive":38,"critical":38},0,{"positive":40,"critical":34},2,{"positive":33,"critical":38},{"positive":38,"critical":38},{"positive":33,"critical":38},[34,34,34,38,34,33,45,34,45,45,38,38,38,38,34,34,38,38,34,34,34,38,38,33,34,34,45,38,34,38,34,38,38,38,34,45,34,45,34,45],5,"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).\n\nGame is based on JavaScript\u002FCanvas and WebSockets. On the browser side the map is pre-rendered (as a background image), just the mobile units\u002Fbuildings 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 ",{"problem":48,"audience":48,"pricing":48,"motivation":48,"time_to_build":49,"stack":56,"openness":84,"stage":85,"team_size":86},null,{"value":50,"source":51,"evidence":52},"Maker has worked on it since 2014, with a few months of actual development time","maker",[53],{"id":54,"by":11,"text":55},"31296831","I've been working on this since 2014, but the actual time spent on development is maybe a few months.",[57,62,66,70,74,78],{"value":58,"source":51,"evidence":59},"JavaScript",[60],{"id":61},"post",{"value":63,"source":51,"evidence":64},"Canvas",[65],{"id":61},{"value":67,"source":51,"evidence":68},"WebSockets",[69],{"id":61},{"value":71,"source":51,"evidence":72},"Node.js lobby server",[73],{"id":61},{"value":75,"source":51,"evidence":76},"C++ game server",[77],{"id":61},{"value":79,"source":51,"evidence":80},"jQuery",[81],{"id":82,"by":11,"text":83},"31296838","- 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…","unknown","launched","solo",{"praise":88,"objections":112,"requests":146,"questions":179,"alternatives":201},[89,101],{"value":90,"source":91,"evidence":92},"Fun and well-thought-out game with PvE and PvP","commenter",[93,97],{"id":94,"by":95,"text":96},"31297261","ricardobayes","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…",{"id":98,"by":99,"text":100},"31296880","dandigangi","This is pretty cool. I love a good RTS. Nice job.",{"value":102,"source":91,"evidence":103},"Browser-based games are impressive and easy to play",[104,108],{"id":105,"by":106,"text":107},"31296720","iWillOffshoreU","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…",{"id":109,"by":110,"text":111},"31297020","smegsicle","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…",[113,128,139],{"value":114,"source":91,"evidence":115},"Requires account registration to play",[116,120,124],{"id":117,"by":118,"text":119},"31298002","closedloop129","Is it possible to play the game without having to register an account?",{"id":121,"by":122,"text":123},"31298197","dt3ft","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.",{"id":125,"by":126,"text":127},"31297278","Ruthalas","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…",{"value":129,"source":91,"evidence":130},"Left click to select and move feels unnatural for RTS players",[131,135],{"id":132,"by":133,"text":134},"31297105","mikenew","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…",{"id":136,"by":137,"text":138},"31297551","all2","This. I don't have nearly that much time in SC\u002F2, but I still want to R-click to move.",{"value":140,"source":91,"evidence":141},"Clicking base and individual units is hard to do accurately",[142],{"id":143,"by":144,"text":145},"31297026","caretak3r","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\u002For individual chars. But otherwise…",[147,162,168,175],{"value":148,"source":91,"evidence":149},"Allow play without account or with a throwaway name",[150,154,158],{"id":151,"by":152,"text":153},"31297067","bytehowl","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…",{"id":155,"by":156,"text":157},"31297102","adventured","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…",{"id":159,"by":160,"text":161},"31298576","mLuby","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:…",{"value":163,"source":91,"evidence":164},"Add fog of war, group hotkeys, and A* pathfinding",[165],{"id":166,"by":137,"text":167},"31297839","Would love to see support for viewing the group of selected units, group hot-keys, fog of war, a* path finding...",{"value":169,"source":91,"evidence":170},"More prominent tutorial",[171],{"id":172,"by":173,"text":174},"31297545","strongbond","Please make the tutorial more prominent.",{"value":176,"source":91,"evidence":177},"Right-click to move",[178],{"id":136,"by":137,"text":138},[180,187,194],{"value":181,"source":91,"evidence":182},"How the server handles tick rate and state updates",[183],{"id":184,"by":185,"text":186},"31299717","smegma2","Hi Gluten, I never wrote a real-time game, so I'm curious about a lot of things. * Does the server have a tick rate and it updates clients at a set interval, or does it only…",{"value":188,"source":91,"evidence":189},"Whether the source code is public",[190],{"id":191,"by":192,"text":193},"31296799","DistrictFun7572","That looks great. * By JavaScript\u002FCanvas I suppose you are talking about WebGL? * Is the source code available for public viewing? * Did you use any of the popular frameworks…",{"value":195,"source":91,"evidence":196},"Why the C++ server was used over Node.js",[197],{"id":198,"by":199,"text":200},"31301382","ttty","Related to multiplayer rts games this is also done with same tech but node.js only to reuse code between client and server side https:\u002F\u002Fbitplanets.com\u002F I wonder what performance…",[202,208,215],{"value":203,"source":91,"evidence":204},"Age of Empires \u002F Blizzard RTS controls",[205],{"id":206,"by":133,"text":207},"31297632","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…",{"value":209,"source":91,"evidence":210},"Tibia",[211],{"id":212,"by":213,"text":214},"31296827","hejpadig","Cool, the graphics are very reminiscent of Tibia, an old school MMO that I loved as a kid.",{"value":216,"source":91,"evidence":217},"Starcraft 2",[218],{"id":219,"by":220,"text":221},"31301497","Matheus28","There are games that run exclusively on the clients by being deterministic. Like Starcraft 2. Server is just proxying packets back and forth, but doesn't actually know what's…",{"comments":223,"answered":34,"key":224},4,[225,228,229],{"id":226,"text":227},"31302989","The server runs at ~100 FPS, but things like worker updates and attacks happen at a 1.5 second interval. Only the changes (like walking a step, collecting a resource) are sent to…",{"id":54,"text":55},{"id":230,"text":231},"31297147","Thank you for the feedback! This sounds like something that I will get implemented in due time.",{"commenters":233,"max_depth":45,"maker_replies":223,"first_comment_mins":32,"lifespan_hours":234},46,70,[236,238,242,244,247,250,251,253,255,258,260,264,267,269,270,271,275,278,281,284,288,291,294,297,300,303,305,307,311,312,313,314,316,318,322,325,326,327,330,331,336,339,343,345,347,348,353,354,357,358,360,363,366,368,372,375,377,379,382,386,390],[184,38,34,237,185,38],"maker\u002Fneutral\u002Fexecution",[239,38,34,240,241,38],"31299768","project\u002Fneutral\u002Fexecution","mizzao",[243,38,34,240,185,38],"31299843",[245,38,34,240,246,38],"31302150","rnd420_69",[248,38,38,249,241,38],"31328098","commenter\u002Fneutral\u002Fnone",[226,38,38,237,11,33],[117,33,34,252,118,38],"project\u002Fneutral\u002Fdesign",[121,33,33,254,122,38],"project\u002Fcritical\u002Fdesign",[256,33,34,252,257,38],"31298674","bmacho",[212,40,45,259,213,38],"project\u002Fpositive\u002Fdesign",[261,40,34,262,263,38],"31297405","maker\u002Fneutral\u002Fnone","mrstone",[265,40,34,262,266,38],"31299033","gberger",[105,34,45,268,106,38],"project\u002Fpositive\u002Fidea",[54,34,38,262,11,33],[94,34,45,259,95,38],[272,34,38,273,274,38],"31297053","other\u002Fneutral\u002Fnone","emteycz",[276,34,38,277,257,38],"31298938","other\u002Fneutral\u002Fidea",[279,34,38,249,280,38],"31300343","Sebb767",[282,34,38,249,283,38],"31300466","boredtofears",[285,34,38,286,287,38],"31302696","commenter\u002Fneutral\u002Fexecution","jlokier",[289,34,38,286,290,38],"31301270","vvanders",[292,223,34,293,160,38],"31298673","project\u002Fneutral\u002Fidea",[295,223,34,293,296,38],"31299624","junon",[298,223,34,293,299,38],"31299816","lolinder",[301,223,38,273,302,38],"31300261","mdaniel",[304,223,38,273,160,38],"31300304",[306,223,38,249,160,38],"31300336",[308,223,34,309,310,38],"31300451","project\u002Fneutral\u002Fperformance","oneoff786",[219,223,34,240,220,38],[151,45,34,252,152,38],[155,45,34,252,156,38],[315,45,34,252,137,38],"31297226",[230,45,38,317,11,33],"maker\u002Fpositive\u002Fnone",[319,45,38,320,321,38],"31297216","commenter\u002Fneutral\u002Fdesign","z3t4",[323,45,38,249,324,38],"31297676","karmakaze",[125,45,33,254,126,38],[159,45,34,252,160,38],[143,328,34,329,144,38],6,"project\u002Fmixed\u002Fdesign",[166,328,34,293,137,38],[332,333,45,334,335,38],"31300470",7,"project\u002Fpositive\u002Fdocs","holografix",[337,31,38,273,338,38],"31296483","visox",[340,31,38,341,342,38],"31299432","commenter\u002Fpositive\u002Fnone","crickcreek",[344,31,38,249,338,38],"31308855",[191,346,34,262,192,38],9,[82,346,38,262,11,33],[349,350,45,351,352,38],"31296965",10,"project\u002Fpositive\u002Fnone","Sujeto",[132,18,33,254,133,38],[355,18,38,273,356,38],"31297517","gavmor",[206,18,38,249,133,38],[136,18,38,359,137,38],"commenter\u002Fcritical\u002Fdesign",[361,18,38,249,362,38],"31298744","beebeepka",[364,18,34,252,365,38],"31298214","8note",[367,18,34,252,160,38],"31298559",[369,370,45,317,371,38],"31307207",12,"hombre_fatal",[373,374,38,273,342,38],"31299412",13,[109,376,34,252,110,38],14,[98,378,45,351,99,38],15,[172,380,34,381,173,38],16,"project\u002Fneutral\u002Fdocs",[383,384,34,252,385,38],"31297212",17,"kwhitefoot",[387,388,45,351,389,38],"31301939",18,"aliswe",[198,391,34,392,199,38],19,"maker\u002Fneutral\u002Fdesign",[394,399,402],{"id":395,"t":396,"points":397,"comments":398},"8939285",1422094437,31,23,{"id":400,"t":401,"points":370,"comments":34},"28738626",1633280376,{"id":4,"t":12,"points":14,"comments":15},[404,409,413,418,423,428],{"id":405,"name":406,"points":407,"category":408},"31335904","Himalayas",457,"web_saas",{"id":410,"name":411,"points":412,"category":20},"31275476","Dead Trees",389,{"id":414,"name":415,"points":416,"category":417},"31333436","Oldest Search",295,"productivity",{"id":419,"name":420,"points":421,"category":422},"31297917","Weron",204,"infrastructure",{"id":424,"name":425,"points":426,"category":427},"31294306","Ankify",180,"learning_science",{"id":429,"name":430,"points":431,"category":427},"31304897","CaskDB",175,false,"v2",{"id":435,"name":5,"line":6,"ai":432,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":29,"top":18,"kw":436,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":437,"url":9,"mix":438,"praise":90,"objection":114,"sub":21},31296227,[24,25,26,27],"3330315355000033003330013350303000353535",[31,32,33,34],1793991045343]