Project Lighthouse is a clean-room, open-source custom server for LittleBigPlanet.
Find a file
2022-01-22 21:46:36 -05:00
.config Add defaults to nullable strings in User 2021-11-15 00:14:35 -05:00
.github/workflows Remove macOS Build & Test 2022-01-20 21:51:09 -05:00
.idea/.idea.ProjectLighthouse/.idea Add support for banning a user 2021-12-18 15:17:48 -05:00
.run Re-do formatting 2021-10-31 16:46:56 -04:00
ProjectLighthouse Fix ordering of pages 2022-01-22 21:46:36 -05:00
ProjectLighthouse.Tests Move startup & middleware classes into their own namespaces 2022-01-20 21:04:50 -05:00
ProjectLighthouse.Tests.GameApiTests [skip ci] Remove .NET 5 checks 2022-01-19 09:09:55 -05:00
ProjectLighthouse.Tests.WebsiteTests Move startup & middleware classes into their own namespaces 2022-01-20 21:04:50 -05:00
.gitignore Add ability to read LBP textures 2022-01-21 03:31:42 -05:00
docker-compose.yml Re-do formatting 2021-10-31 16:46:56 -04:00
global.json Get photos uploading properly 2021-11-05 16:59:24 -04:00
LICENSE Add AGPL-3.0 LICENSE 2021-10-16 00:59:43 -04:00
ProjectLighthouse.sln Disable chrome sandboxing and dev-shm usage in CI environment 2021-12-23 00:33:24 -05:00
ProjectLighthouse.sln.DotSettings Fix PNGToPNG writing in a bad way 2022-01-22 21:11:59 -05:00
README.md Update README.md 2022-01-19 10:05:21 -05:00

Project Lighthouse

Project Lighthouse is a clean-room, open-source custom server for LittleBigPlanet. This is a project conducted by the LBP Union Ministry of Technology Research and Development team. For concerns and inquiries about the project, please contact us here. For general questions and discussion about Project Lighthouse, please see the megathread on our forum.

WARNING!

This is beta software, and thus is not stable.

We're not responsible if someone hacks your machine and wipes your database.

Make frequent backups, and be sure to report any vulnerabilities.

Building

This will be written when we're out of beta. Consider this your barrier to entry ;).

It is recommended to build with Release if you plan to use Lighthouse in a production environment.

Running

Lighthouse requires a MySQL database at this time. For Linux users running docker, one can be set up using the docker-compose.yml file in the root of the project folder.

Next, make sure the LIGHTHOUSE_DB_CONNECTION_STRING environment variable is set correctly. By default, it is server=127.0.0.1;uid=root;pwd=lighthouse;database=lighthouse. If you are running the database via the above docker-compose.yml you shouldn't need to change this. For other development/especially production environments you will need to change this.

Once you've gotten MySQL running you can run Lighthouse. It will take care of the rest.

Connecting

PS3 is difficult to set up, so I will be going over how to set up RPCS3 instead. A guide will be coming for PS3 closer to release. You can also follow this guide if you want to learn how to modify your EBOOT.

There are also community-provided guides in the official LBP Union Discord, which you can follow at your own discretion.

Note: This requires a modified copy of RPCS3. You can find a working version on our GitHub.

Start by getting a copy of LittleBigPlanet 1/2 installed. (Check the LittleBigPlanet 1 section, since you'll need to do extra steps for your game to not crash upon entering pod computer). It can be digital (NPUA80472/NPUA80662) or disc ( BCUS98148/BCUS98245). For those that don't, the RPCS3 Quickstart Guide should cover it.

Next, download UnionPatcher. Binaries can be found by reading the README.md file.

You should have everything you need now, so open up RPCS3 and go to Utilities -> Decrypt PS3 Binaries. Point this to rpcs3/dev_hdd0/game/(title id)/USRDIR/EBOOT.BIN. You can grab your title id by right clicking the game in RPCS3 and clicking Copy Info -> Copy Serial.

This should give you a file named EBOOT.elf in the same folder. Next, fire up UnionPatcher (making sure to select the correct project to start, e.g. on Mac launch UnionPatcher.Gui.MacOS.)

Now that you have your decrypted eboot, open UnionPatcher and select the EBOOT.elf you got earlier in the top box, enter http://localhost:10060/LITTLEBIGPLANETPS3_XML in the second, and the output filename in the third. For this guide I'll use EBOOTlocalhost.elf.

Now, copy the EBOOTlocalhost.elf file to where you got your EBOOT.elf file from, and you're now good to go.

To launch the game with the patched EBOOT, open up RPCS3, go to File, Boot SELF/ELF, and open up EBOOTlocalhost.elf.

Assuming you are running the patched version of RPCS3, you patched the file correctly, the database is migrated, and Lighthouse is running, the game should now connect.

LittleBigPlanet 1

For LittleBigPlanet 1 to work with RPCS3, follow the steps for LittleBigPlanet 2.

First, open your favourite hex editor. We recommend HxD.

Once you have a hex editor open, open your EBOOTlocalhost.elf file and search for the hex values 73 63 65 4E 70 43 6F 6D 6D 65 72 63 65 32. In HxD, this would be done by clicking on Search -> Replace, clicking on the Hex-values tab, and entering the hex there.

Then, you can zero it out by replacing it with 00 00 00 00 00 00 00 00 00 00 00 00 00 00.

What this does is remove all the references to the sceNpCommerce2 function. The function is used for purchasing DLC, which is impossible on Lighthouse. The reason why it must be patched out is because RPCS3 doesn't support the function at this moment.

Then save the file, and your LBP1 EBOOT can now be used with RPCS3.

Finally, take a break. Chances are that took a while.

Contributing Tips

Database migrations

Some modifications may require updates to the database schema. You can automatically create a migration file by:

  1. Making sure the tools are installed. You can do this by running dotnet tool restore.
  2. Making sure LIGHTHOUSE_DB_CONNECTION_STRING is set correctly. See the Running section for more details.
  3. Modifying the database schema via the C# portion of the code. Do not modify the actual SQL database.
  4. Running dotnet ef migrations add <NameOfMigrationInPascalCase> --project ProjectLighthouse.

This process will create a migration file from the changes made in the C# code.

The new migrations will automatically be applied upon starting Lighthouse.

Running tests

You can run tests either through your IDE or by running dotnet tests.

Keep in mind while running database tests (which most tests are) you need to have LIGHTHOUSE_DB_CONNECTION_STRING set.

Continuous Integration (CI) Tips

  • You can skip CI runs for a commit if you specify [skip ci] at the beginning of the commit name. This is useful for formatting changes, etc.
  • When creating your first pull request, CI will not run initially. A team member will have to approve you for use of running CI on a pull request. This is because of GitHub policy.

Compatibility across games and platforms

Game Console (PS3/Vita/PSP) Emulator (RPCS3/Vita3k/PPSSPP) Next-Gen (PS4/PS5/Vita)
LBP1 Compatible Compatible with patched RPCS3 and sceNpCommerce2 patched out of EBOOT N/A
LBP2 Compatible Compatible with patched RPCS3 N/A
LBP3 Mostly compatible, frequent crashes Mostly compatible with patched RPCS3, frequent crashes Incompatible
LBP Vita Compatible Incompatible, marked as "Intro" on Vita3k N/A
LBP PSP Potentially compatible Incompatible, PSN not supported on PPSSPP Potentially Compatible

While LBP Vita and LBP PSP can be supported, they are not properly seperated from the mainline games at this time. We recommend you run separate instances for these games to avoid problems.

Project Lighthouse is still a heavy work in progress, so this chart is subject to change at any point.