🌍 Get the Game Courses Bundle 3x1! game.courses/code-monkey-bundle/ (Includes Steam Keys for my games as a FREE bonus!) 💬 Factory Automation Game! I've been working on this for a month, did you join me on the Livestream? Make sure you don't miss whatever mini-game I work on next, hit the bell icon! 👍 You can play the game on the Steam App or Download the Project Files, hope you like it! 🌐 Have you found the videos Helpful and Valuable? ❤️ Get my Courses unitycodemonkey.com/courses or my Steam Games 🎮 unitycodemonkey.com/gamebundle
This game reminds me of the old Dune game. it would have been interesting to add the hidden resources and use leaflets to find enemies to destroy them and you to defend them. My opinion is that you can use this idea to simulate a computer - it could be used in the learning process for schoolchildren and you could put it online. In the end, the work done and the number of hours depends a lot on what you have.
Do you have a tutorial of how to make this game from scratch? I would love to take it. Also, in the background you show a top down game on Steam that looks really good. It’s the game in the background at 0:37. Do you have a tutorial of how to make that from scratch? I would love to take both the factory tutorial and the tutorial of that game in Steam. Thanks!
@@gfujigo Most of the videos on the Grid system playlist are step by step tutorials which is what this game is based on ruclips.net/p/PLzDRvYVwl53uhO8yhqxcyjDImRjO9W722 That's the Wash your Hands game ruclips.net/video/q9pe-wH7eZ8/видео.html
There's no game that i want to play, it basic on factoric but the game purpose isn't my thought because it not enough like a chip layout generation program, that can held out put lot of different size of retangle in to a one small square with high density, that can make a little change and regenrate, that to let player like the chip designer, more density and look awesome and give a written line to add some parts more without redo move parts all times hand by hand
True, super helpful stuff. I'm sure he's got them stored locally too, so it won't lost forever. (I made that mistake with some stuff published to a website, they had exclusive rights for publishing, so I didn't have it hosted on my own site, and it was only stored through their editor. RIP).
Me: Struggling for hours to instantiate an object and populate one of it's variables Code Monkey: So I'll just make a 3D Factorio template in a couple of days...
@@CodeMonkeyUnity and constant practise. I'm finding myself saying "I knew how to do this 4 years ago" pretty often after taking a bit of a break from gamedev. Luckily your videos are here to my rescue.
Survivor Squad, Game Corp DX, Blueprint Tycoon, Ninja Tycoon, and Battle Royale Tycoon. I bought these 5 of your games before going to University for Computer Science. Now that I'm finishing my degree and making my foray into Game Development, you've been the most helpful person on the planet. Thank you, for your great games, and your incredible teaching!
The way you explain how you made your game can basically amount for everything I've learned in unity for 2 years. Including stuff I haven't learned yet.
@@CodeMonkeyUnity I absolutely won't!! Watching your videos pushes me forward and thanks to people like you, today I know a lot more than I did a month ago.
It's a great overview of how Factorio might be working, or maybe how to do something like that in a different genre (RPG game with some small homebase), but I still want to point out that the WHOLE selling point of Factorio is its scale.
I've been making a factory game like this and making devlogs. I'm pretty sure I'm well over 20 hours by now... It's super inspiring watching you work though :)
12:50 🥺 You're breaking my heart 💔 I think this is an excellent series! It would be interesting to see "where are they now" for these games after your own videos.
When I started watching this I already had the impression "this guy really knows what he's doing", then you mentioned "...in my game Blueprint Tycoon" and I went "ah, now I know why, he already made a well done game, no wonder then" xD
I think some people would like to watch full uncut (even if not commented) project creation, like this factory game project. At least I would be interested :D
for proper FIFO-traffic-jams, you split belts into [lines] (strings of belts/inserters, without merging/splitting branches). your runtime code only deals in lines, lists of the same moving items, these are belts (exclusive-)OR inserters of the same speed. Only your editor deals in elements of lines, that ultimately end up editing lines. A line ends where multiple things output to the same spot. A line ends, where 2 inserters grab from the same spot, OR where 1 inserter grabs from a belt. A line ends, when its string of linked belts/inserters loops back to itself. above 2 conditions may change with every placed/removed item. you may want to also artificially split lines geographically by world-chunks , so that every chunk of game world knows what likes it contains, and 1 line is fully contained in a chunk. this lets us modify and LOD lines faster. adding a bellt (or many items) may split a line in 2 lines. removing a belt may split a line in 2 lines. removing a bellt (or many items) may merge 2 lines into 1 line. (1 location changes, to only have 1 inoput, identical to its output) same for changing the speed of an item. each line starting point queues/priorizes items from its inputs. each line is a FIFO queue, simple to code. its output may be "full", which may push the voids to the inout of its queue, where they then may get filled. a "line is full" flag may also speed up code as a bounding condition.
this is cool, thanks for the write up. I was pondering how DSP did some of their processing. Apparently they do most of this in a compute shader which allows them to process whole planets of factories in real time. That seems doable. I stumbled when I imagined how they might accomplish sushi belts (belts with a mixed set of items). I was hoping the whole thing was compressible (IE I could process 10 ticks without processing 1 tick at a time) but the sushi belts pretty much squashed that thinking, I really couldn't come up with a solution that did not require every tick processing. But again if you're doing in a compute shader you have tons of computational room to do a huge amount of factories. This topic is so fascinating. If anyone has any online white papers on the subject or more discussion how to do this well I would love to see it.
Wait, Blueprint Tycoon was one of yours? It's been a while since I've got and played it, long before I got to know your RUclips channel, but I remember having a lot of fun playing it. Nice.
Wow this is fantastic! I have recently discovered ypur channel and i even have tried making my own game, but it is much harder than i have expected. I know C# quite well but even with that i feel lack in some areas. What are some good videos of yours to start understanding how to write code for unity and how to solve common problems? Thank you for your work, you are a true legend!
For the absolute basics you can start here ruclips.net/video/E6A4WvsDeLE/видео.html Then a refresher on C# basics here ruclips.net/video/IFayQioG71A/видео.html After that just browse for a simple video that interests you and try to follow that, maybe the video on Flappy Bird which takes the game from start to finish. Best of luck!
Always when you upload a new video like this when you make a game I always try to make it by myself before watching the video and then watch your video and compare them and I always find things what you did in a much optimized and simpler way than me and I learnt a lot of things from you like this. Thanks for the awesome videos, they are really helpful. Sorry for grammar mistakes I'm hungarian and I'm just learning english. And now if I'm think about it, this is a nice way to learn english too because you are speak english.
Your English is great! Yup watching videos and writing comments is an excellent way to learn, for me I learned English pretty much by watching Cartoon Network and writing code!
This is a great video. I am playing a bit with the code and I can see that the safety break to 1000 iterations, limits the size of how big the belt system can get over time. I wonder if there is a better way to check for loops in the belts (which is not wrong in principle) without incurring in an actual infinite loop in the code. Do you have any suggestions on this matter?
OH! Somehow until now I've been completely oblivious to the fact that Blueprint Tycoon is by you and I kept wondering why I occasionally get your vids recommended.
13:35 How did you make that blue grid layer that appears when you are about to build something showing where you can build and where you cannot? Thank you
I remember running into a similar problem to yours while trying to recreate baba is you's block push system, and I did it in a different manner to you, but this seems pretty smart :) (btw, it'd be cool if you recreated those sorts of systems so that it's scalable and cool, maybe for a series or something)
@@foamtoaster9742 I used a recursive function that checked if the object next to itself had a Push script attached, then ran the function on that. It checked every object in the line and then executed if it found nothing. I think mine is better for that situation and his is better for this one tho :)
I'm so glad you made this video, I'm not really playing these type of games, but one meme started going around in a certain community and I want to join and making a meme factory game will be perfect. Why factory game? Because the meme is one gif that's evolving all the time, and someone made it so you can spam it on discord and it looks like a vertical conveyor belt, is it a stupid idea? Yes, but I can try this genre at least
Is the conveyor belt class derived from monobehaviour? and are they directly attached to the object in the scene? The problem I always have is, that each object has its own script that’s constantly being updated which causes massive performance problems after 60-80 belts in the scene each updating an items position. I know it’s probably better to only call an update on an event like if an item appears on the belt or is moved to the next but, the only way I know how to check for those events are with collider or bounds which again is performance heavy at least on my pc. I’ve tried implementing a system in ecs but god that was a headache. I watched your section on the belt system and it’s perfect for what I’m trying to do, I’m just curious if the conveyor class is pure data or a mono behavior. Any help or thoughts would be awesome. Thanks
The Belt itself doesn't have an Update logic. The moving logic is on the Belt System which tells the belts to move whatever is on them and the Belt System itself only runs on the Time Tick System. So the belt logic updates 5 times per second, not every frame. The Time Tick system is super useful and something I've used in most of my games, I covered it in a video quite a while ago ruclips.net/video/NFvmfoRnarY/видео.html
@@CodeMonkeyUnity Ah I get the drift now, thanks for that, completely changed my thought process on the system I have. I was researching other conveyor belt systems in other games and I read on the factorio forum that they use a chain system, like every belt is part of a chain that has a length. I've been trying to understand why they do that. I can see how having a chain with a series of positions makes it easier to determine the items path and directions on the belt but my question is does a chain really improve performance or not? I have been trying to keep things as simple as possible yet not to a point where I'm avoiding future problems. lol I know I ask allot of questions but I am trying to soak up as much knowledge about this subject as possible, especially from the person that who taught me how to code allot of things. Having another programmer to talk too helps me understand concepts and Theory's allot better.
@@chrisjulch561 Yes having everything organized into chains/paths and only doing heavy logic on the front is the way to go, it greatly improves performance since you don't need to worry about 90% of belts, just move them automatically.
This is amazing like always. It bet it feels just good to be able to create something that you visualize with skills you inherited over the years aka programming/game designing in this case and this result :D I have one question btw, I can some depth of field and blurry corners, what settings did you tweak in post processing to achieve it and that level of Polish at the end?
Yup being able to create any game genre I can think of is a very awesome thing! For the depth of field, it's just making it a small non-blurred section so it kind of gives it a tilt shift sort of look. You can download the project files to inspect the exact settings.
while watching this video, i thought of a game idea like factorio in which there is infinite progression with procedurally generated ore types/names, and compact machines within compact machines. hopefully nobody beats me to making this game a reality.
You would think a game can't make a performant factory game in unity, but Dyson Sphere Program exists. Fortresscraft Evolved also exists, but that game isn't as performant late game. It could be though if it did some multithreading though
I was wondering how to achieve a smoother movement of the items on the belt. At the moment looks like they get pushed from one belt item to another instead. Any suggestion?
New Subscriber here. I love the look of this game and I would love to be able to make a game like this but my brain doesn't work like that. Thanks for showing us this game.
@@CodeMonkeyUnity It does happen with any lanuage but I would suggest unity have a way to detect infinte loops and throw an optional error instead of freezing the whole editor.
Any chance we could get a macOS build of the Code Monkey app? I do all of my development work (incl. Unity) on a Mac. If it's a matter of needing help to port things, I can potentially do that. :)
Hey, as always amazing work! Can you tell me how to place the gold nodes (resources) in editor? In my game i would like to have a hidden resources on grid wchich will be loaded into game. Thanks in advance.
This is awesome! How would you be able to make buildings cost a specific amount on place? Like a conveyor belt costs 5 money, whereas an assembler will cost 10
@@CodeMonkeyUnity How would this happen? Like, how would I reference the cost in the Scriptable Object within the Resource Manager, and make it subtract the money before spawning?
Not sure if it's asked but you skimmed over "drew some moving arrows for belts", how did you do that? It really looks like an arrow is spawned and travels along the belt. Well done!
The texture is just a single arrow pointing right on a dark grey background with the texture set to repeat. The "animation" is handled in the shader, just connecting the Time node to the Tilling and Offset node. All the belts use the same texture and shader at the same speed so it all connects perfectly
@@CodeMonkeyUnity I was thinking it was something along that line. Very well executed! Also love how you show how all your experience adds up as this is very much the case in all programming (as long as you keep learning and challenging yourself). It's so direct with your small game modules which gets that point across very effectively and visually!
Making a similar game right now and is wondering which is a more effective design. Putting belt logic on belt or belt logic on item? I'm hoping to be able to extend it with multiple item per belt & multiple belt speed later
Couldn't you make a simple "bool stop = false" variable on every item on an item belt that switches to true whenever the item in front stops or there is no belt in front of it, instead of making that overly complicated path define, merge and split system? (Probably also more performant) Just a random thought. EDIT: After finishing the video, I think even better would be to not have the objects move at all by default. Instead, adjacent objects can request from another object to move to towards them. A belt would move the object behind it towards it with a priority of e.g. 1, while the assembler would move the item towards it with a priority of 10. That would remove the need for extractors/inserters. That would even allow extraction from building to storage, and every object could have its own speed. (This could also be combined with stop system from above).
That still has the same problem which depends on the order of your testing. If you test the second item, it wont move because of the one in front has an item, the items would only move if there's a gap between them. Again having the belt request an item still leads to the same problem on the order that you test. No matter what you do you need to know the order of the paths so you can ensure you move the items front to back. The issue is always with the order that you test.
Code Monkey Nope. Difficult to explain but it works. Have IsStopped function run on an item. It does not matter with which item you start. The IsStopped function calls the IsStopped function of the next item, which calls the same function of the next until either the next item equals the first item or there is no next item or the next item’s stop bool has been set to a value this turn. Then you can set the stop bool for all checked items to the same value.
This requires resetting the stop bool to default after every frame, but in the past couple weeks I’ve been doing that more and more for variables modified by script.
Holy shit. In this video you really sound like those vacuum salesmen, that come to your house. And he seems he wants to really sell you that extra insurance and that vacuum key accessory aswell.
@@CodeMonkeyUnity To elaborate: I've watched a lot of your videos, but in this one in particular you seem to mention the courses and all that stuff more frequently than usual. Not that i dislike the courses, especially since i also own a package with Jason in it and I can also really recommend him. I hope you are not taking it offensively, really like your videos and learned a lot of stuff from you aswell (Unity DOTS for example). Just wanted to mention it, and keep up the good work :D
@@Rushhourz0 Yeah no problem I'm not taking any offense, just confused. The video does feature a standard 60s sponsor spot, so the difference is that most of my videos don't have a sponsor spot and this one does.
Saw your post that you were working on a factory game tutorial. I was waiting on a belt system with ecs or another solution of per node processing. Doesn't look like i'll find this here :/ If we look at Dyson Sphere program, the game's belt looks pretty optimized. I really wonder how they made it.
Hey Code Monkey, I really appreciate your videos and currently even going through your udemy tutorials. At this point I have a question... For some environments a hex-based approach is slightly better, because of having the same distance from mid to mid of a hex in all six directions. Can you perhaps take a vid with creating a hex-based grid system?
That is something I'd like to cover but don't know when, I'm pretty sure you can reuse the same underlying Grid System and just do some tricky math to find how a world position relates to a Hexagonal grid position.
Hey Code Monkey! How are you doing? Are you planning to create some content explaining how to implement the conveyour belt system used on this video?! Thank you!
Ah I gotta dig up some old code I wrote that works well for the belts but used for something else entirely. I honestly forgot what the implementation was. Lol. Did you post up on GitHub?
im trying to make a factory game too expect there is a player that you can control and you have to use the materials to build defenses to defend yourself from the enemies
Hey Code Monkey, do you have a video I can look at the explains how the buttons work in this game? I see in the project files that they are all using the pfBuildingButton prefab and the Button_UI script. What I don't understand is how the script knows which resource to pick. For example, when I click the conveyor belt button how does the button_UI script know that I want to build a conveyor belt instead of a grabber?
It's been a very long time since I made this so I don't remember exactly but I probably did it like I always do, there's a UI script which cycles through all the object types and creates a button for each. So the buttons are created dynamically when the game starts, not in the editor.
you always best , I have a question how can move an object to new position ? for example user want's to move smelter to new place or wants to change his map design
🌍 Get the Game Courses Bundle 3x1! game.courses/code-monkey-bundle/ (Includes Steam Keys for my games as a FREE bonus!)
💬 Factory Automation Game! I've been working on this for a month, did you join me on the Livestream? Make sure you don't miss whatever mini-game I work on next, hit the bell icon!
👍 You can play the game on the Steam App or Download the Project Files, hope you like it!
🌐 Have you found the videos Helpful and Valuable?
❤️ Get my Courses unitycodemonkey.com/courses or my Steam Games 🎮 unitycodemonkey.com/gamebundle
Make a another mini mobile ads game plz code monkey
This game reminds me of the old Dune game. it would have been interesting to add the hidden resources and use leaflets to find enemies to destroy them and you to defend them. My opinion is that you can use this idea to simulate a computer - it could be used in the learning process for schoolchildren and you could put it online. In the end, the work done and the number of hours depends a lot on what you have.
Do you have a tutorial of how to make this game from scratch? I would love to take it.
Also, in the background you show a top down game on Steam that looks really good. It’s the game in the background at 0:37. Do you have a tutorial of how to make that from scratch?
I would love to take both the factory tutorial and the tutorial of that game in Steam.
Thanks!
@@gfujigo
Most of the videos on the Grid system playlist are step by step tutorials which is what this game is based on ruclips.net/p/PLzDRvYVwl53uhO8yhqxcyjDImRjO9W722
That's the Wash your Hands game ruclips.net/video/q9pe-wH7eZ8/видео.html
There's no game that i want to play,
it basic on factoric but the game purpose isn't my thought
because it not enough like a chip layout generation program,
that can held out put lot of different size of retangle in to a one small square with high density,
that can make a little change and regenrate,
that to let player like the chip designer, more density and look awesome
and give a written line to add some parts more without redo move parts all times hand by hand
The amount of tutorials you have should be kept in a backup website in case youtube ever goes down. Thank you for everything you have taught.
Thanks! I'm glad the videos are helpful!
True, super helpful stuff. I'm sure he's got them stored locally too, so it won't lost forever. (I made that mistake with some stuff published to a website, they had exclusive rights for publishing, so I didn't have it hosted on my own site, and it was only stored through their editor. RIP).
Next video:
*"I Made a GTA VI clone in 1 WEEK!"*
This channel always surprises me in a good way lol
That would be quite the challenge!
hmmmmmm
That would be gta 6
I = 1
II = 2
III = 3
IV = 4
V = 5
VI = 6
VII = 7
VIII = 8
IX = 9
X =10
@@sparecreeper1580 yeah we know, thats the point
@@starbruhz the comment says gta 6 clone
Me: Struggling for hours to instantiate an object and populate one of it's variables
Code Monkey: So I'll just make a 3D Factorio template in a couple of days...
It's the power of experience and writing clean code!
@@CodeMonkeyUnity and constant practise. I'm finding myself saying "I knew how to do this 4 years ago" pretty often after taking a bit of a break from gamedev. Luckily your videos are here to my rescue.
Survivor Squad, Game Corp DX, Blueprint Tycoon, Ninja Tycoon, and Battle Royale Tycoon.
I bought these 5 of your games before going to University for Computer Science. Now that I'm finishing my degree and making my foray into Game Development, you've been the most helpful person on the planet.
Thank you, for your great games, and your incredible teaching!
Oh nice! I hope you enjoyed the games! Thanks!
This is way too impressive for those few hours of work. Just amazing.
And I love the tilt shift effect. Makes the look really great.
When in doubt, add depth of field! Always looks great!
The way you explain how you made your game can basically amount for everything I've learned in unity for 2 years. Including stuff I haven't learned yet.
Dude, this was super cool!! Well done man!
And yeah, this background music is a nice change, sound very good! Keep it!!
me: nice, managed to make a prototype of the game I'm making in 1 week
code monkey:
Don't get discouraged, everyone walks their own path, just keep on being better than you were a month ago!
What a CHAD
@@CodeMonkeyUnity I absolutely won't!! Watching your videos pushes me forward and thanks to people like you, today I know a lot more than I did a month ago.
Cool dude, what kind of game did you make?
16 hours? Genius! The game already looks interesting... Thanks dude! Really cool content!
It's the power of experience + reusing code!
It's a great overview of how Factorio might be working, or maybe how to do something like that in a different genre (RPG game with some small homebase), but I still want to point out that the WHOLE selling point of Factorio is its scale.
Looks great, Pleasing interface! Just watching the gameplay feels so good!🔥 Hope you expand this to a big game!
Next Video :
"I Made a Car Simulator Mobile Game in 2 Days!"
This channel always surprises me in a good way lol
Thanks man , for this Amazing video!! Keep Rocking
I've been making a factory game like this and making devlogs. I'm pretty sure I'm well over 20 hours by now...
It's super inspiring watching you work though :)
It's looking great, I really like the visual style, best of luck on your journey!
@@CodeMonkeyUnity Thanks!
12:50 🥺 You're breaking my heart 💔
I think this is an excellent series! It would be interesting to see "where are they now" for these games after your own videos.
Compared to other gamedev RUclips channels, you focus more on teaching the viewer rather than comedy, great job!
Your videos are invaluable. I have learnt so much. I highly recommend your courses whenever someone asks me where to start
I'm glad to hear that! Best of luck with your learning journey!
When I started watching this I already had the impression "this guy really knows what he's doing", then you mentioned "...in my game Blueprint Tycoon" and I went "ah, now I know why, he already made a well done game, no wonder then" xD
Yup already got quite a bit of experience although this was my first Factory game, it came out great!
thank you for this video and project files will spend some time learning from that :)
Code monkey in 16 hours: I made a Factory Game
Me in 4 hours: ah, that's how finally a cube moves
Experience is a very powerful thing!
took me 3 months to get a cube moving.
uwu
DOTS project: fluid particles on conveyor belts. Otherwise known as plumbing simulator. :D
You explain everything you do amazingly! I’m trying to make a third person person pvp game in bolt and your Udemy course is an absolute godsend.
Thanks! Best of luck on your learning journey!
I think some people would like to watch full uncut (even if not commented) project creation, like this factory game project. At least I would be interested :D
That would be interesting, perhaps when I make a second channel I'll experiment with videos like that.
You are the most bad-ass Dev you always surprise us what you can do! Such a well done game + edited video ;)
Thanks!
That's awesome 😍. I couldn't be around in game dev for a while but it's absolutely insane to be back 🔥
You are awsome! Thanx for sharing your experiences with us! :)
Awesome work, Hugo!
Thanks!
for proper FIFO-traffic-jams, you split belts into [lines] (strings of belts/inserters, without merging/splitting branches).
your runtime code only deals in lines, lists of the same moving items, these are belts (exclusive-)OR inserters of the same speed.
Only your editor deals in elements of lines, that ultimately end up editing lines.
A line ends where multiple things output to the same spot.
A line ends, where 2 inserters grab from the same spot, OR where 1 inserter grabs from a belt.
A line ends, when its string of linked belts/inserters loops back to itself.
above 2 conditions may change with every placed/removed item.
you may want to also artificially split lines geographically by world-chunks
, so that every chunk of game world knows what likes it contains, and 1 line is fully contained in a chunk. this lets us modify and LOD lines faster.
adding a bellt (or many items) may split a line in 2 lines.
removing a belt may split a line in 2 lines.
removing a bellt (or many items) may merge 2 lines into 1 line. (1 location changes, to only have 1 inoput, identical to its output)
same for changing the speed of an item.
each line starting point queues/priorizes items from its inputs.
each line is a FIFO queue, simple to code. its output may be "full", which may push the voids to the inout of its queue, where they then may get filled.
a "line is full" flag may also speed up code as a bounding condition.
Yup if I were to expand upon this then that is definitely the approach to take, it would improve performance massively.
this is cool, thanks for the write up. I was pondering how DSP did some of their processing. Apparently they do most of this in a compute shader which allows them to process whole planets of factories in real time. That seems doable. I stumbled when I imagined how they might accomplish sushi belts (belts with a mixed set of items). I was hoping the whole thing was compressible (IE I could process 10 ticks without processing 1 tick at a time) but the sushi belts pretty much squashed that thinking, I really couldn't come up with a solution that did not require every tick processing. But again if you're doing in a compute shader you have tons of computational room to do a huge amount of factories. This topic is so fascinating. If anyone has any online white papers on the subject or more discussion how to do this well I would love to see it.
Wait, Blueprint Tycoon was one of yours? It's been a while since I've got and played it, long before I got to know your RUclips channel, but I remember having a lot of fun playing it. Nice.
That's awesome to hear! Thanks!
Wow this is fantastic! I have recently discovered ypur channel and i even have tried making my own game, but it is much harder than i have expected. I know C# quite well but even with that i feel lack in some areas. What are some good videos of yours to start understanding how to write code for unity and how to solve common problems? Thank you for your work, you are a true legend!
For the absolute basics you can start here ruclips.net/video/E6A4WvsDeLE/видео.html
Then a refresher on C# basics here ruclips.net/video/IFayQioG71A/видео.html
After that just browse for a simple video that interests you and try to follow that, maybe the video on Flappy Bird which takes the game from start to finish.
Best of luck!
Cool video! I'm getting into unity and I think that making a game like this (at some point) seems like a fun challenge.
You are an absolute beast of a game developer Code Monkey, good job!
I just cannot wait to play it. Seems really interesting as I like thise type of games
this feels like playing a minecraft tech modpack
Great work ! Thank you Code Monkey !
Don't know if anyone asked this but wouldn't implementing a search tree system help with the belts?
Always when you upload a new video like this when you make a game I always try to make it by myself before watching the video and then watch your video and compare them and I always find things what you did in a much optimized and simpler way than me and I learnt a lot of things from you like this. Thanks for the awesome videos, they are really helpful.
Sorry for grammar mistakes I'm hungarian and I'm just learning english. And now if I'm think about it, this is a nice way to learn english too because you are speak english.
Your English is great! Yup watching videos and writing comments is an excellent way to learn, for me I learned English pretty much by watching Cartoon Network and writing code!
Wow really?
I learnt a lot when I learnt coding(this is like a year) because the whole website(w3schools.com) is engish
Really inspiring video. I'm amazed at how fast you put this together!
Great job man! 20 hours isn't enough for me to solve my pathfinding errors 😂
This is a great video. I am playing a bit with the code and I can see that the safety break to 1000 iterations, limits the size of how big the belt system can get over time.
I wonder if there is a better way to check for loops in the belts (which is not wrong in principle) without incurring in an actual infinite loop in the code.
Do you have any suggestions on this matter?
Yk what i imagine a good factory game to look like too? Having to do multiple jobs like maintenance, packaging and other stuff
dude this is nuts! It looks great!
Thanks!
OH! Somehow until now I've been completely oblivious to the fact that Blueprint Tycoon is by you and I kept wondering why I occasionally get your vids recommended.
I hope you enjoyed it!
I've been considering trying something like this for a while now with the main obstacle I've noticed being that I have no idea how to make conveyors.
13:35 How did you make that blue grid layer that appears when you are about to build something showing where you can build and where you cannot? Thank you
It's my grid based tilemap which I covered here ruclips.net/video/gD5EQyt7VPk/видео.html
@@CodeMonkeyUnity ouuu thank you :D
Can't wait for a course on this, sped up x1000.
Unity's DOTS is a solution looking for a problem, but this type of game is one of those few problems that DOTS would be useful for.
I remember running into a similar problem to yours while trying to recreate baba is you's block push system, and I did it in a different manner to you, but this seems pretty smart :) (btw, it'd be cool if you recreated those sorts of systems so that it's scalable and cool, maybe for a series or something)
how did you do it ?
@@foamtoaster9742 I used a recursive function that checked if the object next to itself had a Push script attached, then ran the function on that. It checked every object in the line and then executed if it found nothing. I think mine is better for that situation and his is better for this one tho :)
would you consider selling a course specifically on this type of game? that would be awesome
I'm so glad you made this video, I'm not really playing these type of games, but one meme started going around in a certain community and I want to join and making a meme factory game will be perfect. Why factory game? Because the meme is one gif that's evolving all the time, and someone made it so you can spam it on discord and it looks like a vertical conveyor belt, is it a stupid idea? Yes, but I can try this genre at least
Is the conveyor belt class derived from monobehaviour? and are they directly attached to the object in the scene? The problem I always have is, that each object has its own script that’s constantly being updated which causes massive performance problems after 60-80 belts in the scene each updating an items position. I know it’s probably better to only call an update on an event like if an item appears on the belt or is moved to the next but, the only way I know how to check for those events are with collider or bounds which again is performance heavy at least on my pc. I’ve tried implementing a system in ecs but god that was a headache. I watched your section on the belt system and it’s perfect for what I’m trying to do, I’m just curious if the conveyor class is pure data or a mono behavior. Any help or thoughts would be awesome. Thanks
The Belt itself doesn't have an Update logic. The moving logic is on the Belt System which tells the belts to move whatever is on them and the Belt System itself only runs on the Time Tick System. So the belt logic updates 5 times per second, not every frame.
The Time Tick system is super useful and something I've used in most of my games, I covered it in a video quite a while ago ruclips.net/video/NFvmfoRnarY/видео.html
@@CodeMonkeyUnity Ah I get the drift now, thanks for that, completely changed my thought process on the system I have. I was researching other conveyor belt systems in other games and I read on the factorio forum that they use a chain system, like every belt is part of a chain that has a length. I've been trying to understand why they do that. I can see how having a chain with a series of positions makes it easier to determine the items path and directions on the belt but my question is does a chain really improve performance or not? I have been trying to keep things as simple as possible yet not to a point where I'm avoiding future problems. lol I know I ask allot of questions but I am trying to soak up as much knowledge about this subject as possible, especially from the person that who taught me how to code allot of things. Having another programmer to talk too helps me understand concepts and Theory's allot better.
@@chrisjulch561 Yes having everything organized into chains/paths and only doing heavy logic on the front is the way to go, it greatly improves performance since you don't need to worry about 90% of belts, just move them automatically.
great video, i am starting to like this game
Make a course on this now! Thanks
I'd love to! Just need to find the time!
20 hours? You are a wizard, nice job.
It would be very cool to expand this by making the belt system with DOTS!
Every time I watch your video's I get so much motivation for my own projects!
That's great to hear! Keep at it!
you keep me motivated to develop games 🔥
Looks awesome
This is amazing like always. It bet it feels just good to be able to create something that you visualize with skills you inherited over the years aka programming/game designing in this case and this result :D
I have one question btw, I can some depth of field and blurry corners, what settings did you tweak in post processing to achieve it and that level of Polish at the end?
Yup being able to create any game genre I can think of is a very awesome thing!
For the depth of field, it's just making it a small non-blurred section so it kind of gives it a tilt shift sort of look.
You can download the project files to inspect the exact settings.
4:12 sounds like Yoshi lmao xD
I want to be a professional game programmer for a big game so these videos are a blessing.
Keep at it! It's all about experience!
while watching this video, i thought of a game idea like factorio in which there is infinite progression with procedurally generated ore types/names, and compact machines within compact machines. hopefully nobody beats me to making this game a reality.
you - sir - are - awesome!
You would think a game can't make a performant factory game in unity, but Dyson Sphere Program exists. Fortresscraft Evolved also exists, but that game isn't as performant late game. It could be though if it did some multithreading though
I was wondering how to achieve a smoother movement of the items on the belt. At the moment looks like they get pushed from one belt item to another instead.
Any suggestion?
Yoraiz0r. This man is casually supported by the lead sprite artist on Terraria. *What.*
New Subscriber here. I love the look of this game and I would love to be able to make a game like this but my brain doesn't work like that. Thanks for showing us this game.
Lol it’s crazy how many “bugs” happen when a game is so new
This is so inspiring guess im picking up one of my old projects
How to do these grid-visuals as in 14:12?
That's using the Tilemap made in this video ruclips.net/video/gD5EQyt7VPk/видео.html
@@CodeMonkeyUnity Thanks! That helped.
6:02 Yeah that's a sucky thing with unity, Because running the game runs it in the editor something simple like an infinte loop can freeze unity.
That's not really a Unity issue, if you make an infinite loop in any program it will crash, regardless of engine/language
@@CodeMonkeyUnity It does happen with any lanuage but I would suggest unity have a way to detect infinte loops and throw an optional error instead of freezing the whole editor.
i was wondering when you post anything about this after your live stream of it.
Any chance we could get a macOS build of the Code Monkey app? I do all of my development work (incl. Unity) on a Mac. If it's a matter of needing help to port things, I can potentially do that. :)
Great Prototype
Hey, as always amazing work! Can you tell me how to place the gold nodes (resources) in editor? In my game i would like to have a hidden resources on grid wchich will be loaded into game. Thanks in advance.
you are my best teacher
Sweet, I'm impressed. I would love to be able to do stuff like this, however lacking imagination is really crappy. :D
I am a really creative person but I cannot make a 3d cube by myself
This is awesome! How would you be able to make buildings cost a specific amount on place? Like a conveyor belt costs 5 money, whereas an assembler will cost 10
It's pretty simple to add an extra field to the Scriptable Object and implement a basic ResourceManager script
@@CodeMonkeyUnity How would this happen? Like, how would I reference the cost in the Scriptable Object within the Resource Manager, and make it subtract the money before spawning?
Not sure if it's asked but you skimmed over "drew some moving arrows for belts", how did you do that? It really looks like an arrow is spawned and travels along the belt. Well done!
The texture is just a single arrow pointing right on a dark grey background with the texture set to repeat.
The "animation" is handled in the shader, just connecting the Time node to the Tilling and Offset node. All the belts use the same texture and shader at the same speed so it all connects perfectly
@@CodeMonkeyUnity I was thinking it was something along that line. Very well executed!
Also love how you show how all your experience adds up as this is very much the case in all programming (as long as you keep learning and challenging yourself). It's so direct with your small game modules which gets that point across very effectively and visually!
Respect!
Making a similar game right now and is wondering which is a more effective design. Putting belt logic on belt or belt logic on item?
I'm hoping to be able to extend it with multiple item per belt & multiple belt speed later
Putting that logic on the belt is likely to be more performant, better to handle a few dozen belts than thousands of items
Couldn't you make a simple "bool stop = false" variable on every item on an item belt that switches to true whenever the item in front stops or there is no belt in front of it, instead of making that overly complicated path define, merge and split system? (Probably also more performant)
Just a random thought.
EDIT: After finishing the video, I think even better would be to not have the objects move at all by default. Instead, adjacent objects can request from another object to move to towards them. A belt would move the object behind it towards it with a priority of e.g. 1, while the assembler would move the item towards it with a priority of 10. That would remove the need for extractors/inserters. That would even allow extraction from building to storage, and every object could have its own speed. (This could also be combined with stop system from above).
That still has the same problem which depends on the order of your testing. If you test the second item, it wont move because of the one in front has an item, the items would only move if there's a gap between them.
Again having the belt request an item still leads to the same problem on the order that you test. No matter what you do you need to know the order of the paths so you can ensure you move the items front to back.
The issue is always with the order that you test.
Code Monkey Nope. Difficult to explain but it works. Have IsStopped function run on an item. It does not matter with which item you start. The IsStopped function calls the IsStopped function of the next item, which calls the same function of the next until either the next item equals the first item or there is no next item or the next item’s stop bool has been set to a value this turn. Then you can set the stop bool for all checked items to the same value.
This requires resetting the stop bool to default after every frame, but in the past couple weeks I’ve been doing that more and more for variables modified by script.
hi, i love your job. I have a question: is it possible to adapt the grid system to a terrain with relief?
Holy shit. In this video you really sound like those vacuum salesmen, that come to your house. And he seems he wants to really sell you that extra insurance and that vacuum key accessory aswell.
What?
@@CodeMonkeyUnity To elaborate: I've watched a lot of your videos, but in this one in particular you seem to mention the courses and all that stuff more frequently than usual. Not that i dislike the courses, especially since i also own a package with Jason in it and I can also really recommend him. I hope you are not taking it offensively, really like your videos and learned a lot of stuff from you aswell (Unity DOTS for example). Just wanted to mention it, and keep up the good work :D
@@Rushhourz0 Yeah no problem I'm not taking any offense, just confused. The video does feature a standard 60s sponsor spot, so the difference is that most of my videos don't have a sponsor spot and this one does.
You could even say,it’s **satisfactory**
Saw your post that you were working on a factory game tutorial.
I was waiting on a belt system with ecs or another solution of per node processing.
Doesn't look like i'll find this here :/
If we look at Dyson Sphere program, the game's belt looks pretty optimized.
I really wonder how they made it.
When I finally find the time to get back into DOTS I will definitely be experimenting with that, I will see how far DOTS can be pushed.
Mindustry 3D!!
Just add terrain, turrets and enemies
do you have a video explaining how to put this blue grid? is it a shader? a visual grid(using your generic grid)?
That's using the Tilemap made in this video ruclips.net/video/gD5EQyt7VPk/видео.html
Hey Code Monkey,
I really appreciate your videos and currently even going through your udemy tutorials. At this point I have a question... For some environments a hex-based approach is slightly better, because of having the same distance from mid to mid of a hex in all six directions. Can you perhaps take a vid with creating a hex-based grid system?
That is something I'd like to cover but don't know when, I'm pretty sure you can reuse the same underlying Grid System and just do some tricky math to find how a world position relates to a Hexagonal grid position.
@@CodeMonkeyUnity Allright, thanks. I will wrap my head around this. ;-)
You are talented individual. I am really glad that I found your and your channel. How to meet you in person some day.
Hey Code Monkey! How are you doing?
Are you planning to create some content explaining how to implement the conveyour belt system used on this video?!
Thank you!
Probably not unless I expand upon this when I get back into DOTS
But you can download the project files and see all the source code
@@CodeMonkeyUnity
Ah I gotta dig up some old code I wrote that works well for the belts but used for something else entirely. I honestly forgot what the implementation was. Lol. Did you post up on GitHub?
There's a link in the description
im trying to make a factory game too expect there is a player that you can control and you have to use the materials to build defenses to defend yourself from the enemies
keeping those algorithms happy...
Hey Code Monkey, do you have a video I can look at the explains how the buttons work in this game? I see in the project files that they are all using the pfBuildingButton prefab and the Button_UI script. What I don't understand is how the script knows which resource to pick. For example, when I click the conveyor belt button how does the button_UI script know that I want to build a conveyor belt instead of a grabber?
It's been a very long time since I made this so I don't remember exactly but I probably did it like I always do, there's a UI script which cycles through all the object types and creates a button for each. So the buttons are created dynamically when the game starts, not in the editor.
you always best , I have a question how can move an object to new position ? for example user want's to move smelter to new place or wants to change his map design
You would demolish from the current position and add it to the new position, just need to be careful with buildings that occupy multiple positions
@@CodeMonkeyUnity thanks
Hi and Factories are very cool
Very cool! Love seeing conveyor belts moving around!
how to add new recipes into the assembler?
2:51 Can anyone please tell me what is this and how to make it and how to access its variable???
The object shown in the inspector? Those are SCriptable Objects ruclips.net/video/7jxS8HIny3Q/видео.html