Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

877507 Posts in 32868 Topics- by 24305 Members - Latest Member: orloff

May 19, 2013, 05:04:29 PM
TIGSource ForumsDeveloperFeedbackManufactoria: A Game About Putting Robots In Their Place
Pages: 1 ... 10 11 [12] 13 14 ... 26
Print
Author Topic: Manufactoria: A Game About Putting Robots In Their Place  (Read 69063 times)
FishFace
Level 0
**


View Profile Email
« Reply #165 on: May 12, 2010, 06:33:25 AM »

The only way I could fix this is by (1) modeling the machine as a theoretical construct and (2) testing it against the relevant grammars... which would pretty much take as much work as programming the rest of the game put together, I think. Or - perhaps that's a slight exaggeration - but not too far beyond the truth.

Worse - it's impossible. If you wrote such a program, it would solve the Halting problem Tongue (That is, assuming that Manufactoria is computationally equivalent to a queue machine and hence to a Turing machine)

I guess, given the finite nature of the grid provided it would technically be possible to solve, but almost certainly infeasible.
Logged
Wyrm
Level 0
**


View Profile Email
« Reply #166 on: May 12, 2010, 10:01:10 AM »

You could use random strings to test; if you have a machine which you know is always correct for any input (and does it in a reasonable time frame!), you can then throw random strings at them both and compare outputs. The only issue you would have to deal with is detecting infinite loops in user made systems, but a heuristic of 50 moves without any change to the string would catch them in my opinion. If you did this in the background you could obviously run it at a much higher speed (I assume it is the animations which take time, and not the actual computation of if it is valid or not).
Of course, this does fall down slightly further for ones which have standard input formats, although I don't think there are many of those.

More feasibly, and completely unrelated, could you code a rotate option into the selection tool? It would greatly speed up things, especially when you get halfway through a complicated mass of junctions before realising it will take less space if its rotated 90 degrees.

There was something else, but Ill have to remember it before I can post it  Huh?
Logged
PleasingFungus
Level 7
**



View Profile WWW Email
« Reply #167 on: May 12, 2010, 11:38:54 AM »

The toggle for overwriting is alright, but its still a little unnatural to use; would it be possible to run tests then instead of having "save+go back to level select"/"replay" having a third option of "don't save changes and go back to level select"? Ideally then you could paste someone else's link into the address bar and then choose to save it over what you have.
The problem is the autosave. (It runs every 15 seconds, so if you close the game without going to the save/load screen / returning to the main menu, you don't lose ALL your progress.) The game has to know whether or not you're going to overwrite the save at the moment you give it the string.

(I agree that the toggle is pretty unnatural, though. It was very much a five-minute fix.

Would total best parts/total best time on the main menu be doable?
Sure! Done.

Do you offer refunds on the amount of lost concentration, sleep and time this has so far cost me you evil evil man? :D
How about this - if you really want, I'll refund you all the money you paid me for the game. Deal?


-


I guess, given the finite nature of the grid provided it would technically be possible to solve, but almost certainly infeasible.
This is pretty much what I was getting at.


-


You could use random strings to test; if you have a machine which you know is always correct for any input (and does it in a reasonable time frame!), you can then throw random strings at them both and compare outputs. The only issue you would have to deal with is detecting infinite loops in user made systems, but a heuristic of 50 moves without any change to the string would catch them in my opinion. If you did this in the background you could obviously run it at a much higher speed (I assume it is the animations which take time, and not the actual computation of if it is valid or not).
Of course, this does fall down slightly further for ones which have standard input formats, although I don't think there are many of those.
I had a discussion with another player about detecting a non-halting machine about half the thread back (and later in email), for the purposes of a mode that would instantly run tests. The problem with your suggestion is that it only detects very simple loops - consider a case in which a robot is oscillating between a red and blue writer, for instance. The problem is not actually insolvable - there are at least two methods that can be applied. The first would be to create a list of every state (position / tape symbols) that has been entered, and, every time the robot moves, check to see if it's been in its current state before. If so, it's looping, and you should halt. This approach, however, quickly becomes prohibitively expensive both in terms of memory and computational complexity.

The second approach - which was suggested by the player I was talking with, and is apparently used in academia/industry (?) - is to run two copies of the machine at the same time, one twice as fast as the other. If they're ever in the same state at the same time, you're looping!

Anyway, that's the halting problem solved. (Take that, Alan Turing and Alonzo Church!) Your approach to determining correctness is interesting... true 'randomness' is somewhat worrying, though. Plausibly, with a nearly-correct machine, you could just retry until you got a set of tests that your machine passed... and similar problems.

More feasibly, and completely unrelated, could you code a rotate option into the selection tool? It would greatly speed up things, especially when you get halfway through a complicated mass of junctions before realising it will take less space if its rotated 90 degrees.
I probably should. (You're not the first to request it.) I'll poke at it soonish.
Logged

Beta: Starhaven! Finished games: Manufactoria! International King of Wine! [url=http://forums.tigsource.com/index
Wyrm
Level 0
**


View Profile Email
« Reply #168 on: May 12, 2010, 12:39:09 PM »

Would total best parts/total best time on the main menu be doable?
Sure! Done.
Does it only display once all levels are done? I've not done the 2 recently unlocked ones and I cannot see the total.

Your approach to determining correctness is interesting... true 'randomness' is somewhat worrying, though. Plausibly, with a nearly-correct machine, you could just retry until you got a set of tests that your machine passed... and similar problems.
I imagined it more as additional tests instead of replacement ones; while it is obviously possible to pass the tests through fluke it was mainly because sometimes I finish a machine and I'm not certain if the machine will deal with any input or if the tests just happen to not have the case which breaks it. You could also keep running a friends machine until it fails and then send them the screenshot of it failing on a specific output to prove it doesn't work :D


I remembered what else was bugging me earlier - can the conveyor belts be a little easier to read; no idea if you've ever played any civilisation game but the road networks in there are represented as a dot if there are no connections, a line from middle -> an edge if there is a connection there, etc up to a +shape for roads on 4 sides; a non essential thing obviously but one of those "wouldn't it be nice" things I thought up earlier :D
Logged
CrixOMix
Level 0
**


View Profile
« Reply #169 on: May 12, 2010, 01:04:38 PM »

Ok guys, I've pretty much hit my intelligence ceiling... I need help with Officers, Police, and Engineers. Maybe give a basic, medium, and giveaway hint for each... If you don't mind that is :D
Logged
FishFace
Level 0
**


View Profile Email
« Reply #170 on: May 12, 2010, 01:28:07 PM »

Following up on Wyrm's thought, I can never read which way the conveyors are going immediately (so I usually end up setting them as soon as I select the tool even if it already goes the right way Tongue) minor issue.

I'm not sure about random tests... but the ability to give your machines arbitrary input would be awesome for testing. Usually I want to check simple cases before I run the full gauntlet (especially nasty in Androids where at first it would only fail at the end of the first MASSIVE test Tongue)
Logged
CrixOMix
Level 0
**


View Profile
« Reply #171 on: May 12, 2010, 01:32:52 PM »

Actually I GOT engineers by myself. But the other two I have NO idea how to even approach... I mean how the heck do I find the MIDDLE of a string...? I don't even know lol
Logged
man-man
Level 0
**



View Profile
« Reply #172 on: May 12, 2010, 01:46:54 PM »

Ok guys, I've pretty much hit my intelligence ceiling... I need help with Officers, Police, and Engineers. Maybe give a basic, medium, and giveaway hint for each... If you don't mind that is :D

Officers
Basic: To add 1 to a binary string, look at the last bit. If it's zero make it a 1 and you're done, if it's 1 make it a zero and add one to the string of earlier digits
Medium: Mark the beginning with a green and the end with a yellow. Each time, read up to the yellow then add one to the substring between the green and the yellow, move the yellow back by one then read to the green and start again.
My solution (bloated and slow, it's on the list of ones to clean up... and there's a lot of cleaning up required here)

Police
Basic: If you put a marker on each end, then move them one step at a time towards each other, they'll meet in the middle.
Basic+1: You actually need 3 markers - two to meet in the middle, one to mark where the string starts.
Kinda giveawayish: In each pass you read up to the first marker (remembering the last-seen bit) then write (remembered bit) + green to move it forward. Then read to the second marker and write green + (next bit) to move it back. Read to the starting position marker and repeat. When the second marker immediately follows the first, you're done (and should replace the 2 centre markers with a yellow then read back around to the start position to remove the last marker).
Mine (also not wonderful, I've been optimising the early levels first, but it works)

Engineers
Basic: Check (remove) one bit at a time from the front and end of the string. If they're ever not equal, reject
Medium: Put a marker in at the start then branch according to the first bit. Read to the end, remembering the last bit, and if it's the same as the first then continue looping. Eventually there's either no bits left or 1 bit left (either way, accept).
Mine (one of not many from the complicated ones that I don't feel the need to make excuses for... this one isn't too shabby)
Logged
Draknek
Level 5
*****


"Alan Hazelden" for short

msn@draknek.org
View Profile WWW Email
« Reply #173 on: May 12, 2010, 02:10:01 PM »

If I mouse-over a completed level, then mouse-over an uncompleted level, it still shows the first set of completion stats.

I'm sure I found these levels easier the first time I did them. I don't know how you've got me doing them all again...
Logged

PleasingFungus
Level 7
**



View Profile WWW Email
« Reply #174 on: May 12, 2010, 02:18:06 PM »

Would total best parts/total best time on the main menu be doable?
Sure! Done.
Does it only display once all levels are done? I've not done the 2 recently unlocked ones and I cannot see the total.
Er. Possibly I failed to upload it? It should be working now.

Your approach to determining correctness is interesting... true 'randomness' is somewhat worrying, though. Plausibly, with a nearly-correct machine, you could just retry until you got a set of tests that your machine passed... and similar problems.
I imagined it more as additional tests instead of replacement ones; while it is obviously possible to pass the tests through fluke it was mainly because sometimes I finish a machine and I'm not certain if the machine will deal with any input or if the tests just happen to not have the case which breaks it. You could also keep running a friends machine until it fails and then send them the screenshot of it failing on a specific output to prove it doesn't work :D
Is that something you see yourself doing often?

I remembered what else was bugging me earlier - can the conveyor belts be a little easier to read; no idea if you've ever played any civilisation game but the road networks in there are represented as a dot if there are no connections, a line from middle -> an edge if there is a connection there, etc up to a +shape for roads on 4 sides; a non essential thing obviously but one of those "wouldn't it be nice" things I thought up earlier :D
Ahh, roads. I have some experience in that field. (From a project... about a year back now, I suppose? Wow, how time flies.)

...how exactly would you apply them to Manufactoria, though? Civilization's roads don't have a direction; conveyors do.

Following up on Wyrm's thought, I can never read which way the conveyors are going immediately (so I usually end up setting them as soon as I select the tool even if it already goes the right way Tongue) minor issue.
I'm certainly open to suggestions for an alternative!

I'm not sure about random tests... but the ability to give your machines arbitrary input would be awesome for testing. Usually I want to check simple cases before I run the full gauntlet (especially nasty in Androids where at first it would only fail at the end of the first MASSIVE test Tongue)
That does seem to be a common request. Custom levels are a solution, but not a very good one... I'll have to think about it.


-


If I mouse-over a completed level, then mouse-over an uncompleted level, it still shows the first set of completion stats.
Oops. Got distracted while adding that feature, forgot to add the line of code that would stop it from doing that. Should be fixed now.

I'm sure I found these levels easier the first time I did them. I don't know how you've got me doing them all again...
Neither am I!
Logged

Beta: Starhaven! Finished games: Manufactoria! International King of Wine! [url=http://forums.tigsource.com/index
Draknek
Level 5
*****


"Alan Hazelden" for short

msn@draknek.org
View Profile WWW Email
« Reply #175 on: May 12, 2010, 02:35:28 PM »

By the way, I saw on your devblog you were wondering about what to do with it once it's finished.

If you stick it on FlashGameLicense you deserve to make a ton of money.
Logged

FishFace
Level 0
**


View Profile Email
« Reply #176 on: May 12, 2010, 03:34:38 PM »

I'm certainly open to suggestions for an alternative!

Simplest would be to have chevrons instead of lines, I think.
Logged
PleasingFungus
Level 7
**



View Profile WWW Email
« Reply #177 on: May 12, 2010, 04:57:45 PM »

By the way, I saw on your devblog you were wondering about what to do with it once it's finished.

If you stick it on FlashGameLicense you deserve to make a ton of money.
Huh - I'd never heard of them before!

I'm certainly open to suggestions for an alternative!
Simplest would be to have chevrons instead of lines, I think.
Hm! Interesting. What would bridges look like?
Logged

Beta: Starhaven! Finished games: Manufactoria! International King of Wine! [url=http://forums.tigsource.com/index
FishFace
Level 0
**


View Profile Email
« Reply #178 on: May 12, 2010, 06:41:25 PM »

Hm! Interesting. What would bridges look like?

The same I would think - one conveyor partially obscures the other. It should work visually as long as you can see about half of a chevron on each end of the lower conveyor.

P.S. Fitting Ophanim in is a major pain...
Logged
PleasingFungus
Level 7
**



View Profile WWW Email
« Reply #179 on: May 12, 2010, 08:54:25 PM »

Hm! Interesting. What would bridges look like?
The same I would think - one conveyor partially obscures the other. It should work visually as long as you can see about half of a chevron on each end of the lower conveyor.
Ah, I see! New version up. Let me know what you think!

(Am I going to have to update all the tutorials? Agh, I probably am.)

P.S. Fitting Ophanim in is a major pain...
There's a reason it's a bonus level! (Though I guess that's not really clear yet. Well. Hm. There's a reason it will be a bonus levels, when the distinction between bonus levels and normal levels is made!)

(Are you using JamSilver's Magical Wondercomponent?)
Logged

Beta: Starhaven! Finished games: Manufactoria! International King of Wine! [url=http://forums.tigsource.com/index
Pages: 1 ... 10 11 [12] 13 14 ... 26
Print
Jump to:  

Theme orange-lt created by panic