[OPEN SOURCE] Multiplayer 3D RPG Using Colyseus

haha, you can now kill another player! What a terrible power to have, use it wisely.

(just click on another player and he will lose 5 health)

Added:

  • chat bubbles
  • player hover shows name and outline that reflect current player health
  • health bar
  • attack player on left click
  • tweaking of ui

5 Likes

this thread keeps amazing me :slight_smile:

2 Likes

You know no one will be wise with this power! :rofl:

2 Likes

Oh noes! How are you adding the player to the generator?

@carolhmj actually, since I’ve managed to get some decent shadow working (not pushed to demo yet)

Quick update:

  1. I’ve done a full refactoring pass on both the server and the client to tidy all the mess and made sure everyhting is where it should be.
  2. Started working on next feature: spawning monsters. (i think this one will take some time)

6 Likes

OMG, you are so efficient and prolific :clap:. I’m starting to question myself ‘what the faen’ I’m doing when working on my BJS project :grin: :sweat_smile: :hourglass_flowing_sand:

2 Likes

Everyone has their own pace, the most important thing is not giving up! :grin:

2 Likes

@mawa carolmj is 100% right, keep going on is the most important :slight_smile:

I will be slowing down the pace and step back a little, as the next feature on the roadmap is gonna take a while to research, figure out and fine tune:

  • mob spawning with basic ai (patrolling/idle/aggro)

Actually looking into using YUKA.JS for the ai and navmesh, it looks amazing, and I cannot wait to dig my teeth into it!

2 Likes

That sounds like a nice and challenging topic. I’m certain many people here are eager to learn about your findings on this. And then @carolhmj , don’t worry, ‘never give up is my moto:grin:

2 Likes

Hey @oriongu - LOVE seeing the progress you’re making!

We LOVE Colyseus! Glad to see you’re having fun getting a networked game up and running.

We’ve got a section in our docs that goes over making a Colyseus app with Babylon.js: Real-time Multiplayer with Colyseus | Babylon.js Documentation

Since you’ve been diving into this topic, we’d LOVE it if you might consider writing up your own doc, walking future users through your process and learnings. Thoughts? Something like this would go perfectly in our Guided Learnings section.

1 Like

Thanks. Yes Babylon.js & colyseus is amazing.

I’ll think about it, writing tutorials takes a tremendous amount time, and I’m not sure I have enough to do something like you suggest. In all cases, I’ll continue updating my progress on this post :slight_smile:

On a side note, after a big battle, it took me ages to manged to get my navmesh loaded with Yuka.js both on my client and server. Once it was loaded, it was acting weird, and after displaying as a mesh with baylon, I think I now understand why :slight_smile:

EDIT:
Ok i’m giving up for today, nothing make any sense, i’m loading the same mesh on the server and client, but findPath(start, end) just does not seem to be working, anhd cannot figure out to debug it on the server side as there is no way to visualize what is loaded on the server…

github issue here too: How to correctly export a NavMesh from Blender 2.8 · Issue #9 · Mugen87/yuka · GitHub

Ideas?

Just hopped in and ran around… so cool! Keep going! I know it’s not the point right now, but I’d love to be able to use keyboard for movement. Or click to target a new spot, like Diablo controls.

2 Likes

Haha, all good, once I got the navmesh integrated, it will be painless to add keyboard or point to click to the game :slight_smile:

1 Like

Congratulations on the project, keep it up!
I remember the days when I spent my time as a creator in a LPMUD. My dream has always been to create an LPMUD in graphic format.
As a suggestion, the LPMUDs had the flexibility of content creation and game control in execution since they had a library where each of the objects could be compiled online and an online file browser as well.
Of course it had access control to directories, etc…
In case you are interested in integrating it into the project:

Thanks!

2 Likes

@marziac thanks, looks interesting, i’ll look into it

I hope everyone had great holidays and are ready for a hopefully great 2023! :grinning:

Quick update: I’ve not abandoned and still trying to integrate YUKA… with no success yet. So, I’ve started working (in another branch) on using babylon null engine and standard physics as an alternative.

My current implementation using (GitHub - mikewesthad/navmesh: A plugin for path-finding in JS using navmeshes, with wrappers for Phaser 3 and Phaser 2) is great but limits me to a flat surface so I prefer finding a better solution before diving deeper and realizing I need to be able to walk up and down and hill for example.

Happy new Year to you too :smiley:
I’m still following your amazing project and progress.

Reasonable. Please take your time. The way I see it until now, this is likely to become a masterpiece if you can make it to the end :heart_eyes:

1 Like

@mawa thanks for your kind words!

Victory, I was very happy to see this error in the console :slight_smile:

I finally managed to use navmesh collision using YUKA. (explanation here: How to get YUKA.js working in node environment - #16 by arcman7)

Just like that, i can have people running around on my navmesh :slight_smile:

2 Likes

Quick update:

I’ve restructured the server quite a bit, update the whole asset loading and am now using assets containers (could not find how to use it in conjunction with the asset manager):

Also improved monster spawnign and movement. Just missing the correct orientation.

Demo is update too: https://t5c.onrender.com/

this.assetsContainer['player_hobbit'] = await SceneLoader.LoadAssetContainerAsync("./models/", "player_hobbit.glb", this._scene);
this.assetsContainer['monster_unicorn'] = await SceneLoader.LoadAssetContainerAsync("./models/", "monster_unicorn.glb", this._scene);
this.assetsContainer['monster_bear'] = await SceneLoader.LoadAssetContainerAsync("./models/", "monster_bear.glb", this._scene);

anyway, here is a quick screenshot

2 Likes

Got the entities rotation sorted out + made it easier to tune entities scale, speed and other properties.

Might aswel have some fun (100 entities) :slight_smile:

200 entities :slight_smile:

We can also fire onto the entities…

6 Likes

Evening,

I’ve worked on:

  • adding a particule efffect to the projectile (fire by using the left button after hovering an entity)
  • entities will despawn after death and respawn elsewhere
  • added a mini brain to each entity, so they can decide each so often to stop patrolling for a while and just stay idle for a bit.
  • @stephenbuilds I’ve added first draft of the point and click to move system, but its not as simple as it seems so I’ll have to improve over time

I’ve barely explored this ai stuff, but it’s fun :slight_smile:

It’s hard to showcase, but I’ve updated the demo if you guys wanna see it.

2 Likes