Jump to content
SSForum.net is back!

Bak

★ VIP
  • Posts

    1064
  • Joined

  • Last visited

Everything posted by Bak

  1. Great!! Wasn't too hard, was it? Maybe if you get bored afterwards we could fill in the gaps in the setup guides to help others get started.
  2. Your right in that the physics will only be the same for the two clients if you make them the same. Currently continuum and discretion work on two different settings formats, although nothing is stopping you from making the two correspond to the same settings. The way I see it though, this isn't that important, as if you only want to use what continuum has to offer, you will use continuum. This is the current plan.
  3. I see what's happening. There are two types of settings. Regular, internal, settings, and server-sent settings. Animations loads from the server-sent settings, as it should. updateSetting updates the internal settings. So you have two options, either (1) add an updateServerSetting function to SettingsHandler (which is identical except it works on serverSettingMap instead of settingMap), or, (2) write the settings to a file and use SettingsHandler->reloadServerSettings(const char* filename, bool logErrors); Sorry for the confusion; I can't remember everything about the entire client myself
  4. It looks like it's trying to output a file named "Modules" What are your build artifact settings (here's mine)? http://img.photobucket.com/albums/v622/bak2007/cskin_out_settings.png That's really strange with the animations project. Is there any chance you're viewing the Release settings and building the Debug version, or vice versa?
  5. It is compatible in the sense that Discretion and Continuum clients can play on the same server, although the server will need to be modified to allow Discretion clients in. In terms of user authentication, I do agree that the current system is fairly poor and a better one should be developed. I think Brain had some ideas for this. What's wrong with the directory server protocol?
  6. Is subspace really an MMO? There's no global persistent world, just a bunch of small worlds (arenas).
  7. I think my workspace directory is client/src, although the build paths should be relative to the project output directory. The trick to figuring out where the output is going is to look at the console output gcc statement. the -o flag determines the output location. What is the output statement when you build cskinviewer? For example, when I build animations I see: The first line is building the .o binary, the next is linking the .o binary into the .so shared library The directory is relative to is the project output directory, "disc_client\src\Modules\Animations\Release". So ..\..\..\.. takes me up 4 directories to disc_client, then bin takes me into the binary directory, then Modules/Animations/Animations.so is the final location and name.
  8. I'm happy to announce the release of Discretion 0.35! If you auto-update (Options -> Update) it should download the newest version. Additionally, I am going to start releasing a server version as I update it for the new Discretion versions in case anyone wants to run a Discretion-enabled server and doesn't want to go through svn. The server for 0.35 is available through sourceforge. I am going to release a "debug" version of servers which will include debugging, and then, when I have more faith in the server version I'll remove this and have a non-debug release. Currently, there is only a debug version for the server for version 0.35 (If you connect to the server you'll want to make sure that your Discretion Client is up to date (should say 0.35 in the title bar). What's new? I have completed the initial implementation of the server-side anti-cheat. This means that, in theory anyways, getting away with cheating is no longer possible (or more precisely, cheating will be detected within 5 seconds in the presence of other, non-cheating clients). Now I have spent several hours debugging the code, but I'm still not fully confident in the server-side checks, which is why I've only released the debug version of the server for 0.35 so far. Hopefully I will quickly eliminate any bugs people can detect and deterministically reproduce (let me know if you find any). There's also lag and such within the server (lagging and cheating go hand in hand), which seems to work reasonably well, although, again, it hasn't been extensively tested. I usually have high ping fluctuation upon connecting to a server, but after the initial lag out it settles and I can get in. Let me know if you have any problems, and happy new year!
  9. Yeah I have my output paths setup to build right into the Modules// folder attach the source for your final module (and the settingshandler / animations) and I'll integrate it into the main source tree, then we'll get you svn write access
  10. yes as mentioned before, the svn did not include binaries since people were complaining. I added it now just for you
  11. samp is trying to compile the front end but having some trouble. Samp, the files it needs to find are those named like "libaedGuiBak.a", which for me is located in "C:\code\discretion\ss-discretion\client\trunk\disc_client\deps\aedGUI-0.1.8a-bak\Release" so for the directory I put "C:\code\discretion\ss-discretion\client\trunk\disc_client\deps\aedGUI-0.1.8a-bak\Release", and for the library I put "aedGuiBak" and the "lib" and ".a" are inferred. Make sure the .a files exist in the proper directory, and the .a file is named correctly. your configuration is release, make sure you're building the release version and not the debug version (which has its own settings). What are the first few errors that you receive?
  12. Here's mine: http://img.photobucket.com/albums/v622/bak2007/cskin_settings.png I think with gcc/minGW you can even link directly to the .dll instead of using a library... also that stuff I said before about static libraries is true, but these ones are all dynamic (they have a corresponding .dll file), the library simply includes the offsets within the .dll, or something to that effect, not the actual source.
  13. The instant crash is because the settings handler version MUST be updated if you change the interface, and therefore all modules which use the interface must be recompiled (changing the I_ version macro will ensure it does not try to load an old version, which would lead to lead to unexpected behavior since the modules expect the function pointers to have certain offsets within the interface class, but if you change the class and recompile those offsets may change). There are two types of directories, include directories (for header files) (gcc flag -I) and library directories (for static libraries) (gcc flag -L). Header files include the function headers... ever wonder where the implementation is? It's either precompiled into a static library file (.lib), or linked dynamically during runtime (.dll or .so). For sdl_net and sdl_image, they are linked statically at compile time, so you must add the static library search path into your project. You need to add the correct library directory to project, check Prject->Properties->C/C++ Build->Settings->Tool Settings->MinGW C++ Linker->Libraries->Library Search Path. For zlib, you want version 1.2.3 (from http://www.zlib.net/ ). Yes that's on purpose and for a reason. The front end handles the updates, and the updates MAY include an update to SettingsHandler.so . Since you can't overwrite an .so file when it's in use, and the front end uses the settings handler module, the solution is to write the updated file to Modules/SettingsHandler/SettingsHandler.so. When the front end runs, it compares \bin\Modules\SettingsHandler.so and \bin\Modules\SettingsHandler\SettingsHandler.so and, if they differ, copies \bin\Modules\SettingsHandler\SettingsHandler.so to \bin\Modules\SettingsHandler.so and loads that one. You will also need to recompile the front end (cskinviewer) to reflect the new version of the SettingsHandler module. The directory with the eclipse project is disc_client\src\FrontEnd\cskinviewer
  14. I figured I'd make a ridiculous topic to contrast Aileron's. Unlike Aileron, however, I won't ragequit my own topic and may even follow up! Taken from here (maybe). “Conservatives are always wrong.” That’s all that liberal politicians should really say when it comes to contentious issues. Conservatives are always wrong. Throughout the entire history of the United States of America, the conservatives have always been wrong. Conservatives stood for the status quo as Loyalists, willing to be subjects to an unelected King. They were wrong. Liberal Framers like John Adams and Ben Franklin tried to write the declaration of a new nation that would consider all men free. Conservatives from the South fought (and won) for the exclusion of this language, and ensured that blacks would be enslaved for another 89 years. They were wrong. Pro-business conservatives tried to block child labor laws. They were wrong. Conservatives fought against women’s right to vote. They were wrong. Conservatives banned alcohol. They were disastrously wrong. Conservatives fought to keep interracial marriage illegal. They were wrong. Conservatives stood for integrated schools and against the Civil Rights Act. They were wrong. They jailed Rosa Parks, which was wrong, but convenient, and a great act of IRL trolling. Conservatives thought it was okay for employers to deny employment on the basis of race, sex, or religion. They were wrong. They thought blacks needed to use separate drinking fountains, which is both wrong and ridiculous. Conservatives fought to keep homosexuality illegal. They were wrong. Conservatives prosecuted John Scopes for teaching evolution. They were wrong. Conservatives tried to stop the creation of Social Security for our elderly citizens. They were wrong. Note here how many of these instances deal with conservatives siding with Big Business. In fact, it is an inevitability that when conservatives side with big business on the issue of social change, they are wrong. History ALWAYS records the conservatives as being on the wrong side; this is not because history writers are liberal, but because CONSERVATIVES ARE ALWAYS WRONG.
  15. source? I agree the picture does do some over-generalization. Then again, if you want to see over-generalization reread the first post in this topic. The parenting thing is interesting. I'd say my dad's parenting style was fits the conservative side whereas my mom's style is closer to the liberal side. However, my dad was working through most of my childhood so I had much more interaction with my mom and ended up mostly liberal. My dad's mom was a very strong character who I would place solidly on the conservative parenting style (although I never got to talk to her about politics). Both my dad and his brother seem to lean conservative, which matches the prediction. What's your experience?
  16. Liberals tend to be more idealistic and conservatives more practical... a little bit of both helps the world go round. The countries with the highest standard of living in the world are democratic socialists, which I would hardly consider a failure. Knowing that others think you're ignorant doesn't make you any less ignorant. Also, it's not perfect but... http://infobeautiful.s3.amazonaws.com/leftright_EU_1416.gif
  17. You probably should wait until the downloads complete before reading the lvz and drawing animations, the callback from FileTransfer.h is CB_PREENTER_DOWNLOADS_DONE . Doing it too early will cause segfaults, as you described. For things with precedence relationships there will usually be a callback, although for lvz waiting for the file transfers to complete will suffice (make sure it is called in single player mode though, it's possible it's not; let me know if it's not and I'll add it). For the zone path, use a function from the Net interface: /** * Get the path to the directory where the zone's file are kept, do after you set zone name, obviously. * this has the '/' at the end so you can just append a filename * @return path to the directory where the zone's file are kept */ const char* (*getZoneDataPath)();Again, use it in CB_PREENTER_DOWNLOADS_DONE and it should be valid. Also, while you're making the module (after it works), think of some cool and easy extensions to put in (for example, animations relative to specific ship types was one thing people suggested, so they could have animations on top of each type of ship). Maybe a mode like "InRegionXYZ" where XYZ is an asss region name (then again, I need a region module too), where an lvz would only display when you're in a certain region. Maybe we could incorporate sounds into lvz too (I also need a sounds module), for like entering regions, or sounds coming from certain locations on the map (I think the SDL_mixer library supports such things easily). Are there any other cool ones you can think of?
  18. you're right, passing a stack pointer is a bad idea. Right now, the pointers are kept forever. It's probably necessary to add a function to SettingsHandler to stop tracking Point*'s when you dispose of animations. Then, it's probably a good idea to change in SettingsHandler list letterAssignments; to map letterAssignments; for quick freeing.
  19. your functions look fine; even though the extra one does not deal directly with the settings, it does so indirectly (if the screen location anchors change it will update the points accordingly). It seems okay to keep it in the SettingsHandler for that reason. Your second question is an interesting one, although I think there's some misunderstanding. For the above functions, you pass in a pointer to a Point which you have allocated (either on the stack or on the heap); SettingsHandler does no memory management in this respect. For mapobjects, there are no relative values, so just get the x/y values of the mapobject and call Animation* (*playLoopingAnimation)(const char* name, int xPixel, int yPixel, bool centered, int layer); for screenobjects, the animation location may be change. Luckily, the Animations interface doesn't handle screenobjects yet so you can write it any way you want. Since all screen objects are likely to be within the bounds of the screen, it's fairly pointless to do sorting and such things for bounds checking on the screen (as is done for mapobjects for efficiency since the majority of active mapobjects are likely to be off screen). I believe it is sufficient to, internally within Animations, just have a single list of screenobjects with their Point and their display time and such. Then, the interface for creating a screenobject would be something like Animation* (*playLoopingScreenAnimation)(const char* name, char letterX, int offsetX, char letterY, int offsetY, bool centered, int layer); (in addition to the timed variant). The memory for the Point then would be managed internally within the Animations interface. If you want me to make the modifications to Animations let me know and I'll do it. Also let me know if I didn't answer what you were asking.
  20. looks good
  21. use type "raw", see the "incoming file transfer" type in net.conf (grep for it to see how it's handled in code) you can do like: u32 value = (data[3] << 24) | (data[2] << 16) | (data[1] << | data[0]; and it will work everywhere. There are functions to do this in Modules/Shared/LittleEndian.h/.cpp // extract a little endian u32 u32 getU32(u8* loc) { u32 rv = 0; for (int x = 3; x >= 0; --x) { rv *= 256; rv += loc[x]; } return rv; }
  22. Bak

    Todo List

    It works on linux ?
  23. For errors that shouldn't occur use the LOG_ERROR(const char*) macro, or LOG_ERROR2(const char*, arg1), or LOG_ERROR3(const char*, arg1, arg2) <- printf like format LvzObjectSectionHeader objHeader; ... memcpy(&objHeader, dataPtr, sizeof(objHeader)); Here, the correctness depends on the endianness of the architecture (the way in which the structure is laid out in memory). If objHeader is interpreted as laid out differently (for example on a powerpc mac), this won't work as expected.
  24. Can you paste the code?
  25. Bak

    taxes

    saw this: http://walmartwatch.com/img/blog/wsj_taxrelief.gif I heard somewhere that there's a building in Delaware that's the world headquarters of something like 200 of the fortune 500 companies. All at the same address.
×
×
  • Create New...