Jump to content
Eternal Lands Official Forums

Kindar_Naar

Members
  • Content count

    98
  • Joined

  • Last visited

Everything posted by Kindar_Naar

  1. Special effects

    It's still 10 at my side :| I have revision 1.4 of effect_breath.h
  2. Special effects

    I think this is the best approach as I don't know if it is possible to disable the optimisation from code using some attributes. I would like to see the three functions: fastsqrt, invsqrt and invsqrt_workaround moved to a new .cpp file with added comment that SSE2 optimisation should be disabled for this file. Otherwise everyone else trying to get an optimized client from Visual Studio would get the same errors. The rest of the functions in eye_candy.cpp could continue using SSE2 optiomization. When making these changes could you also apply the patch I listed earlier so that the codes build under VS?
  3. Special effects

    Hi, I managed to get one problem solved today. I kept getting crashes in 'Release' version of the client, just after logging in. However the 'Debug' version was fine. After some analysis I came to this offending line WindNeighbor* previous = &(*(neighbors.begin() + (neighbors.size() - 1))); in effect_wind.cpp This line works as long as there is at least one object in the neighbors vector. When the vector is empty, ms C runtime in kind enough to crash. I don't know if on other platform the behaviour is the same.. or if the runtime just lets 'get' an object from (begin - 1). The problem however was, why do I get 1 object in 'Debug' while 0 in 'Release' After some more invastingation I notice that invsqrt function gives DIFFERENT results in both modes. The source of the incompability is the optimization that is done by the compiler. I tried different settings and finally had to disable the used of SSE2 for the eye_candy.cpp. Once this was done, the 'Release' client was able to login and I saw leaves flying everywhere. To sum up, I see two problems here: 1. the invsqrt function can behave differntly on different compilers/compilere settings 2. becuase of 1., some assumptions (i.e. there always have to be at least one neighbour) can be invalid and lead to crashes/heap corruption/stack corruption
  4. Special effects

    Shouldn't that be #define usleep(x) Sleep(x/1000), since usleep is measured in microseconds, and Sleep in milliseconds? Yes, you are right. I update the patch. Also, I did test that I crash each time that campfire effect finished (a few seconds after the smoke and fire is gone). The problem is that each time I get a different stack trace, so I assume that some action earlier has corrupted the heap and the action listed on call stack just 'stumbled' upon corrupted heap. VS also reports: HEAP[elc_d.exe]: HEAP: Free Heap block d80dce0 modified at d80dd54 after it was freed Windows has triggered a breakpoint in elc_d.exe. This may be due to a corruption of the heap, and indicates a bug in elc_d.exe or any of the DLLs it has loaded. And here is an example stack trace ntdll.dll!7c901230() [Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] ntdll.dll!7c96c943() ntdll.dll!7c949eb9() > elc_d.exe!std::_Iterator_base::operator=(const std::_Iterator_base & _Right={...}) Line 145 + 0xf bytes C++ ntdll.dll!7c96d6aa() ntdll.dll!7c949d18() elc_d.exe!std::_Iterator_base::~_Iterator_base() Line 151 + 0x45 bytes C++ ntdll.dll!7c91b298() msvcr80d.dll!1020506c() msvcr80d.dll!10205089() msvcr80d.dll!102846a9() elc_d.exe!ec::randfloat() Line 1735 + 0xf bytes C++ elc_d.exe!ec::randcoord() Line 1751 + 0x5 bytes C++ elc_d.exe!ec::Vec3::randomize(const float scale=2.578e-043#DEN) Line 249 + 0xe bytes C++ elc_d.exe!ec::WindEffect::idle(const unsigned __int64 usec=937500) Line 645 + 0xa bytes C++ elc_d.exe!ec::EyeCandy::idle() Line 1398 + 0x20 bytes C++ elc_d.exe!ec_idle() Line 105 C++ elc_d.exe!display_game_handler(window_info * win=0x050c1e78) Line 680 C elc_d.exe!draw_window(window_info * win=0x050c1e78) Line 1059 + 0x11 bytes C elc_d.exe!display_window(int win_id=0) Line 1207 + 0x15 bytes C elc_d.exe!display_windows(int level=1) Line 57 + 0x9 bytes C elc_d.exe!draw_scene() Line 98 + 0x7 bytes C elc_d.exe!start_rendering() Line 124 C elc_d.exe!Main(int argc=-1, char * * argv=0x00000000) Line 251 C elc_d.exe!WinMain(HINSTANCE__ * hInst=0x00400000, HINSTANCE__ * hPrev=0x00000000, char * lpCmd=0x00151ef7, int nShow=1) Line 306 + 0xd bytes C elc_d.exe!__tmainCRTStartup() Line 589 + 0x35 bytes C elc_d.exe!WinMainCRTStartup() Line 414 C kernel32.dll!7c816fd7() elc_d.exe!ec::CampfireEffect::idle(const unsigned __int64 usec=30962698415439964) Line 200 + 0x21 bytes C++ elc_d.exe!ec::CampfireEffect::idle(const unsigned __int64 usec=14757395258967641292) Line 200 + 0x21 bytes C++ cccccccc() One thing I notice it that with each crash the stack trace goes up to the level of EyeCandy::idle. Below that level, call are different each time.
  5. Special effects

    Hi, I get another try at compiling the EYE_CANDY client. There are still some minor compile problems which can be resolved by using this patch Index: console.h =================================================================== RCS file: /cvsroot/elc/elc/console.h,v retrieving revision 1.17 diff -u -r1.17 console.h --- console.h 12 Mar 2007 18:13:29 -0000 1.17 +++ console.h 17 Mar 2007 10:42:14 -0000 @@ -16,7 +16,7 @@ #define DEF_INFO "" #endif -typedef struct command { +typedef struct { char command[64]; int (*callback)(); } command_t; Index: eye_candy/effect_breath.h =================================================================== RCS file: /cvsroot/elc/elc/eye_candy/effect_breath.h,v retrieving revision 1.4 diff -u -r1.4 effect_breath.h --- eye_candy/effect_breath.h 15 Mar 2007 06:10:33 -0000 1.4 +++ eye_candy/effect_breath.h 17 Mar 2007 10:49:47 -0000 @@ -37,7 +37,7 @@ else LOD = desired_LOD; count_scalar = 3000 / LOD; - size_scalar = scale * fastsqrt(LOD) / sqrt(10); + size_scalar = scale * fastsqrt(LOD) / sqrt(10.0f); }; static Uint64 get_max_end_time() { return 5000000; }; virtual Uint64 get_expire_time() { return 5000000 + born; }; Index: eye_candy/eye_candy.h =================================================================== RCS file: /cvsroot/elc/elc/eye_candy/eye_candy.h,v retrieving revision 1.8 diff -u -r1.8 eye_candy.h --- eye_candy/eye_candy.h 16 Mar 2007 06:37:57 -0000 1.8 +++ eye_candy/eye_candy.h 17 Mar 2007 10:55:12 -0000 @@ -87,6 +87,7 @@ #define round(a) (a - floor(a) < 0.5f ? floor(a) : ceil(a)) #define remainderf(a, b) (a - (float)round(a / b) * b) #define random rand + #define usleep(a) Sleep(a / 1000) #else __attribute__ ((noinline)) float fastsqrt(float f); __attribute__ ((noinline)) float invsqrt(float f); Once build I tried to run it. First the Release build. It crashed right after the logging, however this was also happening for me without EYE_CANDY (for about a week now) Next I got the Debug build working. I got the campfire effect (colors are ok), I could see leaves (red) and bag drop/get effect. However when the campfire effect died, I got an internal exception with heap corruption. Unfortunatelly I could not invastigate it further. Just for reference my configuration: PentiumM 1.86, GeForce 6600 GO, 512 MB RAM, Windows, Visual Studio 2005 Express Edition Defines: ELC WINDOWS NEW_FRUSTUM BUG_FIX_3D_OBJECTS_MIN_MAX NEW_TEX ATI_9200_FIX NEW_ACTOR_ANIMATION AUTO_UPDATE OPTIONS_I18N PNG_SCREENSHOT NOTEPAD ANTI_ALIAS COUNTERS AFK_FIX CUSTOM_LOOK CUSTOM_UPDATE USE_INLINE FONTS_FIX SIMPLE_LOD ZLIB FUZZY_PATHS SFX MASKING ACTOR_ALPHA NEW_ALPHA EYE_CANDY
  6. Special effects

    Hi All, I just got the lates CVS (a lot of changes today it seems) and made a clean build. When I run, after login is finished and the map should be displayed... I crash with access violation on glDrawArrays(GL_TRIANGLES, idx, num); in shadows.c; draw_3d_object_shadow_detail First I though I had some old object files, so I cleaned and rebuild but the same thing happens again and again regadless of configuration (Debug or Release). I tried it both with -DSFX/-DEYE_CANDY and without them. The effect is the same. Could someone verify that the latest CVS works for him/her with effects disabled? EDIT: It seems to only crash on the test server, however on the regular server there is night so no shadows.
  7. Special effects

    Got the latest CVS and with one last change: Index: eye_candy/effect_breath.h =================================================================== RCS file: /cvsroot/elc/elc/eye_candy/effect_breath.h,v retrieving revision 1.3 diff -u -r1.3 effect_breath.h --- eye_candy/effect_breath.h 11 Mar 2007 01:59:26 -0000 1.3 +++ eye_candy/effect_breath.h 12 Mar 2007 05:53:47 -0000 @@ -37,7 +37,7 @@ else LOD = desired_LOD; count_scalar = 3000 / LOD; - size_scalar = scale * fastsqrt(LOD) / sqrt(10); + size_scalar = scale * fastsqrt(LOD) / sqrt(10.0); }; static Uint64 get_max_end_time() { return 5000000; }; virtual Uint64 get_expire_time() { return 5000000 + born; }; the code compiles and links!! I haven't run the client yet, I'll do it after getting back from work. There's also one more thing I need to mention, but this should be handled once the code is stable. Before using the eye_candy I got 650 compiler warnings, now I get 1500 Most of them are related to converting data type, for example: e:\cpp\elc\eye_candy\eye_candy.h(409) : warning C4244: 'argument' : conversion from 'double' to 'const ec::coord_t', possible loss of data
  8. Special effects

    Great. The changes work. BTW, did you check my implementation of round(). I'm not sure it's how the original function is implemented. Here is a new patch: Index: eye_candy/effect_breath.h =================================================================== RCS file: /cvsroot/elc/elc/eye_candy/effect_breath.h,v retrieving revision 1.3 diff -u -r1.3 effect_breath.h --- eye_candy/effect_breath.h 11 Mar 2007 01:59:26 -0000 1.3 +++ eye_candy/effect_breath.h 11 Mar 2007 20:12:41 -0000 @@ -37,7 +37,7 @@ else LOD = desired_LOD; count_scalar = 3000 / LOD; - size_scalar = scale * fastsqrt(LOD) / sqrt(10); + size_scalar = scale * fastsqrt(LOD) / sqrt(10.0); }; static Uint64 get_max_end_time() { return 5000000; }; virtual Uint64 get_expire_time() { return 5000000 + born; }; Index: eye_candy/eye_candy.cpp =================================================================== RCS file: /cvsroot/elc/elc/eye_candy/eye_candy.cpp,v retrieving revision 1.4 diff -u -r1.4 eye_candy.cpp --- eye_candy/eye_candy.cpp 11 Mar 2007 20:01:15 -0000 1.4 +++ eye_candy/eye_candy.cpp 11 Mar 2007 20:30:50 -0000 @@ -866,9 +866,9 @@ Vec3 IFSHorseshoeElement::get_new_coords(const Vec3& pos) { const coord_t r = pos.magnitude(); - const angle_t theta_x = atan2(pos.z, pos.y + 0.0000001); - const angle_t theta_y = atan2(pos.x, pos.z + 0.0000001); - const angle_t theta_z = atan2(pos.y, pos.x + 0.0000001); + const angle_t theta_x = atan2(pos.z, pos.y + 0.0000001f); + const angle_t theta_y = atan2(pos.x, pos.z + 0.0000001f); + const angle_t theta_z = atan2(pos.y, pos.x + 0.0000001f); const Vec3 result(r * cos(2 * theta_x), r * cos(2 * theta_y), r * cos(2 * theta_z)); return (pos * inv_scale) + (result * scale); } @@ -1855,7 +1855,7 @@ } #ifdef WINDOWS -__declspec_noinline float invsqrt_workaround(int i) +__declspec(noinline) float invsqrt_workaround(int i) #else __attribute__ ((noinline)) float invsqrt_workaround(int i) #endif @@ -1864,7 +1864,7 @@ } #ifdef WINDOWS -__declspec_noinline float invsqrt(float f) // The famous Quake3 inverse square root function. About 4x faster in my benchmarks! +__declspec(noinline) float invsqrt(float f) // The famous Quake3 inverse square root function. About 4x faster in my benchmarks! #else __attribute__ ((noinline)) float invsqrt(float f) // The famous Quake3 inverse square root function. About 4x faster in my benchmarks! #endif Index: eye_candy/eye_candy.h =================================================================== RCS file: /cvsroot/elc/elc/eye_candy/eye_candy.h,v retrieving revision 1.4 diff -u -r1.4 eye_candy.h --- eye_candy/eye_candy.h 11 Mar 2007 20:01:15 -0000 1.4 +++ eye_candy/eye_candy.h 11 Mar 2007 20:29:51 -0000 @@ -5,6 +5,14 @@ // I N C L U D E S //////////////////////////////////////////////////////////// +#ifdef WINDOWS + #include <windows.h> +#else + #include <sys/time.h> + #include <time.h> +#endif + +#include <string> #include <vector> #include <map> #include <iostream> @@ -16,12 +24,7 @@ #include <stdlib.h> #include <math.h> -#ifdef WINDOWS - #include <windows.h> -#else - #include <sys/time.h> - #include <time.h> -#endif + namespace ec { After applying this I get about 100 errors from eye_candy.cpp. All related to streams and vectors. I'm sure I saw these kinds of errors somewhere before and they are VS specific. I will just have to look for the solution a bit more. EDIT: Updated the patch. I got the stream problems resolved #include <string> and got to the point of linking. YAY .. where I get unresolved externals eye_candy_wrapper.obj : error LNK2001: unresolved external symbol "float camera_y" (?camera_y@@3MA) eye_candy_wrapper.obj : error LNK2001: unresolved external symbol "float camera_x" (?camera_x@@3MA) eye_candy_wrapper.obj : error LNK2001: unresolved external symbol "float camera_z" (?camera_z@@3MA) eye_candy_wrapper.obj : error LNK2001: unresolved external symbol "int poor_man" (?poor_man@@3HA) eye_candy_wrapper.obj : error LNK2001: unresolved external symbol "int window_width" (?window_width@@3HA) eye_candy_wrapper.obj : error LNK2001: unresolved external symbol "int use_point_particles" (?use_point_particles@@3HA) eye_candy_wrapper.obj : error LNK2001: unresolved external symbol "int window_height" (?window_height@@3HA)
  9. Special effects

    Hi, Another attemp on Windows with VS2005 Express: The -DSFX works now. I was able to compile the client with this off. I haven't tested the client compiled that way. Also most of what I have reported last time have been fixed. Thanks Now, for a new batch of problems: 1. #include <SDL/SDL.h> - actors.h, eye_candy_wrapper.h, eye_candy.h, eye_candy.cpp - SDL is included in global.h by <SDL.h> (without subdirectory). I think it should be kept consistent acrross the codes. 2. #define EYE_CANDY_WRAPPER_API 3. multiplayer.c - needs variables declaration beffore code (C requirement) 4. needs for #include <windows.h> - eye_candy.h -> otherwise GL.h causes preprocessor errors 5. #include "eye_candy.h" in match_cache.cpp - for remeinderf 6. Conversion pronblem (probably more of them still in code) effect_breath.h - 'sqrt' : ambiguous call to overloaded function - changed value to double effect_harvesting - 'sin' : ambiguous call to overloaded function - changed value to double effect_breath,cpp - 'sqrt' : ambiguous call to overloaded function - changed value to double 7. random - uknown function - changed to rand in eye_candy.h 8. round - uknown function - implemented in eye_candy.h - not sure of implementation!! Here is the patch for my changes: Index: actors.h =================================================================== RCS file: /cvsroot/elc/elc/actors.h,v retrieving revision 1.73 diff -u -r1.73 actors.h --- actors.h 10 Mar 2007 06:12:25 -0000 1.73 +++ actors.h 11 Mar 2007 06:23:43 -0000 @@ -6,9 +6,9 @@ #ifndef __ACTORS_H__ #define __ACTORS_H__ -#include <SDL/SDL.h> -#include <SDL/SDL_net.h> -#include <SDL/SDL_thread.h> +#include <SDL.h> +#include <SDL_net.h> +#include <SDL_thread.h> #include "cal_types.h" #include "client_serv.h" Index: eye_candy_wrapper.h =================================================================== RCS file: /cvsroot/elc/elc/eye_candy_wrapper.h,v retrieving revision 1.3 diff -u -r1.3 eye_candy_wrapper.h --- eye_candy_wrapper.h 11 Mar 2007 02:04:07 -0000 1.3 +++ eye_candy_wrapper.h 11 Mar 2007 06:31:41 -0000 @@ -14,7 +14,7 @@ #ifndef CAL_EYE_CANDY_WRAPPER_H #define CAL_EYE_CANDY_WRAPPER_H -#include <SDL/SDL.h> +#include <SDL.h> #ifdef __cplusplus #include "eye_candy/eye_candy.h" @@ -44,6 +44,8 @@ //****************************************************************************// #ifdef WINDOWS + +#define EYE_CANDY_WRAPPER_API #ifdef __MINGW32__ Index: multiplayer.c =================================================================== RCS file: /cvsroot/elc/elc/multiplayer.c,v retrieving revision 1.205 diff -u -r1.205 multiplayer.c --- multiplayer.c 10 Mar 2007 23:44:09 -0000 1.205 +++ multiplayer.c 11 Mar 2007 06:35:05 -0000 @@ -406,6 +406,11 @@ void process_message_from_server (const Uint8 *in_data, int data_length) { + ec_bounds bounds; + ec_reference ref1; + ec_reference ref2; + ec_effects eff_list; + Uint8 text_buf[MAX_TCP_BUFFER]; //see what kind of data we got @@ -609,7 +614,7 @@ // NOTE: When actually calling functions for real, they should have their // returned references saved, and freed when no longer needed. /////////////////////////////////////////////////////////////////////////////// - ec_bounds bounds = ec_create_bounds_list(); + bounds = ec_create_bounds_list(); ec_add_polar_coords_bound(bounds, 0.0, 0.0, 8.0, 1.0); ec_add_polar_coords_bound(bounds, 2.0, 0.0, 3.0, 1.0); ec_add_polar_coords_bound(bounds, 5.0, 0.1, 1.5, 0.7); @@ -635,11 +640,10 @@ // ec_create_sword_of_ice(49.0, 70.0, 0.5, 49.5, 70.0, 0.0, 10); // ec_create_sword_of_magic(49.0, 70.0, 0.5, 49.5, 70.0, 0.0, 10); // ec_create_teleporter(49.0, 70.0, 0.0, 10); - ec_reference ref1; - ec_reference ref2; + ref1 = ec_create_wind_leaves(49.0, 70.0, 0.05, NULL, 1.0, bounds, 1.0, 0.0, 0.0); ref2 = ec_create_wind_leaves(59.0, 70.0, 0.05, NULL, 1.0, bounds, 1.0, 0.0, 0.0); - ec_effects eff_list = ec_create_effects_list(); + eff_list = ec_create_effects_list(); ec_add_effect(eff_list, ref2); ec_add_wind_effect_list(ref1, eff_list); ec_free_effects_list(eff_list); Index: eye_candy/effect_breath.cpp =================================================================== RCS file: /cvsroot/elc/elc/eye_candy/effect_breath.cpp,v retrieving revision 1.3 diff -u -r1.3 effect_breath.cpp --- eye_candy/effect_breath.cpp 11 Mar 2007 01:59:26 -0000 1.3 +++ eye_candy/effect_breath.cpp 11 Mar 2007 06:54:56 -0000 @@ -316,7 +316,7 @@ mover = NULL; count = 0; count_scalar = 3000 / LOD; - size_scalar = scale * fastsqrt(LOD) / sqrt(10); + size_scalar = scale * fastsqrt(LOD) / sqrt(10.0); spawner = new FilledSphereSpawner(scale / 3.0); mover = new SmokeMover(this, 10.0); Index: eye_candy/effect_breath.h =================================================================== RCS file: /cvsroot/elc/elc/eye_candy/effect_breath.h,v retrieving revision 1.3 diff -u -r1.3 effect_breath.h --- eye_candy/effect_breath.h 11 Mar 2007 01:59:26 -0000 1.3 +++ eye_candy/effect_breath.h 11 Mar 2007 06:53:36 -0000 @@ -37,7 +37,7 @@ else LOD = desired_LOD; count_scalar = 3000 / LOD; - size_scalar = scale * fastsqrt(LOD) / sqrt(10); + size_scalar = scale * fastsqrt(LOD) / sqrt(10.0); }; static Uint64 get_max_end_time() { return 5000000; }; virtual Uint64 get_expire_time() { return 5000000 + born; }; Index: eye_candy/effect_harvesting.cpp =================================================================== RCS file: /cvsroot/elc/elc/eye_candy/effect_harvesting.cpp,v retrieving revision 1.3 diff -u -r1.3 effect_harvesting.cpp --- eye_candy/effect_harvesting.cpp 11 Mar 2007 01:59:26 -0000 1.3 +++ eye_candy/effect_harvesting.cpp 11 Mar 2007 06:52:55 -0000 @@ -107,9 +107,9 @@ } case HarvestingEffect::RARE_STONE: { - color[0] = 0.7 + 0.3 * sin(age / 530000); - color[1] = 0.7 + 0.3 * sin(age / 970000 + 1.3); - color[2] = 0.7 + 0.3 * sin(age / 780000 + 1.9); + color[0] = 0.7 + 0.3 * sin(age / 530000.0); + color[1] = 0.7 + 0.3 * sin(age / 970000.0 + 1.3); + color[2] = 0.7 + 0.3 * sin(age / 780000.0 + 1.9); if (age < 700000) { Index: eye_candy/eye_candy.cpp =================================================================== RCS file: /cvsroot/elc/elc/eye_candy/eye_candy.cpp,v retrieving revision 1.3 diff -u -r1.3 eye_candy.cpp --- eye_candy/eye_candy.cpp 11 Mar 2007 01:59:27 -0000 1.3 +++ eye_candy/eye_candy.cpp 11 Mar 2007 07:25:26 -0000 @@ -2,12 +2,13 @@ // I N C L U D E S //////////////////////////////////////////////////////////// -#include <SDL/SDL.h> -#include <SDL/SDL_image.h> +#include <SDL.h> +#include <SDL_image.h> #include <errno.h> #include "eye_candy.h" #include "math_cache.h" + namespace ec { Index: eye_candy/eye_candy.h =================================================================== RCS file: /cvsroot/elc/elc/eye_candy/eye_candy.h,v retrieving revision 1.3 diff -u -r1.3 eye_candy.h --- eye_candy/eye_candy.h 11 Mar 2007 01:59:27 -0000 1.3 +++ eye_candy/eye_candy.h 11 Mar 2007 07:21:20 -0000 @@ -4,16 +4,18 @@ #define EYE_CANDY_H // I N C L U D E S //////////////////////////////////////////////////////////// - +#ifdef WINDOWS + #include <windows.h> +#endif #include <vector> #include <map> #include <iostream> #include <cassert> -#include <SDL/SDL.h> +#include <SDL.h> #include <GL/gl.h> #include <GL/glu.h> #include <GL/glext.h> -#include <GL/glut.h> +//#include <GL/glut.h> #include <stdlib.h> #include <math.h> @@ -72,11 +74,13 @@ float cube(const float f); int cube(const int i); #ifdef WINDOWS -__declspec_noinline float fastsqrt(float f); -__declspec_noinline float invsqrt(float f); - #define copysign _copysign - #define fmax(a, b) ((a < b) ? b : a) - #define remainderf(a, b) (a - (float)round(a / b) * b) +__declspec(noinline) float fastsqrt(float f); +__declspec(noinline) float invsqrt(float f); +#define copysign _copysign +#define fmax(a, b) ((a < b) ? b : a) +#define round(a) (a - floor(a) < 0.5f ? floor(a) : ceil(a)) // IS THIS OK?? +#define remainderf(a, b) (a - (float)round(a / b) * b) +#define random rand #else __attribute__ ((noinline)) float fastsqrt(float f); __attribute__ ((noinline)) float invsqrt(float f); Index: eye_candy/math_cache.cpp =================================================================== RCS file: /cvsroot/elc/elc/eye_candy/math_cache.cpp,v retrieving revision 1.2 diff -u -r1.2 math_cache.cpp --- eye_candy/math_cache.cpp 10 Mar 2007 23:44:11 -0000 1.2 +++ eye_candy/math_cache.cpp 11 Mar 2007 06:44:01 -0000 @@ -5,6 +5,7 @@ #include <iostream> #include <math.h> +#include "eye_candy.h" #include "math_cache.h" const double PI = 3.141592654;
  10. Special effects

    Hi, I'm trying to build the client with the new effects on Windows / Visual Studio 2005 Express and I ran into several problems (probably because code was written under Linux?) 1. EYE_CANDY_WRAPPER_API needs to be defined in #ifdef WINDOWS section 2. types: u_int8_t, u_int16_t, u_int32_t, u_int64_t, int64_t are unknown 3. sys/time.h is not available 4. __attribute__ ((noinline)) causes syntax error 5. functions: fmax, copysign, remainderf are unknown Also one thing I noticed is that the effects system is not longer turned off by removing the -DSFX (becuase of usage of ec_ functions in several other .c files), so with the current codes I'm not able to build a client at all. I don't know if these are all incompabilities, because I stopped at point of compiling math_cache.cpp. I hope that helps anyone trying to build the client under Windows
  11. Map load times and map/3dobject compression

    I run the client only with gzipped files.... and after seeing the speed up I'm not going back to regular ones
  12. Map load times and map/3dobject compression

    Yup, I agree. I haven't done any benchmarks, but the improvement in load speed is clearly visible Great work
  13. Special effects

    *steps aside to let the pr0 do their work* Guess I'm back to mixing then GREAT WORK with that effects
  14. Special effects

    LOL. That was pretty much what I was thinking too. However, I think the recipient should get a normal heal (with new colors, maybe green since that is the color of a full health bar(alt+h)) and the caster should be inverted blue, kinda like your mana is being drained. Even better idea!!!! As for bugs, could you guys check what happens if the actor get's removed while the effect renders, I have a feeling this might crash the client
  15. Special effects

    I have no problems with moving the effects I like my heal effect, but the spiral effect.. is just the spiral effect, not really a shield. I can't work on them right now, so if you want to change, go ahead. My suggestion: 1. move restoration -> tele to portals/to range 2. move heal->restoration 3. move shield -> heal (with color change) 4. use 'shield' for remote heal, caster gets the original shield effect, target get the effect upside down (so it seems that the magic energy flows from caster to target, just an idea)
  16. Special effects

    I also agree with this. We should keep that in mind while making effects, so that people can have another goal to work towards. Higher level spell -> more complex effect. As for complexity, I think we shouldn't sacrifice it. Instead we can add 'disable effects' option in menu or a 'poor man' mode. The effects in poor man would be much simpler (different effects or lesser poly count). This way people with powerfull machines would be able to enjoy the effects while people going to 'hot' areas (PK, invasions) would still be able to play after applying 'poor man' mode.
  17. Special effects

    You can subscribe to CVS mailing list and keep track of special_effects.c
  18. Special effects

    Well, I would have to find some example screens from Q3 with rail to know what we are talking about. Haven't played that in ages Would this be used for offensive effect or something like remote heal ('transfer' energy over a beam?)
  19. Special effects

    I'm glad you like our work If you like the static screen you should get the patch and test it in real. The effect is created by a fan of triangles with different colors/alpha applied to vertexes. Color interpolation takes care of the rest. (thanks to a friend from work for the idea). The coords are the distorded by some random factor to simulate sparkling.
  20. Special effects

    Well, 0ctane's framework works like this that each effect has it's own function... so as long as we know how to do it, we should be able to code any effect I guess
  21. Special effects

    Thanks We are doing our best here. Hopefully with more developers/testers the effect can become even better. Here is another screnshot: Heal. Sparcling ring going from ground to head, leaving crystal fallout and fading at the end.
  22. Skybox discussion

    After watching the video: wow...... just .... wow Great work!
  23. Lagging out using latest CVS

    I had the same problem. I had to revert to previous version of multiplayer.c (1.194)
  24. Special effects

    I had some time to play with the effect this weekend. Here is what I came up with Shield effect. If you are interested in testing, I update the patch on the BerliOS with that effect.
  25. The Update

    I can only say: Good job. Thank you. *goes to find cheap vials*
×