f13.net

f13.net General Forums => Steam => Topic started by: Trippy on June 01, 2015, 02:16:35 PM



Title: TIS-100 -- from the makers of SpaceChem and Infinifactory
Post by: Trippy on June 01, 2015, 02:16:35 PM
!!!WARNING!!! EARLY ACCESS !!!WARNING!!!

http://store.steampowered.com/app/370360

Assembly language programming game. Compete with others to write the fastest and/or shortest routines.

Haven't the tried it yet but the leaderboards reminds me of the competition we had in my 68000 assembly class to write the fastest and/or shortest code to the exercises.


Title: Re: TIS-100 -- from the makers of SpaceChem and Infinifactory
Post by: Quinton on June 02, 2015, 12:36:47 AM
I love this.

Retroprogramming puzzle game on a machine that's 4x4 tiles of quirky CPUs with 14 instructions local memory.

This is probably the thinnest veneer of any of the Zachtronics engineering puzzle simulation games.

Still very nicely polished, but it's not even pretending to be anything other than a parallel programming puzzle game.

In a way, deep experience with assembly is almost a disadvantage, because the instruction set is designed to be accessible and a good set of pieces to solve puzzles with rather than a realistic instruction set.

I installed this in the morning, started poking at it, immediately took a vacation day and spent the rest of the day playing.

18/20 puzzles finished.  The two remaining ones (detecting prime numbers and sorting lists) are evil/brutal given the limitations of the machine.


Title: Re: TIS-100 -- from the makers of SpaceChem and Infinifactory
Post by: Trippy on June 02, 2015, 11:25:32 AM
In a way, deep experience with assembly is almost a disadvantage, because the instruction set is designed to be accessible and a good set of pieces to solve puzzles with rather than a realistic instruction set.
Also with the way the game is structured with limits on the number of instructions you can fit in a node, along with input/output and storage limits means you can't just cram all the instructions to solve a problem into one node like you would if you were writing a real program.

Quote
I installed this in the morning, started poking at it, immediately took a vacation day and spent the rest of the day playing.
When I got on last night to give it a try you already had 7.5 hours played at that point :awesome_for_real:


Title: Re: TIS-100 -- from the makers of SpaceChem and Infinifactory
Post by: Quinton on June 02, 2015, 08:52:37 PM
I'm having to go back and re-optimize stuff as more people are playing it and making me look bad on the histograms!


Title: Re: TIS-100 -- from the makers of SpaceChem and Infinifactory
Post by: Quinton on June 04, 2015, 03:32:19 AM
Evolution of my Prime Number Detector (spoilers):
Brute Force 612319 cycles, 5 nodes, 47 instructions

Sieve 116974 cycles, 6 nodes, 51 instructions

Parallel 19228 cycles, 9 nodes, 96 instructions

Parallel + Optimized 2/3/5 Division 5910 cycles, 9 nodes, 105 instructions


Title: Re: TIS-100 -- from the makers of SpaceChem and Infinifactory
Post by: bhodi on June 06, 2015, 08:24:57 AM
I am so goddamned bad at this game. I think I'm too visual a person. I was able to do well in infinifactory and spacechem but I just am not "getting" this. I was never great at math.

Quinton on the second (third?) level what's the adder trick to get less cycles? I'm MOV UP, ACC; ADD ACC; MOV ACC DOWN but there's a better way? wtf am I missing?


Title: Re: TIS-100 -- from the makers of SpaceChem and Infinifactory
Post by: Quinton on June 06, 2015, 06:54:35 PM
Do you mean "Signal Amplifier" or "Differential Converter"?

I'd generally aim for correctness and come back to optimize in a later pass (I solved most of the puzzles before circling back to squeeze more cycles out of 'em).  Especially for the "simpler" designs like some of the early ones, it can be a pain to really tune them (there are some where I haven't yet figured out how people have gotten their cycle count as low as they have).

The biggest piece of advice I'd have for TIS-100 is: Remember that you're programming not one computer but 10-15 tiny, limited computers, and the trick to getting the fewest cycles often involves making sure you're doing as much work in parallel as possible.  Optimizing for node count or cycle count is a bit different, but my obsession is always with lowest cycle count.

Some useful tidbits (more later, grabbing dinner):

- use adjacent nodes as storage elements
  If there's a node to the left, you can have it just "MOV RIGHT RIGHT"
  and then do a MOV ACC LEFT and later ADD LEFT or whatnot rather
  than fiddling with SWP/SAV

- use JRO to control adjacent nodes, it's a powerful instruction
L: JRO LEFT
  ADD 1
  JMP L:
  MOV ACC DOWN
  MOV 0 ACC
is a node that if you MOV 1 to it will increment ACC and if you
MOV 3 to it, it'll spit the total out below and reset ACC

- unroll loops
  if you need to send a value down 4 times it's way faster to do four
  MOV ACC DOWN or MOV 17 DOWN than build a loop -- the overhead
  of counting, comparing, branching adds up quickly


Title: Re: TIS-100 -- from the makers of SpaceChem and Infinifactory
Post by: Shannow on June 11, 2015, 11:38:20 AM
Finally a game my 82 year old, self taught programming father can enjoy...