What is _proxyRegistryAddress and how is it use for?

Hello,

This might be some weird question. I wonder what is _proxyRegistryAddress and ProxyDelegrate in the smart contract. It’s a little bit confusing me about how it is works and how to use it, what’s for?

And thank you for your answers.

In case you might ask, where I see it. Then here for Opensea

pragma solidity ^0.5.0;

import "./ERC721Tradable.sol";
import "openzeppelin-solidity/contracts/ownership/Ownable.sol";

/**
 * @title Creature
 * Creature - a contract for my non-fungible creatures.
 */
contract Creature is TradeableERC721Token {
  constructor(address _proxyRegistryAddress) TradeableERC721Token("Creature", "OSC", _proxyRegistryAddress) public {  }

  function baseTokenURI() public view returns (string memory) {
    return "https://opensea-creatures-api.herokuapp.com/api/creature/";
  }
}