Timestamps are in GMT/BST.
| 00:00:00 | sam686 | hi |
| 00:00:05 | Little_Apple | i found a mistake on bitfighter.org |
| 00:00:14 | raptor | have you ever read the notice this channel sends you when you join, Little_Apple? |
| 00:00:37 | Little_Apple | wut |
| 00:00:48 | Little_Apple | ._. |
| 00:01:00 | Little_Apple | i dont like patiance |
| 00:01:11 | Little_Apple | anyways |
| 00:01:29 | Little_Apple | you know the side thrusters on the bitfighter ships? |
| 00:02:08 | raptor | hi |
| 00:02:22 | raptor | a mistake on bitfighter.org, where? |
| 00:02:37 | Little_Apple | you know the side thrusters on the bitfighter ships? |
| 00:02:46 | raptor | sure |
| 00:02:46 | Little_Apple | for the green and purple one |
| 00:02:54 | Little_Apple | they are green and purple |
| 00:02:58 | Little_Apple | THEY SHOULD BE GREY! |
| 00:03:07 | raptor | ahhh... good eye |
| 00:03:14 | Little_Apple | :D |
| 00:05:01 | Little_Apple | do i get a treat? |
| 00:06:52 | Little_Apple | positive reinforcement? |
| 00:07:03 | raptor | do you want to fix them? |
| 00:07:17 | Little_Apple | uhh |
| 00:07:27 | Little_Apple | if i get the original pic for the site sure |
| 00:07:40 | Little_Apple | i can fix it in a minute or two |
| 00:07:48 | raptor | http://bitfighter.org/template/brownship.png |
| 00:07:52 | raptor | http://bitfighter.org/template/purpleship.png |
| 00:07:56 | Little_Apple | lol |
| 00:07:58 | raptor | http://bitfighter.org/template/greenship.png |
| 00:08:05 | raptor | http://bitfighter.org/template/redship.png |
| 00:08:13 | raptor | :) |
| 00:08:28 | Little_Apple | err |
| 00:08:43 | Little_Apple | is there a single picture that is on the site? |
| 00:09:29 | raptor | nope, they are part of teh CSS stylesheet |
| 00:09:46 | Little_Apple | ah |
| 00:10:10 | Little_Apple | can you pm them to me? i cant upload images on this computer |
| 00:10:17 | Little_Apple | or |
| 00:10:19 | Little_Apple | nvm |
| 00:10:24 | Little_Apple | ill pm myself |
| 00:12:41 | sam686 | or, http://sam686.maxhushahn.com/upload3.php thats one place to upload |
| 00:13:13 | Little_Apple | awesome |
| 00:13:19 | Little_Apple | i can do that from here |
| 00:15:44 | Little_Apple | The red ship is fine btw. it was just the others |
| 00:21:20 | Little_Apple | this is a litte harder because i have to somehow get a color from one picture to another picture |
| 00:21:25 | Little_Apple | meh |
| 00:22:08 | Watusimoto | try faxing it |
| 00:22:29 | Little_Apple | lol |
| 00:22:33 | Watusimoto | :-) |
| 00:22:38 | raptor | i gave you the red ship so you could see what exact greys it is using |
| 00:22:43 | Little_Apple | yea |
| 00:23:04 | Little_Apple | i just have to figure out how to get that grey to the other picture file |
| 00:27:58 | Little_Apple | i did the brown one |
| 00:28:49 | raptor | if you re-upload it to http://sam686.maxhushahn.com/upload3.php |
| 00:28:54 | raptor | i can stick it on the site |
| 00:29:04 | raptor | or at least inspect your good work first :) |
| 00:29:19 | | sam686` has joined |
| 00:29:24 | Little_Apple | k |
| 00:30:25 | Little_Apple | ah |
| 00:30:33 | Little_Apple | need to change a few things |
| 00:32:14 | | sam686 Quit (Ping timeout: 245 seconds) |
| 00:33:12 | Little_Apple | merf |
| 00:35:00 | Little_Apple | i gotta go do science |
| 00:35:15 | Little_Apple | ill upload the pics when they're done |
| 00:35:17 | Little_Apple | laters |
| 00:35:21 | | Little_Apple Quit (Quit: Page closed) |
| 00:35:54 | | BFLogBot - Commit 53c77b769484 | Author: watusim...@bitfighter.org | Log: Centralize code bits |
| 00:35:56 | | BFLogBot - Commit 8e7395d951fb | Author: watusim...@bitfighter.org | Log: Need more testing to see if this is a good change |
| 00:37:43 | raptor | i can't believe how well that worked - giving Little_Apple work |
| 00:39:22 | Watusimoto | night |
| 00:39:28 | raptor | good night |
| 00:39:35 | Watusimoto | good idea, btw |
| 00:39:43 | raptor | ? |
| 00:41:07 | raptor | putting LA to work? |
| 00:41:10 | raptor | thanks! |
| 00:41:11 | raptor | :) |
| 00:45:30 | | Watusimoto Quit (Ping timeout: 272 seconds) |
| 00:47:44 | raptor | be back later.. |
| 00:47:47 | | raptor Quit () |
| 01:12:52 | | iKoda Quit (Quit: K thx bai) |
| 04:20:34 | | sam686` Quit (Ping timeout: 245 seconds) |
| 04:28:28 | | raptor has joined |
| 04:28:28 | | ChanServ sets mode +o raptor |
| 04:29:19 | | karamazovapy Quit (Read error: Connection reset by peer) |
| 04:30:00 | | karamazovapy has joined |
| 05:24:15 | | zoomber_mbp has joined |
| 05:27:20 | raptor | someone broke the core heartbeat... |
| 05:31:19 | zoomber_mbp | hi raptor |
| 05:31:24 | raptor | hello |
| 05:31:30 | zoomber_mbp | i wanted to ask you |
| 05:31:40 | zoomber_mbp | is there some way for me to make a spectator client? |
| 05:31:57 | zoomber_mbp | like, if we had a BBB, i could have that thing join on my iMac, which is powerful enough to record, while i play on a different computer |
| 05:32:09 | zoomber_mbp | which i could do now, but then the thing would just sit there, lol |
| 05:33:05 | raptor | spectator mode is not coded at all |
| 05:33:20 | zoomber_mbp | thats what i thought the answer would be |
| 05:33:23 | zoomber_mbp | sadly |
| 05:33:26 | raptor | sadly |
| 05:33:41 | zoomber_mbp | though, far be it from me to not appreciate all the wonderful other things that have been made in 016 |
| 05:34:15 | zoomber_mbp | i just think it would be cool to give something a try. I have an idea actually |
| 05:34:36 | zoomber_mbp | maybe something thats easy to code, like you can just see the whole screen in commanders view |
| 05:35:01 | zoomber_mbp | i could record the whole game going on, and either upload, or pan around in video editing afterwards |
| 05:35:12 | raptor | well, now that we've finally done most of the major refactors, it'll be adding new features and bugs from here on out! |
| 05:35:30 | zoomber_mbp | thats great |
| 05:35:45 | zoomber_mbp | now tell me though, would that be simple to code, just by listening to it? |
| 05:35:51 | raptor | no |
| 05:35:53 | zoomber_mbp | just the basic outline of it, |
| 05:36:08 | zoomber_mbp | all i was suggesting was to take commanders mode, and no longer block out everything |
| 05:36:17 | raptor | ah... |
| 05:36:31 | raptor | that part isn't hard |
| 05:36:31 | zoomber_mbp | heres a connection for you |
| 05:37:02 | zoomber_mbp | Spectate = Passive Sensor like in 016, but even zoomed out more |
| 05:37:05 | raptor | the hard part is getting the observer to be connected but disregarded |
| 05:37:19 | raptor | yes, that the viewing part is not the hard part |
| 05:37:24 | zoomber_mbp | maybe a /command? |
| 05:37:30 | zoomber_mbp | ./observe |
| 05:37:36 | zoomber_mbp | send something so some game handler, |
| 05:37:40 | zoomber_mbp | destroy the ship |
| 05:37:53 | raptor | that's the hard part |
| 05:38:05 | raptor | getting the observer to be connected, but not a 'player' |
| 05:38:06 | zoomber_mbp | shipdead -> yes, (i saw something like that in the code once) |
| 05:38:10 | zoomber_mbp | yes, thats true |
| 05:38:30 | zoomber_mbp | ok, but here's an idea for you to get around that if that would work this way |
| 05:38:37 | raptor | because almost everything in the code is built to the fact that all people connected are players |
| 05:38:51 | zoomber_mbp | isn't there a switch that tells you if the player is alive or not? |
| 05:39:15 | zoomber_mbp | something in the code that does that? i almost swear i remember seeing something |
| 05:39:20 | raptor | something like that was added for 016 with the respawn screen... |
| 05:39:29 | raptor | idle screen, i mean |
| 05:39:49 | zoomber_mbp | oh, but does the player only get Line of Sight after spawn right..? |
| 05:40:01 | zoomber_mbp | so i see what the issue is then |
| 05:40:05 | raptor | yes, but the issue isn't sight |
| 05:40:17 | raptor | it's the fact that he is still on team 1 or 2 |
| 05:40:29 | zoomber_mbp | team -3? spectator team, shows on tab board? |
| 05:40:41 | raptor | that will probably have to be how it goes |
| 05:40:59 | zoomber_mbp | ok how about this |
| 05:41:22 | zoomber_mbp | oh that won't work |
| 05:41:29 | raptor | brb |
| 05:41:34 | zoomber_mbp | the issue is if we let the player |
| 05:41:34 | zoomber_mbp | ok |
| 05:48:02 | raptor | ok back |
| 05:49:27 | zoomber_mbp | excellent |
| 05:49:52 | zoomber_mbp | ok, i guess there are a few important factors considerable in this spectating demo |
| 05:50:02 | raptor | actually, with watusimoto's latest changes with the idle piece makes observer closer to being coded... |
| 05:50:14 | zoomber_mbp | 1. Can you remove all collision detection from a ship? |
| 05:50:24 | zoomber_mbp | 2. Can you make a ship invisible to all players? |
| 05:50:26 | raptor | yes, that's easy |
| 05:50:33 | raptor | 1. easy |
| 05:50:35 | raptor | 2. easy |
| 05:50:36 | zoomber_mbp | well there you go! |
| 05:50:50 | zoomber_mbp | what else do we need? |
| 05:50:53 | zoomber_mbp | yes its a bit basic though |
| 05:51:06 | zoomber_mbp | oh actually |
| 05:51:08 | zoomber_mbp | idea |
| 05:51:17 | zoomber_mbp | though this would = hard |
| 05:51:53 | raptor | lots of little easy parts - the hard part is still: not including the connected player with all other game calculations (lots of refactoring) |
| 05:52:01 | zoomber_mbp | code some function to route data output display for another player onto your screen |
| 05:52:08 | zoomber_mbp | yes |
| 05:52:13 | raptor | like a 'follow' mode? |
| 05:52:17 | zoomber_mbp | yes! |
| 05:52:21 | zoomber_mbp | hard, right? |
| 05:52:33 | raptor | it would require basic observer to be completed first |
| 05:52:41 | zoomber_mbp | exactly |
| 05:52:50 | zoomber_mbp | id count that as the ultimate end of the road achievement |
| 05:52:57 | raptor | i actually have no idea what it would entail... too dependent on undone things |
| 05:53:10 | raptor | that would be really, really cool |
| 05:53:27 | zoomber_mbp | so, a basic observer can be just be commander map / spy bug view |
| 05:53:59 | zoomber_mbp | oh oh, a robot! |
| 05:54:08 | zoomber_mbp | one that just tries to follow players, specifically ones with flatgs |
| 05:54:09 | zoomber_mbp | flags* |
| 05:54:15 | zoomber_mbp | or whatever game objective |
| 05:54:33 | zoomber_mbp | and a basic absolute value team -3, is always invisible/uncollideable |
| 05:54:43 | zoomber_mbp | a bot isn't programed to shoot, so it wont |
| 05:54:59 | zoomber_mbp | maybe the bot is very fast? |
| 05:55:22 | zoomber_mbp | how far are we on teleporting between players? |
| 05:55:36 | zoomber_mbp | ok, way to many possibilities I'm throwing out, and I'm sorry if its looking unorganized now |
| 05:56:52 | raptor | good ideas, i think |
| 05:57:04 | raptor | but we have to take it step by step |
| 05:57:17 | zoomber_mbp | hey raptor, what if spy bug was this image: http://i657.photobucket.com/albums/uu294/RealSkybax/FloatingTurret.jpg? |
| 05:57:29 | zoomber_mbp | and the thing could point to whoever is closest to it\ |
| 05:57:33 | raptor | ha |
| 05:57:37 | zoomber_mbp | lol |
| 05:57:41 | raptor | isn't that the floating turret? |
| 05:57:49 | zoomber_mbp | yeah lol |
| 05:57:51 | raptor | or the sentry drone idea |
| 05:58:05 | zoomber_mbp | the design looks kind of cool |
| 06:06:26 | zoomber_mbp | silly raptor, always on the version ahead of the current bit fighter release |
| 06:06:54 | zoomber_mbp | always wants to be the first in line in the lunch line...etc |
| 06:07:04 | raptor | haha |
| 06:09:34 | zoomber_mbp | hmm, people want my old sniper weapon code |
| 06:09:38 | zoomber_mbp | blech |
| 06:09:45 | raptor | i'd say leave it |
| 06:09:58 | zoomber_mbp | (which is what *blech* means) |
| 06:10:03 | raptor | we had too much sandbox time with 015/015a |
| 06:10:07 | zoomber_mbp | yeah |
| 06:10:17 | raptor | but that's partly our fault for not releasing new versions! :) |
| 06:10:18 | zoomber_mbp | Should I put that server back up when 017 comes out? |
| 06:10:30 | raptor | well, we'll be on a quicker release schedule |
| 06:10:32 | zoomber_mbp | make some cool stuff, like when sam and I made Giant turrets/forcefields? |
| 06:10:45 | zoomber_mbp | yeah, thats why I'm thinking of just skipping time on 016 with that server |
| 06:10:52 | raptor | i would |
| 06:11:02 | raptor | we'll probably release within 2 weeks anyways.. |
| 06:11:11 | zoomber_mbp | also, I'm going to try and find new mods, not ones I've already used on that server |
| 06:11:14 | zoomber_mbp | oh oh i got one |
| 06:11:25 | zoomber_mbp | sit down raptor, ill tell you a story |
| 06:11:41 | zoomber_mbp | once upon a time, long long ago, I was helping watusimoto with something I completely forgot about right now |
| 06:12:02 | zoomber_mbp | as a reward, I eagerly got to see watusimoto's secret invention! |
| 06:12:11 | raptor | which one? |
| 06:12:12 | zoomber_mbp | it was a phaser, that curled towards a test item or resource item! |
| 06:12:30 | raptor | haha, really? |
| 06:12:45 | zoomber_mbp | yeah, your shots would literally go towards the test item or small bouncy ball resource item |
| 06:13:32 | zoomber_mbp | karamazovapy, I'm literally using the term "literally" in that sentence correctly |
| 06:13:46 | zoomber_mbp | so now |
| 06:13:51 | zoomber_mbp | want to see that old code raptor? |
| 06:14:26 | raptor | yes, but not at the moment... i'm fixing a bug |
| 06:18:10 | zoomber_mbp | i was just going to suggest to you where to find it, i don't have it handy and haven't for a while |
| 06:18:21 | zoomber_mbp | its somewhere in projectile.cpp, like at around the 500 lines or soemthing |
| 06:18:23 | zoomber_mbp | have fun serching! |
| 06:18:26 | zoomber_mbp | searching.. |
| 06:18:29 | zoomber_mbp | night night |
| 06:18:39 | raptor | night |
| 06:19:20 | | zoomber_mbp Quit (Quit: zoomber_mbp) |
| 06:31:06 | karamazovapy | oh yeah - the heat seeker prototype |
| 06:31:15 | karamazovapy | I remember that |
| 06:32:47 | raptor | think that will make a good weapon? |
| 06:34:31 | karamazovapy | I don't know that we need more weapons or modules |
| 06:34:48 | karamazovapy | I suppose I could see it replacing bouncer |
| 06:35:15 | raptor | bouncer is probably the least popular |
| 06:35:30 | raptor | i try to use it often just to throw some variety in... |
| 06:35:53 | karamazovapy | it has its uses, but the cost and risk is too high for the value |
| 06:36:15 | raptor | do you think removal/replacement/refinement is in order? |
| 06:36:32 | | BFLogBot - Commit 274ec8e604cd | Author: buckyballreaction | Log: Minor clarification |
| 06:36:34 | | BFLogBot - Commit 827e2075b61f | Author: buckyballreaction | Log: Reduce double-click time-out slightly |
| 06:36:35 | | BFLogBot - Commit f28c1f26d347 | Author: buckyballreaction | Log: Better handling of module kinetic components with double tapping |
| 06:37:00 | karamazovapy | well...the current value is that the particles bounce and have a slightly greater range than phaser |
| 06:37:19 | karamazovapy | the costs are that you can kill yourself, it's hard to use effectively, it costs more than phaser, and it does less damage |
| 06:38:37 | karamazovapy | we need to either lower the costs or raise the value...or replace the whole thing |
| 06:38:42 | karamazovapy | maybe some of each |
| 06:38:50 | raptor | i agree |
| 06:39:17 | raptor | maybe less energy cost and less damage to self |
| 06:39:42 | raptor | i use them a lot when chasing someone around a Core |
| 06:40:12 | karamazovapy | I never bother to equip them, just because I want a no-cost weapon, I want bursts, and mines are kind of nice to have for special occasions |
| 06:41:03 | raptor | i never use mines... |
| 06:41:26 | raptor | i should |
| 06:41:42 | karamazovapy | they're a good way to keep people honest |
| 06:41:56 | karamazovapy | and they can be a real asset to defense |
| 07:03:10 | raptor | i'm not sure how i feel about about the new cores either... |
| 07:04:58 | raptor | ok good night |
| 07:05:15 | | raptor Quit () |
| 07:06:40 | | BFLogBot - Commit 470ad3990f0f | Author: buckyballreaction | Log: Fix compiler warnings and tidy code some |
| 08:55:32 | | watusimoto has joined |
| 08:55:33 | | ChanServ sets mode +o watusimoto |
| 12:16:19 | | LordDVG has joined |
| 12:51:24 | | Watusimoto_ has joined |
| 13:35:00 | | watusimoto Quit (Ping timeout: 272 seconds) |
| 13:36:22 | | Watusimoto_ Quit (Ping timeout: 245 seconds) |
| 13:53:27 | | watusimoto has joined |
| 13:53:27 | | ChanServ sets mode +o watusimoto |
| 15:13:41 | | LordDVG Quit (Remote host closed the connection) |
| 15:43:33 | | Watusimoto_ has joined |
| 16:18:24 | | raptor has joined |
| 16:18:24 | | ChanServ sets mode +o raptor |
| 16:18:40 | raptor | good day! |
| 16:27:03 | watusimoto | heyo |
| 16:27:08 | raptor | hi |
| 16:36:05 | raptor | still thinking about releasing this week? |
| 17:02:27 | | Watusimoto_ Quit (Ping timeout: 260 seconds) |
| 17:20:28 | | watusimoto Quit (Ping timeout: 272 seconds) |
| 17:43:01 | | LordDVG has joined |
| 21:33:33 | | sam686 has joined |
| 21:33:33 | | ChanServ sets mode +v sam686 |
| 21:50:16 | | Watusimoto has joined |
| 21:52:58 | Watusimoto | hi |
| 21:55:37 | Watusimoto | to answer your question from earlier, I don't think we can get the release out this week -- if we do it, it will have to be tomorrow, and we still have several outstanding things to do |
| 21:56:42 | Watusimoto | I'll be leaving here early on Saturday, with a 9+ hour drive, so I'll be going to be early on Friday. |
| 21:56:57 | Watusimoto | and I have my German class tomorrow |
| 21:57:13 | Watusimoto | so I just don;t think we'll be ready |
| 22:09:03 | raptor | ok |
| 22:09:05 | raptor | no problem |
| 22:09:10 | raptor | we can take it easy |
| 22:09:19 | raptor | everything seems easy compared to releasing 016 |
| 22:11:48 | Watusimoto | yes |
| 22:11:53 | Watusimoto | we'll do it when I get back |
| 22:12:28 | Watusimoto | unless you and sam want to do it while I'm gone... |
| 22:12:58 | raptor | nah |
| 22:13:02 | raptor | i'm in no hurry |
| 22:13:15 | raptor | got plenty of things to do also - like prepare my den for the pinewood derby |
| 22:17:21 | | LordDVG Quit (Remote host closed the connection) |
| 22:18:20 | Watusimoto | pinewood derby |
| 22:18:30 | Watusimoto | well, that brings back some memories |
| 22:18:57 | raptor | i remember one kid attached an elastic-wound propeller |
| 22:19:26 | raptor | i think i remember another making theirs into a model boat |
| 22:19:55 | Watusimoto | a bunch of posers; if they were true scouts, they'd set their car on fire |
| 22:20:34 | raptor | hahaha |
| 22:21:03 | Watusimoto | you know I'm right |
| 22:21:09 | raptor | CUB scouts... they're still somewhat innocent |
| 22:21:37 | Watusimoto | mmmm.... maybe.... I think they're all bad |
| 22:22:09 | raptor | i have 8 + 9 year olds... i guess that's about the age where if you've failed to raise them OK they stay jaded... |
| 22:23:12 | | BFLogBot - Commit 049ae5dbd29e | Author: watusim...@bitfighter.org | Log: Formatting |
| 22:23:14 | | BFLogBot - Commit e6c1949cd988 | Author: watusim...@bitfighter.org | Log: Formatting |
| 22:23:15 | | BFLogBot - Commit 903781e1327b | Author: watusim...@bitfighter.org | Log: Merge |
| 22:24:04 | Watusimoto | so when someone acheives an acheivement, what do we want to record. the achievement, obviously, probably the date... how about server particulars? |
| 22:29:14 | raptor | describe 'server particulars' |
| 22:29:21 | raptor | like what server+level they were on? |
| 22:29:28 | raptor | we save server data |
| 22:29:51 | raptor | we could tie it to the exact game in stats_game |
| 22:29:59 | raptor | which has the date |
| 22:35:01 | | awright has joined |
| 22:35:16 | | awright Quit (Client Quit) |
| 22:35:50 | Watusimoto | that's a thought |
| 22:36:18 | Watusimoto | particulars were perhaps server name and ip |
| 22:36:31 | raptor | stats_game also points to server data |
| 22:36:31 | Watusimoto | we haev no means of verifying servers the way we do players |
| 22:36:56 | raptor | that brings up an interesting idea: server authentication? |
| 22:37:10 | raptor | for 'official' or well-known servers? |
| 22:37:28 | raptor | we could require people play on authenticated servers |
| 22:39:20 | Watusimoto | we don't want to do that |
| 22:39:29 | raptor | sorry |
| 22:39:34 | raptor | i mean require achievements |
| 22:39:38 | raptor | on authenticated servers |
| 22:39:55 | raptor | yes, we don't ever want to limit servers |
| 22:40:49 | Watusimoto | I don't know... I'm feeling the tension between the authoratarian view of lock it down to prevent cheating and the libertarian view |
| 22:41:07 | raptor | yep |
| 22:41:20 | Watusimoto | it's clear that on some levels, it will be easier to earch achievemtns than others |
| 22:41:31 | Watusimoto | can you upload levels to sam's server? |
| 22:41:33 | raptor | but would there still be a use for server authentication? |
| 22:41:37 | raptor | yes |
| 22:41:42 | raptor | sam has his completely open |
| 22:41:45 | Watusimoto | then it hardly matters |
| 22:42:04 | Watusimoto | because if you wanted to game the system, you would just upload your cheater level to his server, and get your acheivement |
| 22:42:27 | raptor | except we were going to require 3 or more players, 2 of which must be authenticated, right? |
| 22:42:39 | Watusimoto | so I guess we do want to know which level people earned their achievemtn on |
| 22:42:41 | Watusimoto | yes |
| 22:42:50 | raptor | the level is saved in stats_game |
| 22:42:58 | Watusimoto | I think it was 4/2 (4 humans, 2 registered) |
| 22:43:10 | Watusimoto | also, we haev no way to authenticate levels |
| 22:43:11 | raptor | ah yes |
| 22:43:28 | Watusimoto | I could create a cheater level with the same name as a well known level |
| 22:43:54 | Watusimoto | upload it to sam;s server... there would be no way to check anything |
| 22:43:55 | raptor | yep |
| 22:44:07 | raptor | unless we hashed the levels... |
| 22:44:12 | raptor | bah, too much work |
| 22:44:14 | Watusimoto | yes, I've considered that |
| 22:44:25 | Watusimoto | not at all -- we already do that |
| 22:44:36 | raptor | we could have a level_hash table |
| 22:44:42 | raptor | id, level_name, hash |
| 22:44:45 | Watusimoto | we don't do anything with the hash anymore |
| 22:44:51 | Watusimoto | but we could easily store it |
| 22:45:15 | raptor | then point stats_game to the level id instead |
| 22:45:23 | Watusimoto | but the downside is that if you make a tiny tweak to a level, even changing the credits line, the hash changes |
| 22:45:58 | Watusimoto | so it is hard to verify the hash |
| 22:46:31 | Watusimoto | though we could easily start saving them on the stats server |
| 22:46:35 | raptor | level files are generally small - we could even store them in the database |
| 22:47:28 | Watusimoto | mLevelFileHash = md5.getHashFromFile(filename); |
| 22:47:40 | raptor | but anyways - i think the 4/2 rule is probably good enough |
| 22:47:42 | sam686 | hash was used before, for catched bot zone system (but, often can not catched levelgen bot zones) |
| 22:47:45 | Watusimoto | done in ServerGame::loadLevel |
| 22:48:04 | raptor | i was never thinking the level would be used for achievement verification |
| 22:48:08 | Watusimoto | I don't think we use it for anything now, but it is calculated |
| 22:48:13 | sam686 | which leads to another file to hash together - level and levelgen |
| 22:48:33 | Watusimoto | that's a good point |
| 22:48:54 | Watusimoto | and even then, the levels generated could be totally random; some easier than others |
| 22:49:15 | Watusimoto | so |
| 22:49:33 | Watusimoto | what we're left with is the simple fact that cheating will be easy |
| 22:49:46 | Watusimoto | well, easy enough to do if you want to |
| 22:49:47 | raptor | unless |
| 22:49:48 | sam686 | so what, levelgen is not meant to be exactly the same over and over again.. |
| 22:49:56 | raptor | we have achievement review :) |
| 22:50:07 | Watusimoto | submit a video? |
| 22:50:20 | Watusimoto | sam -- of course |
| 22:51:06 | raptor | well, we are the all-powerful overlords of the system - if something seems fishy, we fix it and remove the achievement |
| 22:51:13 | Watusimoto | I was just trying to walk through the possibilities to reduce cheating, and every strategy I could come up with was failry easily gamed |
| 22:51:18 | Watusimoto | yes |
| 22:51:41 | raptor | since we're open source we have to rely on the honor system a lot more.. |
| 22:52:46 | sam686 | a hacked server could send fake hash, but they can easily be ignored by ip address (hacked client can't make a seperate dedicated server send fake hash or any fake stats to master) |
| 22:52:54 | Watusimoto | and we are aided by the fact that 1) most players are honest and respect the game, 2) the rewards for achievements are mainly social, and 3) players inclined to cheat will probably brag about it, undermining their benefits and 4) most of our players will probably not be technically inclined to do so |
| 22:53:27 | Watusimoto | the problem with hashes is its unclear what they really mean given that they will change over time |
| 22:53:32 | raptor | so... we should just worry less, then |
| 22:53:49 | Watusimoto | if a level gets even a trivial tweak, it's hash will change, and there will be no way to link it to an earlier version |
| 22:54:12 | Watusimoto | raptor: that's where I always end up when I walk myself through this |
| 22:54:17 | sam686 | there might be a way to link - level name |
| 22:54:36 | raptor | we seem to walk ourselves a lot through these subjects... |
| 22:54:37 | Watusimoto | but there is no way to distinguish your level called "L1" from mine |
| 22:55:06 | Watusimoto | and if raptor tweaks your L1, just a tiny bit, it will have a new hash |
| 22:55:23 | Watusimoto | and if he tweaks it a lot, making it essentially a new level, it will also have a new hash |
| 22:55:40 | Watusimoto | and we have no way of knowing if a tweak was minor or major |
| 22:55:47 | sam686 | maybe the level itself can hold all the hashes that was previously used as hash |
| 22:55:49 | Watusimoto | and it just gets to be a confusing mess |
| 22:56:08 | sam686 | edit it, old hash get save to level itself, and a new hash appears |
| 22:56:17 | sam686 | then, it is possible to link them |
| 22:56:37 | Watusimoto | the problem we are trying to sort out is how do we discourage people from creating fake levels that make it easy to get achievements |
| 22:56:54 | Watusimoto | that's probably the easiest way to cheat the system, if that could really be considered cheating |
| 22:57:05 | Watusimoto | and I conclude we can't |
| 22:57:34 | Watusimoto | the cure may be worse than the disease |
| 22:57:38 | raptor | I conclude that we start small and slowly revise |
| 22:57:40 | sam686 | i think we only need hashes - if it is edited, it is the cheater's fault trying to cheat |
| 22:58:05 | Watusimoto | right, but the hashes alone don't tell us if someone is cheating |
| 22:58:59 | Watusimoto | they can only be used to verify one level matches another, perhaps a reference copy |
| 22:59:15 | Watusimoto | so they might be useful if an achievemnt were tied to a particular level |
| 22:59:57 | Watusimoto | but in the case of an acheivement like "collect 20 flags and return to the nexus", they don't really help |
| 23:00:10 | Watusimoto | and I think that will be our first achievement |
| 23:00:22 | sam686 | there can be other checks in the server that can be added to detect improper gameplay like just suiciding too many times in nexus |
| 23:01:47 | Watusimoto | the fuller description of the acheivement is "return 20 flags to nexus on a level with no flag spawns and no predeployed flags while playing with at least 1 other registered player and with a total of at least 3 other human players |
| 23:01:50 | Watusimoto | " |
| 23:02:21 | Watusimoto | we could, I suppose add "in a game where there are fewer than 10 suicides" |
| 23:03:30 | Watusimoto | the predeployed flags thing is to avoid making the achiemvemtn trivial on that pacman level |
| 23:04:11 | Watusimoto | does 20 sound like the right number? |
| 23:06:06 | raptor | i think we need more data than anything |
| 23:06:21 | raptor | then we can de-normalize it to our hearts content... |
| 23:13:58 | Watusimoto | more stats data> |
| 23:14:01 | Watusimoto | ? |
| 23:14:27 | raptor | ues |
| 23:14:29 | raptor | yes |
| 23:14:32 | Watusimoto | to be clear on what I'm doing |
| 23:14:36 | raptor | more data! |
| 23:14:41 | raptor | baby steps |
| 23:14:46 | Watusimoto | I'm creating the folloiwng server2master protocol |
| 23:14:48 | Watusimoto | TNL_IMPLEMENT_RPC(MasterServerInterface, s2mAcheivementAchieved, |
| 23:14:48 | Watusimoto | (U8 achievementId, StringTableEntry playerNick) |
| 23:15:02 | Watusimoto | so achievement will not be based on stats per se |
| 23:15:08 | raptor | oh really? |
| 23:15:16 | raptor | hmmm... hadn't thought about that.. |
| 23:15:21 | Watusimoto | the logic of achievement will be built into the server |
| 23:15:29 | Watusimoto | I think stats will only get us so far |
| 23:15:47 | Watusimoto | "kill 5 players with burst" is hard to track from stats alone |
| 23:16:04 | raptor | well, stats could get us all the way depending on how much we really want to track and send |
| 23:16:39 | Watusimoto | yes, we could track who was killed and injured with each shot |
| 23:16:39 | raptor | like we could send killer, and killer_weapon |
| 23:16:54 | Watusimoto | yes |
| 23:16:58 | raptor | hmmm... so completing the achievement on the server... |
| 23:17:08 | Watusimoto | but even tracking every death would be a lot of stats |
| 23:17:25 | Watusimoto | we could certainly do it |
| 23:17:31 | Watusimoto | and maybe we should |
| 23:17:39 | raptor | oh yes, that's why its all done in one big clump at the end |
| 23:17:51 | Watusimoto | but we'd also be tracking every nexus flag regurn |
| 23:18:36 | Watusimoto | every scoring event (potentially) |
| 23:19:36 | Watusimoto | ugh. the more I think about this, the more I dislike achievements |
| 23:19:50 | raptor | yep |
| 23:20:00 | raptor | that's what is needed with achievements |
| 23:22:04 | raptor | i was thinking easier achievements based on stats we already have, then we can incrementally add more stats |
| 23:22:11 | raptor | then more achievements |
| 23:23:52 | Watusimoto | the sheer bulk of stats we'd need to track to do anytning interesting would be... too much |
| 23:24:06 | raptor | when you look at the end goal, yes |
| 23:24:25 | Watusimoto | i think stats are good for establishing a leaderboard of good players, but not for tracking everything that might be linked to an achievement |
| 23:24:38 | raptor | right now we track player shots |
| 23:24:51 | Watusimoto | also potentially good for seeing if module use is at all balanced |
| 23:25:17 | Watusimoto | yes we do. I forget why we do, but I know that was part of the original design |
| 23:25:28 | raptor | it was so we could do crazy stats |
| 23:25:40 | Watusimoto | I think I wanted to see how people were using their weapons |
| 23:25:50 | Watusimoto | and crazy stats; that was probably it |
| 23:25:59 | Watusimoto | most trigger happy, etc. |
| 23:26:31 | raptor | for instance, i did the followin in BBB 3: http://bitfighter.org/forums/styles/ca_black/imageset/icon_post_target.gif |
| 23:26:34 | raptor | oops |
| 23:26:36 | raptor | wrong link |
| 23:26:39 | Watusimoto | but that sort of measurement is fundamentally different than checking to see if you;ve accomplished a given feat |
| 23:26:42 | raptor | http://bitfighter.org/forums/viewtopic.php?p=3820#p3820 |
| 23:27:23 | Watusimoto | 46,000 shots?!? |
| 23:27:29 | raptor | haha, yeah |
| 23:27:49 | raptor | i may even have those queries lying around somewhere.. |
| 23:28:23 | Watusimoto | we should run those after every bbb |
| 23:28:30 | Watusimoto | but that's where stats are great |
| 23:28:42 | raptor | that was just what i came up with at midnight after a BBB once |
| 23:28:46 | raptor | based on what we have |
| 23:29:14 | Watusimoto | if we wanted to base my current proposed achievement on stats, we'd need to track whether level has flag spawns or pre-positioned flags |
| 23:29:16 | raptor | i had grandiose plans of building it into php with a nice table to be auto generated for each BBB |
| 23:29:27 | Watusimoto | and we really don't care about that for anything other than this particular acheievement |
| 23:30:00 | Watusimoto | so we'd need to creaet a level-info table with all sorts of crazy stuff in it |
| 23:30:06 | raptor | we have stats_game |
| 23:30:08 | Watusimoto | that would probably only be used once, for one purpose |
| 23:30:16 | raptor | that is essentially one row per game |
| 23:30:31 | raptor | not essentially, it's its definition |
| 23:30:39 | raptor | we could just extend it with more data |
| 23:31:01 | Watusimoto | well, wouldn't you want to denormalize and store per-level stats differently than per-game? |
| 23:31:12 | Watusimoto | could play 2 games on the same level |
| 23:31:21 | Watusimoto | for example |
| 23:31:31 | raptor | ah... then we come to the problem with level uniqueness |
| 23:31:37 | Watusimoto | hash |
| 23:31:39 | raptor | we only have level_name |
| 23:32:04 | raptor | i honestly never thought of doing stats or achievements based on level |
| 23:32:05 | Watusimoto | now, we could make an argument for collecting some level-specific stats, though not sure what it would be |
| 23:32:14 | raptor | because they're so volatile |
| 23:32:31 | Watusimoto | right; I'm not proposing stats based on a specific level, but rather on a level with certain restrictions |
| 23:32:38 | Watusimoto | to avoid making it trivially easy |
| 23:32:58 | raptor | ah, i see |
| 23:33:00 | Watusimoto | that pacman level would make it so easy to achieve any nexus-related achievement |
| 23:33:29 | Watusimoto | so do we really want to track all kinds of detailed stats about each level played just for this purpose? |
| 23:33:31 | raptor | so to normalize, i would use id, hash, levelname, + other level info |
| 23:33:43 | Watusimoto | yes |
| 23:33:46 | raptor | then point each stats_game to the id with the correct hash |
| 23:33:52 | Watusimoto | yes |
| 23:34:12 | Watusimoto | or even make hash the key |
| 23:34:12 | sam686 | anything with "level specific" could benefit with hash to prevent same name different level problem |
| 23:34:22 | Watusimoto | yes |
| 23:34:42 | Watusimoto | but if there is no other purpose than the awarding of achievements, why bother? |
| 23:34:58 | Watusimoto | why not just code the logic into the server, and have the server grant the award? |
| 23:35:22 | Watusimoto | plus, we probably want some sort of in-game notice "Watusimoto has just been granted the awesomest player ever achievement!" |
| 23:35:47 | Watusimoto | that's harder to do if the master is involved |
| 23:35:59 | raptor | would we not want some persistence with the data for achievements? |
| 23:36:09 | raptor | or only the achievement itself? |
| 23:36:23 | Watusimoto | well, to what end? |
| 23:36:50 | Watusimoto | if we save the stats-game-id with the achievement, that will give us most of what we might want |
| 23:37:00 | Watusimoto | it will tell us where and when |
| 23:37:09 | Watusimoto | and level name |
| 23:37:15 | Watusimoto | and who was playing |
| 23:37:42 | raptor | i guess that's true |
| 23:37:46 | Watusimoto | but I do think we should start tracking some stats about leels |
| 23:37:57 | Watusimoto | might be interesting to see what the most played levels are |
| 23:38:05 | Watusimoto | who the most played authors are |
| 23:38:10 | raptor | yes, i think so, too |
| 23:38:13 | Watusimoto | what gametypes aer most popular |
| 23:38:20 | Watusimoto | that;s the stuff stats are good for |
| 23:39:06 | raptor | yes, ok you've convinced me - i agree with your protocol now |
| 23:39:08 | Watusimoto | less good for knowing if sam returned 20 flags in a game with all the criterial outlined above |
| 23:39:10 | Watusimoto | :-) |
| 23:39:16 | raptor | however, i sugges we enter in a date with it |
| 23:39:16 | Watusimoto | wore you down, did I? |
| 23:39:29 | Watusimoto | won't we have that from the link to stats-game? |
| 23:41:18 | raptor | oh yeah, duh |
| 23:41:22 | raptor | i even suggested that |
| 23:41:31 | raptor | i must be thinking about too many things at once |
| 23:44:34 | Watusimoto | indeed |
| 23:45:10 | raptor | well, i think we can trust sam686 and karamazovapy to not put up hacked servers (at least as far as achievements go...) |
| 23:45:13 | raptor | :) |
| 23:45:49 | Watusimoto | one other thing; I just posted the idea of this first achievement, and it ocurred ot me that if we have a few-suicides clause, it would really only matter if the suicides happen before the achievement is awarded. Tracking when suicides occur in a game would be much more complex using a purely stats-based system |
| 23:46:46 | Watusimoto | and think of the query needed to figure out if a player had 5 or more suicides in a game before the achievement was awareded! |
| 23:47:58 | Watusimoto | in an only tangentially related thread, we should start collecting stats on levels played beyond their name: name, (reported) creator, hash, gametype, hasLevelGen, what else? |
| 23:48:35 | raptor | hmmm |
| 23:48:46 | Watusimoto | winning score, game duration |
| 23:48:56 | raptor | winning score is often changed |
| 23:48:59 | raptor | and duration |
| 23:49:02 | Watusimoto | that breaks the hash |
| 23:49:14 | raptor | i mean in-game |
| 23:49:17 | Watusimoto | ah yes |
| 23:49:23 | sam686 | it doesn't break the hash if using /setscore /settime /add |
| 23:49:24 | raptor | /setscore /settime |
| 23:49:37 | Watusimoto | but the idea being to get a better handle on what the universe of levels looks like |
| 23:49:48 | Watusimoto | well, actually, we can just look at sam;s server :-) |
| 23:50:02 | Watusimoto | sam, how many levels does your server have, do you think? |
| 23:50:24 | Watusimoto | I guess the idea of the stats would be to see what levels aer most played |
| 23:50:30 | Watusimoto | and who created them |
| 23:50:40 | raptor | also, i'd say only 80% of the levels have an author... |
| 23:50:50 | Watusimoto | well, nothing to do about that |
| 23:51:00 | raptor | i think karamazovapy regularly releases maps without author |
| 23:51:30 | sam686 | http://sam686.maxhushahn.com/bitfighter/levels/ lots of levels, thats for sure.. |
| 23:51:59 | Watusimoto | a lot yes, but many fewer than I thought |
| 23:52:17 | raptor | sam686 did some spring cleaning back in the fall, i think |
| 23:52:22 | Watusimoto | but we could easily have a spot on the forums: "This week's most popular level: XXX" |
| 23:52:36 | raptor | ah, the REMOVED directory has about the same and more again |
| 23:53:10 | Watusimoto | along with our "This week's most prolific player : YYY" that we never did |
| 23:53:28 | raptor | did we ever define 'prolific'? |
| 23:53:31 | Watusimoto | also, with these stats, we could start doing level ratings |
| 23:53:49 | Watusimoto | prolific = could mean just most games played |
| 23:54:06 | raptor | oh... |
| 23:54:07 | Watusimoto | winningest = most "stats-worthy" games won |
| 23:54:12 | Watusimoto | I think |
| 23:54:25 | raptor | we send stats when a level change is requested an there is more than one player |
| 23:54:39 | raptor | that may clutter up results significantly |
| 23:54:42 | Watusimoto | I wonder wnat % of games are stats-worthy under our new def? |
| 23:55:09 | Watusimoto | hmmm.... do we report games that are terminated by level change? |
| 23:55:14 | raptor | yes |
| 23:55:20 | Watusimoto | maybe we shouldn't |
| 23:55:24 | raptor | but only if there is more than on player |
| 23:55:25 | sam686 | vote to change levels save stats, as it ends the existing game normally |
| 23:55:32 | raptor | ^^ yes that |
| 23:55:37 | Watusimoto | ok |
| 23:55:50 | raptor | i remember discussing this with sam686 a long time ago, but i don't remember our conclusion |
| 23:55:52 | Watusimoto | well, then that's our definition |
| 23:56:02 | Watusimoto | so those games aren't clutter |
| 23:56:12 | Watusimoto | we've determined they are as legit as any other |
| 23:56:20 | raptor | sam686: vote is required to send stats? |
| 23:56:25 | Watusimoto | decided, not determined |
| 23:56:42 | sam686 | yes, changing level without admin won't save stats, currently |
| 23:56:56 | sam686 | i mean changing level without vote won't change levels |
| 23:57:02 | sam686 | won't save stats |
| 23:57:07 | raptor | ok |
| 23:57:22 | Watusimoto | so if admin changes level, no stats? |
| 23:57:37 | sam686 | if level changes immediately when a person changes, stats don't save |
| 23:57:57 | sam686 | admin changes level - stats don't save as it switch level immediately |
| 23:58:12 | raptor | so no change level commands by anyone will send stats - unless it is done by vote beforehand |
| 23:58:13 | Watusimoto | raptor: how easy would it be to query games with min 4 players, 2 of whom are registered? |
| 23:58:20 | Watusimoto | ok |
| 23:58:21 | raptor | easy |
| 23:58:27 | raptor | we have all the data already |
| 23:58:36 | Watusimoto | do we? I think we do |
| 23:58:45 | Watusimoto | we know who's playing each game |
| 23:58:51 | karamazovapy | I think we have a small subset of players who will do everything they can to cheat, particularly if they get any kind of recognition |
| 23:58:54 | Watusimoto | I think we know if thye are authenticated |
| 23:59:02 | raptor | yep |
| 23:59:06 | raptor | so we can get the data |
| 23:59:16 | Watusimoto | karamazovapy: but if they are caught, they'll be shunned by those who's adoration they most crave |
| 23:59:16 | karamazovapy | but that goes for most played maps, most prolific player, and all achievements |
| 23:59:25 | karamazovapy | that won't matter |
| 23:59:31 | raptor | wow, stats_player already has 111399 rows |
| 23:59:38 | Watusimoto | wow |
| 23:59:52 | Watusimoto | well, as disucssed earlier, we can;t really prevent cheating |
| 23:59:58 | karamazovapy | the younger players don't think about things like getting shunned in the eventuality that they get caught |