raduprv / eternal-lands Goto Github PK
View Code? Open in Web Editor NEWHome Page: http://www.eternal-lands.com
License: Other
Home Page: http://www.eternal-lands.com
License: Other
I did some good progress on the Android port. Not yet playable, but good progress nevertheless.
I would like to have a dev meeting in game, or skype or ICQ to discuss about a few things, such as how to handle the touch based events, and a few other things.
Let me know if you can do that, and when it would be a good time for you.
It is only possible to add a recipe or clear a recipe slot at the moment (clearing a recipe slot keeps the empty slot). Since it is possible to accidentally add the same recipe twice, it would be nice if it was possible to delete unwanted ones.
Thank you.
TBH, there's only a rare chance of this happening, but it can happen. I wouldn't consider this a major bug, just a minor glitch.
If fighting on a horse, lots of fast-kill stuff repeatedly, the horse eventually gets stuck in one spot while the player continues to move.
Gets fixed with a map switch.
See video of it here: https://youtu.be/5onQAJZvIcY
At 00:32, he first comes off his horse
At 01:42, I clear the invasion so he stops fighting, but he's still off his horse. He moves around but the horse remains in place.
At 02:30 he heads to KF sans horse, horse disappears when he switches maps, returns riding the horse.
Obviously done on Test server. ;-)
Hi, I recently bought a laptop with an HD display and nvidia gpu. In the settings I've selected 1920x1080 mode, tried both 16 and 32, but if I go fullscreen the game goes off screen and I'm not able to see part of the gui, making it impossible to play in fullscreen. Please tell me how to configure the settings properly, because it's the first time I have this issue, and I'm not sure it is a bug. Thanks in advance
Would it be possible to have an alt toggle for ether bars/numbers I suggest alt j, alt k, as I don't think they are currently used? Also they are in the keyboard group of alt b,h,n which are already used for char health names bars numbers etc. caladina via forum.
I have the same problem as this person:
http://www.eternal-lands.com/forum/index.php?showtopic=59790
The Problem: When I move in maps i frequently use the camera. May it be for fighting in invasion or hunting for pears and clicking everything harvestable. It needs a lot of camera ajustments. Now the problem with that is that the middle mouse button requires relatively strong force with your finger to push down. It doesnt take long and your hand tires and you need to stop playing. The other problem is that there is no setting in EL that let's you take care of changing the mouse control.
I patched events.c to switch the middle and right buttons.
Posting just in case someone needs it.
diff --git a/events.c b/events.c
index 3473b2e..d095f41 100644
--- a/events.c
+++ b/events.c
@@ -203,10 +203,13 @@ int HandleEvent (SDL_Event *event)
{
if (event->button.button == SDL_BUTTON_LEFT)
left_click++;
+ // switch middle and right
else if (event->button.button == SDL_BUTTON_RIGHT)
- right_click++;
+ //right_click++;
+ middle_click++;
else if (event->button.button == SDL_BUTTON_MIDDLE)
- middle_click++;
+ //middle_click++;
+ right_click++;
}
else
{
@@ -222,7 +225,9 @@ int HandleEvent (SDL_Event *event)
if (event->type == SDL_MOUSEMOTION && (event->motion.state & SDL_BUTTON_RMASK))
{
- right_click++;
+ // switch
+ //right_click++;
+ middle_click++;
#ifdef OSX
if (osx_right_mouse_cam)
{
@@ -232,7 +237,9 @@ int HandleEvent (SDL_Event *event)
}
else
{
- right_click = 0;
+ // switch
+ //right_click = 0;
+ middle_click = 0;
#ifdef OSX
if (osx_right_mouse_cam)
{
@@ -243,15 +250,21 @@ int HandleEvent (SDL_Event *event)
if (event->type == SDL_MOUSEMOTION && ((event->motion.state & SDL_BUTTON_MMASK) || meta_on))
{
- middle_click++;
+ // switch
+ //middle_click++;
+ right_click++;
}
else
{
- middle_click = 0;
+ // switch
+ //middle_click = 0;
+ right_click = 0;
}
}
- if ((SDL_GetMouseState(NULL, NULL) & SDL_BUTTON_MMASK) || have_mouse)
+ // switch
+ //if ((SDL_GetMouseState(NULL, NULL) & SDL_BUTTON_MMASK) || have_mouse)
+ if ((SDL_GetMouseState(NULL, NULL) & SDL_BUTTON_RMASK) || have_mouse)
{
camera_rotation_speed = camera_rotation_speed*0.5 + normal_camera_rotation_speed * mouse_delta_x*0.00025;
camera_tilt_speed = camera_tilt_speed*0.5 + normal_camera_rotation_speed * mouse_delta_y*0.00025;
Furthermore I would like to use the mouse wheel to switch between walk/look/use/...
In that case, zoom in/out would be bound to ctrl + mouse wheel.
Or, I might want it the other way around, with zoom as it is now, and holding down control to switch between actions.
For now I switch between actions by pressing the middle button (the wheel) down.
If it is too difficult to have complete control of the buttons in key.ini or whatever, perhaps a simple "switch middle and right mouse buttons" option would be good enough.
When storage trading, if you put all of an item into the trade window, it stops showing in your storage window.
(i.e. you have 10 daffodils, you put all 10 in trade window and they immediately no longer show in the storage)
However, if you trade something that's in multiple categories (examples: bones are in Animal and Weapons, low-level leather stuff is in Armor and Clothes) this does not happen.
(i.e. you have 2 leather boots, you put both in the trade window, it still shows 2 leather boots in storage)
This is not that important of course, but it would be great if these could disappear from sto window like other items while trading. (I notice it since I trade bones a lot with alts and I have to actually look to see if all the bones are in the trade window.)
EDIT: As well, when ALL of one of these objects are placed into the trade window, the object remains attached to the cursor, which doesn't happen for objects in single categories.
The program terminates itself after opening with an error message:
Process: EternalLands [29474] Path: /Users/USER/Downloads/*/EternalLands.app/Contents/MacOS/EternalLands Identifier: com.eternal-lands.EternalLands Version: 1.9.3 Code Type: X86 (Native) Parent Process: launchd [321] Responsible: EternalLands [29474] User ID: 501 Date/Time: 2013-10-25 19:14:05.899 +0200 OS Version: Mac OS X 10.9 (13A603) Report Version: 11 Anonymous UUID: XX123 Crashed Thread: 0 Dispatch queue: com.apple.main-thread Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Application Specific Information: abort() called Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libsystem_kernel.dylib 0x97848952 __pthread_kill + 10 1 libsystem_pthread.dylib 0x96fae167 pthread_kill + 101 2 libsystem_c.dylib 0x97698340 abort + 155 3 com.eternal-lands.EternalLands 0x001b765d __eprintf + 77 4 com.eternal-lands.EternalLands 0x001980eb CalCoreModel_ELLoadCoreAnimation + 251 5 com.eternal-lands.EternalLands 0x0002e3bb cal_load_anim + 315 6 com.eternal-lands.EternalLands 0x0000b912 parse_actor_frames + 3026 7 com.eternal-lands.EternalLands 0x00010daa parse_emotes_defs + 362 8 com.eternal-lands.EternalLands 0x00010fd8 read_emotes_defs + 200 9 com.eternal-lands.EternalLands 0x000c5f61 init_stuff + 897 10 com.eternal-lands.EternalLands 0x000de87c SDL_main + 92 11 com.eternal-lands.EternalLands 0x00003a88 -[SDLMain applicationDidFinishLaunching:] + 56 12 com.apple.Foundation 0x98ab0692 __57-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke + 49 13 com.apple.CoreFoundation 0x9b9917e4 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20 14 com.apple.CoreFoundation 0x9b8733fb _CFXNotificationPost + 3435 15 com.apple.Foundation 0x98a9eebf -[NSNotificationCenter postNotificationName:object:userInfo:] + 92 16 com.apple.AppKit 0x93c387d5 -[NSApplication _postDidFinishNotification] + 367 17 com.apple.AppKit 0x93c38475 -[NSApplication _sendFinishLaunchingNotification] + 239 18 com.apple.AppKit 0x93c34da4 -[NSApplication(NSAppleEventHandling) _handleAEOpenEvent:] + 840 19 com.apple.AppKit 0x93c34691 -[NSApplication(NSAppleEventHandling) _handleCoreEvent:withReplyEvent:] + 277 20 libobjc.A.dylib 0x96e1d304 -[NSObject performSelector:withObject:withObject:] + 77 21 com.apple.Foundation 0x98abf3fa __76-[NSAppleEventManager setEventHandler:andSelector:forEventClass:andEventID:]_block_invoke + 121 22 com.apple.Foundation 0x98abef31 -[NSAppleEventManager dispatchRawAppleEvent:withRawReply:handlerRefCon:] + 430 23 com.apple.Foundation 0x98abed3b _NSAppleEventManagerGenericHandler + 218 24 com.apple.AE 0x91681b15 aeDispatchAppleEvent(AEDesc const*, AEDesc*, unsigned long, unsigned char*) + 387 25 com.apple.AE 0x91650ed6 dispatchEventAndSendReply(AEDesc const*, AEDesc*) + 44 26 com.apple.AE 0x91650dce aeProcessAppleEvent + 318 27 com.apple.HIToolbox 0x982f47c1 AEProcessAppleEvent + 55 28 com.apple.AppKit 0x93c303a8 _DPSNextEvent + 1089 29 com.apple.AppKit 0x93c2fad0 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 119 30 com.apple.AppKit 0x93c2235c -[NSApplication run] + 727 31 com.eternal-lands.EternalLands 0x00003a1c CustomApplicationMain + 236 32 com.eternal-lands.EternalLands 0x00003c80 main + 176 33 com.eternal-lands.EternalLands 0x00002ee2 _start + 216 34 com.eternal-lands.EternalLands 0x00002e09 start + 41
The particles_percentage user option does not control eye candy, and only controls old particle (except weather) effects after a restart. See forum topic: http://www.eternal-lands.com/forum/index.php?/topic/61058-particle-percentage-problem
icon_window.cpp: In member function ‘virtual std::pair<float, float> IconWindow::Basic_Icon::get_uv()’:
icon_window.cpp:357:46: error: call of overloaded ‘abs(Uint32)’ is ambiguous
if (abs(SDL_GetTicks() - last_flash_change) > 250)
Is the abs here necessary for a 32bit unsigned integer?
I recently tried running EL under wayland instead of Xorg.
On NVIDIA closed source driver with Xorg, I can easily get 90+ FPS but it is capped on 60 since this is a 60hz monitor.
On nouveau open source driver with Xorg, I get ~15FPS.
On nouveau with wayland, I was getting 30FPS which is pretty good. But EL was using Xwayland instead of directly wayland. Xwayland was eating ~400Kbytes per minute this way. It apparently doesn't like EL.
Can EL be ported to work natively under Wayland thus bypassing Xwayland and avoiding the leaks?
Thank you.
TBH this can wait till 1.9.6 if it can't be figured out quickly.
There's coding for inside (dungeon) maps that if something is too far separated by blank space, it cannot be seen. For example, a map with house insides, if separated by enough space you cannot see the insides of other houses in the distance when you enter one.
This is broken by deleted objects. When a 3D object is deleted in the map editor, the 'blending_level' gets set to 20 rather than completely removing it from the file, to prevent changing of object ID numbers.
The code to "not see" the insides of other areas does not take this into account, and uses the deleted objects in determining what to show.
Example: a map has 2 house insides, and you cannot see one from inside the other.
I place an object between them that makes them too close, and you can now see one from inside the other.
I delete the object with no other changes. The client is still reading that deleted object is there, and you can still see inside one from the other.
What should happen: The code that determines what inside area to show should strip any objects with a blending level of 20 from information first before making this determination.
Also: Perhaps in the map editor code, when an object is deleted, it doesn't just set blending_level to 20, but also the position x and y both to something like -60, way off the map?
If a player starts the tutorial and gets a server mark on one client, and continues it on another, the server mark will remain on the first client. Only way to delete it currently is get rid of the servermarks file itself.
These would be better actually being saved and sent from the server but that probably won't happen. ;)
But esp. now with Android out there, there should be some way to eliminate the server mark without touching files.
The only bandage I could think of to put on this wound... the player stands where the mark is at and has a #command to delete the mark at that location?
An old issue, but has been seen a couple times in chat lately.
Is there anyone willing to work at a SDL2 port?
This would enable us to eventually have GLES support, Android, etc. We can also implement touch and other things specific to phones and tablets.
I'm having this error after trying to execute EL's compiled binary:
init.c:819: Fatal error while loading data files. Either set the data_dir correctly or run from the data directory.
Which would be the data directory?
Reported on the OL forums by SAWolf but effecting the EL client too:
"Basically you are walking around with bow and arrow equipped and you fire at an unsuspecting critter then switch gear either boots, pants, torso, helm, cape or medallion over to something else. None of the equipment changes show on the character until you either unequip one of the ranging items or take a step."
I tried compiling the client in CodeBlocks, but I am getting some issues I can't figure out.
I am getting a lot of undefined calls in Cal3d, such as:
Release\actor_init.o:actor_init.cpp:(.text+0x1ab9): undefined reference to CalModel::getUserData() const' Release\actor_init.o:actor_init.cpp:(.text+0x1b58): undefined reference to
CalHardwareModel::selectHardwareMesh(unsigned int)'
Release\actor_init.o:actor_init.cpp:(.text+0x1b64): undefined reference to `CalHardwareModel::getBoneCount() const'
I am linking with Cal3d (0.110), but it seems as though it doesn't even matter, not linking with it produces similar messages. Any ideas?
I was emailed by a gentoo user experiencing sound breakage with libopenal verison 1.18.2, 1.15.1 works fine. Ubuntu 18.04 LTS is to be released soon and also uses libopenal verison 1.18.2 and I have found also breaks sound. I have tracked down the problem to usage of alGetSourcei(), discussed here: kcat/openal-soft#126 which tells of a change to the library removing behaviour EL is using but which is not part of the openAL specification. I do not yet understand how to fix this properly, even though the link above discussed a solution.
However, I have a temporary fix that works around the problem, see this patch.txt. It looks to me that the related code has been broken for some time.
Mono sound files played by the game engine are mapped to the stereo panorama depending on the angle between the game actor and the relative direction of the actor and the sound source. Since this angle is not identical to the users/camera perspective it produces misleading results.
For instance:
If the actors face points to the camera, a sound source (e.g. monster) on the left side of the actor is played from the right side (loudspeaker/headset). IMHO it would be MUCH better if the spatial reference of sound is the camera angle and not the actor angle.
I don't think it makes much sense loading XML at runtime, especially since it very rarely changes.
I think it would be better if there was a tool that converted all the XML files to binaries, that are loaded at runtime by the client. This way we get rid of two dependencies (libxml2 and iconv), and would speed things up a bit, especially for slower devices, such as phones, raspberry pies, etc.
Just a button option to lock the skill bars at the bottom of the interface. That way if I misclick on one of the skills in the status bars it doesn't change the skill bars at the bottom. Forum post
I'm trying to build the code under Linux, but I have no idea of which dependencies are required. Also writing in the readme that the Makefile.linux must be renamed could be good.
This is the first error, but I think more would come:
platform.h:110:11: fatal error: AL/al.h: No such file or directory
#include <AL/al.h>
I tried the installer from the website, but a segmentation fault arises.
Please add some documentation about dependencies.
Hi. Is it possible to add 'ranging lock' on/off indicator in the lower right side of the window near the Special|harvest|poisoned|messages indicator?
Thank you.
gnewbie asked for an option to log NPC text.
Perhaps the simplest version would:
More complex options could include:
Ctrl-i to open the inventory is rather awkward with one hand, so I put this in my key.ini
#K_ITEMS = LCTRL q
I think check_quit_or_fullscreen should check they key bindings first before quitting.
If the player shapeshifts (to mule/phoenix), would it be possible to check if the player is sitting, and if so force the player to standup when the shift occurs?
As there is no "sit" while shapeshifted, this shouldn't be a problem to automatically do for the player.
This is an old "annoyance" because stand doesn't work after the shift, and while there's ways to work around it, a sitting player can't just click to move when shifts (when the setting to not move while sitting is on, which it is for most).
I am trying to compile Eternal-Lands on my iMac (2011) and looks like the code was not updated for Intel macs. Has there been any efforts to port the codebase to macs?
$ make --file Makefile.osx
Makefile.osx:96: target `gamewin.o' given more than once in the same rule.
Makefile.osx:96: target `gl_init.o' given more than once in the same rule.
gcc -mpowerpc -malign-natural -O -pipe -DOSX -DELC -DNO_MUSIC -DATI_9200_FIX -DBUG_FIX_3D_OBJECTS_MIN_MAX -DUSE_FRAMEBUFFER -DNEW_FRUSTUM -DAUTO_UPDATE -DNEW_TEX -DCOUNTERS -DNEW_E3D_FORMAT -DALUT_WAV -I/usr/include -I/usr/include/libxml2 -I/opt/local/include/ -I/Library/Frameworks/SDL.framework/Headers -D_REENTRANT -I/Library/Frameworks/SDL_net.framework/Versions/A/Headers/ -I/System/Library/Frameworks/OpenGL.framework/Headers/ -c -o 2d_objects.o 2d_objects.c
clang: error: unknown argument: '-mpowerpc'
clang: error: unknown argument: '-malign-natural'
make: *** [2d_objects.o] Error 1
Issue #50 reported that sound was broken for libopenal versions > 1.18.0. This has been fixed with commit dfb1c7a but only as a work around. The sound code needs to be refreshed to handle the libopenal change as intended, see kcat/openal-soft#126.
Not important, there are no ill effects other than the message being printed.
Patch:
diff --git a/gl_init.c b/gl_init.c
index 8ecbae9..93f1217 100644
--- a/gl_init.c
+++ b/gl_init.c
@@ -645,7 +645,7 @@ void init_gl_extensions()
/* GL_EXT_compiled_vertex_array */
/* GL_ARB_point_sprite */
- if (have_extension(ext_compiled_vertex_array))
+ if (have_extension(arb_point_sprite))
{
safe_snprintf(str, sizeof(str), gl_ext_found, "GL_ARB_point_sprite");
LOG_TO_CONSOLE(c_green2, str);
Trying to run the latest git checkout fails with:
el.x86.linux.bin: io/cal3d_io_wrapper.cpp:261: int CalCoreModel_ELLoadCoreAnimation(CalCoreModel_, const char_, float): Assertion `self' failed.
The backtrace:
#0 0x00000037dfa35ba5 in raise () from /lib64/libc.so.6
#1 0x00000037dfa37358 in abort () from /lib64/libc.so.6
#2 0x00000037dfa2e972 in __assert_fail_base () from /lib64/libc.so.6
#3 0x00000037dfa2ea22 in __assert_fail () from /lib64/libc.so.6
#4 0x000000000058c0df in CalCoreModel_ELLoadCoreAnimation (self=0x0,
strFilename=0x7fffffffdad0 "./animations/emotes/player_waveleft_stand.caf", scale=0) at io/cal3d_io_wrapper.cpp:261
#5 0x0000000000441621 in cal_load_anim (act=0xb11e00 <actors_defs>,
str=0x7fffffffdc30 "./animations/emotes/player_waveleft_stand.caf 1",
sound=0x656867 "", sound_scale=0x656867 "", duration=-1) at cal.c:408
#6 0x00000000004221a1 in parse_actor_frames (act=0xb11e00 <actors_defs>,
cfg=0x2095e80, defaults=0x0) at actor_scripts.c:3930
#7 0x000000000041d880 in parse_emotes_defs (node=0x20766b0)
at actor_scripts.c:2755
#8 0x000000000041db8a in read_emotes_defs (dir=0x660180 "",
index=0x660175 "emotes.xml") at actor_scripts.c:2803
#9 0x000000000048c06b in init_stuff () at init.c:884
#10 0x00000000004b45ec in main (argc=1, argv=0x7fffffffe2c8) at main.c:444
I tried it with/without EXT_ACTOR_DICT set and/or the actor_defs directory in git.
AFAICT act->coremodel is never getting set (parse_actor_nodes() doesn't get called) before calling cal_load_anim() so a NULL value is passed in to CalCoreModel_ELLoadCoreAnimation().
(Esp. now with the Android not being as simple to switch.)
I was thinking something along the lines of a button on the login screen to "change server".
Clicked it gives some form of list of the names given to all server options in servers.lst. Select one, and the client disconnects from the current server, connecting to the other one.
If I leave the game with audio disabled in the menu, then restart the game and enable the audio, only the music plays, but sounds such as footsteps etc. aren't played. Enabling and restarting solves the problem, but is bit annoying. I'm using the debian build, installed with apt-get
My Perl-only brain ain't helping with this, but it should be quite simple to do. I can explain what to do, just not sure how to properly implement it.
In map_editor/mapedit.ini -
add these 3 lines
Reflections when editing maps with water can be problematic, not recommended while editing.
Turn on only if you actually need them for some reason.
#show_reflections = 0
Then in map_editor/draw_scene.c , change line 87 to something like this:
if(show_reflections)
any_reflection=find_reflection(); // <- the actual line 87
else
any_reflection=0;
(Actually, any_reflection is set by default to 0 at the top of the void this is in, so the "else" part is unnecessary. Leaving to indicate the proper result for any_reflection.)
Not sure if that's the proper way to do it in C++, but the basic gist is if show_reflections in mapedit.ini is 0, then don't bother with find_reflection and set any_reflection to 0 so future calls to reflections will be skipped.
My main issue is I'm not sure how to call the value of show_reflections in C++, otherwise I'd have tried doing this myself.
(I have tested this by just directly setting any_reflection to 0 and compiling that way... huge improvement in the editor working around water.)
The option to turn off reflections not only turns off reflections, but the entire screen's background color doesn't change to blue just because water shows up... one of the single most annoying aspects of the editor. I really wish I'd thought to change this sooner.
The current checks to ensure the mini-map remains on-screen after scale or video size changes, does not take the special title bar into consideration. This means the window can be visible but partially off-screen and unmovable because the title bar is off-screen,
I got a crash while rotating the camera during an invance. this was at the beginning with lots of monsters, people, and also probably a lot of fighting/magic effects.
I'm attaching a gdb backtrace captured with coredumpctl.
gdb.txt
After updating to nvidia's new driver, EL crashes a second after logging in. Sadly, nvidia doesn't provide debug libraries. Any ideas?
Core was generated by `./el'.
Program terminated with signal SIGABRT, Aborted.
#0 0x00007f23ea9d0275 in raise () from /usr/lib/libc.so.6
Current thread is 1 (Thread 0x7f23ede11740 (LWP 1386)) bt full
#0 0x00007f23ea9d0275 in raise () from /usr/lib/libc.so.6
No symbol table info available.
#1 0x00007f23ea9d168a in abort () from /usr/lib/libc.so.6
No symbol table info available.
#2 0x00007f23e879a249 in ?? () from /usr/lib/libGLX_nvidia.so.0
No symbol table info available.
#3 0x00007f23e78c17f3 in ?? () from /usr/lib/libnvidia-glcore.so.367.18
No symbol table info available.
#4 0x00007f23e78c1eb2 in ?? () from /usr/lib/libnvidia-glcore.so.367.18
No symbol table info available.
#5 0x00007f23e784d88d in ?? () from /usr/lib/libnvidia-glcore.so.367.18
No symbol table info available.
#6 0x00007f23e780e6bc in ?? () from /usr/lib/libnvidia-glcore.so.367.18
No symbol table info available.
#7 0x00007f23e780ef75 in ?? () from /usr/lib/libnvidia-glcore.so.367.18
No symbol table info available.
#8 0x00007f23e7822fa2 in ?? () from /usr/lib/libnvidia-glcore.so.367.18
No symbol table info available.
#9 0x00007f23e782367e in ?? () from /usr/lib/libnvidia-glcore.so.367.18
No symbol table info available.
#10 0x00007f23e77c2693 in ?? () from /usr/lib/libnvidia-glcore.so.367.18
No symbol table info available.
#11 0x00007f23e74174cb in ?? () from /usr/lib/libnvidia-glcore.so.367.18
---Type to continue, or q to quit---
No symbol table info available.
#12 0x00000000004587d6 in draw_scene () at draw_scene.c:119
No locals.
#13 0x00000000004af346 in start_rendering () at main.c:220
event = {type = 105 'i', active = {type = 105 'i', gain = 110 'n',
state = 105 'i'}, key = {type = 105 'i', which = 110 'n',
state = 105 'i', keysym = {scancode = 32 ' ', sym = 26214,
mod = KMOD_NONE, unicode = 0}}, motion = {type = 105 'i',
which = 110 'n', state = 105 'i', x = 29472, y = 30068,
xrel = 26214, yrel = 0}, button = {type = 105 'i',
which = 110 'n', button = 105 'i', state = 116 't', x = 29472,
y = 30068}, jaxis = {type = 105 'i', which = 110 'n',
axis = 105 'i', value = 29472}, jball = {type = 105 'i',
which = 110 'n', ball = 105 'i', xrel = 29472, yrel = 30068},
jhat = {type = 105 'i', which = 110 'n', hat = 105 'i',
value = 116 't'}, jbutton = {type = 105 'i', which = 110 'n',
button = 105 'i', state = 116 't'}, resize = {type = 105 'i',
w = 1970565920, h = 26214}, expose = {type = 105 'i'}, quit = {
type = 105 'i'}, user = {type = 105 'i', code = 1970565920,
data1 = 0x6666, data2 = 0x0}, syswm = {type = 105 'i',
msg = 0x6666}}
done = 0
network_thread_data = {0xfbc1ff0, 0xac0100 <done>}
last_frame_and_command_update = 0
network_thread = 0xfa79810
message_queue = 0xfbc1ff0
#14 0x00000000004afb1c in main (argc=1, argv=0x7ffd7a094908) at main.c:467
No locals.
Particles do not get rendered if the camera is more than 4.5 or so "zoomed out".
The 4.5 being a reference to the Camera > Maximum Camera Zoom Out option which goes up to 8.0.
Not the greatest video, but you can see this in action. I start with the camera at a full "8.0" zoomed out as far as possible and slowly zoom in. At around 11 seconds, you see the particles for the Bethel fast-heal waterfall suddenly make an appearance. They disappear at around the same zoom later when zooming back out.
Noticed this a long time ago, but simply didn't care. However as I go through all the maps while editing I'm noting particles can be a necessity in certain situations to make some sense of the design.
This may possibly be a result of the client having had the "Maximum Camera Zoom Out" changed a couple releases back to allow it to go further out. Particles may possibly have been limited to the original max camera and need to be changed to show up to the current zoom out?
This happens with all particles that I've noticed, not just the shown example.
For the right-click "Background On" option for the S H P M indicators, the background will turn off by itself when you press TAB to go from viewing the tab map back to regular game view. There's basically no way to keep the background on with this happening, which I prefer as it makes the letters more noticeable.
Possibly other ways, but that's a confirmed one.
Steps to reproduce:
Result: Nothing gets printed to the chat console
Expected result: Item description printed to console
Version used: 1.9.5p2
This file is causing problems in the Android build. stdio.h includes our file instead of its own file :/
We should change it to el_memory.h or something.
Most window managers follow the fdo standards http://standards.freedesktop.org/wm-spec/1.3/ar01s05.html
Look for _NET_WM_STATE_ABOVE.
It would be a nice option under the Linux client (Maybe in view options -> controls). I have no idea if other operating systems have such an option but this supposedly works on any window manager under X11.
I will describe how I got el to work with the fairly new AMD radeon crimson 15.302 driver for Linux.
The problems described here may be of interest if there are problems with other new drivers as well.
I have since downgraded to an older "catalyst" driver, which does not have any of these problems.
relevant section from glxinfo:
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: AMD Radeon R9 200 / HD 7900 Series
OpenGL version string: 1.4 (2.1 (4.5.13416 Compatibility Profile Context 15.302))
OpenGL extensions:
GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_fragment_program,
GL_ARB_fragment_program_shadow, GL_ARB_framebuffer_object, GL_ARB_imaging,
GL_ARB_multisample, GL_ARB_multitexture, GL_ARB_occlusion_query,
GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_shadow,
GL_ARB_shadow_ambient, GL_ARB_texture_border_clamp,
GL_ARB_texture_compression, GL_ARB_texture_cube_map,
GL_ARB_texture_env_add, GL_ARB_texture_env_combine,
GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3,
GL_ARB_texture_mirrored_repeat, GL_ARB_texture_non_power_of_two,
GL_ARB_texture_rectangle, GL_ARB_transpose_matrix, GL_ARB_vertex_program,
GL_ARB_window_pos, GL_ATIX_texture_env_combine3, GL_ATI_draw_buffers,
GL_ATI_texture_env_combine3, GL_ATI_texture_mirror_once, GL_EXT_abgr,
GL_EXT_bgra, GL_EXT_blend_color, GL_EXT_blend_equation_separate,
GL_EXT_blend_func_separate, GL_EXT_blend_minmax, GL_EXT_blend_subtract,
GL_EXT_copy_texture, GL_EXT_draw_range_elements, GL_EXT_fog_coord,
GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample,
GL_EXT_framebuffer_object, GL_EXT_multi_draw_arrays, GL_EXT_packed_pixels,
GL_EXT_point_parameters, GL_EXT_rescale_normal, GL_EXT_secondary_color,
GL_EXT_separate_specular_color, GL_EXT_shadow_funcs, GL_EXT_stencil_wrap,
GL_EXT_subtexture, GL_EXT_texture3D, GL_EXT_texture_compression_s3tc,
GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, GL_EXT_texture_lod,
GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp,
GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_vertex_array,
GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate,
GL_NV_texture_rectangle, GL_SGIS_generate_mipmap,
GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp,
GL_SGIS_texture_lod, GL_SGIX_shadow_ambient, GL_SUN_multi_draw_arrays
Since el seems to require VBO, I made it use the non-ARB procedures when the extension is not available.
Like this:
diff --git a/load_gl_extensions.c b/load_gl_extensions.c
index 20efa84..ac32883 100644
--- a/load_gl_extensions.c
+++ b/load_gl_extensions.c
@@ -892,6 +892,26 @@ static GLboolean el_init_GL_ARB_vertex_buffer_object()
return r;
}
+/* VBO is a core part of OpenGL versions >= 1.5 */
+static GLboolean el_init_GL_CORE_vertex_buffer_object()
+{
+ GLboolean r = GL_TRUE;
+
+ r = ((ELglBindBufferARB = (PFNGLBINDBUFFERARBPROC)SDL_GL_GetProcAddress("glBindBuffer")) != NULL) && r;
+ r = ((ELglBufferDataARB = (PFNGLBUFFERDATAARBPROC)SDL_GL_GetProcAddress("glBufferData")) != NULL) && r;
+ r = ((ELglBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC)SDL_GL_GetProcAddress("glBufferSubData")) != NULL) && r;
+ r = ((ELglDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)SDL_GL_GetProcAddress("glDeleteBuffers")) != NULL) && r;
+ r = ((ELglGenBuffersARB = (PFNGLGENBUFFERSARBPROC)SDL_GL_GetProcAddress("glGenBuffers")) != NULL) && r;
+ r = ((ELglGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC)SDL_GL_GetProcAddress("glGetBufferParameteriv")) != NULL) && r;
+ r = ((ELglGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC)SDL_GL_GetProcAddress("glGetBufferPointerv")) != NULL) && r;
+ r = ((ELglGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC)SDL_GL_GetProcAddress("glGetBufferSubData")) != NULL) && r;
+ r = ((ELglIsBufferARB = (PFNGLISBUFFERARBPROC)SDL_GL_GetProcAddress("glIsBuffer")) != NULL) && r;
+ r = ((ELglMapBufferARB = (PFNGLMAPBUFFERARBPROC)SDL_GL_GetProcAddress("glMapBuffer")) != NULL) && r;
+ r = ((ELglUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)SDL_GL_GetProcAddress("glUnmapBuffer")) != NULL) && r;
+
+ return r;
+}
+
static GLboolean el_init_GL_ARB_occlusion_query()
{
GLboolean r = GL_TRUE;
@@ -1198,6 +1218,12 @@ void init_opengl_extensions()
{
extensions |= 1 << arb_vertex_buffer_object;
}
+ } else {
+ e = el_init_GL_CORE_vertex_buffer_object();
+ if (e == GL_TRUE)
+ {
+ extensions |= 1 << arb_vertex_buffer_object;
+ }
}
/* GL_ARB_vertex_buffer_object */
/* GL_ARB_shadow */
Without the above patch el crashes when attempting to call ELglGenBuffersARB (which is NULL)
For example, when creating a new character:
Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) bt
#0 0x0000000000000000 in ?? ()
#1 0x000000000065761b in eternal_lands::HardwareBuffer::HardwareBuffer (
this=0x1ea5ea0) at engine/hardwarebuffer.cpp:16
#2 0x0000000000603728 in ec::Effect::Effect (this=0x1ea5e20)
at eye_candy/eye_candy.h:2034
#3 0x0000000000605860 in ec::CampfireEffect::CampfireEffect (this=0x1ea5e20,
_base=0xadbec0 <eye_candy>, _dead=0x1ea5e00, _pos=0x1ea5d88,
_obstructions=0xadc0c0 <fire_obstructions_list>, _hue_adjust=0,
_saturation_adjust=1, _scale=1.5, _LOD=10)
at eye_candy/effect_campfire.cpp:209
#4 0x00000000005cf104 in ec_create_campfire (x=26.9383049, y=79.5691757, z=0,
hue_adjust=0, saturation_adjust=1, LOD=10, scale=1.5)
at eye_candy_wrapper.cpp:1433
#5 0x00000000004dcfc8 in real_add_particle_sys (
file_name=0x7fffffffdba0 "./particles/fire_big.part", x_pos=26.9383049,
y_pos=79.5691757, z_pos=0, dynamic=0) at particles.c:780
#6 0x00000000004dcaaf in add_map_particle_sys (
file_name=0x7fffffffdba0 "./particles/fire_big.part", x_pos=26.9383049,
y_pos=79.5691757, z_pos=0, dynamic=0) at particles.c:718
#7 0x0000000000498b8e in do_load_map (
file_name=0x6ab13c "./maps/newcharactermap.elm",
update_function=0x4b860b <updat_func>) at io/map_io.c:599
...
This happens even if vertex buffer is disabled in settings.
Even with the above patch, if vertex buffer is enabled, el crashes in draw_water_background.
I did the same thing for ARB_vertex_shader and ARB_shader_objects,
and forced arb_fragment_shader and arb_shading_language_100 to be supported as they should be.
Unfortunately the shaders would not compile.
I was able to create a new character with the above patch, but
ran into some problems with the eye candy.
I didn't see any obvious reasons for the crashes or null buffer, so I just disabled the relevant code.
diff --git a/eye_candy/effect_selfmagic.cpp b/eye_candy/effect_selfmagic.cpp
index a0698ac..02db324 100644
--- a/eye_candy/effect_selfmagic.cpp
+++ b/eye_candy/effect_selfmagic.cpp
@@ -778,6 +778,8 @@ namespace ec
void SelfMagicEffect::draw(const Uint64 usec)
{
#ifdef NEW_TEXTURES
+ // crash after getting off boat?
+ //return;
if (capless_cylinders != 0)
{
capless_cylinders->draw(alpha_scale);
diff --git a/eye_candy/effect_teleporter.cpp b/eye_candy/effect_teleporter.cpp
index adfaf7e..f65b2d6 100644
--- a/eye_candy/effect_teleporter.cpp
+++ b/eye_candy/effect_teleporter.cpp
@@ -196,6 +196,8 @@ namespace ec
void TeleporterEffect::draw(const Uint64 usec)
{
#ifdef NEW_TEXTURES
+ // crashed...
+ //return;
capless_cylinders->draw(1.0f);
#else /* NEW_TEXTURES */
for (std::vector<Shape*>::iterator iter = capless_cylinders.begin(); iter
diff --git a/eye_candy/eye_candy.cpp b/eye_candy/eye_candy.cpp
index 563c3f4..f40d2e6 100644
--- a/eye_candy/eye_candy.cpp
+++ b/eye_candy/eye_candy.cpp
@@ -218,6 +218,7 @@ namespace ec
corner[2] = Vec3(pos + base->corner_offset1 * size);
corner[3] = Vec3(pos - base->corner_offset2 * size);
+ if (buffer == NULL) return;
for (i = 0; i < 4; i++)
{
index = particle_count * 4 + i;
@@ -928,6 +929,7 @@ namespace ec
vertex_buffer.bind(el::hbt_vertex);
vertices = static_cast<CaplessCylindersVertex*>(vertex_buffer.map(el::hbt_vertex, el::hbat_write_only));
+ if (vertices == NULL) return; // crash entering boat on Isla Prima (vertices was null)
size = 3 * sizeof(GLushort) * facet_count;
I was able to create a new character, and complete the newbie tutorial with the above patches.
No shadows or reflections. The ocean and puddles were just one solid color with a slight gradient.
Now I am using the older catalyst drivers (version 15.201.1151) that supports all the extensions.
No problems whatsoever.
systemd logged this:
PID: 4562 (el.x86.linux.bi)
UID: 1000 (hussam)
GID: 100 (users)
Signal: 11 (SEGV)
Timestamp: Sun 2014-10-26 21:24:09 EET (1min 28s ago)
Command Line: ./el.x86.linux.bin
Executable: /home/hussam/games/el_linux/el.x86.linux.bin
Control Group: /user.slice/user-1000.slice/session-c2.scope
Unit: session-c2.scope
Slice: user-1000.slice
Session: c2
Owner UID: 1000 (hussam)
Boot ID: 1c708dbd83b2416483c54d41c37175dd
Machine ID: efb490e643e2436d9d1138df1745a008
Hostname: hades
Message: Process 4562 (el.x86.linux.bi) of user 1000 dumped core.
Stack trace of thread 4562:
#0 0x000000000041ef33 add_command_to_actor (el.x86.linux.bin)
#1 0x00000000004e7948 process_message_from_server (el.x86.linux.bin)
#2 0x00000000004d1f11 start_rendering (el.x86.linux.bin)
#3 0x00000000004d2947 main (el.x86.linux.bin)
#4 0x00007f47d07f4040 __libc_start_main (libc.so.6)
#5 0x0000000000410b04 _start (el.x86.linux.bin)
Stack trace of thread 4563:
#0 0x00007f47d33aa8bf pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#1 0x00007f47d360c83e SDL_CondWait (libSDL-1.2.so.0)
#2 0x0000000000509f0e queue_pop_blocking (el.x86.linux.bin)
#3 0x0000000000553b2e load_enhanced_actor_thread (el.x86.linux.bin)
#4 0x00007f47d35caaf8 n/a (libSDL-1.2.so.0)
#5 0x00007f47d360c019 n/a (libSDL-1.2.so.0)
#6 0x00007f47d33a5314 start_thread (libpthread.so.0)
#7 0x00007f47d08bc3ed __clone (libc.so.6)
Stack trace of thread 4564:
#0 0x00007f47d33aa8bf pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#1 0x00007f47d360c83e SDL_CondWait (libSDL-1.2.so.0)
#2 0x0000000000509f0e queue_pop_blocking (el.x86.linux.bin)
#3 0x0000000000553b2e load_enhanced_actor_thread (el.x86.linux.bin)
#4 0x00007f47d35caaf8 n/a (libSDL-1.2.so.0)
#5 0x00007f47d360c019 n/a (libSDL-1.2.so.0)
#6 0x00007f47d33a5314 start_thread (libpthread.so.0)
#7 0x00007f47d08bc3ed __clone (libc.so.6)
Stack trace of thread 4566:
#0 0x00007f47d33aa8bf pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#1 0x00007f47d360c83e SDL_CondWait (libSDL-1.2.so.0)
#2 0x0000000000594447 custom_update_thread (el.x86.linux.bin)
#3 0x00007f47d35caaf8 n/a (libSDL-1.2.so.0)
#4 0x00007f47d360c019 n/a (libSDL-1.2.so.0)
#5 0x00007f47d33a5314 start_thread (libpthread.so.0)
#6 0x00007f47d08bc3ed __clone (libc.so.6)
Stack trace of thread 4565:
#0 0x00007f47d33aa8bf pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
#1 0x00007f47d360c83e SDL_CondWait (libSDL-1.2.so.0)
#2 0x0000000000594447 custom_update_thread (el.x86.linux.bin)
#3 0x00007f47d35caaf8 n/a (libSDL-1.2.so.0)
#4 0x00007f47d360c019 n/a (libSDL-1.2.so.0)
#5 0x00007f47d33a5314 start_thread (libpthread.so.0)
#6 0x00007f47d08bc3ed __clone (libc.so.6)
Stack trace of thread 4571:
#0 0x00007f47d33ada7d __nanosleep (libpthread.so.0)
#1 0x00007f47d360e655 SDL_Delay (libSDL-1.2.so.0)
#2 0x0000000000529575 update_streams (el.x86.linux.bin)
#3 0x00007f47d35caaf8 n/a (libSDL-1.2.so.0)
#4 0x00007f47d360c019 n/a (libSDL-1.2.so.0)
#5 0x00007f47d33a5314 start_thread (libpthread.so.0)
#6 0x00007f47d08bc3ed __clone (libc.so.6)
Stack trace of thread 4572:
#0 0x00007f47d08b5313 __select (libc.so.6)
#1 0x00007f47d2717d8f SDLNet_CheckSockets (libSDL_net-1.2.so.0)
#2 0x00000000004eac68 get_message_from_server (el.x86.linux.bin)
#3 0x00007f47d35caaf8 n/a (libSDL-1.2.so.0)
#4 0x00007f47d360c019 n/a (libSDL-1.2.so.0)
#5 0x00007f47d33a5314 start_thread (libpthread.so.0)
#6 0x00007f47d08bc3ed __clone (libc.so.6)
Stack trace of thread 4567:
#0 0x00007f47d33ada7d __nanosleep (libpthread.so.0)
#1 0x00007f47d360e655 SDL_Delay (libSDL-1.2.so.0)
#2 0x00007f47d360e6a2 n/a (libSDL-1.2.so.0)
#3 0x00007f47d35caaf8 n/a (libSDL-1.2.so.0)
#4 0x00007f47d360c019 n/a (libSDL-1.2.so.0)
#5 0x00007f47d33a5314 start_thread (libpthread.so.0)
#6 0x00007f47d08bc3ed __clone (libc.so.6)
Stack trace of thread 4570:
#0 0x00007f47d08b35bd poll (libc.so.6)
#1 0x00007f47ba5398d6 n/a (libasound.so.2)
#2 0x00007f47d22d21fa n/a (libopenal.so.1)
#3 0x00007f47d22d6be7 n/a (libopenal.so.1)
#4 0x00007f47d33a5314 start_thread (libpthread.so.0)
#5 0x00007f47d08bc3ed __clone (libc.so.6)
Kaddy said: Can you please add a "used/consumed" section in the counters? I posted this in @@6 and alot of people loved the idea.
Montez added: +1 for this idea as well Kaddy. I would love to know how many/much of an item I have "used". Something quite similar to the other counters, such as Alchemy, etc which require a simple click in the manufacture window to be put into its own category. I am hoping this type of counter could be added as well for consumables.
Ok, so I've been thinking about the Android port for the last few days, and I think the following things need to be done:
Things that have to be removed from the client:
Things that have to be added:
Things that have to be changed:
This should be about it. Let me know if you think I missed something, or if you have some other ideas.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.