Hacker News new | comments | ask | show | jobs | submit login
The Starfighter Low-Level Tech Tree (sockpuppet.org)
261 points by Cogito on Dec 7, 2015 | hide | past | web | favorite | 102 comments

I'm really excited for this to come out. The release email had the following before the text you can see in the submission:


This is Thomas. Here is a thing somebody wrote about Stockfighter, our project, which we're sending you because you asked us for updates from starfighters.io.

We hope you enjoy reading it. (If you want to read it in a browser, try here. Works best in a fixed-width font.)

Assuming there are no other Carpathian trickster-gods we've somehow managed to anger, you should be able to play both tech trees of Stockfighter by the end of the week. Patrick wants me to say the day, but I'm pretty sure speaking the names of actual days of the week in sentences about this project is one of the things that angers the Carpathian trickster-gods, so let's just say "a day that rhymes with Shplyday".

furtive glances over shoulder

If it does come out this week, my holidays are not going to be very productive - or perhaps very productive, depending on your perspective!

I think this is the first real look at the low level tech tree and what kind of things it will contain. I'm excited by both of the tech trees so far, I think it will be interesting working through both of them.

I really enjoyed the style of this information release, quite a lot of information but the writing almost seemed tongue-in-cheek the whole time and was fun to read.

I do not understand what you are talking about. The article describes reverse engineering of a stock trading device, covers the basics of assembly, and shows the poor security of trading systems.

But what do you mean by "low level tech tree"? None of those words are in the article.

Edit: Apparently this is all part of a fictional game.

> But what do you mean by "low level tech tree"? None of those words are in the article.

The title of the submission is taken directly from the email subject.

http://starfighters.io/ has a great intro to what this is, made by community members 'patio11 and 'tptacek.

I'll offer up a few prayers to Athena; maybe she can help keep those Carpathian trickster-gods off your backs. I certainly hope so--I've been looking forward to this since Starfighter announced themselves! (Though I've made it nine months so far, so another few days won't kill me ^_^)

I feel like I've fallen into a hole. There's jargon everywhere, I'm not sure if I'm in the middle of some sort of satirical art experiment.

Can anyone explain what is going on?

Apparently it is a fake reverse engineering report to support a programming game which, i'm guessing, is about to go live? see http://www.kalzumeus.com/2015/08/20/designing-and-building-s...

This reminds me of when 0x10c was announced :)


That was such a let down in the end...

Good thing this is made by people who have already proved what they were worth. I love Notch but he never seemed like a "worker" type. He was just having fun until it was no longer fun.

10 years of indie game dev resulting in Minecraft isn't proof the guy can work hard?

Setting the bar a little high for us, aren't you?

Well this is just the image I have of Notch. He was just goofing around with mini-games. One became ultra famous. Lots of people got involved and it exploded from there, not really in his control.

Doesn't mean the game is not great, doesn't mean he's not skilled. Maybe I'm just sour about all his talk on 0x1c before giving up.

0x10c was a classic 2nd system effect.

It's approximately in the style of 2600 or cDc, if that helps. If it doesn't, wikipedia will.

Thank you!

P.S., since it isn't in that post anywhere due to in-game voice: Stockfighter launches publicly on Friday.

link to the difference between Stockfighter and Starfighter? (i can't tell which one sounds more exciting based on the title / credentials. am i supposed to?)

Starfighter is to Stockfighter as Blizzard is to World of Warcraft. We (Erin, Thomas, and I) are a company which makes games; Stockfighter is the flagship product of the company for the foreseeable future.

> We (Erin, Thomas, and I) are a company which makes games

OK, I'm curious now.

I've seen a lot of comments from two of you (you and tptacek) here on HN, and never noticed anything in those that would have led me to guess either of you had a sufficient interest in gaming to want to start a gaming company.

Did I just not notice your comments indicating a gaming interest, or were you wise enough to stay out of gaming threads knowing they usually turn to pointless time wasting crap, or what?

Thomas is actively concerned that I describe our products as "games" but I've been having difficulty finding a word the market understands for this, since "CTF" gets blank stares from people on both sides of the market if they don't have a security background. Neither he nor Erin would self-identify as gamers in the same way that I do not self-identify as a ballet enthusiast.

Would I self-identify as a gamer? Well, "Ran a WoW raid guild", "I main AD Jungle Evelynn but haven't gotten many games in since having a kid", "My Steam account lists 720 hours of playtime on 60 games."

I don't particularly hide this on HN and also don't particularly go out of my way to talk about it. Games, books, and running software companies are my three big hobbies; one of these seems to be most relevant here. You can probably find 5~10 comments from me if you search for WoW, Warcraft, LoL, or Starcraft, but mostly they're talking about business, like you would expect.

I'm just worried that "games" are something people judge by graphics quality, and I'm not even sure we have a competitively pretty debugger.

What about "puzzle"? The negative is that it implies a single solution, but other than that it describes what's going on pretty well.

The alternative to "game" is "programming contest"

The word "contest" is bad for us because it implies that the only reason you'd participate is to beat other people, but really your primary adversary in these challenges is Erin, Patrick, and me.

On a tangentially related note, I'm having the same trouble with the phrase "escape room" - I'm building a game that I want people to experience, not escape from!

> your primary adversary in these challenges

"Challenges" or "programming challenges" sounds good to me.

The textfile was a fun read, best of luck!

Isn't "CTF" at least as bad, with the extra bad of making no sense to most people?

It's not great, I agree, but I like that we still have an opportunity to define what a CTF is for people who aren't already CTF players.

Also: we're very much structured like a conventional CTF; it's just a CTF we're not taking down after a few days.

Contest generally connotes a fixed length group activity with a single, or small and usually predefined set of winners. Game is really the correct term, IMHO, but it's still negatively associated with productivity, to the degree some people don't like to admit they play games, which is likely only true in their mind because of their overly constrained idea of what a game is.

We spend much of our childhood doing accelerated learning through play (games). There's no reason that can't continue into adulthood, except for it culturally being slightly unacceptable. That's really counter-productive.

Why do people think "gaming" and "business" are such disparate interests anyway? Is it so hard to see the "Nevada Gaming Commission" and the "Securities and Exchange Commission" as not entirely orthogonal?

If it helps Thomas sleep better at night, I'd definitely encourage you describe your products as "experiences" instead, because seriously. Games ain't trivial.

> ...I'd definitely encourage you describe your products as "experiences" instead, because seriously.

Anyone who describes their thing as an "experience" automatically gets -1000 points. IME, when the description of a thing says that it's an "experience", it's a strong indicator that the marketing copywriter ran out of fluff words to use and reached for the most trendy and inoffensive one they could find.

It's okay if there's a lot of surrounding substantive description that makes it clear that the folks behind the thing are legit, and that "experience" was just added to meet a buzzword quota. If -however- much or all of your description centers around how much of an "experience" it is, I'm likely to skip over whatever it is that you're hawking. :(

How about "programming games" or "coding games"?? The word "games" by itself makes me think of mobile games like Crossy Road or Clash of Clans. CTF makes me think of Team Fortress.

Or Code 'em up a la Shoot 'em up?

I think in this case, game is less "Mass Effect" or "Grand Theft Auto" and more alternate reality + really hard (programming/networking) puzzles, where the mechanics to the puzzles have some non-fictional relevance to how you would really exploit, reverse engineer and attack a network or system, thus proving competence in a few key areas.

Monetization is through taking people that have both completed and/or done really well in this game and are interested in new employment, and after a few in-person meetings with the Ptaceks and Patrick, you might get a private lunch with a CTO looking to hire (in their words, IIRC). They would get finders fees for that.

I'm sure patio11 will reply, but my take: The purpose of Starfighter is to engage talented engineers long before they start searching for new jobs. When it's time for a job change, Starfighter will leverage their relationship with the player and the player's demonstrated engineering skills to connect them with employers looking for matching candidates. As high as referral fees are and as hard as great engineers are to find, this looks like a win for everybody.

What a load of marketing speak... You forgot to mention "synergy".

Thank you!

Although... I still can't tell if this is the Starfighter tech tree or the Stockfighter tech tree. I think the confusion is intentional, and I do like that. I think. :)

edit: nobody thought notch was joking about 0x10c, and this is clearly in that vein. but an AVR is a real CPU, and suddenly... mind blown?

Starfighter is the name of the company. Stockfighter is the name of the game. So there are multiple tech trees in Stockfighter, of which this post is about one. Starfighter the company doesn't have tech trees.

> The Starfighter Low-Level Tech Tree (sockpuppet.org)

I'm not sure you read this thread. Starfighter the company definitely uses technology.

edit: was your post using in-game voice? i'm totally about staying in character :)

Stockfighter is the game. Starfighter is the company. The article you quoted is technically wrong, but since the company has only one game it is conceptually right.

Blizzard (the company) is to starfighter (the company).

I signed up but I don't honestly recall what it is. Is it called "Starfighter" because it's like the excalibur game from "The Last Starfighter"?

I'm like 99% certain it's in reference to the movie "The Last Starfighter"[0] where the protagonist, an avid player of an arcade game with the same title, finds himself recruited into an alien space fleet based on his stellar performance in the game.

The parallels should hopefully be obvious: have fun playing the game. But if you stand out, it's because you've demonstrated some set of marketable skills that other organizations are looking for. If you've set the 'contact me about potential jobs' bit in your Starfighters profile, they'll spend some effort trying to land you a gig with their client companies.

[0] http://www.imdb.com/title/tt0087597/

No it is from http://www.imdb.com/title/tt0083943/ with Clint Eastwood and web browser that can be controlled with your mind.

Unfortunately the browser only accepts mind control commands in Russian, no i18n for you.

Not to speak for them, but yes...

> The better exchanges do have passwords on their FIX gateways. But the performance of a FIX login is especially important (there's often a race to start trading at the beginning of a session)

Better exchanges enable their FIX gateways long before they accept orders. They can signal their willingness to accept orders by sending everyone a message which says "we are open." Consider also that some exchanges trade products with disparate opening times. All the same applies at the close but in reverse. Better exchanges will tell you each of your orders is closed before they disconnect. Worse ones suggest you infer the same.

Yep most of the FIX connections I've seen are connected for most of the day, long outside trading hours. Tag 103 has specific error codes for the exchange being closed.

And I here thought FIX is a fictional protocol devised specifically for this game...

I didn't believe from beginning on that FIX was fictional, since if it's a real protocol (or at least very near to a real protocol) it makes programmers that are good at Stockfighter a lot more placeable in the market - and this is what Starfighter wants to make money with.

FIX really is the TCP/IP of money.

What a beautiful intro to assembly programming and reverse engineering. Very minor issues that bother me more than they should:

- Could it be that there is a whitespace missing after the " ‚óź " or is the gap in the border intentional?

- X/Z are used in the 'program structure' example without introducing them beforehand (or mentioning 'we will look at these later').

- A real RE report would certainly have mentioned all visible part numbers and the type of I/O controller. Although it is certainly not relevant to the game, it somehow bothers me that the author decided to omit this information. (hmm, maybe this was described in Section 3?)

X/Z are used in the 'program structure' example without introducing them beforehand

Probably intentional. A big part of the skill of reverse-engineering that they're introducing here is the feeling of "I don't understand what this line does, so I'll just accept it and move on, and see if I understand it later". Using X/Z before describing it is definitely in keeping with that feeling.

The whole document reads as "we're intentionally throwing you in the deep end by giving you not quite enough to understand completely, but giving you enough that you can understand with some work". It's a similar approach to Microcorruption, and to the crypto challenges. I like it.

For your #2, quoting from the link:

Loads and stores are relative to the X, Y, and Z registers, which are aliases for the 16 bit register pairs starting at r26, r28, and r30 respectively (r30 is an alias for Z)

Indeed. However, this explanation is only given after the example has already made use of these registers. As I stated, just a very minor issue... :)

I'm super stoked for Stockfighter to come out, but I'm confused about something...

If you intend for performance in Stockfighter to be used as a proxy for talent by recruiters, how do you intend to prevent cheating? Seems like it should be very easy for people to work in groups, or look up walkthroughs online.

Stockfighter generates signals about players. Those signals get fed to the Starfighter founders. We might choose to get in touch with particular players and, if they want to have a geek-to-geek chat, have a brief phone call with them. We then, if appropriate, introduce them to people who can hire them at our clients. We get paid if that introduction results in an accepted job offer.

People have asked us about a variety of ways to cheat on the games. Some of them don't strike us as even a little bit problematic, e.g. using an OSS library to access our API. (Some folks are already working on these and we're thrilled about that development.)

Some of the ways people could cheat on Stockfighter are, from the perspective of someone wanting to hire engineers, pretty awesome. If you get arbitrary code execution which busts out of an emulator written by the Ptaceks I urgently want to make your acquaintance.

Some of the other, more boring ways that one could cheat do not particularly strike me as bothersome to our business model. We're not selling certs; we're brokering introductions of candidates to businesses that want to hire them. Scamming a row out of our database doesn't meaningfully negatively affect the world, Starfighter, or our clients. I've got lots of rows.

Basically, IIRC, you're saying if someone does cheat (as in buys a good account or hires someone to kick ass for them), you human filter them anyways and it'll be pretty obvious they don't know what they're doing.

Though I was a bit confused by a statement you made. You said you'd need to beat the Turing test to automatically pass the last level of Stockfighter. But if that's true, how are you generating and validating the levels - that seems an equivalent challenge. (Unless you've made tons by hand.)

Something not previously mentioned as an answer, perhaps because its too obvious, is the existing standard hiring process is so badly broken that frankly "plays well with others" and "can successfully research obscure topics on the internet" and "knows whats important enough to cheat on" ALREADY produces an economically useful financially valuable product over the existing system. Anything better is pure gravy, and it probably won't be hard to produce something better than that lowest level.

Honestly its a big world and there are jobs for people merely smart enough to successfully reimplement based on an online guide with no supervision. Maybe 99.999% of humanity can't do that.

Or rephrased in an absolute theoretical sense its a problem, but in a relative competitive sense its not an issue.

What, like in real life?

"Legal at 35=G Inc will allow me to publish this article only if this section is not present."

I love the FIX meta humor. Order Cancel Replace Request: tag 35=G.

I can't take credit for this; an ex-HFT friend gave the name to me. :)


Having recently done a large chunk of Microcorruption, I think I get what they are going for here. Super excited.

But also a little nervous as to the timing. Like others have said, if this releases before xmas, my level of interaction with the real world may have a real impact on the most wonderful time of the year, family togetherness, etc, etc.

I'd love it if one of the founders could tell me if there's any PVP element to the low-level tech tree? What I'm really asking is if I put off playing this until some time in January, have I put myself at a disadvantage?

No. We're releasing something for people to play with before we release the actual CTF levels, to try to level the playing field a bit.

Is it too early to ask for a writeup of the connection between Real and Game economies?

If there isn't a strong tether to "real data" than this question is moot, but if that's a key part of this experiment, then I and many others will start drooling at y'alls feet pretty soon here.

I'm not going to write about our economic simulation at all, but it may be reverse-engineerable. Mad props, and infinite amounts of fake Interney money, to anyone who figures it out.

"Fake Internety money" of course actually translates into real job opportunities in this case.

What I'm really asking is if I put off playing this until some time in January, have I put myself at a disadvantage?


That's good to know, since with $dayjob, $consulting, and $family, I imagine the times that I'm able to muster enough brain cells to play this in which my time isn't already spoken for will be fleeting, but it looks awesome.

Actually, that's a sort of separate question than the GP. Are there penalties for going through it slowly and/or playing in bursts interspersed with downtime? Depending on the metrics you are looking at, that might be very hard to correctly account for.

Are there penalties for going through it slowly and/or playing in bursts interspersed with downtime?

No! That's part of the beauty of it -- the game is on 24 hours a day (well, after we get past the roaring pyroclasm I expect on the servers immediately post-launch), 365 days a year, and hundreds of simulated bots are waiting with bated breath on a hard drive somewhere on AWS for when 'kbenson (or anyone else) has 45 free minutes in the schedule.

All three of us are working parents who are familiar with the juggling that goes on. Believe me, we didn't make something you'd have to be an unemployed 22 year old to get through. (In addition to that being a poor decision from a product perspective that would be a really poor decision from a "identify as many of the best engineers in the world that we possibly can" perspective because our working hypothesis is that y'all are presumably pretty busy.)

Any predictions on how all this is going to go? Loving the throwback phrack vibe. I wonder though how much time I'm going to be able to dedicate to smashing the stack for fun and rankings. Oh, to be 13 again.

As interesting as the game is, even more interesting to me is their business model. Contingent recruiters are uniformly terrible.

To be honest, even if I didn't know them, based on their online reputations I'd expect them to be the best contingent recruiters in the country within weeks. That I completely & totally agree with their underlying philosophy on hiring makes me even more bullish.

Of course, all of that is contingent on them delivering on the game experience and delivery software products is...hard.

I'm fully expecting to vigorously pick off the low-hanging fruit from the tech trees when they're released, getting sucked into some of the harder problems on one, before bouncing between them as I get stuck and frustrated :)

I am curious if hirers will use stockfighter to hire folks low-level embedded work, or if this will be an arbitrary shibboleth for general jobs, biased toward people interested in this sort of game. I hope starfighter expands into more diverse areas of interest.

One theory bandied about is that the initial partner companies that Starfighter is working with (ie the ones looking to hire) includes a disproportionate number of financish companies such as might be found on the east coast.

I wouldn't be surprised if lots of companies in that domain would be very interested in the candidates coming out of Stockfighter, however there are so many subsystems involved in the problem environments disclosed so far that many valuable skill sets have the potential to be exercised. Part of the (general) success of both Stockfighter and Starfighter will be how well they manage to actually exercise those different skill sets.

I'm cautiously optimistic so far :)

Not so much. We chose markets because we think they're fun.

That was my impression as well.

There have been a number of comments from people who find the idea of the markets 'unfun', or just not relevant to the roles and tasks they want to be doing. My impression from what has been released so far is that there is actually a plethora of tasks/technologies/etc involved, and as such 'useful' skills will be used regardless of if you're in the finance industry.

I've heard Patrick make that very assertion.

I'm wondering if Starfighter will be a good source for consultants, or other people that don't want a continuous work schedule.

I guess you could consider this a noob question. I'd like to get into this and more low level stuff in general.


I'm an applied math guy that works in cv, image processing, and anywhere that stats & optimization can be used. Work has recently led to learning more distributed stuff, albeit simply wiring up zeroMQ with c++ or python and getting the concurrent dances right.

Is it safe to say that Microcorruption is sort of a pre-req to this? Should I muck around in there first for a bit or sign right up for starfighter? Thanks.

No, you don't need to get through Microcorruption. This is Microcorruption on a different architecture, with a more complex environment.

But I like Microcorruption too (I'm biased) and would definitely not try to talk anyone out of playing with it as well.

Interesting that their json variant uses trailing commas. Too bad that's not more common.

I was surprised to see JSON in the low level messaging of a device that is supposedly (c) 1993-2015.

Not as surprised as I was to actually work with JSON in AVR C.

Yeah, broke the immersion for me.

It's more that it's sad that the official JSON spec doesn't have that nor comments. And that quotes are superfluously mandatory on all names.


When your parser accepts trailing commas, it becomes much easier to edit your lists and objects.

In standard json, the last element in a list or object is special, in that it can't have the trailing comma. Thus you have to special case every deletion and insertion of elements, to check if it needs a comma or not.

Without this requirement, you can remove and add elements without worry, which makes it easier for hand editing, and easier to avoid bugs in code.

One of the better ways I've seen of dealing with this, generally used in SQL which is one of the less lenient languages I've seen, is to prefix new lines of the list with commas. That is, when constructing a list using multiple lines (which is where the trailing comma is most problematic), the first line is not prefixed with a comma, and all subsequent lines are.


    var foo = [
      , "bb"
      , "cc"
The usefulness of this may not be readily apparent in this simplistic example, but when the term is complex or spans multiple lines, it becomes useful both as an indicator of a new term starting, and in that identifying the end of a large term often isn't nearly as easy as identifying that start.


    var foo = {
      attr1: "foo"
      , attr2: "bar"
      , method1: function() {
      , method2: function() {
I'll admit I don't often use this technique. Most commonly it is with large custom SQL queries, which themselves are fairly uncommon for me. That said, SQL often lacks the mitigating techniques that make this less useful in common programming languages (such as computing complex terms ahead of time and assigning the result, gradual building of data structures, etc.).

That's why S-expressions are cooler. There are no commas.

Same reason we like languages that accept files with terminal newlines.

I don't think I have the skills to get very far in Stockfighter (although I'll give it a try). I wonder if there are any plans to produce an "entry-level" version? It strikes me that this would work brilliantly as a teaching tool, and could open it up to a whole new market.

I'm really hyped for this. If this is as much fun as the microcorruption CTF I'm going to be glued to my computer until I solve all of it!

I like what I'm seeing so far, AVR sounds like a fun new challenge.

Another question - if you haven't bene able to dump the code running on the Network and Mystery chips, how do you know they're AVR ?

You know what the app CPU runs, and the other 2 processors have identical pinouts on the board.

In case you haven't seen previous discussion around Starfighters: this document is fiction, describing a scenario that was invented for a game based on software reverse engineering, to be launched shortly. But one possible in-universe explanation would simply be that the three chips had the same part number.

I do understand that -- I was asking for the in-universe explanation :)

One images they observed the part number while attaching the bus sniffer.

lurking inside the 1995 handheld UI is a more sophisticated 1997-grade trading engine

I do like the sense of humour here.

Excited. But also really intimidated :)

I guess the link no longer works, the correct seems to be: http://sockpuppet.org/blog/2015/07/13/starfighter/

Is it me or this looks like an article taken from Phrack magazine or SET journal or any hacking related magazine from late 80s/early 90s?

I've been wondering what I should do to keep busy in the next month between jobs. Looks like I've found it.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact