Most people reading this already know what Bopimo is. It's the online 3D platformer where you can make your own levels! But this online 3D platformer has been taking ever-so-long to finally meet it's sweet release. In this blog post, Leon and I will explain what's been taking so long.
It has been over a year since Bopimo was announced, and it still isn't finished, so I'm sure you're all direly wondering: WHAT'S GOING ON?!
I hear ya', buddy. So, in honour of full transparency, we're going to be overviewing some of the reasons why this is. Hopefully by the end of this blog post you'll be a little more understanding of the current development situation.
What's Taking So Long?
If you didn't know already, Bopimo only has three people working on it. These people are me, Isaiah, and Leon and we created Bopimo. Isaiah does everything related to the website, which includes this blog, the shop, avatar customization and other features found on the website. I do everything related to assets and social media, which includes items, artwork, icons,social media posts/videos as well as a variety of other things. And then Leon has the hardest job of them all - he does everything related to the client. The client is what Bopimo is all about! Everything you have seen from the client Leon has had to code all by himself. He's had to work through several bugs and issues to get everything to work correctly, and he still has a lot more to add to Bopimo. This in itself is a slow process, but it gets multiplied when Leon's greatest enemy comes into the mix: College. I thought it would get better when Leon's summer break started, but I was wrong. His teachers gave him summer homework and a summer project to do. Seriously? Who does that! In addition, his school year starts soon, which means he will have even more homework to do. I can imagine how stressful and exhausting it is for him to do. But anyway, I'm not Leon, so I'll let The Leon himself speak about all of this and his own experiences.
Yes, the bane of everybody's existence: school.
Trying to balance school, game development and personal projects has proven not to be my strongsuit. I find it difficult sometimes to maintain these various projects and passions. Where Bopimo should be my secondary focus behind schoolwork, this sometimes isn't the case and it will instead be something other than Bopimo. In addition to struggling to maintain various personal projects with schoolwork, finding the motivation to work on Bopimo can sometimes be difficult. It's not just Bopimo though; I procrastinate many things, and this is something I'm actively working to improve.
Building a game client is also no easy task -- this has been clear throughout Bopimo's game development lifetime. Since I am the single core game developer for Bopimo, this leaves me in charge of maintaining absolutely everything, all the way from perfecting Bopimo's various platforming mechanics to making sure pesky hackers won't abuse the multiplayer features. With this being said, let me dive further into the most challenging obstacles of developing Bopimo.
I come primarily from a single-player video game development background. Or at least I did, until we started working on Bopimo. Because of this lack of experience in networking and multiplayer game development, I have basically had to learn all of these skills at the same time as developing Bopimo. This has lead to problems such as refactoring code, scrapping entire builds and lots of headaches. I'm even sometimes still finding myself learning new networking concepts and realising that I was doing something stupid.
If you ask me to explain what a Quaternion is, I will absolutely not be able to answer with confidence. Despite me working on 3D games for over 2 years, working with Vectors and Matrices are still sometimes like trying to read an alien language. So, in a game which uses many of these operations constantly, you can probably understand how it may get complicated and messy. One example which comes to mind is when I spent many months working on the problem of getting the player's Bopi to smoothly slide down surfaces when rolling and allowing the player to control the roll direction. Months of headaches and agony, all to realise that it only required the usage of a single built-in Godot function. Yep, a massive face-palm moment for everybody on the team. I do however feel as if I'm more experienced at this point, and finishing up our lovable Bopi's moveset should hopefully be smooth-sailing from here on out.
Video game development and migraine-inducing bugs are a symbiotic relationship, which becomes especially true when making multiplayer games. Not only do you have to account for bugs on the client-end, but you also have to account for the server and other external clients. In a single-player game, for example, I might play through the game and find a bug, and then swiftly fix it. However, debugging in Bopimo involves me running both a server and multiple client instances on my own personal janky laptop and carefully monitoring everything individually (the clients, the server, how clients interact, etc). As you might imagine, this can be pretty time consuming and boring.
I'd like to add to this. Some of the bugs can be very difficult to track down! For example, we had a bug where placed down blocks were just disappearing for no apparent reason. I had to open up a server and join on several clients as well as keep track of the block IDs inside of the console. After all this, we discovered that the reason blocks were disappearing is because they were being overwritten by new blocks. After this, Leon would have to go through his code and figure out why this is happening, and then see if he can fix it. After this, we test to see if it was finally fixed. Another example can be found when block deleting was added. During level creation, I would delete blocks and then wonder why no more new blocks would appear. It turned out that when there was a missing number in the block IDs, the whole system would just break and not allow any new blocks. Leon got this all figured out, but it's a long process that gives headaches to everyone involved. Bopimo being a multiplayer game makes adding simple features a lot more complicated than they seem on the surface.
It's practically impossible to predict the release date of Bopimo when school and other events are so unpredictable. We planned for Bopimo to release this year in 2021, but I don't think we will be able to meet that goal anymore.
Bopimo's eventual release date will ultimately come down to getting Bopimo to a point we feel comfortable enough with that we can safely predict a realistic date. As FireCat mentioned, judging by the current pace of development, a 2021 release date seems further and further away from being a viable goal. However, this could change if development is to speed up significantly. Finger's crossed!
Personally, I've been working on a few things! First, I've been designing some button prompt icons so Leon can properly add controller support.
Many users have requested that I show off more of the items that I have made. With Bopimo not being out, I've just been creating items and stockpiling them to release gradually once Bopimo releases. I think so far, I've made about 90-100! I'll be showing off some of these items in the photo below.
Right now the primary objective is to smoothen out the Bopi's movement and get it moving around fluidly, and also finish everything in the Bopi's moveset. A good start for this was tweaking the Bopi's properties and values to get it in a state I'm happy with. In addition, I also started work on getting keybinds working, so that players are able to change any of the controls if they so wish. This will eventually tie in to controller support once that has started.
Jumping was also looking a little bare bones, so me and FireCat worked on sprucing up the Bopi's jump animation and making it look better. Some new particles here and there as well as some new animations by yours truly has, I think, really added new life to the movement as a whole. Tell us what you think in our official Discord server!
If anyone would like to help work on Bopimo as a volunteer, that would be awesome! The only position we really need is a client developer to help develop Bopimo. But, of course, there is a few requirements. First, and probably the most obvious, is that you must know how to use the Godot Engine and GDScript. Second, you must have experience in networking. Bopimo is an online game, so knowledge of networking is a must-have. Third, you must be a kind individual and someone who we are able to put our trust into. You should also be available to work at least a couple of times a week. Keep in mind I don't develop the client, so I don't know too much about what's needed in Godot. I'll let Leon talk about all that.
If you are interested, shoot us an email at [email protected]!
The job would be strictly voluntary, as we are independent developers and don't have any funding or backing for it to be a paid role (Bopimo's development has always been paid for out-of-pocket, and none of us earn any money at all from this project).
We use Godot's high-level networking API (ENet) for Bopimo so you should have experience with this. Being able to use Git (specifically with GitLab) is also a massive help since this is Bopimo's chosen version control tool. Some experience with GDNative is also something we highly appreciate but don't worry, as it's not a required skill. If you feel comfortable with these and the aforementioned requirements, then I'll be very pleased to be working with you to help make Bopimo the absolute best it can be!
All in all, we're really just looking for individuals with the same passion and dream we have here at Bopimo. An extra set of hands to help make this dream a reality is always appreciated.
I just have to say thank you all for sticking around and waiting with us over time, even if the wait for Bopimo can be a bit boring. We try to be as honest as we can with everyone, and we intend to stay that way no matter how much Bopimo grows. I'm grateful that we have such an understanding community.
Seeing the massive support and interest that the community has for Bopimo has been heartwarming and for my closing thoughts I just would like to express my appreciation for all of you. I hope that we are able to make your wait worth it!