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.
> 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?
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.
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.
Fair enough, just thought I'd ask. :) I can't even view the site properly because of my work proxy, but I'm interested in taking a look later and perhaps participating.
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.
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.
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.
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.
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.
The browser version runs in a WebWorker (each team gets one). I didn't even know what WebWorkers were before I programmed this. The server side runs in a NodeJS process (each team gets its own), and your code runs in a fresh VM context. These both provide commonly expected JS such as Math and Date, but not other stuff such as console (which I provide in the webworker case and send messages back to the browser).
Any plans to release the nodejs code? Coding in the browser is ok, but it'd be much nicer to be able to code in my usual editor and test locally using the nodejs version.
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.
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?
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.
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!
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.
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.
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.
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.
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?
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?
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?
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.
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.
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?
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.
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.
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.
What's even more remarkable, is these posters on here and other forums, (and even the media outlets), are saying that - an influx of buyers, and a de-flux of markets, is causing Bitcoins to drop from $250 down to $60! Lol. That's pretty much the opposite of what logic and reason say should happen.
MtGox has to be where market manipulators live - and they run the coin prices up every day. Now that it's not trading at the moment over there, the real demand is meeting the real supply.
If they stay shut down for a while longer, it will give all the horders and speculators a chance to rightfully panic and sell. $60 is not the bottom.
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.
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).
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.
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.
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.
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!
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.
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.
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.
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 ;)
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.
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.
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.