zeebo Posted June 13, 2017 Share Posted June 13, 2017 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 Quote Link to comment Share on other sites More sharing options...
Antriel Posted June 13, 2017 Share Posted June 13, 2017 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? Quote Link to comment Share on other sites More sharing options...
zeebo Posted June 13, 2017 Author Share Posted June 13, 2017 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. Quote Link to comment Share on other sites More sharing options...
kaasis Posted June 13, 2017 Share Posted June 13, 2017 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) Quote Link to comment Share on other sites More sharing options...
Antriel Posted June 13, 2017 Share Posted June 13, 2017 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. Quote Link to comment Share on other sites More sharing options...
zeebo Posted June 13, 2017 Author Share Posted June 13, 2017 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. Quote Link to comment Share on other sites More sharing options...
kaasis Posted June 13, 2017 Share Posted June 13, 2017 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. Quote Link to comment Share on other sites More sharing options...
zeebo Posted June 13, 2017 Author Share Posted June 13, 2017 The node server wasn't running - I started it just for you. WASD to move, Z to loot Quote Link to comment Share on other sites More sharing options...
kaasis Posted June 13, 2017 Share Posted June 13, 2017 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. Quote Link to comment Share on other sites More sharing options...
zeebo Posted June 13, 2017 Author Share Posted June 13, 2017 Thanks for the feedback - I'll take a look at it on my laptop. Never heard of RainingChaing but looked it up and I can see the similarities. Quote Link to comment Share on other sites More sharing options...
Arcanorum Posted June 13, 2017 Share Posted June 13, 2017 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. Quote Link to comment Share on other sites More sharing options...
zeebo Posted June 13, 2017 Author Share Posted June 13, 2017 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. Quote Link to comment Share on other sites More sharing options...
titotu Posted June 14, 2017 Share Posted June 14, 2017 10 hours ago, zeebo said: Definitely. I plan on adding a guest play you can roll over to an account. Yes, guest mode would be nice Quote Link to comment Share on other sites More sharing options...
Antriel Posted June 14, 2017 Share Posted June 14, 2017 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 Quote Link to comment Share on other sites More sharing options...
zeebo Posted June 14, 2017 Author Share Posted June 14, 2017 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. Antriel 1 Quote Link to comment Share on other sites More sharing options...
Antriel Posted June 14, 2017 Share Posted June 14, 2017 Oh, wonderful! Sharing stuff with community does teach me new things! Thank you. I will update my article tomorrow. This is indeed a very good information. Quote Link to comment Share on other sites More sharing options...
NicoA Posted June 14, 2017 Share Posted June 14, 2017 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!. Quote Link to comment Share on other sites More sharing options...
leonylyner Posted June 15, 2017 Share Posted June 15, 2017 I can't create an account, it says Username Taken for every username. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.