
I've got 10 btc for the best CoffeeScript/JavaScript Nodewar bot - malgorithms
http://nodewar.com
======
shazow
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
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.

~~~
coherentpony
Unit testing a deterministic one is not too bad. Unit testing a stochastic
physical system is a nightmare.

------
matthuggins
> 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
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.

~~~
seanalltogether
Might I suggest transferring the 10 btc to a custom wallet with a single
address in it, encrypting the wallet and simply putting it online for everyone
to see/download. The winner gets the password to the wallet.

------
i_cannot_hack
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
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.

------
lnmx
The Nature of Code [1] has some nice examples on how to calculate
steering/acceleration behavior for targeting.

<http://natureofcode.com/book/chapter-6-autonomous-agents/>

------
andypants
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
Seriously? You guys will nitpick about anything.

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

~~~
andypants
Yeah, I signed up too, I never said the sign up form was difficult. Doesn't
solve the mystery of whether this has anything to do with your twitter
account, since there's no reason why that @ sign should be there.

My edits make the comment a bit dramatic, but that wasn't my intention.

------
joshblake
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
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
yes, you haven't loaded any species so there are only moons.

------
Anderkent
I created a typescript declaration file for the environment of nodewar, if
someone wants to try writing it in TS.
<https://github.com/JacekLach/NodeWarTyped>

------
Jach
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
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
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
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
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
crud, I've been nerd-sniped... guess I know what I'll be doing at nights now.

------
jnhnum1
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
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
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
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
Seconded! Being able to run tons of reliable automated testing is essential to
get beyond the "alchemy" phase of AI development.

~~~
roller
It'd also be nice to be able to use the same gravity engine to project orbits
and collisions within the AI code.

------
james4k
Is there no way to get the direction vector of the ship? You have rotation in
radians, but no way to convert that.. not even cos/sin to roll it yourself. Am
I missing something?

~~~
teraflop
It's just Javascript, so you should have all the usual array of built-in
functions.

[https://developer.mozilla.org/en-
US/docs/JavaScript/Referenc...](https://developer.mozilla.org/en-
US/docs/JavaScript/Reference/Global_Objects/Math)

~~~
james4k
Hmm, I thought I tried using a Math function without success, but I must have
done something wrong. Thanks for steering me off the wrong path.

------
Zren
> 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
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
Can I remove my node from the ladder? I am so ashamed.

------
octatone2
Haven't received a verification email, can't create species, can't edit
profile to check my email was correct ... want to play ...

------
lrem
It seems that the ladder updates are slow. Is it intentional that each bot
gets one match per hour? Is it processing power determined? If the latter, can
we somehow contribute cycles to it?

I've got a piece of iron sitting mostly idly, so I could spare a VPS. I guess
many people here could pledge something similar for a fun project like this.

------
mikeycgto
Put this together (quickly) so I can dev locally and upload new code with a
single command: <https://github.com/mikeycgto/nodewar-tools>

My "species" code then uses grunt for all sorts of awesomeness (basic tests,
concatenation of files and autoupload on save).

------
pepijndevos
Can I just see some matches without signing up? Juts a video if you must.

------
shocks
Awesome. I would love to participate, but I think my exams will get in the
way. :(

Downloading a replay is taking a very long time. Also, is there an easy way to
plot things like projection vectors?

~~~
dustcoin
I am unable to load even the shortest replays.

Edit: This appears to be a chrome specific issue.

~~~
shocks
Same here.

Firefox Nightly v23.0a1

------
FiloSottile
A thing I would love is deploy via git push.

Simply activate a post-push hook that runs a specifically named js/coffee
file!

This would both accomodate for offline editing and any compile-to-js language.

------
lowboy
Sweet.

Now, is there any way to code in ones editor of choice and deploy from the
command line? Chrome tab crashed on me while I was editing my species and I
lost all of my changes.

------
GotAnyMegadeth
This looks ace. I haven't looked into it much, but is not knowing either of
the languages going to be an issue? Or should I be able to pick up what I need
easily?

~~~
malgorithms
I would say the programming skills requirement for the game is just beginner
level. At least that was my hope making it. If those languages are new to you
it will take a little overhead but not much.

------
reledi
Do any beginners want to team up? Going to give this a try to learn more JS
and learn how to build an autonomous agent, I don't have any intention on
winning.

~~~
zhodge
I want to! See my comment regarding infrec's offer to help.

~~~
reledi
Hey, I couldn't find any contact info in your HN profile. Have you and infrec
started already? If not, I'll go ahead and create a repo on GitHub.

~~~
zhodge
Sorry about that, I should have given you some point of contact here.

I've sent you an email (found on your GH).

------
kandalf
It would be great for debugging purposes if all ships could return an array of
color coded vectors (or even just a single vector) to display every step.

------
ecto
This looks pretty awesome! I'm going to try my hand at a species today. FYI,
the confirmation email went to my junk mail box on Gmail.

------
noddingham
IBM offered games like this through their academic initiative when I was in
school.

Cool idea moving it into modern JS environment.

------
TallboyOne
The amount of effort I put into this is directly proportional to how much Mt.
Gox is being hacked or DDOS'd. Lol.

~~~
matthuggins
Mt. Gox was not being hacked or DDOS'd, it had a legit influx of users opening
accounts.

~~~
wamatt
Um, there was definitely DDOS'ing going on. I witnessed it myself with a bunch
of other sites (bitcointalk, bitstamp, bitcoincharts etc). Mt Gox was trying
to do damage control and spin it positively. That failed and now they are
reporting DDOS again.[1][2]

 _"@MtGox Maintenance Over however we are now under a DDoS attack."_ [1]

Mt Gox has taken a credibility knock, which has a ripple effect on the BTC
pricing right now.

Overall it probably a temporary setback, but does bring to light irrational
exuberance voices ignoring others that were calling for a more decentralized
ingress/egress between USD and BTC. IOW bitcoin needs more exchanges to drive
competition, and perhaps even meta-exchanges too.

[1] <https://twitter.com/MtGox/status/322281690309468160>

[2] <https://www.facebook.com/MtGox/posts/456123227805423>

~~~
polshaw
What evidence do you have that each of these sites weren't going down just
because of real high traffic?

I don't think it's at all unreasonable to think that each of those sites would
have naturally seen their greatest traffic surge with the events of yesterday.
For example, over 20% of all subscribers were present on /r/bitcoin (for
comparison, (eg) /r/android is currently at about 0.5%, /r/bitcoin is around
10% now).

~~~
lowboy
There have been large sequences of micro-transactions of 0.01 BTC, all on the
heels of one another. That points to market manipulation/DDOS.

I'll see if I can dig up sources.

------
Cakez0r
This is awesome fun! Just spent my whole evening toying around with it. GOGOGO
Prima Polys and Totally Turtle!

------
hleszek
Is it possible to send positions/result to an outside server to use some kind
of genetic algorithm ?

~~~
malgorithms
You are free to analyze existing recordings, if you like. So you could make
entries and study their recordings. I don't intend to document them during the
contest, though. As for sending info out during the battle, probably not.
Although - you are free to do that with the sandbox, of course. It all runs in
your browser.

------
ozten
Great way to short sell BTC!

------
jedanbik
This has potential to be really fun! But how to select others to compete?

~~~
psionski
When you click "Add team" you can add other species, but I think only the
open-source ones and you get no ladder points (but it's very useful to test
your design). To compete against everyone you'd have to "submit to ladder", I
think.

~~~
jedanbik
Oh, I just meant to compete against specific species.

Seeing that they use a Glicko rating system makes more sense; not having the
option to compete against a specific species means that top ranked players
won’t have to worry about tradeoffs between game activity and game rankings.
Well maybe they’ll still worry, but they won’t be able to do anything about it
except build stronger AI.

------
deathbob
"Create a species" doesn't seem to work, even with all fields filled out.

~~~
ambiate
Did you verify your email address?

------
triplesec
for luddites, 10 Btc = $300-2000 depending on the exchange rates of the past
two months, or even possibly $5000 by the time you win. Possibly a quite
uncertain prize!

~~~
psionski
The certain prize for me is having fun and learning CoffeeScript and physics.
That's really more than I'd expect from any game :) The 10 BTC would be nice,
but meh.

------
davman
I want to play, my JS is good, my geometry/math is not :(

~~~
infrec
I'd be willing to give it a shot if you would like to partner up. I have
reasonable (for some value) math chops. Email me at infrec.obs@gmail.com if
you are interested.

Time-wise I can commit only a couple of hours a week so I don't expect much
but it seems like it could be fun.

~~~
zhodge
Any chance I could join in? ;)

I know a bit of JavaScript, but my math intuition is somewhat poor as well, so
it'd be more so I can learn than anything else.

~~~
infrec
Sure, feel free to send me an email! It's all about learning and having fun.

------
Cakez0r
Would be handy to expose the AI step delta in the API.

~~~
malgorithms
This is uncertain. The game steps at a specific rate (the physics is
deterministic) but does not wait for callbacks from your AI to proceed with
the game. If a specific ship hasn't replied to the last request for
instructions, the game won't call it the next round. I was thinking that
rather than providing the game step in the API, the simplest thing is for an
AI to study the gametime and draw its own conclusions.

~~~
Cakez0r
After playing around with it for a while, it hasn't actually made that much
difference to me. I perhaps shouldn't have made the suggestion so hastily ;)

Really great fun to play. I love it.

------
Siecje
Where can I find what 'speed_to_nearest_moon' does?

~~~
malgorithms
That's a function in one of the sample codes I wrote, so it should be in the
same file you encountered it. It likely uses some of the lib functions defined
on the documentation page.

------
jeremyfp
how do i compete against others in the ladder?

i have a team that seems to beat anyone i test against, but i can't figure out
how to rank up.

~~~
darkmethod
There is a "Submit to Ladder" link under the title of your species. From what
I can tell, after clicking that link, the ladder takes over and sets up
matches automatically.

------
darkmethod
I'm having way too much fun with this.

~~~
darkmethod
I kinda wish there was a dedicated forum/community of some sort for this.

------
rurabe
not worth quite as much as 14 hours ago hah

