6 ms·
Show HN: JavaScript Battle – A daily artificial intelligence battle
- tokenizerrr 12y agoThat's interesting, I like that everyone's code has to be public on github so if you get relentlessly destroyed you will at least have the chance to learn from how your opponent works. I haven't yet tried the game itself, but the testing page mentioned on the frontpage seems rather important, and I think I'll hold off on trying the game until that is implemented. Also I think it would be good to mention at what time (in which timezone) each day the code is pulled and the battles are run.
- diggan 12y agoThat the code is public could easily be manipulated, by commiting minified code instead. It doesn't make it non-copyable but mostly unreadable. There is a small testing utility (called " test_your_hero_code.js") in the repository where you can make sure your hero is working as it should. But I'm also looking forward to a proper testing page where I can see the battle. Interesting idea however, looking forward to having some free time to trying it out fully.
- forrestbthomas 12y agoThanks so much for the feedback. As you said, we do have a temporary testing utility for users while we finish up our testing site. Hope to see you soon!
- forrestbthomas 12y agoThat's really good feedback, thank you. We are currently running the game at close to midnight, Pacific Time. As far as the testing site, that should be coming soon, but feel free to try out our temporary testing suite in the meantime. The hero-starter repo has all the instructions for that. Thanks so much for your comments and feedback!
- drhayes9 12y agoCoreWars but with JS and GitHub! Cool idea. I'd be very interested in hearing about the server-side setup, especially around isolating the code so some rando doesn't "require('fs')" and do damage to the server. How are you isolating the brains from the sensitive game data and from each other? How long does a single game take to run given max users? How are you protecting against "while(true);"? Here's a repo that looks related: https://github.com/JavascriptBattle/javascript-battle-webworkers https://github.com/JavascriptBattle/javascript-battle-webwor...
- forrestbthomas 12y agoThanks so much for the interest and the questions. You are correct in that the web-workers repo is related. Its the repo we use on the back end. To answer your questions in turn: "How are you isolating the brains from the sensitive game data and from each other?" - We are sandboxing each user's code in an isolated environment where a server listens for a POST request on a specified endpoint. That request carries the game data with it and after the user's code runs, the server sends back the result of that function, which is supposed to be a string (North, East, South, West, or Stay). The game data itself is update on our server, after receiving the response. "How long does a single game take to run given max users?" The games will take a maximum of 24 users, which will take a maximum of 30 minutes to run, if every user does something like "while(true)." Each server has a max-timeout setting of around 2 seconds. I hope that answers your questions and please feel free to offer any feedback. Thanks again!
- qznc 12y agoSo the AI can use up to 2 seconds of "thinking time" for each move on a some x86-server-like machine? Having played BitBath [0], I think this limit matters. No matter how many turns are played, a match ends after 30 minutes? According to the rules, no team wins in this case? [0] http://www.hacker.org/bitbath/ http://www.hacker.org/bitbath/
- forrestbthomas 12y agoThanks for the clarification. I wasn't very clear in my answer before. The game ends after a maximum of 1250 turns or when all of one team's heroes are killed. If the maximum turn is reached, the team with the most diamonds wins. If every player on the team took the full 2 seconds on every turn, the game would last around 30-40 minutes.
- goldfeld 12y agoThis is great! Would ClojureScript (or other languages compiling down) do?
- gjtrowbridge 12y agoThanks! ClojureScript (or Coffeescript, or anything other than JS) will not work "right off the bat", but you could compile to JavaScript on your end, then upload that compiled hero.js file to your github repository, and then THAT should work. Hope that helps.
- oakleon 12y agoThe "see todays battle" renders incorrectly on chrome Version 38.0.2125.101 beta
- mmanfrin 12y agoSame for Version 37.0.2062.124, Firefox version 31.0, and Firefox 32.0.3
- gjtrowbridge 12y agoThanks for the heads up--working on it now, should be back up in a couple minutes. I'll follow up when it is.
- gjtrowbridge 12y agoIt should be up again--let me know if you're still having trouble viewing it.
- Mangalor 12y agoSo Vindinium in JS. Not a bad idea.
- forrestbthomas 12y agoThanks! Inspired by it. There is a link at the bottom of the page to Vindinium, as well.
- gjtrowbridge 12y agoYep! The gameplay is very similar, but the tech stack, signup process, method for participating, stats, etc are all different from Vindinium. But they were definitely our inspiration (as Forrest mentioned, we actually have an "Inspired by Vindinium" link in our footer).
- erikb 12y agoWhat other games like this exist out there?
- forrestbthomas 12y agoThanks for the question. The comments below have a couple similar games, but we built JavaScript Battle because we felt it was unique. Let us know what you think!
- gjtrowbridge 12y agoVindinium, gameplay-wise, is definitely the most similar. (vindinium.org)
- Houshalter 12y agohttps://www.reddit.com/r/programminggames/ https://www.reddit.com/r/programminggames/ https://www.reddit.com/r/gameai/comments/v86kk/list_of_games_suitable_for_msc_ai_project_ai/ https://www.reddit.com/r/gameai/comments/v86kk/list_of_games...
- darylteo 12y agoCode & Conquer looks like vaporware at the moment, sadly :(
- stevekemp 12y agohttp://fightcodegame.com/ http://fightcodegame.com/ is one I played a while ago. Edit: I've got a bot ranked #237 still, a year on from its creation.
- jabbrass 12y agoAwesome work, I think that this is a great way to ease into writing basic AI in JS.
- gjtrowbridge 12y agoThanks!
- rasz_pl 12y ago>Each day your code will be assigned to a team at random so today (500 diamonds vs 7) server randomly assigned one guy that dominates vs 10 pretty bad players?
- Kiro 12y agoWhat's so strange about that? The majority are probably bad players.
- gjtrowbridge 12y agoYep, it is "luck of the draw", and the default hero brain, while very good at gathering diamonds, does tend to be vulnerable to the "assassin" roles. Eventually we'd like to add a slightly smarter matchmaking system (assign users to games based on some sort of performance ranking perhaps?), but for now it's very possible to end up on a less-than-stellar team.
- stephentmcm 12y agoIs there a place to comment on gameplay design? As looking at the current rules, if a 'Coward hero' just sits at a health well hitting it ever turn they can't be killed by a single enemy hero attacking? If I'm reading the rules correctly the attacking hero can hit 10 from 'moving' at the coward and 20 again at turn end for a total of 30, which the coward can heal by simply moving at the well? Either way cool game/site will give spin up a Hero soon.
- forrestbthomas 12y agoThanks for the feedback. Feel free to use the 'contact us' link at the bottom of the page with any specific suggestions that you might have for gameplay. In the meantime, we hope you enjoy it! *Note: The way to beat the Coward is by collecting diamonds. The Coward won't collect any, so won't be contributing to the team's score.
- mooogs 12y agoUI seems to be broken http://s15.postimg.org/p26vhk2p7/Screen_Shot_2014_10_07_at_9_06_22_PM.png http://s15.postimg.org/p26vhk2p7/Screen_Shot_2014_10_07_at_9...
- forrestbthomas 12y agoThanks for the note and the screenshot. Should be fixed now.
- mooogs 12y agoYup fixed!
- alxeder 12y agono it is not: http://s27.postimg.org/b06o5rls3/Unbenannt.png http://s27.postimg.org/b06o5rls3/Unbenannt.png
- gjtrowbridge 12y agoThanks for the heads up--it looks like we have an infrequent but recurring bug that's causing this issue. We're working on a more permanent fix for the very near future, but for now it should all be working again.
- mweibel 12y agoPretty awesome and good instructions on how to start! What would be nice to see when the next battle will start (probably localized) :-)
- gjtrowbridge 12y agoAt the moment, the battles run a bit after midnight (PST) each day. Thanks for the feedback--we can make this a bit more obvious on the site.
- FigmentEngine 12y agoany chance the console output of the battle can be sent to the account? this would make fixing bugs easier... or if "see todays battle" allows you to click on each hero and see there stats & console output. really great by the way!
- TomAnthony 12y agoCool idea! I registered yesterday but today I can't login. The 'login with github' button doesn't do anything (just reloads the page). Also the leaderboard seems to breakdown if you interact with it for a bit - just stops updating.
- gjtrowbridge 12y agoStrange. It seems to all be working at the moment, but we'll try to squash more of the bugs today--please feel free to email contact@javascriptbattle.com if you're continuing to see problems. Thanks for bearing with us!
- TomAnthony 12y agoSo - what happens is I get bounced through a few 302 redirects from github back to the page, but I remain not logged in. Then if I refresh the page it displays me as logged in then. Hope that helps. :)
- forrestbthomas 12y agoInteresting...We'll take a look at that. Sounds like something with our OAuth redirect. Thanks so much for the update!