00:00.18 | ThunderLord | im thinking i could do somthing like.... |
00:01.47 | ThunderLord | in my first 5 games. i beat 3 players in the 25th %, 1 player in the 40th % and lost to 1 player in the 35% and 4 players in the 46%. So my estimated % is somewhere around 30% |
00:02.04 | A1win | you can't do percentages |
00:02.16 | ThunderLord | not with accuracy i cant |
00:02.21 | ThunderLord | but i can estimate |
00:02.26 | A1win | ._x |
00:02.34 | A1win | no you can't |
00:02.38 | ThunderLord | thats the idea |
00:02.40 | ThunderLord | Y not? |
00:03.34 | ThunderLord | its basically just another way to calculate your skill relative to other players, only im throwing a percentage on it instead |
00:03.36 | A1win | errm I guess you can if you base it only on the data that the players share with each o ther |
00:04.11 | ThunderLord | it will not be accurate... again it would just be guessing |
00:04.15 | A1win | so yeah, first of all you need to keep track of a score value |
00:04.50 | A1win | like start at 0 points, add when you win, subtract when you lose (modify based on the current score value of others) |
00:05.14 | A1win | and then you also need to keep track of the number of players at each score value range |
00:05.41 | ThunderLord | ehhhh, thats where u get O(n) |
00:06.03 | A1win | like "players with -10 score, players with -9 score, ... , players with 0 score, players with 1 score, ... players with 10 score" (where -10 and 10 are the minimum and maximum scores you can get during let's say last 30 games you play) |
00:06.30 | A1win | like if you win every time against a player with as high score as possible, that's the absolute maximum, and if you lose every time against a player with minimum score, that's the absolute minimum |
00:06.51 | A1win | you can keep an approximated list of the number of players |
00:07.09 | ThunderLord | how can i keep an approximated list? |
00:07.11 | A1win | like you can combine the number of players with 1 score and number of players with 0.9 or 1.15 score etc. |
00:07.35 | A1win | so you have an array of numbers of players, like let's say 20 indexes |
00:07.49 | A1win | 0 is players with minimum possible score, and 19 is players with maximum possible score |
00:07.54 | A1win | err that doesn't work |
00:07.55 | A1win | :P |
00:08.00 | A1win | you can't keep the lists up to date |
00:08.09 | A1win | since you can't know who moves on the list |
00:08.31 | A1win | I have a feeling it's not possible at all |
00:09.09 | A1win | all you can do is keep track of an absolute value as a score for each player on their own |
00:09.25 | ThunderLord | but i can do assumptions, i could keep a list of the players i lose and win against, and their rating at the moment when i won/lost against them. and calculate a score based on that |
00:09.27 | A1win | you can't store the bnet ID of every player who ever plays your map into the bank file |
00:09.36 | ThunderLord | yeah |
00:09.40 | ThunderLord | that would be too much |
00:10.10 | A1win | ah, I see |
00:10.52 | ThunderLord | again, totally not accurate, but its a guess. |
00:10.54 | A1win | so you'd just keep a list of let's say 100 players and their score |
00:11.09 | A1win | and drop the oldest one when you add a new one |
00:11.13 | ThunderLord | well, the last like 100 players that i have won/;pst against |
00:11.14 | A1win | and update if someone's already on the list |
00:11.20 | A1win | yeah |
00:11.23 | ThunderLord | won/lost" |
00:11.24 | ThunderLord | yeah |
00:11.43 | ThunderLord | i wouldent even have to worry about if i see the same player more than once |
00:12.05 | sarah | hey how do u make something drop something? |
00:12.51 | ThunderLord | i could just purely store the ratings of the players that i won/lost against each game, do some algorithm to get my approximate score from that. and each time i add a new game i will drop the oldest one... After i have reached say like 30 games or somthing |
00:13.04 | ThunderLord | right click the item in ur inventory |
00:13.08 | ThunderLord | left click the ground |
00:13.32 | sarah | i mean have a enmy drop something |
00:13.40 | A1win | ThunderLord, what do you mean approximate score |
00:14.17 | ThunderLord | well i can guess my true score based on the scores of the players i have won/lost against in the past 30 games |
00:14.22 | A1win | you don't need to approximate the score, you can just modify that after each game... the only thing you're approximating is the data base of numbers since it doesn't include every player |
00:14.39 | Kueken | sarah: easiest way would be a trigger, event: unit dies, action: create unit (the item) |
00:14.40 | A1win | just update the score every time a game ends |
00:14.41 | ThunderLord | i suppose thats true |
00:14.45 | ThunderLord | yeah |
00:14.58 | A1win | and use that database as a reference to show how high you are on the "ladder" |
00:14.59 | sarah | MoonEater |
00:15.04 | Kueken | there is also a "loot" data type, which is probably related, but I haven't tried it yet |
00:15.05 | ThunderLord | but from these scores i will be converting that to a % of players you are better than |
00:15.08 | ThunderLord | yeah exactly |
00:15.11 | ThunderLord | and in that sense |
00:15.21 | A1win | but that's just a display value |
00:15.25 | ThunderLord | it is not a true number, but just an estimation |
00:15.27 | ThunderLord | yeah |
00:15.33 | A1win | it's not an estimation :P |
00:15.37 | A1win | it's a calculation |
00:15.46 | A1win | computation, whatever |
00:16.02 | ThunderLord | well the display value is designed to "estimate" your skill relative to all the other players |
00:16.03 | A1win | value of a function |
00:16.08 | *** join/#sc2mapster RipperRoo (~RipperRoo@pC19F7049.dip0.t-ipconnect.de) |
00:16.17 | A1win | why are you talking about estimating |
00:16.20 | ThunderLord | true |
00:17.07 | A1win | well I guess in a sense it estimates your *skill*, but as a rank value it isn't an estimation |
00:17.25 | ThunderLord | well the point of this whole thing is to guess the players score relative to all other players because we cannot decide with complete certanty without keeping a record of all players |
00:17.43 | ThunderLord | so in that sense, its an estimation |
00:17.57 | A1win | yeah but that's just a limit of the database, there isn't any actual estimation happening in the calculations |
00:18.12 | ThunderLord | i suppose thats true... |
00:18.17 | ThunderLord | come to think of it |
00:18.26 | ThunderLord | when would estimation actually be used in calculations? |
00:19.04 | ThunderLord | would that just be like... ignoreing smaller details for efficiency? |
00:19.09 | A1win | when you can't get the precise value of something in reasonable amount of time |
00:19.13 | sarah | shit i just saved over my map |
00:19.13 | A1win | yeah |
00:19.41 | sarah | i acidently dident load then i saved |
00:19.53 | A1win | take backups D: |
00:20.19 | sarah | now i have to remake all that |
00:20.33 | ThunderLord | its always easier the second time :D |
00:20.42 | Kueken | you can setup your editor to make backups automatically |
00:20.44 | ThunderLord | but still sucks that u have to D: |
00:22.01 | A1win | why is it so hot in here x___x |
00:22.10 | A1win | +23 C in shadow at 3 in the morning |
00:22.22 | A1win | or should I say shade |
00:22.30 | A1win | yeah |
00:22.32 | A1win | anyway |
00:26.25 | sarah | this is realy gona suck |
00:26.48 | sarah | maby i wont make a rpg |
00:27.16 | A1win | rpgs are usually large projects |
00:27.31 | sarah | and i saved over mine |
00:27.45 | sarah | and i dont wana redo all i did |
00:27.56 | sarah | that was alot of work |
00:28.54 | A1win | yeah, better get to the habit of taking backups as soon as possible D: |
00:29.21 | sarah | making another inventory making up to level 100 agin |
00:30.36 | sarah | funny thing i did it in less than 2 days i did it in 1 and 1/2 days |
00:31.10 | sarah | MOONEATER |
00:33.50 | sarah | gona go talk to moon eater on sc2 |
00:34.24 | MoonEater_mobile | Huhu |
00:34.44 | sarah | i saved over my map |
00:35.19 | MoonEater_mobile | Do what I do and use drop box to store your maps |
00:35.42 | MoonEater_mobile | The editor also has auto backups |
00:35.56 | sarah | realy? |
00:36.26 | MoonEater_mobile | Yep |
00:36.47 | sarah | how do u get to it? |
00:37.04 | MoonEater_mobile | To which? |
00:37.22 | sarah | to the auto backup |
00:37.54 | MoonEater_mobile | File>>preferances |
00:39.08 | *** join/#sc2mapster AndChat|453921 (~AndChat45@108-88-97-1.lightspeed.mtryca.sbcglobal.net) |
00:39.27 | *** join/#sc2mapster MoonEater (6c586101@gateway/web/freenode/ip.108.88.97.1) |
00:39.36 | MoonEater | i seem to be having conneciton issues today |
00:40.40 | sarah | so how do u get to the backup? |
00:41.03 | MoonEater | file>>perferances |
00:41.38 | sarah | how do u open the backup? |
00:42.05 | MoonEater | no that turns on backups |
00:42.41 | sarah | well then its settled im not making a rpg |
00:42.52 | MoonEater | well now u can make it better |
00:42.53 | MoonEater | and! |
00:43.06 | MoonEater | it will take u atleast 2x faster to remake what u lost |
00:43.08 | MoonEater | since ur new |
00:43.13 | MoonEater | probably 100x |
00:43.31 | sarah | say that to waiting for level |
00:43.35 | sarah | s |
00:43.58 | sarah | i have to wait for 100 levels to pile up about 1 level per 2 secons |
00:45.41 | MoonEater | so 3 min |
00:46.00 | sarah | and 20 secons |
00:46.02 | MoonEater | for a first map an rpg is probably the hardest |
00:46.40 | sarah | ui know ow to make things drop things without triggers |
00:46.56 | sarah | i* |
00:47.06 | sarah | how* |
00:48.04 | sarah | im gona make my map better this time i make it |
00:48.17 | sarah | if i decide to make the same thing |
00:48.53 | sarah | now to make my heros revive |
00:49.32 | MoonEater | i would think it would be an effect or ability |
00:49.38 | MoonEater | u would have to ask the others |
00:49.46 | MoonEater | im not very strong with data :( |
00:50.05 | sarah | im using triggers to make my hero revive |
00:50.54 | MoonEater | i was talking about item drops |
00:51.00 | MoonEater | ok |
00:51.02 | MoonEater | so |
00:51.04 | MoonEater | u go |
00:51.16 | MoonEater | event unit dies |
00:51.16 | sarah | its in loot thing |
00:51.25 | MoonEater | action revive triggering unit |
00:51.35 | sarah | ik how to make the hero revive using triggers |
00:51.46 | MoonEater | oh? |
00:53.55 | sarah | wait forgot how to set a spot where they revive |
00:56.11 | MoonEater | position of triggering unit |
00:58.27 | sarah | thx |
01:00.12 | sarah | hhow do u make it so u can select a unit> |
01:02.49 | sarah | like lets u put down a unit |
01:02.58 | sarah | then u wana select a unit |
01:14.59 | MoonEater | ?? |
01:15.54 | sarah | i cant select the zealots because it wants me to place a forge instid |
01:16.03 | sarah | because i was placing forges |
01:16.22 | sarah | how do i get rid of the placing forges thing to select the zealots |
01:16.29 | Ahli | http://snag.gy/ in case you want to show us a screenshot of the problem |
01:16.47 | Ahli | space button? |
01:16.52 | sarah | its in editor |
01:17.01 | sarah | im pretty sure u cant screen shot |
01:17.11 | sarah | thx |
01:17.18 | Repo | New map: Dungeon Explorer - http://www.sc2mapster.com/maps/dungeon-explorer/ |
01:19.32 | *** join/#sc2mapster nooblark (nooblark@c-68-83-58-11.hsd1.nj.comcast.net) |
01:20.25 | Tarqansasz | Ahli, mein liebling |
01:20.48 | Ahli | hi lajla |
01:21.27 | Tarqansasz | Ahli, ich will deinen Arsch |
01:28.15 | sarah | well i have revival for enmys and a revival for my heros |
01:28.37 | sarah | lets hope my heros dont revive twice |
01:30.24 | sarah | i dont even have healing area complete |
01:34.00 | sarah | MOONEATER |
01:34.06 | MoonEater | yes? |
01:34.14 | sarah | will my heris revive twice? |
01:34.47 | MoonEater | infinatly |
01:35.07 | sarah | i mean if i have 2 revival systems |
01:35.33 | sarah | i have revival systems for heros alone |
01:36.02 | MoonEater | yes u can |
01:36.22 | sarah | then i have one thats sposed to be for hostile |
01:36.50 | sarah | but can i set it so its for hostile units only? |
01:37.35 | MoonEater | yes |
01:37.44 | sarah | how? |
01:38.12 | MoonEater | the most computer efficent way is to add a "if then else" action |
01:39.31 | sarah | what does it do? |
01:40.41 | MoonEater | asks a question to the system and processes it |
01:40.47 | MoonEater | also known as a algorithm |
01:41.14 | sarah | so it makes my heros not be revived by that system? |
01:41.39 | MoonEater | nono |
01:41.43 | MoonEater | its kinda like an event |
01:41.47 | MoonEater | uh |
01:41.49 | MoonEater | i say |
01:41.55 | sarah | what does it do? |
01:42.01 | MoonEater | IF triggering unit is owned by player 15 |
01:42.04 | MoonEater | then do this |
01:42.09 | MoonEater | then under that |
01:42.10 | MoonEater | u do |
01:42.20 | MoonEater | if triggering player is owned by not 15 |
01:42.21 | MoonEater | do this |
01:43.11 | sarah | so how do i make it work |
01:44.38 | AndChat|453921 | Add a if action the. Move or existing to a then |
01:45.22 | *** join/#sc2mapster Repo (~repo@76.164.170.2) |
01:46.25 | sarah | still confused |
01:47.24 | AndChat|453921 | OK listen up |
01:47.25 | sarah | is there a simpler way? |
01:48.19 | sarah | <PROTECTED> |
01:48.38 | AndChat|453921 | IF owner of triggering unit == 15 THEN revive |
01:50.06 | sarah | bur what i dont understand is how to put that |
01:50.22 | sarah | but* |
01:52.20 | sarah | this is my 2nd day using editor |
01:52.31 | *** join/#sc2mapster Dustin (~Dustin@ip68-102-170-78.ks.ok.cox.net) |
01:55.27 | sarah | MoonEater: |
01:55.52 | sarah | what i dont understand is how to put it in |
02:16.44 | MoonEater | <PROTECTED> |
02:16.47 | MoonEater | my father called |
02:16.51 | MoonEater | hes demanding |
02:16.53 | MoonEater | anyways |
02:17.10 | MoonEater | what u need |
02:17.37 | sarah | i dont understand how to put it in |
02:17.38 | *** join/#sc2mapster MoonEater_mobile (~AndChat45@108-88-97-1.lightspeed.mtryca.sbcglobal.net) |
02:19.29 | *** join/#sc2mapster Tolkfan (~Thunderbi@host-89-230-245-44.nowydwor.mm.pl) |
02:20.36 | sarah | i dont understand how to put it in |
02:21.25 | MoonEater | in actions |
02:21.33 | MoonEater | u have an if section and a then section |
02:21.35 | MoonEater | and a else section |
02:21.38 | sarah | k |
02:22.07 | MoonEater | u add the action IF then Else |
02:22.10 | MoonEater | then fill it out |
02:22.35 | sarah | what do i fill it out with? |
02:22.58 | MoonEater | triggers |
02:23.16 | sarah | ix know but what triggers |
02:23.32 | sarah | i* |
02:23.56 | MoonEater | ?? |
02:23.59 | MoonEater | im confused? |
02:24.03 | MoonEater | open triggers module |
02:24.10 | MoonEater | then make a trigger |
02:24.14 | MoonEater | event |
02:24.16 | MoonEater | unti dies |
02:24.18 | MoonEater | actions |
02:24.22 | MoonEater | if then else |
02:24.36 | MoonEater | for the if section add a "action" |
02:24.44 | MoonEater | triggering player == 15 |
02:24.59 | MoonEater | for the then section put what u want to happen to player's 15 deaths |
02:25.30 | sarah | how do u do the triggering player thing tho? |
02:27.05 | MoonEater | u add another action |
02:27.17 | MoonEater | select if and hit ctrl + w |
02:28.06 | sarah | i wana know what action u add |
02:28.20 | MoonEater | comparison |
02:28.28 | MoonEater | then |
02:28.37 | MoonEater | on the left side of it there is a clickable ( |
02:28.47 | MoonEater | click it and change it to triggering player |
02:29.09 | MoonEater | if u highlight the trigger |
02:29.16 | MoonEater | and hit ctrl+ shift+ c |
02:29.26 | MoonEater | then click here in the chat and hit vtrl + v |
02:29.29 | MoonEater | u can show me |
02:29.31 | MoonEater | what ur doing |
02:30.00 | sarah | im still trying to figure out what action to put in if |
02:31.04 | MoonEater | do u have skype or team viewer |
02:31.15 | sarah | no |
02:31.22 | MoonEater | well i need to see what ur doing |
02:31.28 | MoonEater | highlight ur trigger |
02:31.30 | MoonEater | all the comes |
02:31.32 | MoonEater | lines* |
02:31.40 | MoonEater | and hit ctrl +shift +c |
02:31.46 | MoonEater | and then hit ctrl + v here |
02:31.48 | MoonEater | let me look |
02:34.07 | sarah | <PROTECTED> |
02:35.24 | MoonEater | pl |
02:35.28 | MoonEater | ok |
02:35.42 | MoonEater | select if |
02:35.50 | MoonEater | then hit ctrl +w |
02:36.20 | MoonEater | brb |
02:37.03 | sarah | event player? |
02:38.44 | MoonEater | here 1 sec |
02:39.09 | sarah | got it |
02:39.13 | sarah | i think |
02:39.48 | sarah | <PROTECTED> |
02:40.07 | sarah | that after if right |
02:40.10 | MoonEater | http://www.sc2mapster.com/paste/8018/ |
02:40.14 | MoonEater | look at that |
02:40.24 | MoonEater | for then, just act like regular actions |
02:40.43 | MoonEater | i got to go do some electrical for dad ill be on bobile |
02:42.11 | *** join/#sc2mapster AndChat|453921 (~AndChat45@108-88-97-1.lightspeed.mtryca.sbcglobal.net) |
02:42.22 | sarah | theres no triggering unit thing |
02:42.28 | sarah | only a event unit |
02:48.26 | *** join/#sc2mapster MoonEater_mobile (~AndChat45@108-88-97-1.lightspeed.mtryca.sbcglobal.net) |
02:50.21 | *** join/#sc2mapster MoonEater_mobile (~AndChat45@108-88-97-1.lightspeed.mtryca.sbcglobal.net) |
02:50.51 | *** join/#sc2mapster AndChat|453921 (~AndChat45@108-88-97-1.lightspeed.mtryca.sbcglobal.net) |
02:55.33 | sarah | lol |
02:56.29 | sarah | my game has a item that gives me zerglings weapon which i renamed bite |
02:57.03 | sarah | anyway i couldent figure out why zerglings were 1 hitting me |
02:59.51 | *** join/#sc2mapster MoonEater_mobile (~AndChat45@108-88-97-1.lightspeed.mtryca.sbcglobal.net) |
03:04.19 | MoonEater | ?? |
03:28.30 | sarah | time to wait for levels |
03:33.33 | MoonEater | ?? |
03:34.09 | sarah | time to test my game |
03:37.39 | sarah | well my marines are changelings i should fix that |
03:40.28 | sarah | i dident get the ifthenelse thing to work |
04:28.26 | sarah | MOOBEATER |
04:28.32 | sarah | MOONEATER |
04:28.39 | MoonEater | what? |
04:28.44 | sarah | MoonEater |
04:29.01 | sarah | hey i cant figure out the ifthenelse |
04:29.10 | sarah | i cant find the ownerof |
04:29.14 | MoonEater | did u look at my example? |
04:29.16 | sarah | or triggeredunit |
04:29.18 | sarah | part |
04:29.21 | MoonEater | http://www.sc2mapster.com/paste/8018/ |
04:29.29 | MoonEater | ?? |
04:29.32 | sarah | yes |
04:30.01 | sarah | icant find the (ownerof |
04:30.03 | sarah | part |
04:30.21 | MoonEater | click if and hit ctrl +w |
04:31.13 | sarah | <PROTECTED> |
04:31.35 | sarah | ok event player its event player |
04:31.45 | *** join/#sc2mapster RazielZ (~Raziel@78.97.96.21) |
04:31.48 | sarah | look at ur page |
04:32.07 | MoonEater | ?? |
04:33.14 | sarah | <PROTECTED> |
04:33.18 | sarah | is what it is |
04:33.30 | sarah | but look at ur page |
04:33.54 | MoonEater | hit ctrl +D |
04:34.00 | MoonEater | does that make it look right? |
04:42.26 | sarah | how do u unpublish? |
04:42.47 | ThunderLord | you publish again but select private when you have the opportunity |
04:43.03 | ThunderLord | or i think u can do managed published in the editor somewhere too and actually remove it |
04:43.29 | ThunderLord | Anyone here know anything about statistics? |
04:44.56 | sarah | right under publish lol |
04:45.10 | sarah | just tried to figure it out |
04:47.15 | sarah | now i have a public map yay |
04:50.35 | sarah | its being idotic and wont let me find it in the arcade |
04:51.10 | Dogmai | I am so sore today |
04:59.00 | sarah | MOONEATER |
05:00.43 | sarah | why isnt my map in arcade |
05:03.36 | sarah | hey does anyone know why my map isnt in the arcade its published its public |
05:04.39 | sarah | MoonEater |
05:05.46 | sarah | mooneater |
05:10.01 | *** join/#sc2mapster sarah___ (61796a47@gateway/web/freenode/ip.97.121.106.71) |
05:10.17 | sarah___ | sarah |
05:10.42 | sarah___ | SARAH |
05:11.02 | sarah | why no beeping |
05:14.14 | *** join/#sc2mapster JademusSreg (~jademus.s@c-76-123-235-103.hsd1.tn.comcast.net) |
05:30.38 | *** join/#sc2mapster G0A (~hookah604@91.83.12.2.pool.invitel.hu) |
05:34.44 | *** join/#sc2mapster unclesatan (187197d6@gateway/web/freenode/ip.24.113.151.214) |
05:36.20 | *** join/#sc2mapster shintah (bebble@h-150-141.a336.priv.bahnhof.se) |
05:45.54 | ThunderLord | I need statistics help D: |
05:45.59 | ThunderLord | anyone know any stats? |
05:46.46 | unclesatan | What do you mean? |
05:46.50 | unclesatan | Statistic of? |
05:47.02 | ThunderLord | probability stuff |
05:47.03 | ThunderLord | like |
05:47.12 | ThunderLord | for a modified ELO system |
05:47.41 | unclesatan | So basically you want to calculate games and add a random value based on the calculated figures? |
05:47.48 | unclesatan | To their "ELO" |
05:47.50 | ThunderLord | ehhhh |
05:47.58 | ThunderLord | okay here is my issue |
05:48.27 | ThunderLord | Every player has a "Skill Rating" this is a number between 0 and 100 and it is an estimate of what % of players they are better than |
05:48.28 | unclesatan | Or what do you mean? There isn't very much probability in ELO, it's all based on whether you basically win or lose, not very many conditions for it |
05:48.38 | unclesatan | Oh I see what you mean |
05:48.39 | unclesatan | Matchmaking |
05:48.49 | ThunderLord | the function P(C, X) gives the probability that a player with skill C will win vs a player of skill X |
05:49.06 | unclesatan | Ah |
05:49.09 | unclesatan | Alright |
05:49.13 | ThunderLord | if i have a list of the skill ratings of the players i have won against, and of the players i have lost against |
05:49.45 | ThunderLord | useing that, how can i find the most likely value of my current skill rating? |
05:50.09 | unclesatan | Probably by using a separate function that calculates your list |
05:50.18 | unclesatan | If your list is in an Array |
05:50.42 | ThunderLord | its 2 lists of skill ratings i have won vs and players i have lost vs |
05:50.46 | unclesatan | Pick a couple values for the function to calculate, like CS or Champ Kills |
05:50.59 | unclesatan | then use a function to calculate everyone on the lists's CS/ Champ Kills |
05:51.19 | unclesatan | Then make your own equation using the player's current skill level maybe? |
05:51.27 | unclesatan | combined with all the data from the 2 lists |
05:51.37 | unclesatan | It sounds like it could be done in one func |
05:51.47 | ThunderLord | ehhhh |
05:51.59 | ThunderLord | im reverse engineering basically a bunch of boolians in to a probability |
05:52.18 | unclesatan | So the list only calculates whether you've won or lost? |
05:52.59 | unclesatan | The only way you'd be able to get a proper system like you're talking about is if you had each person who you won and lost against's statistics too, or am I missing something? |
05:53.19 | ThunderLord | each person has a single number |
05:53.19 | unclesatan | Turns out I might need more info to help you Q-Q |
05:53.31 | unclesatan | Which is their skill level yes? |
05:53.37 | ThunderLord | yeah |
05:53.38 | unclesatan | C |
05:53.46 | unclesatan | oh i guess not C |
05:53.49 | unclesatan | but yes |
05:53.49 | ThunderLord | 'and it will only track their ratings for the past 30 games |
05:53.51 | unclesatan | skill level |
05:53.57 | unclesatan | Alright |
05:54.16 | unclesatan | And what you want is a way to determine the % chance that you will win against a person on your list |
05:54.26 | unclesatan | And show it to the playing player yes? |
05:54.37 | ThunderLord | no |
05:54.45 | ThunderLord | 1 sec |
05:54.53 | ThunderLord | lemme think of the best way to explain |
05:55.03 | unclesatan | Sorry let me reread what you told me thus far |
05:55.04 | unclesatan | XD |
05:56.02 | unclesatan | Ok |
05:56.36 | unclesatan | Skill Rating is the estimate |
05:56.48 | ThunderLord | yeahb |
05:57.09 | unclesatan | and the list contains |
05:57.17 | unclesatan | A player name + skill rating |
05:57.27 | ThunderLord | only skill ratings |
05:57.37 | ThunderLord | i could include name, but there is no point |
05:57.39 | unclesatan | Alright |
05:58.04 | ThunderLord | im only concerned with their rating at the game where i beat them |
05:58.34 | unclesatan | Alright, so the list is something the players can't see right? |
05:58.43 | ThunderLord | right |
05:58.52 | unclesatan | Ok that part I think gave me the wrong mental image |
05:58.57 | unclesatan | kk now |
05:59.03 | unclesatan | The most likely value of your current skill rating |
05:59.06 | ThunderLord | the only thing players will see is the skill rating |
05:59.10 | ThunderLord | yeah |
05:59.20 | unclesatan | How do you get the skill rating to begin with? |
05:59.23 | unclesatan | I suppose I should ask that first |
05:59.31 | unclesatan | Like, you win a game and? |
05:59.37 | ThunderLord | first match |
05:59.48 | ThunderLord | im putting in artificial numbers that will place players at the 50% rating |
05:59.50 | ThunderLord | right in the mid |
05:59.59 | unclesatan | Alright |
06:00.02 | ThunderLord | so like 1 win and 1 loss vs a 50% skill rating players |
06:00.06 | ThunderLord | so they will start at 50% |
06:00.26 | unclesatan | So from there they will go up or down based on performance or just losing? |
06:00.35 | ThunderLord | performance |
06:00.37 | ThunderLord | like |
06:00.41 | ThunderLord | i have a formula |
06:00.43 | unclesatan | Ok and you calculate that |
06:00.58 | ThunderLord | P(X, C) the chance that a player will skill C wins vs a player of skill X |
06:01.07 | unclesatan | Alright |
06:01.09 | ThunderLord | i want to find the most probable C for me |
06:01.26 | ThunderLord | based on a list of X values of players i have lost against, and that i have won against |
06:01.39 | unclesatan | Ok and you are player X then? |
06:01.45 | unclesatan | Hypothetically |
06:01.45 | ThunderLord | no i am C |
06:01.51 | unclesatan | Alright so your skill |
06:01.55 | unclesatan | KK |
06:02.03 | ThunderLord | is some C that i want to find the most likely value for |
06:02.29 | unclesatan | So performance is the calculation that determines how many points you raise, while C is your skill level X is your list of values |
06:02.35 | ThunderLord | like my list of X wins could be like, i beat a player of rating 67, 73, and 90 and lost against players of skill 20 and 55 |
06:02.41 | JademusSreg | Explaining TrueSkill? |
06:02.57 | ThunderLord | ehhh |
06:02.58 | unclesatan | K so |
06:02.59 | ThunderLord | i have a formula |
06:03.08 | ThunderLord | P(X, C) only compares 2 players |
06:03.13 | unclesatan | A good way to get your own skill level which starts at 50% right? |
06:03.16 | ThunderLord | the chance for player with skill C will beat skill X |
06:03.17 | unclesatan | Oh ok |
06:03.31 | unclesatan | So C, on the first game, is 50 right? |
06:03.42 | ThunderLord | yeah |
06:03.45 | ThunderLord | but like |
06:04.01 | ThunderLord | it is recalculated based on the list of skill ratings of the players i have won/llost against |
06:04.04 | ThunderLord | like |
06:04.09 | unclesatan | Through P |
06:04.09 | ThunderLord | if my skill is 50 |
06:04.09 | JademusSreg | http://dl.dropbox.com/u/1083108/Moserware/Skill/The%20Math%20Behind%20TrueSkill.pdf |
06:04.10 | unclesatan | Right? |
06:04.18 | ThunderLord | right |
06:04.30 | ThunderLord | well i dont know my skill |
06:04.30 | unclesatan | kk |
06:04.37 | ThunderLord | but if i beat a player of skill 90 |
06:04.40 | unclesatan | It's only determined at the end of the game |
06:04.59 | ThunderLord | then based on the P formula its likely that my skill will be at about 90 |
06:05.01 | ThunderLord | yeah |
06:05.04 | ThunderLord | i have the formula |
06:05.11 | ThunderLord | i just need to translate it in to a rating |
06:05.15 | unclesatan | Alright, and so your problem now is that it gives you too many points or puts you at too high of a skill level? |
06:05.19 | ThunderLord | based on who i win and lose vs |
06:05.20 | unclesatan | Ohhh |
06:05.52 | unclesatan | So P is calculated, then used in conjunction with something that you are needing now to get the player's skill level |
06:06.24 | ThunderLord | nononono |
06:06.28 | ThunderLord | I have no idea what my C is |
06:06.33 | unclesatan | Ahhhhh |
06:06.33 | ThunderLord | no freaking idea |
06:06.35 | unclesatan | You need to get it |
06:06.38 | unclesatan | Just C |
06:06.42 | ThunderLord | but i have a list of Xs that i have won vs |
06:06.46 | ThunderLord | and Xs that i have lost vs |
06:07.09 | *** join/#sc2mapster G0A (~hookah604@91-82-188-88.pool.invitel.hu) |
06:07.16 | unclesatan | Alright |
06:07.17 | ThunderLord | and based on those i get the most likely value of my C that fits in to the P formula with all those Xs |
06:07.39 | unclesatan | P is calculated one time for every player on your list |
06:07.44 | unclesatan | But you need C first |
06:07.54 | ThunderLord | no |
06:08.07 | unclesatan | P is calculated to find the win rate of you and a person of your choose |
06:08.10 | unclesatan | ? |
06:08.11 | ThunderLord | i cant plug in to the P formula exactly |
06:08.17 | ThunderLord | directly"] |
06:08.19 | unclesatan | Ah |
06:08.23 | ThunderLord | i need to reverse that formula somehow |
06:08.37 | ThunderLord | to solve for a likely C value |
06:08.43 | unclesatan | So |
06:08.51 | unclesatan | I think a good way to do that would be to replace C with P |
06:09.01 | unclesatan | C is your skill level based on your performance compared to other player's skill levels |
06:09.15 | ThunderLord | yeah i need to find C |
06:09.27 | unclesatan | Alright |
06:09.35 | unclesatan | So at the end of the game I think you could calculate performance |
06:09.38 | ThunderLord | or a likely C |
06:09.52 | ThunderLord | at the end of every game i will update my C |
06:10.36 | unclesatan | Ok so at the end of the game you might want C(P, X) instead perhaps? |
06:10.52 | ThunderLord | it will be |
06:10.58 | ThunderLord | C(X1, X2) |
06:11.06 | ThunderLord | where X1 is a list of values i have won against |
06:11.15 | ThunderLord | and X2 is the list of values i have lost against |
06:11.49 | unclesatan | Alright. And you want to find a value based on the X1/X2 values, but don't know the best way to go about it? |
06:11.58 | ThunderLord | EXACTLY! |
06:12.04 | unclesatan | Awesome! |
06:12.05 | *** join/#sc2mapster duckies (50e88a65@gateway/web/freenode/ip.80.232.138.101) |
06:12.06 | ThunderLord | its a most likely C value |
06:12.17 | unclesatan | So C() is a function yes |
06:12.27 | unclesatan | like C(x1, x1) {} |
06:12.44 | ThunderLord | yeah |
06:12.53 | unclesatan | And you want a calculation inside the function |
06:12.54 | ThunderLord | just like, idk how to go about it |
06:12.59 | ThunderLord | yeah |
06:13.11 | unclesatan | So X1, X2 can't be arrays because arrays can't be passed to functions sadly |
06:13.26 | unclesatan | that would be an easy way to do it |
06:13.27 | ThunderLord | I could just make it a trigger that |
06:13.31 | unclesatan | to do an array loop |
06:13.33 | ThunderLord | will look at some globals |
06:13.36 | ThunderLord | yeah |
06:13.39 | ThunderLord | thats not a big deal |
06:14.25 | unclesatan | So my suggestion would be to make it so player that you win/lose against with significant skill rating differences will affect your skill rating less |
06:14.36 | ThunderLord | yeah |
06:14.42 | ThunderLord | thats already taken in to account |
06:14.45 | ThunderLord | in the P(X, C) |
06:15.01 | unclesatan | Alright |
06:15.24 | unclesatan | So you basically need an equation for looking at X1/X2 |
06:15.33 | unclesatan | What type of variable are they? |
06:15.36 | unclesatan | Int? |
06:15.50 | ThunderLord | yeah that is derived from P(X, C) |
06:15.53 | ThunderLord | yeah int |
06:15.55 | ThunderLord | between 0 and 100 |
06:15.57 | unclesatan | Haha I just realized you can use Fixed numbers for a pseudo array |
06:16.15 | unclesatan | 1.1, 1.2,1.3 etc. |
06:16.23 | unclesatan | xD |
06:16.25 | unclesatan | Sorry |
06:16.27 | unclesatan | Alright |
06:16.59 | unclesatan | Lemme think |
06:17.05 | unclesatan | Hmmm |
06:17.30 | unclesatan | So X1 contains multiple different players? |
06:17.35 | unclesatan | or just values |
06:17.43 | unclesatan | or will be changed in a loop that you already have |
06:17.45 | unclesatan | ? |
06:18.16 | unclesatan | Trying to understand the structure of what you already have going |
06:19.32 | *** join/#sc2mapster RazielZ (~Raziel@router.grid.pub.ro) |
06:20.11 | unclesatan | C(x1, x2){if((x1 < (100 - P))) {}} |
06:20.16 | unclesatan | would that, in theory, work? |
06:20.43 | unclesatan | To use the P value |
06:20.46 | unclesatan | in a calculation |
06:20.56 | ThunderLord | ehhh |
06:20.58 | unclesatan | You may have to make P a global |
06:21.01 | ThunderLord | it would be for every X value |
06:21.10 | ThunderLord | cuz X is a list of values |
06:21.17 | ThunderLord | lists of wins and lists of loses |
06:21.31 | unclesatan | Alright so x1 could be like 25, 45, 90 and 60 |
06:21.39 | ThunderLord | yeah |
06:22.04 | unclesatan | Man this is a tough one for sure |
06:22.22 | unclesatan | I would |
06:22.26 | unclesatan | Get the value of x1 |
06:22.29 | unclesatan | per-say |
06:22.33 | unclesatan | and add 1 point per 10 value |
06:22.52 | unclesatan | then eventually you'd have this big number, which would be perhaps performance |
06:23.21 | ThunderLord | writing a python script atm to RNG this thing then maybe i can reverse engineer that in to a good formula |
06:23.32 | unclesatan | Performance is the combination of all players you've lost and won against, making your end skill rating |
06:23.40 | unclesatan | ? |
06:23.49 | ThunderLord | Performance=Skill |
06:23.50 | unclesatan | Or is C the end skill rating you'll see |
06:23.52 | ThunderLord | only 1 rating |
06:23.56 | ThunderLord | C is the only rating u see |
06:23.58 | ThunderLord | anyone sees |
06:24.00 | unclesatan | Ok |
06:24.00 | ThunderLord | anyone uses |
06:24.04 | ThunderLord | C is my Skill |
06:24.09 | ThunderLord | X is the other people's skill |
06:33.22 | unclesatan | Well the way I would do that would be to make 2 threshold numbers than when breached by adding together enemies skill ratings, they raise or lower C by one point. I'm not sure how you want to do it though, this sounds like a pretty complex system you're workin on |
06:34.37 | unclesatan | I might not even entirely understand it thoroughly though, which would be probably my own fault. |
06:44.54 | *** join/#sc2mapster twodie (4e3c1a28@gateway/web/freenode/ip.78.60.26.40) |
07:04.57 | *** join/#sc2mapster duckies (50e88a7e@gateway/web/freenode/ip.80.232.138.126) |
07:30.12 | *** join/#sc2mapster Repo (~repo@76.164.170.2) |
07:32.22 | *** join/#sc2mapster Saeris (~Saeris@ip72-211-251-42.oc.oc.cox.net) |
07:35.11 | *** join/#sc2mapster tigger0jk (~tigger0jk@c-71-202-39-119.hsd1.ca.comcast.net) |
07:37.02 | *** join/#sc2mapster Grum (~grum@irc.grum.nl) |
07:37.02 | *** join/#sc2mapster sShintah (~oer894n@c83-248-105-252.bredband.comhem.se) |
07:37.02 | *** join/#sc2mapster RazielZ (~Raziel@router.grid.pub.ro) |
07:37.02 | *** join/#sc2mapster MoonEater_mobile (~AndChat45@108-88-97-1.lightspeed.mtryca.sbcglobal.net) |
07:37.02 | *** join/#sc2mapster Thels (Thels@ip3e83cdbc.speed.planet.nl) |
07:37.02 | *** join/#sc2mapster ThunderLord (~ThunderLo@pool-173-57-84-51.dllstx.fios.verizon.net) |
07:37.02 | *** join/#sc2mapster Tarqansasz (~Lajla@unaffiliated/nevzets) |
07:37.02 | *** join/#sc2mapster Kaelten (~Kaelten@WoWUIDev/WoWAce/WoWIFA/CurseStaff/kaelten) |
07:37.02 | *** mode/#sc2mapster [+o Kaelten] by barjavel.freenode.net |
07:37.39 | JademusSreg | Zooop. |
07:37.57 | G0A | morning |
07:38.58 | ThunderLord | :D |
07:40.01 | *** mode/#sc2mapster [+v Grum] by ChanServ |
08:03.03 | *** part/#sc2mapster Saeris (~Saeris@ip72-211-251-42.oc.oc.cox.net) |
08:07.40 | *** part/#sc2mapster G0A (~hookah604@91-82-188-88.pool.invitel.hu) |
08:08.21 | *** join/#sc2mapster G0A (~hookah604@91-82-188-88.pool.invitel.hu) |
08:12.14 | JademusSreg | Anyone call for a Wizzard? |
08:13.29 | JademusSreg | must be a wizzard, as his majestic fedora spells this out clearly. |
08:36.32 | *** join/#sc2mapster Blub\w (~wry@unaffiliated/blubw/x-6625061) |
08:42.57 | *** join/#sc2mapster Tolkfan (~Thunderbi@host-89-230-245-44.nowydwor.mm.pl) |
08:51.23 | *** join/#sc2mapster RazielXYZ (~Raziel@router.grid.pub.ro) |
08:52.53 | Dogmai | JademusSreg: |
08:52.57 | Dogmai | you are too good looking |
08:52.59 | Dogmai | go away |
08:53.04 | Dogmai | my missus is home o_O |
08:58.20 | JademusSreg | Haha. |
08:58.42 | JademusSreg | Worry not; IRC doesn't display my devastating features. |
09:23.57 | *** join/#sc2mapster Ahli (~qqqq@dslb-092-073-198-074.pools.arcor-ip.net) |
09:36.17 | *** join/#sc2mapster duckies (50e88a7e@gateway/web/freenode/ip.80.232.138.126) |
09:57.42 | *** join/#sc2mapster JademusSreg (~jademus.s@c-76-123-235-103.hsd1.tn.comcast.net) |
10:13.10 | Ahli | http://my.opera.com/securitygroup/blog/2013/06/26/opera-infrastructure-attack |
10:14.01 | Tarqansasz | Ahli, bist du phallisch? |
11:03.18 | JademusSreg | Read about it last night, Ahli. |
11:17.31 | *** join/#sc2mapster tordy (627449d9@gateway/web/freenode/ip.98.116.73.217) |
11:17.36 | tordy | hello |
11:20.17 | *** join/#sc2mapster sShintah (~oer894n@c83-248-105-252.bredband.comhem.se) |
11:26.23 | *** join/#sc2mapster duckies (50e88a7e@gateway/web/freenode/ip.80.232.138.126) |
11:40.20 | *** join/#sc2mapster Torhal (~Torhal@li234-119.members.linode.com) |
11:41.27 | *** join/#sc2mapster Torhal (~Torhal@li234-119.members.linode.com) |
11:42.25 | Lepton | hey guys how can I make corruptor spawn with corruption cooldown not active? |
11:42.36 | Lepton | aka it spawns and can cast a corruption right away |
11:47.04 | JademusSreg | Easily. |
11:47.49 | JademusSreg | Ability data : Cost + : TimeStart or TimeInitial or whatever it's called. |
11:55.59 | *** join/#sc2mapster RipperRoo (~RipperRoo@pC19F7049.dip0.t-ipconnect.de) |
12:51.39 | *** join/#sc2mapster Jygga (jygga@unaffiliated/jygga) |
12:53.38 | *** join/#sc2mapster Jygga (jygga@unaffiliated/jygga) |
12:54.23 | *** join/#sc2mapster ScytheBlade1 (~Death@serenity.averageurl.com) |
12:54.23 | *** join/#sc2mapster ScytheBlade1 (~Death@about/pxe/ScytheBlade1) |
12:54.39 | *** join/#sc2mapster Jygga (jygga@unaffiliated/jygga) |
13:02.19 | *** join/#sc2mapster Dustin|WorkAlt (~Dustin@64.39.213.168) |
13:03.54 | *** part/#sc2mapster G0A (~hookah604@91-82-188-88.pool.invitel.hu) |
13:17.21 | *** join/#sc2mapster G0A (~hookah604@91-82-188-88.pool.invitel.hu) |
13:18.55 | Lepton | JademusSreg, you gotta ping me! |
13:19.00 | Lepton | tks for the tip ill try it |
13:20.04 | Dustin|WorkAlt | Morning |
13:23.08 | *** join/#sc2mapster Jygga (jygga@unaffiliated/jygga) |
13:47.12 | *** join/#sc2mapster maltenp (~maltenp@h195n10-u-d2.ias.bredband.telia.com) |
13:58.41 | *** join/#sc2mapster Kueken (~Kueken@77.187.200.117) |
13:58.49 | Kueken | Sharky |
14:20.18 | *** join/#sc2mapster twdoie (4e3c1a28@gateway/web/freenode/ip.78.60.26.40) |
14:20.39 | JademusSreg | Zoop. |
14:20.53 | *** join/#sc2mapster MoonEater_mobile (~AndChat45@108-88-97-1.lightspeed.mtryca.sbcglobal.net) |
14:22.55 | *** join/#sc2mapster Telshin (~textual@76.164.170.2) |
14:37.05 | *** join/#sc2mapster RazielZ (~Raziel@78.97.96.21) |
14:37.25 | *** join/#sc2mapster Dogmai (~Dogmai@124-169-194-224.dyn.iinet.net.au) |
15:27.03 | *** join/#sc2mapster Lepton (~Lepton@bas2-montreal29-1177925330.dsl.bell.ca) |
15:27.03 | *** join/#sc2mapster Lepton (~Lepton@unaffiliated/lepton) |
15:35.04 | *** join/#sc2mapster AndChat|453921 (~AndChat45@193.sub-70-197-9.myvzw.com) |
15:57.03 | *** join/#sc2mapster MoonEater_mobile (~AndChat45@193.sub-70-197-9.myvzw.com) |
16:08.30 | *** join/#sc2mapster pirate (cef8af6e@gateway/web/freenode/ip.206.248.175.110) |
16:16.39 | *** join/#sc2mapster ThunderLord (~ThunderLo@pool-173-57-84-51.dllstx.fios.verizon.net) |
16:18.54 | ThunderLord | Hey if i need to do alot of multiplication with alot of really small numbers very accurately, how could i do that? just using regular reals does not give me nearly enough precision |
16:19.29 | JademusSreg | Hm. |
16:19.36 | JademusSreg | It's doable. |
16:19.58 | JademusSreg | First, a question: how much work do you want to put into it? |
16:20.14 | ThunderLord | as much as i need to, its pretty important |
16:20.22 | ThunderLord | needs to be able to handle like |
16:20.36 | ThunderLord | up to 1E-80 |
16:20.36 | JademusSreg | Alright. I'll enumerate a few approaches. |
16:20.59 | ThunderLord | well |
16:21.05 | ThunderLord | actually there might be a better way to do it |
16:21.10 | ThunderLord | cuz i only need it for one thing |
16:21.24 | ThunderLord | i basically have 100 sets of 300 reals, each real is a number between 0 and 1 |
16:21.36 | JademusSreg | The most straight forward approach (and the basis for all the other approaches) is to employ integers instead of Reals/fixed. |
16:22.01 | ThunderLord | i want to find the set such that the product of the 300 reals is maximal |
16:22.15 | JademusSreg | f*somePowerOfTwo |
16:22.34 | ThunderLord | i get 32 bits there right? |
16:22.37 | ThunderLord | out of an int? |
16:22.37 | JademusSreg | Then cast to int. |
16:22.57 | JademusSreg | Yes, all galaxy values and references are 32 bits. |
16:23.06 | ThunderLord | i dont think that will be eough |
16:23.09 | ThunderLord | \ : |
16:23.28 | JademusSreg | Brings us to approach 2. |
16:24.11 | JademusSreg | You use 2 or more ints, treat them as a single value. |
16:24.24 | ThunderLord | that could work |
16:24.30 | ThunderLord | but ehhh |
16:24.44 | ThunderLord | wouldent i be better off trying to implement a floating point system? |
16:25.16 | Kueken | 1 int for precision, 1 int for dimension? |
16:25.17 | JademusSreg | Approach 3 gives you the most control, arbitrary precision, but worse resource efficiency. Strings. |
16:25.42 | ThunderLord | well, the cauculations should be constant time |
16:26.05 | JademusSreg | O(1) for approaches 1 and 2. |
16:26.05 | ThunderLord | its 3000 multiplication operations per player at initialization |
16:26.10 | ThunderLord | thats not to much right? |
16:26.19 | JademusSreg | Naw, that'll be fine. |
16:26.39 | ThunderLord | is there a better way where i can do some simplifying assumptions? |
16:26.44 | ThunderLord | like |
16:26.57 | ThunderLord | i have 100 sets of 300 numbers per player |
16:27.21 | ThunderLord | and i want to find the set such that the product of all 300 numbers is maximal over all other sets |
16:27.30 | ThunderLord | and every number is between 0 and 1 in the sets |
16:27.47 | JademusSreg | When an approach is problematic, that's usually because the design is at fault. |
16:29.07 | ThunderLord | there may in fact be a better way to calculate this, but i have been unsuccessful at finding it. |
16:29.15 | ThunderLord | this is for the true skill rating Jade |
16:29.37 | ThunderLord | its actually quite cool, once i get this last part down im going to make it in to a library |
16:29.40 | JademusSreg | I've not caught all the details, but it sounds like you want to implement TrueSkill but... without an upward bound? |
16:29.55 | ThunderLord | there is an upward bound |
16:29.58 | ThunderLord | well... |
16:30.02 | ThunderLord | i have an equation |
16:30.11 | JademusSreg | Because I can't think of any other reason to attempt estimating a percentile group./ |
16:30.30 | ThunderLord | P(X, C) = the probability that a player of skill C will beat a player of skill X where skill is a number between 1 and 100 |
16:30.50 | ThunderLord | for every player i keep the skill ratings of the last 300 players i have won/lost against |
16:30.55 | ThunderLord | and at initialization |
16:31.07 | ThunderLord | i create 100 sets of numbers |
16:31.36 | ThunderLord | each set is P(X, C) where X is the skill ratings of each player i have won/lost against and C is the set number |
16:31.53 | JademusSreg | Of course, I'm well acquainted with TrueSkill, but I think perhaps what you're attempting is unnecessary. |
16:31.59 | ThunderLord | if it is a player i won against the number is P(X, C) if i lost is is 1-P(X, C) |
16:32.16 | ThunderLord | the point is to find the most likely C value 1-100 for your player |
16:32.33 | JademusSreg | The bounds are the constants that provide a sense of scale, and being effectively global, all other considerations are local. |
16:33.01 | ThunderLord | wait, what do you mean by that? |
16:33.42 | JademusSreg | There shouldn't be any need to estimate or calculate the player's match history or such. |
16:34.13 | JademusSreg | Unless one desires other features not essential to TrueSkill itself. |
16:34.24 | ThunderLord | well there are a few advantages to this system |
16:34.25 | ThunderLord | yeah |
16:34.40 | ThunderLord | like it gives you an approximate % of all players who play the game |
16:34.46 | pirate | is there a string word count function |
16:34.57 | JademusSreg | Yes, pir. |
16:35.08 | ThunderLord | also it allows your score to kinda update over more recent games |
16:35.18 | ThunderLord | i have looked in to ELO but... i like this system better |
16:35.28 | JademusSreg | Better off making that a separate system, Thund. |
16:35.37 | ThunderLord | also there is alot i have to take in to account the game is 2v2v2v2 |
16:35.49 | ThunderLord | im confident that the current system is the right one to go with |
16:36.07 | ThunderLord | just having a bit of trouble implementing it in the SC2 engine |
16:36.18 | ThunderLord | i already ran simulations with a python script |
16:36.30 | ThunderLord | im happy with the numbers and the runtime |
16:36.31 | JademusSreg | By which I mean you shouldn't embed these features into your TrueSkill implementation, and will be able to solve both quite effectively if they are not coupled. |
16:37.02 | ThunderLord | coupled? |
16:37.05 | JademusSreg | Viral banks would solve the percentile problem more effectively. |
16:37.05 | pirate | I can't find word count :( |
16:37.22 | ThunderLord | Ciral banks are O(n) |
16:37.49 | ThunderLord | and, there are other issues with that |
16:38.09 | JademusSreg | pir, I mean I've got a function for it. |
16:38.15 | pirate | ahhh |
16:38.49 | JademusSreg | Actually, I'll pastee all my string utils. |
16:38.56 | pirate | huzzah |
16:39.58 | pirate | http://www.kickstarter.com/projects/1860609015/mineralz-evolution |
16:40.04 | pirate | let that be a lesson: |
16:40.13 | pirate | dude coulda raised 1500 |
16:51.40 | JademusSreg | I'm just formatting this code to be more readable. |
16:52.48 | Dustin|WorkAlt | JademusSreg, have you used bitwise operators before? |
16:56.30 | JademusSreg | https://pastee.org/cphxa |
16:56.32 | JademusSreg | Yes. |
16:56.49 | JademusSreg | Which is coincidentally demonstrated in those utils. |
16:58.43 | *** join/#sc2mapster sarah___ (4ba35f4b@gateway/web/freenode/ip.75.163.95.75) |
16:58.46 | Dustin|WorkAlt | Im learning wtf they are all about cause Im doing some DB writing for storing a hardware LED Matrix Grid Values, the SQL call was too damn slow and messing up my code. So I'm converting it to a single Binary entry and am going to use that with bitwise operators to speed things up |
16:58.54 | JademusSreg | pir, I should point out that some functions in that paste may be untested, and many are less than fully optimized, but the principle if fairly straight forward. |
16:59.10 | Dustin|WorkAlt | (Doing this in Python) |
17:00.25 | JademusSreg | Let's assume Python doesn't have quirks with bitwise operators, and that the python implementation doesn't either, since that shit is pretty fundamental. |
17:00.46 | JademusSreg | What specifically is the problem? |
17:02.13 | ThunderLord | YAY PYTHON! |
17:03.40 | JademusSreg | (I like Python's founding principles more than I enjoy how Python has been developed, but that's irrelevant.) |
17:04.23 | ThunderLord | u can code so much stuff |
17:04.24 | ThunderLord | so fast |
17:05.10 | Dustin|WorkAlt | Oh the only problem is me wrapping my head around how I want to setup the process and everything |
17:05.30 | JademusSreg | (Most distressing is the gradual decline of the "One Correct Solution" principle.) |
17:05.30 | Dustin|WorkAlt | Going from Int/real math to binary is a brain twister for me |
17:05.33 | JademusSreg | Ohh. |
17:05.36 | JademusSreg | Alright. |
17:06.10 | Dustin|WorkAlt | I've got the basics down, just need to investigate and play around |
17:06.24 | JademusSreg | First, start by writing (by-hand on paper preferably but a text editor will suffice) a binary representation of any arbitrary value. |
17:06.49 | JademusSreg | Preferably a value that will not give you a hand cramp. |
17:08.15 | JademusSreg | Next, attempt to work out manually the result of any given bitwise operation involving a simpler value of the same length. |
17:08.48 | JademusSreg | And for a very convenient reference written in simple language with plenty of examples, see Deaod's resource. http://deaod.de/BitwiseOperators.txt |
17:09.33 | JademusSreg | I proof-read it, so it should be optimal. |
17:13.03 | JademusSreg | You'll also want to know the technical specs for the real-number implementation. Probably fine to assume the usual number of bits for control, base, exp, but best to be certain. |
17:13.50 | JademusSreg | A decade or two ago that would have been far more problematic, but standardization has its benefits. |
17:13.52 | *** join/#sc2mapster Kueken1 (~Kueken@brsg-d9bef4c6.pool.mediaWays.net) |
17:14.40 | *** join/#sc2mapster Tolkfan (~Thunderbi@host-89-230-245-44.nowydwor.mm.pl) |
17:16.06 | *** join/#sc2mapster AndChat|453921 (~AndChat45@36.sub-174-240-17.myvzw.com) |
17:17.19 | *** join/#sc2mapster MoonEater_mobile (~AndChat45@193.sub-70-197-9.myvzw.com) |
17:18.06 | Dustin|WorkAlt | Cool, thanks for the link Ill read that over lunch |
17:18.40 | *** join/#sc2mapster AndChat-453921 (~AndChat45@193.sub-70-197-9.myvzw.com) |
17:19.43 | JademusSreg | Arithmetic operations can be expressed as bitwise operations, so it's rather like understanding what's happening at the memory/CPU level, or if you like it's the results from a set of simple logic gates, or if you're Minenerd, it's a very elaborate redstone contraption. |
17:28.19 | *** join/#sc2mapster MoonEater_mobile (~AndChat45@193.sub-70-197-9.myvzw.com) |
17:30.43 | ThunderLord | hummmmm |
17:31.00 | ThunderLord | is there a normal distribution function in the trigger editor? |
17:31.05 | ThunderLord | or do i have to make that myself |
17:33.32 | Kueken | option 2 |
17:35.55 | *** join/#sc2mapster AndChat|453921 (~AndChat45@193.sub-70-197-9.myvzw.com) |
17:36.49 | sarah___ | the ifthenelse for some reason dident work |
17:37.18 | sarah___ | well im gona go play my game |
17:38.49 | sarah___ | WHY ISNT MY GAME IN THE ARCADE! |
17:39.01 | JademusSreg | Private or public? |
17:39.04 | sarah___ | public |
17:39.33 | JademusSreg | During the inital document creation, did you select Arcade map? |
17:39.37 | JademusSreg | *initial |
17:40.35 | sarah___ | thanks |
17:41.02 | JademusSreg | Also, it will demand you configure a bunch of properties if you haven't already. |
17:48.09 | *** join/#sc2mapster MoonEater_mobile (~AndChat45@193.sub-70-197-9.myvzw.com) |
18:04.54 | *** join/#sc2mapster Ahli (~qqqq@dslb-092-073-198-074.pools.arcor-ip.net) |
18:05.20 | Ahli | http://issuu.com/glhfmag/docs/glhf_magazine_-_summer_edition_2013?e=5965119/3781625 page 38, bottom center :D |
18:06.55 | JademusSreg | Er, unfamiliar site, not going to enable js. Screenshot or something? |
18:08.25 | Ahli | I'm mentioned in the glhf magazine |
18:08.53 | JademusSreg | I'd like to see it. Hm. |
18:10.38 | Ahli | http://snag.gy/XfrtS.jpg |
18:11.43 | JademusSreg | Awww, how sweet. |
18:15.43 | Kueken | imagines Jade petting Ahli on his back, saying "Good boy" |
18:16.08 | Ahli | ^^ |
18:17.04 | *** join/#sc2mapster Bibendus (~Bibe@ip-80-249-36-63.static.adsl.cheapnet.it) |
18:41.12 | *** join/#sc2mapster MoonEater_mobile (~AndChat45@108.sub-70-197-24.myvzw.com) |
18:41.57 | Lepton | JademusSreg, would you know how to disable concussive shell splash? |
18:42.07 | Lepton | its on by default on the editor and its sooo annoying |
18:54.50 | *** join/#sc2mapster TroubledBear (b2c76860@gateway/web/freenode/ip.178.199.104.96) |
18:59.03 | Kueken | what is concussive shell splash? |
18:59.10 | Kueken | ah |
18:59.22 | Kueken | you mean the marauder attack splash slow? |
19:00.22 | Kueken | well, you could easily remove the search effect from the set and just link directly to the apply |
19:00.54 | Kueken | or, if applicable for your map, you can use the Multi dependencies |
19:03.46 | *** join/#sc2mapster motive (motive@c-68-36-204-197.hsd1.nj.comcast.net) |
19:03.46 | *** join/#sc2mapster Repo (~repo@76.164.170.2) |
19:06.27 | Lepton | kueken, yes i mean the slow effect |
19:06.35 | Lepton | in melee theres no splash |
19:06.41 | Lepton | why does editor put splash by default |
19:06.43 | Lepton | so annoying |
19:06.50 | Lepton | there has to be a simple way to get rid of it |
19:07.50 | *** join/#sc2mapster RipperRooX (~RipperRoo@p57903BB4.dip0.t-ipconnect.de) |
19:08.40 | Lepton | btw kueken you have to ping me!~! |
19:08.47 | Lepton | or i might not see it |
19:10.07 | Kueken | well, I gave you 2 easy ways to get rid of it :) |
19:12.31 | Lepton | i think it has to do with the marauder-slow aoe effect |
19:13.06 | Lepton | i think i fixed it |
19:13.32 | Lepton | (basic)areas>radius |
19:17.48 | Lepton | :D |
19:17.55 | Lepton | guyse |
19:18.10 | Lepton | any way to make default chat to [all]> |
19:18.11 | Lepton | ? |
19:18.29 | Lepton | i have a ffa map and when you press enter it chats to allies by default |
19:18.41 | Lepton | most ppl dont know and speak to no one |
19:19.52 | Lepton | without putting eevryone in different teams in lobby... |
19:20.48 | *** join/#sc2mapster Tolkfan (~Thunderbi@host-89-230-245-44.nowydwor.mm.pl) |
19:21.19 | MoonEater_mobile | Hihi |
19:25.11 | *** join/#sc2mapster elijahsaurusrex (42dfaaa2@gateway/web/freenode/ip.66.223.170.162) |
19:25.16 | elijahsaurusrex | hi |
19:25.45 | elijahsaurusrex | umm... |
19:25.59 | elijahsaurusrex | ? |
19:26.03 | elijahsaurusrex | any of you here? |
19:26.31 | elijahsaurusrex | i need help making maps |
19:27.09 | elijahsaurusrex | dudes? |
19:27.16 | TroubledBear | I think you need to ask a specifig question to be able to get competent help |
19:27.39 | elijahsaurusrex | how do i make maps |
19:27.41 | elijahsaurusrex | ? |
19:27.58 | elijahsaurusrex | how do i make maps? |
19:28.14 | Dustin|WorkAlt | lmao |
19:28.28 | elijahsaurusrex | -_- |
19:28.58 | Dustin|WorkAlt | Would you walk into NASA and ask HOW DO YOU MOON? |
19:29.18 | elijahsaurusrex | oh shut up i just need help |
19:29.55 | Dustin|WorkAlt | Then don't come in here and just ask 'how do I make maps' repeatidly |
19:30.12 | elijahsaurusrex | vampire sended me here |
19:30.24 | JademusSreg | Zooop. |
19:30.43 | A1win | the answer is: by using the SC2 editor |
19:31.13 | JademusSreg | Eli, what is your native language / country? |
19:31.23 | elijahsaurusrex | alaska/english |
19:32.04 | JademusSreg | Alright. So besides learning editor and community terminology, there shouldn't be any language difficulties. |
19:32.24 | JademusSreg | First, what is it you want to do? |
19:32.39 | elijahsaurusrex | i want make a awesome map just like my friend vampire made |
19:32.44 | elijahsaurusrex | it was called vampire RPG |
19:33.06 | elijahsaurusrex | but besides -_- why did he called it that? |
19:33.28 | JademusSreg | And do you know how to start the editor? |
19:34.00 | elijahsaurusrex | i used it before when i tried to make a map it was failure |
19:34.52 | JademusSreg | That happens. Given time, patience, and experience, you'll be capable of realizing anything the editor can support. |
19:35.03 | A1win | I think I'll continue my planet map, been getting so many new game ideas I want to do with unity that I haven't actually gotten started with any |
19:35.05 | elijahsaurusrex | k i built a large beacon and setted its scale. |
19:35.12 | elijahsaurusrex | how do i |
19:35.17 | elijahsaurusrex | make it heal units |
19:35.41 | JademusSreg | Well, there are a number of ways. But first, need to be more clear aobut the design. |
19:36.01 | elijahsaurusrex | how would i do that? |
19:36.09 | JademusSreg | Heal any units? Allied units? Bio units? Is it like a Fountain of Healing, Medic, or Moonwell? |
19:36.29 | elijahsaurusrex | oh wait i dont need a beacon |
19:36.41 | elijahsaurusrex | im just wondering how do i make creep come out? |
19:36.54 | A1win | I need to figure out how I want respawning to work and where are players allowed to switch their weapon loadout D: |
19:36.57 | JademusSreg | The way we solve problems here is to begin with the design. Once you can explain how it should work, finding an approach is easy. |
19:37.09 | A1win | I'm turning it into deathmatch instead of team vs team |
19:37.38 | JademusSreg | You'll need to put a Creep Gen behavior on a unit, if that's what the design requires. |
19:37.52 | JademusSreg | If the unit isn't needed, you can paint creep directly with the terrain tools. |
19:39.14 | *** join/#sc2mapster AndChat|453921 (~AndChat45@108-88-97-1.lightspeed.mtryca.sbcglobal.net) |
19:39.38 | elijahsaurusrex | how do i select the creep? |
19:40.36 | JademusSreg | Press T to switch to the Terrain palette, notice the purple goop button, use the tools in there to paint creep on the terrain. |
19:42.33 | elijahsaurusrex | nothing happened |
19:45.36 | elijahsaurusrex | this isnt the great help. -_- im out |
19:45.44 | *** join/#sc2mapster RazielZ (Raziel@78.97.96.21) |
19:47.35 | JademusSreg | Hah. |
19:47.49 | A1win | mmh I wonder how I should score deathmatch, is it enough to just record killing blows... |
19:47.53 | JademusSreg | https://dl.dropboxusercontent.com/u/1049551/Starcraft%202/WaerDoCreepyMake.jpg |
19:48.23 | JademusSreg | A1, people may not be stimulated sufficiently by kills alone. |
19:49.00 | A1win | in what sense? |
19:50.09 | JademusSreg | Pretty much any game can do deathmatch. Players would enjoy more (assuming it is well designed and implemented) a mode of play which offers novelty. |
19:50.27 | TroubledBear | so Jade, I took a look at your movement logic with the operator stuff. do you think it would make sense if I just order the unit to go to the very edge of the map matching the input angle |
19:50.33 | A1win | maybe |
19:50.41 | TroubledBear | the camera cannot be turned by the player |
19:50.47 | A1win | I still think it should be FFA |
19:50.48 | JademusSreg | Bear, nope. |
19:51.02 | A1win | hmmf |
19:51.13 | JademusSreg | Because that can cause undesirable pathing for the movement. |
19:51.23 | TroubledBear | idd it can |
19:51.33 | TroubledBear | it's impossible to disable that, right? |
19:51.47 | Dustin|WorkAlt | I knew that elijahsaurusrex was a douchebag the moment he talked |
19:51.56 | JademusSreg | Haha. |
19:52.55 | JademusSreg | Bear, the point of using movement orders over the alternative is that it accounts for pathing, so you avoid coding your own collision system from scratch. |
19:53.13 | JademusSreg | So disabling it would undermine the purpose. =D |
19:53.50 | TroubledBear | I actually just meant disabling the pathing in such a way that it just takes the direct line |
19:54.13 | JademusSreg | One in the same. |
19:54.29 | TroubledBear | aww |
19:54.39 | JademusSreg | There's no reason not to use an offset that corresponds to the unit's movement. |
19:55.38 | TroubledBear | okay, I thought it could be better for performance, but as they say; don't guess, measure |
19:56.20 | JademusSreg | One should only worry about that level of optimization if one encounters performance bottlenecks, or has some post-release spare time. |
19:56.24 | Dustin|WorkAlt | Adding things that the system already does is bad for performance :) |
19:56.36 | JademusSreg | ^ |
20:01.11 | JademusSreg | Also, the performance of my system is close to the theoretical performance limit, so that's a non-issue anyway. |
20:02.52 | JademusSreg | Actually, the users' connection is more a liability to the responsiveness than the system, so that's reassuring/annoying. |
20:05.29 | *** join/#sc2mapster MindWorX (~MindWorX@80-161-13-134-static.dk.customer.tdc.net) |
20:09.25 | JademusSreg | (The latency imposed by bnet is at least 150ms or so, and tolerance is at least 500ms iirc. The system's responsiveness is around 1/16 game time seconds, 22.4 updates per real second on Faster game speed, which gives it a -worst-case- inherent latency of around 44ms. Hahaha) |
20:10.41 | TroubledBear | I c |
20:14.19 | JademusSreg | Interestingly, it is possible to increase responsiveness simply by increasing gamespeed, but it's not doable on bnet. You can try it yourself by using the debug command speed in a test game. |
20:15.52 | TroubledBear | is that so because more ticks are rendered per second? |
20:15.55 | JademusSreg | speed 2 is a good choice. |
20:16.14 | JademusSreg | Well, basically, more updates, more responsiveness, with diminishing returns, of course. |
20:17.08 | TroubledBear | as is for single player my ultralisk is happily flailing around and it feels quite responsive |
20:17.17 | *** join/#sc2mapster MindWorX` (~MindWorX@80-161-13-134-static.dk.customer.tdc.net) |
20:19.55 | JademusSreg | Gamespeed applies a factor to the updates-per-game-second. And at ~44ms, which is what you experience in a test game on Faster with the Jademus' Delicious Controllifier, that pushes the limits of conditioned reflexes in the highest levels of play. =D |
20:20.16 | JademusSreg | Gotta test on bnet to experience how well it plays for multiplayer. |
20:20.32 | JademusSreg | Which will impose a minimum latency. |
20:22.01 | TroubledBear | are they doing that on purpose for consitency? |
20:23.33 | *** part/#sc2mapster G0A (~hookah604@91-82-188-88.pool.invitel.hu) |
20:23.41 | JademusSreg | It's an unfortunate consequence of how they sync clients. FPS and MMOs, for example, will get updates from the client as it can, and push updates back to the client if the client state exceeds certain bounds. |
20:24.22 | *** join/#sc2mapster Tomura (~Tomura@p5B03383B.dip0.t-ipconnect.de) |
20:24.34 | JademusSreg | RTS games, instead, tend to sync All The Data, and will slow shit down to ensure a good connection doesn't gain an "unfair" advantage. |
20:27.14 | JademusSreg | So the 150ms bnet imposes is a sort of buffer. It sucks if you want responsive gameplay, but it better suits RTS. |
20:28.40 | *** join/#sc2mapster MindWorX (~MindWorX@80-161-13-134-static.dk.customer.tdc.net) |
20:28.41 | TroubledBear | yeah would be nice if there was a way to relax this behaviour for certain maps, but it's probably quite central to the engine |
20:31.35 | Dustin|WorkAlt | yeah that would be a major engine we-write :P |
20:31.49 | JademusSreg | "we-write" indeed. |
20:31.54 | Dustin|WorkAlt | re-* |
20:32.00 | Dustin|WorkAlt | Damn my typing today |
20:32.46 | JademusSreg | Insofar as we'd need to code our own networks to accomplish it, sounds accurate. |
20:35.48 | JademusSreg | Dustin, make good use of the reference material? |
20:43.18 | *** join/#sc2mapster nooblark (nooblark@c-68-83-58-11.hsd1.nj.comcast.net) |
20:43.35 | Dustin|WorkAlt | Haven't had a lot of time to play with it, soon as work is over in an hour or so I'm gonna start making some functions to test |
20:43.46 | *** join/#sc2mapster MindWorX` (~MindWorX@80-161-13-134-static.dk.customer.tdc.net) |
21:00.57 | *** join/#sc2mapster MindWorX (~MindWorX@80-161-13-134-static.dk.customer.tdc.net) |
21:14.47 | *** join/#sc2mapster MoonEater_mobile (~AndChat45@108-88-97-1.lightspeed.mtryca.sbcglobal.net) |
21:19.48 | *** part/#sc2mapster Ahli (~qqqq@dslb-092-073-198-074.pools.arcor-ip.net) |
21:26.51 | *** join/#sc2mapster Ahli (~qqqq@dslb-092-073-198-074.pools.arcor-ip.net) |
21:41.54 | TroubledBear | is there any way to link some meta info to a dialog item, or how else to efficiently create dialogs? say I have a dialog with n items portraying units and I want to create a corresponding unit when clicked (without storing each item into a variable and creating individual events for each)? |
21:46.30 | A1win | by storing each item into a variable |
21:48.01 | TroubledBear | uh oh, I saw there was Set Unit Link for dialog item, what does that do? |
21:48.11 | TroubledBear | I can't seem to retrieve the unit |
21:48.19 | A1win | not what you want |
21:48.33 | TroubledBear | okay :[ |
21:48.34 | A1win | storing each item into a variable is the most sensible way of doing it |
21:48.37 | A1win | that's what variables are for |
21:48.59 | A1win | use Records to keep them organized, considering we don't have actual objects in galaxy |
22:22.10 | *** join/#sc2mapster Gluon (~Lepton@bas2-montreal29-1177925330.dsl.bell.ca) |
22:29.32 | JademusSreg | Zooop. |
22:30.26 | JademusSreg | Well, there's The Right Way(s), and there's The Hacky Way, Bear. Which would you like to hear first? |
22:31.25 | TroubledBear | tell me about the right way : ) |
22:32.56 | JademusSreg | There's a few approaches. If the set of dialogs/dialog controls are a finite or otherwise known quantity, one should use Records/structs (GUI/galaxy term respectively). |
22:33.36 | *** join/#sc2mapster nooblark (nooblark@c-68-83-58-11.hsd1.nj.comcast.net) |
22:34.52 | JademusSreg | If one cannot be certain about the number of dialogs/dialog controls, or one just wants an O(1) get/set for the data, instead one would use DataTables to dynamically allocate the memory. |
22:36.26 | JademusSreg | In the former case, it's O(n) lookups, iterating through the indexes of a Record/struct array until one finds the data. |
22:37.17 | JademusSreg | In the latter, it's O(1), using the dialog/dialog control int reference as part of the string keys to get/set values in the DataTable. |
22:38.50 | TroubledBear | interesting, anywhere I can read up on that? |
22:39.04 | JademusSreg | And the third option, if you are a purist who prefers to separate content from program logic, is to use the user data type API. =D |
22:39.55 | JademusSreg | There are probably tutorials or something. I prefer to just read the native functions, personally. |
22:40.24 | TroubledBear | kk |
22:41.18 | JademusSreg | If you'd like, I can link you to the API reference I use. |
22:41.52 | TroubledBear | yes, please |
22:44.18 | JademusSreg | I'll archive a fresh batch. |
22:54.33 | JademusSreg | https://dl.dropboxusercontent.com/u/1049551/Starcraft%202/Galaxy%20API%20Reference.7z |
22:55.36 | JademusSreg | Also included a galaxy userDefineLang.xml file for notepad++ highlighting/code completion. |
22:55.45 | TroubledBear | ah nice |
22:56.03 | JademusSreg | And the compilation files handy for a quick search. |
22:56.21 | TroubledBear | thank you! |
22:57.36 | Gluon | JademusSreg, |
22:57.59 | Gluon | your trick to make corruptors spawn with corruption not on cooldown failed |
22:58.06 | Gluon | it just removed tthe corruption vbutton |
22:58.07 | Gluon | lol |
23:00.44 | A1win | sounds like you made something else than what he suggested then :P |
23:01.33 | Gluon | i put timestart at 0 |
23:01.56 | A1win | probably in the wrong place then |
23:02.07 | A1win | screenshot would help |
23:02.17 | A1win | or make it easier to notice what's wrong, rather |
23:05.28 | Gluon | cost>index 0>cooldown>timestart |
23:06.24 | A1win | are you sure that's the only thing you changed? |
23:06.30 | A1win | if you change it back, does the button reappear? |
23:07.55 | Gluon | ill try 1 sec |
23:09.26 | Gluon | sooo i changed it back |
23:09.29 | Gluon | then changed ita gain |
23:09.31 | Gluon | and now it works |
23:09.36 | Gluon | I guess i did something wrong first time |
23:49.09 | *** join/#sc2mapster AndChat|453921 (~AndChat45@34.sub-70-197-6.myvzw.com) |