Skip to main content
Minecraft Community Edition supports both PlayStation 3 and PlayStation 4 with platform-specific optimizations, including SPU acceleration on PS3 and modern rendering on PS4. Both platforms integrate with PlayStation Network for online features.

Platform Comparison

PlayStation 3

Cell processor with SPU optimization and PSN integration

PlayStation 4 (Orbis)

Modern x64 architecture with enhanced graphics capabilities

Technical Specifications

FeaturePlayStation 3PlayStation 4 (Orbis)
CPUCell (PPU + 6 SPUs)x64 8-core AMD Jaguar
Main RAM256 MB XDR8 GB GDDR5 unified
Video RAM256 MB GDDR3Unified with main RAM
GraphicsRSX (NVIDIA-based)AMD GCN-based GPU
Network APISQRNetworkManagerSQRNetworkManager
SPU SupportYes (6 SPUs)No (x64 architecture)
SDKPS3 SDKPS4 SDK (Orbis)

PlayStation 3 Platform

Directory Structure

Minecraft.Client/PS3/
├── PS3_App.cpp/h               # Application lifecycle
├── PS3_Minecraft.cpp           # Main game implementation
├── PS3_UIController.cpp/h      # UI controller
├── PS3_PlayerUID.cpp/h         # PSN player identification
├── Minecraft_Macros.h          # Platform macros
├── PS3ProductCodes.bin         # Product configuration
├── SPU_Tasks/                  # SPU task implementations
│   ├── SPU_Tasks.sln
│   ├── ChunkUpdate/            # Chunk processing on SPU
│   ├── CompressedTile/         # Tile compression
│   ├── CompressedTileStorage_compress/
│   ├── LevelRenderer_cull/     # Rendering culling
│   ├── LevelRenderer_FindNearestChunk/
│   ├── Texture_blit/           # Texture operations
│   └── mssspurs.elf            # SPU runtime
├── Network/                    # PSN networking
├── PS3Extras/                  # Development tools
│   └── HeapInspector/          # Memory debugging
├── Media/                      # Assets
├── Edge/                       # Edge library
└── DATA/                       # Game data
Reference: Minecraft.Client/PS3/

SPU Task Optimization

The PS3 version leverages the Cell processor’s SPUs (Synergistic Processing Units) for parallel processing:

SPU Task Projects

<!-- SPU_Tasks.sln - 6 SPU task implementations -->
- ChunkUpdate              # Parallel chunk updates
- CompressedTile           # Tile compression on SPU
- CompressedTileStorage_compress  # Storage compression
- LevelRenderer_cull       # View frustum culling
- LevelRenderer_FindNearestChunk  # Spatial queries
- Texture_blit             # Texture operations
Reference: PS3/SPU_Tasks/SPU_Tasks.sln:4-15

SPU Task Benefits

Chunk Processing

Parallel chunk updates across multiple SPUs

Rendering Culling

Fast frustum culling on SPUs

Compression

Tile and storage compression offloaded to SPUs

Texture Operations

Parallel texture blitting and processing

PS3 Network Integration

PS3 uses the Sony networking layer:
class CPlatformNetworkManagerSony : public CPlatformNetworkManager, ISQRNetworkManagerListener
{
private:
    SQRNetworkManager *m_pSQRNet;  // Sony network manager
    vector<SQRNetworkPlayer *> m_machineSQRPrimaryPlayers;
    
public:
    // ISQRNetworkManagerListener implementation
    virtual void HandleDataReceived(
        SQRNetworkPlayer *playerFrom,
        SQRNetworkPlayer *playerTo,
        unsigned char *data,
        unsigned int dataSize
    );
    virtual void HandlePlayerJoined(SQRNetworkPlayer *player);
    virtual void HandlePlayerLeaving(SQRNetworkPlayer *player);
    virtual void HandleStateChange(
        SQRNetworkManager::eSQRNetworkManagerState oldState,
        SQRNetworkManager::eSQRNetworkManagerState newState,
        bool idleReasonIsSessionFull
    );
};
Reference: Common/Network/Sony/PlatformNetworkManagerSony.h:16-187

Player Identification

class PS3_PlayerUID {
    // PlayStation Network unique player identification
    // Handles PSN user sessions and profiles
};
Reference: PS3/PS3_PlayerUID.h

PS3 Search Configuration

// Session search delay for PS3
#define MINECRAFT_PS3ROOM_SEARCH_DELAY_MILLISECONDS 30000
Reference: Common/Network/Sony/PlatformNetworkManagerSony.h:11

PlayStation 4 (Orbis) Platform

Directory Structure

Minecraft.Client/Orbis/
├── Orbis_App.cpp/h             # Application lifecycle
├── Orbis_Minecraft.cpp         # Main game implementation
├── Orbis_UIController.cpp/h    # UI controller
├── Orbis_PlayerUID.cpp/h       # PSN player identification
├── Minecraft_Macros.h          # Platform macros (3-bit poptime)
├── PS4ProductCodes.bin         # Product configuration
├── ps4__np_conf.h              # PSN configuration
├── user_malloc.cpp             # Custom memory allocator
├── user_malloc_for_tls.cpp     # TLS memory management
├── user_new.cpp                # Custom new operator
├── Network/                    # PSN networking
├── OrbisExtras/               # Platform utilities
├── GameConfig/                 # Configuration
├── session_image.jpg/png       # Session preview images
└── min/                        # Minified resources
Reference: Minecraft.Client/Orbis/

Orbis Macro Differences

PS4 has a slightly different macro definition:
// PS4 uses 3 bits for poptime (vs 11 bits unused on other platforms)
// 3 bit user index
// 5 bits alpha
// 1 bit decoration
// 11 bits unused (was aux val, moved to item bitmask)
// 6 bits count
// 6 bits scale
Reference: Orbis/Minecraft_Macros.h:7

Custom Memory Management

PS4 implements custom memory allocators:
// user_malloc.cpp - Custom malloc implementation
// user_malloc_for_tls.cpp - Thread-local storage allocation
// user_new.cpp - Custom new/delete operators
These optimize memory allocation for the PS4’s unified memory architecture. Reference: Orbis/user_malloc.cpp, Orbis/user_new.cpp

PSN Configuration

// ps4__np_conf.h - PlayStation Network configuration
// Defines title ID, age rating, features, etc.
Reference: Orbis/ps4__np_conf.h

Shared PlayStation Features

Sony Network Manager

Both platforms use SQRNetworkManager with platform-specific implementations:
class CPlatformNetworkManagerSony : public CPlatformNetworkManager, ISQRNetworkManagerListener
{
private:
    SQRNetworkManager *m_pSQRNet;
    
    // PlayStation-specific session management
    vector<FriendSessionInfo *> friendsSessions;
    int m_searchResultsCount;
    SQRNetworkManager::SessionSearchResult *m_pSearchResults;
    
public:
    virtual vector<FriendSessionInfo *> *GetSessionList(int iPad, int localPlayers, bool partyOnly);
    virtual void GetFullFriendSessionInfo(
        FriendSessionInfo *foundSession,
        void (*FriendSessionUpdatedFn)(bool success, void *pParam),
        void *pParam
    );
    
    // PSN presence integration
    static void SetSQRPresenceInfoFromExtData(
        SQRNetworkManager::PresenceSyncInfo *presence,
        void *pExtData,
        SceNpMatching2RoomId roomId,
        SceNpMatching2ServerId serverId
    );
};
Reference: Common/Network/Sony/PlatformNetworkManagerSony.h:85-187

PlayStation Network Features

Matchmaking

PSN room-based matchmaking and session search

Trophies

PlayStation trophy integration

Friends

PSN friends list and invites

Cloud Saves

Cross-platform save synchronization

Session Management

virtual void HandleInviteReceived(
    int userIndex,
    const SQRNetworkManager::PresenceSyncInfo *pInviteInfo
);

virtual void HandleStateChange(
    SQRNetworkManager::eSQRNetworkManagerState oldState,
    SQRNetworkManager::eSQRNetworkManagerState newState,
    bool idleReasonIsSessionFull
);

virtual void HandleDisconnect(bool bLostRoomOnly, bool bPSNSignOut=false);
Reference: Common/Network/Sony/PlatformNetworkManagerSony.h:179-183

Player Resynchronization

virtual void HandleResyncPlayerRequest(SQRNetworkPlayer **aPlayers);
PlayStation platforms support player resync for recovering from network issues. Reference: Common/Network/Sony/PlatformNetworkManagerSony.h:180

Build Configurations

Both platforms support the same build types:
ConfigurationPS3PS4 (Orbis)
Debug
Release
ReleaseForArt
ContentPackage
Reference: MinecraftConsoles.sln:15, 33-42

Leaderboards

PlayStation-specific leaderboard implementations:
Leaderboards/
├── LeaderboardManager.h/cpp
└── [Sony-specific PSN integration]
Both platforms integrate with PSN leaderboards.

Content and Media

Session Images

Both platforms support session preview images for PSN:
// PS3: Media/session_image.*
// PS4: session_image.jpg, session_image.png
These images appear in the PSN UI when browsing sessions.

Product Codes

PS3ProductCodes.bin  # PS3 SKU and region codes
PS4ProductCodes.bin  # PS4 SKU and region codes
These files contain platform-specific product identifiers.

Build Instructions

PlayStation 3

1

Install PS3 SDK

Install the PlayStation 3 Software Development Kit
2

Configure ProDG

Set up ProDG or SN Systems debugger
3

Select PS3 Platform

Choose “PS3” from the platform configuration in Visual Studio
4

Build SPU Tasks

Build SPU tasks first using SPU_Tasks.sln
5

Build Main Game

Build the main game with PS3 configuration
6

Deploy

Deploy to PS3 devkit

PlayStation 4

1

Install PS4 SDK

Install the PlayStation 4 Software Development Kit (Orbis SDK)
2

Configure DevKit

Set up your PS4 development kit
3

Select ORBIS Platform

Choose “ORBIS” from the platform configuration
4

Build Package

Build the application package
5

Deploy and Test

Deploy to PS4 devkit and test

Performance Optimization

PlayStation 3 Optimization

  • Offload chunk updates to SPUs
  • Parallel rendering culling on SPUs
  • Texture compression on SPUs
  • Use SPURS (SPU Runtime System) for task management
  • Split memory: 256 MB main + 256 MB video
  • Careful XDR/GDDR3 allocation
  • Use heap inspector for debugging
  • Minimize main-video memory transfers
  • Batch rendering calls
  • Optimize vertex/fragment shaders
  • Use GPU memory efficiently (256 MB limit)

PlayStation 4 Optimization

  • Take advantage of 8 GB unified GDDR5
  • Optimize memory allocators (custom malloc)
  • Efficient texture streaming
  • SIMD optimization for x64
  • Multi-threaded chunk processing
  • Use all 8 Jaguar cores effectively
  • Modern shader features (compute shaders)
  • Async compute for parallelism
  • Efficient GCN-optimized rendering

Development Tools

PS3 Heap Inspector

PS3/PS3Extras/HeapInspector/
├── Samples/
│   ├── Hook/
│   ├── Manual/
│   ├── MultiThreadedHook/
│   └── ReplaceNewDelete/
└── Server/
The Heap Inspector helps debug memory issues on PS3. Reference: PS3/PS3Extras/HeapInspector/

Assert System

Assert/  # Custom assertion system for development
Both platforms include debug assertion frameworks.

Common Issues

PlayStation development requires official Sony development kits and signed NDAs. Retail consoles cannot be used for development.
Ensure SPU tasks are properly built and linked. Check SPU memory alignment and DMA transfers.
Verify PSN configuration and network settings. Check that np_conf.h is properly configured for your title.
Use custom allocators and monitor heap fragmentation, especially on PS3 with limited RAM.
Ensure save data format compatibility between PS3/PS4/Vita for cloud save features.

Cross-Platform Features

PlayStation platforms support cross-save and some cross-play features:
  • Save transfer between PS3, PS4, and Vita
  • Shared trophy lists
  • PSN friends integration
  • Cloud save synchronization

Next Steps

PS Vita

Learn about the handheld Vita platform

Networking

Deep dive into networking architecture

Rendering

Understand the rendering pipeline

Xbox Platform

Compare with Xbox implementation

Build docs developers (and LLMs) love