Announcement

Collapse
No announcement yet.

Titan Keep - A procedurally generated ARPG roguelike

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #16
    Day 8 and 9 (04 Jan 2014 to 05 Jan 2014)







    I had to defer the generation of the room polygons to another step as I needed a way to detect overlapping rooms. So the world generation generates a bunch of rooms as a set and then go off and generate corridors with rooms attached to them. Because the corridors and rooms are just virtualized at the moment I run overlap tests to make sure none of the rooms overlap with each other. However, it does appear that some corridors are still overlapping with some rooms so I'll need a way to check for that.

    So once all of the virtual rooms are laid out, I then do another pass on the data to close off the unconnected room joins. This also appears to have issues sometimes where the walls close up even though they are joined to corridors. This is most likely due to rooms that are coincidentally joined but the data doesn't represent that.

    With these two problems, I'll probably need to add another pass to discard corridors that aren't connected to two rooms and if they overlap. Hopefully during this pass rooms that are connected to a corridor coincidentally need to be linked up; or perhaps a better way of detected if the joins are used could also work.

    But the world generation is coming together none the less. Creating more room templates of different sizes will help vary the world up as right now it looks very grid like.

    Comment


      #17
      Day 10, 11, 12 and 13 (06 Jan 2014 to 09 Jan 2014)







      We're back at work (working on Rekoil and Depth) so progress has been a bit slower than the last several days. I decided to clean up the world generation by making sure that corridors don't intersect rooms that they aren't joined to and closing up holes in the rooms that aren't being used to join to a corridor. My previous attempt some what worked, but there were problems with some corridors being blocked off.

      To solve this problem, I simply check each of the tiles designated as joins to corridors and see if they fit within a corridor's bounding box. If they do, then the join is in use and should not be covered up with a wall. Otherwise the tile is replaced with a wall marker and a wall is generated.

      I've left some debug boxes for everyone to see what I've done.

      From here I am quite happy with the world generation at this point. Before I go back to it, I think I'm going to concentrate more on the RPG and player progression elements of the game.

      Comment


        #18
        Hi Solid Snake,

        Lookin Good! I posted some Procedural Dungeon Generator code over here that may or may not be useful to you (as you are obviously fully versed in coding with unrealscript.) My goal is to use a combination of these algos to procedurally handle a variety of architectural construction task that my not necessary be visible such as destructive path prediction.

        Comment


          #19
          My world generator is similar to variant B that you've written up.

          Comment


            #20
            Looking good!

            Curious though, couldn't this also be achieved if you have those "pluggable" rooms as seperate levels and you stream them in randomly? There will be some limitations of course going this path, but at least you will have the advantage of building lighting in each level and working with more static meshes per room.

            Comment


              #21
              @Solide Snake - this looks amazing! Great job as usual! Have you thought about how you'll handle path nodes for the AI though?

              Keep up the good work, and keep us up to date

              Comment


                #22
                seenooh
                Thank you Seenoh. At this stage I don't believe Level Streaming offers offsetting the levels within them. I recall seeing an Offset variable in Streaming Levels but I haven't seen it in use as of yet. The rooms right now also get modified during the world generation as the templates state where potential passage ways can be. After they've been used, they are later plugged up. It means I don't have to create as many of the same variations.

                dawnclover
                Thanks! Path finding is planned to be done in three steps. The first is a macro path finder. The macro path finder iterates through rooms in the world to figure out which room the AI needs to go to next to get closer to the player. The micro path finder will iterate through the room's grid to figure out how to path within the room that the AI is currently in. This reduces the overall path network look up as you can isolate it into several chunks. The third step is to design monsters which don't need a lot of pathing but provide interesting game play. The monsters are generally kind of dumb some times, but there will be some that are pretty smart.

                Comment


                  #23
                  Originally posted by Solid Snake View Post
                  Thanks! Path finding is planned to be done in three steps. The first is a macro path finder. The macro path finder iterates through rooms in the world to figure out which room the AI needs to go to next to get closer to the player. The micro path finder will iterate through the room's grid to figure out how to path within the room that the AI is currently in. This reduces the overall path network look up as you can isolate it into several chunks. The third step is to design monsters which don't need a lot of pathing but provide interesting game play. The monsters are generally kind of dumb some times, but there will be some that are pretty smart.
                  that's some nice insight, and a solution I never really thought about. could prove useful for my own 'more complex' implementation in the future

                  Comment


                    #24
                    Originally posted by Solid Snake View Post
                    Thanks! Path finding is planned to be done in three steps. The first is a macro path finder. The macro path finder iterates through rooms in the world to figure out which room the AI needs to go to next to get closer to the player. The micro path finder will iterate through the room's grid to figure out how to path within the room that the AI is currently in. This reduces the overall path network look up as you can isolate it into several chunks. The third step is to design monsters which don't need a lot of pathing but provide interesting game play. The monsters are generally kind of dumb some times, but there will be some that are pretty smart.
                    Huh, never thought about it that way! I've been experimenting with procedural levels lately and I was actually investigating about dynamic nav meshes, but you have some great points there, as per usual. Thanks for the insight! Keep up the amazing work, can't wait to see the next update.

                    Comment


                      #25
                      Wow thats pretty amazing! Nice work!

                      Comment


                        #26
                        Awesome work!

                        Comment

                        Working...
                        X