Yet another project about creating a 3D virtual world and stuff.
Powered with Nest (or Quart), Angular and Three.js.
First we need to fetch all dependencies:
$ npm ci
Then we build the frontend:
# You can also use build:prod to build a production-ready bundle
$ npm run build -w frontend
Here you will find a few steps to follow in order to create and populate a working database for Lemuria.
There are two different implementations for the backend server: Node and Python.
$ npx -w backend prisma generate --generator client
$ python -m venv venv
$ source venv/bin/activate
$ pip install -r backend-py/requirements.txt
$ prisma generate --schema backend/prisma/schema.prisma --generator client-py
$ npx -w backend prisma db push --skip-generate
There is no node script to import worlds yet, so you can use the python one instead.
# See above for the venv setup
$ prisma db push --schema backend/prisma/schema.prisma
$ cd backend-py
$ python tools/import_lemuria.py
This will create and init the database backend/app.db
using the data in dumps/atlemuria.txt
and dumps/proplemuria.txt
.
Once again, you can choose between node or python to serve the world resource files. To avoid CORS issues when accessing static files from a web browser, do the following:
$ npx -y http-server -p 8181 -c-1 --cors
$ cd backend-py
$ python tools/serve_path.py
This will run a script to serve files in the current directory on port 8181
.
You will also need the village2
resource path to be served, to do so you can create a symlink by running the following (but set the path correctly first):
$ ln -s /my/path/to/resource/directory/for/village2 village2
The API backend is listening on port 8080
.
$ npm -w backend run start
$ prisma generate --schema backend/prisma/schema.prisma --generator client-py # only needed if the prisma version or the schema changed
$ cd backend-py
$ python app.py
You can also generate a docker image to build the project and run the server in a container:
# Build with the node backend
$ docker build --target node -t lemuria .
# OR with the python backend
$ docker build --target python -t lemuria .
$ docker run -it -p 8080:8080 -v $PWD/backend-py/app.db:/backend/app.db -v $PWD/dumps:/backend/dumps lemuria
You can use node or python bots on Lemuria. See the bot
and bot-py
directories.
// typescript
import {Bot} from './bot'
# python
from bot import Bot
An example bot bonobot.ts
/bonobot.py
is available in this repository.
Once npm run start
(or app.py
) and http-server
(or serve_path.py
) are running: open your favorite web browser and go to http://localhost:8080
,
you should be prompted with a login screen, put whatever nickname you want, the password you provide doesn't matter as
there's no proper authentication for the moment.