{"id":22156227,"url":"https://github.com/andy489/configurable_reel_set_generator","last_synced_at":"2025-06-14T12:06:50.249Z","repository":{"id":129116681,"uuid":"524334317","full_name":"andy489/Configurable_Reel_Set_Generator","owner":"andy489","description":"Tile proportion preserving rolls generator for slot machine. Full control of stack size, minimal distance of two tiles of same kind in different stacks and more.","archived":false,"fork":false,"pushed_at":"2025-02-01T22:01:34.000Z","size":9616,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T14:39:58.949Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andy489.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-13T07:43:33.000Z","updated_at":"2025-02-01T22:01:37.000Z","dependencies_parsed_at":"2023-12-27T23:48:43.374Z","dependency_job_id":"2adf8d08-c076-49b8-a9eb-5a1293a0591a","html_url":"https://github.com/andy489/Configurable_Reel_Set_Generator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andy489/Configurable_Reel_Set_Generator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andy489%2FConfigurable_Reel_Set_Generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andy489%2FConfigurable_Reel_Set_Generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andy489%2FConfigurable_Reel_Set_Generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andy489%2FConfigurable_Reel_Set_Generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andy489","download_url":"https://codeload.github.com/andy489/Configurable_Reel_Set_Generator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andy489%2FConfigurable_Reel_Set_Generator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259813012,"owners_count":22915199,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-02T02:38:52.660Z","updated_at":"2025-06-14T12:06:50.218Z","avatar_url":"https://github.com/andy489.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Configurable Reel Set Generator\nTile proportion preserving rolls generator for slot machine. Very useful for creating no win reels for slot machine with cluster payout strategy, low/hight payout reel sets for slot machine with ways and megaways payout strategy and many more.\nFull control of reel shuffling, using stack size and minimal distance for two tiles of same type in different stacks.\n\n## Structure\n```\nsrc\n└─ main\n    └── java\n          ├── convert \n          |    ├── CayConverter.java\n          |    ├── CountConverter.java\n          │    └── EvoConverter.java\n          ├── dto \n          |    ├── TemplateJsonReelDefinitions.java\n          │    └── TemplateJsonReelSetsEvo.java\n          ├── exception \n          │    ├── InvalidJsonFormatException.java\n          │    ├── NoSuchCompanyFormatException.java\n          │    └── NotSupportedOutputMediaType.java\n          ├── io\n          │    ├── ReaderManager.java\n          │    └── WriterManager.java\n          ├── reel \n          │    ├── ReelSet.java\n          │    ├── ReelSetEvo.java\n          │    ├── ReelSetsCollectionData.java\n          │    └── Restriction.java\n          ├── rng \n          |    ├── IRNG.java\n          |    ├── IWeightedRandomBag.java\n          │    ├── RNG.java\n          │    └── WeightedRandomBag.java\n          ├── shuffler \n          |    ├── FlatGenerator.java\n          |    ├── RestrictionsApplier.java\n          |    └── ShuffleGenerator.java\n          ├── wrapper \n          |    └── ConvertWrapper.java\n          └── ShuffleWithRestrictions.java\n```\n\n## reelDefinitions.json\n\n```json\n{\n  \"mapName\": \"GAME_NAME\",\n  \"gameId\": 123,\n\n  \"strategy\": \"shuffle\",\n  \"output\": \"file\",\n  \"resultFilePath\": \"./result.txt\",\n\n  \"convert\": {\n    \"confirm\": false,\n    \"toCom\" : \"cay\",\n    \"src\": \"./result.txt\",\n    \"dest\": \"./result.txt\"\n  },\n\n  \"reelSets\": [\n    {\n      \"tilesCounts\": [\n        [ 8,34,44,18,68,72,28],\n        [22,13,44,54,22,72,76],\n        [22,34,16,54,68,27,76],\n        [ 8,34,44,18,68,72,28],\n        [22,13,44,54,22,72,76],\n        [22,34,16,54,68,27,76],\n        [ 8,34,44,18,68,72,28]\n      ],\n      \"restrictions\": [\n        {\"stackSizes\": [1,2,3,4,5], \"stackChances\": [12,36,36,10,6], \"minDistance\": 1}\n        {\"stackSizes\": [2,3,4,5], \"stackChances\": [33,33,20,14], \"minDistance\": 2}\n        {\"stackSizes\": [1,3,5], \"stackChances\": [36,36,28], \"minDistance\": 3}\n      ]\n    },\n    {\n      \"tilesCounts\": [\n        [23,34,16,54,68,27,76],\n        [ 8,34,44,18,68,72,28],\n        [22,13,44,54,22,72,76],\n        [22,34,16,54,68,27,76],\n        [ 8,34,44,18,68,72,28],\n        [22,13,44,54,22,72,76],\n        [22,34,16,54,68,27,76]\n      ],\n      \"restrictions\": [\n        {\"stackSizes\": [1,2,3,4,5], \"stackChances\": [20,20,20,20,20], \"minDistance\": 1}\n      ]\n    }\n  ]\n}\n\n```\nAs we can observe, we can use alias for property names: restrictions -\u003e res, tileCounts -\u003e cnts and etc. (We can find all alias in reel/Restriction.java).\n\nLet n be the number of reels and k be the number of restrictions.\nIf n \u003e k, then the i-th restriction applies for all reels, which row number j (0-based enumerating) divided modulo k gives i.\nElse the j-th restriction applies for the j-th reel and the last k - n restrictions are ignored.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandy489%2Fconfigurable_reel_set_generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandy489%2Fconfigurable_reel_set_generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandy489%2Fconfigurable_reel_set_generator/lists"}