|
man-man
|
 |
« Reply #160 on: May 11, 2010, 04:53:57 PM » |
|
It seems that may have been because I was trying to paste it into the generic save/load box on a random level, rather than the one on the level editor. Could also be why it crashes on load if level strings are passed directly to the code for loading from the save/load box of the main game. Now the oddity is that it loads a blank level, rather than the component in question. Meanwhile, another minor one... on the level "Robo-children" you can pass the tests with a machine resembling this, which has a distinct lack of anything to handle cases with an initial BRR, because the only tests that use that branch are supposed to be rejected. After checking which bits are actually used... the tests will also be passed by this one (lopped off some bits that aren't required for the test cases used)
|
|
|
|
« Last Edit: May 11, 2010, 04:58:03 PM by man-man »
|
Logged
|
|
|
|
chauncemaster
TIGBaby
|
 |
« Reply #161 on: May 11, 2010, 08:05:02 PM » |
|
I love this game! It is addicting and amazing. I've solved all the puzzles that are unlocked but it looks like the two at the bottom are still locked as in the picture below. What do I need to do to unlock them? 
|
|
|
|
|
Logged
|
|
|
|
|
PleasingFungus
|
 |
« Reply #162 on: May 11, 2010, 10:09:17 PM » |
|
It seems that may have been because I was trying to paste it into the generic save/load box on a random level, rather than the one on the level editor. Er. Yeah, I'll need to handle that as well. Could also be why it crashes on load if level strings are passed directly to the code for loading from the save/load box of the main game. ...what? -various abusable things- Yeah, I honestly expected people to notice this sooner. The thing with the verification model - a small number of fixed, pre-made tests - is that it's fundamentally broken. ANY set of tests can be passed just by 'recognizing' those tests and accepting/rejecting accordingly, rather than actually implementing the underlying rule. For trivial rules, such a recognizer will be more complex / slower than a (reasonably efficient) machine for implementing the actual rule. But for more complex rules, recognizers will naturally win out. 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. tl;dr yeah basically - I've solved all the puzzles that are unlocked but it looks like the two at the bottom are still locked as in the picture below. What do I need to do to unlock them?
 Should be working now.
|
|
|
|
|
Logged
|
|
|
|
|
YagerX
|
 |
« Reply #163 on: May 11, 2010, 11:02:52 PM » |
|
Wow, this game is soo sexy!I've just started but from what I've seen, great job so far!
|
|
|
|
|
Logged
|
|
|
|
|
Wyrm
|
 |
« Reply #164 on: May 12, 2010, 03:46:01 AM » |
|
I've solved all the puzzles that are unlocked but it looks like the two at the bottom are still locked as in the picture below. What do I need to do to unlock them?
I was going to mention that as well! :D - 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.
- Would total best parts/total best time on the main menu be doable?
- If you do go for a new forum it would certainly help with longevity from custom levels.
- Do you offer refunds on the amount of lost concentration, sleep and time this has so far cost me you evil evil man? :D
|
|
|
|
|
Logged
|
|
|
|
|
FishFace
|
 |
« 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  (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
|
Glub glub!
|
|
|
|
Wyrm
|
 |
« 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 
|
|
|
|
|
Logged
|
|
|
|
|
PleasingFungus
|
 |
« 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
|
|
|
|
|
Wyrm
|
 |
« 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
|
 |
« 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
|
 |
« 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  ) 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  )
|
|
|
|
|
Logged
|
Glub glub!
|
|
|
|
CrixOMix
|
 |
« 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
|
 |
« 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 digitsMedium: 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, rejectMedium: 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 6
"Alan Hazelden" for short
|
 |
« 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
|
 |
« 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  ) 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  ) 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
|
|
|
|
Draknek
Level 6
"Alan Hazelden" for short
|
 |
« 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
|
 |
« 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
|
Glub glub!
|
|
|
|
PleasingFungus
|
 |
« 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
|
|
|
|
|
FishFace
|
 |
« 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
|
Glub glub!
|
|
|
|
PleasingFungus
|
 |
« 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
|
|
|
|
|