Ghost Holic – A few days later.

  1. Design and Planning – Ghost Holic
  2. Ghost Holic – Day 2 Dev Diary
  3. Ghost Holic – Day 3 Dev Diary
  4. Conceptualization: Houses in Ghost Holic
  5. Ghost Holic – Day 4 Dev Diary
  6. Ghost Holic – Day 5
  7. Ghost Holic – A few days later.
  8. Ghost Holic – Building the Goal Map
  9. Project: Ghost Holic

I’ve admittedly been loose with the daily format of the updates to the game, made worse now by me feeling not in the best of health recently which has caused me to take a short break at what is possibly the worst time to do so. The work I’ve been able to show was already getting smaller and now it’s going to be even more so since I’ve hit a roadblock in the form of a difficult choice I’ll have to make.

In essence I’ve hit the point in the project where I have to make a map representative of what I’ll be aiming to achieve with the procedural generation. The map itself isn’t the issue really, but there’s a few problems I’ve realized that I’ll have to take care of during my work.

First of all I’ve so far failed to account for floors. Floors are something that is typically somewhat consistent inside a house, but do have to sort of conform to a room in some ways. Most suburban housing probably has matching floors throughout with the exception of bathrooms, garages, and basements. But this still means that I’ll have to place a floor, and there will be parts that are different than other so I’ll have to form a way of making a floor inside the house that isn’t just a baseplate. This is very easily achieved with rectangular rooms, so in reality it’s not a huge problem it’s just another thing I have to add to the 3d interpretation part of the process.

The second, and much bigger issue, is that I need a way to actually represent the house in a way that’s not just walls. Walls are all that mazes for instance need, but a house in my game requires a lot more. Furthermore I have to place rooms in a logical order so that you don’t enter through the bathroom (Unless bathroom is a decontamination chamber in a science laboratory… which would be interesting but not in the scope of the project) To this end I already know that I’ll need a robust system to define what a room is in a series of tags that tells the generation engine what the room is, what kind of furniture belongs in it, etc. But that doesn’t solve the issue of how in code should I represent these rooms in the placement of the house. Doing this with only walls is problematic as walls are simply designed as walls. Sure I could add functionality to them but currently they work fine to define a wall. The only things I really would want to add would be things to help the procedural interpretation of the wall (Such as the Texture/Material the wall will use), and not room information.

So this means I need to figure out how I want to have the generator carve rooms out of the house’s space. I’m already fairly sure that I’ll have to have a lot of extra room data beyond what this part of the generator cares about, but I do need something that’ll ensure that there’s a cohesive design and not chaos of rooms being placed within each other. Furthermore I don’t want these houses to always be normal rectangular shapes. I want these houses to be able to have protrusions and extensions of the interior making the houses feel like they haven’t been left in their original state- or that perhaps the architect wasn’t lazy and didn’t just design a straight rectangular house. This means I need a system that’ll know the space that can be occupied and do it’s best to logically divide rooms within it. Then this system needs to know how major furniture will fit into the space, which will be very important for large pieces such as beds.

The most difficult thing in a system like this will likely be accounting for hallways, especially winding ones. And then I will also have to account for stairs in multi level designs, meaning that stairs will have to be logically placed between multiple floors early in the design. Additionally inside of rooms there may be closets for hiding that may also need additional work to implement.

After all of this work is done I then need to have a system make sure every room is traversable, at least in the 2d state. Otherwise I’ll need to modify the designs. This means that every room has a door logically placed to the connected room so that the player can actually enter and explore each and every room.

Previously I posted about some ideas how to do this, which was done by lines, by generating two rectangles and having them intersect at a point I could then try to have the house follow natural lines for the rooms. The problem with this is heavily reliant on implementation- simply put it’d be somewhat complicated to do this. After I have lines then I can carve extra lines between them to form rooms, then make rooms into their own space for manipulation within the generator. Issues arise with how will the carving know what is logical and what isn’t, and how will the generator carve rooms to the appropriate size when it’d be difficult to do so.

The second solution I can think of is make a 2d tile system where rooms know how large they should roughly be and then are placed within the confines of the house. This system would be intelligent enough to size down towards the average allowed size of a room in the house, or up as needed. It’d be dealing in absolutes and directly be able to convert to the 2D walls arrays I use to interpret into 3D space. Difficulties then again rise with oddly shaped rooms and hallways. Furthermore, problems will arise when houses have unallocated space. If we’re carving away at the space available then it may be easy to accidentally break things. But I do believe a tile based system will be best overall as regardless of issues It’ll be the easiest to work with when converting to 3D.

Sadly I have no work to show off for these thoughts, and might not for a little bit of time. Developing this part of the system could potentially take a long time, and with holidays I’m busy with working on small things for family as well as this personal project. Furthermore, my final semester of College looms over me- a scary thought for sure.