Timestamps are in GMT/BST.
| 00:01:31 | sam686 | oh i see, F32(Platform::getRealMilliseconds()) / 3500.0f on a extremely huge millisecond number |
| 00:01:42 | sam686 | floating point loses accuracy on huge number |
| 00:02:58 | raptor | with vc++ compiler |
| 00:03:36 | sam686 | it only gets more jerky the higher the getRealMilliseconds() is |
| 00:18:32 | Watusimoto | HA!!!!! |
| 00:19:48 | raptor | fine fine |
| 00:21:59 | | BFLogBot - Commit bd7aff333d5a | Author: watusim...@bitfighter.org | Log: Trivial |
| 00:22:01 | | BFLogBot - Commit fac971fdc584 | Author: watusim...@bitfighter.org | Log: sqlite compiles, untested execution, havenàt even tested compile on mysql, will do so soon |
| 00:22:40 | raptor | what extended char? |
| 00:24:19 | | sam686 Quit (Read error: Connection reset by peer) |
| 00:25:21 | | sam686 has joined |
| 00:25:21 | | ChanServ sets mode +v sam686 |
| 00:26:28 | sam686 | master\database.cpp(365) : error C2664: 'TNL::Vector<T>::push_back' : cannot convert parameter 1 from 'const mysqlpp::String' to 'const TNL::StringTableEntry &' |
| 00:26:28 | sam686 | with[ T=TNL::StringTableEntry ] |
| 00:26:28 | sam686 | Reason: cannot convert from 'const mysqlpp::String' to 'const TNL::StringTableEntry' |
| 00:26:28 | sam686 | No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called |
| 00:28:26 | sam686 | oh, easy fix: names.push_back(StringTableEntry(results[i][0])); |
| 00:31:45 | sam686 | hopefully, my changes to code should make shield rotation a lot smoother all the time. |
| 00:32:03 | | BFLogBot - Commit 4b82f22d2882 | Author: sam8641 | Log: Fix inaccurate shield rotation, converting big numbers from getRealMilliseconds to F32 loses accuracy. |
| 00:41:33 | raptor | now to looks at that burst problem.. |
| 00:44:15 | raptor | ../master/database.cpp: In destructor ‘DbQuery::~DbQuery()’: |
| 00:44:16 | raptor | ../master/database.cpp:481:14: warning: deleting ‘Query* {aka void*}’ is undefined [enabled by default] |
| 00:49:52 | raptor | question to anyone who want to raise their hand: the collisionPoint for a burst seems to be always 0, 510 |
| 00:49:55 | raptor | why? |
| 00:59:40 | raptor | wait |
| 00:59:42 | raptor | haha |
| 00:59:48 | raptor | it's the position of the core |
| 01:04:13 | | Watusimoto Quit (Ping timeout: 276 seconds) |
| 01:10:20 | raptor | burst hits the right panel now |
| 01:10:27 | raptor | but only one... |
| 01:12:07 | | BFLogBot - Commit 75c14427f707 | Author: buckyballreaction | Log: Fix area-damage weapons not hurting the right Core panel |
| 01:12:54 | raptor | that's because Core panels aren't gameobjects.. |
| 01:34:45 | | raptor Quit (Ping timeout: 248 seconds) |
| 01:58:26 | | raptor has joined |
| 01:58:27 | | ChanServ sets mode +o raptor |
| 02:06:24 | | sam686 Quit (Ping timeout: 245 seconds) |
| 02:07:30 | | sam686 has joined |
| 02:07:36 | | ChanServ sets mode +v sam686 |
| 02:15:09 | | sam686 Quit (Ping timeout: 245 seconds) |
| 02:16:36 | | sam686 has joined |
| 02:16:36 | | ChanServ sets mode +v sam686 |
| 02:32:32 | | Little_Apple has joined |
| 02:32:41 | Little_Apple | hellooo |
| 02:32:50 | raptor | good evening |
| 02:33:05 | Little_Apple | VAMPIRES |
| 02:35:32 | Little_Apple | i like einstein. |
| 02:37:35 | | Little_Apple Quit (Quit: Page closed) |
| 03:14:50 | sam686 | ok.... that sounded like a thunder storm outside, raining, with some snow on the ground, at 34 degrees F. |
| 03:15:17 | raptor | wow |
| 03:15:40 | sam686 | i heard one thunder sound so far... |
| 03:38:33 | raptor | sam686: have you tried the boost module much? |
| 03:38:38 | raptor | if so, what do you think? |
| 03:39:06 | sam686 | is there any changes to boost? |
| 03:39:23 | raptor | just my addition of 'pulse' |
| 03:39:30 | raptor | double tap to use it |
| 03:39:44 | raptor | it was a few weeks ago... but i never heard your opinion on it |
| 03:41:42 | sam686 | the double tap boost seem to use up too much energy (when your energy is full) |
| 03:41:49 | raptor | that is the point |
| 03:42:10 | raptor | it uses all available energy and gives to an impulse according to the energy you have left |
| 03:42:28 | raptor | so small amount of energy = small impulse |
| 03:43:34 | sam686 | besides, i can often get jsut about the same boost type by using 2 burst and a little bit of shield |
| 03:43:44 | raptor | yep |
| 03:43:54 | raptor | it isn't supposed to give much advantage |
| 03:44:03 | raptor | just an idea to try out |
| 03:55:07 | raptor | sam686: do you get a GL ERROR: 1282 when you enter the editor? |
| 03:55:36 | raptor | you have t oopen a level with a Core in it.. |
| 03:55:48 | sam686 | i see GL ERROR 1282 and 1284 (2 numbers...) |
| 03:56:02 | raptor | interesting - i only see 1282 |
| 03:57:06 | sam686 | i guess that is coming from oglconsole.c line 93 |
| 03:57:07 | | LoneWolfy Quit (Remote host closed the connection) |
| 03:57:27 | | LoneWolfy has joined |
| 03:57:45 | | Wolfy has joined |
| 03:58:11 | | Wolfy is now known as Guest8852 |
| 03:59:15 | sam686 | or maybe, something is making an error, which makes glGetError return non zero |
| 04:02:10 | | Guest8852 Quit (Ping timeout: 246 seconds) |
| 04:02:10 | | LoneWolfy Quit (Ping timeout: 246 seconds) |
| 04:06:33 | raptor | why do we have 5 burst graphics modes? |
| 04:06:40 | raptor | does anyone even use them? |
| 04:07:19 | sam686 | not sure, i don't know as that option, i think, has been there for a long time, probably all the way back before 014 |
| 04:07:54 | raptor | karamazovapy? any input on why we have 5 burst graphics modes, and if anyone actually uses it? |
| 04:24:10 | raptor | sam686: is there a reason that ClientGame is a child of FXManager, instead of just making the FXManager have static member functions? |
| 04:28:31 | raptor | i'm going to make it a static class |
| 04:28:40 | raptor | err, i mean with static members |
| 04:28:51 | raptor | so we don't need ClientGame to call it |
| 04:38:58 | sam686 | 1. server game doesn't use FXManager 2. it is not very good for each ClientGame to share the same fx manager (if it happen to be in a same process) 3. static variables take up memory even if they are not used (dedicated serverGame) |
| 04:39:41 | raptor | 1. is not a problem because we use ifdefs |
| 04:40:09 | raptor | 2. Can there be more than one ClientGame? |
| 04:40:13 | sam686 | it is possible to have a normal bitfighter build, using -dedicated |
| 04:40:44 | sam686 | 2. maybe in the future, but probably not, i guess... |
| 04:42:01 | raptor | 3. is it because every static member is kept on the stack? |
| 04:43:32 | sam686 | every static and global variables (including static int data1[200000] and "static Robot z") take up memory |
| 04:44:04 | sam686 | they are immediately created at program startup, they are never freed (until program terminates) |
| 04:45:09 | sam686 | several veriables, like "static Robot *a_pointer_variable" take up only 4 bytes of memory, but others like "int data[100000]" take up a lot of memory |
| 04:45:28 | raptor | interesting |
| 04:45:30 | raptor | ok |
| 04:48:06 | sam686 | FXManager class contains U32 firstFreeIndex[SparkTypeCount]; and others, which may take up a lot of memory. try "printf("%i", sizeof(FXManager));" to find out the size. |
| 04:49:31 | raptor | well - i want to be able to call the FXManager without using ClientGame |
| 04:49:41 | raptor | what would be a good way to do that? |
| 04:49:52 | raptor | use a global pointer, like gFXManager? |
| 04:50:00 | sam686 | gClientGame ? |
| 04:50:26 | raptor | that's the thing - i don't want to include ClientGame.h just to use the FXManager |
| 04:53:03 | sam686 | or, you can use a global FXManager *gFXManager = gClient |
| 04:53:11 | sam686 | or, you can use a global FXManager *gFXManager = gClientGame |
| 04:53:46 | raptor | I coded the SoundSystem as all static... now I question how good that was... |
| 04:53:52 | sam686 | or, have a game.h virtual function getFXManager() |
| 04:55:02 | sam686 | that must be the best option in game.h: virtual FXManager *getFXManager() {return NULL}; ClientGame.h FXManager *getFXManager() {return this;} |
| 04:55:48 | raptor | So I'd include game.h instead of CLientGame.h? |
| 04:55:54 | sam686 | yes |
| 04:56:07 | sam686 | after all, both server and client need game.h most of the time |
| 04:56:28 | sam686 | all GameObjects have getGame() |
| 04:56:41 | raptor | ok |
| 04:58:07 | raptor | should I do something similar with SoundSystem? because I made everything static.. |
| 04:58:34 | sam686 | probably, i guess... |
| 05:00:03 | sam686 | or, not sure about soundsystem, as normal build and running as -dedicated will anyway do sound when player joins |
| 05:02:08 | | zoomber_mbp has joined |
| 05:02:17 | zoomber_mbp | hey raptor |
| 05:02:30 | raptor | good evening |
| 05:02:45 | zoomber_mbp | so on the homepage right now, can you explain the timespans for booth colums? |
| 05:03:01 | zoomber_mbp | let me rephrase myself |
| 05:03:14 | zoomber_mbp | the leaderbords, what are the timespans for the ones on the first colum |
| 05:03:33 | zoomber_mbp | well shoot, thats not how I spell column |
| 05:04:16 | raptor | one week |
| 05:04:23 | raptor | sunday to sunday |
| 05:04:36 | raptor | the 'current' lists mean since the last Sunday |
| 05:04:50 | zoomber_mbp | Most official wins:? |
| 05:05:13 | sam686 | dumb question, will running a normal build of bitfighter and running with -dedicated play music files? |
| 05:05:17 | raptor | the post explains what an 'official win' is |
| 05:05:34 | raptor | sam686: not sure... |
| 05:06:31 | sam686 | it seems like it tries to play music (but nothing is in my music folder) even when using ./bitfighter -dedicated command (on non dedicated build) |
| 05:06:33 | zoomber_mbp | Still having trouble with it though, for the "week" _k has 6 game wins, but for Official wins, has MORE |
| 05:07:07 | raptor | ok, let me see if i can clarify by renaming the table titles.. |
| 05:07:15 | zoomber_mbp | let me rephrase that question raptor, do graphed square roots of x go in the NEGATIVE? |
| 05:07:45 | raptor | sure why not? |
| 05:08:23 | sam686 | square root of 2 never go negative |
| 05:08:48 | sam686 | or, at least not in C++ programming.. |
| 05:11:45 | zoomber_mbp | you tell em sam686 |
| 05:11:58 | raptor | -4^2 is 16, right? |
| 05:12:08 | raptor | so sqrt(16) = +/- 4? |
| 05:12:15 | raptor | :) |
| 05:12:23 | zoomber_mbp | raptor: when dealing with functions..y |
| 05:13:00 | zoomber_mbp | it just pops up from the corner of the graph and slowly goes out towards infinity,Infinity |
| 05:13:19 | zoomber_mbp | your logic isn't false though |
| 05:13:36 | sam686 | yes, but C++ programming sqrt(9) don't return 2 numbers, does it? it only returns a positive number (or zero, or NAN, depending on input)) |
| 05:14:01 | raptor | but i'm not talking about c++... |
| 05:14:08 | zoomber_mbp | yes, and quite possibly i bet it can return negative numbers if it lets you add integers to the square root part right? |
| 05:14:37 | zoomber_mbp | like sqrt(4) - 2 |
| 05:14:41 | zoomber_mbp | sorry |
| 05:14:42 | raptor | sure, any negative constant added to the function will drop the curve |
| 05:14:45 | zoomber_mbp | sqrt(x)-2 |
| 05:16:08 | zoomber_mbp | it still won't pop up in your function graph |
| 05:16:26 | zoomber_mbp | only half the curve will show |
| 05:16:34 | zoomber_mbp | unless it's odd |
| 05:16:47 | raptor | y = x ^(1/2) |
| 05:16:47 | sam686 | what is a cube root of -9 ? |
| 05:18:46 | zoomber_mbp | my guess is 2i something |
| 05:19:13 | raptor | some -2.something |
| 05:19:25 | zoomber_mbp | oh yeah, your right |
| 05:19:39 | zoomber_mbp | i forgot that it's an odd cube root |
| 05:20:06 | zoomber_mbp | raptor: that function will graph a curve into the negative? |
| 05:20:35 | raptor | negative what |
| 05:20:37 | raptor | x or y? |
| 05:20:44 | zoomber_mbp | y = x ^(1/2) |
| 05:20:46 | raptor | negative x, yes |
| 05:21:29 | sam686 | (-2.0800838230519041145...) ^ 3 = -9, right? |
| 05:21:49 | sam686 | so, there is no such imagenary number of a cube root of a number |
| 05:22:08 | raptor | wait wait |
| 05:22:32 | zoomber_mbp | yeah yeah, but there would be if it was an even root |
| 05:23:01 | zoomber_mbp | and raptor, I was referring to the fact that you couldn't get negative y, not negative x |
| 05:23:47 | zoomber_mbp | as in, when you graph x*x, you get domains and ranges of anything, but square rooting an x will only give you a range of > 0, not the whole under-curve |
| 05:23:53 | sam686 | cube root can return negative number |
| 05:24:11 | raptor | ah yes |
| 05:24:27 | raptor | i like this tool: http://www.quickmath.com/webMathematica3/quickmath/graphs/equations/basic.jsp#v1=y%3Dx^%281%2F2%29&v2=-16&v3=16&v4=-4&v5=4 |
| 05:25:33 | zoomber_mbp | raptor, try using these 4 numbers on that site, for your window: x = -10, and x = 10, same for y |
| 05:25:44 | zoomber_mbp | then put y=sqrt(x) |
| 05:26:53 | zoomber_mbp | notice though, you can still plot negative square roots |
| 05:26:58 | raptor | weird, no result |
| 05:27:11 | zoomber_mbp | y=sqrt(x) should give you one curve |
| 05:27:16 | zoomber_mbp | make sure your window is all 10s and -10s |
| 05:27:22 | sam686 | sqrt(x) + sqrt(x+1) + sqrt(x+3) + sqrt(x / 2) + sqrt(x / 3) + sqrt(x / 4) + sqrt(x / 5) * sqrt(x / 6 + 2) / sqrt(x / 7 - 3) Good luck trying to draw hundreds of lines if sqrt returns 2 numbers.. |
| 05:27:30 | raptor | sorry, i'm currently focused on something else at the moment... |
| 05:28:16 | zoomber_mbp | sam, it seems if that doesn't seem to want to load |
| 05:28:19 | zoomber_mbp | oh never mind, there it goes |
| 05:29:36 | zoomber_mbp | sam, that gives me the weirdest graph |
| 05:36:57 | | zoomber_mbp has left |
| 06:01:28 | | raptor Quit () |
| 08:00:36 | | Watusimoto has joined |
| 08:20:59 | | sam686 Quit (Ping timeout: 245 seconds) |
| 08:22:54 | | Watusimoto Quit (Ping timeout: 252 seconds) |
| 08:57:39 | | watusimoto has joined |
| 08:57:40 | | ChanServ sets mode +o watusimoto |
| 11:09:51 | | watusimoto Quit (Remote host closed the connection) |
| 13:27:16 | | LordDVG has joined |
| 14:05:47 | | watusimoto has joined |
| 14:05:47 | | ChanServ sets mode +o watusimoto |
| 14:23:08 | | LordDVG Quit (Ping timeout: 240 seconds) |
| 14:42:00 | | LoneWolfy has joined |
| 15:09:50 | | raptor has joined |
| 15:09:50 | | ChanServ sets mode +o raptor |
| 15:43:14 | raptor | hello |
| 15:45:06 | raptor | watusimoto: I have a c++ coding question for you. I asked sam686 what he thought last night, and now I'd like your opinion |
| 15:45:14 | raptor | FXManager is the parent of ClientGame |
| 15:45:31 | raptor | I thought to make it not so, and make it's members/methods static |
| 15:46:08 | raptor | that way we don't have to always have to get the ClientGame to emit a spark |
| 15:46:35 | raptor | and we'd save on a few dynamic_casts and it'd be cleaner in the code |
| 15:47:09 | raptor | would this be a good idea? |
| 15:52:45 | raptor | some benefits: |
| 15:53:27 | raptor | i mean, another benefit: we wouldn't have to include 'ClientGame.h' every time we'd want to create effects |
| 15:53:41 | raptor | sam686 gave 3 reasons against: |
| 15:54:33 | raptor | 1. serverGame doesn't use FXManager (in the case of running bitfighter -dedicated) |
| 15:54:52 | raptor | 2. Multiple ClientGames wouldn't have their own FXManager |
| 15:55:27 | raptor | 3. static data requires more constant memory to the program |
| 16:13:19 | | watusimoto Quit (Ping timeout: 244 seconds) |
| 17:23:49 | | Watusimoto has joined |
| 17:24:26 | raptor | hi Watusimoto |
| 18:26:16 | | LordDVG has joined |
| 18:46:15 | | Watusimoto Quit (Ping timeout: 244 seconds) |
| 20:52:31 | | LordDVG Quit (Remote host closed the connection) |
| 21:00:47 | karamazovapy | hey raptor - double tap isn't a good implementation for a secondary boost feature |
| 21:01:13 | karamazovapy | strobing is one of the most effective ways to use that module |
| 21:01:38 | raptor | hi |
| 21:01:40 | raptor | yes |
| 21:01:50 | raptor | i made sure strobing still works |
| 21:01:54 | karamazovapy | RABBLE RABBLE RABBLE |
| 21:02:11 | raptor | unless you strobe twice within 250 ms |
| 21:02:28 | karamazovapy | I think people tap about as fast as they can |
| 21:03:03 | raptor | for strobing? |
| 21:03:12 | karamazovapy | yeah, to cover large distances |
| 21:03:40 | raptor | maybe there should be a small cost to prevent abuse |
| 21:03:54 | raptor | like with sensor and cloak |
| 21:04:05 | karamazovapy | prevent what abuse? |
| 21:05:35 | raptor | doing some tests - tapping really fast covers no more distance than tapping at a slower rate - as long as the button down time equals button up |
| 21:07:18 | karamazovapy | want to race and put that theory to the test? |
| 21:08:11 | raptor | is there an acceleration advantage? |
| 21:08:44 | karamazovapy | my gut says faster tapping is faster, but that could be a fallacy |
| 21:08:55 | raptor | and yes, a race would prove me wrong.. good idea |
| 21:09:05 | raptor | have a test map? |
| 21:09:16 | | koda has joined |
| 21:22:53 | | sam686 has joined |
| 21:22:53 | | ChanServ sets mode +v sam686 |
| 21:38:25 | karamazovapy | http://youtu.be/MwOdD4WebIk |
| 21:39:15 | karamazovapy | got a bit lazy midway through |
| 21:48:32 | sam686 | repeatedly tapping the boost button won't going to make you go faster or slower against a player who use all the boost at once if using the same amount of energy for boost. |
| 21:48:53 | raptor | sam686: that's what we were testing |
| 21:49:07 | sam686 | at least i don't think it does... |
| 21:49:08 | raptor | turns out that it does give you an advantage |
| 21:49:36 | raptor | i think it gives you initial acceleration without energy requirement |
| 21:49:45 | karamazovapy | at the very least, you can maintain a higher than average speed for a longer period of time |
| 21:49:54 | sam686 | both player start with same amount of energy, and both end with same amount of energy, right? |
| 21:50:13 | karamazovapy | they don't necessarily end with the same amount |
| 21:50:26 | raptor | the faster the tap, the more they end up with at the end |
| 21:50:35 | raptor | i thought they should be the same like you |
| 21:50:42 | raptor | but then i was proven wrong in our tests |
| 21:50:53 | karamazovapy | I think it actually has more to do with how short the activation period is |
| 21:50:59 | sam686 | then thats why, if both players don't end the same amound of energy, then one player use more energy then the other, obviously the player using more energy for boost wins.. |
| 21:51:25 | karamazovapy | also not quite true |
| 21:51:42 | raptor | yeah, my assumptions were shattered |
| 21:52:08 | raptor | conservation of energy law doesn't quite apply here |
| 21:52:15 | karamazovapy | the initiation phase seems to burn less than the sustain phase |
| 21:52:37 | karamazovapy | so the shorter your sustain phase and the more initiations, the more efficient you run |
| 21:52:53 | raptor | exactly - thanks for putting that into better words |
| 21:53:19 | karamazovapy | to test, try strobing, but focus particularly on having boost activated for the shortest time possible, like you're touching a hot stove |
| 21:53:31 | sam686 | or maybe, it is because of higher acceleration and higher deceleration when boost is on... |
| 21:53:45 | karamazovapy | even without very rapid successive activations, your efficiency goes way way up |
| 21:53:58 | sam686 | if the acceleration stays the same (only top speed changes) then it won't matter.. |
| 21:54:10 | raptor | hehe |
| 21:54:15 | raptor | that's what i said! |
| 21:55:11 | karamazovapy | there may still be some quirks, but I believe the quick taps are more effective |
| 21:55:21 | karamazovapy | even though they shouldn't be, mathematically |
| 21:55:24 | sam686 | oh, and i see another thing about boost tapping... |
| 22:01:45 | sam686 | combined with higher acceleration when boost is on, i see what it means on the speed graph. http://sam686.maxhushahn.com/upload/boost_graph.gif |
| 22:03:17 | sam686 | one drawback, of course, is it is possible to have a "turbo" button that repeatedly press a button for you, or a modified client can do the repeatedly turn turbo on / off for you.. |
| 22:03:50 | sam686 | as in, i have seen some game controller have a turbo button |
| 23:14:43 | | watusimoto has joined |
| 23:14:43 | | ChanServ sets mode +o watusimoto |
| 23:29:18 | | BFLogBot - Commit e203f25b1335 | Author: eyk...@crte-cey-15460.private.tudor.lu | Log: General cleanup and deduplication |
| 23:29:27 | raptor | hi watusimoto |
| 23:29:59 | raptor | committed from a different computer? |
| 23:30:24 | watusimoto | hi |
| 23:30:33 | watusimoto | yeah, could you tell? :-) |
| 23:30:41 | raptor | are you awake enough for some discussion? |
| 23:30:47 | raptor | (different commit user...) |
| 23:30:57 | watusimoto | briefly, sure |
| 23:31:14 | raptor | review: |
| 23:31:16 | raptor | [08:45] <raptor> watusimoto: I have a c++ coding question for you. I asked sam686 what he thought last night, and now I'd like your opinion |
| 23:31:18 | raptor | [08:45] <raptor> FXManager is the parent of ClientGame |
| 23:31:19 | raptor | [08:45] <raptor> I thought to make it not so, and make it's members/methods static |
| 23:31:21 | raptor | [08:46] <raptor> that way we don't have to always have to get the ClientGame to emit a spark |
| 23:31:22 | raptor | [08:46] <raptor> and we'd save on a few dynamic_casts and it'd be cleaner in the code |
| 23:31:24 | raptor | [08:47] <raptor> would this be a good idea? |
| 23:31:25 | raptor | [08:52] <raptor> some benefits: |
| 23:31:27 | raptor | [08:53] <raptor> i mean, another benefit: we wouldn't have to include 'ClientGame.h' every time we'd want to create effects |
| 23:31:28 | raptor | [08:53] <raptor> sam686 gave 3 reasons against: |
| 23:31:30 | raptor | [08:54] <raptor> 1. serverGame doesn't use FXManager (in the case of running bitfighter -dedicated) |
| 23:31:31 | raptor | [08:54] <raptor> 2. Multiple ClientGames wouldn't have their own FXManager |
| 23:31:33 | raptor | [08:55] <raptor> 3. static data requires more constant memory to the program |
| 23:31:35 | raptor | /end paste |
| 23:31:48 | watusimoto | right |
| 23:32:21 | watusimoto | did you see my reply? |
| 23:32:29 | raptor | i saw no reply |
| 23:32:39 | watusimoto | in short, I agree with sam |
| 23:32:41 | raptor | other than: |
| 23:32:42 | raptor | [08:45] <raptor> watusimoto: I have a c++ coding question for you. I asked sam686 what he thought last night, and now I'd like your opinion |
| 23:32:44 | raptor | [08:45] <raptor> FXManager is the parent of ClientGame |
| 23:32:45 | raptor | [08:45] <raptor> I thought to make it not so, and make it's members/methods static |
| 23:32:47 | raptor | [08:46] <raptor> that way we don't have to always have to get the ClientGame to emit a spark |
| 23:32:48 | raptor | [08:46] <raptor> and we'd save on a few dynamic_casts and it'd be cleaner in the code |
| 23:32:50 | raptor | [08:47] <raptor> would this be a good idea? |
| 23:32:51 | raptor | [08:52] <raptor> some benefits: |
| 23:32:53 | raptor | [08:53] <raptor> i mean, another benefit: we wouldn't have to include 'ClientGame.h' every time we'd want to create effects |
| 23:32:54 | raptor | [08:53] <raptor> sam686 gave 3 reasons against: |
| 23:32:56 | raptor | [08:54] <raptor> 1. serverGame doesn't use FXManager (in the case of running bitfighter -dedicated) |
| 23:32:57 | raptor | [08:54] <raptor> 2. Multiple ClientGames wouldn't have their own FXManager |
| 23:32:59 | raptor | [08:55] <raptor> 3. static data requires more constant memory to the program |
| 23:33:00 | raptor | oops |
| 23:33:02 | raptor | argh |
| 23:33:03 | raptor | this was the reply: |
| 23:33:05 | raptor | [09:13] <-- watusimoto has left this server (Ping timeout: 244 seconds). |
| 23:33:23 | raptor | ok, agree with sam686 |
| 23:33:37 | raptor | so.. should I make the SoundSystem class non-static, then? |
| 23:35:00 | watusimoto | I'm unconvinced by point 3 |
| 23:35:00 | watusimoto | but 1 and 2 seem right |
| 23:35:00 | watusimoto | 09:29:35 PM) watusimoto: not sure about 3 |
| 23:35:00 | watusimoto | (09:29:49 PM) watusimoto: (sorry, looking at your c++ question) |
| 23:35:00 | watusimoto | (09:30:12 PM) watusimoto: 1 & 2 seem more compelling |
| 23:35:00 | watusimoto | (09:30:35 PM) watusimoto: this isn't a c++ question, but rather a general object design question |
| 23:35:00 | watusimoto | (09:30:40 PM) watusimoto: you'd have the same issue in java |
| 23:35:01 | watusimoto | (09:31:34 PM) watusimoto: now I will say that my recent spark implementation needs some major cleaning, and probably doesn't belong in gameObjectRenderer |
| 23:35:01 | watusimoto | (09:31:47 PM) watusimoto: so that's part of the recent ugliness at least |
| 23:35:02 | watusimoto | (09:31:57 PM) watusimoto: ok, off to dinner |
| 23:35:02 | watusimoto | that was the entirety of my earlier answer |
| 23:35:03 | watusimoto | but if I move the spark generation out of gameObjectRenderer, much of the recently added ugliness goes away |
| 23:35:04 | watusimoto | it is in the wrong place, and that;s the problem |
| 23:35:04 | watusimoto | sparks are like little mini game objects, and should not be added during the render phase |
| 23:35:06 | watusimoto | I did so because I was rapidly trying different ideas to find something that was appealing |
| 23:35:15 | watusimoto | ah |
| 23:35:19 | watusimoto | mmm |
| 23:35:32 | watusimoto | no |
| 23:35:32 | watusimoto | well maybe |
| 23:35:44 | watusimoto | sound is a little different in 2 ways |
| 23:36:21 | watusimoto | 1: client and server both use sound |
| 23:36:32 | watusimoto | 2: there is only one speaker on a computer, whereas there may be two independent game displays, each with their own sparks |
| 23:37:10 | raptor | ok |
| 23:37:51 | raptor | yes, i think the spark stuff should move out of gameObjectRender (which is what initially made me want to make it static, to avoid the ClientGame.h include) |
| 23:38:22 | raptor | yeah, none of your response made it |
| 23:38:29 | raptor | thanks for repasting.. |
| 23:41:25 | | watusimoto Quit (Ping timeout: 276 seconds) |
| 23:44:27 | | watusimoto has joined |
| 23:44:27 | | ChanServ sets mode +o watusimoto |
| 23:44:35 | watusimoto | bad internet! |
| 23:44:43 | raptor | hi again |
| 23:45:20 | watusimoto | ideally, at some point, all the crap in gameObjectRenederer would become part of clientGame or perhaps GameUserInterface |
| 23:45:32 | watusimoto | rather than floating around in the global namespace |
| 23:45:32 | raptor | really? |
| 23:45:37 | raptor | ah yes |
| 23:45:39 | watusimoto | yeah, I think |
| 23:45:42 | raptor | the global aspect of it... |
| 23:45:49 | raptor | i was sondering about that, too |
| 23:45:52 | raptor | windering |
| 23:45:55 | raptor | *wondering |
| 23:45:55 | watusimoto | I mean, we really have two progs rolled into one here: clientGame and serverGame |
| 23:46:16 | watusimoto | I think all rendering stuff should be gathered together into one place as much as posisble |
| 23:46:18 | raptor | one day we need to do a Great Divide |
| 23:46:30 | watusimoto | we have a bunch of things in UI:: like all the text |
| 23:46:33 | raptor | yes |
| 23:46:47 | watusimoto | but then a lot of other stuff is in gameObjectRenderer |
| 23:46:52 | watusimoto | that doesn't make much sense |
| 23:47:18 | watusimoto | but it isn;t causing any harm at the moment |
| 23:47:34 | watusimoto | so I'm inclined to fix it incrementally (read: later) |
| 23:47:46 | raptor | sounds good :) |
| 23:47:57 | raptor | ok, still OK for one other question? |
| 23:49:53 | sam686 | static or global variables like "static int data[1000000]" will sure use a ton of memory, all the time, though "static Object *pointer_to_object" only uses 4 or 8 bytes of memory all the time.. |
| 23:51:22 | watusimoto | sure |
| 23:51:29 | raptor | karamazovapy brought up the fact that double-tap for boost pulse is bad because people like to 'strobe' the boost module |
| 23:51:53 | watusimoto | sam -- only if object doesn't exist |
| 23:52:05 | watusimoto | raptor: yes, k is right |
| 23:52:12 | watusimoto | but we knew that |
| 23:52:14 | raptor | i told him that the energy usage difference over a period of time at the same distace of strobing faster vs slower sshould be zero |
| 23:52:16 | | sam686|2 has joined |
| 23:52:19 | raptor | so we tested it |
| 23:52:25 | raptor | and determined that it is not zero |
| 23:53:29 | watusimoto | I'm not convinced it should be 0 |
| 23:53:32 | raptor | strobing super fast allows you to conserve more energy while going the same speed and covering the same distance |
| 23:53:36 | sam686|2 | local variables in function only take up memory while in the function space (mostly the memory is located in stack location for faster speed reasons), and freed when function exits. |
| 23:53:58 | raptor | i mean - it should be zero if the *on* time of the module is equivalent |
| 23:54:10 | watusimoto | sam686: yes |
| 23:54:21 | | BFLogBot - Commit ce3f47ced039 | Author: eyk...@crte-cey-15460.private.tudor.lu | Log: Comments |
| 23:54:35 | watusimoto | sam686 but they need to be recreated when needed, which can slow performance; you trade memory for performance |
| 23:54:43 | raptor | but it's not - it seems that there is a low cost acceleration bonus to using boost which adds up the faster you use it |
| 23:54:53 | watusimoto | raptor: makes sense |
| 23:55:12 | watusimoto | raptor: or, I should say, I'm not surprised. the physics in the game isn't exactly rigorous |
| 23:55:18 | raptor | which doesn't seem right to me.. |
| 23:55:20 | raptor | yeah |
| 23:55:40 | raptor | so, right now you have to double tap within 250ms to enable pulse |
| 23:55:54 | sam686|2 | some local veriables like integers and floating points (F32, S32) is extremely fast as a local variables (compared to using "new int") |
| 23:55:59 | | sam686 Quit (Ping timeout: 245 seconds) |
| 23:56:08 | watusimoto | raptor: and k's afraid people will accidentally pulse |
| 23:56:21 | raptor | yes |
| 23:56:35 | watusimoto | sam686|2: yes that is true. But I wonder where that value is "stored" while the variable it represents doesn't exist |
| 23:56:39 | raptor | but i've never seen anyone strobe that fast - except for karamazovapy :) |
| 23:56:42 | | sam686|2 is now known as sam686 |
| 23:56:42 | | ChanServ sets mode +v sam686 |
| 23:57:13 | raptor | so the question - should I yank the pulse code? |
| 23:57:22 | raptor | or should we just leave it for at least one release? |
| 23:57:27 | sam686 | local variables are stored in stack memory (where there is no cost of speed from creating a memory space for variable) |
| 23:57:30 | watusimoto | raptor: I don;t have any other ideas for how to super portion of a module without double clicking |
| 23:57:37 | raptor | or find another way to implement it? |
| 23:57:55 | sam686 | sometimes, the compiler even optimized some variables to hold only on CPU registers (for even faster speed) |
| 23:58:06 | watusimoto | sam686: just saying the value has to be stored womewhere while the fn is not in memory... |
| 23:58:51 | sam686 | all local variables goes away when function exits, but global variables remains available |
| 23:58:59 | watusimoto | raptor: if we can find a better way to activate, we should do that, but I have no ideas; I think double click is a good way |
| 23:59:16 | watusimoto | sam686: I assume you are talking about lines like this: static S32 var = 100; |
| 23:59:57 | watusimoto | sam686: if we use instead S32 var = 100, all I'm saying is that that 100 has to live *somewhere* in the code |