/t5c

Building a open source multiplayer 3d rpg using babylon.js and colyseus

Primary LanguageTypeScriptMIT LicenseMIT

T5C - The 5th Continent

Building a basic multiplayer 3d top down rpg using babylon.js and colyseus

Current progress:

  • vat animations and instances
  • fully player authorative movement with client side prediction and server reconciliation
    • diablo like movement using the mouse with the ability to click to move
  • scene management (login, register, character selection, etc...)
  • map management (ability to teleport to a different map (ex: a dungeon) )
  • multiplayer animated characters
  • global chat (works accross zones)
  • uses a navmesh for collision detection
  • player data can be saved with mysql lite / mysql
  • basic enemies with simple AI behaviour (IDLE, PATROL, CHASE, ATTACK, DEAD)
  • enemies can drop items (based on a loot table)
  • 4 basic abilities ( sword attack, fireball, dot, heal )
  • ability to target players and enemies
  • ability to pick up items and see them in your inventory
  • ability to equip items and see them on your character
  • basic player levelling with experience and ability points
  • fully functional UI (experience bar, abilities bar, draggable panels, etc...)
  • simple quest system
  • simple trainer system (learn abilities)
  • simple vendor system (buy and sell)

Links

Follow the progress on the official babylon.js forum: https://forum.babylonjs.com/t/multiplayer-top-down-rpg-babylon-js-colyseus/35733

Check out my devlogs on https://dev.to/orion3d

Requirements

  • Download and install Node.js LTS
  • Clone or download this repository.
  • Run npm install

Technology

How to run

  • Run npm run server-dev to launch the server
  • Run npm run client-dev to launch the client

The client should be accessible at http://localhost:8080

The server should be available locally at http://localhost:3000

The Colyseus monitor should be available at [http://localhost:3000/monitor

Load testing

  • Run npx tsx ./loadtest/test.ts --room game_room --numClients 1 --endpoint ws://localhost:3000