Why doesn't real embedded development work this way?! This is awesome and I want it to be real.
This is the distilled greatest moments of embedded development because in reality I spent today ~2 hours doing a code merge, ~2 hours of work logging and other bureaucracy, ~1 hour of helping testers and ~2 hours of reading schematics and hunting down hardware issues with an oscilloscope and spectrograph.
Yes. But actually the fix I'm testing didn't work, so I've spent the past 5 hours trying different things. I'm now on what I think is my final solution, so here goes another four hours of fun.
I can see why it sounds fun. 40 pages later of dense schematics that you're desperately trying to match to what you have on your desk you'd realise it's 90% frustration and 10% headache. It's like navigating a city with a map showing cracks in the pavement split into 1000 individual one page puzzle pieces and written in Chinese (sometimes literally). God forbid someone made some modifications along the way at which point you might as well call it a day and bugger off to the pub. Now THAT last bit is actually good.
I once spent days trying to figure out why a 10 hour timer on a battery charger chip was going off hours too early, leading to the device draining its battery instead of charging it. Turned out the manufacturing partner had substituted another part, functionally equivalent except for the one feature we were relying on...
I can't remember what it was that made me actually look at the chip to check the part number.
Work, I gather, though the game also includes a bunch of (to laymen) dense schematics, one of which is indeed in (what looks like) chinese. So.
All of this talk about how miserable embedded development is makes it sound like these guys need more automated tools. Is there not a fuzz testing machine for embedded electronics prototypes?
There was a bug in the game, which collaborated with a bug in NixOS to stop it from working at all.
I mailed the backtrace to support. Three minutes later, he'd mailed me back saying he'd release a patch shortly. The problem was simple, admittedly, but — Nice going!
Title of the post is wrong. Shenzhen (深圳) is a city in China spelt Shenzhen not Shenzen. (Edit: Looks like someone just fixed it.) An interesting game concept. Honestly though, even there virtually nobody codes ASM anymore... as a hardware startup founder in China I just bought the game anyway. :)
(Edit: This game is really quite good. I never could be bothered with assembly, but now I am entertained. I don't think it's super accessible to people who haven't at least dabbled in assembly before though, but it's certainly a good way to learn.)
Not one of the old guard from the socialist era, a generally good reputation / better service, and first to have relatively OK internet banking. (ie. not 'manually reconfigure your windows certificates' like some others used to be)
Depends on the microcontroller. Right now we only use ARM and cheap Arduino clones (Atmel) for sensor/effector integration, so anything Linux supports on ARM (python/lua/ruby/shell/whatever) and the Arduino stuff on Atmel. The latter are so cheap for our purposes (one finished product is $1000s, 10s of these are less than 1% of cost) that it's not worth cutting back a few cents per unit for additional hassle. We can always go lower level for efficiency, but time and maintainability are more important.
Feels like an auto-buy for me. Any developer that can make Assembly into a fun, polished game (TIS-100) is probably going to hit this one out of the park.
Zachtronics became auto-buy with me around the time of SpaceChem. Check out Infinifactory too for a different, yet familiar, feel.
Zach Barth is like the nerd whisperer. His games speak to me. Good guy, too: I've corresponded with him over something as pedestrian as Steam keys and he responded and solved it in mere minutes, if I recall.
If you're a programmer, you owe it to yourself to check out Zach's games. They very much focus on the same skills: if you like one, you'll like the other.
They are all at amazingly different levels of abstraction too. This game is probably my next buy. I have to admit I saw it yesterday and dismissed it as "some amateur is making Yet Another Programming Game that's going to be unbalanced and unfun" until I saw it was Zachtronics.
>Because let's face it, masochism is what programming is about.
True, but Zach is good at pulling out a simple representative subset for each game. There's no arcane syntax for using registers vs IO in TIS-100 for example. It's just another dest/source that works with MOV. Then he adds something outlandish and gamey like adjacent core communication. I've played some other attempts at the programming masochism genre and they struck me as fiddly attempts to cram complexity into the instructions vs the problem.
This is why I like ZT games more than other excercises in masochism like BrainFuck. They're ultimately more about using a simple, well-understood set of tools to solve difficult problems than they are about using a deliberately obstructive set of tools. The fact that the tools are so easy to understand is what draws me to it over real asm programming: nothing's worse than trying to solve a puzzle when you have the sneaking suspicion that there's a few pieces you're missing that would make your job easier if you were to only learn them.
Let the complexity emerge naturally. Because it will.
By the way, if you like ZT games, and haven't checked out the work of Eric Wastl (The Synacor Challenge, and The Advent of Code) you should do so immediately. It's not as fun now that everyone else has done it, but it's still a blast.
> This is why I like ZT games more than other excercises in masochism like BrainFuck. They're ultimately more about using a simple, well-understood set of tools to solve difficult problems than they are about using a deliberately obstructive set of tools.
I tend to feel the opposite way -- the games are written to be deliberately obstructive; that's why we call them "games". It gets frustrating pretty quickly.
Spacechem is a series of exercises in writing Befunge. I don't see how that could be characterized any other way than as "obstructive for the sake of obstructive".
But they don't feel obstructive: allow me to put it like this:
With many games of this sort, or with INTERCAL and Befunge, you are asked to build a device with broken, strange tools that don't work properly, and are designed to be as annoying as possible.
The TIS instruction set, OTOH, is perfectly well designed and clear in how it works, it's just very primitive. This is akin to BF, but BF is so low level that it's far more irritating.
Spacechem is a ZT game just like TIS-100 is. All of your problems come from the fact that each thread's cursor has to physically travel to the next instruction in a very cramped area while avoiding other instructions that may have been laid out in between. (Also, if full cursors crash into each other, your program crashes.) With real tools, Spacechem programs would all be trivial.
Feel does come into it, I guess, because I loved Manufactoria (also Befunge). Manufactoria is a lot more computational than Spacechem; your goal there is to manipulate a bitstring, not to traverse the environment for its own sake.
I guess what I'm saying is that it doesn't give you a toolkit with a bunch of weird tools and impractical designs and bizzare edge cases (looking at you, INTERCAL), it's purely, "right, here's your tools, you knoe how they work, let's see you pull this off."
Sure, it's less obviously linked to programming, but think about it: that sort of issue comes up all the time.
And just because the goal is more overtly computational in nature doesn't mean it's actually a more computational game: I wouldn't know, because it's 9 o'clock here on USEast, and I'm typing this on my phone, so I can't play the game ATM.
If you're scheduling cargo shipments, it strikes me as both easier and more "primitive" to have one tool that can load, move, and unload cargo in response to commands, and an entirely different programmable tool that issues the commands.
In Manufactoria, your bitstring exists in an abstract space. Your program is still written in Befunge, and so the execution cursor must physically travel around a 2D grid, but instructions affecting the bitstring just happen -- there are no requirements for you to have positioned the various bits within the grid.
So yes, the Befunge cursor in MFT is the command-issuing tool, and you could view the bitstring as being acted on by a separate color-blob-manipulating tool.
In Spacechem, the command "pick up object" will only work if the logic cursor, which doubles as the robot, is currently over an object. In MFT, the command "rotate right" acts on your ineffable bitstring no matter where the logic cursor happens to be.
That's probably a result of Spacechem's history: The Codex of Alchemical Engineering, the game which would become Spacechem, and to an extent Spacechem itself, focus on programming things to move physical objects.
On a related note, thank you, Zach, for only having two mechanisms, using more visual programming, and adding a sync instruction. Until you play CAE, you cannot possibly know how good you've got it.
I only heard about this game recently after I read the HN submission: "My Most Important Project was a ByteCode Interpreter", which led to an article about other simulators, which led to CoreWars, which led to an article about programming games, which mentioned TIS-100 :)
If you haven't bought TIS-100, you should do so right now. If you read HN, and are a programmer, than you're probably the sort of person who would enjoy it.
Let's see. A new game from Zachtronics, which is a clear spritiual successor to TIS-100, one of my favorite games from the comapany, an actual printable manual, and looks like it's really cool?
Indeed. I saw "Shenzhen I/O" on HN, clicked because "ooh Shenzhen!" (been there, place of dreams for hardware hobbyist!) wondering what weird startupy thing it will be. Then saw Zachtronics. That's insta-buy for me, as it has been since SpaceChem and the flash games on his website.
Think of it as a steppable debugger for a computer that has modular components. Your goal is to build circuits out of chips that are little blocks of code. Also there is a real pritable manual (which was one of the most celebrated bits from TIS-100).
To get an idea of where the game is going, it helps to have played some of the earlier works, like SpaceChem and TIS-100.
EDIT: You know, looking at some of the other earlier work, he may have been building up to this for a long time. I have n't played it, but Ruckingenur 2 sure looks like a spiritual precursor to this.
It looks like a spiritual sucessor to TIS-100, which Zach himself described as, "kind of a throwback to the kinds of games I used to make, [...] Before I started Zachtronics, before I worked with other people; just these really rough, kind of abusive engineering games."
All of Zach's games are worth playing, but if you're not familiar with his games, this may not be the best introduction. You should probably start with Infiniminer, which is the most inviting of his games, instead. If you're a fan of Zachtronics' work, you're probably opening your wallet already.
Much like From Software, Zachtronics is always making variations on the same game. However, they're the only ones making it, and they're really good at, so they have a dedicated fanbase. Many of these are programmers, because the skills and thought processes required are similar to those required in programmers: if you like one, you'll likely like the other.
HRM doesn't have the devastating difficulty that makes the Zachtronics game what it is. As for Factorio, that actually bares a stronger resembalance to modded Minecraft, particularly the classic BC/IC2 combination, with a hint of other tech mods here and there. And it doesn't have a lua-based robot mod (ComputerCraft), or any of the other really cool mods, so I don't see the point. It's not as puzzle-y as Zachtronics games, though.
> It's not as puzzle-y as Zachtronics games, though.
Factorio has layout and pipelining elements that remind me strongly of Spacechem, but taken up in complexity and scale. I've played Minecraft, but not very many mods, so I can't comment on that, but I can say that Factorio is one of the first games in a while that I can sink hours per day into, treating it as a puzzle game. To me, it's like Spacechem scaled up and with the scenarios chained together seamlessly.
Check out SethBling's let's play of FTB (feed the beast) modded minecraft. If you know who Seth is, you'll know that he's great, and this is him playing with a grab bag of minecraft mods. It's outdated, but it shows the appeal.
Mind, I haven't gotten my hands on factorio yet, so I'm judging by what I can see, but thus far, it seems strictly inferior in capability and capacity for mayhem and interesting mechanisms to minecraft modded.
I understand the appeal of Minecraft mods, and I've read about some of them...I just haven't played any (at least, not any complex ones, and not in a long time).
Let's Plays have never been interesting to me, though. Either they feel like a waste of time because I'd rather be playing, or they feel like a waste of time because the game doesn't interest me enough to want to play it.
For Factorio, I like that there's a progression. There's an end goal to the game (build a rocket and get off the planet). Mechanisms have a purpose (efficiency and multiplication of player effort).
In vanilla Minecraft, I built things like hidden bunkers that would open up holes in the ground when you push a button, just because it was cool, and I imagine I'd have a similar goal if given more tools; maybe I'd build a TNT factory that auto-loads a cannon and blows up big parts of the map. In Factorio, I'll build a huge train network as part of a pipelined production process, with each train programmed for specific routes, conditions under which it leaves specific stations, etc. The goal doesn't feel the same, and it's nice that the game itself doesn't have the same feel as Minecraft.
I've also only played vanilla Factorio, but it has official support for mods, so we'll see how flexible those end up being. I don't know much about the API that's available to developers, so I can't speculate how much they'll eventually be able to change the game.
> HRM doesn't have the devastating difficulty that makes the Zachtronics game what it is
This is true, I should mention I spent probably 2-3 hours and completed the game and most side optimizations. Definitely a solid buy for $5-10 though.
>As for Factorio, that actually bares a stronger resembalance to modded Minecraft, particularly the classic BC/IC2 combination, with a hint of other tech mods here and there.
It reeks strongly of very abstract programming notions. Routing "data", whether to use static typing (inserters) or dynamic typing (smart inserters), inlining production vs modularizing production for more complex recipes. You do have to dig a bit deeper though!
Well, of course. But it feels like there's less of a puzzle there. And it's soo much less cool than automating minecraft, especially using more primitive systems.
If you're wondering about modded minecraft, definitely check out SethBling's (unfortunately brief) let's play of FTB (feed the beast - long story) modded Minecraft. It's not terribly representative of the modern mod scene (it's evolved quite a bit since 1.2.5!) but it captures the appeal quite well.
I won't dissuade you from trying all of them - I like 'em all :)
SpaceChem will introduce the idea of step-test-debug along with the modular piping (a bit); it has been a favorite for years. TIS-100 will introduce the assembler block programming, and is notable in that it manages to be fun!
Personally, I would start with SpaceChem, as it's fun right away and stays that way for a long time. It always feels like a game, while TIS-100 can feel a bit like work sometimes :P
I'd reccomend InfiniFactory, actually. It introduces you to the step-test-debug cycle, the three legs of optimization (if you're competing for leaderboards), and the general Zachtronics design, much like SpaceChem would, minus the modular piping. However, it's much friendlier to the beginner than SpaceChem (Zach agressively playtested the learning curve, and had more experience than he did when he was making SC), while still leading up to some painfully difficult puzzles that you will probably never solve, as is the Zachtronics way.
Speaking of which, did you know that Zach himself never beat the last level of SpaceChem?
Its a game where you program microcontrollers! Basically, you are employed by a chinese company to create circuits/devices which does stuff. It starts out quite simple, making score trackers etc. Then it gets more and more complex. It's similar to TIS-100 with you having to create multiple small assembly 'programs' that communicate to make the device work as a whole. Kind of like stream programming. And then you can optimize your designs to use the least amount of power, the least amount of components etc. It's great and you should try it! :D
It's a game about programming simple hardware with a simple assembly language. It's made by the grandfather of Minecraft. All Zachtronics games are amazingly engrossing. Infinifactory is my 2nd favorite game of all time.
This is really interesting. Could someone who is familiar with this answer whether this might be a decent resource to teach students assembly language?
Depending on the age and programming knowledge of your students, Human Resource Machine may also be worth a look. It's simpler and more removed from real assembly than Shehzhen and similar games, but still teaches the concepts needed to "think in assembly".
I'd take Corewars for that. It's even more realistic than TIS-100, the last game by the company that made this, which focused on programming assembly for an imaginary computer with an instruction set designed by evil jerks, build specifically for massively parallel computation.
Depends on what level the students are and what depth you want to teach them at. It's really a puzzle game that happens to use an extremely simplified assembly language as its interface. Students would get the general flavor concepts of programming at the assembly language level but it's only coarsely similar to programming a real device. Moreover, the game is inherently multi-threaded, which adds a level of complexity.
If your students are at the primary or secondary levels, a less complicated but similar game like "Human Resource Machine" ( https://tomorrowcorporation.com/humanresourcemachine ) would probably be easier for them to grasp.
This is going to eat my weekend! Sheesh those time issues are tight. I'm about 90% certain that the only way I've made this stuff function is via carefully crafted race conditions ...
I've got a proper race condition in my current solution to the kill-switch puzzle. The output from my timeout circuit that turns off the power if no commands arrive in time is getting mixed in to the command stream in the wrong order, causing it to shut off power unnecessarily. It's a wonderful puzzle.
I almost missed that yes, it is available on Linux. When did the penguin icon get replaced with "Steam Play" on the Steam site? Are all Steam Play games Linux-compatible?
And to answer the original question, it's been like this for quite long; I'd say at least 3-4 years - that's how long I've been paying actual attention to Steam, and I don't remember ever seeing a different icon for Linux.
And having been on steam since The Bad Old Days of Wine (not all that long ago, really), I can say that we used to have a penguin, and then it got replaced with the steam logo a few months after steamos and the steam machines went on the market.
I really liked TS-100 but it refreshed the screen 60 times a second even when nothing was changing which made my laptop really hot (my normal text editors don't do that ;D). I think they used unity which probably limited their optimization options. Having said that, I'm buying this game, Zach makes the best geek games.
Very few game engines throttle other than to meet monitor refresh rate. I thought it was ridiculous to play visual novels that made my laptop heat up as well.
I think the games that developed by Zachtronics are mainly puzzle game. I have never played TIS-100 before. It's interesting game, though.
I have played other game from Zachtronics. It's called SpaceChem [1]. SpaceChem is a puzzle game which you play as a reactor engineer. The main task is transform materials into chemical products. At first glance, it's very hard to construct chemistry reactions. You know there is a pattern.
I really would recommend the games from Zachtronics.
Very unrealistic; they left out the part where you have to read a few dozen different specification sheets and reference manuals, only to discover that the parts aren't compatible.
In reality, circuits are built by making a schematic drawing, then laying out the circuit; many different decisions have to be made, and each of those steps takes days or weeks. In addition, you are probably prototyping important parts of the circuit while doing the schematic or layout; these early tests may be with physical hardware or in some simulation software. Spice simulators are more like an IDE than a video game, but they are very limited.
I am really excited for future games though. If the pattern holds up, we may just get dozens of badly written manuals and specs to decode!
... It's a bit silly that I'm excited at the prospect for properly terrible docs, but it really would add some fun to it. Just imagine if the components have undocumented features, and once in a while you get one that simply doesn't work as advertised. Beat the game? Get certified!
Yea, I laughed heartily when the boss sent me an (in-game) email saying that features X, Y, and Z aren't actually undocumented; they're right there in the Chinese version of the manual.
If it's anything like TIS-100, vaguely realistic, or at least based on real life, but taking a fair number of liberties, and ultimately focused on fun more than realism.
what's makes this game fun is the quality of the simulation environment and the instant feedback with verification. I wish I had tools like this back in computer engineering lab.
As a side note, I've been working through all the MAKE electronics books posted here a little while ago. Will this game help me in designing real life circuits?
Still impressive, didn't know you could make assembly programming into a game!
I haven't played it yet, but I've played several of Zachtronics games in the past.
They generally don't teach you technologies that exist in the real world. Real-world concepts are usually just used as a way to make the mechanics of the game more accessible (Spacechem and KOHCTPYKTOP are good examples of this)
However, their games are very programming-centric, having programming skills makes them much more accessible. Their game TIS-100 is literally just assembly programming on a made-up architecture. I wouldn't call them "educational games", but they're certainly very mentally involved.
KOHCTPYKTOP seemed like building things with transistors should work about the same way, but I've only built things with logic gates (and that, only a little). Could you not actually build circuits the way you do in the game? I've actually been thinking of buying a few thousands of transistors (2N3904) (and resistors as needed, which aren't used in the game) to see how far I could get building a (tiny) computer.
It is close to real CMOS circuits, but idealized -- I don't remember all the idealizations (and I'm really not an expert), but e.g. it'd accept a solution that depends on a race condition working out deterministically.
Not directly, as other posters have said. However there are certainly important problem solving skills that you learn from playing Zachtronic games (like this one). It's not a straight up educational game (like those poorly disguised kid games), but I would certainly put it on a list of games that do more good than harm.
Questions like this aren't uncommon, but a lot of people find it very frustrating.
A fantastic small developer makes what looks like another amazing game, and as soon as it's out people are looking for open-source clones so they don't have to pay.
On a form full of professional developers, who usually get paid for making software.
That may not be what was meant, but the it has to be open source or I don't care posts are not constructive. Real developers like the guys who made Threes get screwed over by this kind of stuff.
Can't we just appreciate a cool game someone made?
>people are looking for open-source clones so they don't have to pay.
I can't speak for others, but you are wrong on this point when it comes to why I want free software (FLOSS) games or any software. I want it so that I can see what's going on underneath and to play with it myself. I would be happy to pay to get a copy of the source code (under a free software license).
This game ought to be quite intriguing internally for any programmer who's read about it. It's full of stuff that's simply not common in mainstream games.
Please don't try to say that the desire for FLOSS is just about getting free stuff. It's not, and it does a disservice to people who would be happy to pay for a FLOSS version, or just programmers wishing to learn more and build upon the work of others.
And yes, it can be appreciated. But there's no harm in saying I'd appreciate it a lot more if it came with the freedom I would like.
I can definitely understand wanting to see the guts, sadly I have no faith that's what the vast majority of people would do with it. I've met far too many people who just want free stuff and seem almost offended they have to pay for things. Those who were like that and ask for FOSS I think were just using it as a cover for their greed.
That's not a real FOSS believer. I know that.
I would completely understand releasing the source to a game after a few years when it's not making as much money. I don't see why any developer would do it as soon as the game comes out (ignoring the fact that this game is in early release and not finished).
Because it is a video game, which are usually not OS, and is available on all platforms. It it was OS, you would know, and the maker wouldn't be charging for it on Steam.
Thank you for your response. I know open source games aren't the norm, but they do exist and are something to be encouraged and discovered. For example, consider Quadrilateral Cowboy[0], which is a recent game made available on all platforms, for sale on Steam, and open source. In particular for SHENZHEN I/O, this is a game all about coding! It's seem reasonable to consider that it might be open source and if not, to want strongly for it as a natural extension of the game and so to wonder what similar games exist that are modifiable. Regardless, I do disagree with discouraging discussion around open source software, original or alternative, commercial or otherwise, and was a little saddened to be downvoted for it on Hacker News. I appreciate your civility and consideration.
I wouldn't read much into the downvote. People tend to get tired of what has been coloquially termed the "middlebrow dismissal" which plagues HN a bit. No doubt your comment was misinterpreted as such.
If we're lucky, we'll see some open source on this, but probably only in as far as it directly makes the game more fun. Or harder. You can likely mod the game quite a bit though, as the Content folder is full of plain text code. (I'm assuming .cso files are compiled glsl code?)
And thanks for the reminder for Quadrilateral Cowboy; I have no idea why I don't have this in my library yet. I don't think I've heard anything negative about it from anyone, and it looks like an absolute blast!
Steam says I've played 15 hours.
Send hel--more microelectronics.
It's TIS-100, but with a native multiply! and unsynchronized broadcast! and digit get/set!
Still supremely difficult.