CosmoKick.io 🧑‍🚀⚽️ - Multiplayer Football Game

Hello everyone :waving_hand:

I’ve been meaning to post this for a while, and now I finally built the courage to share my progress on the game I have been working on (CosmoKick.io).

Me and my brother used to be big Fifa fans a good while ago (I know, please don’t judge me…) and got fed up with how they made it a pay to win game and just a total cash grab.

I always like the idea of a fully physics based football game, so was pretty into Rocket League when it came out.

But since I have been on the road the last few years, I haven’t been able to play together with my friends, so I started searching for a Rocket League like multiplayer game that I could play even on my old shitty Android phone… But to my surprise I didn’t find anything like this.

So the idea for CosmoKick.io was born. For a few years I tried different platforms, game engines and ways to make the game come to life.

Then, I came across Babylon js and Colyseus! I instantly knew this was it, I can finally pull this off.

So I got to work, and even with my minimal coding knowledge, I made quite nice progress in just a few months. After a long break, I came back to it recently and really happy with how the game is shaping out to be!

I’m using Babylon js with the Havok physics engine, and have implemented my own character control logic before it was made available with Babylon js 8.0 :man_facepalming:.

The main idea is keep everything quite minimalistic, to reduce costs and keep performance high with even low-end devices.

Recently I just got my Colyseus server up and running (hosted on Colyseus Cloud) which works super well with Babylon. I really recommend the framework and the hosting solution as well!

I’m planning on hosting some playtests this week, to get a rough idea of hosting costs, and some feedback from players.

You can try out the single player mode, and if anyone wants to jump on to try the multiplayer just let me know, as right now I have it password protected.

I’ll keep this post updated with the progress (there is still a looooot of work to be done), and when I’m planning on hosting the first official playtest.

Hope to see you all there :astronaut::soccer_ball::rocket:

Cheers,
Adam

p.s.: Just wanted to give a massive shoutout to everyone at Babylon! It still amazes me how good it is, and how helpful people have been on this forum as well :blush:

11 Likes

Ha, runs on my slowpoke laptop. Good job :smiley: Also, amazing loading times!

btw. I lost the game to a cube. I am offcially shit at playing computer games now…

Anyway, please see screenshot:

1 This window will not go away. I think this might be a bug :open_mouth:

2 Ignore this. I figured it out.

2 Likes

Thanks, means a lot! :blush:

And don’t worry about losing, I think I can only beat them because I easily have over 100 hours played with the game while testing :upside_down_face:

1 Like

@AncientA Hey bro cool stuff!

You might be interested to add some AI behavior:

@labris and me ported most of the examples to Babylon.JS:

1 Like

Thanks, this is awesome! :star_struck:

For now the bots are super simple, so I’ll def look into this and re-work the bot logic!

1 Like

I’ve spent some time working on the character design and animations.

I’m pretty happy with how it’s shaping out to be! the idea was to keep using the shapes and materials provided by Babylon to keep the performance levels high.

Don’t let the cute looking character fool you! A freeze gun is being added next :astronaut::water_pistol::cold_face:

4 Likes

Played the game for a while and you are not joking about the no winning part! I was totally unable to score a single goal :open_mouth:

Also @roland thanks for sharing about Yuka! I had no idea about this library and it looks super interesting.

2 Likes

Thanks for trying out the game and for the feedback! :folded_hands:

Just wondering if you were playing on mobile or PC? I know my mobile controls are not the best yet…

Do you think it was because the bots were too strong, or hard to control the character (kicking, movement)?

I’m trying to make the kicking a bit more intuitive as this seems to what most people struggle with.

1 Like

I tried on PC. I struggled with the kicking of the ball, I couldn’t make it happen constantly, moving and sprinting worked perfectly. As for the bots, I was usually able to dribble around the defender bot and sprint to leave it behind, but I was not able usually to dribble around the goalkeeper bot and have a good angle towards the goal, like I would dribble around, but I would be too out of position to run to the goal or even to shoot.

1 Like

Okay this is really great, thanks for taking the time and replying! It’s actually what some of my friends have told me after trying out the game.

I’m re-working the visuals for the kicking so that it’s more understandable for the angles and power applied.

And for the bots I’ll def come around to applying Yuka as it looks exactly like what I need :slight_smile:

2 Likes

it’s hard to know when your kick is ready, and turn sensitivity is really low

1 Like

Based on the feedback from @AlitarSemiramis and @withADoveInOneHand I have updated the kicking logic! Thanks guys for this, I’m much happier now with how kicking works and is visualised.

Updates made:

  • I have removed the distance based impulse from the calculations. Now if you are within the kicking radius, the same impulse will be applied.

  • I have updated the glow layer of the Kicking Diamond, so now it only glows when the kicking will get triggered (within radius, and no backwards shots)

  • I have updated the visual representation of the direction of the kick, so now it increases in size as you are charging up the kick power.

I think the controls will still take some getting used to, but I think the kicking is now much more intuitive and consistent. After all, it took quite some time to get used to the Rocker League controls also.

4 Likes

The shooting is so much easier now! No problem with the new controls, and the small tutorial at the beginning helps a lot to practice. I was able to score now!

3 Likes

Update - 13/05/2025

Changes made:

  • Added a fullscreen button that works for both mobile and PC (took me a lot longer to than I’d like to admit :man_facepalming:)
  • Updated animations
  • Changed goal shape and design
  • Reduced Stamina, Fuel and Kicking Bar sizes on mobile

What I’m working on next:

  • Updating Menu scene to show the character design, links to Notion Page and Discord
  • Updating UI to make it more readable during tutorial both on PC and mobile.
  • Adding a Freeze Gun ability
3 Likes

Menu Scene has been updated! (with a shoutout to Babylon js of course :blush:)

I also increased camera sensitivity and some small UI updates for the tutorial. Unfortunately I haven’t been able to make as many changes as I hoped, due to a pretty bad tooth infection :upside_down_face: Ahhh well, we soldier on :flexed_biceps:

4 Likes

Hope you recover soon!

1 Like

Update - 20/05/2025

Changes made:

  • Added Freeze Gun Ability to both Singleplayer and Multiplayer :cold_face::water_pistol:
  • Improved performance by reducing Draw Calls and freezing worldmatrix and materials.

The game now runs with even an 11x CPU throttling and Network latency of 350ms (with some slight bugs with Stamina and Fuel I need to fix) at 50-60 fps and smooth(ish) multiplayer gameplay :open_mouth:

I’m honestly a bit mind blown with how well the game performing even with these constraints! Babylon and Colyseus truly Rock! :flexed_biceps:

What I’m working on next:

  • Fixing camera logic (right now in order to aim upwards, I made the camera go through the ground and set the backFaceCulling to true).

  • Adding some visual elements to the other player mesh like backpacks etc. (also show when another player kicks or shoots).

  • Further improving performance by reducing the use of glow layer and emissive colours, and some other tips from the Optimizing Your Scene Docs

  • Fixing glitchy/unresponsive jetpacking and sprinting with high latency low-end devices for multiplayer mode.

  • Adding a Settings button to allow players to change bot Difficulty and camera sensitivity

2 Likes

Update - 28/05/2025

Changes made:

  • Updated main camera logic

  • Added Follow Ball Camera View

  • Fixed some position issues with UI elements on Mobile

  • Added ideas for digital items and the in-game economy on Notion Page

What I’m working on next:

  • Fixing glitchy/unresponsive jetpacking and sprinting with high latency low-end devices for multiplayer mode.

  • Adding a Settings button to allow players to change bot Difficulty and camera sensitivity

  • Login and leaderboard

  • New Characters

1 Like

Update - 03/06/2025

Changes made:

  • Updated UX flow with lightweight landing page (still needs a lot of work)
  • Added a “Choose A Character” Screen with 3 different option
  • Reduced js bundle size from 6MB to less than 3MB by using dynamic imports and compressing images
  • After some feedback, I have also worked a bit on the physics and gameplay - increased air time for the soccer ball, and decreased it for the player, increased movement and sprint speed.
  • Fixed Stamina and Fuel issues for multiplayer (now it’s fully server authoritative even for low or high fps players)

What I’m working on next:

  • Updating design for the 3 character types
  • Stadium Design - New pitch textures, and a stadium with spectators (possibly using node geometry editor)
  • New Soccer Ball Design
  • Adding a Settings button to allow players to change bot Difficulty and camera sensitivity
  • Login and leaderboard

1 Like

Made some updates to the Character Selection Screen using the V2 Audio Engine and SPS (gotta thank @Pryme8 for mentioning this somewhere on the forum).

Also added a mirror texture to the ground and made a black skybox.

I used the Audio Analyzer to light up the shapes based on different frequencies kind of like in this example.

I’ve been having a lot of fun with this, and while it still needs a lot of work I think it’s starting to look pretty cool :smiling_face_with_sunglasses:

P.s. The music is a bit out of sync in the video, looks much better when in Game.

5 Likes