It's been a long time since the last blog post, hasn't it? Maybe you all thought Bopimo was dead and that it was never going to release. Thankfully, you couldn't have been more wrong!
If you haven't watched it already, I'd recommend watching the Rolling Fun video we released in May 2021 so you can see just how much has changed since then!
It's been like, what, 3 years? Where has Bopimo been?
Ever since January of 2023, I’ve been rewriting the entire client from the ground up in Godot 4. This means I have replaced Leon as the main client developer.
Isaiah has been finishing up a lot of the website's features. User messaging, buddy (friends) system, themes, many APIs, and entire move to AWS, queued rendering, pusher events (website & game server communication), an automatic Git builder, and a ton of other fixes, changes, and new features. Leon has been working on the launcher and installer, which allows Bopimo to automatically update when you play a level after a new update is released.
In this blog post, I'd like to share a lot of what I've been working on for Bopimo over the past year. I wrote my implementation of blocks to be able to support Action and Decoration blocks from the start, assigning every block type a unique ID instead of only being written around shape blocks. Levels now all have permissions that you can assign to other players, so you don't have to make your levels by yourself!
What is a "Level", anyway?
Think of a level as a stage in a Mario game. They have a defined start point and can be completed. To complete them, players must navigate through the level to collect all of the Completion Stars, which are a type of action block that level creators can place in their levels. If you don't know what an action block is, blocks in Bopimo are currently split up into four categories. Shapes, Decoration, Action, and NPC. Shape Blocks are a class of basic blocks that represent primitive shapes. They don’t have any other special function. Some shape blocks include a Cube, Cylinder, Sphere, Ramp, and a few others. Decoration Blocks are decorative blocks that may have functions, but no functions that interact with the level. For example, there’s a torch decoration block that emits light and particles. Action Blocks are the most fun type of block, being blocks that have special functions. Spring blocks will bounce any Bopi that touches them. Cannon blocks will launch out any Bopi that enters them. Breakable Blocks have their own health and get destroyed when ground pounded or attacked. All of these blocks have their own adjustable set of properties, such as bounce force in Springs, and fire power in Cannons.
If you'd like to read more about Action Blocks, I also released a post all about them today! Read it here.
Completing levels is also how you earn coins! Every day, if you manage to complete the task of completing 5 different levels, you'll be given 25 coins and 100 XP.
NPCs
New to the Godot 4 client is NPCs (enemies)! These creatures will follow you and try to kill you. Currently, the only NPC is a Bopi, which can customized to the same extent as your own player Bopi! More NPCs will be added in a future update, in addition to a friendly mode where you can assign them dialogue.
Moving Blocks
I've written blocks so that every block, no matter what kind, can be turned into a moving platform with a special set of properties, labeled "Kinematic Position" and "Kinematic Rotation".
Enabling Kinematic Position makes the block move from point to point based on the points that you define. These points are local to the block's own global coordinates, so setting a point to y=15 will make the block move 15 units upwards.
Enabling Kinematic Rotation on a block will make it constantly rotate around a defined direction. You can give it a offset pivot to rotate by as well.
Here's some more gifs of moving blocks!
After release, what's next?
While the current block system is very easy to modify and add new blocks to, it falls flat in speed. The blocks in my client as well as Leon’s Godot 3 client are written in GDScript, which is a very great language, but doesn’t scale well in some areas. After release, I’m going to rewrite blocks and many other features entirely in C++ using GDExtension for maximum performance. I’ve already planned out my data structures that are optimized to use as little memory as possible.
New level features will be added such as new blocks and even more platforming options. You won’t have to wait however long it takes for the C++ system to be finished - I plan on adding blocks in updates to the current system while I work on the new one after release. Anyways, some specific planned blocks are:
- Portals. Portals will instantly teleport you to another Portal block.
- Token Gate. These gates will be special doors that only open once provided with a certain amount of tokens.
- Note Block. Similar to the music note blocks from Mario as well as the Note Blocks from Minecraft. I plan to make them act sort of like a spring, like the Mario ones, but with an adjustable pitch and instrument inspired by the Minecraft ones.
- Dialogue Sign. After release, this block will be used to test the implementation of dialogue into the game. First will come this block, then dialogue options will come to NPCs. You’ll be able to assign text to the sign so it can be interacted with and read to display text onscreen.
Will Bopimo have a game creation studio?
Bopimo is a game where you create your own 3D platformer levels - think of a cross between Super Mario 64 and Super Mario Maker. To create levels within the game, Bopimo has a sort of building style inspired by Blockland. You join your level, and then you can place blocks freely until you publish the level. You view your Bopi in 3rd person mode, with builders having access to special tools such as noclip and an invincibility shield. If this question is referring to the ability to create your own video games, Bopimo does not have that. For a game creation tool, I personally recommend Godot Engine, a free and open source game engine, which Bopimo itself is created in. It has a lot of useful things packed inside, such as the ability to use virtually any programming language as long as bindings are made for it!
Will there be controller/console support?
Controller support exists in Bopimo, but it is currently limited to movement only. Controller support will be expanded in future updates, and one day it would be nice to have Bopimo on consoles.
Can I purchase access to beta?
Sorry, but we aren’t selling access to beta. We just give out beta to our friends or specific people who’ve been active in the community for awhile. Selling access to beta just feels too insincere and greedy to me. Nobody is missing out on anything by not being a tester, as the only thing the testers get is a joke shirt item - no exclusive hats or anything.
Alright, so when is it releasing?
”This year!” we said last year. And the year before, and the year before, and the year before. Clearly, we are terrible at actually coming up with a release date.
Remember that me, Isaiah, and Leon are all just people. Bopimo wasn’t created as some business venture to get peoples money. It was created because we wanted to make a video game. To me, it feels more personal to create something out of passion ourselves. We didn’t pay somebody else to write code, or use some AI to generate things. All items were modeled and textured by hand by me. Isaiah wrote the website code and wrote his own stylesheets. Leon writes the launcher, and he wrote the client code before I took over, and now I write all of it. I hope this never changes, because I feel the human touch is what makes Bopimo feel so special to me.
With that, I would just say to stay tuned. It all depends on the variables of real life. Isaiah still has some website stuff to finish, Leon has a few launcher things to fix, and I have some client bugs to work on. It’ll mainly depend on how the factors of Isaiah’s life go, and how motivation ends up. For Bopimo, it isn’t that hard for me to find motivation, so I’ll be able to release updates quickly after release.
Closing Thoughts
Once the release date for Bopimo is set in stone, it will be revealed in an official trailer video. The trailer is mostly completed, but I don’t want to release it until we can ensure that the release date shown is entirely concrete and won’t be delayed or changed. In the meantime, I recommend watching this video by Isaiah, showing off a level his brother made!
If you want more videos, some of the beta testers have uploaded gameplay onto YouTube, such as logician!