Julien Jorge's Personal Website

Bim! Let's play.

Fri Jun 21, 2024

Table of contents

I have finally published an APK of my game so you can test it!

I have spent too many days doing just a last tweak before releasing, really, just a last one then we are good, this time it is for real… But the reality is that there is always something missing. So I took it upon my self and stopped all devs. Let’s release, never mind what’s missing, I think we can beta test.

As a reminder, Bim! is an online multiplayer game, and since there are not many players I would suggest to synchronize with friends if you want to find an opponent.

Bim! in short

Bim! is a bomberman-like game. Up to four players are stuck in a small arena with a single goal: be the last person standing. The players can drop bombs to destroy the walls or, ultimately, attack another player. Sometimes the broken walls will expose a bonus such as extra bombs or an increase of the bombs’ blast distance. Here is a short video to illustrate the game play (click the thumbnail to play it):

As far as I can tell there is only one other Android game with a similar game play and online games, and it is unsurprisingly non-free software. In its current state the game play of Bim! is limited to the essential. It should expand and get more precise with the next versions all while keeping the basics: fast and fun games, and a good atmosphere. And it will remain free, of course!

What’s new

I made the following changes since the last time I talked about the game.

I have replaced the software joystick with some kind of directional pad and I have added a small vibration on the directions, to inform the user that the change in direction has been taken into account. With the previous stick I always ended up with my finger on the other side of the screen, pulling as if it was a physical stick. Plus I really disliked the feedback. With the pad it seems more intuitive to me, even if it is not ideal.

I have modified the way the player’s inputs were transmitted to the simulation. In the previous implementation there could be many actions in each tick and their application was immediate. Now there is only one action per tick and it is applied with a short delay.

This delay is useful for online games. With an instantaneous effect the action was applied locally then sent to the server who forwarded to the other players. During the time taken by the transmission the other players had moved the simulation forward of many ticks and had to repair the simulation with the freshly received actions that were previously unknown. The effect was that the opponents tend to pop on their new positions, which was quite ugly. Even with movement prediction there were glitches. With the additional delay the action has more time to reach the other players before being applied.

The music is now paused when the app goes to the background.

Many modifications has been done on the server too. First of all the address of the server is now retrieved via an online web service, which will allow me to transition smoothly from one server to another.

Secondly, the server (and the client) can handle a second game after the first one.

Finally the server effectively logs its activity into a file, now with timestamps.

And as usual I had to tweak the CI and the compilation too.

Known bugs

There are some small issues I will have to address.

  1. The strength of the flames seems a bit random. When we take the power-ups they grow, but sometimes they suddenly become short again before growing again. I have no idea if it is a serialization problem, an algorithmic one, or something else.

  2. Due to the delay applied to the inputs, the bombs tend to be dropped in a cell next to the one where the player was when the button was pressed. This is annoying.

  3. The player drops two bombs in a row sometimes. I have no idea if this is a bug or if we have actually pressed the button twice. A short cool down timer between two button presses would be welcome.

Trackers, Ads, and Audience Measurement

There is none! I know, this is not very modern…

The good side is that I do not have to manage analytics SDKs, nor to display a cookie pop-up or to handle other GDPR-related stuff.

The bad side is that I feel completely naked. The only kind of audience measurement I have is an anonymous log on the server. If you can’t connect, I won’t know. If the app crashes, I have no bug report. I cannot tell in which menus you go, neither where do you click. I don’t know which system you run, your geolocalisation, or anything else that could help me understand what you are doing nor the reach of this post.

Consequently, if you encounter any problem with the game, you will have to send me a message :) I may not respond but it will be helpful for sure.

Download

Version zero is available for download on the releases page on GitHub. Remember to invite a friend to play with you :)