Shenzhen I/O
zachtronics.com
zachtronics.com
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.
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.
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?
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.
An example, 'why won't this chip work!?', 5 hours later and a full driver written, 'oh, I just didn't turn on this one pin. now it works great!'.
Also, in relation to your last sentence, assuming that the hardware you have (resistor and capacitor values) are the same as what is in the schematic.
There's no romance in embedded development.
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!
(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.)
Update: maybe you got auto-whacked for using non-latin characters?
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.
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.
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.
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".
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.
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.
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.
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 :)
I hate to use memes in most cases, but...
SHUT UP AND TAKE MY MONEY!
Looks very, very compelling :)
(I'm Chinese and I love to make fun of my own people.)
It's awesome, probably crazy hard further on, and I'll never actually finish it, but I am happy to give Zachtronics more money!
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.
http://www.zachtronics.com/spacechem/
http://www.zachtronics.com/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.
The source article (http://www.gamasutra.com/view/news/244969/Things_we_create_t...) is worth reading.
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.
* Human Resource Machine
* Factorio
* Chromatic Supercomputer[0]
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!
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.
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.
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.
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.
Ordinarily, I'd be with you on LPs, but this is SethBling. It's not so much an LP as it is a "look at the cool stuff I built this week."
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
Speaking of which, did you know that Zach himself never beat the last level of SpaceChem?
edit: popular meaning "relating to the populous", not "widely supported"
So, yeah, Corewars, if not actual asm.
https://github.com/JohnEarnest/Octo
The documentation includes tutorial materials aimed at complete novices:
https://github.com/JohnEarnest/Octo/blob/gh-pages/docs/Begin...
- For Linux, the lessons here are good: http://asmtutor.com/
- For DOS, http://www.sizecoding.org/wiki/Getting_Started (previously posted on HN)
- There's also the Art of Assembly Language which uses "High Level Assembly Language": http://www.plantation-productions.com/Webster/
If you are looking for a fun/education activity:
- Octo / Chip-8 (as previously mentioned)
- CoreWar
- Box256
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.
If two CPUs get out of sync with each other and try to communicate via XBus, the simulation just halts.
I think the little Steam icon means SteamOS and therefore Linux.
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.
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.
... 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!
Still impressive, didn't know you could make assembly programming into a game!
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.
---
Spacechem: http://www.zachtronics.com/spacechem/
KOHCTPYKTOP: http://www.zachtronics.com/kohctpyktop-engineer-of-the-peopl...
TIS-100: http://www.zachtronics.com/tis-100/
Zachtronics games tend to take an important programming concept and distills it to a really fun and challenging core.
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!
Somebody might build an OS emulator of the "hardware," as did happen with TIS-100
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?
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.
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).