Procedurally generated programmer
In the previous post in this series we saw how terrain is generated and how the procgen system decides each area in the world will be connected, which controls the progression of the player through the game. In this post I explain how the contents of those distinct areas are filled. As mentioned earlier, while Binding of Isaac and Spelunky use hand-designed templates to generate this content, Lenna’s Inception takes a different approach.
This part of the procgen system is aware of the spatial relationships between objects. By formalizing (making strict machine-readable rules) the constraints each kind of tile places on its neighbors, the system can choose where to place randomized objects without breaking the game. As an example rule, a cracked rock requires floor next to it so that a bomb can be placed there. If it was placed next to some water, the bomb would sink and not blow up the rock. The system understands this could prevent the player from progressing and will not by default put water next to cracked rocks.
UPDATE 2014-09-15: The second part of this series is here.
I regularly get asked how the overworld is generated. I actually started writing it up in a series of blog posts here on bytten-studio.com last year, but it became difficult to keep this up to date with the implementation. The implementation was changing too much and too often!
Things have stabilized somewhat now, so in this two-post series I’ll give an overview of how the procedural generation in Lenna’s Inception works. I’ll skip over some of the details to keep the length down, but if you need more detail on something specific for your own project(s), I’m more than happy to help you. Feel free to contact me on twitter or by email, but please try to understand that my time is very limited!
Procedural map generation in contemporary video games tends to fall into two categories:
Lenna’s Inception doesn’t really fit neatly into either of those, because while it’s linear, it doesn’t rely heavily on hand-designed room templates. It takes the linear gameplay of the first category and and increases the degree of freedom of the procgen system to a level comparable to the second category.
Let’s start by taking a look at the design of some of the most closely-related games that use procedural generation and randomization.
As a bit of an aside before we get into the screenshots, I’ll be demoing Lenna’s Inception at the Cambridge Computer Museum next Friday for a BYOB retro videogame night. If you happen to be in Cambridge (England) on Friday, come along and share a beer with me! :)
Wednesday is the birthday of H.P. Lovecraft, author of “The Call of Cthulhu”! Here’s a Lovecraft-inspired cutscene I’ve been working on:
Quick reminder first: beta3 is available right now. Among other new features, it includes randomized potions and tunics. Go and download the update if you haven’t already!
If you’ve been collecting the lost library books, you might have noticed the title of one of the books hints at an intelligent race of bears. Although I haven’t written the content of the book yet, these bears are now wandering around in my development builds!
Lenna’s Inception version 0.4 (beta3) is live. Get it from the usual place.
As per usual, in order to access most of the new features you’ll need to visit the starving artists’ house in the town and speak to the NPC inside to regenerate your maps. This won’t cause you to lose any progress.
When the game starts, Lenna’s students are killed and she sets off to report this to the guards at the palace. Until now, the palace has only been mentioned in dialogue. Now it’s a real location.
It has the beginnings of an interior too:
Some weeks I take part in an event in the twitter and reddit game development communities known as ScreenshotSaturday. It’s an opportunity once a week to share screenshots with other developers and find out how your favorite projects are coming along.
If you’re curious what I’ve been working on for beta3, my submissions are below.
Lenna’s Inception version 0.3 (beta2) is live. Get it from the usual place.
In order to find the new shopkeeper in a pre-existing save file, you’ll need to visit the starving artists’ house and talk to the NPC inside.
A shop has been added. This can be found near the library and school. Regarding the items on sale:
Read on for the rest of the changes.
Over on LennasInception.com I’ve written up a blog post listing some of the Youtube videos and Let’s Plays about Lenna’s Inception that have turned up this week.
Quite a few videos of the beta showed up this week. I watched every one I came across. Besides being a lot of fun, it has helped to find bugs and rough edges in the game. You can bet that beta2 will be a much smoother experience thanks to these videos!
Anyway, I thought I’d do a quick round-up of some of the LPs and videos that appeared this week:
First up, and with a special place in my Archangel heart, is TRSCP, who has been playing since the alpha. If you want to watch an old hand at work, look no further…
Read the rest of the post here.
At the end I also summarize the video policy. The tl;dr: no restrictions, no permission needed.
I’m delighted to announce that Chucklefish, the wonderful team behind Starbound, are publishing Lenna’s Inception!
The brand new website over at lennasinception.com is a product of theirs. We’ve also added Lenna’s Inception to the Chucklefish forums – which will be a fantastic place to share your leaderboard scores and speed-running tips (as well as for discussing everything else relating to the game). Aside from that, they’ve been providing tons of support and advice. I’m really excited to work with them!
The new website will be the primary way to keep up to date with the latest news about Lenna’s Inception, but I’m still planning to mirror posts on this website (and on IndieDB as well, although less frequently).
As of today, Lenna’s Inception has officially reached beta status!
While it’s in beta, you can purchase the game for £2.99 GBP (approximately $5.13 USD at the time of writing) on itch.io: