Something to do
- This projects makes use of PHP Enumerations, so your env must support PHP 8.1.
- Make sure you can update your
php.ini
to support a larger amount of memory. The contentfile is just over 30 Mb and some of the extracted data is very large as well. I have my local env configured like so:; Maximum amount of memory a script may consume ; https://php.net/memory-limit memory_limit = 768M
- Make sure you have a symlink setup between your Storage directory and Public.
php artisan storage:link
php artisan destiny:contentfile
(downloads the latest Manifest & SQLite db)php artisan migrate
(setup the local db tables)php artisan db:seed
(seeds by reading the latest SQLite db)
To update the projects DB with the most recent info
php artisan destiny:contentfile
php artisan migrate:fresh --seed
-
php artisan destiny:contentfile
Checks for a locally stored Manifest. If one is found it will check if it is up-to-date. If not it will be deleted and a new one will be downloaded and stored in a manifest directory within the projects storage directory.
- From here, it finds the path for the MobileWorldContentFile, which contains all the static data that we are after, and downloads it to a directory for the language you selected, within a contentfile directory within the root storage dir. The folder structure looks like this:
- storage
- app
- public
- contentfiles
- lang
- world_sql_content_3d029.content
- manifests -manifest.json
- contentfiles
- public
- app
-
php artisan destiny:manifest
Downloads the most recent version of the manifest and stores it with the manifest directory.
-
php artisan destiny:tables
Lists all the available tables within the MobileWorldContentFile.
-
php artisan destiny:tablecolumns
Lists the columns for a given table. ex
php artisan destiny:tablecolumns DestinyLocationDefinition
will output:Array ( [0] => vendorHash [1] => locationReleases [2] => hash [3] => index [4] => redacted [5] => blacklisted )
-
php artisan destiny:view
View a tables contents. ex:
php artisan destiny:view DestinyLocationDefinition
will output the contents of that table to the console. Not pretty, but...
NOTE: The listing of available tables seems... fluid from update to update. I need to update the seeders to actually check if a table is available.
DestinyPlaceDefinitionDestinyActivityDefinitionDestinyActivityTypeDefinitionDestinyClassDefinitionDestinyGenderDefinitionDestinyInventoryBucketDefinitionDestinyRaceDefinition- DestinyTalentGridDefinition
DestinyUnlockDefinition// EmptyDestinyMaterialRequirementSetDefinitionDestinySandboxPerkDefinition// damageTypeHash always returns NULLDestinyStatGroupDefinitionDestinyFactionDefinitionDestinyVendorGroupDefinition- DestinyRewardSourceDefinition // Empty
DestinyItemCategoryDefinitionDestinyDamageTypeDefinitionDestinyActivityModeDefinitionDestinyMedalTierDefinitionDestinyAchievementDefinition- DestinyActivityGraphDefinition // No Real Useful Info
- DestinyBondDefinition // No Real Info
DestinyCollectibleDefinitionDestinyDestinationDefinitionDestinyEquipmentSlotDefinitionDestinyStatDefinitionDestinyInventoryItemDefinitionDestinyItemTierTypeDefinitionDestinyLocationDefinitionDestinyLoreDefinition// Subtitle property is always NULL due to encodingDestinyMetricDefinitionDestinyObjectiveDefinitionDestinyPlugSetDefinitionDestinyPowerCapDefinitionDestinyPresentationNodeDefinitionDestinyProgressionDefinitionDestinyProgressionLevelRequirementDefinitionDestinyRecordDefinition- DestinySackRewardItemListDefinition // Empty, removed in 12/6 update
DestinySandboxPatternDefinitionDestinySeasonDefinition// contains incomplete infoDestinySeasonPassDefinitionDestinySocketCategoryDefinitionDestinySocketTypeDefinitionDestinyTraitDefinitionDestinyTraitCategoryDefinitionDestinyVendorDefinitionDestinyMilestoneDefinitionDestinyActivityModifierDefinition- DestinyReportReasonCategoryDefinition
DestinyArtifactDefinitionDestinyBreakerTypeDefinitionDestinyChecklistDefinitionDestinyEnergyTypeDefinition