top | item 5532360

I've got 10 btc for the best CoffeeScript/JavaScript Nodewar bot

171 points| malgorithms | 13 years ago |nodewar.com

94 comments

order
[+] shazow|13 years ago|reply
I am really excited about this. Here's some feedback from my first impressions:

1. Offline support: I'd love to work on this offline, write unit tests, use vim, all those nice things. You mentioned elsewhere that you're running the server-side simulation in Node—would be great if that was open sourced. :)

2. Better auto-saving: If offline support isn't available, editing online needs to be improved. I was messing around with my AI while on a shuttle with flaky WiFi. I saved my progress and navigated away. Later I came back, and turned out my progress was not saved. (a) Let me know if saving failed? (b) Maybe use LocalStorage as a fallback?

3. Better built-in library for common operations: o.lib.physics is a great start, but I'd love to not have to implement things like: "orbit around TARGET at distance X", "maintain distance X from TARGET", "orient towards (or away from) TARGET", etc. Sounds like these kinds of libraries could sprout organically from the community, but it's not obvious where to find them.

[+] Cakez0r|13 years ago|reply
To implement point #3 would go against the spirit of the competition, I think. Part of the challenge is to implement a good core of navigation code.

Unit testing a physics simulation could be quite tricky too.

[+] carb|13 years ago|reply
@3 I hope that they don't implement that. Good navigation code is half of the game.

If you want to see examples of competitions like this, many teams for Battlecode hosted by MIT have open sourced their code.

[+] matthuggins|13 years ago|reply
> In the unlikely case something very bad happens to bitcoins between now and then (or ours are stolen or become unavailable for reasons outside our control), we reserve the right to pay $2,000USD instead.

Does this go both ways? What if Bitcoins are worth $500 USD at come award time? Will you still be paying in BTC, or will you just pay $2,000 USD instead?

[+] malgorithms|13 years ago|reply
Nope, I will pay in bitcoins. I fully intend to pay in bitcoins (which I have set aside), regardless of the value, but reserve the right to pay in cash in case something happens to mine AND they become ridiculously expensive. I would pay $500/coin to buy them back in the case you describe. I would not pay $10,000/coin, however, if my 10 were stolen. Just protecting myself and my family from a crazy event.
[+] glomph|13 years ago|reply
Presumably they have the 10btc set aside. It would be a bit stingy to hold it back if btc goes up, but I guess they might.
[+] i_cannot_hack|13 years ago|reply
Great game! However, I would suggest changing the behaviour of the moons.

Right now the moons are such a big threat that the best way to win is to simply devote all resources to avoiding them, and hope the enemy collides with them before you do (as all the top bots in the ladder clearly demonstrate). This not a very fun strategy and makes for quite boring matches.

One way to avoid this problem is to make the moons harmless. They still pull you in and push you around, but when you collide with them nothing happens. Thus they would no longer be the biggest threat on the field, but rather a nonfatal annoyance. The biggest threat on the field would instead be your enemy, and to increase your chances of winning you have no choice but to actively try to kill him.

The moons will still have to be dealt with accordingly by the ships if they want to be effective, but a majority of the resources will now go towards battling enemy ships. Much more fun to code and to watch.

[+] lrem|13 years ago|reply
Not really true. A quick hack that does two things (evade moons and kill queen) provides already some interesting chaos. Look at my Ripoffs (only 1 match in ladder right now, but wins with the #6 pretty consistently). As people develop some better bots, evading moons will be less and less noticeable part of their behavior. Especially if some of those will be open sourced too.
[+] uvdiv|13 years ago|reply
I think the moons are okay. The very early algorithms we're seeing are primitive -- they try to avoid moons by thrusting directly away from them, which is a bad idea. When people introduce proper route planning, moons will look less overpowered.
[+] Cakez0r|13 years ago|reply
Or change the 3 moons to an expanding black hole that pulls you in. Perhaps that could be another level ;)
[+] andypants|13 years ago|reply
What's up with the sign up form? What the hell does @name mean?

A twitter username? Does it have to be twitter? Is it just a regular username? Then why does it have an @ sign? Do I need to enter an @ sign or are you going to prepend it after I submit the form?

Edit: okay, so it prepends the @ as you type. Now I'm even more confused about whether or not it's supposed to be my twitter username or not.

Edit 2: Signed up, seems to be just a username. The website refers to usernames in the same way as twitter? The top bar says '@<username>' and links to the account settings. On the home page it links two @usernames to twitter, not a website profile. On the ladder, it shows more @usernames but don't link to twitter and look like they will link to user profiles.

Please don't mix twitter usernames with your site's usernames, it's confusing, especially when some are internal links and some are twitter links.

Anyways, awesome site, reminds me of the google ai challenges. I hope you keep this open perpetually though, or keep running different challenges. Sucks that the google ai challenges only run once a year.

[+] d23|13 years ago|reply
Seriously? You guys will nitpick about anything.

I typed in a username in the field and pressed enter. It worked fine. Mystery solved.

[+] andypants|13 years ago|reply
I'm posting again as a reply, since it's kind of separate from my parent comment.

What kind of environment does the code execute in? What standard javascript functions/libraries do we have access to?

[+] joshblake|13 years ago|reply
Been playing with this for a few hours. Very interesting stuff!

I'll second what shazow said about auto-saving and resiliancy to internet/browser issues. The page has crashed multiple (7-10) times in Chrome. Fortunately I didn't lose too much, but even losing a couple obscure changes is rather annoying.

The UI for reloading your own species was rather confusing at first. I thought when I reloaded the page I would have my species there already and freaked out when it wasn't! Eventually I figured out I had to Add Team with my existing team.

I'd love to have a bit more robust vector libraries, such as doing vector dot product (vector projection) and vector rejection, in additional to just speedTowards.

It would be particularly helpful during testing & debugging to have a mode with no moons, or perhaps just a single static moon in the center. Continue having the three moons for ladder and competition, but it'd be super to have the more basic map to make it easier while training my geometries how to move and maneuver. Maybe limit the option to when only one team is loaded.

Thanks!

[+] shmageggy|13 years ago|reply
Is this supposed to happen? http://youtu.be/vndQFnesPT8

edit: specifically, the part at the end when the moons fly off the screen, the world shrinks to nothing, and the counter on the right expands wildly.

[+] asselinpaul|13 years ago|reply
yes, you haven't loaded any species so there are only moons.
[+] pokpokpok|13 years ago|reply
that's meant to end the game in case of stalemates
[+] Jach|13 years ago|reply
Cool. I've played with a few of these over the past several years but the problem was typically few participants and no incentive to win. This one shouldn't have either problem, plus it's not C++! (I hope they get ClojureScript working in the next few days, but JS is so much better for this sort of thing than C++...) How often do ladder matches get scheduled and played?
[+] malgorithms|13 years ago|reply
Thanks! If you want to use ClojureScript, maybe just work in an editor of your choice and paste into the site for now. I do that anyway when I play with it, as I prefer Sublime to Ace.

Right now it starts a game 1 minute after the previous one ends. I will likely speed that up as the number of submissions increases.

[+] jasonkester|13 years ago|reply
No undo in the editor makes things a bit painful. It just eats CTRL+Z, so If you accidentally delete a line, you pretty much have to exit (remembering not to save), remove your team, re-add it, and click edit again.

Other than that, I forsee thousands of dollars in otherwise billable hours evaporating before my eyes. Nice work!

[+] ZirconCode|13 years ago|reply
Looks amazing. It bothered me that I had to sign up to watch the replays though, it's a pretty big threshold and I almost didn't. You might want to have a demo because watching a replay really is quite convincing. I don't know any JavaScript, but this seems like an amazing way to learn.
[+] darkmethod|13 years ago|reply
I wish the ladder and replays were available publicly, I have a few friends that are interested but are put off from the signup form. I think if I could send them a link to a replay without signing in, they would get a kick out of it and potentially join in on the fun.
[+] jazzychad|13 years ago|reply
crud, I've been nerd-sniped... guess I know what I'll be doing at nights now.
[+] jnhnum1|13 years ago|reply
It looks like the API doesn't give access to the whole shape of a ship - only its centroid position and the direction of the sharpest vertex. Do the other vertices not matter? In any case, we should probably be able to compute which edge we would be splitting and stuff like that.
[+] malgorithms|13 years ago|reply
They matter in that they might ram you :-). You also have another ship's moment of inertia, which tells you something about it. But no, you're not provided other ships' geometries. I could change this, but likely not during the contest.
[+] aymeric|13 years ago|reply
I have ported a programming game http://terrariumjs.wiselabs.net a while ago (javascript).

You can write the AI of a herbivor or carnivor, and try to invade other people's terrariums :) The documentation is a bit lacking though.

[+] joaorj|13 years ago|reply
i would love to be able to use machine learning with this. for example, if you released the "universe simulator" in a binary/open source would be more than enough to start.

any thoughts on this from the creators of the project?

[+] zwegner|13 years ago|reply
Seconded! Being able to run tons of reliable automated testing is essential to get beyond the "alchemy" phase of AI development.
[+] Zren|13 years ago|reply
> vectors are 2-item arrays (for example, a velocity might be [2.3, -1.2])

Would be nice if they mentioned what each item was. Is it magnitude + direction or deltaX, deltaY?

[+] tthisk|13 years ago|reply
I like the idea, never participated in this kind of competition. However I had to write an AI for a same kind of game in college. It was a 2d football simulater and we had to write the AI in haskell. The tactics however had nothing to do with real life football (rushing was the best strategy). Does anybody here know if this is an evolution of an existing game, or did the creators invented this game by their self's?
[+] robinator|13 years ago|reply
Can I remove my node from the ladder? I am so ashamed.
[+] octatone2|13 years ago|reply
Haven't received a verification email, can't create species, can't edit profile to check my email was correct ... want to play ...