Let there be doors!

The building generator no longer creates rooms without an exterior wall and adds a door to each exterior wall. Still dealing with some bugs though:

Double doors?

I’m seeing doors in random locations around the maps, but I also found these double doors which I didn’t intend. Procedural generation finds a way!

I’m still stumped on how to implement z-levels for buildings. I have some ideas, but none of them are particularly elegant.

Partitioning Buildings

First interior wall

Working on some code now that partitions buildings into spaces that can be used to house the city’s various businesses.

Initial vertical partitioning wall

I need to better develop the generators created earlier to populate each space with a business, but I am more worried about implementing z-levels for buildings. I’m not sure how to deal with staircases or elevators, and, more specifically, how I can make sure each space has access to them. Spaces on upper levels obviously can’t have doors on exterior walls :).

Partitioning buildings recursively

Building Variety

Corner buildings suck

I’ve added some variety to the building shapes. The “corner” buildings took much longer to get right than I had expected, and, to be honest, they are still very buggy. I had to run the game a few times to get that screenshot. Here’s what they look like most of the time:

🙁

Part of the weirdness is caused by the algorithm I’m using the draw the map, and part is the actual code that generates the buildings. It has already taken me several days to get here, but I’m going to keep at it until it works the way I want.

It’s the map, it’s the map, it’s the map

Ugh.. so boring!

Added a map viewer to RogueBusters. I added this so that I can see what I’m doing while I make the city blocks more interesting. I’m also investigating the use of the wave function collapse to create the city blocks.

Wave Function Collapse (WFC) experiment

The output tends to be a little more complex than I had hoped for. I haven’t given up yet. Here are some more examples:

The city blocks are not an uniform as I would like. Cities don’t really end up like this.

Here’s an example from a map of Chicago from 1857:

1857 Chicago.. I’m sure this was still relevant in the 1920s.

There are only a few variations, so I’m not sure how to model that with WFC. For now, I’ll just work on creating the map from a few basic variations and see how that goes.

RogueBusters Update 4/21/23

Prefabs, generators, and FOV

Field of View is working, and I now have a simple scripting engine to place prefabs:

Building interior of a restaurant

It just places them in random positions, but I’ll soon be able to specify positional hints to the generator so things end up in the right place. There is also a template engine for generating names and other types of text. Here are some examples:

Full name: Harriet Santana
Full name: Lyle Berger
Full name: Eloise Delarosa
Full name: Phillip Combs
Restaurant name: Hanson's Family Restaurant
Building name: Fields Plaza

I plan on using these templates to generate basic NPC dialog, but I would much rather have GPT-3 or GPT-4 do the talking. Maybe we’ll get there, I don’t know yet, but the template-driven dialog should work fine for now.

Other than walking around, there’s not much you can do in the game, so I want to work on inventories and items now. Then I’ll work on NPC interactions and combat.

Roguelikes Roguelikes Roguelikes

Started a new project. I renamed gpthack to strafe. It’s a first-person roguelike engine now. I may use it again in a later project. I started another project I’m calling RogueBusters:

View of the city

It’s set in the 1920s and based on a role-playing game my high-school friends and I used to play back in the day. It’s not much at the moment. The city folk just walk towards a random target and then stop. You can walk inside buildings, but I just got prefabs working, so there’s only one thing inside them:

Some tables with chairs

I’m staying with Rust for now although I’m having a rough time with it. I don’t want to stop and actually learn new concepts like ownership and lifetimes. I can focus on the gameplay features I’ve always wanted since I don’t need to worry as much as I have in the past about graphics and physics.

Hopefully, I’ll see this one through, but I’m not making any promises. I would rather be disciplined than motivated, but I’ll take what I can get :).

gpthack update

Working on extremely basic procedurally generated levels, and, afterward, I’ll work on generating content using GPT and Dall-E. To be honest, I will probably make some basic UI elements before that, but I’m hoping that will be straightforward. It never is, but I can dream, right?