Open-source RP gamemode base for nanos world

An MVC roleplay framework, built for nanos world.

NoMoreRP is an object-oriented MVC gamemode base for nanos world — wired by a loader and a DI registry, backed by a set of dependency-free Lua packages for networking, data and async.

8
open-source repos
MVC
architecture
MIT
license
0 deps
dependency-free
nanos-world-server — Packages
# clone the packages into your server
Packages/
  nmrp/            MVC gamemode base
  nmrp-rpc/        typed RPC layer
  nmrp-norm/       Norm ORM
  nmrp-promise/    async / promises

# nmrp/Package.toml
name     = "nmrp"
title    = "NoMoreRP"
type     = "game-mode"

 gamemode loaded — controllers registered 

Built for the nanos world creator ecosystem

MITLua + TypeScriptAsync MySQLnanos-worldHot reload

How it is built

A framework, not a bundle of scripts

NoMoreRP gives you a clean architecture and a toolkit of dependency-free Lua packages, so you build gameplay instead of plumbing.

MVC architecture

An object-oriented gamemode base wired by a loader and a DI registry — models, views, controllers.

Typed RPC layer

Promise-based, typed request/reply over engine events — Call, CallAsync and CallRemote across server and client.

Norm ORM

A dependency-free Lua ORM: models, relations, a query builder, migrations, hooks and soft deletes.

Promises & async

A JS-grade Promise/A+ implementation with async/await, :Await() and the full combinator set.

Localization

A dependency-free shared i18n system for Lua and WebUI, so your server speaks every player’s language.

LuaCATS typings

Fully annotated with LuaCATS for real autocomplete, inline docs and type checking in your editor.

Character needs

Server-authoritative stamina as a HUD gauge, with hunger, thirst and alcohol on the roadmap.

MIT & modular

Every package is fully open source under MIT and dependency-free — take the whole stack or just one piece.

Developer-first

Write controllers, not spaghetti

Resolve services from the registry, query the database through the ORM and reply over the typed RPC layer — with LuaCATS annotations guiding you the whole way.

  • Controllers and services resolved by a DI registry
  • Data access through the Norm ORM with migrations
  • Typed, promise-based RPC between server and client
PlayerController.lua Character.lua
-- a controller resolved by the DI registry
local Controller = Registry:get("PlayerController")

function Controller:OnReady(player)
  -- Norm ORM: load or create the character
  local char = Character
    :where("steam_id", player:GetSteamID())
    :firstOrCreate():await()

  -- typed RPC back to the client
  RPC.CallRemote("character:loaded", player, char:toTable())
end

Ecosystem

One core, a toolkit of packages

Each package is a standalone, dependency-free nanos world repository under MIT. Use the whole stack or pull in only what you need.

nmrp core

The MVC gamemode base — loader, DI registry and OO architecture in Lua.

nmrp-rpc networking

Promise-based, typed RPC over engine events. Call / CallAsync / CallRemote.

nmrp-norm database

Norm ORM: models, relations, query builder, migrations, hooks, soft deletes.

nmrp-promise async

Promise/A+ for Lua: async/await, :Await() and the full combinator set.

nmrp-locale i18n

Dependency-free shared localization for Lua and WebUI.

nmrp-character-needs gameplay

Server-authoritative stamina HUD gauge — hunger and thirst on the roadmap.

Quick start

Clone, configure, launch

Everything lives in your server Packages folder. Pull the core and the libraries it uses, point the ORM at your database and start.

1

Clone the core

Add the NMRP gamemode base to your Packages folder.

git clone .../No-More-RP/nmrp
2

Add the libraries

Pull in the RPC, ORM and promise packages.

git clone .../nmrp-rpc nmrp-norm nmrp-promise
3

Configure the ORM

Point Norm at your database and run migrations.

edit Packages/nmrp-norm/Config
4

Launch

Set nmrp as your gamemode and start the server.

NanosWorldServer.exe

Build your server with NoMoreRP

Star the repositories, read the code and contribute on GitHub, or ask questions in the org discussions.