With strings and item codes, of course. Why just using lower-case, upper-case and numbers in a 3 digit code, you have 238,328 different combinations. Should be able to fit 2000 items in there if you do it right at least. 2 digit code yields 3844 different combos, but could probably store 3500 + doing it that way if you had to.
With strings and item codes, of course. Why just using lower-case, upper-case and numbers in a 3 digit code, you have 238,328 different combinations. Should be able to fit 2000 items in there if you do it right at least. 2 digit code yields 3844 different combos, but could probably store 3500 + doing it that way if you had to.
With 2000 premade items it definitely could work but what about items with trillions of possibilities? How would I be able to store 2000 items with a lot of extremely random variables associated with them accurately within 8KB?
Determine how many items a player could have at a single time at most. I honestly doubt your player can have 2k items at the same time. For the map I and Zeldarules are currently working on we're able to save 86 units with over 20 varying stats each (might be over 30 actually), and we've still got space in our bank for other stuff we need to save.
Also, I highly recommend using the library "Starcode", it helps in reducing bank size, and try to put everything into as long strings as possible.
Not exactly sure what you got going over there, but it really isn't that bad to do. Let's say your item can potentially go into 50 different armor slots, has 10 different stats that can go up to 1000 per item, and 1000 different abilities it could possibly have (but only one total). Well if you use a-z, A-Z, and 0-9 for possible characters, each space has 62 possible values, so 1 space could hold 62 unique values, 2 spaces can hold 62 x 62 unique values, and you essentially have yourself a Duo-Sextadecimal numbering system, lol.
So the first character can be the slot type, then the next 2 characters can be one stat's number value, do that again 9 times for a total of 10 stats, then the last 2 characters would be an ability connected to it. So something like this for one item:
Make sense? Now I don't honestly know why an item would need to be so exact and randomized, but it isn't hard to do, just a bit tedious. That setup right there can keep track of an item w/ 50 * 1001^11 possible stat setups, or a little over 50 Decillion possibilities. I for the most part pre-made all my items, just have special codes to bank them, another string to keep track of their charges for potions and such, and internal code that doesn't need to be banked for their actual stats.
I think the 256x256 limit is likely to hit first. =\ I really didn't get that one. People in WC3 spent years trying to get past 256x256, but Blizzard inserts that limit again and comparatively the SC2 256x256 dimension is smaller than the WC3 one. For RP maps it's a killer. I do hope they plan to expand it at some point — if not HotS, then LotV.
It isn't as killer as you might think. My map is essentially 600 x 600 or something the way I have the camera set up, and all units are about 30-50 % of their original size. Main issue from there is terraining it so it looks believable without overusing doodads, not a land of the giants effect.
I keep my graphics low as my computer can't handle too much, so I bet the zoom in would make everything look horrible. On top of that, I'd have to go through the gigantic, enormous list of actors to scale them all. Tedious to the core. =S
Not exactly sure what you got going over there, but it really isn't that bad to do. Let's say your item can potentially go into 50 different armor slots, has 10 different stats that can go up to 1000 per item, and 1000 different abilities it could possibly have (but only one total). Well if you use a-z, A-Z, and 0-9 for possible characters, each space has 62 possible values, so 1 space could hold 62 unique values, 2 spaces can hold 62 x 62 unique values, and you essentially have yourself a Duo-Sextadecimal numbering system, lol.
So the first character can be the slot type, then the next 2 characters can be one stat's number value, do that again 9 times for a total of 10 stats, then the last 2 characters would be an ability connected to it. So something like this for one item:
Make sense? Now I don't honestly know why an item would need to be so exact and randomized, but it isn't hard to do, just a bit tedious. That setup right there can keep track of an item w/ 50 * 1001^11 possible stat setups, or a little over 50 Decillion possibilities. I for the most part pre-made all my items, just have special codes to bank them, another string to keep track of their charges for potions and such, and internal code that doesn't need to be banked for their actual stats.
Thank you for helping but unfortunately I don't think the system works with what I want. I see how your system works but the problem is you have a string of length 23 for 1 item. If I were to make 2000 items that is 46000 characters. If I used 100 strings of length 460 would it fit within 8 kb? I thought about it a lot last night and I could further reduce the string length down to 18 characters per item I had in mind (which has 18 variables) and possibly could reduce it more if I could figure out a way to accurately combine and extract variables that take up less space than the sum of the other variables digits. The problem is even if I use 36000 characters for 2000 items at 60 strings of length 600 it would still take up a decent amount more than 8 KB wouldn't it? Thus the 8 kb still makes it impossible to do what I want as far as I know for now. Also keep in mind I can't use all 8 KB on just items if I want to track other things as well. If Blizzard raised the limit to something like 100 KB per person then it wouldn't be such a problem.
What IS it you want to do? And does your map really need 2000 items banked per player??? I'm fairly certain just having 2000 items per player in game will cause massive lag already (items are units, lots of units = lag)
Also, have you tried using starcode as suggested? It is able to heavily reduce the size of banked data, and makes hacking the bank harder as an added bonus.
What IS it you want to do? And does your map really need 2000 items banked per player??? I'm fairly certain just having 2000 items per player in game will cause massive lag already (items are units, lots of units = lag)
Also, have you tried using starcode as suggested? It is able to heavily reduce the size of banked data, and makes hacking the bank harder as an added bonus.
My map doesn't need 2000 items banked per player (though it would be nice). As to why I would want a lot of items is the fact that I don't want people to feel they don't have enough space for good gear. I plan to have 12 characters. Diablo 3 has only 10 characters and 930 item slots and it feels way too little unless you play casually. What I would like to do is have a Diabloesque item system. You have multiple item qualities with most of them heavily randomized but some of the 'unique" ones being premade items.
Here would be an example 2 rare items with the rolls and other pertinent information (affixes and rolls made up for example purposes)
Sorry for the weird spacing but the forum reformats the stuff in an odd way if I don't use spacing:
1. Shadow Hatred (1 variable for prefix 1 variable for suffix)
Item quality: rare
Item slot: weapon
item location: slot 359 in inventory (I need to know what slot the item is in to put it back in the right spot when they make a new game)
+287 damage (guaranteed affix for this item type)
+17% chance to stun on hit
+144% chance to find a magic item
+189 poison damage over 9 seconds
+4% chance to crit
Replenish 29 life per second
+48 to strength
2. Cold Heart
item quality: rare
item slot: chest armor
item location: slot 1441 in inventory
+728 defense (guaranteed affix for this item type)
+37 dexterity
+72 energy
+91 vitality
2% chance to cast frost nova upon hit
100% chance to launch a nuke upon death
+47% more gold dropped
As you can see I would need 2 variables for the name, 1 variable for the item quality, 1 variable for item type, 1 variable for item location, 1 variable for the guaranteed affix, 6 variables for what non-guaranteed affixes are rolled, 6 variables for the rolls for these affixes, for a total of 18 variables. Sure I probably can reduce it down to something like 14 variables but its still a minimum of 14 characters per item at 2000 items = 28000 chars of storage.
As for starcode I have never learned programming. I didn't want to use starcode for this map if I didn't have to. Perhaps it is a good time to learn it if it will make things significantly better in the long run. Though I know it would be quite time consuming (on top of all the other work) to learn it while making the map.
Don't forget the 28-string/text one. Can't combine more than 28 strings/texts at once. If you save a few substrings into different variables, it seems to work. But then again, I also tried combining into one long string using 5 or 6 different lines of code and it didn't work. Even tried setting another variable to see if that'd work. Had some weird, inconsistent outcomes trying to make dynamic tooltips.
starcode is a trigger library, not a scripting language or anything that needs to be learned. It compresses tons of integers into base 93 or so, heavily reducing the length. Due to the 781 character string limit, you'll still need to make multiple keys in the banks.
And, from what I see, 2000 items is absolutely unnecessary. Who in their right mind will collect that many items for a custom game? If you were making a standalone game, I'd understand wanting to be able to have 2k items overall, but this isn't a standalone game, and that number is unnecessarily large.
Also, you could save space by pre-determining certain things (Like the items name using an ID, certain stats they are guaranteed to have) and sort of reverse-engineering other parts of it like the affix names based on the banked data (So that you don't need to store its name, but just look at the stats it has and see which affix those belong to)
Ahh starcode could be useful I may end up using it. I have thought up a system that I find would work (takes up 5760 characters of space in the bank for 384 Diabloesque items). Still I could easily store 5760 premade items that with the same amount of storage (and theoretically over 150,000 premade items could be stored in the same amount of space). I think randomized items are more interesting (and less work!) than the premade ones so I might scrap some space for a more interesting item system. Still the 8 KB limit still imposes more limitations than my imagination I would say. Thanks for helping everyone!
Seems you get a fun decision to make, do you want randomized items or more storage space for preset ones? I know nothing of Diablo 3, but didn't Diablo1/2 have the thing going on where rings would take 1 slot, a short sword 3 or 4 vertically maybe, shield 4 to 8 slots, etceteras. I really don't know where this 2000 item figure is coming from. Oh well, best of luck with your endeavor, just don't go burning yourself out :)
I'm currently working on a project that requires an large amount of banking. I didn't think there was any way I'd be able to make everything fit into 8 kb, but with starcode it became possible. They key is to use as few bank keys as possible (oh, I'm so punny :P ). Compress the data into a few larger keys, since key definitions waste space in your bank for useless information.
I'm storing about 2300 values for my bank right now. Lets say you need to store 14 variables per item. 2300/14 is 164. 164 items is definitely enough for a D3-style starcraft map. Whereas you might need more space than that in diablo, nobody's going to play your map enough to collect 164 items- there's no use for that, even in diablo. Either way, don't let that limitation prevent you from making what could be a great map.
Rollback Post to RevisionRollBack
Feel free to Send me a PM if you have any questions/concerns!
Just found a new limit. Not sure if this is already known (wasn't to me anyway). There seems to be a soft-cap on upgrade levels. You can't set the maximum level of an upgrade higher than 127. The hard-cap is 255 but going beyond 127 causes errors (for me, I couldn't set the level via triggers. The level stayed at 0). If you're planning on using lots of levels for your upgrades, increment accordingly.
Just found a new limit. Not sure if this is already known (wasn't to me anyway). There seems to be a soft-cap on upgrade levels. You can't set the maximum level of an upgrade higher than 127. The hard-cap is 255 but going beyond 127 causes errors (for me, I couldn't set the level via triggers. The level stayed at 0). If you're planning on using lots of levels for your upgrades, increment accordingly.
I remember this limitation. I encountered another one with # of upgrades for an upgrade object. Adding another upgrade beyond the limit will cause the field to not save. Not sure if it's similar for other fields that store multiple attributes like +abilities. There's probably more kinds of data limitations that people can encounter reasonably.
But seriously, sadly you cant throw down 1600 trees and expect no lag... I learned that the hard way.
The doodad limit might be 10,000 but even half of that is now unreasonable. Map loading times have increased significantly in patch 1.5. I'm at roughly 5000 doodads and the load became just too much. Going to be cutting it down to 3000 at least. Go Zarakk!
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
@Imperfect1987: Go
With strings and item codes, of course. Why just using lower-case, upper-case and numbers in a 3 digit code, you have 238,328 different combinations. Should be able to fit 2000 items in there if you do it right at least. 2 digit code yields 3844 different combos, but could probably store 3500 + doing it that way if you had to.
With 2000 premade items it definitely could work but what about items with trillions of possibilities? How would I be able to store 2000 items with a lot of extremely random variables associated with them accurately within 8KB?
@Imperfect1987: Go
Determine how many items a player could have at a single time at most. I honestly doubt your player can have 2k items at the same time. For the map I and Zeldarules are currently working on we're able to save 86 units with over 20 varying stats each (might be over 30 actually), and we've still got space in our bank for other stuff we need to save.
Also, I highly recommend using the library "Starcode", it helps in reducing bank size, and try to put everything into as long strings as possible.
@Imperfect1987: Go
Not exactly sure what you got going over there, but it really isn't that bad to do. Let's say your item can potentially go into 50 different armor slots, has 10 different stats that can go up to 1000 per item, and 1000 different abilities it could possibly have (but only one total). Well if you use a-z, A-Z, and 0-9 for possible characters, each space has 62 possible values, so 1 space could hold 62 unique values, 2 spaces can hold 62 x 62 unique values, and you essentially have yourself a Duo-Sextadecimal numbering system, lol.
So the first character can be the slot type, then the next 2 characters can be one stat's number value, do that again 9 times for a total of 10 stats, then the last 2 characters would be an ability connected to it. So something like this for one item:
Make sense? Now I don't honestly know why an item would need to be so exact and randomized, but it isn't hard to do, just a bit tedious. That setup right there can keep track of an item w/ 50 * 1001^11 possible stat setups, or a little over 50 Decillion possibilities. I for the most part pre-made all my items, just have special codes to bank them, another string to keep track of their charges for potions and such, and internal code that doesn't need to be banked for their actual stats.
@TheZizz: Go
The 781 character limit appears to have been fixed (even in 1.4.4), at least locally. I don't have the wherewithal to test it in multiplayer.
@DrSuperEvil: Go
I think the 256x256 limit is likely to hit first. =\ I really didn't get that one. People in WC3 spent years trying to get past 256x256, but Blizzard inserts that limit again and comparatively the SC2 256x256 dimension is smaller than the WC3 one. For RP maps it's a killer. I do hope they plan to expand it at some point — if not HotS, then LotV.
@Wc3SRui: Go
It isn't as killer as you might think. My map is essentially 600 x 600 or something the way I have the camera set up, and all units are about 30-50 % of their original size. Main issue from there is terraining it so it looks believable without overusing doodads, not a land of the giants effect.
I keep my graphics low as my computer can't handle too much, so I bet the zoom in would make everything look horrible. On top of that, I'd have to go through the gigantic, enormous list of actors to scale them all. Tedious to the core. =S
Thank you for helping but unfortunately I don't think the system works with what I want. I see how your system works but the problem is you have a string of length 23 for 1 item. If I were to make 2000 items that is 46000 characters. If I used 100 strings of length 460 would it fit within 8 kb? I thought about it a lot last night and I could further reduce the string length down to 18 characters per item I had in mind (which has 18 variables) and possibly could reduce it more if I could figure out a way to accurately combine and extract variables that take up less space than the sum of the other variables digits. The problem is even if I use 36000 characters for 2000 items at 60 strings of length 600 it would still take up a decent amount more than 8 KB wouldn't it? Thus the 8 kb still makes it impossible to do what I want as far as I know for now. Also keep in mind I can't use all 8 KB on just items if I want to track other things as well. If Blizzard raised the limit to something like 100 KB per person then it wouldn't be such a problem.
@Imperfect1987: Go
What IS it you want to do? And does your map really need 2000 items banked per player??? I'm fairly certain just having 2000 items per player in game will cause massive lag already (items are units, lots of units = lag)
Also, have you tried using starcode as suggested? It is able to heavily reduce the size of banked data, and makes hacking the bank harder as an added bonus.
My map doesn't need 2000 items banked per player (though it would be nice). As to why I would want a lot of items is the fact that I don't want people to feel they don't have enough space for good gear. I plan to have 12 characters. Diablo 3 has only 10 characters and 930 item slots and it feels way too little unless you play casually. What I would like to do is have a Diabloesque item system. You have multiple item qualities with most of them heavily randomized but some of the 'unique" ones being premade items.
Here would be an example 2 rare items with the rolls and other pertinent information (affixes and rolls made up for example purposes)
Sorry for the weird spacing but the forum reformats the stuff in an odd way if I don't use spacing:
1. Shadow Hatred (1 variable for prefix 1 variable for suffix)
Item quality: rare
Item slot: weapon
item location: slot 359 in inventory (I need to know what slot the item is in to put it back in the right spot when they make a new game)
+287 damage (guaranteed affix for this item type)
+17% chance to stun on hit
+144% chance to find a magic item
+189 poison damage over 9 seconds
+4% chance to crit
Replenish 29 life per second
+48 to strength
2. Cold Heart
item quality: rare
item slot: chest armor
item location: slot 1441 in inventory
+728 defense (guaranteed affix for this item type)
+37 dexterity
+72 energy
+91 vitality
2% chance to cast frost nova upon hit
100% chance to launch a nuke upon death
+47% more gold dropped
As you can see I would need 2 variables for the name, 1 variable for the item quality, 1 variable for item type, 1 variable for item location, 1 variable for the guaranteed affix, 6 variables for what non-guaranteed affixes are rolled, 6 variables for the rolls for these affixes, for a total of 18 variables. Sure I probably can reduce it down to something like 14 variables but its still a minimum of 14 characters per item at 2000 items = 28000 chars of storage.
As for starcode I have never learned programming. I didn't want to use starcode for this map if I didn't have to. Perhaps it is a good time to learn it if it will make things significantly better in the long run. Though I know it would be quite time consuming (on top of all the other work) to learn it while making the map.
Don't forget the 28-string/text one. Can't combine more than 28 strings/texts at once. If you save a few substrings into different variables, it seems to work. But then again, I also tried combining into one long string using 5 or 6 different lines of code and it didn't work. Even tried setting another variable to see if that'd work. Had some weird, inconsistent outcomes trying to make dynamic tooltips.
@Imperfect1987: Go
starcode is a trigger library, not a scripting language or anything that needs to be learned. It compresses tons of integers into base 93 or so, heavily reducing the length. Due to the 781 character string limit, you'll still need to make multiple keys in the banks.
And, from what I see, 2000 items is absolutely unnecessary. Who in their right mind will collect that many items for a custom game? If you were making a standalone game, I'd understand wanting to be able to have 2k items overall, but this isn't a standalone game, and that number is unnecessarily large.
Also, you could save space by pre-determining certain things (Like the items name using an ID, certain stats they are guaranteed to have) and sort of reverse-engineering other parts of it like the affix names based on the banked data (So that you don't need to store its name, but just look at the stats it has and see which affix those belong to)
@TheAlmaity: Go
Ahh starcode could be useful I may end up using it. I have thought up a system that I find would work (takes up 5760 characters of space in the bank for 384 Diabloesque items). Still I could easily store 5760 premade items that with the same amount of storage (and theoretically over 150,000 premade items could be stored in the same amount of space). I think randomized items are more interesting (and less work!) than the premade ones so I might scrap some space for a more interesting item system. Still the 8 KB limit still imposes more limitations than my imagination I would say. Thanks for helping everyone!
@Imperfect1987: Go
Seems you get a fun decision to make, do you want randomized items or more storage space for preset ones? I know nothing of Diablo 3, but didn't Diablo1/2 have the thing going on where rings would take 1 slot, a short sword 3 or 4 vertically maybe, shield 4 to 8 slots, etceteras. I really don't know where this 2000 item figure is coming from. Oh well, best of luck with your endeavor, just don't go burning yourself out :)
@Imperfect1987: Go
I'm currently working on a project that requires an large amount of banking. I didn't think there was any way I'd be able to make everything fit into 8 kb, but with starcode it became possible. They key is to use as few bank keys as possible (oh, I'm so punny :P ). Compress the data into a few larger keys, since key definitions waste space in your bank for useless information.
I'm storing about 2300 values for my bank right now. Lets say you need to store 14 variables per item. 2300/14 is 164. 164 items is definitely enough for a D3-style starcraft map. Whereas you might need more space than that in diablo, nobody's going to play your map enough to collect 164 items- there's no use for that, even in diablo. Either way, don't let that limitation prevent you from making what could be a great map.
Just found a new limit. Not sure if this is already known (wasn't to me anyway). There seems to be a soft-cap on upgrade levels. You can't set the maximum level of an upgrade higher than 127. The hard-cap is 255 but going beyond 127 causes errors (for me, I couldn't set the level via triggers. The level stayed at 0). If you're planning on using lots of levels for your upgrades, increment accordingly.
I remember this limitation. I encountered another one with # of upgrades for an upgrade object. Adding another upgrade beyond the limit will cause the field to not save. Not sure if it's similar for other fields that store multiple attributes like +abilities. There's probably more kinds of data limitations that people can encounter reasonably.
Well you do have the limitation of not being the baddest mutha fukka this side of the mississipi.
But seriously, sadly you cant throw down 1600 trees and expect no lag... I learned that the hard way.
The doodad limit might be 10,000 but even half of that is now unreasonable. Map loading times have increased significantly in patch 1.5. I'm at roughly 5000 doodads and the load became just too much. Going to be cutting it down to 3000 at least. Go Zarakk!