Archive for the ‘Procedural generation’ Category.

Mamono Mower

Exuno & Goost from the Mystery Fun House blind speedrunning community inspired me to make a lawnmowing-based game. After some jokey lawnmowing crossover suggestions, I started feeling that I wanted to actually make one of them real, and proceeded to spend the rest of the night programming a simple HTML5 lawnmowing-minesweeper hybrid. And this is it! Based on Mamono Sweeper, which you should definitely check out!

You can play the game in browser on Itch.io!

This was also a very useful learning experience with various quirks of Clickteam Fusion 2.5’s HTML5 exporting feature.

7-Day Roguelike Challenge + 10 year anniversary??

After ~4 years of trying and failing, I finally took part in the 7-Day Roguelike Challenge (or 7DRL, as it’s generally known as) last week (https://7drl.com/). I still failed to finish my game in time, but compared to the only previous time I’ve actually managed to create something (in 2016), the addition of lua to my repertoire allowed quite a bit faster development and I actually got pretty far with my project. Sadly, after streaming for 8 hours on one day, I had a headache for 2 consecutive days and that kind of destroyed my chances of actually finishing. Still, I’m pretty happy with what I have now and thus decided that instead of submitting an obviously unfinished game for the challenge, I’ll try to poke at it and make it available when some of the more obvious missing features are in.

I’m especially happy about the font.

In other news! I was looking at the nice list of months in the blog sidebar, and it suddenly dawned on me that this blog is now over 10 years old! My inability to post regularly has consistently kept it from being as neat as it could be, but I’m nonetheless very happy that some kind of a catalogue of my past game-development endeavours has stayed alive this long. Thanks to Excavatorrr for giving me the push to set this up originally.

Now let’s see if we’ll get another 10 years of use out of this…!

Oh yeah, and one more (set of) thing(s): I was going to give a talk about Baba Is You at the Game Developers Conference, The MiXit conference and an event called Addon, but the first two have been canceled thanks to COVID-19, and since the third would be organized in France, I would be very surprised if it wasn’t cancelled as well. I’m currently also awaiting word on what’ll happen with Nordic Game Jam this year. Wild times.

Weekly progress post #118: Rise from the ashes

It’s real! I promise!! Now that Baba is out, keeping a weekly schedule could technically be easier(…?)

I’ve streamed ESA 2 development a couple times again and progress has actually been fairly good! Still in the early stages of the… remake? Let’s call it a remake. But the features I’ve added have mostly felt pretty nice.

Last night I worked on the triple shot!

Ludum Dare #43: Sacrifices must be made

Ludum Dare #43 was last weekend! I have some exams coming but really wanted to participate; the theme didn’t initially give any inspiration and I was ready to call it a studying weekend, but then an idea struck and I ended up creating something.

My entry is Ludum Dare Simulator, a game where the sacrifices come in form of allocating time and resources to finish a game under the 48-hour time limit. This is done by placing blocks on a grid where every cell represents a single hour of Ludum Dare. The game is heavily inspired by the boardgame Patchwork that was recently shown to me.

The game itself is fairly simple (although the underlying scoring rules are way complicated, oh well), but for me the most interesting bits come after the player submits their game and goes to the scoring phase. I wanted to add some funny stuff to liven up the experience, so there are some surprised to be seen after finishing. It felt really good to finish an LD entry, considering at least two of my previous entries (Sublunar Vessel and Super Metabolism Bros) were left in a somewhat unfinished state. I even had time to compose music!

Ludum Dare page

Download the game


Mandelbrot sets

I started experimenting with visualizing fractals. At first I tried to do it on my own, by looking at the (actually not super complicated but still a bit beyond my understand) Wiki article about the Mandelbrot set:
0.
Then WikiHow of all things came to my aid and I slowly figured it out:
1.
2.
3.
4.
5.
6.
7.
All of these are about 2x the actual rendering speed, apart from the final one which somehow runs at 4x speed despite telling it otherwise!! Anyway, this was a really fun diversion. Not useful, though, I think.

Text generator!

I polished up a markov chain generator I’ve used to generate e.g. book titles to make it more approachable, and here it is! You’ll have to gather more source texts on your own, but the engine itself should be quite user-friendly, if a bit bare-bones.

GET THE GENERATOR

The generator is also open-source; the engine itself was made with Multimedia Fusion 2, but the generation agorithm is pure lua so you can try to figure out what’s going on there if you so please.

News! And stuff! Part 2

So then, there’s a bunch of other stuff that’s happened gamedev-wise, so let’s list some images!

– Baba’s “programming” system is complicated enough that it allows for making games inside Baba! They lack certain vital stuff but here’re Space Invader, Snake & a platformer! The Space Invader thing was done a longer time ago so it might not work quite as nicely right now with the layout it has there, but the idea should be reproducible. Baba also has a Twitter account now, @babaisyou_!

– Some more pics of the game. The bottom-most image with the “Empty Is You” showcases one of the more hard-to-grasp elements of the game and it’ll be fun to see if people get them.

– I’ve been toying around with text generation using Markov chain -based techniques. It’s a lot of fun, and I’ve generated stuff using movie scripts, cookbook recipes, MtG cards, airline catalogue ads, motivational sentences and book/movie titles. I currently have two engines, one of which is more customized and works better on longer texts, and another that’s less sophisticated but more chaotic and thus a good fit for short texts.

I’ve set up two Twitter accounts for posting generated stuff: @chaingenerator miscellaneous text and @MTGmarkov for MtG cards only. Like so:

– I participated in the Nordic Game Jam a couple weeks after GDC! I was still kind of exhausted from GDC and Stumblehill was causing me stress so I didn’t manage to concentrate very well, but I nevertheless managed to make these little prototypes. One is a gam jam simulator showing little jammers walk around the venue with game ideas, fulfilling their basic needs. There’s no gameplay but it’s fun to watch. The other is a cooking game prototype where you can make dishes that get named procedurally. Pretty neat but the idea was too meny-heavy to be fun to implement at a jam. You can find both games on my itch.io page!

Weekly progress post #89: Slog

Today’s stream was spent mostly on updating Baba’s levels into a new format; I had changed the positions of the various objects in the editor’s “reference map”, so to say, so all the levels were just randomish garbage. I had planned to re-do all the levels by hand but talking about it aloud on-stream made me realize that coding a conversion tool would probably be easier. And so it was! Converting all the levels + adding their names back still took a lot of time, phew. I also started implementing the game’s map again; I’m still missing some features to make the map to my liking so for now I’ll just recreate the old map in order to make sure that I have a fully working version of the game handy when needed. I’d say I need one more stream to be at the point where I have the game fully working again, with some jank here and there. After that it’s just a matter of adding the new map features in order to make the whole system work in the way I want.

In other news, I’ve been super into markov chains again and recently revisited my old generator, this time redoing it from scratch with the generation now being done a letter-by-letter level instead of word-by-word. The results are really promising and I’ve had fun generating texts from a public domain cookbook & the script of The Two Towers:

In fact, this stuff has been so much fun that I finally started a twitter account that I can use to share generated texts I find amusing. It’s called @chaingenerator.

Markov things

I put parts of Lord of the Rings script and recipes into the generator:
frodo
frodo2
frodo3
frodo4
frodo5
frodo6
(Some of the later ones use only the script and no recipes because I accidentally overwrote the recipes that best fit with the script + the results weren’t that interesting.)

Weekly progress post #76: Recipes

Today’s stream was kind of a silly one; I spent most of it working on a markov chain recipe generator. I had made the generator itself last spring, but the recipes I used then were written by random people and thus had fairly different ways to express themselves, making the generation less interesting. On top of that I was a bit uncomfortable with showing the generator off with the data being recipes ripped from the internet. Today I went and dug up an old Chinese cookbook I have and started adding recipes from that instead; the book is from 1984 and old enough that tofu wasn’t a common thing in the west yet (it’s referred to as “bean cheese”). Since the book is in Finnish, I had to translate it on the fly which probably butchered a lot of the grammar, but at least now I have something I can actually show off! As can be seen in the gif above, there’s a lot of repetition (I think I have 7 or 8 recipes in the database atm); I suspect there might be a bug in the algorithm itself because there are large parts of recipes that basically never show up in the generated ones. Gotta look at that! Fun projects.

Baba was also worked on; I implemented a level selection dialogue for when a level has a more difficult variant available. This has been on my to-do list for a long time now but various things (laziness, The International 2017) have reduced my motivation to actually get it done. The way the variants themselves are implement is terrible right now so that’ll need some looking at. As a nice side effect of this work, I separated the names of the levels into a separate file because previously they had been stored in a very nonsensical way that is somewhat hard to explain. Progress!