Archive for January 2017

So yeah

Lots of awful things going on right now in the world; kinda afraid but maybe writing a couple things matters, if only on a personal “here’s how I feel” way. A lot of these ideas originate from my girlfriend, who’s a very very smart and insightful person.

– Nazism and fascism are really terrible & inhumane worldviews and shouldn’t be supported; instead there ought to be active work to really drive home why they’re awful ideologies. Some people will probably never learn, but a majority showing that they don’t want said ideologies to their lives is the most important thing for ensuring that things can get better.
– People should be treated as equal, no matter what their ethnicity, religion etc. is. All consciousnesses are important and should be allowed to lead meaningful lives with as little suffering as possible. Ensuring this for as many as possible is the end goal of all legislation. “For the greater good” isn’t a good argument nearly 100% of the time because being able to argue for it would require complete factual knowledge of the situation and how the different outcomes would increase/decrease suffering (which almost never happens).
– A mindset that aims to increase the happiness of a group of people via making others suffer is wrong. Increasing the suffering of a consciousness is disproportionally worse than increasing the happiness/pleasure of another. We cannot estimate if one person’s suffering is equal (or of equal “worth”, although saying it like that sounds wrong) to another’s and thus we cannot argue for actions that are based on the assumption that they are equal.
– Increasing a person’s understanding of the world is the best way to ensure that they can make meaningful choices in their life which do good things that lessen suffering in the world. A worldview that isn’t based on factual knowledge, and especially one that actively opposes factual knowledge, will lead into choices that hurt others but also the person making said choices, even if they initially do not feel that way.

So yeah, I feel that things in the world have mostly progressed positively towards a world where more people out of the Earth’s total population can lead meaningful lifes, and really hope that people who short-sightedly seek the advantage of their small in-group at the expense of others don’t manage to undermine this progress, be it Trump, neo-nazis, populists or anyone else.

Weekly progress post #49: I keep forgetting to disable the welcome message

thopter

In today’s stream I added a new room and a new enemy while tweaking a couple existing levels, fixing some bugs and in general making the new area feel like its own thing. Surprisingly the moving platform bug I started the stream with ended up being fairly trivial to fix! More lurk ahead, though…

Image Generation Algorithm

Well then!!

I decided to release the image generation algorithm I’ve been working on. I feel that I went kinda overboard with the legal license stuff but it seems that those are the norm, so hopefully everything is okay there. Please tell me if not! The zip contains an executable, the source file, lua files for the algorithm and a variant with wrapping enabled as well as a readme file.
 
Again, this algorithm is heavily based on the WaveFunctionCollapse algorithm by mxgmn.
 
To open the source file, you’ll need two MMF2 extensions:
Surface by Looki
Xlua by Justin Aquadro

GET THE ALGORITHM HERE

wfc9

Procedural generation is dear to me.

After that previous post I decided to finally add a ‘Procedural generation’ tag for my blog, and went through all the posts to tag them if applicable (with games like Excavatorrr I mostly tagged posts with pics!)

It made me very happy to realize that my blog has essentially begun with a procgen project (Excavatorrr) and continued to feature said thing frequently through the years. If I look at the stuff I’ve made, a nice amount of my games incorporate procedural generation in some form (Masjin, CWOUN, Excavatorrr, Paradise Fort, World Generator off the top of my head), and this recent interest in things like theĀ WFC algorithm and Markov chains provide evidence that my interest in procgen hasn’t really waned. Quite the opposite, I guess!

So yeah. Thanks, procedural generation. U the best.

More image generation, yay

So! I spent some more time working on my image generator algorithm based on/inspired by the Wave Function Collapse algorithm.
Here’s what I ended up with the last version of my first generator:
wfc4
At that point it was really really slow even with very small input pics (you’ll notice that the output image is smaller to help; the gifs don’t represent the actual generation speeds!)
I decided to re-do the whole thing, this time trying to implement as much as possible in lua. In the end I got it working much, much faster:
wfc5
I implemented some more things after taking that gif, but sadly didn’t make any new compilation gifs. I think this next one is done with a later version (tried to make an input that’d generate roguelike-like areas). Fairly sure I kept improving the algorithm after that, too!
wfc6

Finally, I made some simple roguelike-like map generation using the final iteration of the algorithm! First with a more basic “tunnels, walls (and water for some reason)” pattern:
wfc7

…And then with a more complicated pattern:
wfc8

All in all I’m really happy with how this thing turned out, even though it’s not really a match for the WFC algorithm. I think this could be useful when generating levels, although I think it’d have to be comboed with multiple input images to really work. Maybe first an input image that defines various ‘areas’, then separate inputs for all those area types? I’d like to release the source of this but I think I’ll have to ask ExUtumno who made the WFC algorithm first, since my algorithm is very heavily inspired by it.

Weekly progress post #48: Tutorial

Today’s stream was fairly low; a new enemy was added as well as a new room (although said room contains some special features!) I spent a bunch of time on a tutorial for dynamic tiling I had promised previously; at first I intended to make a video tutorial but that didn’t turn out so great so I went with a more basic tutorial instead. The file is for Multimedia Fusion 2, but should work in Clickteam Fusion 2.5 as well.

GET THE TUTORIAL HERE!

 
I’m pretty happy with the fact that I’m currently working on the penultimate ‘normal’ area of ESA 2; after this and the next one, things are either optional, smaller parts of existing areas or otherwise nonstandard. Gives me hope that this one’ll be actually finished eventually!!!

Weekly progress post #47: Slime

Today’s stream saw the return of an old friend, made in the very beginning of the game but taken out due to changes in plans. I’ll have to tweak said entity to make it fit its new home, but I think things’ll be fine. Also spent time on making slime feel more slimy and adjusting the area currently in the works, as seen above! Next week we’ll get into some even more slimy areas, though!

(Aaghh this game has been in development for 2 years soon)

(Also toyed around with the procedural generation algorithm! It’s been a fun little sideproject and I’ll try to utilize the results in a roguelike or something (inspiration from Caves of Qud, which successfully uses the actual WFC algorithm for dungeon generation, as far as I know. I think my homebrew algorithm could manage something similar, even if not equally consistently!)

Weekly progress post #46: Lasers

I wonder if a progress post is already called that? Whatever. I’ll try to reduce the amount of gifs I post for a bit so that I don’t end up revealing everything about the game before release!!

Today’s stream was fairly laid-back, but I managed to add 2 new enemies, a new trap, a new room, some decoratives and a new platforming element. The aforementioned platforming element is kind of an odd one and it’ll be interesting to see if it’ll be fun to utilize, but at least it shouldn’t be overly frustrating(?) There’s again a bunch of behind-the-scenes work that needs doing and I’m dreading that, but hopefully I’ll manage to muster the motivation to tackle it. Last week I didn’t have time to stream at all, so I’ll try to make up for that sometime in the future with an extra stream.

Procedural generation, yay!!! Also Ludum Dare results

After seeing the developer of Caves of Qud utilize the Wave-function collapse generation algorithm successfully for generating roguelike environments, I felt like it’d be fun to try to implement something akin to that in Multimedia Fusion 2. The original algorithm (You can find it here!) was written in C# and after trying to parse the code for a while I gave up and thought up how to approach the algorithm based on the general description of it on the git repository. The result isn’t nearly as nice and tidy, but it was fun to dabble with and it just might be useful for something if I can get it optimized a bit.

First try:
wfc

After some tweaks:
wfc2

Current state:
wfc3

As you can see, the algorithm suffers from slight misalignments here and there, making the results less neat, as well as small holes that are technically ‘handled’ by the algorithm but for one reason or another don’t get assigned anything. The generation is also very slow, something that can’t be seen in the gifs.

Anyway!! Ludum Dare #37 results arrived! Sadly, Salvage Star didn’t fare very well – it got in the top50 in the Graphics category, but that’s it. Very much understandable since the game ended up being really hard and frustrating + I guess people have kind of seen the ‘singular huge enemy you climb’ -thing already at this point. Still, I of course kinda wish it had fared better! Maybe next time. At least the game gave me some good data on how to get moving platforms to play nice.

Download Salvage Star

 

salvage5