#bitfighter IRC Log

Index Search ←Prev date Next date→

IRC Log for 2013-11-26

Timestamps are in GMT/BST.

00:01:26BFLogBot Commit: 7e2be134bd97 | Author: kaen | Message: working updated sandbox
00:03:37raptorYES
00:06:44Skybax has joined
00:10:54thread_raptor: has there been a change to how ship:setEnergy() works? things seem to be different
00:11:39raptorthat is a broad question - but I haven't changed anything...
00:12:04watusimotoI need to get to bed... looks like I'll have at least some connectivity tomorrow... hasta manana
00:14:19raptornight
00:14:38thread_It appears to be a bug when you call setEnergy on a ship when they have just spawned and still have their invulnerability state.
00:15:00thread_I think that's what is going on...
00:15:17raptorwhat happens with the bug?
00:16:11thread_If I trigger the bug, it seems like I can't set energy for any other values other than the starting value, even after they loose invulnerability...
00:17:12thread_wait no...
00:17:44sam686Lua NIL (C++ NULL) ship?
00:18:34thread_it works again once I get energy below the line (where modules cant be activated)
00:19:13thread_----This is a really weird bug----
00:19:26kaenthere might be some logic behind setEnergy that's failing
00:19:41kaennot all get/sets are trivial reads and writes
00:20:03thread_I can send you the levelgen that's causing this if you want
00:20:12kaenok sounds good
00:20:24sam686or it could be a bug with client/server energy level mismatch
00:20:30kaen^ I'm thinking this
00:20:58thread_http://pastie.org/8508599
00:21:13thread_bug dissappears if you comment out line 280
00:21:39thread_(thats where I call the function when a player spawns)
00:22:42sam686if you hold down the shield button and your shield repeatedly blinks, than thats a server/client energy level mismatch.
00:22:54thread_ok, yes that is happening too
00:23:16thread_but like I said, it seems to fix itself once the energy goes to 0
00:23:50kaensam686, are you looking at this bug? I'm still writing tests for the lua environment
00:25:10sam686I will look at it after a few minutes...
00:30:41Little_Apple has joined
00:32:58kaenI need a break @_@ anyone want to play?
00:43:13thread_I wish I did
00:43:18thread_*had time to I mean
00:45:23sam686im making a somewhat a big, mostly GameType, commit, this time I tested a lot more things to make sure my changes doen't break anything with my new GameType timing system..
00:45:35BFLogBot Commit: b01acf4b7ea2 | Author: sam8641 | Message: Changes to timing system in GameType, sync more accurately using packUpdate, Nexus timing is now MilliSeconds. Cleanup some unused code.
00:45:37BFLogBot Commit: 5f2327337861 | Author: sam8641 | Message: SpeedZone no longer constantly send data on rotating SpeedZone.
00:47:56sam686It always used to bother me when the core just unpredictly rotates 180 degrees when changing time limit, or nexus timing goes 1 second faster the moment time limit changes. That should not happen after my latest commit
00:50:35thread_headed out. cia guys!
00:50:53Little_Applebye!
00:51:10thread_ has left #bitfighter
00:56:54watusimoto Quit (Quit: Leaving.)
01:14:01Platskies has joined
01:14:04raptorkaen: did the sandbox.lua actually make it into the repo?
01:17:16HylianSavior Quit (Quit: Leaving)
01:18:56raptorFor all OSX beta testers: http://sam6.25u.com/upload/Bitfighter-019-beta-OSX-64bit-8687-5f2327337861.zip
01:19:02raptorthis means you Little_Apple
01:21:42Little_Applegot it!
01:21:58raptorplease test your joystick with that
01:25:34Little_Appleis the second row supposed to be there?
01:27:37raptorwhere?
01:28:15HylianSavior has joined
01:28:26Little_Applehttp://i.imgur.com/dRMQ5vx.png
01:28:32raptoryeak kaen the sandbox.lua script is missing
01:28:36raptor*yeah
01:28:55raptorLittle_Apple: that;s part of the debug build
01:29:00raptorso ignore it
01:29:00Little_Applekk
01:29:05Little_Appleit works then!
01:29:13raptorexcellent
01:29:23raptorso no changes to your profile?
01:29:25Little_Applei can send another pastie
01:29:32raptorok
01:30:28Little_Applehttp://pastie.org/8508697
01:30:42Little_Applethat should be good
01:34:23BFLogBot Commit: 844f3ee19ad3 | Author: buckyballreaction | Message: Add new joystick profile 'Gigaware USB Wired Controller'. Built on OSX. Thanks Little_Apple!
01:34:45Little_Appleaw yea!
01:39:26raptorsam686: give me an overview of the new game timer - it looks like you converted the entire class GameTimer to be a couple of U32
01:39:48sam686only 2 U32 used now
01:39:53sam686for timing
01:39:54raptorI remember watusimoto working a lot on that thing, especially with making sure Nexus works with all the cases...
01:40:04raptorand how does it end up being more accurate?
01:40:15raptorconstant counter instead of wrapping around?
01:40:17sam686but there was already one U32 timer, used for game reports, timer of game played
01:41:59sam686mTotalGamePlay, that existed all the way back to 018 maybe before, that only counts up game played, starting 0 from level change/ new level
01:42:18sam686mTotalGamePlay was a great place to sync to clients for global timing
01:43:01sam686mEndingGamePlay is game over when basically mTotalGamePlay >= mEndingGamePlay, unless mEndingGamePlay==0 thats unlimited time limit
01:43:49raptordo you changes handle the unlimited cases, including with respect to Nexus game type?
01:44:00raptorahh
01:44:16sam686It got tricky when it comes to Nexus, where before my today's commits, changing time limit causes nexus timing to skip or go fast for only one second
01:44:51sam686now, in nexus and CoreItem, changing time limit have totally no effect on timing on those..
01:46:27sam686it just became a bigger problem when I was changing speedZone rotation to no longer constatly send data and instead use gametype game played timer.
01:46:27raptorhow often does game time sync?
01:46:27raptorah
01:46:55sam686Whatever mGameTimeUpdateTimer is, that how often it sync, maybe every 30 second
01:47:03raptorok, so youddint' change that
01:47:41Little_Apple Quit (Ping timeout: 250 seconds)
01:47:42sam686packUpdate is now used for syncing, because it doesn't matter how delayed packUpdate runs, it even runs packUpdate again in case of dropped packet.
01:47:45kaenoops sorry!
01:47:56sam686with updated timing of cource
01:48:20raptordoes that add much network overhead? how often does packUpdate occur here?
01:49:01BFLogBot Commit: 1b0cedde8020 | Author: kaen | Message: add sandbox.lua
01:49:02sam686RPC events, and packUpdate have just about equal overhead.
01:49:58sam686the difference is how it handles dropped packet, RPC events retransmit a bit outdated information, but packUpdate runs again with the added mask with updated information.
01:50:50raptori thought packUpdate can happen several times a second
01:50:52sam686you won't want to send slightly outdated information like ship Position would you?
01:51:09raptorso i'm worried that in GameType it'll add significant overhead...
01:51:11sam686yes, except when there is no changes to it. like LineItem
01:51:47sam686send events multiple times, it has to send it all.
01:51:53raptorbecause I don't see any UPdateMask things for GameType...
01:52:03raptorso I don't know how it'll behave
01:52:18sam686use setMaskBits multiple times, it may only need to run packUpdate only once or twice per client.
01:52:40sam686GameType is ghosted like any other objects, and the first to be ghosted.
01:52:59sam686was like that pretty mych all the way back before 015 too.
01:54:06sam686it works just fine, go ahead and put a logprintf in packUpdate if you want to test it..
01:54:15raptorok yes
01:54:24raptorwill it send pack Update again at end of game?
01:55:02Skybax Quit (Ping timeout: 265 seconds)
01:55:04sam686it automatically sends packUpdate as mask 0xFFFFFFFF for any new objects created, like Ship, GameType, and other objects
01:55:27sam686it doesn't actually send the mask through the network, remember that..
01:55:46raptoryes
01:57:02sam686and on 015 and earliear, GameType was also in a gridDatabase (dumb) at position (0,0) causing levels to be centered incorrectly for levels that is away from (0,0)
01:57:49kaenI'm getting linker errors sam686
01:57:53kaenCMakeFiles/bitfighter.dir/CoreGame.cpp.o:(.rodata._ZTVN3Zap12CoreGameTypeE[_ZTVN3Zap12CoreGameTypeE]+0x138): undefined reference to `Zap::GameType::s2cSetNewTimeRemaining_remote(unsigned int, bool, int)'
01:58:02kaenetc.
01:58:13kaenI'll clean and try again though
01:58:27kaenalso I'm kind of concerned about adding packUpdate to gametype, too
01:58:37sam686s2cSetNewTimeRemaining is there on gameType.cpp line 2416
01:59:09kaenghostConnection.cpp:358 is where the updates get packed it seems
01:59:21kaenand I don't see it bailing in that loop, regardless of maskbits
01:59:28sam686one advantage of packUpdate is, being able to send the most up to date information, it matters for syncing the timing.
02:00:12kaencertainly
02:00:49kaenbut can you turn on UDP and ghostConnection logging and verify that the packupdate only happens once or twice?
02:00:56kaenI have two major concerns with this:
02:00:59kaen1. bandwidth
02:01:04kaen2. subtle bugs
02:01:28kaenit looks correct, but if you missed a * 1000 somewhere I'd hate to ship an avoidable core bug
02:02:13sam686RPC events can get delayed and delayed from dropped packets and resending guaranteed events with outdated information... so the event bandwidth would be maybe more then packUpdate, now that we have so many events now.
02:03:24kaenwell packupdates can get delayed themselves. there's no guarantee that transmission is timely either way :)
02:04:02sam686if a packUpdate get dropped, it runs packUpdate again for updated information
02:04:26kaenright, but what I'm saying is you can have *latency* either way
02:04:27sam686same goes with Ship ResourceItem and pretty much all other objects
02:05:08kaenwhich is the main factor in timer synchronization
02:05:10sam686latency is one problem, that I guess can't entirely be solved, espically with jitter.
02:05:36kaenright, so that means that the deciding factor should be bandwidth (whether to use an RPC or packupdate)
02:05:57kaensince you can use a guaranteed and ordered RPC just as well as a packupdate
02:06:36kaenso it's really important to know how often it is packupdate()ing
02:06:45sam686A bunch of other guarenteed events running first can delay other guaranteed events.
02:07:21kaenbut there's no guarantee that a packupdate will always arrive on time either
02:07:22sam686but packUpdate only runs when TNL is ready to send that information. (setMask won't immediately run packUpdate)
02:07:52kaenso I'm saying you can potentially get a delay either way
02:08:13sam686if TNL detects dropped packet, it will retry sendPacket again for next packet after its known to be dropped.
02:08:16kaen(and both are subject to the most common cause of latency: network conditions)
02:09:12sam686one thing is, sending a bunch of events at the same time, like sending all the barrier walls, gets delayed, even when hosting.
02:09:42raptori'm going to logprintf it, because I'm curious...
02:10:00raptorkaen: you didn't alter my sandbox.lua script?
02:10:57sam686the event RPC method of syncing can severely be delayed up to 1 or 2 seconds if there is a bunch of other events to send first (sending walls through RPC events).
02:11:11raptoroh wow - i keep forgetting how many RPC GameType has...
02:11:31Skybax has joined
02:11:45sam686things like sending score limit doens't matter if delayed by a few second..
02:12:27sam686sure we could have RPC events in Ship or other objects..
02:12:36raptorso you think packUpdate will be more accurate than RPC for time-keeping?
02:13:29sam686yes, especially since packUpdate have direct access to packet stream, compared to RPC events that has to rely on only the data it was called.
02:14:18sam686and packUpdate is pretty much guaranteed to all be sent in cast of dropped packets. (you didn't see any missing LineItem, did you?)
02:15:07sam686oh and you can test with /lag (delay) (% loss)
02:17:40kaenlogprint says it's only packing every 30 seconds. so, packupdate is ok :)
02:17:42raptorok kaen, sam686, i tested the pack - it only got sent at the start of the level, when i changed game time, and like every 30 seconds
02:17:46raptorhaha
02:18:02raptorok, sam686, i believe you now... :)
02:18:24kaendefinitely a good thing to quantify though
02:18:56raptoryes, because I think we need to be *really* miserly on network usage...
02:19:54kaenI'm still edgy about subtly breaking something, but it's working for my testing so far
02:20:59sam686can look at GameConnection::setConnectionSpeed
02:21:36sam686many people's internet connection often have bigger download then upload though..
02:24:31sam686and it appears like if waturimoto hates letting users set their connection speed in option menu, at one time I added as option menu, watusimoto removed it.
02:25:27raptori think it was because our menus were gettting too big and that was a more advanced option
02:25:36raptorbut now we have sub-options menus...
02:25:49Skybax Quit (Ping timeout: 246 seconds)
02:27:25sam686could be possible to, auto slow down connection speed whenever you start lagging a lot or have too many dropped packets, but what if that LAG was caused by downloading sonething, you get even more LAG if game slows down connection speed...
02:30:18Skybax has joined
02:35:25raptor Quit (Ping timeout: 252 seconds)
02:38:45raptor has joined
02:38:45ChanServ sets mode +o
02:40:57raptorneat level kaen!
02:51:59kumool has joined
03:05:22SkybaxHey raptor, the BitTown server isn't showing up
03:05:36SkybaxDid it crash?
03:05:47raptorargh! they moved the master server, let me check
03:06:11sam686more like, master server restarted?
03:07:08raptorok, showing up now?
03:07:13SkybaxYep!
03:08:14sam686part of the problem, bittown is CPU heavy...
03:09:02sam686well only with bots..
03:17:48kaenraptor, which?
03:19:26amgine123 has joined
03:19:48amgine123sup everyone
03:19:53amgine123hey kaen you afk ?
03:20:27Nothing_MuchHowdy
03:20:31Nothing_Mucheveryone
03:22:12raptorumm... it was curvy one... symmetrical, on sam test
03:22:18kaenoh ok
03:22:31kaenI made that in like thirty minutes before a game night
03:22:35kaen... and no one showed up
03:22:52raptorawww
03:23:09raptorthat was the best level i played tonight - there were 7 of us and it was crazy - crazy good
03:23:29amgine123anything new in regards to BF ?
03:23:44Platskies Quit (Quit: Platskies)
03:25:53kaenthanks :)
03:26:38raptoralso.. those circley zone pies were great bouncer traps
03:27:04raptorhi amgine123, nothing at the moment, getting close to release though
03:27:23raptoroh kaen - did you say you altered teh sandbox.lua i gave you any?
03:28:25raptorsam686: did you fix this?: https://code.google.com/p/bitfighter/issues/detail?id=315
03:28:45sam686no not yet..
03:29:02raptorah ok, i thought it made it in with the speedzone/gametype changes
03:33:09kumool Quit (Ping timeout: 246 seconds)
03:37:02GEOFBOT Quit (Read error: Connection reset by peer)
03:37:56SkybaxHaving a lot of spybugs on one team makes shots and turrets disappear while on that team xD
03:38:19raptoryes - the age-old too-many game objects bug
03:38:36raptori think that limit is being increased for 019... right sam686?
03:38:44sam686just wait till 019
03:38:51raptorit was 1024, but i think it's up to 4096?
03:39:19sam686the limit been increased, a lot, about 100 times more object when needed, or tiny memory usage when having only small number of objects
03:40:03sam686more like up to 65536 i think..
03:40:16raptoroh my, that's right
03:42:23SkybaxNice
03:42:30SkybaxNEARLY-INFINITE SPYBUGS
03:43:17sam686theres also a CPU slowdown problem with too many spybugs - searching all of them to check if nearby..
03:43:55sam686LineItem, they don't really have any CPU slowdown at all
03:45:40sam686but all objects except Barriers PolyWalls count towards the limit of objects (1024 on 018a)
03:46:53sam686turrets, asteroids, and resourceItem might not count toward the limit if you or all your spybugs are away from it
03:47:09sam686(and not or)
03:52:15amgine123kaen are you there
03:55:35amgine123guess he is afk
03:56:18amgine123sam or raptor can you help me with a small part of my code im making for my lua program im not sure how to program this one part but i want to learn how
03:59:53sam686program what?
04:01:23amgine123working on my lua code
04:01:50amgine123thing is i dont want to to get the answer exactly i want to learn
04:01:57amgine123to the answer
04:02:23sam686ok
04:03:53amgine123http://pastie.org/8508883#14-15
04:04:08amgine123moving group of obhects by there center =p
04:04:43amgine123somehow i have to find coordintes of each object find the average to get the center then move that cetner to coordintes X,Y
04:07:27sam686how about adding all the points up, and divide by #objects (number of objects)
04:08:15sam686or maybe that won't work the best..
04:09:08amgine123hmm well first how would i get the objects coordintes
04:09:11sam686maybe the better way is find the min_x of all points, max_x of all points, min_y, max_y, and take the middle: middle_x = (min_x + max_x_ / 2
04:09:39sam686i mean middle_x = (min_x + max_x) / 2
04:09:42sam686same for y
04:10:59sam686however there a problem in your pastie's code. the "end" is at wrong place
04:11:58amgine123ill fix thaqt later
04:12:20amgine123is there a command for getting a objects coordintes
04:13:05sam686objects[i]:getPos()
04:13:17sam686objects[i]:getPos().x ? (i think)
04:13:42sam686oh more like you missing "end" for your first "for" loop
04:14:46amgine123im to stupid to understand sam kaen makes it so easy to understand XD
04:25:10kumul has joined
04:25:25amgine123bbl piano
04:25:50amgine123or not
04:28:20amgine123bbl piano
04:32:05raptorgot weird assert with /next a few times in a row: http://pastie.org/pastes/8508915/text
04:32:48kumul Quit (Quit: Leaving)
04:32:55sam686might be something with Zap::Ship::writeControlState
04:33:43sam686#0 TNL::BitStream::writeRangedU32 (this=0x7fffffffc750, value=1091348080, rangeStart=0, rangeEnd=3)
04:33:46sam686weard value....
04:35:07sam686stream->writeRangedU32(mLoadout.getActiveWeaponIndex(), 0, ShipWeaponCount);
04:35:33sam686LoadoutTracker::mActiveWeapon not set to zero on constructor?
04:35:35raptoroh...
04:35:37raptoroops
04:35:39raptorthat's myfault
04:35:52raptori had mActiveWeaponIndex commented out somewhere...
04:35:55raptorin a constructor
04:36:01raptorfalse alarm...
04:43:53sam686we been compiling fine without linker errors? (ship.h have "void checkForSpeedzones();" but is missing from ship.cpp )
04:44:23sam686been that way from a long time..
04:44:35sam686but 018a have checkForSpeedzones on both .cpp and .h
05:18:25raptori wonder if there is a way to clean those up... find all the unimplemented declarations
05:30:52amgine123back
05:43:51amgine123 Quit (Ping timeout: 250 seconds)
05:48:09raptor Quit ()
05:48:27destroyerimo has joined
06:04:50sam686cannot open scripts/sandbox.lua: No such file or directory
06:05:00sam686no wonder levelgen won't work
06:05:27sam686one problem, where is sandbox.lua?
06:07:32sam686kaen it appears that your sandbox thing is not working, complaining it can't find sandbox.lua. And I don't see sandbox.lua in any of the recent commits..
06:16:57Flynnn has joined
06:22:10sam686or I just forgot to pull..
06:23:23BFLogBot Commit: 9a8b626eeae4 | Author: sam8641 | Message: Make SpeedZone work while not moving, usually when spawned on top of SpeedZone.
07:10:20alex_velea has joined
07:16:22HylianSavior Quit (Read error: Connection reset by peer)
07:44:49Invisible has joined
07:49:35alex_velea Quit (Quit: Page closed)
07:56:53Skybax Quit (Ping timeout: 248 seconds)
08:03:43koda has joined
08:42:52destroyerimohey guys!
08:59:35Skybax has joined
09:12:55Skybax Quit (Ping timeout: 245 seconds)
09:16:02Skybax has joined
09:40:28Skybax_ has joined
09:40:40Skybax Quit (Ping timeout: 264 seconds)
09:45:12Flynnn Quit (Quit: This computer has gone to sleep)
09:55:26Platskies has joined
10:05:57Skybax has joined
10:08:19Skybax_ Quit (Ping timeout: 272 seconds)
10:26:30Invisible Quit (Ping timeout: 246 seconds)
10:39:08Skybax_ has joined
10:41:31Skybax Quit (Ping timeout: 272 seconds)
10:59:58Skybax_ Quit (Ping timeout: 246 seconds)
11:08:00Skybax has joined
11:35:27Skybax Quit (Ping timeout: 272 seconds)
11:40:52Platskies Quit (Read error: Connection reset by peer)
12:12:59Darrel has joined
12:55:05destroyerimo Quit (Ping timeout: 251 seconds)
13:04:10Watusimoto has joined
13:05:28Invisible has joined
13:09:25watusimoto1 has joined
13:28:05watusimoto1 Quit (Quit: Leaving.)
13:38:13Invisible Quit (Ping timeout: 272 seconds)
13:43:47Watusimoto Quit (Ping timeout: 246 seconds)
14:00:02GEOFBOT has joined
14:00:03Geoffrey has joined
14:03:28koda Quit (Ping timeout: 264 seconds)
14:19:03koda has joined
14:38:55Invisible1 has joined
14:47:58GEOFBOT Quit (Read error: Connection reset by peer)
14:58:00kumool has joined
15:01:33Geoffrey is now known as GEOFBOT
15:06:58LordDVG has joined
15:14:52Invisible1 Quit (Ping timeout: 264 seconds)
15:38:31noneofmynickswor has joined
15:41:30kumool Quit (Ping timeout: 246 seconds)
16:15:32thread_ has joined
16:22:52kaenhmmm... looks like luaWrapper leaves Class.metatable.__extends mutable
16:34:24Invisible has joined
16:47:26kumool has joined
16:50:39noneofmynickswor Quit (Ping timeout: 265 seconds)
16:51:49HylianSavior has joined
16:58:02thread_I added another class to BCL!
16:59:43alex_velea has joined
17:00:20alex_veleaAny ideeas when watusimoto will come online?
17:00:45Nothing_Muchalex_velea: I think on Wednesday he said he'll be back to normal
17:01:55alex_veleaFrom where is he?
17:02:26kaenhe's from Luxembourg
17:02:41kaencan I help you with something, alex_velea ?
17:03:28alex_veleaHe said on the gci page for my task that he has some ideas about the implementation of the task and that i should talk to him first :)
17:03:34alex_veleaBefore i start doing it
17:03:44kaenah, I see
17:05:18kaenok, looks like you're doing redo/undo?
17:06:16kaenI think the central focus of his ideas was the notion of an "action" interface, which should have a redo() and undo() methods
17:07:01kaenand then the editor will keep a stack of actions, and redo/undo in the editor boils down to moving the stack pointer, and call action.undo() or action.redo() as appropriate
17:07:49kaenthe invariant of the class is that redo() and undo() are exactly inverse operations, and one followed by the other should return the editor to its original state.
17:07:56raptor has joined
17:07:56ChanServ sets mode +o
17:08:28alex_veleaI have a question about this
17:08:32kaenok
17:08:43alex_veleaMy ideea was to create a class named action
17:08:43raptorhi
17:08:54alex_veleaand to split in the type of action .. to use less space
17:08:57alex_veleaw/e
17:09:02alex_veleaBut .. if i have a stack
17:09:07raptoractually, the main issue is that every action makes an entire copy of the object pointer database
17:09:29kaencurrently, yes it does
17:09:32alex_veleaand the user does 5 undo's .. i will go 5 steps deep in that stack
17:09:43alex_veleaand if he does 2 redo's i will 'go up' 2 steps in the stack
17:09:48kaenbut the notion of an "action" solves that, raptor :) (and good day)
17:10:04kaenalex_velea, correct
17:10:06alex_veleabut after that if he does sth else should i clear the rest of the stack (the other 2 actions?)
17:10:16kaenclear everything above it, yes
17:10:17alex_veleaIf u get my ideea
17:10:21alex_veleaOk than :)
17:10:24alex_veleaIt seems ok
17:10:59kaenlet me know if you have any questions
17:10:59alex_veleaWhat's the cap limit for the actions?
17:11:05kaenumm you pick :)
17:11:10alex_velea50 it's ok?
17:11:28kaen50 sounds fine, just make it a constant somewhere that can be easily tweaked
17:11:36alex_veleaOk :)
17:11:52raptoralex_velea: is this task algorithmic-intensive enough for you? :)
17:12:12koda Quit (Quit: Leaving)
17:12:23raptornoooo... i missed koda again
17:12:23kaenI think the hard part will be encoding editor actions as objects
17:12:31kaenthere's a name for this pattern... maybe command pattern?
17:13:39raptordterministic vs state saving (like with a replay system) ?
17:16:05alex_veleaIt's a fun task raptop, but usually i deal with ioi / acm style of problems, but thx for thinking of me
17:17:15kaenalgorithmically, pretty simple. architecturally interesting to me, though
17:19:00alex_veleaTrue that
17:32:53raptor Quit ()
17:51:25alex_velea Quit (Ping timeout: 250 seconds)
17:52:35fordcars has joined
17:54:38fordcarsWe are still getting close to release?
17:55:26thread_in the course of eternity... yes, we are close
17:55:45fordcars:)
17:55:55thread_relatively speaking
18:05:56HylianSavior Quit (Read error: Connection reset by peer)
18:22:55fordcarslaterguys!
18:22:58fordcars Quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
18:28:04Watusimoto has joined
18:29:57Invisible Quit (Ping timeout: 248 seconds)
18:41:51Flynnn has joined
18:45:43Skybax has joined
18:52:13Watusimoto Quit (Ping timeout: 252 seconds)
18:54:22Flynnn Quit (Quit: This computer has gone to sleep)
18:57:23Bob1 has joined
18:58:07kumul has joined
18:58:43kumool Quit (Ping timeout: 265 seconds)
19:01:39Flynnn has joined
19:06:32Canseco has joined
19:09:36Canseco Quit (Client Quit)
19:11:53Canseco has joined
19:20:49Skybax Quit (Ping timeout: 246 seconds)
19:23:00Bob1 Quit (Quit: Page closed)
19:25:35Canseco Quit (Quit: http://quassel-irc.org - Bye)
19:26:05Canseco has joined
19:28:52Canseco Quit (Remote host closed the connection)
19:31:00thread_kaen: do bots run their main function when they spawn or only at the start of the match, when they "join" the game?
19:31:12Skybax has joined
19:38:27Canseco has joined
19:41:09kaenonly when they join, I believe
19:41:55kaenyou can test if the current bot is spawning by doing info:getShip() == bot, I believe
19:42:03kaennot positive, though
19:42:22kaenactually no, that wouldn't work
19:42:28Invisible has joined
19:43:02thread_hrmm...
19:44:42Skybax Quit (Read error: Connection reset by peer)
19:45:51Skybax has joined
19:52:10Canseco Quit (Remote host closed the connection)
19:54:50Canseco has joined
19:58:17thread_kaen: is it possible for me to declare, in a levelgen, what bot script is preferred for a level/
19:58:44thread_if not, can it be declared in the .level file?
19:59:17Flynnn Quit (Quit: This computer has gone to sleep)
19:59:18kaenfor use with /addbot ? no.
19:59:37kaen019 lets you add bots, and Robot.new takes a script name
19:59:40Canseco Quit (Remote host closed the connection)
20:00:04thread_Its the fact that I'm trying to write a bot that works with my class system
20:00:20kaenyou could try this:
20:00:24thread_I don't want to have to quit bit fighter and change the .ini
20:00:47kaencatch ship spawn events, check if it's a bot, if it is a bot, but not your bot, kick the bot and add one of yours
20:01:12thread_how do I add a bot in levelgen? how do I check if it's a bot?
20:01:29kaenbf:addItem(Robot.new())
20:01:33kaen019 only
20:01:37thread_ooohhh
20:01:55thread_do I check type similarly to zone types?
20:02:29kaenobj:getObjType() == ObjType.Robot
20:02:32kaenlike that?
20:02:36thread_yea
20:03:12kaenhow to check if it's your bot ...
20:03:39thread_check the player name?
20:03:47thread_I suppose I could do that
20:04:39kaenoh, good idea :)
20:04:46kaenI was thinking of something way too complicated
20:05:17thread_I realized I do define what the name is, so I can check that
20:05:25Invisible Quit (Ping timeout: 245 seconds)
20:05:30GEOFBOT has left #bitfighter
20:06:56kaenI'd advise using string.find instead of name == "blah
20:07:02kaenfor the .0 case
20:13:26Flynnn has joined
20:19:01Skybax Quit (Read error: Connection reset by peer)
20:20:22Skybax has joined
20:20:23thread_of course
20:22:54BFLogBot Commit: d007602a4251 | Author: kaen | Message: tighten down sandbox a bit more and add some more tests
20:25:52LordDVG Quit (Remote host closed the connection)
20:26:16LordDVG has joined
20:29:40kaenfor the logs: I have some negative results that are worth reporting
20:29:54kaenI tried recursively making _G immutable, but ran into several problems
20:30:21kaencyclical references require memoization, which I did using the tables themselves as keys in a history
20:31:03kaenbut protect_module actually returns a new table, not just the modified old one, so memoization can fail there by counting a protected table as unvisited
20:32:24kaenadditionally, luaW reuses metatables for the userdata, meaning that protecting a table only the first time it is encountered will leave later occurrences of that table unprotected
20:32:52kaenbeyond the memoization problems, there are some tables which actually must be mutable
20:33:05kaenTimer for example, requires Timer.time to be mutable
20:34:33kaenAlso, freezing the environment tables themselves makes function main() end through an error during its definition (can't create a key on _G after it's frozen), so freezing the environments would require rewriting runMain and friends to search for locals, as well as break every script ever written for bitfighter
20:34:59kaenmy final attempt was to implement a deep copy to be run on _G while preparing script environments
20:35:36kaenthis appeared to have worked, but due to luaW's (to me indecipherable) reuse of some metatables but not others, it caused segmentation faults during setSelf
20:35:50kaenin light of these facts, I have left the current implementation as follows:
20:36:08kaenscript environments are shallow copies of LUA_GLOBALSINDEX
20:36:30kaenonly a select number of tables are frozen in sandbox.lua
20:37:16kaenthis means that, while the sandbox appears to prevent system-damaging exploits via os and friends, it is still possible for scripts to mess with each other
20:37:44kaen</soliloquy>
20:49:50thread_one more question, how do I kick a bot from levelgen?
20:49:59kaenbot:removeFromGame()
20:50:11thread_uhhh... nope
20:50:19kaenerr, sorry
20:50:41kaenyou need to get a reference to the bot in the levelgen
20:50:51kaenprobably in the levelgen's onShipSpawned
20:50:56thread_Assert: Too many disabled collisions in c:\source\bitfighter\zap\bfobject.cpp line 1107
20:51:02kaenok, that's a bug :)
20:51:15kaenhow old is your build?
20:51:23thread_ummm... this week
20:51:28thread_sometime this last week
20:51:37kaenoh no. that's bad news.
20:51:52kaenok, can you give me your levelgen?
20:52:16thread_http://pastie.org/8510849
20:52:25thread_dying line is on 359
20:53:39thread_did I break the universe?
20:56:26kaennope, probably just another subtle bug I missed
20:56:42kaenor who knows, maybe an obvious one :)
20:57:10thread_I seem to be good at finding the obscure bugs that really have no business being found
20:57:56kaenthat's because you're always in uncharted territory
20:58:00kaena levelgen pioneer
20:58:03kaenan innovator
20:59:43thread_Or a crazed scientist wannabe
21:08:06kaencool! I get a segfault when I add a bot
21:08:26thread_umm... your welcome?
21:09:08thread_anyways, gonna dissappear for a bit. chow
21:09:11thread_ has left #bitfighter
21:09:43kaenciao
21:11:10Skybax_ has joined
21:13:09Skybax Quit (Ping timeout: 248 seconds)
21:17:02LordDVG Quit (Remote host closed the connection)
21:21:48Invisible has joined
21:35:46Skybax_ Quit (Ping timeout: 240 seconds)
21:40:10Bob1 has joined
22:04:49Bob1hahaha kaen
22:04:52Bob1i dig it
22:10:07Invisible Quit (Ping timeout: 265 seconds)
22:14:11raptor has joined
22:14:11ChanServ sets mode +o
22:14:20raptorhowdy folks
22:14:34kaenhi!
22:15:16kaenraptor, long and short of the lua sandbox effort: you can't start a bindshell anymore, but you can screw up someone's Timer
22:15:28raptorhaha
22:15:35kaenI gave a little monologue about the difficulties of fulling locking down the sandbox
22:15:46kaenabout two hours ago
22:16:53raptorlet me see...
22:16:59raptorlooking at the sanbox changes now...
22:17:27kaennot very much, because I had to give up my high aspirations.
22:20:02raptorok well - i think it's OK for now
22:20:29kaenI think so too
22:20:55raptorI mean, it's the best we've ever had, actually
22:21:32raptoryou removed the 'smt = nil' ?
22:21:40raptori supopsed that was unnecessary because it was a local
22:21:49raptor*suppose
22:22:26kaencorrect
22:22:50kaenI wanted to allow use of protect_module after the sandboxing
22:23:01kaenso that reference has to stay valid
22:23:11raptorI was going through LuaW last night again - trying to find a way to clean-up all objects that were called with .new() but never with bf:addItem()
22:23:23raptorand I got overwhelmed
22:23:30kaenI haven't tried that one yet
22:23:38kaenI was looking at luaW last night, too
22:23:44kaenand was also overwhelmed
22:24:14raptormy idea is that when the LuaScriptRunner destructor is called, we could go through LuaW's cache tables, find all the BfObjects and clean them up
22:24:31raptorbut....
22:25:20raptorI'm not sure how bad it will be with differentiating one object from one script and another object from another script
22:25:38raptoror even if that idea will work - as LuaW I think has *one* cache for the entire game...
22:25:53kaenI believe so
22:27:53sam686luaL_dostring(L, #include "sandbox.lua"); (wished that worked)
22:27:54sam686But would it be better to compile those LUA scripts (like sandbox.lua) instead of loading at program start?
22:29:09raptorGoo time
22:32:52kaensam686, LuaScriptRunner::loadCompileRunHelper("sandbox.lua")
22:32:56kaensomething like that
22:33:40kaenI like keeping as much lua outside of cpp as possible because then it's faster to tweak it since you don't need to recompile
22:34:12sam686but then that means other people could mess around with it..
22:35:18kaento me that's a good thing :)
22:35:31kaenyou're allowed to shoot yourself in the foot
22:36:50sam686The other problem, as I sometimes do, is keeping multiple version of .exe on the same folder, but if newer exe relys on newer scripts, the older .exe might totally fail on LUA with too-new of LUA scripts
22:40:32kaenthe same could be true for any other resource like fonts or dlls
22:44:50kaenI can't figure out why ShipSpawned isn't firing here: http://pastie.org/8511048
22:45:04sam686the problem is mostly if it changes, older .exe don't care about new stuff added, it just get ignored.
22:45:25kaenI'm trying to write a test for thread_'s new bug (removing a bot during its first onshipspawned callback)
22:46:49Skybax has joined
22:46:51kaenthe bot gets added, but EventManager::fire never happens. same if you use Robot.New() instead
22:48:20Bob1 Quit (Quit: Page closed)
22:56:55sam686http://sam6.25u.com/upload/screenshot_136.png renamed font
22:58:30raptori think robots are piped to shipSpawnedEvent
22:58:35raptorare *not*, i mean
23:00:36raptorkaen: I think it was a conscious decision to never fire that event with bots
23:01:19raptori don't remember why, though
23:02:10watusimoto has joined
23:02:11ChanServ sets mode +o
23:03:26sam686the chat is not wrapping to new line correctly with the new font (a bunch of "i" doesn't wrap and goes off screen) (a bunch of "W" wrap a bit too short)
23:03:29kaenhere's thread's levelgen: http://pastie.org/pastes/8510849/text
23:03:43raptorhaha, i like your warnings at the top of the sandbox, kaen
23:03:55kaenit listens for a robot to be added with /addbot, the removes it and tries to Robot.new() a different bot
23:04:00raptor"especially under someone else's directions"
23:04:07kaenbut crashes during ship:removeFromGame()
23:05:36kaenI felt like it needed a seatbelt :)
23:06:50raptoroh my that is a big script
23:07:08raptorbobdaduck and thread must be trying to set new standards...
23:07:19kaenyeah, it can be trimmed down quite a bit to reproduce the bug
23:07:26kaenon a side note, I think it's really cool!
23:07:28kaenand almost easy to use
23:07:48kaen(if you know to type "help")
23:22:10raptorkaen: are you saying that onShipSpawned is returning nil for ship with Robots?
23:24:09kaennope, I'm saying it's working fine as far as I can tell, except that ship:removeFromGame() causes a segfault
23:28:21raptorouch - a segfault like that is bad news
23:28:34kaenI'm almost done with the segfault
23:28:44kaenI just wanted to add a test for it too :/
23:29:22raptorah ok, I won't delve into it, then
23:30:21kaenso... do you think we can still do that thing we talked about this week?
23:30:44raptoryes!
23:30:47kaencool!
23:31:09raptori mean, we should get in a good round of playtesting - and convince sam686 and watusimoto not to do any more refactors... :)
23:31:11sam686I guess my mistake was running the levelgen as a BOT! no wonder it didn't crash on me..
23:31:49watusimotono more refactors for be before the release!
23:32:03sam686although it did auto prevent more bots from joining until I kick the bot-kicking bot
23:32:15raptoroh goodie, you're here!
23:32:33watusimotojust an interesting side note -- I spent this afternoon tromping around in Antwerp's sewers, in big rubber boots and a protective suit
23:32:44raptornow i just have to remember my questions for you...
23:32:49raptorwatusimoto: oh really?
23:33:03watusimotoyes, it was quite interesting. and a little gross
23:33:04raptorthat's interesting - work or... play?
23:33:36watusimotoit was for work, but was essentially... not play exactly, but not essential duty either
23:34:12watusimotoI am attending a meeting for a project I work on trying to reduce the energy consumption of sewage treatment
23:34:25watusimotoso it was a bit of an educational trip
23:34:56raptorenergy consumption of sewage treatment... hmmm... let it sit out in the sun?
23:35:00Skybax_ has joined
23:35:51watusimotoYou need to use up the "food" in the water so the bacteria that eat it don't suck up all the oxygen in whatever body of water it gets discharged into and kill all the fish
23:36:18watusimotothat's a big part of what sewage treatment does
23:36:50raptorreminds me of that one quote: "there are two types of people in the world: those that poop in their water supply, and those that don't"
23:37:09Skybax Quit (Ping timeout: 248 seconds)
23:37:48raptormaybe that was some arab cultural quote my wife brought back from the middle-east
23:38:01raptoranyways, that sounds very educational
23:38:21raptorand excuse my potty mouth - I have 3 children under 5 years old
23:39:48watusimotoalmost all of us poop into someone else's water supply.... certainly anyone living on a river does
23:40:16BFLogBot Commit: 50a994a07003 | Author: sam8641 | Message: Fix linker error master build
23:40:17BFLogBot Commit: 513985db3706 | Author: sam8641 | Message: Might help if instruction Core don't animate backwards.
23:40:33raptornothing is more enlightening about civilization than following the sewage...
23:40:54watusimotoI've always thought cities should be required to discharge their sewage upstream from their drinking water intake pipes... it would properly align the incentives
23:41:05raptorhahaha
23:41:05koda has joined
23:42:09sam686except many fresh water pipes have anti-backflow protection..
23:42:21Darrel Quit (Quit: IRC client killed.)
23:42:50raptoroh i remember my questino for you watusimoto - this bug: https://code.google.com/p/bitfighter/issues/detail?id=316 is confusing to follow, so here is the short of it
23:42:55watusimotothat would keep the water from flowing back into the river :-)
23:43:17raptorbasically you have phaser selected, change to a new loadout with phaser in it, but in a different slot; phaser is still selected
23:43:38raptorsky_lark wants it so new loadout changes reset to whatever is in slot 1
23:43:46watusimotothat behavior is intentional
23:43:53raptorthat's what I thought
23:43:59watusimotomaybe it shouldn't work that way, but it's not a bug
23:44:08raptoryes, ok
23:44:15sam686I seen that, I set triple as first weapon, phaser as second weapon, it always selects phaser even after multiple deaths and I didn't even had phaser selected on ship death..
23:44:31watusimotoI actually remember making that design decision and writing the code, way back in the early days of Bitfighter
23:44:37raptorso then my question is: does it make sense to reset to index 1?
23:44:56watusimototo me, no, but I don;t feel strongly about it
23:45:08watusimotoI can see arguments either way
23:45:20raptori admit to getting lost a few times with my loadout when changing it, expecting to have the first one selected
23:45:24sam686or maybe its a side effect of keeping your current weapon after changing loadout, if your new loadout still have that weapon on a different slot
23:45:28raptorlike when you respawn
23:45:42watusimotoin fact, I would say that my feelings about this particular issue are nearly 0
23:46:07watusimotoI think we should do whatever is least disorienting
23:46:56watusimotoregardless of how it works, it has no real impact on game play
23:47:02watusimotoso we can make it work however
23:47:48watusimotoif it were my decision right now I'd say leave it; but I would also not veto someone who feels stronger than 0 overriding me
23:48:03raptorwell that's sky_lark
23:48:18raptori don't think i play enough to find it a huge issue
23:50:23watusimotoactually, in the new right now, I'm leaning the other way, though my conviction is still near 0
23:50:52raptorwhich other way?
23:53:58sam686Ship::setLoadout
23:54:31sam686well similar problem is getClientInfo()->getStatistics()->mChangedLoadout++; keeps counting on ship's death/respawn when a player uses the same non-default loadout...
23:55:14watusimotoskylar's way
23:57:09sam686part of the problem is we delete "Ship" and create new "Ship" everytime a player's ship die, which is why no existing "ship" data exists on ship's spawn.
23:57:31sam686but robot doesn't delete/new like ship does.
23:58:48watusimotorobot doesn't delete because we don;t want to reinitilaize the bot every time. It's a lot cheaper to do that now than it was when bots were first created

Index Search ←Prev date Next date→

These logs were automatically created by BFLogBot on irc.freenode.net.