#bitfighter IRC Log

Index Search ←Prev date Next date→

IRC Log for 2013-10-17

Timestamps are in GMT/BST.

00:02:34HylianSavior Quit (Quit: Leaving)
00:02:39raptorkaen: you still around?
00:02:50kaenyep
00:02:55raptorok question
00:03:07raptorabout class inheritance and the diamond problem, etc...
00:03:39raptorso say I want Teleporter, Ship, etc. to inherit from a class called HealthObject
00:04:35raptorthen when I call repair, I search for HealthObjects, cast, and repair - should I avoid making HealthObject part of BfObject? (and avoid the diamond problem)
00:05:17raptorI'm thinking yes
00:05:25raptordiamonds are evil, it seems
00:05:46kaenyeah, I know of no clean way to solve the diamond problem
00:05:55kaenwhat does healthobject inherit from?
00:05:55raptorbut if so, what would be a good way to be able to avoid a dynamic cast as HealthObject since we do object search by BfObject?
00:06:07raptorit would probably be nothing, like Engineerable
00:06:38kaenoh, so where is the diamond? sounds like you're just talking about a mixin
00:07:02raptoryeah, my first thought was to make it a diamond so I could cleaning static_cast
00:07:06raptor*cleanly
00:07:08raptorbut
00:07:17raptorI guess ultimately I want a nice clean OO way to abstract a lot of the garbage I'm seeing with health stuff
00:08:22kaenwell ideally you'd be able to put HealthObject somewhere in the chain above things with health but below things without
00:08:52kaenI'm sensing that might not be possible because BF's class tree is bonkers
00:08:54raptoryes, but they don't group nicely - turret, ship, teleporter
00:08:59raptorcorrect
00:10:07HylianSavior has joined
00:10:16kaentaking a look real quick
00:10:27raptorhttp://bitfighter.org/~raptor/doxygen/current/class_zap_1_1_item.html
00:10:32raptorthe tree scares me
00:10:34kaenoh, nice
00:10:35raptorit doesn't fit
00:10:40kaenI was using the luadocs one
00:10:52raptoractually, I should update that...
00:11:49raptorso what I did with Engineerable is just made it a 'mixin' (is that what you called it?), basically just another object to inherit from
00:12:06raptorbut I can't guarantee a clean static_cast to an Engineerable
00:12:16raptorsince it isn't in our normal object chain
00:12:36raptorand I want to avoid the same thing with Healthable (or whatever)
00:13:02kaenok
00:13:04raptorI'm a little weak on what *good* design should be here...
00:13:16kaenwell, this tree is just seriously bonkers
00:13:25kaenso yes, you'll need a mixin
00:13:31kaenoh sorry dude gotta go
00:13:37kaenreally sorry back in the morning
00:13:46raptorok
00:13:49raptornight!
00:13:49kaenoops nevermind
00:13:54raptorwelcome back!
00:13:55kaenthought the girlfriend was crying
00:14:03kaenshe was giggling softly :P
00:14:10raptorfalse alarm
00:14:16kaen:)
00:14:18kaenso anyway
00:14:20raptorso i guess
00:14:26kaenthere is definitely no clean solution here
00:14:39kaenclean in the c++ sense anyway
00:14:50raptorwe have this crazy object tree, and there are several mixins - what is a good pattern to be able to cleanly cast around?
00:14:54raptoryeah...
00:15:18kaenyou can use a mixin though, and that will let you dynamic_cast to test for healable things
00:15:23kaenwhat are the other mixins?
00:15:34raptorI think only Engineerable
00:15:46kaenok, I don't think that's a mixin proper
00:15:54kaenbecause it appears to inherit from Item
00:15:55raptornot engineereditem
00:15:59kaenoh wait
00:16:00raptorEngineerable
00:16:03kaenyeah that's right
00:17:22kaena repairable mixin sounds alright, have you had problems casting around with engineerable?
00:17:30raptornope
00:17:50kaenok, then I'd say repairable is alright, semantically it's the best fit for our tree
00:17:52raptoronly one place it was needed and that was with deploying an object, so not performance intensive
00:18:17kaensince we have things all over the place that need the functionality
00:18:37raptorbut this is a little more performance intensive (database search + cast every tick repair module is fired)
00:18:51kaenoh man that's right
00:19:01raptorso... how to avoid a dynamic_cast
00:19:12raptorbecause, honestly, dynamic_cast is perfect for this situation
00:19:21raptorfunctionally-speaking
00:19:54raptorbut not so great since it's in a performance-needed spot
00:21:51raptormaybe an 'isRepairable' method on BfObject
00:22:00raptorhmm, that seems messy
00:26:02kaenI wish gridDB was set up with like a type-binning system
00:26:23kaenbecause *that* would be perfect for this (and a ton of other things)
00:26:25raptoras opposed to location?
00:26:30kaenin addition to location
00:26:35raptorhmm
00:26:52kaenlike when you insert an object into the db, it bins it with RTTI or something
00:27:01kaenor a templatized insert function
00:27:19kaenwith some templatized container mechanism
00:27:27kaenanyway I don't know if that's on-topic
00:27:36raptorhmmmm
00:27:42raptorsure it is
00:28:05raptori've actually given thought to coupling object-type with location in the griddb to allow per-object searching
00:28:25raptor(somehow)
00:28:28kaenok, false alarm turned true
00:28:33kaentalk to you tomorrow
00:28:36raptorn ight!
00:38:07raptor Quit ()
00:50:49Darrel has joined
01:09:34HylianSavior Quit (Read error: Connection reset by peer)
01:13:01Platskies has joined
01:22:15Platskies Quit (Quit: Sleep time…)
01:22:51Platskies has joined
01:34:37watusimoto has joined
01:34:37ChanServ sets mode +o
01:54:29Skybax Quit (Ping timeout: 272 seconds)
01:55:45Platskies Quit (Quit: Sleep time…)
02:20:33Platskies has joined
02:30:24Nothing_Much Quit (Ping timeout: 248 seconds)
02:34:12Nothing_Much has joined
03:34:09Platskies Quit (Quit: Sleep time…)
04:16:32Invisible1 has joined
04:50:45Platskies has joined
05:07:56Invisible1 Quit (Ping timeout: 272 seconds)
07:03:10Platskies Quit (Quit: Platskies)
07:15:50Invisible1 has joined
07:16:15Watusimoto_ has joined
07:23:38kaenclang taught me a new word
07:23:41kaen"autological"
07:24:03kaenit calls S32/U32 comparison an "autological compare"
07:27:26kaenoh wait, it's when checking if an unsigned enum >= 0
08:16:12Invisible1 Quit (Ping timeout: 260 seconds)
08:17:01Watusimoto_ Quit (Ping timeout: 272 seconds)
08:47:32LordDVG has joined
09:51:58Invisible1 has joined
09:54:31Watusimoto_ has joined
10:00:08raptor has joined
10:00:08ChanServ sets mode +o
10:00:45raptorautoillogical!
10:02:30raptor_ has joined
10:02:30raptor Quit (Disconnected by services)
10:02:33raptor_ is now known as raptor
10:02:37raptor Quit (Changing host)
10:02:37raptor has joined
10:02:37ChanServ sets mode +o
10:16:24raptorgood morning!
10:18:58HylianSavior has joined
10:21:43raptorhi watusimoto
10:21:59raptorI have a c++ architectural question for you when you have a moment -
10:22:07raptor(was discussing this with kaen a bit last night)
10:23:13raptorI want to pull out the health-related data for the various objects that have health into a parent class/interface; however, it would not fit into our object hierarch verywell
10:23:51raptore.g. Ship, Core, Teleporter, etc. would inherit from HealthObject (or whatever)
10:24:17raptorbut HealthObject cannot possible fit into our current structure without introducing diamond relationships
10:25:04raptorbut, if I were to keep it separate (like Engineerable) then I don't have a clean way to static_cast<HealthObject> after a database search, since database searches are on BfObject
10:25:11raptorso, what to do?
10:28:22watusimotohi
10:28:38raptorhello
10:28:50watusimotoso a health object is an object that has heath?
10:28:54watusimotowhjy do you want to do that?
10:29:24raptorbecause right now there is repair logic expecting an Item* of which teleporter is not
10:29:30watusimotoah
10:29:46raptorand there are a lot of things like 'mHealth' 'getRepairPoints()' etc. that are strewn about the code
10:29:59raptorand I'd thought I'd bring a little order to the chaos
10:30:21watusimotoand you need to be able to cast to a healthObject?
10:30:36watusimoto(probably better called DamagableObject)
10:30:41raptorsure
10:30:59watusimotohow do we cast to engineerable?
10:31:03raptoryes, if go this route (consolidate the health junk into a parent calss)
10:31:18raptordynamic_cast, but it is only used upon engineering an item
10:31:36watusimotocould you do the same here?
10:31:37raptorthis will require casting with a database search in every tick that the repair module is on
10:31:47raptoryes, i can, but I don't want to
10:31:56watusimotoyou can prejudge success with our typenumbers
10:32:03watusimotoand thus only cast when it will work
10:32:16watusimotoperhaps even using a static cast
10:32:24watusimotowith a dynamic_cast inside an assert
10:32:44raptorok, that was one idea - have a search method isDamageableType, with ... yes
10:33:30watusimotoanother approach might be to have a health object that monitors stuff like health; every bfobject would have a slot for it; a testitem would have a null healthobject, a ship would have a non-null one
10:33:36raptorthen I just have to guarantee that isDamageableType always matches the classes that are children of DamageableObject
10:34:00watusimotoyes -- we might be able to come up with some fancy way to auto-maintain that
10:34:11watusimotowhich we could use for other object types as well
10:34:17raptorok, i'm not sure how... but that would be nice
10:34:38raptorthese are murky waters for me... this object hierarchy stuff
10:34:50watusimotoalternatively, bfobject could have a hasHealth() method that returns true for health objects, false otherwise
10:35:05raptoryes, that was another idea I had, too...
10:35:08raptorI guess
10:35:21watusimotoso I see two major approaches, with a couple fo variants
10:35:23raptormy current c++ class is getting me to think about what's 'right' or 'proper'
10:35:37watusimoto1) follow the engineerable approach, with a mixin class
10:36:15watusimoto2) add a healthManager object (a pointer, so it can be null) following the composite pattern (I think)
10:36:54raptoryour #2 seems more complex than I want
10:36:59watusimotoif 1) then you have to choose how to idenfity health objects: a) hasHealth() b) isHealthType c)dynamic cast/NULL check
10:37:07raptorbut that's how you did geomObjects, right?
10:37:16watusimotoyes, and it really worked great there
10:37:23watusimotoit seems a less good fit here
10:37:28raptorbut it's really hard to debug..
10:37:32watusimotoI think I'd go with 1)
10:38:00raptorok, me too
10:38:15watusimotothe geom worked well because every object has ageometry, but there are several different sorts, and we could create a common interface to all of them
10:38:32raptorand I like the idea of the isHealthType, but i'm not sure how to auto-maintain that list
10:38:48raptori wish to avoid dynamic_cast
10:39:11watusimotoperhaps classes could register themselves somehow, or maybe I could come up with an xmacro!
10:39:38raptorhmm... self-registration...
10:39:56watusimotogo ahead and hand code the list for now, and we can think about it. We could apply a good solution to a number of cases
10:40:09watusimotoit's not like this would change very often
10:40:10raptoroh yes
10:40:15raptorright
10:40:27watusimotoand when you do the static cast, do a dynamic cast in an assertion as a further check
10:40:37raptoryes, I plan on that
10:41:14watusimotoI found a bug in the string wrapping code
10:41:36watusimotoI mostly fixed it, but man is that stuff painful
10:41:58raptorstring wrapping?
10:42:19watusimotoI think it's in renderutils... well, don't worry about it, I'll take care of it
10:42:28watusimotoit was a minor bug that caused me major pain
10:42:30raptorah, those type of strings
10:42:46watusimotonot the bug itself, but the fixing of the bug
10:42:51raptorwas it openGL related?
10:42:57watusimotoin retrospect, I should have just let it go
10:43:02watusimotobut it's too late now
10:43:07watusimotono
10:43:20watusimotoit was an off-by-one problem
10:43:45watusimotothe thing is without at test (which I wrote for a different purpose) you wouldn't have noticed it
10:44:26watusimotoit was minor
10:44:38raptorinteresting
10:44:55watusimotoin hs I had to write a word wrapping algo for a programming class
10:45:04watusimotoI remember it as one of the most painful things I did in hs
10:45:21watusimotoso working on this felt like salt in an old wound
10:47:27raptoraww sad
10:50:25raptorall those many hours fighting with char*
10:54:19Nothing_Much Quit (Quit: bleep)
10:55:04raptorI'm beginning to think we should have an EngineeredTeleporter/Turret/ForceFieldProjector subclass...
10:56:54Nothing_Much has joined
10:58:26Invisible1 Quit (Ping timeout: 268 seconds)
11:02:35Watusimoto_ Quit (Ping timeout: 272 seconds)
11:04:14watusimotowe can discuss this later... I have to run!
11:05:41thread_ has joined
11:08:34watusimoto Quit (Ping timeout: 240 seconds)
11:17:07LordDVG Quit (Remote host closed the connection)
11:28:28kaenwoo!
11:28:28kaenit compiles
11:31:17thread_\o/
11:31:49raptorbut does it link?
11:31:50raptor:)
11:32:19kaenhehe
11:32:22kaenit links too
11:32:28kaenbut it does not function properly just yet
11:33:53thread_That's only because you expect it to function differently.
11:34:29kaen:)
11:35:44kaenhacking on TNL::Vector is pretty painful though
11:36:03kaenbetween the template error messages and the fact that every change means a full recompile
11:36:13kaenunless I get lucky and hit an error building TNL itself
11:36:15raptoryep! it was so painful
11:36:44raptorwhat I did was was make a dummy class that i could compile and link against TNL only
11:36:49kaenahh good idea
11:36:56raptorthat tested some basic Vector stuff
11:37:08kaenbut actually I'm hitting problems with the boost::geom adapter
11:37:14kaenthe Zap-specific stuff works fine
11:37:29kaenoh, and vector<bool> is giving me guff sometimes too
11:38:40kaenboost::polygon, rather
11:38:58kaenraptor, have you ever done any this concept/traits garbage that boost loves?
11:39:16kaenthis is my first tangling with it, and I started out hating it but now I think I love it
11:39:18raptorno
11:39:30kaenwell, you'll see what I mean after I check in
11:39:44kaener, post the patch
11:39:58kaen(not to get ahead of myself)
11:41:15raptorso I'm curious, was a rewrite of TNL::Vector needed? There was a method that gave the inner std::vector, getStlVector() or something
11:42:21kaennot strictly, but that's how it probably should have been done in the first place, and it greatly simplifies the adapter code for boost::polygon
11:43:26kaenotherwise I would have to reimplement the polygon and polygon_set interfaces to pull out std::vectors as you mentioned
11:43:35raptorbut you'll have to handle Vector<bool> differently than just sending it to std::vector<bool>
11:44:09kaensure, we can just use an explicit instantiation and reuse the bool methods that are already there
11:44:23raptorok
11:44:33raptori just remember all the templating nonsense drove me crazy
11:44:42kaenI've been curious, where do we use Vector<bool> ?
11:44:50kaenis it really performance critical?
11:45:01raptorgood question
11:45:13raptorin the editor
11:45:21raptorand with Geometry class
11:45:32raptorwhich... has to do with the editor
11:45:39raptorand yes, performance is important with it
11:46:04raptorand using a deque<bool> (which I think isn't broke when compared to vector<bool>) didn't work for some reason
11:47:16kaengrep gives me geometry stuff related to selected vertices, whether a team has a spawn point, and allowing endpoints to touch
11:47:43kaenanyway I'll still do the vector<bool> stuff, but really it doesn't seem like it's actually in a performance critical place
11:48:11kaenmaybe you could argue that it is for selection, but that would be for very very large inputs
11:48:31raptorwell TNL::Vector<bool> is much faster than std::vector<bool>
11:48:38raptorabout 10 times faster, i think
11:49:18raptorand anything that is TNL::Vector should not take a performance hit, in my opinion
11:49:18kaenany idea why?
11:49:21kaenaddress alignment?
11:49:22raptoroh yes
11:49:28raptorvector<bool> is seriously broken
11:49:35raptordo you not know the history?
11:49:40kaenI guess not
11:49:48raptorit stores bools as bits, instead of actual bools
11:49:55kaenthat was my guess
11:50:10kaenso yes, it sounds like address alignment
11:50:16raptorbecause, the early c++ developers made some really bad choices
11:50:19kaenand tnl vector just uses ints?
11:50:22raptoryep
11:50:26kaenok
11:50:35kaenyeah, that's a really dumb call
11:50:41raptorvector<bool> is very broken and should never be used
11:50:43kaenbut memory was probably more precious back then
11:52:01kaensorry if I'm being pesky about this, but what if we just took it upon ourselves to use vector<int> ?
11:52:30raptorwell the idea was to make coding easy - and to be able to use the type that fits the job best
11:53:07raptorso if you can translage TNL::Vector<bool> into std::vector<int>, that seems fine to me
11:53:17raptorwhich is what we do now anyways, i think
11:57:18kaenyeah, it's real simple
11:57:37kaenI'll just do Vector<bool> : public std::vector<int>
11:57:53raptorok
11:59:10kaenthis also lets me rip out a bunch of our forwarding methods
12:08:10raptorkaen: what do you think about making classes that are engineerable sub-classes of their object? like we'd have Turret and EngineeredTurret
12:08:38raptorI mean, we have Item -> EngineeredItem -> Turret (which is also a child of Engineerable)
12:09:09raptormaybe we need it to be a 'Structure'
12:09:18raptorhmm.. such a mess
12:09:47kaenmy honest opinion is that you should do the simplest thing that will work
12:09:57kaenand that we should commit to restructuring the tree next release
12:10:00raptorlook the other way!
12:10:11raptorhmm
12:11:01kaenand when it comes to that point, we should try to kill our mixins and have things properly grouped into branches
12:11:57raptorwhat do you mean by 'branches' ?
12:13:00kaenbranches of the inheritance tree
12:13:33kaenpointobject, simpleline, barrier, and forcefield are all direct descendants of bfobject
12:13:38kaenthat is irrefutably broken
12:14:16raptorhmm
12:14:27kaenwe should have well-defined layers within our tree, and then have a sensible ontology of objects that abide by those layers
12:14:43kaenwe also kind of got a bum rap from the Zap guys for using different classes for the object types
12:14:49raptorwould we have multiple parents?
12:14:56kaenno, definitely not
12:15:27raptorbecause how could Teleporter and Turret possible be both BfObject and Engineerable in a single-parent tree?
12:15:48raptorone is SimpleLine, the other PointObject
12:16:19kaenwell, they really don't need to be split up by their geometry
12:16:39kaenthey could contain an object which handles the behaviors for that
12:16:41raptordo away with child-parent relationships via inheritance?
12:17:34kaenI think it's too much to ask to remove inheritance from the object type structure
12:17:41raptorso every BfObject would have a Repairable* object - but it would just be NULL for some?
12:17:49kaenno no
12:18:08raptorthis is where a whiteboard would be handy..
12:18:11kaenyeah...
12:18:49kaenbut I mean remove these moveobject, moveitem, simpleline, etc. interfaces from the tree
12:19:05kaentry to keep it strictly limited to BfObjects and their groupings
12:19:08raptorok I get that
12:19:16kaenusing only "domain logic" ontology
12:19:38kaenlike, these things are structures, these things are projectiles, etc.
12:19:48raptorthen how to consolidate and provide MoveObject stuff to the objects that need it?
12:19:59raptorwithout using MoveObject as a separate parent?
12:20:27kaenthe invariant of a bfobject is that it exists in the game world
12:20:38kaenso we could say there's some sort of movement/physics handler on every bfobject
12:20:52kaenwe use composition instead of inheritance there, that alone will help us clean it up a ton
12:21:06kaenthat same principle can probably be applied elsewhere
12:21:48kaenthen we have a whole separate tree of movement handlers, and each object type uses the one it needs
12:21:58kaenregardless of its position in the BfObject tree
12:22:14raptorok, that's sort of how watusimoto coded in GeomObject
12:22:21kaenthen we let virtual dispatch handle the magic
12:22:33raptorany BfObject has a GeomObject* member
12:22:42kaenyes, exactly like that
12:23:00raptorhmm
12:23:12kaenso maybe a PhysicsObject
12:23:26kaenbut let's not call it object, let's call it Handler
12:23:26kaenor Delegate
12:23:58kaento make it clear that it handles behavior, rather than modeling a domain object
12:24:10raptorok
12:24:12kaenwe're getting super whiteboardy here...
12:25:41raptorok, well, I think I need to let this stew for a bit in my head..
12:37:27kaengo all the way to UILevelInfoDisplayer ...
12:37:31kaenalmost there
12:37:36kaengot all the way*
12:37:59raptorheh
12:39:00kaenwe have a lot of "autological comparisons" according to clang
12:39:16kaeni.e. comparisons which will always be true or false
12:39:46kaenI guess only three
12:40:09kaenone in stringutils and two in InputCode
12:43:50raptorso they show up a lot
12:54:55kaenWOOOOOOOOOOOOOOOOOOOOO
12:54:58kaenYYYYYYYYYEAAHHHHH
12:55:04kaenboost::polygon is working.
12:55:11raptoroh?
12:55:37kaenyeah
12:55:44kaenstill needs refinement, but it works on a simple level
12:56:48raptordefine 'works'
12:56:52raptortriangulation?
12:57:00raptorerr... trapezoidation
12:58:01raptorso in our process: build input polys/holes -> clip -> triangulate -> merge into convex zones
12:58:07raptorwhich part works?
12:58:54kaenI've got it all the way up to trapezoidization
12:59:08kaenmerging pumping the connectivity graph should be simple
12:59:20kaenit succeeds on insignia apparently but I'm not pumping the data right
12:59:32raptorso what is the new process? build input polys/holes -> clip -> trapezoidate -> merge ?
12:59:43kaenyeah, same process
12:59:49raptoror just -> build -> done! :)
12:59:52kaenbut you should see all the code I was able to remove
13:00:00raptoroh I already believe it...
13:00:10kaenwell, we could do it all in one line once we have the inputs polys
13:00:17kaenbut I'm splitting it up for clarity
13:01:11raptorseems good to me
13:01:17raptori like clarity
13:14:49raptorif you want a good test map: http://sam6.25u.com/bitfighter/levels/qui_sarcophage.level
13:15:13raptorand of course: http://sam6.25u.com/bitfighter/levels/upload_Celtic_Arena.level
13:19:57thread_ Quit (Ping timeout: 250 seconds)
13:40:33raptorkaen: should I update our in-tree boost headers to 1.54? I should probably test it against all of our platforms..
13:40:45kaenyes, please
13:40:49raptorokey doke
13:47:24raptorkaen: can you tell me the exact objects you will be using?
13:47:34raptorand was there a non-header compilable part?
13:49:30Flynnn has joined
13:50:40kaen#include "boost/polygon/polygon.hpp"
13:50:56kaenlooks like everything there is header-only
13:50:58raptorperfect
13:51:01raptorthanks!
13:51:08kaenI need pretty much everything in boost/polygon
13:51:09kaenyep!
13:51:13raptorok
13:52:09kaenhuh. people are on
13:56:27Watusimoto has joined
13:57:13raptornow to use bcp...
14:05:55Watusimotohey, I just saw Gravity in 3D
14:06:04Watusimotopretty great, I think
14:06:14raptorno spoilers please!
14:07:19WatusimotoI would recommend seeing it in a theater, in 3D, and sitting close to the screen for the imersive effect
14:07:34raptoris the story good?
14:08:13Watusimotogood enough
14:08:44Watusimotoyes, good
14:09:43Watusimotoand, rare for a sci-fi movie, everything seems plausable and requires very little suspension of disbelief
14:09:58Watusimotothough, of course, it is a movie
14:11:04Skybax has joined
14:11:35SkybaxHerro
14:13:22raptorI have to test the new boost on osx 10.4...
14:14:47SkybaxCool
14:17:33Invisible1 has joined
14:23:19SkybaxI wonder if Quartz would mind if I made the BitTown official and made a thread about it with the specifications that I remember BitTown had before...?
14:23:51kaenOne thing I can tell you about Quartz
14:24:04kaenyou might as well flip a coin when you're trying to figure out how he'll react to anything
14:24:11SkybaxGood point
14:24:28kaenthe coin at least won't change its mind :P
14:25:24SkybaxI asked him to make the BitTown because he's a good mapmaker, and I thought that would make it turn out really well, but now I'm kind of really excited about it and I wanna do it myself lol
14:27:18SkybaxHmmmmm
14:28:24SkybaxIf I made it, would someone have a dedicated server to host it on? It would kind of defeat the purpose of the map if it wasn't always there
14:28:25raptortry #2 at getting new boost to compile...
14:29:17kaenon 10.4 raptor ?
14:29:29raptoryes - on Linux was cake
14:29:34kaengah
14:29:50raptorit's OK... I'm good at this type of thing
14:31:22raptorit compiled!
14:31:32kaennice!
14:32:50raptorbut exiting the editor crashes??
14:33:28SkybaxDid anyone see my question? xD
14:34:00raptorhttp://pastie.org/pastes/8410275/text
14:34:09raptorwhat do you make of that^^ ?
14:34:17raptorSkybax: which question?
14:34:47SkybaxThe one about someone having a dedicated server for me to put BitTown on
14:34:55raptoroh
14:35:12raptorI could set one up on the master server - but no guarantees it would perform that well
14:35:31raptorI'd just need a zipped up folder with all the levels in it
14:35:48SkybaxIt should only be one level (BitTown)
14:35:58raptoroh? hah
14:35:59raptorok
14:36:06raptorwell... I can still do that
14:36:11SkybaxOkay cool lol
14:36:31SkybaxI'll get to work then lol
14:36:35raptorbuit
14:36:37raptorbut
14:36:57Skybax?
14:37:04raptorif it has lots and lots of script stuff, it may be super laggy on the master server
14:37:08raptormaster server server
14:37:59SkybaxI have no idea how to script things. kaen mentioned something about a way to automate the compiling of other people's creations, but other than that, I have no plans to use scripts
14:40:13SkybaxWhat do we use to measure things in Bitfighter?
14:40:30raptorwhat unit?
14:40:33SkybaxYes
14:40:44raptorpoint?
14:40:56SkybaxLike if I had a wall, and I wanted to tell you how long it was, what would I say, and how would I find this measurement
14:41:01raptorso like a ship is about 50 points wide
14:41:10raptorand standard barrier is 50 points wide
14:41:17raptorship is 48, i guess
14:41:35raptorwall is 500 points long
14:41:48raptorthey correspond to editor coordinates
14:41:52SkybaxPoints sound really tiny and hard to count
14:42:20raptoryou could say 1 standard barrier width
14:42:27raptor10 sbw s
14:42:51raptorteleporters are about 2 sbws wide
14:42:54raptora ship is 1
14:44:17SkybaxPoints work lol
14:44:20Skybax1020!
14:45:20raptorok, that was a legitimate crash on OSX
14:45:24raptorwrote it down
14:45:31raptornothing to do with the new boost
14:46:10raptornow to try Windows...
14:46:36SkybaxActually 1020 seems kind of small now that I think about it.. hmmm... how to do this
14:47:01Watusimotoraptor: what ist hat pastie error?
14:47:33raptorcrash i got from osx: open empty level in editor, add barrier, exit
14:47:35raptorcrash!
14:47:35Watusimotolooks like a problem showing an error... but which one?
14:47:58raptoraww stink, i did copy that part...
14:47:59Watusimotowhy would a message box be displayed??
14:48:12raptor*didn't
14:48:15raptornot sure
14:48:56Watusimotowell, we have a bit of a problem in that getting these error messages to display is very difficult. I am looking for a way to cycle through them to make sure they all render properly
14:49:22raptormaybe the box was to be displayed for saving?
14:49:38Skybax1020 and 1530
14:50:12SkybaxMagic numbers
14:51:01raptorWatusimoto: here: http://pastie.org/pastes/8410319/text
14:53:34Flynnn Quit (Remote host closed the connection)
14:54:40raptorisn't there supposed to be a save box?
14:55:12Watusimotois that code up to date?
14:55:26raptoryes, i did a clean compile of latest
14:55:32raptorlast checked in, that is
14:55:42Watusimotoah, yes, the box displayed on exit
14:55:51Watusimotoright, probably a save message, yes
14:55:54raptorwell it doesn't anymore, on Linux - and crashes on OSX
14:59:56Watusimotook, crashes for me, so I should be able to fix
15:00:20thread_ has joined
15:00:27Watusimotoah, silly me
15:03:57SkybaxWatch this https://www.facebook.com/photo.php?v=10151802534338876&set=vb.170901143077174&type=2&theater
15:04:59Watusimotofixed
15:05:14raptoryay!
15:05:29raptortry# 2 at new boost on windows...
15:06:49BFLogBot Commit: abfc0492faa8 | Author: watusimoto | Message: Fix bug in wrapString, add wrapping on newlines, add testing to verify at least some functionality
15:06:50BFLogBot Commit: 8861e7e2b4ca | Author: watusimoto | Message: Key shape
15:06:52BFLogBot Commit: 81d7620c5bc2 | Author: watusimoto | Message: Merge
15:06:53BFLogBot Commit: f85e2050f5af | Author: watusimoto | Message: Convert the Vector error messages into simple strings. I like this better.
15:06:54Watusimotopretty simple, once I found it
15:06:55BFLogBot Commit: 24ce13cb4c90 | Author: watusimoto | Message: Fix Y/N dialog crash by removing duplicate code.
15:12:28raptorkaen: it looks like there's an optionally compilable boost-math library of sorts... but I don't think we need it
15:13:40kaenI think you're correct in that
15:14:04SkybaxHow many teams can play at once?
15:14:14kaenI want to say 9
15:14:24kaenopen the editor and hit F2 then + a bunch of times
15:14:35kaenor insert or whatever it is
15:14:58kaenalso I always just say "unit"
15:15:01kaen1000 units etc
15:15:49SkybaxIf I go into the "configure teams" it lets me put in nine and then it says "too many teams for this interface" does that mean you can manually add more teams within the level code?
15:16:09raptor9
15:16:12raptor9 is max
15:16:32raptornonono, you do more than 9 in a level file... i'm not sure what will happen, but they won't work
15:16:44SkybaxI WANNA TRY IT NOW
15:16:48Watusimotoyeah, don't do it
15:16:57Watusimotowhy do you want more than 9 teams???
15:17:01SkybaxWhat happens???
15:17:11kaenWatusimoto, for science!
15:17:19Watusimotomad science
15:17:23kaenSkybax, really can't hurt to try, just don't publish a level like that
15:17:39Watusimotowhat if it breaks his computer? I don't want that on me
15:17:39SkybaxBecause it's potentially crashable?
15:17:42kaenhopefully it just ignores the teams after the ninth
15:17:52WatusimotoI mean he could get a shock or somehting
15:18:01kaenoh yeah, that's right
15:18:04raptorif he has the guts to push the limits, he has the guts to break his computer
15:18:08SkybaxYey
15:18:14kaenthe spontaneous-combustion-with-more-than-nine-teams problem
15:18:17WatusimotoSkybax: before you try it, have a friend stand by with a briomm to push you away from your computer if something goes wrong
15:18:34SkybaxThat was the most interesting way to spell "broom" I've ever seen
15:18:34kaena vexing and long-standing problem in computer science
15:18:41raptorhaah
15:19:20WatusimotoI get excited and the spelling part of my brain just turns off
15:19:33SkybaxEven if it does work, though... my keyboard only has nine number keys... so I would have to add everything to do with that team manually xD
15:19:51fordcars has joined
15:22:02raptorsuccess!
15:23:35SkybaxI just added 12 teams. I'm gonna test it
15:24:45SkybaxOwait. I have to manually add spawn points first :3
15:26:32SkybaxNope. Anything after ninth team becomes team 1
15:28:04SkybaxAnd it deletes the extra teams from the code upon saving the level
15:29:58raptorok Watusimoto, kaen, big checkin coming up
15:30:29SkybaxWhy does Bitfighter say "this interface" if it's not possible to add more teams!?
15:30:48kaenit's probably referring to the "user interface"
15:30:52kaenwhich means that menu
15:31:06kaenwhich means it physically can not fit any more teams on the screen
15:31:13kaen^ all conjecture
15:31:21SkybaxI think it should just say "team limit max" or something
15:31:35SkybaxThis makes it sound like a smart user could find a way to add more teams using a different interface
15:31:42kaenthat's a good point
15:32:16raptorhere she comes!
15:32:56BFLogBot Commit: 947c4be387e8 | Author: buckyballreaction | Message: Update boost to 1.54. Add in boost/polygon. Also define BOOST_ALL_NO_LIB in boost/config/user.hpp so boost doesn't try to auto-link in non-header-only boost libraries
15:34:53raptorboost updated!
15:35:10raptorverified compiled on all 3 platforms
15:35:23SkybaxHoo rah
15:36:18Watusimotoso what does this mean?
15:36:44raptorit means... we have boost.geometry for kaen
15:36:53Watusimotogreat! how does it work?
15:36:55raptorsince our previous version didn't have it
15:36:59raptorask kaen
15:37:04WatusimotoI am!
15:37:19raptoryes, you are... ?
15:37:25kaenummm I actually don't need boost.geometry
15:37:29kaenjust boost.polygon
15:37:33raptoroh, that's what i meant
15:37:36kaenbut boost.geometry can't hurt \o/
15:37:36raptoryes
15:38:00kaenregarding "how does it work"
15:38:02SkybaxxD
15:38:19kaenit works for simple levels, I have to implement a polygon_with_holes concept and traits pair
15:38:23kaenthen we'll see how it works with complex levels
15:38:39Watusimotowe don't use polys with holds
15:38:41Watusimotoholes
15:38:59raptoroh yes we sure do
15:39:02kaenyeah, but the result of polygon boolean operations create holes, and I need to operate on those to get trapezoids
15:39:07raptor^^ that
15:39:13Watusimotook
15:39:36kaenas a bonus, the lua poly stuff I exposed will stop crashing and generally be much more robust
15:44:07SkybaxI'm eating a chicken pot pie
15:45:47raptordone break your teeth on the pot
15:45:56raptoror maybe it's the other kind..
15:46:12SkybaxThe microwave kind lol
15:46:16thread_kaen can you help me? I'm having troube using the event "ShipEneteredZone" in 019.
15:46:32thread_I can check if its a goal by "if (zoneType == 15) then"
15:46:34SkybaxAlthough this specific pie took 11 minutes to cook.. apparently it had raw meat in it
15:46:47thread_but checking for loadout or zone don't work
15:47:00thread_...is there a better way to do type checking?
15:50:03thread_or did I somehow hit a bug?
15:50:26thread_or raptor, you might have an idea... maybe?
15:53:09raptorhi
15:53:12raptoruhh...
15:54:04raptorif(zoneType == ObjType.GoalZone) then...
15:54:11raptorthat should work
15:54:34raptorhttp://bitfighter.org/luadocs/group___obj_type_enum.html
15:58:39thread_I'll give it a try
15:58:55SkybaxI'm writing a post for BitTown v2.. it's long
15:59:05thread_i just always used the number 15, because thats the output of logprint(zoneType)
16:01:23fordcarsoh wow ok
16:01:51thread_It works, thanks raptor.
16:06:54Invisible1 Quit (Ping timeout: 246 seconds)
16:13:58raptoryou're welcome
16:14:05SkybaxP-p-p-p-p-p-POSTED
16:15:01thread_ Quit (Ping timeout: 250 seconds)
16:16:02SkybaxWould it be possible to make a script that automatically assigns someone with a certain username to a certain team and doesn't allow them to change?
16:16:17SkybaxAnd if so, would it be difficult and/or large? xD
16:17:12raptornot in 018a
16:17:42raptorbut in 019... i'm not sure; kaen, did we program something for 019 Lua API to allow switching a players team?
16:18:11raptorthis is how you know it's been too long since releasing - when I forget work I've done already
16:19:02SkybaxHow long until 019 is released?
16:19:39raptorit's been about 6 months or so already, I think
16:19:46raptorman, that's crazy
16:20:17SkybaxFord took green lol
16:20:33fordcarshehehehe
16:20:38raptoraww, that's what I would have taken...
16:20:49SkybaxYou can have winter green lol
16:20:52raptormaybe a little darker green, too...
16:21:11fordcarsSKYVBAX
16:21:14SkybaxWhat lol
16:21:19fordcarsI was working on that in 018a
16:21:21raptorI'm not sure I can enter a house yet...
16:21:29fordcarsA modification of the client, no Lua
16:21:38SkybaxWorking on a script that assigns players to teams?
16:21:38fordcars*server
16:21:48fordcarsNo, working Application/exe
16:21:55fordcarsBut, it's not working yet :P
16:21:59raptormodded clients won't fly - everyon would need one and for each platform...
16:22:05fordcars*server
16:22:08fordcars*server
16:22:08fordcars*server
16:22:08fordcars*server
16:22:08fordcars*server
16:22:18fordcarsJust edits a txt
16:22:20Skybaxraptor is hosting the server
16:22:28fordcarsok
16:22:39fordcarslater guys, I'll be back in an hour
16:22:44SkybaxBai
16:23:37Skybaxraptor, why would you be unsure if you can enter a house? lol
16:25:58raptorbecause of the time required
16:27:09fordcars Quit (Ping timeout: 250 seconds)
16:27:11SkybaxLike you don't have enough time or you won't finish it in time?
16:27:47raptori didn't see a date on it
16:28:00SkybaxYeah I was gonna say cause there's no deadline lol
16:28:03raptorbut yeah, might not have enough time
16:28:22SkybaxYou must have a really busy schedule if you don't have enough time to make a small map lol
16:29:25raptorwell, I have lots of responsibilities, and I usually get stuck doing things until they're perfect :)
16:30:21SkybaxWell if you get a stroke of inspiration and can make a "perfect" house, pick a color and I'll put your house in lol
16:43:05fordcars has joined
16:43:39SkybaxWb
16:44:08raptorso did people really do this for the first bittown? make houses and aggregate them into one map?
16:45:13fordcarsI guess
16:47:27SkybaxYes
16:47:44SkybaxAnd other things too. Not just houses
16:47:53SkybaxIt's was ginormous
16:49:56fordcarsSkybax, you could modify 018a code to make Bitfighter Server modify an external txt with each player's team.
16:50:17fordcarsNormal Bitfighter clients would work just fine
16:52:58SkybaxI have no idea how to do that lol
16:53:09SkybaxBut that sounds awesome
16:53:39Darrel Quit (Quit: IRC client killed.)
16:56:53SkybaxCan you teach me? xD
16:57:08raptorI don't recommend running a hacked server
16:57:30raptorWatusimoto: GCI is starting soon, I think
16:57:52Watusimotooh yes, that
16:58:01Watusimotodo we have needs?
16:58:56fordcarslol skybax
16:59:02raptoruhh
16:59:04fordcarsraptor, it's the only way?
16:59:56raptorWatusimoto: I'm not sure - do we want t-shirts?
17:00:03Watusimotoof course!
17:00:24raptorit's my wife's favorite shirt, still... and it hasn't spontaneously combusted yet!
17:00:42Watusimotojust don't wear it near open flame or in strong sunlight
17:00:50raptorfordcars: I don't want to run a modded server on the master server server
17:01:06raptoralso, I'm worried about stability, and honestly I think it is more effort than it's worth
17:03:08fordcarsok raptor
17:04:18WatusimotoI should be around most of December and January
17:05:41SkybaxWhat is GCI
17:06:22fordcarsGoogle code-in
17:06:33fordcarsA google coding contest
17:06:37SkybaxAhhhh
17:06:39SkybaxCool lol
17:06:48fordcarsNormal Bitfighter participates :)
17:07:04fordcarsNormally
17:07:24fordcarswell normally, I think Bitfighter participated once :P
17:07:43raptorWatusimoto: I think it's earlier this year
17:07:49raptorlike in 3 weeks
17:08:00Watusimotowell, we better get thining
17:08:02Watusimotothinking
17:08:04raptorseems like it's being phased out, but that's a guess...
17:08:08raptorthickening!
17:08:19Watusimotowhy do you say that
17:08:27Platskies has joined
17:09:34fordcarsIt's november 1!
17:10:13raptorbecause this year you can only join if you been part of it before
17:10:19raptoras an organization, i mean
17:10:47raptorhttps://www.google-melange.com/gci/org/application/google/gci2013
17:10:59Watusimotoah, I see... you may be right
17:12:30raptorhow do we contact that arc fellow
17:12:55raptoroh hey, he's logged on... let me ping him
17:13:26Watusimotoah yes, arc
17:24:49raptorno response yet..
17:34:14raptorwell I'm heading home
17:34:16raptorlater!
17:34:34raptor Quit ()
17:34:42Nothing_Much Quit (Quit: bleep)
17:37:16Nothing_Much has joined
17:43:19SkybaxHow do you make the time and score unlimited?
17:44:05Watusimotodo it in the F3 properties
17:44:17Watusimototime = 0 is unlimited, I think
17:44:21Watusimotoprobably same for score
17:44:43SkybaxSo you have to do it in-game?
17:44:57SkybaxOr can I just put 0 0 in the level file?
17:45:19kaenask Bitfighter :)
17:45:39Watusimotoprobably
17:45:40SkybaxxD
17:46:06Watusimotoyou can do it in the level editor (F3), then look at the level file to confirm
17:46:29SkybaxI did it in the level. It worked
17:46:41Watusimotogreat
17:46:49Watusimotogentlemen... to sleep!
17:46:54SkybaxNight wat
17:49:32BFLogBot Commit: bbdfc3e6131b | Author: watusimoto | Message: Make things look better
17:49:33BFLogBot Commit: 5661f2c78a96 | Author: watusimoto | Message: Fix rank ugliness of interstitial screen shown when waiting for high scores, convert high scores to new font. See the spinner in action!
17:49:35BFLogBot Commit: 845e20b80f9b | Author: watusimoto | Message: Merge
17:50:07SkybaxEhhhhh... actually.. that didn't work... I can't set the score to 0
17:50:21SkybaxMinimum score is 1
17:50:25SkybaxIt resets it
17:51:16SkybaxIs there no unlimited score?
17:51:37Skybaxfordcars, halp me
17:51:38Skybaxlol
17:52:36SkybaxNvm I found a workaround.. I don't think anyone will ever get 999999999999999999999999999999999999999999999999999 points
17:53:46SkybaxIs there any way to change how often the flag gives you a point while you're holding it?
17:54:15fordcarsUh, I don't think so...
17:54:44SkybaxDarn
17:55:46Watusimoto Quit (Ping timeout: 265 seconds)
17:56:48fordcarsWhy?
18:02:40SkybaxI wanted to make it so the flag only gave 1 point per minute
18:02:55SkybaxI think that should be an option in the level params >.>
18:04:32SkybaxThen it would require you to defend it longer to actually get a point
18:28:25Platskies Quit (Quit: Sleep time…)
18:40:00SkybaxAnyone wanna see BitTown so far? I've pretty much done all I can do for now, unitl people start submitting things
18:40:14SkybaxUnless I decide to make some BitTown Attractions myself x)
18:41:19fordcarsI would, but I am extremely busy tonight :P I will have the whole weekend though :)
18:41:46fordcarsbobdaduck levelgens would make some fun attractions :P
18:44:13SkybaxThat's what I said in my post on the forums lol
18:44:47SkybaxI'm unsure how much raptor's server can handle tho
18:44:58SkybaxHe said he was uncertain of it's stability
18:45:06SkybaxEspecially if there were scripts involved
18:45:42fordcarsI think he was talking about having the sever put the players in the right teams automatically
18:45:52fordcarsBy the way, BitTown is gonna be AWESOME!!!!
18:46:01SkybaxWell he said that before we even mentioned the modded server lol
18:46:05SkybaxAND YES IT IS
18:50:46Skybaxfordcars lol it's says you're in-game x)
18:51:16fordcarsYeah sky, I was checking if people were playing
18:51:20fordcarsThere is a new kid
18:51:27fordcarsSo I am forced to stay :P
18:51:37SkybaxHa xD
18:51:54SkybaxWhile you're there you should drop in to my server and glance at BitTown
19:01:18fordcarsYOu should be able to add an unlimited amount of teams in the level file i think
19:06:16fordcarsSkybax, I checkout the Town by the way! It's nice!
19:13:06SkybaxYay
19:13:10SkybaxANd no I tried
19:13:20SkybaxAfter the ninth team saving the file just deletes them
19:13:29SkybaxAnd they don't show up in-game either lol
19:16:36SkybaxAnd any item that I set to that team just shows up as a team 1 item
19:22:29fordcarslol ok
19:25:27Skybax Quit (Ping timeout: 272 seconds)
19:45:04raptor has joined
19:45:04ChanServ sets mode +o
19:48:20raptorI bet we could expand to 13 teams and not impact network performance...
20:20:48BFLogBot Commit: 0abba5e11620 | Author: buckyballreaction | Message: Fix linking error in Linux
20:29:11Flynnn has joined
20:47:48Flynnn Quit (Quit: This computer has gone to sleep)
20:48:37raptor Quit ()
21:04:16ShadowXLoner has joined
21:16:13ShadowXLoner Quit (Quit: Colloquy for iPod touch - http://colloquy.mobi)
21:55:27Flynnn has joined
22:04:51Flynnn Quit (Quit: This computer has gone to sleep)
22:18:17Flynnn has joined
23:53:00Skybax has joined
23:53:29SkybaxHello
23:54:24Skybaxraptor, I like 13 teams much better than 9
23:55:50fordcarsHi

Index Search ←Prev date Next date→

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