HNHacker News
TopNewBestAskShowJobs

Adam13531

285 karma · joined March 10, 2018

submissionscomments
Adam13531··on Ask HN: Who wants to be hired? (June 2020)
Update: full-time work is fine too.
Adam13531··on Ask HN: Who wants to be hired? (June 2020)

  Location: WA, USA
  Remote: yes
  Willing to relocate: no
  Technologies: last five years: JavaScript, Node.js, AWS, 
  Firebase, ReactJS, NextJS, Ansible, Terraform, MySQL, NoSQL, Docker, Java, Kotlin
  Résumé/CV: please inquire (portfolio here: https://hire.adamlearns.com/)
  Email: adam@adamlearns.live
Developer, educator, and quick learner. Worked pseudo-remotely for the last five years on my own start-up. Spanned every role. Large, easily viewable portfolio here: https://hire.adamlearns.com/

I'm looking for part-time/contract work.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
> You're right that I was trying to calculate distance.

Oh good! Thanks for following up on that.

> one of your code blocks seems to translate into Math.pow, which made me think that I could use it too.

The way that the blocks work is that they convert into JavaScript under the hood. This means that there's no way to do something through the blocks that you can't do in code (although the converse isn't necessarily true). This means that if there is a block that converts to Math.pow, it's broken, so I'd definitely like to know about that if you find it.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
Thank 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/), and there weren't very many mobile users before launch, so bugs certainly made it through the testing process.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
> 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.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
Thank 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

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.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
I think that with the current climate of gaming, this is a minefield to answer, and I don't think it does me any good to answer it. It feels like a "gotcha, I knew it!" kind of question rather than an honest inquiry into how Bot Land's monetization came to be. However, I've always wanted to be transparent where I can, and I'm sure some people are wondering about this, so here's my thinking that led to cosmetic-only salvage packs:

For any game to be monetarily viable, it needs to pull in an average of $X for each player. Any free-to-play game (including freemium but not including something like shareware) skews how that average is formed because typical free-to-play games are lucky to have 5% of their playerbase spending any amount of money. This means that a large portion of the playerbase is actively costing money. Thus, they tend to rely on whales to spend huge amounts of money to compensate for all of the people spending nothing (or next to nothing). For this to work, the spending ceiling needs to allow for purchases of this size to even take place.

I wrote a salvage-pack modeler that would compute how many items of each rarity you would get by opening X packs, and how much Botcoin you could convert those items into should you want to sell them. I determined that at the highest number of packs that you can buy (70 packs, i.e. $100), you unlock nearly every cosmetic item in the game except for the rarest ones (which you actually unlock very few of). However, the average Botcoin value is enough for you to purchase several specific items that you may have wanted. I never wanted players to spend $100 for a single item and not be able to get it somehow.

By allowing direct real-money purchases of individual cosmetic items, I'd have to skew prices so heavily to make the same average revenue that I don't think players would want to purchase them. Also, there wouldn't be the fun or mystery of opening a salvage pack. I know what that sounds like. I even did a parody of EA's famous words for April Fool's last year (https://youtu.be/cCmj2hKbWeQ). But I can unravel a bit of this at least:

1. I'm not a businessperson. I don't know much about the psychology behind sales and how to make various business models work.

2. I have somewhat conflicting goals with Bot Land. I want the game to be free-to-play, I don't want to exploit users, and I want to make a living off of the game.

3. The model which I know can fit those goals is the salvage-pack system that you see in the game now.

4. The payment model is not set in stone. So far, Bot Land has grossed significantly less than $1000, and a large portion of that is from users who already had accounts before the game even launched, likely indicating that those users wanted to support me moreso than get something in the game. It's easy to be ethical until challenged, but I'd like to think that if I found users spending ludicrous amounts of money in the game, I'd do something to curb that behavior.

5. There's been an absurd amount of work just getting to launch, and I'm not positive that I can even continue Bot Land's development beyond 2019 without greatly changing the plans my wife and I made (more about that here: https://docs.google.com/document/d/1aCE4s5UvVLH7dHuO1OA2m5Sw...). This bullet point's relevance is that I have so few resources to even be able to focus on the game alone right now, let alone any other issues that may pop up.

You may take this as incoherent rambling or mental gymnastics to be able to justify what is typically a predatory business model in gaming. I will be reevaluating as time passes to figure out whether something needs to be changed. I highly doubt Bot Land will be successful enough for me to even be able to make those decisions though.

> doesn't that end up giving your game P2W functionality?

Functional items are supposed to be balanced such that they can be situationally better than other items of the same category, but not outright better. Arguably, being situationally better allows you to be outright better the more situations you come across, but I think that fully exploring the nuances of this would be a much larger conversation when I think that the heart of your questions is around loot boxes. In short: I don't think that even if you could purchase Botcoin directly would the game be pay-to-win.

Finally, one last note that's not the most salient: I never really intended for salvage packs to be convertible into the other items in Bot Land, just cosmetic items. The one monetization point that I've written down for the future is to introduce hardware coupons, that way you can directly purchase functional items. I don't know when this would happen though, if ever.

---

There are parts in this post, specifically with the five points I enumerated, whose connection to the original questions and even to my own supporting points may not be clear to a reader. I took time and care to type this, but I'm sure that I could have made things clearer. I don't mind participating in an honest discussion about this or other aspects of the game. I'll likely stream tomorrow (Monday) if you want to ask me in-person (although I can't guarantee that I have the required amount of time to devote to the conversation).

Adam13531··on Show HN: Bot Land, a game where you fight others via code
Ahh, I see what you're saying. I think the answer to that is that I had set up my entire life around Bot Land. It was my full-time job, I had the stream for accountability, and I'd dumped my savings into the production of the game. I couldn't just walk away from that. Plus, it's been a lifetime goal of mine to make a successful game, and I'd always said that the one true way to definitively fail was to not finish Bot Land (I hadn't had such a definition of failure for other projects).

Without getting too rambly/preachy here, I'll say this: there are lots of things in my life where I think, "I'd like to do that, so I'll get to it eventually". After a long enough amount of time, you realize that "eventually" doesn't just hit you in the face—you have to carve out time for the things that you want to do. At the end of my last traditional job, I realized that my career goals weren't being met. Primarily, I wasn't learning. I talked to my wife about what I should do, and she suggested that I productize Bot Land. That's when I had to realize that the concept of "eventually" was peaking through the cracks probably trying to hit me in the face, and I had enough momentum to just go with it.

You mentioned that you're almost 30 and that things aren't getting easier. I can't say that they will get easier. What may help you take one of your many games to completion is simply scoping it down way further than you think you should. Cut out multiplayer, cut out innovative AI, cut out randomly generated dungeons, and just focus on a couple of solid aspects.

I don't know if any of that advice resonates with you, but if not, perhaps defining what barriers you feel like you've hit would help identify what patterns may be stopping you.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
> Do you find it difficult to converse with folks while programming? How do you maintain flow state while streaming? (Maybe this is just a skill you pick up?)

This comic (which you've probably seen!) sums up context-switching as a programmer: https://heeris.id.au/2013/this-is-why-you-shouldnt-interrupt...

Imagine that but multiplied by 100. Every 3 seconds, someone is saying something that you can see out of the periphery of your vision. How difficult it is to interact is up to you; you can hold off on chat and handle it every X minutes, you can let them interact with themselves, or you can interrupt your flow every few seconds.

I try to take extensive notes about what I'm doing at any given moment so that I can always pop the context back off the stack and resume my work. It's a skill you'll hone as you go.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
A 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.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
Oh 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

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

Adam13531··on Show HN: Bot Land, a game where you fight others via code
Oh 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!
Adam13531··on Show HN: Bot Land, a game where you fight others via code
Thank 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.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
Do 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. :(
Adam13531··on Show HN: Bot Land, a game where you fight others via code
Hey, 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.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
That 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.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
Are 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

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.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
I 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-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.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
There 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.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
> 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.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
You 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!

Adam13531··on Show HN: Bot Land, a game where you fight others via code
Thanks!

The marketing document is fine to link. It hasn't really been updated much, but then again, I'm going to try more ideas from it now that the game has launched and the fires have died down a bit.

Adam13531··on Show HN: Bot Land, a game where you fight others via code
Hey 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/ 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

Almost all of the development process (~5000 hours) was streamed live on Twitch: 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!

Adam13531··on Typing with a Piano [video]
Ah, good, I'm glad you found the answer!

As for making something like this harmonically pleasing, it's been touched on here in other threads, but I think the whole project would require a redesign. If you were still aiming for a one-to-one mapping of piano keys to letters, then I think you would end up sacrificing both learning speed and typing speed.

Adam13531··on Typing with a Piano [video]
Unfortunately no, not yet, although I'll try to make a post if I ever open-source it!
Adam13531··on Typing with a Piano [video]
Sounds like a fun project!

RE: integration with what I did - I'm hoping to release the source code one day, then you'd most likely be free to use that code however you want (I'll probably MIT-license it). But as for my involvement, I'd like to be done with this project.

Adam13531··on Typing with a Piano [video]
The April Fool's joke was that I'd even bother spending my time trying to learn this, but I assure you, it's all real! I linked to this elsewhere in the thread, but here's a Twitch VOD of practically nonstop typing tests for a few hours: https://www.twitch.tv/videos/404585365

(it's not really worth watching if you're satisfied with the YouTube video )

Adam13531··on Typing with a Piano [video]
I made a little explanatory document (https://goo.gl/Vq3Fsb) to go along with the typing tests that I streamed today, and that was one of the things that I mentioned (copy/pasting from there):

Q: Can you play a real song so that we can see what it types out?

A: This isn't as satisfying as you may think since the entire typing range is only about two octaves, and most songs exceed that range, so nothing actually gets typed when you play those notes. Anyway, here's Wonderwall: Iuiuigaezobzgbxgebiuiuigaezobzgbegz

(that's actually the right hand of Für Elise)

Adam13531··on Typing with a Piano [video]
RE: "much bigger research" - fully agreed! Sometimes, I daydream and wonder what it would be like if it were my job to do something like this for, say, two whole months. Then I could try tackling issues like making this more musical. Then again, I know that if I had two months, I'd try to break the 80 WPM barrier.

In the end, I don't think there are many practical applications to something like this. I only had one real problem that could potentially be solved by this—it's when I'm working in a music program with my piano and limited physical desk space. The keyboard would be out of reach, so I could press an escape chord on the piano to enter Keyiano Mode, type whatever I needed, then reenter Piano Mode. The learning curve could be decreased by making on-screen overlays to show you what each key would do at any given time.

But yeah, that's solidly in daydream territory since I've got bigger fish to fry for now.

Adam13531··on Typing with a Piano [video]
I'm not totally sure I understand your question. My original design document (from apparently a year ago!) is here: https://goo.gl/U1HnMu ← that was part of what I produced in the "six hours" that I mention in the video. Perhaps that will help, but I don't expect you to read through 11 pages to find your answer, so with clarification, I'd be happy to answer you!
Page 1 of 2Next →