Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Mutable Bunnies Build Status

A microservices based distributed 2d MMORPG with Hazelcast and Vert.x on Java 11, currently 20k LOC + configuration.

Game clients

The backend is developed using the chili-core framework

Game architecture

architecture.png

First demo video now available!

If you are a part of the team please include the client prototype submodule.

# cloning the repository:
git clone --recursive <repository-url>

# if already cloned:
git submodule update --init --recursive

Building

  • Requires node/npm

Builds the project and runs all tests.

./gradlew build
Services
  • Authentication: Account creation and available realms.
  • Routing: Routes client requests in/out of the cluster.
  • Realms: Handles incoming connections, instance travel.
  • Instances: Handles game logic.
  • Realm registry: keeps track of active realms.
  • Website: Provides an interface for account/character/realmlist.
  • Logging: Receives logging data from the other components.
  • Social: Achievements, chat, guilds. (TBD)
  • Auction house: Handles asynchronous trading with orders/offers. (TBD)
  • Serverstatus: Provides a quick overview of system uptime. (TBD)

Patching is no longer a service - the webseed standard was not very well supported so support was dropped. We are aiming to create a browser based game primarily and will rely on a CDN to provide game resources. We want to avoid serving files over the cluster or machines that handles the website or the game state.

Communication between services is done over the cluster/local bus, other available transports such as websock, tcp, udp and rest is available but not recommended unless a service is not able to join the cluster. Services that needs to authenticate another service should use the AuthenticationGenerator to generate pre-shared keys, secrets and generate tokens. This may be invoked from the standard launcher in chili-core, using the --generate commandline argument.

All communication between services in different JVM's uses a text-protocol based on JSON for simplicity.

Background

This is a 2D MMORPG server that is in development, which focuses on

  • ease of development: simple event passing and handler-based server development.
  • fast feedback loop: fast startup times, fast client load times, unit-testable.
  • simple and extendable: scripted events, yaml-based npc/item/spell/affliction configurations.

Progress

Overview of the server implementation progress

Core mechanics

  • movement
  • player chat
  • spell engine (cooldown, learned spells, charges)
  • dialog engine
  • affliction engine
  • cross realm/instance chat
  • friend lists
  • instance travel
  • instance loading
  • crafting
  • questing
  • dynamically deployed instances

Npcs/Entities

  • scripted npcs/entities
  • support for animations
  • spawn entities/npcs from script
  • NPC initiated dialogs
  • NPC/interaction dialogs
Audience 🔥
  • Game developers seeking to implement a 2D RPG multiplayer game.
  • Aspiring game developers with an interest in backend development.
  • Players who are into simplistic 2D MMORPG's.
Great software 💙

To make this project a reality we use only great software.

On the backend

Contributing 💜

Do you have an idea for a spell? a new player class? an NPC? gameplay mechanics? story? anything really, we are open 24/7 for contributions. Just submit an issue or a PR.

About

Isometric 2D mmorpg that builds on chili-core.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages