Software Simulator


#1

I am curious, has anyone attempted to implement a software simulator for the TT board?

It would be interesting to have a syntax for board states and a simulator to run through them. Anything like this out there already?


#2

Yep, there’s this browser-based one, which people use for their posts in the Puzzle Solutions category.


#3

It’s timely because I am implementing now.
This project is available on here.
The key feature of my emulator is that the board size is variable.
My project is at an early stage and any suggestions are welcome!

In my implementation, I’m using a syntax for board states as same as jstumble.
For example, the following text represents this configuration.

..B.....R..
...)...>...
..<.{...(..
.>.{*>.>.).
..>.).>.>._
...<.{.>.>.
..>.{*>.>.<
...>.).>.x.
....<.{.x.<
...>.{*x.<.
....>.<.>..
.....<.....
b.b.b.r.r.r

I think this is great syntax because simple and readable.


Proof of Turing Completeness?
#4

I’d be interested in seeing (in rough order of decreasing sensibility):

  • support for different colored balls in the ball release hoppers (e.g. puzzle 50)
  • support for creating interface elements and attaching them to the values/positions/contents of bits, gear bits, or interceptors: a 7-segment display that converts bits to an integer, tagged on/off switches with user-specified meanings, etc.
  • URL or command-line parameters for a puzzle’s piece constraints: which pieces must be located where and in what orientation, and how many of each type of piece are available?
  • URL or command-line parameters for a set of automated tests of a puzzle solution, with an initial state and expected state for each test
  • warnings for piece configurations at high risk of marble egress exceptions during execution: three or four same-direction green pieces leading to a crossover, for example.
  • support for automated submission to a web service (REST? SOAP?) that records solutions and ranks them on a histogram, like you’d see in SpaceChem or other Zachtronics Industries games.
  • a mobile app that takes a photo of a game board, uses edge detect and linear hough transform to recognize the board and pieces on it, and converts board state to something that can be emailed or posted – or even submitted to the aforementioned proposed REST / SOAP API for leaderboard purposes.

I might need to go make my own actually. X__X But I’m a C# / .NET guy, not too good with C++.

Edit: Actually, serious question for Paul and Alyssa Boswell: at what point is a simulator feature-complete enough that it could cause you problems? I don’t think anybody needs a decision any time soon, but I think you’re creating retail channel partnerships and you should be a responsible partner for them. If someone creates a complicated enough simulator, a lot of the attraction of the physical game goes away. Can you help us decide on a bright line to avoid crossing so we don’t hurt your business?


#5

Looks very interesting! I’m happy to see it is cross-platform (via Qt). Good choice. :slight_smile:
I’ll be downloading and trying it today.


#6

Sounds good!

I think these two features are interesting and easy to implement.
I’ll try to implement these as “Puzzle Mode”.


#7

This is awesome, OUDON! Wow! I’m excited to see where you go with this. I’ve been wanting to try out building more complicated things, and this could be a good platform to try them out on. Nice work!


#8

mspencer, these would be really cool features. Don’t worry about hurting our business. If anything, I think making cool simulators like this would just bring more attention to it. That and…I think it’s just plain neat. So please don’t stop on our account. :slight_smile: I really appreciate your thoughtfulness, though. I guess the only line would just be if you want to sell it, then we could talk and figure out some kind of sharing situation. I’m really excited to see what you come up with!


#9

Is the assignment of () and {} intentionally swapped? For bits it seems that the parentheses “points” the same way as the bit, whereas for gear bits the brace points the way the ball will go (which is consistent with ramps though).


#10

Sorry, “this configuration” in my first post is wrong. the parentheses and the braces point the same way in TT (e.g. ‘(’ is for bits pointing left). So, the text

…B…R…
…)…>…
…<.{…(…
.>.{>.>.).
…>.).>.>._
…<.{.>.>.
…>.{
>.>.<
…>.).>.x.
…<.{.x.<
…>.{*x.<.
…>.<.>…
…<…
b.b.b.r.r.r

correspond to the following board state.


#11

This is great! I’m working on a software simulator as well, but it fills a different niche. It will run in the browser, and while also theoretically capable of handling large boards, it’ll probably hit the performance wall a lot earlier than your app. Hopefully I can post a link here within the next few weeks. I’ve got basic editing in place and am now working on the physics engine.


#12

Proud owner of the kick-starter edition since a few days, and LOVE it! Our 7-year old now reads binary numbers fluently so that alone validates the investment. But much more to come.
Once I got my head around some of the basic structures (and that process is still ongoing) my mind starts to imagine bigger projects and that’s when the board is not enough. And that’s why I found this thread.
OUDON, I tried to install your project from Git hub but failed (Mac OS X). Do you have any tips on how to get in started? (I am a beginner on Github so I may make very simple misstakes). In the terminal window I get “Permission denied (publickey)”


#13

And by the way. Would be prefectly happy to pay a licence, both for the software itself and to TT to allow perfect visual match to the original for example


#14

Thanks so much, wiklander! That’s a wonderful compliment. I’m so glad you and your 7 year old like it.


#15

I guess that the problem is occurred because of missing an ssh configuration. The easy way to avoid this problem is using an https connection instead of an ssh connection. So, please try the command git clone https://github.com/OUDON/emtumble.git.

By the way, I am trying to upload the executable of emtumble (.exe, .app). If I succeeded that, you can use emtumble just by downloading the executable.


#16

Okay it’s been two weeks, time to let people play with what I’ve been working on:

https://jessecrossen.github.io/ttsim/

The source code is here if you want to have a look:

Feedback of all kinds is appreciated!


#17

BTW, your simulator has some kind of bug. If the ball rolls along the floor, the ball gets stuck.


#18

Ah, I just tried the medium and large “standard” board configurations and I can see that the turnstiles are one row too high. I assume that’s what you’re talking about, but if not I’d love to see a screenshot.


#19

Awesome. And since that is less than 20 characters, awesome again.


#20

This is super cool!!! Well done, jcross! You made it so pretty, too. My favorite is when you add the balls to the hopper. They drop in the most satisfying way. This is really great. It makes for a great resource, too. Especially in a classroom, it could make a great demonstration tool. Do you mind if I link to it on the TT site as an educator resource?

OUDON - I know you’ve made one, too, for a different purpose. I’m excited to try it out when you have the executable ready.