Skip to content

Reverse engineering the PS4 videogame Dreams

Notifications You must be signed in to change notification settings

x1nixmzeng/dreamiverse-transformer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

Dreamiverse Transformer

This project aims to reverse engineer the user-generated content in the PS4 videogame Dreams - from Media Molecule.

Why? Dreams hits end-of-life in September 2023, where it will no longer receive official updates (the servers are not going offline, but it is no longer receiving support).

The project name is a lazy reference to an internal server codename ("ultra magnus")

The Early Promise

In March 2020, it was suggested that Dreams would allow "creators to use their content [...] outside of Dreams". The scope of this was vague, and this was limited to a beta application form to allow use of content for "business purposes".

Archived: https://web.archive.org/web/20200425220034/https://docs.indreams.me/en/help/beta-evaluation

Further reading: https://atelier.net/insights/media-molecule-dreams-of-commercial-success

Progress

  • Investigate data formats on disc (game package)
  • Investigate web api
  • Backup Dreams creations
  • Write a model viewer (or at least document the requirements)

Summary

Notes
Engine BubbleBath (in-house engine)
Language C++
Tech json, gnf textures, proprietary data formats, web services
Techniques sdf, constructive geometry
Licenses pffft, FTTPACK, xxHash, lz4

First Impressions

  • There is an existing project that reverses the frontend website / server endpoints and authentication https://github.com/jaames/dreams-api
  • There is some raw 3d model data for the imps in obj format?
  • Some textures use the gnf format typical of other Playstation titles (gnf texture reader), most textures on the server are standard JPEGs
  • Most files are using bespoke data formats. Most files on-disc are compressed with the lz4 algorithm

Servers

Data Formats

  • TODO

Current State

  • Some of the data formats are understood (texts, imps, unimodels)
  • Much of the game is driven by the web server. While some of the api can be understood, the secured transport protocol (https) makes sniffing the data almost impossible without being to decrypt the certificate
  • Practically, this means that downloading creations made in Dreams is not possible
  • The correlation between resource ids and hashes is not understood (possibly described in a file named bloblist.dat, content.json, or metadata.json)
  • How the game fetches creations is not fully known - but the CDN hosts both hashed binary content and hashes images (in various sizes)

Other Futures

  • The community push for exporting their creations (reach out!)
  • A means to decrypt the endpoints (hacked console? console emulator?) is discovered
  • Further work is done to reverse engineer and understand the game binary (eboot.bin)
  • Dreams is updated to support exporting creations
  • Dreams becomes open source

About

Reverse engineering the PS4 videogame Dreams

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published