I love what I've seen! Unfortunately, it seemed to give up attempting to render more after a certain distance, and I found myself with a relatively small limited area to explore. Anything I'm missing? Everyone else seems to be having no trouble.
You probably have a slow PC. You can install Unity engine and download source code to experiment with rendering distance, drawing distance and map height.
What you have made is really cool. especially the blender part. I see 2 issues though. if it was to be a massive game.
1. If you wander for long. The amount of inactive objects piling up grows out of hand. A suggestion would be to save the values as a player pref or something and then recreate it if you should return to them.
2. if you wander for too far. you can get to an area where unity based programs renders stuff badly. try 20000x,0,0 and move around. A solution to this would be to normalize the positions once a while.so you technically are moving around in 100x,100y, it's just treated differently for the code.
There is also a pgrogam called Houdini, which is simmilar to autodesk Maya but can be used to also GENERATE PROCEDURAL ASSETS AND WORLDS.
I have the same idea that you have, but no resources or programming experience just art.
Houdini allows for destructable terrain!
So you could turn this idea into a roquelike procedural shooter!
Would be great. Houdini also allows for procedural textures ect.
But its a much better idea to procedurally generate a 1000 buildings and 10.000 assets up front with textures. And then procedurally place those in a world with procedurally generated vehicles and robots, and modelled enemy's. Using your algorytm.
Because destructable terrain features are included in the generation process in houdini if you specify. Then you will have a real game! With not super much work compared to triple AAA games.
If I ever win a million ill make Nuclear Throne in 3D with the same amount of creative as plants vs zombies garden warfare.
EDIT: And dont use unity! It has problems running on many devices except android. Its made for mobile devices not windows for instance. Unity is the Java of game engines. Its not really made for gaming. Its made for Mobile apps and does a good job at that. But to slow and many bugs for gaming.
If you want to take an algorythm like this, or make your own in Houdini. Make sure you stay low poly, limit yourself and use low resolution textures. Its the game itself that should make it more fun. Not the high resolution graphics. Save your processor speed for destruction and AI. Remeber, most of the world is still running a dual core 2.0 gyg and intelhd2000 card..
There is nothing wrong with making a game that looks good in toon style without real time rendered raytracing water drops and reflections.
Beautiful world! Unlike most I am more curious on how you created the great tile sets and how you made them all fit together. Where did you learn to do this? Is there any resources I could look up?
I made them in Blender. You can set a custom snapping distance and I just placed a reference tile next to the one I'm working on. I didn't make a lot of other stuff in Blender before that, so this was kind of a learning project for me.
Hey I'm very interested on how you learned to write and implement this algorithm. I downloaded your source code and tried to understand it in the unity editor, but it was a bit too difficult for me. Where did you learn how to write the algorithm and implement it in Unity? Thanks
If you want to learn about my implementation of WFC, check out this article, the talk by Oskar Stålberg, and the readme of this github repo. If you want to learn how to use Unity, check out thte tutorials by Sebastian Lague. Starting with this WFC project might be difficult as it's very code-heavy.
I've opened your project in unity and set map height to 256. Creation range is 72 chunks. It's even more amazing and unreal w this settings! Thank you very much for this submission. I'm now interested in creation of more structured city (several fixed levels of streets, which means there would be underground ones, stairs inside "houses", more different blocks). By the way, is it possible to create blocks with sizes 2*2*2, 5*100*456 or such using minimal changes in your wfc code?
@LTVA You can make blocks that are bigger than 1x1x1, for example 1x2, by cutting your big block into 1x1x1 blocks and using connectors between them that aren't used anywhere else. In theory, you could make any size block like this, but it would be cumbersome for bigger ones. You could also try to implement that, but that would take a lot of work.
I take it that alt+F4 is the only real way to exit the demo?
Also, what kind of hardware are you targeting? The demo was pretty laggy on a Celeron N3060 with integrated graphics, but I should probably have expected that.
Anyway, this is fantastic, and I want to play with it more when I get better hardware.
Since this project is more of a tech demo than a game, I didn't put in lots of convenience features, like a menu, exiting or graphics options. I think the limiting factor is the graphics card and not the processor. I might add graphics options and an exit feature later, but it's not my priority unfortunately.
On a Mac and new to Unity -- is there something obvious I am doing wrong if I can move the camera about but nothing renders? I installed Blender and can open the Blocks asset. The project builds with 4 warnings but no errors.
That is the algorithim. You can actually hang the algorithim if you don't let it finish removing and placing blocks, causing it to constantly remove and replace blocks at the 'edge'
Yes, it is possible. Download the source code and open it in Unity. There is a blender file that you need to edit to create new blocks. You might need to do some configuration in the Unity editor. Let me know if you have any questions.
You need to keep the first two blocks (solid and empty). Also, you can't generate a castle from just one block, you need to split it into many blocks that fit next to each other. Then you need to set connectors for your blocks. You can read how they work here. In your screenshot, the block has a 0 connector on top and a 1 connector on the bottom. It will only place another block above it that has a 0 connector on its bottom face. But there is no such block in your example.
Something to consider is the movement through the world. I want to try this but it's too stilted. Adding something like bunny hopping to gain speed or some other type of rush mechanic would make it much more interesting to navigate. But all-in-all this looks very cool. Following!
Yes, you can. Download the source code and open it in Unity. Then you generate a city to your liking. You need to figure out a way to export it. There is a free FBX exporter on the Asset Store, hut I haven't tried it. Let me know if you encounter any problems.
I saw this project a year ago and I still see it as a version of "Blame!" world. Just like in the story builders build the "city" randomly and structures rarely make sense, but a randomly built city maze is just perfect for explorations.
Thank you! Yes, you can use you it for anything you like. I would appreciate if you credit me and let me know how you use it, but you can do it either way.
I was trying to get the source code for this working in Unity. You've got a demo scene in your repo, but I couldn't find any meshes - I can imagine why you're not hosting those in the github, but is there somewhere I could get them, if you're happy to share?
Seriously though, this is spectacular. Procjam never ceases to amaze 😍
Hi, the meshes are in the repository in the blender file, it should work. I tried to import the project and the meshes where correct, but someone else has the same problem as you have. Unfortunately, I don't know how to fix it. What version of Unity are you using?
It only seems to extract the blocks.blend into the 'blocks' folder of meshes if you have Blender installed. It failed for me too on a machine without Blender. :)
Unity doesn't actually support .blend files, it will only use an "installed" version of Blender to export the models in the background. If you don't have Blender, or if you used the "zipped" version instead of the installer, Unity won't have any idea what to do with it. I suppose they can manually associate the .blend file with their zipped-Blender folder, but I haven't tried that say for certain.
About RAM usage. I'm aware and I'm trying to make it more RAM efficient. However, it needs to remember the entire world and therefore it will always use more RAM the longer you walk.
The FOV is just Unity's default value, I think for this kind of tech demo that's good enough. I'll look into the mouse grabbing issue.
Save to world (with a simple chunk format) to the harddrive? It shouldn't take that much disk-space, considering it's just a bunch of prefabs/instances with transforms (and probability values or something?).
It's not deterministic because the order that things are generated changes based on where the player chooses to walk, and things that have already been generated place constraints on things that have not been generated yet.
That being said, since it's based on tiles, I'd assume there's a lot of room for optimizing RAM usage (and also unloading far-away areas to a file on disk if you want to get fancy).
I like the idea of this! Aimlessly wandering amidst the endless neoclassical buildings gave me a little flashback to getting lost in cities when I travelled overseas. Everything fits together well too - good work!
This is really neat! Really like that there is so much vertical complexity with staircases and walkways going under other features in interesting ways.
← Return to game
Comments
Log in with itch.io to leave a comment.
I love what I've seen! Unfortunately, it seemed to give up attempting to render more after a certain distance, and I found myself with a relatively small limited area to explore. Anything I'm missing? Everyone else seems to be having no trouble.
You probably have a slow PC. You can install Unity engine and download source code to experiment with rendering distance, drawing distance and map height.
Yes, I'm aware of the issue, you need to restart the game. Sorry!
This has a ton of potential. It even prompted me to make a super cringe title for a video of us playing it (after the intro part)
Wish this was for mac, I love wandering in games like this!! :0
traveled to the bottom level and good god it was scary
What you have made is really cool. especially the blender part. I see 2 issues though. if it was to be a massive game.
1. If you wander for long. The amount of inactive objects piling up grows out of hand. A suggestion would be to save the values as a player pref or something and then recreate it if you should return to them.
2. if you wander for too far. you can get to an area where unity based programs renders stuff badly. try 20000x,0,0 and move around. A solution to this would be to normalize the positions once a while.so you technically are moving around in 100x,100y, it's just treated differently for the code.
Thank you! I'm aware of these problems and hopefully I'll find the time to fix them.
This looks great.
There is also a pgrogam called Houdini, which is simmilar to autodesk Maya but can be used to also GENERATE PROCEDURAL ASSETS AND WORLDS.
I have the same idea that you have, but no resources or programming experience just art.
Houdini allows for destructable terrain!
So you could turn this idea into a roquelike procedural shooter!
Would be great. Houdini also allows for procedural textures ect.
But its a much better idea to procedurally generate a 1000 buildings and 10.000 assets up front with textures. And then procedurally place those in a world with procedurally generated vehicles and robots, and modelled enemy's. Using your algorytm.
Because destructable terrain features are included in the generation process in houdini if you specify. Then you will have a real game! With not super much work compared to triple AAA games.
If I ever win a million ill make Nuclear Throne in 3D with the same amount of creative as plants vs zombies garden warfare.
EDIT: And dont use unity! It has problems running on many devices except android. Its made for mobile devices not windows for instance. Unity is the Java of game engines. Its not really made for gaming. Its made for Mobile apps and does a good job at that. But to slow and many bugs for gaming.
If you want to take an algorythm like this, or make your own in Houdini. Make sure you stay low poly, limit yourself and use low resolution textures. Its the game itself that should make it more fun. Not the high resolution graphics. Save your processor speed for destruction and AI. Remeber, most of the world is still running a dual core 2.0 gyg and intelhd2000 card..
There is nothing wrong with making a game that looks good in toon style without real time rendered raytracing water drops and reflections.
you don't seem to know what you are talking about with unity. Really not xD
Unity is fantastic for windows, mac and linux. Small problem with Android having to get the apk and such and add it to unity. Try it yourself.
also you program mostly in C# in unity. Java is not an option and it's not written in java either. It's written in C++.
Beautiful world! Unlike most I am more curious on how you created the great tile sets and how you made them all fit together. Where did you learn to do this? Is there any resources I could look up?
I made them in Blender. You can set a custom snapping distance and I just placed a reference tile next to the one I'm working on. I didn't make a lot of other stuff in Blender before that, so this was kind of a learning project for me.
Hey I'm very interested on how you learned to write and implement this algorithm. I downloaded your source code and tried to understand it in the unity editor, but it was a bit too difficult for me. Where did you learn how to write the algorithm and implement it in Unity? Thanks
If you want to learn about my implementation of WFC, check out this article, the talk by Oskar Stålberg, and the readme of this github repo. If you want to learn how to use Unity, check out thte tutorials by Sebastian Lague. Starting with this WFC project might be difficult as it's very code-heavy.
Thanks for the info! I want to start it in 2d though because it would be easier to learn the algorithm in less dimensions ;)
I've opened your project in unity and set map height to 256. Creation range is 72 chunks. It's even more amazing and unreal w this settings! Thank you very much for this submission. I'm now interested in creation of more structured city (several fixed levels of streets, which means there would be underground ones, stairs inside "houses", more different blocks). By the way, is it possible to create blocks with sizes 2*2*2, 5*100*456 or such using minimal changes in your wfc code?
@LTVA You can make blocks that are bigger than 1x1x1, for example 1x2, by cutting your big block into 1x1x1 blocks and using connectors between them that aren't used anywhere else. In theory, you could make any size block like this, but it would be cumbersome for bigger ones. You could also try to implement that, but that would take a lot of work.
could you add more bottom starirs because i was at the bottom level and there were no stairs and i searched for 10 minutes
If you press M twice, you'll get back to the surface!
How can I make it have more levels in depth?
I don't quite understand the question. What do you mean with depth?
I am pretty sure he is talking about height.
I am wondering hows I can make it have more city deeper down
Download source code, open Game map in Unity, select Map and change «Map height» value, then click Build.
this is so cool!
Absolutely amazing, very beautiful city. Only 16 mb too
This seems really cool, but I cant figure out how to download it...
Did you try to click the Download button next to "wfc.zip" (if you use Windows)?
This is really cool.
I take it that alt+F4 is the only real way to exit the demo?
Also, what kind of hardware are you targeting? The demo was pretty laggy on a Celeron N3060 with integrated graphics, but I should probably have expected that.
Anyway, this is fantastic, and I want to play with it more when I get better hardware.
Thank you!
Since this project is more of a tech demo than a game, I didn't put in lots of convenience features, like a menu, exiting or graphics options. I think the limiting factor is the graphics card and not the processor. I might add graphics options and an exit feature later, but it's not my priority unfortunately.
It is possible to get the basic unity options for resolution and all by starting it while pressing the shift key.
Yes, that should already be possible.
I tried out the executable on a PC and it is really inspiring. Nice work!
On a Mac and new to Unity -- is there something obvious I am doing wrong if I can move the camera about but nothing renders? I installed Blender and can open the Blocks asset. The project builds with 4 warnings but no errors.
With Map selected and in scene mode I can see green wireframes after using Initialize nXn Area, but nothing renders in game mode.
Looks fantastic, love rooms! Was running it for some friends!
But it looks like sometimes the city just "ends" or that theres weird glitches you can fall off of.
Still everyone was impressed ;)
That is the algorithim. You can actually hang the algorithim if you don't let it finish removing and placing blocks, causing it to constantly remove and replace blocks at the 'edge'
Is it possible to replace these blocks with others to make a different world ?
How can i do it ?
Yes, it is possible. Download the source code and open it in Unity. There is a blender file that you need to edit to create new blocks. You might need to do some configuration in the Unity editor. Let me know if you have any questions.
Thanks for ur kindness.
I tried to import a new model, edit its "Module Prototypes" manually. Create module data and save it.
Return to the Game scene and click initialize, but it can't generate, is there something i did wrong?
You need to keep the first two blocks (solid and empty). Also, you can't generate a castle from just one block, you need to split it into many blocks that fit next to each other. Then you need to set connectors for your blocks. You can read how they work here. In your screenshot, the block has a 0 connector on top and a 1 connector on the bottom. It will only place another block above it that has a 0 connector on its bottom face. But there is no such block in your example.
Something to consider is the movement through the world. I want to try this but it's too stilted. Adding something like bunny hopping to gain speed or some other type of rush mechanic would make it much more interesting to navigate. But all-in-all this looks very cool. Following!
Absolutely love this, mate! Even threw together a quick fan-art thing here: https://tinyplanetsandscreenshots.tumblr.com/post/181936073817/applied-quantum-m...
It'd be amazing if there was a hover-in-place option, but you've done a totally stellar job! Cheers!
Thank you, I like the tiny planet image! You can kind of hover in place if you go into flight mode (M) and slow down (hold S).
This is truly wonderful. Is there a way I could generate a city and then take parts of it out as FBX to use in another game?
Yes, you can. Download the source code and open it in Unity. Then you generate a city to your liking. You need to figure out a way to export it. There is a free FBX exporter on the Asset Store, hut I haven't tried it. Let me know if you encounter any problems.
Ah it works beautifully! Thank you so much.
Nice work,I like it.
Loved it :D
Wonderful.
Any chance of a Mac version?
I don't have a Mac, but anyone who has a Mac could easily create a Mac build.
Thanks, I might give it a try!
Is this using the 3d variant of WFC or are you plopping down blocks on a 2d "plane"?
Because This may be the technology needed to truly recreate Blame! in a game.
Yes, it's 3D WFC!
I saw this project a year ago and I still see it as a version of "Blame!" world. Just like in the story builders build the "city" randomly and structures rarely make sense, but a randomly built city maze is just perfect for explorations.
Well done! I love how organic it all feels, I'd love to see this
1) Used in a game.
2) Expanded slightly just for a walking experience, maybe with working fountains, etc.
Great job and a great aesthetic.
This is a wonderful software!
Is it permitted to use the scenery generated by this software for illustration using trace or copy?
Thank you! Yes, you can use you it for anything you like. I would appreciate if you credit me and let me know how you use it, but you can do it either way.
Thank you!
If there is opportunity I would like to make use of it in my work.
I also expect further development of this software.
hi ,can i make friends with you?I am Chinese.
This is very cool. I would greatly appreciate an option to invert the mouse.
Heya! Absolutely love this!
I was trying to get the source code for this working in Unity. You've got a demo scene in your repo, but I couldn't find any meshes - I can imagine why you're not hosting those in the github, but is there somewhere I could get them, if you're happy to share?
Seriously though, this is spectacular. Procjam never ceases to amaze 😍
Hi, the meshes are in the repository in the blender file, it should work. I tried to import the project and the meshes where correct, but someone else has the same problem as you have. Unfortunately, I don't know how to fix it. What version of Unity are you using?
It only seems to extract the blocks.blend into the 'blocks' folder of meshes if you have Blender installed. It failed for me too on a machine without Blender. :)
Unity doesn't actually support .blend files, it will only use an "installed" version of Blender to export the models in the background. If you don't have Blender, or if you used the "zipped" version instead of the installer, Unity won't have any idea what to do with it. I suppose they can manually associate the .blend file with their zipped-Blender folder, but I haven't tried that say for certain.
Any plans on a making this into a Minecraft mod? ;)
Nope
1) There appears to be a memory leak: RAM usage keeps increasing as one walks.
2) There are no large open spaces, which makes exploring kind of boring.
3) The Field of View is too small / not configurable.
4) The mouse is not correctly grabbed by the window on multi-monitor setups.
Apart from that: Nice!
About RAM usage. I'm aware and I'm trying to make it more RAM efficient. However, it needs to remember the entire world and therefore it will always use more RAM the longer you walk.
The FOV is just Unity's default value, I think for this kind of tech demo that's good enough. I'll look into the mouse grabbing issue.
Save to world (with a simple chunk format) to the harddrive? It shouldn't take that much disk-space, considering it's just a bunch of prefabs/instances with transforms (and probability values or something?).
Is the method deterministic? Unless you can modify the world, there's no reason to save it.
It's not deterministic because the order that things are generated changes based on where the player chooses to walk, and things that have already been generated place constraints on things that have not been generated yet.
That being said, since it's based on tiles, I'd assume there's a lot of room for optimizing RAM usage (and also unloading far-away areas to a file on disk if you want to get fancy).
Add NPCs and it will be a horror game for agoraphobic people.
did you just create an algorithm for inception?
Whenever I play games with 3D environments my mind tries its hardest to store a kind of map. Playing this is very stressful for me.
I agree. I also feel claustrophobic in this environment because it never opens up into a larger open space.
Sounds like a perfect setting for some sophisticated psychological horror based on a general feeling of unease.
I like the idea of this! Aimlessly wandering amidst the endless neoclassical buildings gave me a little flashback to getting lost in cities when I travelled overseas. Everything fits together well too - good work!
wonderful comparison.
This is really neat! Really like that there is so much vertical complexity with staircases and walkways going under other features in interesting ways.
Woah, this looks awesome. Fantastic work!
This is pretty dang cool!