WIP private server for LittleBigPlanet Karting, based off of karting, a hybrid LBPK/MDNR server that's now defunct and was written in PHP.
With the announcement of PL Garage, TinyKart no longer has any reason to be in development. For more information, read Notice_Of_Deprecation.txt. This repository will not officially be worked on any further.
Q: What can you do so far?
A: Please look at Features to see what has been done so far, and what is planned.
Q: Why remake the original server?
A: NodeJS is faster (when well-optimized) and more modern than PHP. While karting uses Apache, TinyKart uses Express, the fastest NodeJS webserver. The original server was also abandoned for ModnationServerEmu, which focuses exclusively on ModNation Racing.
Q: How much has carried over from that server?
A: If you want to be literal, nothing has. This is a complete rewrite. If you want to be technical... well, quite a bit has carried over. It's a rewrite, but it's still based off the current code. It's like putting it through a converter, sorta. Except this is all written by hand, I promise.
Q: Can I use this with RPCS3/RCN?
A: You should only be able to use it with RPCS3. It technically shouldn't be possible to do this with an unmodified PS3, but hey, anything's possible.
Please check the repository wiki for steps you need to take to connect to a TinyKart instance.
Q: Will this have a central server?
A: That's the end goal, yeah. But for now, you will have to self-host.
Q: Is TinyKart associated with <Other LittleBigPlanet Server>?
A: No. TinyKart is made completely by me and me alone. I'm not associated with any other server, nor any other developers. That being said, help is always welcome! If you're a LBP server developer and know a thing or two about how LBPK's backend works, hit me up on Discord! (Ohana#5434)
Q: How can I help support this project?
A: There's a few ways:
- Contribute to the code!
If you're a Node.JS developer like me, then you might be able to help me build this server. Do note that I have very specific contribution guidelines, but if you think something is right, don't be afraid to show me! - Share it around!
TinyKart relies on the community to have it spread. I don't have a blog or anything like that which I can post updates on, though I do have a Twitter and a Discord. If enough people share, then surely it'll end up coming across someone who can help contribute! - Help create assets!
I'll be the first to admit, I'm not much of an artist. If you have ideas for things like website mockups, logo designs, or other UI elements such as default avatars, then please show them to me!
Sorted in order from what's being worked on first -> what's being worked on last, it tends to be "easiest to make and most important" -> "harder to make and less important"
- Basic connection (accept EULA and view friends list)
- Story Level Leaderboards
- Story Level Comments
NOTICE: Everything from here in out is sort of completely majorly broken. Might be due to something with sessions...
I'll continue to sneak around and read connection logs, try to figure out why the game is reacting the way it does. As it stands right now, the game never requests Earth data, which seems pretty integral to... literally everything below.
- Profile/Earth Viewing
- Upload Levels (Editing details comes later)
- Download Levels
- Custom Level Leaderboards
- Edit Level Details
- Copy Levels
- Custom Level Comments
- Decorate Earth
- Customize Profile
- Profile Comments
- Actual multiplayer (with friends)
- Matchmaking (This requires a remake of the BombProof server, which isn't impossible...)
- Administrator Panel
These are in no particular order, and there's no guarantee they'll actually ever be added, because they are not necessary to the user experience at all.
- Working Announcements System (This can just be replaced with a Twitter account or Discord server)
- Discord Rich Presence (via special desktop client made specficially for TinyKart)
- Web-Based Profiles (like lbp.me had)
- IP Whitelisting (Allow users to log in only from IPs they add)
- Separate Servers for RPCN and PSN (Do not hold your breath on this one)
- Import Data from Project Lighthouse (after it releases to the public)
- New/Updated Profanity Filter (add new terms that might not have been in before, such as more obscure slurs and filter evades)
- Add ElasticStack Support
- Server-Side Profanity Check
- NodeJS v14+
- NPM/Yarn (Yarn recommended)
- If using Yarn, only Yarn 2+ is officially supported.
- Bash Shell (Git Bash works perfectly fine for this)
- Basic understanding of SQLite 3
-
Clone the repository:
$ git clone https://github.com/AutumnRivers/TinyKart.git
-
Install the dependencies:
$ yarn --ignore-optional
npm install
works as well.
Remove--ignore-optional
if you plan to follow step 5 and use PM2 to keep the server running even during crashes. Do note, it's a BIG INSTALL. -
Rename
database_template.sqlite
todatabase.sqlite
:$ mv database_template.sqlite database.sqlite
If you're on Windows, use Powershell!
-
Generate HTTPS/SSL certificates for the Secure API
- Install mkcert
- Run the following code:
(If hosting on a public server with a hostname such as
$ mkcert localhost
example.com
then change localhost to your hostname)- You most likely will get an error about the certificate being self-signed in major browsers, which will prevent you from visiting the page. Don't panic, the game doesn't check for certificate issues, so it doesn't matter.
- Place the files
localhost-key.pem
andlocalhost.pem
in the/security
folder.
-
Start the server:
$ yarn start
Or, if you'd prefer to have everything logged to a file:
$ yarn startlogs
If using NPM:
$ npm run startlogs
-
OPTIONAL: If you'd like to keep the server running even when it crashes, you can install
pm2
. If you didn't add--ignore-optional
to your original install command, you can run pm2 with the following command:$ yarn startpm2
Do note that there is no option to save to a log here, but PM2 automatically outputs everything to a log file.
And that's all, the server should now be running.
I am not associated or affiliated with Sony Entertainment, Media Molecule, or any other teams that worked on LittleBigPlanet™ Karting. I have never once worked for any of these teams, as well, so this is all original code that has been reverse-engineered from LittleBigArchive's Packet Captures.