March 1, 2023
I think it's about time that I started to actually start polishing up BoundWorlds for a proper release. It's been a personal side project for a very long time, and I always kind of hoped it would accumulate interest on its own until I could start working on it full-time, like Dwarf Fortress or Minecraft.
That...didn't quite work out.
So I guess I'm going to have to start working on it like a normal game developer instead, and that means keeping a proper devlog, and (groan) advertising. Well, maybe ChatGPT can help with the last part.
So, what's the state of the game right now? Well, it's functional. You can build and explore worlds in it. The last thing I did was set up the Builder Shop system, to ease new players into the higher levels of world editing features, although that's going to take some playtesting to ensure a good balance.
The main thing that I need to work on is polish. Like most programmers, I tend to focus on functionality and capability first, UX second. But you can't have a good game without a good UX.
So, I guess my checklist before completion is basically this:
- Polish up the World Editor UX so it's easy to use and looks good
- Come up with a solid starter package that can be used to make a wide variety of basic worlds as well as introduce players to world editing concepts
- Create a few demo worlds that demonstrate the potential of the world building engine
- Other UX improvements
- Make the backend more scalable
- Release to Steam
A lot of work for a team of one, but nobody ever said it would be easy.
So, let's get going!
March 5, 2023
I went over the starter package and I think it could use some improvements. The initial enemy list is based more on what I could find free graphics for than what is actually needed to demonstrate the game's core mechanics. Obviously there's some overlap but I should really make plans from the ground up.
Then there's the transformation circles, which will NEED to work nicely. The ability to create your own playable units is one of BoundWorlds' core features, so the demo package should include an object that can transform the player into any creature, and possibly some non-creatures.
I did make that already, but the implementation is a bit sloppy. Players have to read the instructions on the transformation circle to know that they need to place the creature on top of the circle. I can make that better.
March 16, 2023
Implemented a better system for basic flying creatures. I don't plan on making flight TOO elaborate in the base game (though players will be able to create their own flying physics system if they so choose) but what's an action-adventure game without annoying bats and birds that swoop down on you?
So now you can make enemies that flap around and do swoop-attacks, all while using only the basic creature behavior options. I implemented it for the bats in the starter package.
March 30, 2023
Spent most of the week making new enemies. I've made my own custom sprite to replace the old gremlins, now it's an adorable little critter called a "Bitey". They run fast and bite things. I think they can serve as one of BoundWorlds' mascot mooks, unless I come up with a better one.
There are also beetles, bats, snakes, spiders, slimes, floating laser eyeballs, ghosts, insane cultists and skeletons. Each of them demonstrate one or more of BoundWorlds' core combat features.
The Guardian Golems which are activated by triggers and can navigate mazes are still in, as well as the flying fireballs which circle around things.
I think that seems like a solid roster of baddies for players to fill their dungeons with.
April 4, 2023
I've been studying Super Mario Maker's level editor. Leave it to Nintendo to create a level editor that is simple and easy to use. Obviously BoundWorlds has a much more elaborate system, since you can create your own objects, but I can still learn some things from it.
The way you can simply drag and drop objects onto other objects in the editor to make them interact is pretty cool. I think I'll make it so that you can define ways that your objects can interact with other objects in the editor. Almost like a Mario Maker...Maker.
BoundWorlds already has a fairly elaborate status effect system. It'll take some reprogramming, but I think that making status effects that can be applied in the editor could be fun.
Officially signed up with Steam this week. Still need to put a proper page together, I suppose, if I want anyone to notice.
April 18, 2023
Okay! I kind of had to revamp the way that status effects worked, but you can now define a sprite as a status effect, and then apply it to other sprites in the editor to modify them in a variety of ways.
Stuff like Poison and Regeneration were straightforward, but I also made some more complex effects like a Fire effect that makes a sprite red, fireproof and lets them shoot fireballs, and an Ogre effect that makes them bigger, turns them green and raises their maximum HP and physical attack power.
These are just for testing purposes (I'm not sure if I will leave something like Ogre in the starter package). Players will of course be able to define their own status effects that can do all these things and more.
May 3, 2023
Added a system that allows players to define sprites as "containers" as well as give them options for what kind of sprites they are able to "contain", and you can then place sprites inside them in the editor. This works similarly to the Status Effect system.
Currently "contained" sprites are just in a kind of limbo in-game, and can only be interacted with via custom functions.
Using this new system, I updated the Transformation Circle sprites so you can place a creature "inside" them, and then when the player steps on it they transform into that creature.
This can also be used to create things like chests and crates that release the sprites inside them when opened/broken. However, there is no current built-in option to do this, it must be done through functions. I should make an option to "release contained objects when destroyed". Seems like a reasonable expectation.
I'm remaking the entire Memento system.
For those new to BoundWorlds, Mementos are how the game manages "save" features. Normally, when a player leaves a world or exits the game, the world is reset for them when they re-enter it, and the only data that is retained across worlds and sessions are the items they collected.
Mementos let you store a set of variables inside a single item, which are invisible to the player. They can discard the entire Memento when outside of your world, but they cannot adjust the variables inside it. This lets you ensure that if they have a Memento, its saved variables are consistent with your world's rules.
For some reason I thought it was a good idea to save data in a string of bits, and have each variable represented by a certain number of bits at a particular location in the string. While this is a very space-efficient way of storing data, it is also not very user friendly from a world builder's perspective.
So, I'm going to change it to be more user-friendly.
I decided to hire a graphic artist to remake the main character's sprite. I think it would look a lot nicer if it had full 8-directional movement and maybe some professional touch-ups.
The Memento system has been updated. Mementos can now be defined with a "template". Mementos can also store object-based and array data now, rather than just strings and integers. This will make it possible to save much more complex data associated with a given world.
It's still kind of complicated, but at least now it's not more complicated than it needs to be. I suppose Mementos will always be one of the more high-level features of BoundWorlds. Other players can just give the player an item as a reward for completing a task and check to see if they have that item when they need to know if the player completed that task or not.
Speaking of items, there are other things that should probably be revamped. As they are now, the only thing items can do is run custom functions. This is to be expected for more complicated items, but what if a player just wants to create a potion that heals some HP, damages an enemy or applies a basic status effect without meddling with the function system?
I think I will add a "Simple Item Use" section in the item editor, just like the sprite editor has a "Simple Player Interaction" section.
Added a whole bunch of new features that should make it easier to create basic items by simply selecting the options of what they do from a list. We've got canned animations (holding up the item, throwing it at a target), targeting rules, MP cost for spells, the ability to define a basic status effect inside an item in addition to applying an existing status effect sprite to a target for a set period of time, HP and MP recovery, damage, stuns, knockback and elemental-typed magic, and the ability to spawn other sprites. And all those can be done WITHOUT getting into custom functions.
There are some interface issues that need to be polished up a bit though. I'll work on that before I focus on the next big feature.