Sign in to follow this  
zeebo

BlackMass.io - Multiplayer ARPG / Bullet Hell

Recommended Posts

Hello - I've been working on a multiplayer action rpg + bullet hell game for about 5 months now and decided to share a short gameplay video. The front end is Pixi.js for rendering, React for the UI, and the rest is a custom engine. The back end is socket.io & Node.

Features Implemented so far

  • 3 classes - Warrior, Mage, Rogue
  • ~12 different skills
  • ~40 item types with magic and rare item generation
  • ~30 different mobs
  • 4 maps
  • authoritative server
  • Persistent characters, inventory, skills with DB

https://blackmass.io - I'll leave it up for a bit

 

 

Share this post


Link to post
Share on other sites

Looks great!

Multiplayer bullet hell must have been difficult to implement. How did you handle the projectiles? It was difficult to see from the video if there's any client-side prediction for the bullets (I would assume there's none?). Is there any lag compensation? Is there also pvp? :)

Share this post


Link to post
Share on other sites
21 minutes ago, Antriel said:

Looks great!

Multiplayer bullet hell must have been difficult to implement. How did you handle the projectiles? It was difficult to see from the video if there's any client-side prediction for the bullets (I would assume there's none?). Is there any lag compensation? Is there also pvp? :)

Yeah there's definitely some challenges involved. Some lag compensation techniques I used, prediction for smooth client side movement, lerping other players and mobs ~150ms in the past, and skill cast time and fire rate to mask latency. How a projectile fire works is client initiates a fire, there's a 150ms "fire rate" or delay to allow the client to confirm with the server. The projectile is never actually fired on the server and the event gets broadcasted to connected players. The delay is actually a fairly smooth experience since it's consistent.

If a client detects a collision between their projectile and a mob the server is notified and replays the old event and past mob position to verify. 

As you can see in the top right corner I had about ~50ms latency here connecting to a cheap server but anything up to 150 is smooth and I still need to test higher latency than that.

No pvp at this time although I may add it in the future.

Share this post


Link to post
Share on other sites
13 minutes ago, zeebo said:

Yeah there's definitely some challenges involved. Some lag compensation techniques I used, prediction for smooth client side movement, lerping other players and mobs ~150ms in the past, and skill cast time and fire rate to mask latency. How a projectile fire works is client initiates a fire, there's a 150ms "fire rate" or delay to allow the client to confirm with the server. The projectile is never actually fired on the server and the event gets broadcasted to connected players. The delay is actually a fairly smooth experience since it's consistent.

If a client detects a collision between their projectile and a mob the server is notified and replays the old event and past mob position to verify. 

As you can see in the top right corner I had about ~50ms latency here connecting to a cheap server but anything up to 150 is smooth and I still need to test higher latency than that.

No pvp at this time although I may add it in the future.

You getting ddos attack?

502 Bad Gateway


nginx/1.10.0 (Ubuntu)

Share this post


Link to post
Share on other sites

Sounds like a pretty solid solution to the challenges. Thanks for sharing :)
And yeah, the consistent delay definitely helps with the experience. Although that might break a bit on packet drops on TCP. But those are pretty rare these days.

Share this post


Link to post
Share on other sites
2 minutes ago, kaasis said:

You getting ddos attack?

502 Bad Gateway


nginx/1.10.0 (Ubuntu)

Work in progress - I don't leave it up and running yet.

Share this post


Link to post
Share on other sites
Just now, zeebo said:

Nah it's not up and running right now.

for me doesn't work. Showing that 502 bad gateway. I'm guessing it's because your hosting provider is bad? Usually such things show up which have very limited bandwith for hosting.

Share this post


Link to post
Share on other sites
2 minutes ago, zeebo said:

The node server wasn't running - I started it just for you. 

I'm guessing you used RainingChain tutorials to get started? Some art and base is off there. Good job tho, game runs really smooth and is really well made. But the thing is that, you should optimize interface for smaller screens otherwise i'm playing from laptop and chat is collapsing with slotbar.

Share this post


Link to post
Share on other sites
36 minutes ago, Arcanorum said:

You need some sort of 'Guest play' button on the login screen so people can jump straight in, or people will just see the log in fields and leave.

Definitely. I plan on adding a guest play you can roll over to an account.

Share this post


Link to post
Share on other sites
22 hours ago, zeebo said:

As you can see in the top right corner I had about ~50ms latency here connecting to a cheap server but anything up to 150 is smooth and I still need to test higher latency than that.

This convinced me to document how I'm testing this. Not sure if it's new to you or not, but here goes: Multiplayer Platformer Log #4 – Testing Environment

Share this post


Link to post
Share on other sites
1 hour ago, Antriel said:

This convinced me to document how I'm testing this. Not sure if it's new to you or not, but here goes: Multiplayer Platformer Log #4 – Testing Environment

Yep that's what I'm doing - Note adding a tc rule on ubuntu only effects outbound packets. If you want to more accurately simulate latency you may want to add outbound latency on windows using Clumsy that way you can test 50ms to server, 50ms back rather then ~2ms to server, 100ms back.

Share this post


Link to post
Share on other sites

Wow really nice! 

I´m working in a similar game and you have already implemented lots of thinks i would love to have :).

I think you need to build a city or something like that to start in a safe place!

A mini map or something like that would be great. I want to see all the map and I didn’t know where to go!.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.