• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

TIS-100 | Programming puzzle game from SpaceChem dev & GAF's 77th Best GOTY 2015

Fafalada

Fafracer forever
I think most people don't even consider the possibility of reaching peak-write performance approaching that problem at first(it's a pretty big departure from earlier problems), which limits the things you tend to think about.
The final cycle trick is neat, but like you said, you inevitably reach it by elimination, as there's only so many things you can write on first clock,
and when your solution is <20 instructions you'd already be in the hot/warm area of what you use in the first place
.
 

mercviper

Member
I think most people don't even consider the possibility of reaching peak-write performance approaching that problem at first(it's a pretty big departure from earlier problems), which limits the things you tend to think about.
The final cycle trick is neat, but like you said, you inevitably reach it by elimination, as there's only so many things you can write on first clock,
and when your solution is <20 instructions you'd already be in the hot/warm area of what you use in the first place
.

Yeah tbh writing image 1 and 2 at peak write performance didn't really occur to me til I tried to optimize and saw sub 1300 cycles were possible. And even then I didn't think about structuring for 2 cycles per output until I realized
I couldn't use loops to catch up
. My instruction count still isn't as low as most people (18 for img1, 27 for img2) so maybe I'm missing something in the algorithm.
 

Thraktor

Member
signal_prescaler_improvement.png


If only I could get a ten-fold improvement in performance on every optimisation attempt...
 

Durante

Member
This was a lot harder than it seemed at first, that failing node position is evil.
seqmergerblpm4.png

If there was 1 less instruction possible per node I'd have had to start from scratch.


Edit: on the other hand, I had a nice idea for this one and it worked out perfectly immediately:
subseq_extrbro6.png
 

Wensih

Member
Started playing yesterday, but this is a game I've had my eye on for some time. It's amazing. I have no programming experience, so it's been a little slow going, but I've been plucking away at it. I finished one puzzle tonight, probably very unoptimized, but it worked:

KPq5Upb.jpg
 
Started playing yesterday, but this is a game I've had my eye on for some time. It's amazing. I have no programming experience, so it's been a little slow going, but I've been plucking away at it. I finished one puzzle tonight, probably very unoptimized, but it worked:

One quick thing I can point out is that your node on the left can just be MOV RIGHT, RIGHT. You don't need to put it in ACC to move it back over.

Edit: And someone can correct me if I'm wrong but there's no reason to end a node with a JMP to the top line of the code because it'll naturally jump back to the top line once it reaches the end. I caught myself doing that a couple times after some edits and there was a vestigial JMP but I've never had anything bad happen from removing it.
 

Durante

Member
Cyan, I unlocked that recently, but I'm scared of the optimization space just looking at it :p

One quick thing I can point out is that your node on the left can just be MOV RIGHT, RIGHT. You don't need to put it in ACC to move it back over.

Edit: And someone can correct me if I'm wrong but there's no reason to end a node with a JMP to the top line of the code because it'll naturally jump back to the top line once it reaches the end. I caught myself doing that a couple times after some edits and there was a vestigial JMP but I've never had anything bad happen from removing it.
You actually save one cycle per loop by not having the JMP. The only reason I have it sometimes is if I need to ensure that two branches have equal cycle count (for timing).

(Also please link or spoiler tag solutions)
 

Makareu

Member
A quick thank you for this thread as I never had this game on my radar.
While I am not especially fond of low level programming I am enjoying this game a lot, and the room for improvement is really fascinating.
 

Wensih

Member
One quick thing I can point out is that your node on the left can just be MOV RIGHT, RIGHT. You don't need to put it in ACC to move it back over.

Edit: And someone can correct me if I'm wrong but there's no reason to end a node with a JMP to the top line of the code because it'll naturally jump back to the top line once it reaches the end. I caught myself doing that a couple times after some edits and there was a vestigial JMP but I've never had anything bad happen from removing it.

Thanks for the suggestions. That was a vestigial JMP command at the end, but I didn't know I could just write MOV X, X if I wanted to loop variables back around.
 

cptodin

Member
Oh man I sat hours on the Sequence Counter for some reason. I wanted to sum the values and get the length at the same time and it just wouldn't work. Then I approached it separately, first sum up the values in the sequence and then I tried to figure out how to get the length.
Eventually I succeeded and I am quite happy with the result:

 

Durante

Member
Character Terminal was super fun to work out. My program is kind of a kludge, but it works! Thought about doing it line by line, but couldn't come up with a way to make it work given size limitations, so it's a pixel at a time.

Durante, you should totally try this one, I think you'll like it.
I had a really neat solution which was also pretty fast (probably, no measurement)... then I noticed that you need to do automatic linewrapping and my previous attempt was basically impossible to adapt to that.

I did finish it on the second try (actually aware of the line breaking requirement). It sat at 837 (!) cycles for a while, but I managed to optimize the throughput a bit:
char_terminalxepou.png
 

Durante

Member
sig_avg_lolkyb3s.png


lol (To be fair, my goal there was to build a short program, not a fast one. Still, I didn't expect it to be that slow)


Also, I've now unlocked levels where, despite now having 51 friends who play the game, no one has completed them :/
 

Durante

Member
Ever since this terrible terrible post 1 week ago I was working on and off on different ideas (of varying degrees of insanity) for this puzzle. I've finally managed this:
sig_pattern_12315sq1.png


It still feels not entirely satisfactory though, since my actual goal was reaching a 2 cycle / input throughput (so something around 8x or so cycles). I still think it has to be possible somehow.
 

Thraktor

Member
Just completed character terminal:

char_term1.png


I'm actually quite happy with my solution, even if it is monstrously slow. It writes full lines, rather than just characters at a time, it handles line breaks neatly, and it worked exactly as I intended it to almost the first time I ran it.

I have a feeling, though, seeing everyone else's score, that writing one character at a time is actually the quicker strategy for this one. My "output" node sat at 57% idle, as you just spend so many of your cycles managing the data rather than operating on it.
 
What's with all the activity in this thread? Had only gotten to three pages between June and November, now it grew almost 7 pages in a month. Lot of people picked it up during the Winter Sale?
 

Thraktor

Member
What's with all the activity in this thread? Had only gotten to three pages between June and November, now it grew almost 7 pages in a month. Lot of people picked it up during the Winter Sale?

I don't know about anyone else, but I picked it up in the steam winter sale. I think it was the first 50% discount the game got.
 

Thraktor

Member
It cost less than 4€ on steam sale? What a steal, i think the 7€ price point is a still :p

Yeah, I think it was €3.49. I don't really buy games full price anymore, as I always have such a big backlog, and there are so many sales anyway. I imagine it's the same for a lot of people, even for games that are pretty cheap in the first place like TIS-100.
 

mrklaw

MrArseFace
Does the iOS version support keyboards, or is it touchscreen only?

Just checked - no keyboard support. It uses its own in-game keyboard which may explain that. I've not found it a major issue as you aren't tyoing huge amounts and you're often navigating between boxes which needs touch anyway.

But now you've mentioned it, having the nodes always visible full screen, and being able to navigate between them with touch (without zooming) and using an external keyboard would be nice.



Edit: just read on Reddit that unity has issues with external keyboard support unless you bring up the OS keyboard. So support in TIS might be unlikely.
 

jvm

Gamasutra.
Just checked - no keyboard support. It uses its own in-game keyboard which may explain that. I've not found it a major issue as you aren't tyoing huge amounts and you're often navigating between boxes which needs touch anyway.

But now you've mentioned it, having the nodes always visible full screen, and being able to navigate between them with touch (without zooming) and using an external keyboard would be nice.



Edit: just read on Reddit that unity has issues with external keyboard support unless you bring up the OS keyboard. So support in TIS might be unlikely.
Thanks, mrklaw. I may still bite anyway, because my laptop has been mostly for work lately, and I could more easily get into gaming (like TIS-100) on my iPad.

But, wait, that means I won't have Steam friends, right?

Curse you, platform fragmentation. Curse you.
 

Durante

Member
I saw your progress on the TIS-NET levels. Very impressive!
(Dragon's Dogma is currently hindering my own progress)
 

Gotchaye

Member
Getting settled into a new job in Europe. The job seems to basically be TIS-100, so I'm not sure I want to come back to this game even though I've got time now.
 
Just bought it and did the 2 first programs.
One question: how cicles are calculated?
edit: if also someone wants to add me to see me in the bottom of their scoreboard add me: snakethesniper
 
Just finished the last of the segment map levels. Kind of addicting.
Now I'm thinking about if I want to continue with the TIS-NET directory, or try to optimize some earlier levels. I don't think I'll be able to reach the top scores though, looks pretty intimidating.

Just bought it and did the 2 first programs.
One question: how cicles are calculated?

You mean loops? You have to use conditional jump instructions (JEZ etc.). Think about it a bit and you will get to a solution.
 
Probably means cycles.

Cycles are the time taken to execute one instruction. Usually this corresponds to a single line: a JMP command, or a JEZ, an ADD, a SWP or SAV. The exception is MOV commands, which has to do two different things: getting the value, and putting it somewhere.

If you want to see what happens in a single cycle, pushing the F6 button moves you forward by one.

Yeah sorry I misspelled cycles. Thanks!
 
I just picked this up in the Steam sale. Enjoying it so far. Looking for people to compare my results with. Add me if you like, zer0blivion.
 

mnz

Unconfirmed Member
I just had the biggest brain fart session ever in this game, glad I saved the results...
I did it eventually...

Add me on Steam (see my profile) if you want to compare results. I'm not great, though
 
This game is keeping me from doing my actual programming assignments. I had what I thought was a really elegant solution to Interrupt Handler but the cycle count is junk... I must be coming at it from the wrong direction because I don't think I could cut more than a few dozen cycles or so with my current design.

 
Finally digging into this. Need some people for the leaderboards to keep me humble.

I bought the game on GOG, so I can't see all the Steam leaderboards. :(

This game is keeping me from doing my actual programming assignments. I had what I thought was a really elegant solution to Interrupt Handler but the cycle count is junk... I must be coming at it from the wrong direction because I don't think I could cut more than a few dozen cycles or so with my current design.

Mine is about twice as fast, but still not close to being optimal. A hint general hint of what I did (maybe you already use the same approach):
Think state machines. Don't explicitly store values you don't really to.
 
I bought the game on GOG, so I can't see all the Steam leaderboards. :(



Mine is about twice as fast, but still not close to being optimal. A hint general hint of what I did (maybe you already use the same approach):
Think state machines. Don't explicitly store values you don't really to.

The approach in my current solution is actually more akin to bit masking: http://i.imgur.com/qjWajgv.png. My initial trivial solution was more state machine based but still had a bad cycle count. Gotta think on it I guess.
 
Whee, I did it!


Turns out I had a solution that was 90% of the way there; I just had some really silly unoptimized I/O. Now I'll be able to fall asleep tonight, unlike yesterday :p

Am I correct in saying that "MOV <REG> ACC" takes two cycles while "ADD <REG>" only takes one? So when you need to combine values it's more efficient to do it as early in the pipeline as possible, right?
 

Chris R

Member
FINALLY got the stupid multiplication one done. It's soooooo slow though, almost 2k cycles.

Now that it's finally done I can move on to other unfinished puzzles before I hurt my brain trying to match some of the high scores other users here have.
 
D

Deleted member 30609

Unconfirmed Member
Started playing this yesterday. Love it. Sadly, my leaderboard consists of Stump and Charlequin, so...
 
Top Bottom