6 ms·
Show HN: Bot Land, a game where you fight others via code
- Adam13531 7y agoHey all, I've been working full-time on a game called Bot Land for the last four years, and it just launched: https://bot.land/ https://bot.land/ In the game, you can make bots with a Scratch-like interface called Blockly or use a subset of JavaScript. Either way, bots are fully automated. Here are some screenshots of the game: https://imgur.com/a/Rs2OWFg https://imgur.com/a/Rs2OWFg Almost all of the development process (~5000 hours) was streamed live on Twitch: https://www.youtube.com/watch?v=RS5Va996Exg&list=PLSM9PbIe-9hVfX0_wCD64AH7_DVNJDuCb https://www.youtube.com/watch?v=RS5Va996Exg&list=PLSM9PbIe-9... It's free to play, so please try it and tell me what you think!
- sciencewolf 7y agoThe visuals look great, will play it in a bit. And wow 5000 hours-- incredible!
- keithnoizu 7y agoNice. I had a idea a few years ago, but never got around to working on it. Let me know if you ever want to buy the aifighter.com domain off of me.
- knubie 7y agoI’ve been wanting to play/build this exact game for years! Congrats on launching. After four years that’sa huge accomplishment.
- rapfaria 7y agoWhy do you have the videos unlisted? This is amazing, congrats.
- Adam13531 7y ago> Why do you have the videos unlisted? Two reasons: 1. By making them public, they show up for all of my subscribers on YouTube, but I assume most subscribers on YouTube want to watch "major" update videos like announcements, recaps, etc. 2. I didn't want a new person coming to the channel to get lost in the ~800 development videos rather than seeing the important ones. > This is amazing, congrats. Thank you! It's surreal to have spent this long developing something and finally launch it.
- hombre_fatal 7y agoWhat about the two channel system that is so common on youtube? One for major productions, the other for faster-release-but-narrow-appeal videos like behind the scenes or development progress? That way super fans can follow the bonus channel without having to go through your website to find videos.
- Adam13531 7y agoThat probably could have worked, although I don't think I was the best at advertising things. :( As a streamer, I felt like one of the most difficult things to do was to alert people about news/changes for basically anything (my vacation schedule, a bug, the current task I was working on, etc.). Now that the game has launched and my streaming schedule is up in the air, I don't know if I'll be changing anything with the YouTube channel. It's been around for so long now, and I don't think many people want to watch the past VODs anyway beyond skimming to see what's changed in that amount of time.
- Madmallard 7y agoHow the hell did you have the ability to drop 5000 hours on this?
- danaur 7y agoI feel like most people have that much time assuming they cut out time wasting things like Facebook/YouTube/etc.
- Smithalicious 7y ago5000 hours is a long time, but you can do it in 5 years with under 3 hours per day. That's within most people's means though you would have to make sacrifices.
- jabits 7y agoActually about 4 hrs/day...when figuring out approx billable hours in a year a good estimate is 50 weeks @ 40 hrs/week, so 2000 hrs/year full time (8 hrs/day) or 1000 hrs/week half time (4 hrs/day)...
- Adam13531 7y agoI think the other comments were interpreting this as "where did you find the time?" rather than "where did you find the other resources to support that time?" (e.g. money and motivation). I've been maintaining a huge FAQ since I've gotten these questions a lot over the last four years, and this one in particular should answer the question: https://github.com/Adam13531/BotLand/wiki/FAQ#how-are-you-affording-to-work-on-bot-land https://github.com/Adam13531/BotLand/wiki/FAQ#how-are-you-af... I linked that rather than copy/pasting it because you may find other answers interesting on that page. :) EDIT: I should clarify that 5000 hours is roughly the number of hours that I streamed, not the number of hours that I worked on Bot Land. There were way more hours spent in the background doing all sorts of things (including coding), but the majority of the actual development was on-stream.
- sitzkrieg 7y agoreally like the scratch style snapping chunks of logic! nice trailer too
- w1nst0nsm1th 7y agoAwesome. This one goes in my collection of programming games. Thank you. I hope it gains traction.
- cbm-vic-20 7y agoCongrats, Adam! I've been following your stream for years, and I'm always impressed and inspired by your programmers' log and note taking.
- ALittleLight 7y agoOne problem I'm having, when manually editing the code, is using Math functions. Ideally, I'd like to calculate the square root of an expression, but whenever I try to use Math functions I get the error "The Callee's type is MemberExpression which is not allowed". Any advice?
- Adam13531 7y agoHey, so one thing to keep in mind is that BotLandScript is a subset of JavaScript. Member expressions (e.g. "entity.life") are only allowed in extremely narrow scenarios. Second, all available functions are accessible by clicking the question mark that shows in the script editor. Some Math functions like "abs", "floor", and "ceil" are exposed to users, but "sqrt" is not. This means that you would have to either write your own implementation or convince me to add it to the game. When I hear "sqrt" in Bot Land, I assume you want to find the distance between two objects, in which case you may be able to use the built-in "getDistanceTo" function. It can either take in an entity or two arguments representing (X, Y) coordinates and returns the Manhattan distance between the bot and the target. If there's another scenario where you'd like the square root, I'd be glad to consider either accommodating the scenario or just adding access to Math.sqrt directly. If we go that route though, you wouldn't have access to whatever results from it before ~Tuesday of this week at the earliest.
- tardo99 7y agoWhat's the rationale for excluding sqrt? And, do you allow Math.pow (since that's the same thing)?
- Adam13531 7y ago> What's the rationale for excluding sqrt? That's a great question, and one with a non-obvious answer! For any potential function in Bot Land, including utility functions like Math.sqrt and Math.pow, I purposely wanted to provide as few as possible until someone expressed a desire for them, that way I could ask about the scenario they were trying to accomplish (as you saw in this thread). From there, I try to figure out if there's an even easier way of supporting their scenario so that everyone (i.e. even Blockly users) could enjoy it. For example, if we find out that Math.sqrt was needed solely to find distance and that getDistanceTo was sufficient, then I could treat it as an education problem on behalf of Bot Land. In other words, I may want to include more snippets that use "getDistanceTo" or maybe make more tutorial content around that function. Another philosophy would be to just add whatever functions I can think of and see what users do with it. That would probably have worked too; I'm not saying mine is better, it's just what I was thinking.
- empressplay 7y agoWhere did your EULA come from? Seems a bit brutal :)
- Adam13531 7y agoA combination of a lawyer and some minor touch-ups I've made over the years as things have changed. Do you mind clarifying what you find brutal? I am very far from being a lawyer, so I just wanted to make sure I'm protected, which is why I contracted the work out in the first place.
- ponyous 7y agoWoah congrats. I have watched a stream or two of yours and it looks really interesting. I really liked your marketing document and think others might find it really useful, hope you don't mind me linking it here: https://docs.google.com/document/d/1TiSmB7IaWpIf_7cUWzk7GAtR8VU5I5Py-leABO7fDT4/edit?usp=sharing https://docs.google.com/document/d/1TiSmB7IaWpIf_7cUWzk7GAtR... (let me know if you are not ok with that and I'll edit the comment)
- jacquesm 7y agoCool, a modern day Core War! https://en.wikipedia.org/wiki/Core_War https://en.wikipedia.org/wiki/Core_War
- bigiain 7y agoCame here to make the same comment. I also played - I guess back in the late 90's, with an autonomous Asteroids-like game where you'd write code to control your "space ship" that had "radar" to show you nearby opponents and had pretty much just Asteroid-like controls, which ran as a networked screensaver. It came out of a bunch of people working at Canon - a friend of mine worked there writing printer drivers...) (Now I'm wondering what you'd get if you let loose inside a modern device, like a cellphone for example, with two opposing bits of fighting code with full root access, but strictly equally time and resource shared? Would Core War even make sense any more with Gigs of ram, hundreds of gigs of flash, asnf stuff like wifi and bluetooth?)
- furins 7y agoYou probably played crobots: https://tpoindex.github.io/crobots/ https://tpoindex.github.io/crobots/ It was quite popular at that time!
- keyle 7y agoThanks I just looked into this, I've never heard of it before. Here is more on its language http://vyznev.net/corewar/guide.html http://vyznev.net/corewar/guide.html This is nuts!
- black_knight 7y agoCongratulations, looks awesome. I had an idea for similar kind of game where you are a wizard and program your own spells. The mechanics would be inspired by how magic works in The Dresden Files[0], where you draw in magical energy, transform it and then use it in some way. Maybe one could connect it with linear logic and programming. [0] https://en.wikipedia.org/wiki/The_Dresden_Files https://en.wikipedia.org/wiki/The_Dresden_Files
- zeeZ 7y agoCodeSpells combines magic and programming. It gathered quite a bit of hype early on, but I didn't really follow it's progress since.
- jacquesm 7y agoThat reminds me of 'Midnight at the Well of Souls' by Jack L. Chalker: http://www.geocities.ws/evilsnack/well.html http://www.geocities.ws/evilsnack/well.html
- guli 7y agothe minecraft mod Psi works just like that https://psi.vazkii.net/ https://psi.vazkii.net/
- __rvnykk 7y agoLooks awesome, I signed up! I'll try it out over the next few days. Looks like it could have a lot of potential
- dcdgo 7y agoThe Google code blocks integration is quite nice. as a developer, I wouldnt want to play this though.
- unforeseen9991 7y agoYou'd probably like Screeps then. It's aimed for developers, but it is JavaScript (Con to me, pro to others). Essentially a bot coding MMO.
- Adam13531 7y agoYou can code in a subset of JavaScript too. Even with that in the game, I find Blockly a little bit more usable given the current feature-set in Bot Land right now (mostly the existence of snippets and premade scripts in Blockly). It's nice to get large chunks of code that you can just drag around. Alternatively, maybe you were referring to some other part of the game when you said you wouldn't want to play this, in which case I'd love to hear your feedback!
- seaish 7y agoI think they were just saying that since they code for a living, they don't want to play games that are also code.
- Adam13531 7y agoOh yeah, you may be right. I took it to mean "given that I know code, I wouldn't want to use a drag-and-drop interface". I've had a few pieces of feedback like that before, and sometimes even pointing out the existing coding interface doesn't please those people. To each their own, for sure!
- 29athrowaway 7y agoIf you like these kind of games I recommend this one: https://robocode.sourceforge.io/ https://robocode.sourceforge.io/
- karmakaze 7y agoNice. RobotWar for a new generation. [0] https://en.wikipedia.org/wiki/RobotWar https://en.wikipedia.org/wiki/RobotWar
- cortesoft 7y agoI grew up playing RoboWar for the Mac... looks like it was based on the one you linked. Guess every generation has theirs!
- sportanova 7y agoFull on programming as a mechanic seems overwhelming, but I like the idea of automation in strategy games I’ll give your game a try, maybe I’ll be proved wrong
- Adam13531 7y agoThere are three levels of scripting you can do: * None - just ignore the scripting and let the default AI take care of everything. There are some items that can't be used this way, e.g. Teleport and EMP, because the default AI wouldn't know how you'd want to use them. * Blockly - use the block-based scripting to control your bots. This is what I suggest as the step for newcomers who still want to customize their bots' behavior. * BotLandScript - this is a subset of JavaScript that I only recommend for people who already know how to code. Blockly and BotLandScript should have feature parity (not that they do right now, but the differences are somewhat minor given the target audiences for each), so you don't necessarily have to code (or even know how to code) to play Bot Land. Then again, scripting will certainly give you an advantage.
- mch82 7y agoBlockly (or similar methods like Blueprints in Unreal & Simulink) is how most people will program in the future. You’re going to get negativity from “developers” about using Blockly, but unless they’re your target audience don’t let it get to you. Lots of EE’s use graphical tools to layout the circuit boards anyway... so text is really just an unnecessary abstraction over schematics & you’re bringing programming back to its roots :-)
- Jach 7y agoWant to make a timeframe for that prediction? I'd like to record it... While I agree to ignore the criticisms from people who won't even play the game (which includes me, so I haven't commented on it, even though I've played a number of variants on this during high school) I think your prediction here is a stretch. First a quote to consider: "Linux supports the notion of a command line or a shell for the same reason that only children read books with only pictures in them. Language, be it English or something else, is the only tool flexible enough to accomplish a sufficiently broad range of tasks." -- Bill Garrett Now a point about EEs/CEs... it's way nicer to write: module dff ( q, d, clk ); output q; reg q; input d; input clk; always @(posedge clk) begin: q <= d; end endmodule than to actually lay out and route a flip flop. Of course you're going to simulate such modules, and use graphical tools (the least of which is just to picture signal waveforms), this isn't to say graphical tools are going away or are pointless, but I would readily take the other side on a bet about your prediction since I don't think programming will even in 100 years be something people think of as manipulating graphical elements rather than typing/chording expressions satisfying some grammar/syntax we'd call a language.
- air7 7y agoHas anyone ever played Robot Odyssey? It was one of most beloved games as a child. It's somewhat of a precursor to this project.
- fortyseven 7y agoShame about the loot boxes. https://i.imgur.com/NvQIJaG.png https://i.imgur.com/NvQIJaG.png
- Adam13531 7y agoAre you talking about the monetization model, or is something broken with opening salvage packs? I assume the former. The goal was always for Bot Land to be free-to-play, and there were many different approaches to monetization discussed throughout development. In the end, I settled on the one you see in-game now, but the tenets were always the same: https://share.bot.land/monetization.html https://share.bot.land/monetization.html For reference, salvage packs are the single monetization point of Bot Land. I'm not planning to include advertisements, and I don't want to do subscriptions or anything. Salvage packs contain only cosmetic items, and the rarities are included up-front (which I would have done even if certain platforms like Apple didn't require that). You can play for free and obtain every item in the game. The game took not only a substantial amount of time to develop (4 years), but also a huge chunk of my savings that I'd built up from my past jobs. I do need some way to make money, and I don't think people would give a game like Bot Land a shot if it weren't free.
- shkkmo 7y agoI appreciate your intent to make the game is not P2W and use IAP only for cosmetic items. However, why not allow users to purchase those items directly? The use of "loot boxes", even for purely cosmetic items, can create dangerous and unhealthy addictive behaviors as people buy again and again trying to get the item they want. A number of countries [0] have made "loot boxes" illegal or placed restrictions on them, so this isn't a purely humanitarian concern. Additionally, since you can sell those cosmetic items for "Botcoin, which you can then use to purchase anything else in the game." doesn't that end up giving your game P2W functionality? It seems like moving to direct purchases of cosmetic items would eliminate the need for re-sale and prevent concerns about your game being P2W. [0] https://en.wikipedia.org/wiki/Loot_box#Regulation_and_legislation https://en.wikipedia.org/wiki/Loot_box#Regulation_and_legisl...
- 7y ago
- xentripetal 7y agoEnjoying it so far, small bug report: Loadout weapon drag window can get permanently stuck on the screen, requiring a refresh. See here https://i.imgur.com/cL4x2Vk.png https://i.imgur.com/cL4x2Vk.png Steps to reproduce: Go to Edit Blueprint Window. Start dragging a window. Press backspace to go back to the game field. The window is now permanently stuck.
- Adam13531 7y agoThank you for reporting this! I say this with no sarcasm: I think this is a completely unique bug. Also, it's better that I get reports than not, but if you've got any future bug reports or feature suggestions, there is an in-game bug reporter that you can use via the button at the upper right of most screens in the game.
- jkp56 7y agoSounds interesting, but didn't work for me: it got stuck on the "bots are busy assembling the game". There is no indicator of progress, no errors, no logs. It's a good idea to add a feedback button that would upload logs on demand. I'm using Firefox Android with uBO. Only GA was blocked, but there's no way I'm enabling it.
- Adam13531 7y agoDo you mind trying either the app or a different browser? I don't know why it wouldn't load at all. I agree that there should be some form of errors, logs, etc. I believe that will eventually happen if the game makes enough money to continue development. Launching on four platforms was only possible due to being able to thinly wrap the site, and unfortunately, now there are a lot of other important tasks to tackle that will probably happen before this. :(
- Pfhreak 7y agoHow was streaming development of the game? Are you concerned about your source being visible? Or feeling like you are being watched or judged while coding? When did you start streaming development? I'm worried my side project is too early in development to stream... Did you end up having to spend a bunch of time making extra stuff for your audience, like the faq you linked?
- Adam13531 7y agoOh boy, do I have a huge answer for you! > How was streaming development of the game? It was great! People ask me a lot about what I'd change if I could go back in time or start again, and while I would certainly change some technological decisions, I would not change the streaming aspect. There are so many great things that have happened over the years, and I feel like the culmination of all of it can be summed up in this launch-day highlight I took: https://www.twitch.tv/videos/486320333 https://www.twitch.tv/videos/486320333 That one video felt like it made the whole journey worth it. > Are you concerned about your source being visible? I wasn't super concerned for a few reasons: • Code is copyrighted as soon as you write it, so if someone were to take it, I would be able to take legal action against them. • Perhaps more importantly, I didn't think anyone would want to copy Bot Land's code. Automation games are growing as a genre, but rarely will they include scripting as the main component. To my knowledge, there wasn't a scripting-based game ~4-5 years ago that proved that they could be successful. • See the next answer... > Or feeling like you are being watched or judged while coding? Impostor Syndrome runs rampant with coders. Did I feel like I'd be judged? Yes. Was I? 100% yes (by some people). Were some people mean about it? You'd better believe it. However, I started streaming for accountability and marketing, and I wouldn't have gotten those benefits if I didn't stick with it. Also, remember that as a streamer, you control who gets to stay around in your chat. People are entitled to their own opinions, but I think the #1 rule as a streamer is that of entertainment: the show must go on. As a programming streamer, this doesn't mean that you have to be entertaining all of the time since you have to be productive while streaming. Either way, in order to keep the show moving, you have to be in a good enough mood to do things. When a troll gets in the way of that, you purge/timeout/ban and move on. If someone is judging you for your coding style or standards in an unconstructive way, you have tools at your disposal to handle it. > When did you start streaming development? I started on September 8th, 2015. I believe I had one follower on Twitch at the time, a real-life friend of mine. > I'm worried my side project is too early in development to stream... I don't think anything is really off-limits for a development stream. I've spent entire days streaming myself milling around entirely in a text document (i.e. not even code). I've spent days writing automated tests, triaging bugs, debugging, etc. > Did you end up having to spend a bunch of time making extra stuff for your audience, like the faq you linked? Yes. If I had to estimate how many full work days I've put into just streaming-related tasks, I would say it's about 10-15. Granted, you can just start with practically no preparation and see where it takes you, but I don't advise doing that. My advice on streaming hasn't changed too much in the past years; it's mostly encapsulated here: https://blog.bot.land/2016/10/being-a-development-streamer-on-twitch/ https://blog.bot.land/2016/10/being-a-development-streamer-o... Streaming is just as saturated as games are nowadays. There are a million streamers trying to make it big who "don't care about the numbers, they're just doing it for themselves". If you want to get started, I'd say that you should come up with a goal pretty early on, and that goal should not be to earn money from the stream. I won't share exact numbers, but I make less than minimum wage as a streamer. As a developer at a traditional job (in the U.S.), I'd make plenty of money. I'd be happy to answer more questions you may have, although I think you'll have to see for yourself how streaming goes in order to consider whether it's worth it. And be ready to come to the conclusion that it's not worth it since it can affect your productivity and possibly your mood/energy.
- mt40 7y agoVery interesting. It looks just fun at first but become more and more addicting. Good job!
- t0astbread 7y agoScreeps is also a cool automation game like that (and 100% FOSS!). (Judging from the looks of this it's a very different game though, so try both!)
- valryon 7y agoIf you like the genre you should also check Gladiabots on Steam: https://store.steampowered.com/app/871930/Gladiabots/ https://store.steampowered.com/app/871930/Gladiabots/
- AlexMuir 7y agoOn iOS. Signup Email input should be of type email. Password length feedback should be inline - not after typing pw twice and submitting. Gave up at the ‘place two bots’ stage. Couldn’t work out how to place a bot. Love the idea. Needs UX love!
- stiray 7y agoSame here, android, unable to figure out how to place a bot. Everything that made sense (select robot, tap in arena, tap bottom bot name and tap arena. Even double tapping didnt work. Gave up too. Update. Got two bots (at least based on count), I have no clue how, started fight, but there is nothing to be seen, just black background. Battle finished and again everything black except the menues. I am fan of bot wars and would love to play it, but this is just too frustrating to use.
- Adam13531 7y agoThank you too for the feedback! Would you mind either sharing the following or submitting a bug directly through the game? If you'd like to share this outside of the game but still privately, my Discord ID is Adam13531#3531. • What device are you on? • Are you using the app or the site? • If you're on the site, what browser are you using, and have you pinned the site to your home screen, or is the URL bar showing? • What OS version are you on? The mobile versions of the game are thin wrappers around the web version (https://play.bot.land/ https://play.bot.land/), and there weren't very many mobile users before launch, so bugs certainly made it through the testing process.
- stiray 7y agoYeah I suspected it is just a web game. I am so sorry you have decided to make it web based. I have webgl disabled as it is common for websites to use it for fingerprinting and I will not enable it.
- Adam13531 7y agoThank you for the feedback! I've added all of this to the list of things to look into. I've heard sporadic reports about not being able to place bots on iOS, and I'm still not sure if it's a bug (I only have my wife's iPhone to test on and it works there, but I know it's not representative of everyone's experience) or unclear instructions. This is the flow that should be happening: https://i.imgur.com/EalfL7J.png https://i.imgur.com/EalfL7J.png The steps, as text: 1. Open your bot selector 2. Select a bot 3. Tap in the Arena to place one Is that flow showing up for you? Are you on an iPad or something that shows the "desktop" view of things (i.e. the bot selector is expanded by default)? Alternatively, in that mobile tutorial, should you try dragging the bots from the selector, that should work too, although it tends to take a little bit longer to deploy multiple bots that way.
- mizzao 7y agoI accidentally removed my bot's head/torso/feet during the tutorial and could not add them back.
- speakingchatter 7y agolooks like a great game! Thanks for working on it!
- benwiser 7y agoBit of a shameless plug I guess but it's especially fun for me to take a look at this because I worked on a pretty similar game about 3-4 years ago making bots battle each other for the students I was tutoring. Right after that I made another game that was a more single player experience and decided it would be fun to learn OpenGL so I obviously got a lot less done. This definitely looks a lot more polished than what I produced and I hope it turns out well! For those interested in the projects I worked on, you may find them here: https://gamejolt.com/games/masjien/80426 https://gamejolt.com/games/masjien/80426 https://gamejolt.com/games/proxy/221194 https://gamejolt.com/games/proxy/221194
- animal531 7y agoI always loved the classic PRobots and later CRobots, its a great way to learn programming.
- mizzao 7y agoA for loop seems to be supported but there is no documentation on how to use it. I'm getting the following error when trying to use a loop index i: Your for loop's body section is not legal. You can only use literals as a refinement on objects (when trying to index into an array[i] returned from findEntities).
- OtherMush 7y agoI looks like only the two built-in variables "array1" and "array2" can be used like actual arrays. someBot = someArray[0]; will not work but array1 = someArray; someBot = array1[0]; will.