Manufactoid is probably one of my favorite games that I’ve made; in it, you must build a factory to assemble blocks into different products, with each product being a separate puzzle. It’s most definitely a game for engineers, as it requires a you to both think like an engineer and write Lua code to control your factory. If you’re okay with a little programming, though, you shouldn’t have any problem getting past the learning curve and might even enjoy the game.
There’s a good chance that it’ll be confusing at first, which is why I went through the effort of writing documentation, which can be found in your start menu after installing. It’s relatively terse, yet explains the basic game mechanics and acts as a reference for both Lua and the factory components.
How do you advance through the levels? I finished the first level (transporting from left to right, with blue and green switched), and it says “Congratulations, you shipped the product,” but I am then left at the factory screen. Any suggestion on how to get to the next level?
To continue on, you close the window. That brings you back to the main menu. It took me a while to figure that out, too.
Awesome game !!! However copy/paste in code editor would be very helpful.
hi, i can’t seem to beat level 2 :S any help?
Use glue!
I, like many others, found your site via Hackaday. While I enjoyed the Ruckingenur games a lot, Manufactoid takes the cake! Are there any plans to expand this game? Allowing for easier script editing (copy/paste as mentioned before) or allowing the use of an external editor would be lovely. This game has given me much enjoyment, and I would love to see it continued and improved.
Hey, I’ve been playing and enjoying the first 4 or so levels of Manufactoid, but I’ve got a question about the behaviour of the game (possibly a bug!).
In the documentation an example is given where “count = count + 1 — count now is 1” (from the Variables section). If I were to do this in say an IF loop dependant on a sensor_x.read() == true, on a 1x speed conveyor a single block would trigger the IF statement so many times in the time it takes to clear the sensors range that ‘count’ equals about 10 (initialised at 0). Is this normal behaviour, and should I just go back and think about it and stop being such a newbie?
It’s a bit of a problem really as I’m stuck trying out a solution to mission 5 involving a grabber (probably way more elaborate than needs be!) but the multiple triggering of IF statements which depend on sensor_x.read()’s is making it very difficult!
Thanks
DrRickDaglessMD: This is normal behavior; it is simply taking more than one “cycle” for the sensor to be cleared. You can turn this into a single count per object that passes by using a boolean variable in conjunction with the sensor.
if sensor_x.read() and not lock then
lock = true
count = count + 1
end
if not sensor_x.read() and lock then
lock = false
end
This will only increase every time a new block passes by (assuming there is a big enough gap between blocks to trigger the second condition!).
Hey, Thanks Zach! And thanks for all these games, they’re the first I’ve really gotten into for a long time.
This game is really a great fun, thanks Zach 🙂
But the last level (Death Star) does not “accept” my construction for delivery. But it looks like it should. The Death Star simply stays withing the box for delivery, blocking it for the next ship.
An error? Or did you think none could solve it and so the check routine is not implemented? 😉
I have a solution file to the Death Star level that works with the currently available installer, so I would double-check your solution. If you haven’t glued every piece to at least one other piece in the product, it won’t be properly recognized. Feel free to send your solution to zachbarth@gmail.com, regardless of if you manage to fix it; I only know of one other person who has solved this level, and I would love to see your solution!
Honestly, the death star level wasn’t that complicated if you stopped to think about it first.
I solved it the way I solved most of the higher levels, with a count of blocks for several subassemblies.
I discovered a cool way to count blocks off an incoming conveyor early on, you set up a line of pushers, one for each block you want, and trigger them off a sensor at the end. Since the sensor points toward the conveyor, not only does it successfully count when you’ve got enough, it keeps the factory floor “clean” so you have room to work, preventing more boxes from arriving before you are ready for them.
My deathstar solution uses this method, and a sub-assembly mindset to build the 5 “rows” of the death star and then put them together. Two of the “rows” are built right on the delivery zone, the other three are built separately and attached one at a time.
Hello! Could anybody tell me how can i make a grabber shorter than 17 units? I’ve already tried the whole keyboard and mouse but nothing does it. And the same for rotating it.
dpd –> To my knowladge, there is no way to adjust the game properties of the different parts, you can only program them. The only way to change them would be to go into the game code and change them there.
I looked into the savegames and it looks that it really cannot be rotated (otherwise the direction would be written in the save file, but it isn’t), but its length is saved, and for me that means it can be changed during gameplay. I can’t get it. The height of a map is 22 units and you say that all grabbers must be 18 units long? (not 17, sorry) If it’s true, than it will make things a bit harder…
Thx anyway.
dqd –> Like I said, to my knowladge, there is no way to adjust the size of parts in the game (I may be mistaken). The game is programmed to move the arm between 0 and 18 on command. So making it bigger would require a code tweek (Zach, please correct me if I’m wrong). But that is a good idea for something like the grabber. This all reminds me of Roblox, which uses Lua.
Hello everybody!
At fist I’d like to thank you Zach, for making these games, I like them very much. I’ve always wanted to make a game like these, but I don’t have the patience and knowledge (but I’m learning). And congratulations for the prize!
So what I wanted to say that I made a level editor for this game. Okay, it’s just a console application, but it’s fairly easy to use (it creates a level from a saved game). You can’t make everything with it (you can only use red, white, green and blue blocks, and no converter yet), but they can be implemented in like no time.
If anyone interested, I can send you the program, and tell you how to use it.
Great Game, quite fun to play. Just sad there weren’t more levels.
One thing that bugged me was the fact that the grabbers were so long… made it impractical to use them for me. So I finished all the levels never using one…. except on an earlier level as a novelty.
The DeathStar level was quite fun to do as well, but very doable.
How do i use glue for level 2? It doesnt have it in the thing on the right!
It would be helpful if there was a sleep(ms) function available so delays could be added.
yeah I finish the death star… with 14 sprayer, 13 pusher, and 5 sensor 28 function ^^.
Good game, more lvl please :D.
file :
http://cartry.julien.free.fr/machine/star.sav
got a game crashing bug… involving different speeds, and unglued blocks inside eachother… you can mail me for the save.
for some reason I can’t get my grabber to work for lvl3
here is my code:
sprayer_0.spray()
sprayer_1.spray()
if sensor_0.read() then
grabber_0.grab()
grabber_0.move_to(7)
grabber_0.release()
grabber_0.move_to(5)
number = 1
end
Wooo beat deathstar~
14 pushers, 10 sprayer, 3 sensors
http://gau.twinight.net/art/deathstar.sav
wow you game is so great, please release an update or the sourcecode or andything, because there are bugs.
please make the “hide code” and “view code” button at the same position, so that i do not have to move the mouse so far for a quick view.
The internal text editor sucks, please let me use my own editor. I found out that i can edit the savegames directly, but i have to count my lines.
I want programmable conveyers (on/off)
I want short Grabbers
The grabber should not loose its boxes, when it is transporting them over conveyers
I want diagonal sensors, so that i can directy use the signal from the sensor for the pusher.
You Game is great. Recently I found your Page on the Internet, and all games I tried from here are Great.
Could I get a direction here from anyone please… Thanks…
So in the first level, is there a way to solve it without making the blue or green blocks go aroung the other’s catcher?
here’s what I mean:
[start level code]
widgets.lvl
b, 2, 4, 0, 8, 1, 5
b, 10, 4, 0, 8, 1, 5
b, 18, 4, 0, 4, 1, 5
b, 2, 10, 0, 8, 1, 5
b, 2, 16, 0, 8, 1, 5
b, 10, 10, 0, 8, 1, 5
b, 10, 16, 0, 8, 1, 5
b, 18, 16, 0, 4, 2, 5
b, 18, 20, 0, 4, 1, 5
b, 22, 20, 0, 2, 1, 5
b, 24, 20, 0, 1, 1, 5
b, 25, 13, 0, 8, 0, 5
b, 25, 11, 0, 2, 0, 5
b, 24, 10, 0, 2, 3, 5
b, 18, 10, 0, 4, 2, 5
b, 18, 14, 0, 4, 1, 5
b, 22, 14, 0, 4, 2, 5
CODE
1
— Initialization Code Goes Here
1
— Every-cycle Code Goes Here
[end level code]
* In other words, is there a way to use a sensor and detect which color the block is, and then use a pusher?
just put all blocks on the same belt with a sort of hole at each “catcher”:
(90 degrees twisted)
# = belt, @ = catcher, < = here the blocks come from @@@ @@@ @@@ @@### @### @### < @@@ @@@ @@@ the blocks come into the holes, if it's the right color it will be gone, if not it will be pushed further by the next block. Believe me, it works, if you understand it.
that “1.” has to be a #
If anyone wants to check out my level here it is:
"motorbikes.lvl":http://www.mediafire.com/?sharekey=5a005b4c354d2fdc36df4e8dca141969e04e75f6e8ebb871
the top comment should reference:
http://www.mediafire.com/?sharekey=5a005b4c354d2fdc36df4e8dca141969e04e75f6e8ebb871
Hey zach I’m a real noob but I love this game. my friend got me started and gave me the basics (ive never done any sort of programing before) im hooked man its so fun. i beat the game last night. I didnt use the grabber on the deathstar I only used 5 pushers and 8 sprayers. I beat the tank level only with sprayers! its so fun. will there be any more level’s soon?
I have no plans to make new Manufactoid levels, but maybe I will run a contest soon…
Stay tuned; you’ll see it on the front page if it happens.
“while 1 do end ”
stopped program and crashed all my work :((
how to write binary counter simply?
So I figured out that you can edit one of the saved level files to create your own levels. However, the game loads them correctly and plays them correctly, but I can’t exit the level. Does any one no why this is? Is there just an error in the program because I added more then the original levels?
Also if any one else has made levels I would love to see them! Post them or email them to me plz 🙂
If any one is interested, I have created 12 extra levels for this game. Shoot a text up or send me an email at bullo104@mail.chapman.edu
Ill send them too you for free 😛
wstorm88:”While 1 do end”? Are you TRYING to crash your computer?
Binary counter: Zach explained that already, near the top of this page, on 20/10/08. It’s actually an integer counter, but surely you can fix that?
David: There is an “elegant” solution to level 1; just set up conveyor belts so that the blue widget goes around the green target (to the right) and then back to its own target. No intersection; you win.
cyberjacob: That won’t work because the grabber takes a short while to transport the blocks from one point to another. You have to use read() to check whether it has arrived or not. Personally I think grabbers are more trouble than they’re worth and I stick to pushers, especially since I’ve discovered that allowing parts to fall off the end of the conveyor belt and putting a sensor 2 (or 3 or more) spaces further and pushers at the right locations allows you to split a stream of parts in half (or thirds or more), without the need for diagonal sensors.
Josh: Patch me in. I wanna see those levels.
PS: David, your mediafire level is gone. Mediafire musta deleted it because it wasn’t used enough.
Josh sent me a copy of his extra levels and I’ve put them up for hosting here: http://www.xmission.com/~tyrecius/manufactoid-levels-cactus-cooler.zip
Just extract that into your manufactoid directory and it will add the levels to the game. When you next play, they’ll be listed alongside the normal levels. They increase in difficulty as the normal levels do and are often a more complicated variation on one of the original levels. I’ve managed to beat all but the last of the new levels, and they are awesome!
Wow, those levels are amazing, I also got stuck on the AT-AT and AT-ST levels. I wish more people would make more levels for this or prehaps its time for a new and improved version of the game?
I just wanted to thank you for this wonderful game. It’s been a long time since I had this much fun programming. 🙂
Hey im running windows 7 and everything works except when you try to load something. nothing pop’s up. you cant even click the button nothing happens
Yeah i get the same thing for windows 7. Nothing loads 🙁
All right, so I got bored last weekend and started to think of games I wanted to play and well this one struck my head again. As before I have created some levels, which some people liked. Well I am back and will be creating more for you.
Some things to expect are:
House hold objects,
Factory gone wrong,
intense multi assembly projects,
some random stuff,
and much more…
I am working on one set now and should have it done in a week or so. I will keep you all posted. Hopefully some one can upload them like last time 🙂
Until then, keep those minds a thinking 😛
ok, their not completed yet, but i do have a lot of levels to look at. If any one is interested let me know and ill you send you the files.
Around the house and Factory
Levels are mostly completed.
umm, i found no documentation in the start menu, and yes i looked in the correct folder.
“Load” button doesn’t work for me too on Windows 7.
Okay, yes I’m stuck on level 2, because I can’t get my sprayer to just always spray. I put the spray function in the initialization code section but when I run my factory it just sprays for one cycle. The parts list said you could get a sprayer to alwats spray with just one line in that section, but I really don’t understand how and I really want to.
Databug, the spray function doesn’t turn on the sprayer permanently. If you want it to always be spraying, put the spray function inside the every cycle section.
More generally, as a fan of Manufactoid and the other Games for Engineers, I’ve been working on a spiritual successor which is nearly done. If any other fans want to do some level design or playtesting or art, please let me know.
My email address username is tyrecius. It is at the gmail domain.
I have made a library for Manufactoid that allows you to display 3-digit integers. It uses indicators 0..45.
To use it in your program, put
dofile "15seg.lua"
in Initialization Code and
show_number(n);
in Every-cycle Code, where n is what you want to display. It must be integer between 0 and 999, otherwise the error may occur.
Library (15seg.lua) and example (15seg.sav):
http://filestore.com.ua/?d=0D0FAAD19
NOTE: 15seg.lua must be placed in …/Zachtronics Industries/Manufactoid/
Forgot to post screenshot:
Hey dudes got anyoen a solution for my problem.
Like DrRickDaglessMD I got the problem that my if functions run more then once cycl like:
if x = = 1 then
y = y+1
end
i get there y = 41
anyone got a clue how to make the if function just work one times?
Try this:
done = false
if not done
if x == 1
y = y + 1
done = true
end
end
Note that I’m not up on Lua syntax, but you should get the right idea from this.
I cant find the Lua Doumentation! Stuck on level 2!
I had to look for the documentation in the game folder (win7) I uploaded a video to promote this awesome game. It’s not amazing or anything but it looks cool 😀 http://www.youtube.com/watch?v=YR0ByakYkDo
Ok well like most people said, load button won’t do anything for me either on Win7 (I’m on x64) I tried various compatibility options but never could have it work. I tried modifying the level file so it can make my save pop when I start the level but it didn’t work either. Well at least I could retrieve my code.