Search Unity

ProD: Procedural Dungeon Generator is released.

Discussion in 'Assets and Asset Store' started by tuncturel, Jan 29, 2014.

  1. tuncturel

    tuncturel

    Joined:
    Jul 20, 2012
    Posts:
    47
    THIS POST IS NOW OUTDATED SINCE WE RELEASED A NEW VERSION OF Pro-D. I'LL MAKE A NEW POST SOON FOR THE NEW VERSION IF I HAVEN'T ALREADY. VISIT THIS PAGE TO REACH THE LATEST VERSION: Pro-DUnity.blogspot.com



    Hi guys, first and foremost, a little heads up on few things. I released this package about 6 months ago and didn't make a post about it. I know that this wasn't a clever move, but now here we are.

    1 - What is ProD: Procedural Dungeon Generator?
    ProD is a versatile tool, capable of making procedural generated 2D maps.

    The package was intended to be a base system for those who were interested in making roguelikes and dungeon crawlers, yet ProD is capable of use for all sorts of wacky procedural ideas you might have. Below you can check to see some things that are being made with ProD already.

    2 - What are some key features of ProD?
    • Structured and reusable code for all procedural generation needs
    • Adjustable map location; map size; cell size; room frequency; room size and more
    • Seed functionality that allows you to use a numerical value for saving references to all of your procedural generations
    • Fully commented code that comes with online documentation made available by Doxygen
    • Infrastructure that allows use of both 2-D and 3-D assets
    • A full version of our gigantic method library with 36+ common methods used in procedural generation and roguelikes alike
    • A complete collection of map generators with all options you saw in the browser demo. These include everything generated with the screenshots on this post.

    3 - What is being made with ProD?
    ProD has sold about 40+ copies already and has approximately 350+ downloads. Here are some footage from current users:
    1. A prototype in progress:

    2. Skies of Saturn:

    3. Shifting Bricks: http://www.youtube.com/watch?v=YvVK-29BWE4&feature=youtu.be

    4 - I see three different packages when I search for ProD on the Asset Store. Which one do I get? What are the differences?
    At first we had ProD Free which sort of included everything. Over time we developed ProD Free and ProD Pro because we started making quite many updates. Today we have ProD Free, ProD Silver and ProD Gold and below are what you get with each package.

    ProD Free has all the base code, but it only comes with the Maze Generation script. This package alone includes most things you need for writing and setting up your own gameplay easily.

    ProD Silver includes everything ProD Free has. In addition, Silver version has Dungeon Generation script, Dungeon Ruins Generation script and overall 21 or more methods in its Method Library. This is the database we’re working on which allows you to mix and match all sorts of generations.

    ProD Gold includes everything ProD Silver has. As an addition Gold version includes the full Method Library. We decided to make the Gold package, the one package that will be updated frequently. This means Gold users will benefit from all updates and feature additions unlike free and silver versions. Gold version will be updated with a fully textured 3D model collection very soon. You can see some of these models here.

    We recommend you to start with the browser demo to see what the package is capable of and view some of the demos the users made. If you like what you see, go ahead and start with ProD Free. We kept free, silver and gold compatible with each other, so don’t worry.

    5 - What’s inside this package exactly? What does your documentation look like?
    If you visit any of the ProD packages on the Asset Store, you may see the content of these packages in their respective pages.

    You can see the full contents of the code through our web documentation. We use Doxygen that allows you to make a wiki-like html for your codebase. Every parameter, method and class is visible through this documentation.

    If you still want to learn more about what the package can do or what’s inside it, feel free to check our online manual.

    6 - Do you have tutorials on how to use ProD?
    Currently we’re working on making a tutorial and one of our users informed us that he was producing a tutorial already. Once tutorials are available we will be putting them on our community page as stickies.

    On the other hand one thing we paid extra attention to was the documentation of ProD and ease of user experience. We included quite a bit of information to get you started in our manual and kept the codebase green with excellent comments. I’m not afraid to say, if you pick up ProD, it will be a breeze to learn it. We also included test scenes to get you started quick and easy.

    7 - How do I reach you for support, criticism, feedback, bugs and more? How fast are you on replying to such e-mails?
    As the ProD team, we strongly encourage you to make a post on our community subreddit at reddit.com/r/ProD. As you can guess, you might find out users who have similar issues, or pre-existing posts that might solve your problems. Sometimes other users will reply to you before we can. If you absolutely want to send an e-mail, that’s also okay!

    We work full time at Gray Lake Studios and unless we’re in crunch mode we will reply to you as soon as possible. You will most likely receive a reply in 24 hours. I also go out of my way to reply to users over the weekend since I enjoy everything related to ProD. Our support e-mail is: Unity3D@graylakestudios.com

    8 - How does the community connect with one another?
    Currently we use a reddit subreddit that acts as the ProD forum. Feel free to reach it through this link: reddit.com/r/ProD**

    9 - Who works on ProD?
    ProD started as a one man “side quest” at Gray Lake Studios. With some sales made we invested in it further to make the package better. We are working on game projects that already use ProD which allows extra content for future updates. There’s almost always one person working on ProD. Until now all funds generated by ProD and more is invested back into the deveopment of ProD.

    10 - How many sales do you have currently and how much do you make with ProD?
    Currently we have 50 downloads average per month for ProD Free and approximately 8 packages sold every month.

    11 - So you’re not making that much of an income with this package, why are you still working on this?
    Because we use ProD in our own production cycles and mostly because we love working on ProD : )

    12 - Some screenshots:

    Here's the album!

    $Screenshots_02_01.PNG

    $Screenshots_02_02.png

    $Screenshots_02_08.PNG

    Here are the important links one more time!
    Also a big thanks to all the early adopters. All those who bought the package earlier got upgraded to Gold today.
    Heartfelt thanks to the Unity3D Asset Store team as well.

    ProD on the Asset Store
    ProD Free, Silver and Gold
    ProD Reddit Community
    ProD Manual and ProD Doxygen Documentation
    ProD Browser Demo

    Hope you all enjoy!
     
    Last edited: Nov 12, 2014
  2. tuncturel

    tuncturel

    Joined:
    Jul 20, 2012
    Posts:
    47
    Bump... :|
     
  3. jeedee

    jeedee

    Joined:
    May 30, 2011
    Posts:
    15
    Nice! Going to buy a copy right away, it is going to be a great time saver!
     
  4. tuncturel

    tuncturel

    Joined:
    Jul 20, 2012
    Posts:
    47
  5. IM_A_CAT_AMA

    IM_A_CAT_AMA

    Joined:
    Feb 22, 2014
    Posts:
    11
    Looks really interesting!
     
  6. tuncturel

    tuncturel

    Joined:
    Jul 20, 2012
    Posts:
    47
    Thanks! I started this thread about a while ago and got quite a lot of people tyring the free version already. Let me know how you feel if you end up trying it.
     
  7. tuncturel

    tuncturel

    Joined:
    Jul 20, 2012
    Posts:
    47
    Here's another project: It's a proof of concept for procedural pacman game! Click here.
     
  8. kafanasiff

    kafanasiff

    Joined:
    Sep 25, 2013
    Posts:
    31
    Hi!

    I've been playing around with the free version of ProD and am really impressed, thanks for making it! It's been pretty easy to grasp the basics, and I will definitely be purchasing the Gold version for future games once tax time is past and I have a bit more of that internet money. Right now I'm trying to make a little mini maze game to get a handle on the package before going gold.

    So far I've got a random labyrinth generated using the free version, integrated tap controls, and have created a different basic visual theme. In this mini-game, the player can wander around a maze, and a game over screen is shown when they reach the exit. I'm having trouble implementing a couple of features though, and was wondering if you could give me some guidance.

    First, I'd like the player to pick up keys before being allowed to exit. I have the keys being randomly placed as cells during the map generation process using AddNoise_I, and the collision detection works. A counter is updated each time a player gets near a key. The problem I'm having though, is making the keys disappear and replacing them with a cell (path), that the player can then walk through after they have picked them up. Is it possible to make items by placing them as cells during generation, or should I be placing the keys as objects on top of existing path cells?

    This is probably rookie error, but I have not bell able to figure out how to use SetCellType() from within a script on a cell type prefab. Is this possible? It seems like I need to figure how to get the position of the cell instance, but I'm not sure how to do that. I always get a null reference exception because the script is assigned to a prefab, not an instance. Maybe this is an inheritance problem... where I am trying to access Cell classes from within a Monobehaviour class.

    Thanks so much for any advice you can give, and sorry for bombarding you with questions. I'd be happy to share my code for the touch/tap controls, if you have any interest in integrating those into the package example.

    Cheers
     
  9. tuncturel

    tuncturel

    Joined:
    Jul 20, 2012
    Posts:
    47
    Hi kafanasiff,

    Of course I'd be happy to give you some guidance : )

    In one of your questions I can see that you already replied yourself with the answer you were looking for. You should indeed try to instantiate the keys as objects and not as cells. You can do this a couple of ways. If you are having multiple item types then you can have a three dimensional item map. where there's an array of items on each cell. In a more simpler manner you can just make a two dimensional array much like the cellsOnMap but this time you call it itemsOnMap and mark the array with a key whenever you place a key in the game. You could also completely skip all that and modify the AddNoise_I function and place it in a different class to just generate keys on cells you like.

    For the second question I'll try to explain some things. If you have an address already then you can get a cell's script and a cell's prefab from the map instance. Since the Cell.cs doesn't inherit from Monobehavior, you may not get the script from the game object, by using GetComponent<Cell>(). To do that you need to call GetComponent<CellManager>(). The CellManager will hold reference to the Cell.cs. This may seem somewhat confusing but it was intentional decision since we didn't want Cell.cs inheriting from Monobehavior.

    Please! Feel free to bombard me with questions : ) I'll be happy to help you as much as I can.

    Best of luck with your project and don't forget to post your progress to our subreddit at r/ProD!
     
  10. kafanasiff

    kafanasiff

    Joined:
    Sep 25, 2013
    Posts:
    31
    I'll definitely post a link to my project here and on the subreddit once I have something decent to show,and will let you know if I come up with any more questions. Thanks for the quick response and great support!
     
  11. Alic

    Alic

    Joined:
    Aug 6, 2013
    Posts:
    137
    Hey guys, really cool looking project. I'm wondering if Gold gives access to all the code. It looks like it does, I just want to make sure. I'm thinking about incorporating randomized levels into my next project, and I'd love to use ProD as a base/learning tool since it looks clean and well designed and I've never played around with level generation before.

    I do like to get my hands dirty though, and the project will have fairly specific needs -- generating levels with very particular limits on how concave certain areas can become (to simplify AI work) and doing things like creating multiple entrances to certain rooms and checking to make sure a player can't get stuck from their start point even if some of the doors are locked/need a specific key. It seems like ProD would make stuff like this a lot faster to get up and running.

    I'm also interested in generating RPG overworld maps with towns/dungeons/mountains/forests/rivers, is this stuff doable by ProD with a custom generator/playing around with the MethodLibrary?

    Anyway, hope your sales have been picking up, you guys deserve it from the looks of it. I'll probably jump in when I'm done with my current project, since I won't have time to play around until then. And just in case there's a sale :p
     
  12. tuncturel

    tuncturel

    Joined:
    Jul 20, 2012
    Posts:
    47
    Hi Alic!

    You should try the webbuild to see what the package is capable of if you haven't so far: http://bit.ly/DropboxProDGoldWebplayer

    Multiple entrances to certain rooms is possible since we have done it before using ProD, but it's not functional as a built-in feature at the moment. You can have multiple doors, but connecting them requires some more coding. Making sure that your player isn't stuck is also something you'll have to add : ) The map generation always connects all tiles on a map but it's up to you to tweak the doors and integrate a lock mechanism at this stage.

    The overworld maps is possible to generate. We have two classes that make it possible in ProD. One class is Map. Map class contains all tiles on a map, a list of rooms and more. Check it out here: Map.cs The other class is WorldMap. WorldMap makes it possible for you to generate a two dimensional array of Maps. Get more info on that here: Worldmap.cs

    Thank you for you kind wishes : ) and let me know if you have any other questions I can answer!
     
  13. tuncturel

    tuncturel

    Joined:
    Jul 20, 2012
    Posts:
    47
  14. tuncturel

    tuncturel

    Joined:
    Jul 20, 2012
    Posts:
    47
    The 2nd video on top is dead, so here's their new video:


    Apparently they heavily modified ProD to generate their worlds and I'm not sure about the details of how much of the package they're using. They use to have a more grid oriented style in their previous trailer.
     
  15. kafanasiff

    kafanasiff

    Joined:
    Sep 25, 2013
    Posts:
    31
    Again, really fantastic product! I used the free version to generate random mazes in my new casual mini-game collection Anachron's Arcade. It's no roguelike, but there is a cat in it...
     

    Attached Files:

    Last edited: May 2, 2014
  16. ricecrispie60

    ricecrispie60

    Joined:
    May 6, 2014
    Posts:
    20
    Hello! First thing - this isn't a put down, but I want to explain why I won't be spending any cash on prod (but would like to).

    Sorry to say it looks like you have done the 'fun' parts of procedural gen but conveniently left out the hard anoying stuff needed for quality asset production.

    What I feel is missing is the bridge to turn those blocky square level walls into highres autotiled enviroments. It looks like I will have to implement something like in this article to prod's output.

    All that bitmasking stuff looks cock punchingly tedius to me to try fuse with an unfamiliar product, and it looks way more difficult than, say, this article on cellular automation which looks kinda fun...

    hope you can see where I'm coming from :)
     
  17. kafanasiff

    kafanasiff

    Joined:
    Sep 25, 2013
    Posts:
    31
    @ricecrispie60 - I'm not the author of ProD or affiliated with Grey Lake in any way, but I just wanted to take a second to respond to your comment because ProD has been very useful to me and I've found it to be an excellent asset. It saved me a lot of time with procedural generation.

    To get high res tiled environments, all you need to do with ProD is replace the asset's cell prefabs with your own. You make the prefabs as fancy as you want, but ProD takes care of the map generation for you. I don't think you need to use a bit-masking approach at all to get hi-res environments based on grids; only if you wanted to. I guess what's "fun" about procedural generation is all relative. For me, ProD handled the tedious parts of generating random grid mazes, and allowed me to focus on implementing gameplay mechanics and art instead.

    If your comment is just based on reading about ProD, you should really download the free version and try implementing something with it, to get a feel for how it works with Unity prefabs. I will certainly be using ProD again in future products, and Grey Lake has been great with their support and releasing updates so far! Cheers
     
  18. meapps

    meapps

    Joined:
    May 21, 2013
    Posts:
    167
    Could you added some video tutorials for starters etc?
    I have troubles to setup the perfab from the free version, because i got bigger art etc. Any suggestions?
     
    Last edited: May 14, 2014
  19. ricecrispie60

    ricecrispie60

    Joined:
    May 6, 2014
    Posts:
    20
    @kafanasiff - thanks for your input, I have the free version, hopefully i've missed something but until I see something with no right angled corners...or just something not made out of boxes my comments stand.
     
  20. kafanasiff

    kafanasiff

    Joined:
    Sep 25, 2013
    Posts:
    31
    @ricecrispie60 - if you want something without angled corners you need to make it yourself. You can replace the ProD cell prefabs with your own prefabs, so the cells can be whatever shape you want with whatever colliders you want... ProD just creates different types of random mazes/maps with the prefabs... it doesn't dictate what the prefabs need to be. It's kind of like using tiles to create a game world, except the tile is a prefab.
     
  21. tuncturel

    tuncturel

    Joined:
    Jul 20, 2012
    Posts:
    47
    Hey there, we're making super crazy updates and it's coming out beginning October. You can reach the details through here.

    If you have any suggestions feel free to share them with us!
     
  22. eridani

    eridani

    Joined:
    Aug 30, 2012
    Posts:
    655
    Is there an easy way to make the cavern walls not so "boxy" looking? In other words, smooth-walled round rooms, not jagged-walled round rooms. Thank you!
     
  23. tuncturel

    tuncturel

    Joined:
    Jul 20, 2012
    Posts:
    47
    One possible solution could be making sprites/models that are isosceles triangles and putting them where the diagonal connections on the wall are. This is possible with the help of orientation script.

    I've been thinking about writing a script that may generate a mesh on the fly for making seamless connections but sadly we're too busy working on various projects. This is definitely on our list of things to do.

    Hope this helps!
     
  24. eridani

    eridani

    Joined:
    Aug 30, 2012
    Posts:
    655
    Thanks! That sounds like a workable solution. Can you possibly write a short tutorial on how to do that with an orientation script?

    This asset makes really nice 2D dungeons and levels, but the jagged cavern walls are too jarring when seen in a 3D first-person perspective, in my opinion.
     
  25. tuncturel

    tuncturel

    Joined:
    Jul 20, 2012
    Posts:
    47
    Hey eridani,

    Could you kindly make a post here about this? I'm pretty much busy working on updates and there's quite a bit to work on since we're an indie company.
     
  26. eridani

    eridani

    Joined:
    Aug 30, 2012
    Posts:
    655
    Ok sure. I'm not too familiar with Reddit but I just signed up and put up a post on that site per your request.
     
  27. wbakunis

    wbakunis

    Joined:
    Jan 28, 2014
    Posts:
    50
    When do you plan on creating a new post?
     
  28. CarterG81

    CarterG81

    Joined:
    Jul 25, 2013
    Posts:
    1,773
    I wanted to make sure to add here, what I've done with it so far.

    This asset really helped me a lot. I spent 8 hours straight trying to grasp procedural generated biomes, continents, perlin noise, and this article. I'm not a mathematician. I copied off of my neighbor in Geometry class during high school. I did not want to have to catch up on complex mathematics just to understand voronoi diagrams, let alone all the work it would take to implement them myself. (There are some projects here for Unity, and although one in particular works without bugs, it claims to have a bug, and I couldn't do anything with the data since I didn't understand any of it.)

    I looked in the asset store, glad to spend any money to save myself the effort, and this was the only asset I found that even resembled what I wanted. Desperate to just "get it done" since this was suppose to be a simple project (and procedural generation with biomes is certainly not simple for someone with experience only in random generation and limited geometry knowledge) - I bought it. I didn't even know if I could use this or not. However, I at least could use some of the code to figure out perlin noise. (I was having a hard time with Step 2 in that stanford link- Separating water from land).

    3-4 hours with ProD, and I understood it very easily. After that, learning more about it seemed elementary. Very well designed procedural generation system. I scrapped the Materalizer immediately, since the MethodLibrary is everything, for me at least. That's all those complex algorithms I didn't want to learn myself.

    Finally understanding ProD, I stepped forward - 4 hours later, SUCCESS!

    I filled the Ocean, plugged all the Lake holes, and generated some awesome continents. Good enough for now, anyway.


    http://www.reddit.com/r/ProD/comments/2x1cek/identifying_lakes_from_ocean_filling_in_lakes_and/


    Then I took that continent, and filled it with Biomes using single-Cell points which then grew outwards, equally dispersing the biomes, until the map was completely full:


    http://www.reddit.com/r/ProD/comments/2x24p4/generating_continents_filling_with_biomes_evenly/


    Instead of the materalizer, i just instantiated tiles based on the Cell location and tilesize.

    Code (csharp):
    1.  
    2. void InstantiateTiles()
    3.   {
    4.   for(int y = 0; y < gameMap.size_Y; y++) //Scan through gameMap, to instantiate tiles.
    5.   {
    6.   for(int x = 0; x < gameMap.size_X; x++)
    7.   {
    8.   Cell thisCell = gameMap.GetCell(x, y);
    9.   string thisType = thisCell.type;
    10.   GameObject obj;
    11.   Color setColor = Color.white;
    12.  
    13.   switch(thisType)
    14.   {
    15.   case "Grassland":
    16.   setColor = Color.yellow;
    17.   break;
    18.   case "Ocean":
    19.   setColor = Color.blue;
    20.   break;
    21.   case "Forest":
    22.   setColor = Color.green;
    23.   break;
    24.   case "Mountain":
    25.   setColor = Color.grey;
    26.   break;
    27.   case "DeepForest":
    28.   setColor = Color.magenta;
    29.   break;
    30.   }
    31.  
    32.   if (setColor != Color.white)
    33.   {
    34.   obj = (GameObject)Instantiate(Tile_Placeholder, new Vector3((x * 512) - 256 * gameMap.size_X, 0, (y * 512) - 256 * gameMap.size_Y), Quaternion.identity);
    35.   obj.name = "Tile_" + thisType;
    36.   obj.GetComponentInChildren<SpriteRenderer>().color = setColor;
    37.   obj.transform.SetParent(this.gameObject.transform);
    38.   }
    39.   }
    40.   }
    41.   }
    42.  
    Changing the Tile's texture is as easy as taking the prefab, and changing the texture. EZ Mode.

    I figure to make the world look like it transitions more, it is only as easy as using ProD's DirectionManager, and doing it like they've done it since the 90's.


    Thank you ProD!
     
  29. Dan_lala

    Dan_lala

    Joined:
    May 14, 2015
    Posts:
    42
    I was playing around with some map-like design:
    Screen1.png

    I kind of like the direction this is going:
    Screen2.png
     
  30. tuncturel

    tuncturel

    Joined:
    Jul 20, 2012
    Posts:
    47
    Really dig the old-school paper look you got there :D
     
  31. Dan_lala

    Dan_lala

    Joined:
    May 14, 2015
    Posts:
    42
    Thanks, me too :)

    Re-worked the FoW yesterday, now you get the impression of drawing a map on old paper while walking

    screenshot.png
     
    Last edited: Jun 19, 2015