Guest dangph Report post Posted December 21, 2005 I finally figured out how to get Eternal Lands 112 to run on FreeBSD, so I thought I'd post some notes here for other FreeBSD users. I did try the recommended method of building from CVS source, and it did build with "gmake -f Makefile.bsdg" (I had to add "-DBSD" to the end of the "OPTIONS" line for it to compile, BTW), but it didn't run; it just exited immediately with no error message. So here an alternative method that worked for me. What to do: 1. Download and unzip the Linux version. 2. Run the linux binary: el.x86.linux.bin 3. That's all. It seems to work fine. To get sound working (for the Linux version), I *think* you need to install audio/linux-openal from the ports tree. You may then need to specify a sound system in /usr/compat/linux/etc/openalrc . I have "(define devices '(arts))" because I use KDE. Search on the Internet for other possible values. I assume the sound is working on my machine because the music works (note: the music is a separate download). I haven't actually heard any sound effects yet, but judging by the contents of the "sound" directory, the game is virtually sound-free. For reference, I'm running FreeBSD 6.0, and the following are all the ports I have on my system that have "linux" in the name. $ pkg_info | grep linux linux-XFree86-libs-4.3.99.902_5 XFree86 libraries, Linux binary linux-alsa-lib-1.0.6.8_1 The Advanced Linux Sound Architecture libraries linux-arts-1.3.0.4_1 Audio system for the KDE integrated X11 desktop (Linux vers linux-atk-1.8.0_1 Accessibility Toolkit, Linux/i386 binary linux-divx4linux-5.0.20030428_1 Linux binary release of DivX Codec linux-esound-0.2.35 RPM of esound linux-expat-1.95.7 Linux/i386 binary port of Expat XML-parsing library linux-flashplugin-6.0r79_3 The official Macromedia Flash Player for Linux Mozilla and linux-fontconfig-2.2.3_2 Linux/i386 binary of Fontconfig linux-glib2-2.4.8_1 Version 2.X Linux/i386 binary port of GLib linux-gtk2-2.4.14_1 GTK+ library, version 2.X, Linux binary linux-jpeg-6b.33 RPM of the JPEG lib linux-libaudiofile-0.2.6 RPM of audiofile linux-libogg-1.1.2.2_1 Ogg bitstream library (Linux version) linux-libvorbis-1.1.0.1_1 Audio compression codec library (Linux version) linux-openal-0.0.0.2.20040726_1 A 3D positional spatialized sound library (Linux version) linux-pango-1.6.0 Linux pango binary linux-png-1.2.8 RPM of the PNG lib linux-realplayer-10.0.6 Linux RealPlayer 10 from RealNetworks linux-sdl-1.2.5_2 Cross-platform multi-media development API (linux version) linux-sdl_image-1.2.4 A simple library to load images as SDL interfaces (linux ve linux-tiff-3.6.1_5 TIFF library, Linux/i386 binary linux_base-8-8.0_10 Base set of packages needed in Linux mode (for i386/amd64) linux_dri-4.4.0 Binary Linux DRI libraries for 3D hardware acceleration of linuxpluginwrapper-20051113 A wrapper allowing use of linux-plugins with native applica linuxthreads-2.2.3_19 POSIX pthreads implementation using rfork to generate kerne Quote Share this post Link to post Share on other sites
Enki Report post Posted December 22, 2005 I can run the native FreeBSD binary without problems.. Just gmake -f Makefile.bsd as you said dangph and make sure -DBSD is in it. Also make sure that you dont compile with -DNEW_FRUSTUM..it segfaults for me. When you have compiled it just put the binary in the directory where you unzipped the linux-package and run Quote Share this post Link to post Share on other sites
Guest san Report post Posted December 22, 2005 (edited) Hi all, I'm new to this game, haven't played it for a second, but it sounds fun and I thought let's try this on DesktopBSD 1.0 RC3 (== FreeBSD 5.4). The first attempt I made was by using the Makefile.bsd (with gmake) but it compained about a lot of errors in the Makefile.. So I switched to the Makefile.bsdg which seemed a lot nicer.. I changed a few include/ifdef lines in the source to make sure that gmake uses sdtlib.h instead of malloc.h (in books.c and rules.c) I just noticed adding a -DBSD to this line in the Makefile.bsdg should do the same: OPTIONS=-DLINUX -DELC -DPNG_SCREENSHOT -DNETWORK_THREAD -DBSD Because this line doesn't work (a whole lot of errors): gmake -f Makefile.bsdg release I compile the game with: gmake -f Makefile.bsdg When I start the game I get a segfault.. I do see a window popping up and the loading bar with a background but that's about it.. This is the error_log.txt.. It looks like some cal3d problem but I have cal3d (version 0.10.0) installed and cal3d-devel (version 0.11.0) Any idea's how to build a valid FreeBSD binary? And why doesn't the team provide this? You guys know how it works.. and provide Makefiles... Cheers, San PS. I will try the linux version on BSD but I really hope that this game will have a native BSD binary... PPS. Hmm the linux version also segfaults.. will have to look further into this Edited December 22, 2005 by san Quote Share this post Link to post Share on other sites
Enki Report post Posted December 22, 2005 Are you sure that you have all the required files? unzip the linux client zipfile from the el-website and try to run it from inside that directory. Quote Share this post Link to post Share on other sites
Guest san Report post Posted December 22, 2005 (edited) Are you sure that you have all the required files? unzip the linux client zipfile from the el-website and try to run it from inside that directory. yes I'm pretty sure I do. I have installed the ports version and the linux update. I installed them both in /usr/local/games/el But both the linux as the BSD version do segfault... I removed the ports version and redownloaded the complete linux version.. placed the bsd executable in there and it works!! sannie is in the game Thanks for your fast reply Enki.. Cheers, San Edited December 22, 2005 by san Quote Share this post Link to post Share on other sites
Enki Report post Posted December 22, 2005 Ok. I have had some problems with my nvidia driver when running linux-opengl apps as root. After running certain linux apps the opengl quits working correctly and all applications trying to use it (FreeBSD and linux ones) just segfaults. I did the following: rm /compat/linux/dev/nvidiactl reboot Then try to run el again as non-root Hope it helps! /Enki Quote Share this post Link to post Share on other sites
Cormaher Report post Posted December 24, 2005 There is a topic about EL on BSD here. It's not easy to figure out, but it works a hell of a lot better than using Linux-compatibility. Quote Share this post Link to post Share on other sites
Cormaher Report post Posted February 7, 2006 I have compiled the current CVS (that is, el-1.2.0 as it is) for my FreeBSD system. I don't know if the binary will work on other FreeBSD systems, but I suspect it has a chance. So I decided to put it online. The thing is compiled on (and probably for ) FreeBSD 6-STABLE. Please, give me a call if it doesn't work and what the error is (I might just learn a bit). Also, if it works for you, let me know please! Link: el.x86.bsd.bin Put it in your EL-folder. It worked for me, as long as the folder is located as: /usr/local/games/el When located somewhere else, make sure your el.ini contains the right path. Quote Share this post Link to post Share on other sites
RallosZek Report post Posted October 4, 2006 (edited) Some additional things: -DNEW_FRUSTUM is pretty much needed to run the game and needs -DBUG_FIX_3D_OBJECTS_MIN_MAX. Symptoms if this isn't compiled: cursor offsets while trying to talk to npc's. # OpenAL and Alut were split in ports.if defined(WITH_FREEALUT) || exists(/usr/local/bin/freealut-config)LDFLAGS+=`freealut-config --libs`.endif If you've installed from port, -DAUTO_UPDATE is only useful after chmod -R g+w /usr/local/share/el (or playing as root, but eh.....indeed) -DNEW_TEX is also safe and recommended there's some legacy stuff about being able to compile without cal3d, haven't been able to since 1.1.2, so safe to delete that bit. Above uses Makefile.bsd, not bsdg, as I have no knowledge of gmake. Patch on normals.c, if you use the TERRAIN feature: Index: normals.c =================================================================== RCS file: /cvsroot/elc/elc/normals.c,v retrieving revision 1.9 diff -u -r1.9 normals.c --- normals.c 19 Oct 2005 22:22:53 -0000 1.9 +++ normals.c 6 Dec 2006 23:59:28 -0000 @@ -6,7 +6,10 @@ */ #include <stdlib.h> #include <string.h> +/* BSD malloc is in stdlib.h and now throws a compile error */ +#ifndef BSD #include <malloc.h> +#endif #include <stdio.h> #ifdef MAP_EDITOR2 #include "../map_editor2/global.h" Edited December 7, 2006 by RallosZek Quote Share this post Link to post Share on other sites
Guest killdos Report post Posted March 9, 2007 (edited) hello all i installed el-1.3.3 from ports on FreeBSD 6.2-STABLE and now i have an invisible characters. i see only heads and things which it holds in it's hands. how to fix it? Edited March 9, 2007 by killdos Quote Share this post Link to post Share on other sites
RallosZek Report post Posted November 30, 2007 Since Makefile.bsd is unmaintained, here's a BSDmakefile you can put in elc dir and will be recognized by FreeBSD's pmake: VERSION=150 PROG=el.x86.bsd.bin.${VERSION} NO_MAN=yes EXTRA_INCLUDES?= EXTRA_LIBS?= CPPFLAGS=-DBSD -DELC ${EXTRA_INCLUDES} CFLAGS+=-ffast-math CXXFLAGS+=-ffast-math # Core sources SRCS=2d_objects.c 3d_objects.c \ actor_scripts.c actors.c alphamap.c asc.c astrology.c \ bbox_tree.c books.c buddy.c bags.c \ cache.c cal.c chat.c cluster.c colors.c console.c consolewin.c \ counters.c cursors.c dialogues.c draw_scene.c \ elconfig.c elwindows.c encyclopedia.c errors.c events.c \ filter.c font.c framebuffer.c frustum.c \ gamewin.c gl_init.c hud.c help.c highlight.c \ ignore.c init.c interface.c items.c \ io/e3d_io.c io/elc_io.c io/map_io.c \ keys.c knowledge.c langselwin.c lights.c list.c load_gl_extensions.c \ loginwin.c loading_win.c \ main.c manufacture.c map.c mapwin.c \ md5.c mines.c misc.c multiplayer.c \ new_actors.c new_character.c \ openingwin.c \ particles.c paste.c pathfinder.c pm_log.c \ questlog.c queue.c reflection.c rules.c \ skills.c serverpopup.c servers.c session.c shadows.c sound.c \ spells.c stats.c storage.c \ tabs.c text.c textures.c tile_map.c timers.c translate.c trade.c \ update.c url.c weather.c widgets.c \ cal3d_wrapper.cpp # Feature related sources ENCYCLOPEDIA_SRCS = books/fontdef.c books/parser.c books/symbol.c books/typesetter.c sort.c symbol_table.c MEMORY_DEBUG_SRCS = elmemory.c NOTEPAD_SRCS = notepad.c POPUP_SRCS = popup.c SFX_SRCS = special_effects.c MINIMAP_SRCS = minimap.c SKY_FPV_CURSOR_SRCS = sky.c NEW_FILE_IO_SRCS = io/elpathwrapper.c io/xmlcallbacks.c NEW_FILE_IO_SRCS += io/elfilewrapper.cpp io/elfile.cpp io/zipfilesystem.cpp USE_SHADER_SRCS = shader/noise.c shader/shader.c PAWN_SRCS = pawn/amx.c pawn/amxaux.c pawn/amxcons.c pawn/amxel.c \ pawn/amxfloat.c pawn/amxstring.c pawn/elpawn.c USE_SEND_VIDEO_INFO_SRCS = sendvideoinfo.cpp CXX_MISC_SRCS = exceptions/extendedexception.cpp xml/xmlhelper.cpp EYE_CANDY_SRCS=eye_candy_wrapper.cpp \ eye_candy/eye_candy.cpp eye_candy/math_cache.cpp eye_candy/effect_lamp.cpp \ eye_candy/effect_candle.cpp \ eye_candy/effect_campfire.cpp eye_candy/effect_fountain.cpp \ eye_candy/effect_teleporter.cpp eye_candy/effect_firefly.cpp \ eye_candy/effect_sword.cpp eye_candy/effect_summon.cpp \ eye_candy/effect_selfmagic.cpp eye_candy/effect_targetmagic.cpp \ eye_candy/effect_ongoing.cpp eye_candy/effect_impact.cpp \ eye_candy/effect_smoke.cpp eye_candy/effect_bag.cpp eye_candy/effect_cloud.cpp \ eye_candy/effect_harvesting.cpp eye_candy/effect_wind.cpp \ eye_candy/effect_breath.cpp eye_candy/effect_mines.cpp \ eye_candy/orbital_mover.cpp eye_candy/kepler_orbit.cpp # SDL. Some old ports use sdl$version-config, set accordingly SDL_CONFIG?=/usr/local/bin/sdl-config SDL_CFLAGS!=${SDL_CONFIG} --cflags SDL_LIBS!=${SDL_CONFIG} --libs # XML 2. XML2_CONFIG?=/usr/local/bin/xml2-config XML2_CFLAGS!=${XML2_CONFIG} --cflags XML2_LIBS!=${XML2_CONFIG} --libs # Preprocessor basics CPPFLAGS+=-I/usr/local/include ${SDL_CFLAGS} ${XML2_CFLAGS} # Linking basics LDFLAGS+=-L/usr/local/lib LDADD=${SDL_LIBS} ${XML2_LIBS} -lSDL_net -lSDL_image -lopenal -lalut -lGL LDADD+=-lGLU -lcal3d -lm ${EXTRA_LIBS} # Feature related libs ZLIB_LIBS = -lz NEW_FILE_IO_LIBS = -lz EYE_CANDY_LIBS = -lpng PNG_SCREENSHOT_LIBS = -lpng OGG_VORBIS_LIBS = -lvorbis -lvorbisfile # Include features and add them to sources, defines and libs .include <BSDmakefile.inc> .for _FEATURE in ${FEATURES} CPPFLAGS+=-D${_FEATURE} .if defined(${_FEATURE}_SRCS) SRCS+=${${_FEATURE}_SRCS} .endif .if defined(${_FEATURE}_LIBS) LDADD+=${${_FEATURE}_LIBS} .endif .endfor .c.o: ${CC} ${CPPFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} .cpp.o: ${CXX} ${CPPFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} pawn_scripts/features.inc: BSDmakefile.inc echo "#if defined _features_included" > ${.TARGET}; \ echo -e "\t#endinput" >> ${.TARGET}; \ echo "#endif" >> ${.TARGET}; \ echo "#define _features_included" >> ${.TARGET}; \ for feature in ${FEATURES}; do \ echo "#define $${feature}" >> ${.TARGET}; \ done .include <bsd.prog.mk> This uses BSDmakefile.inc, which is basically make.defaults with the sanity checks deleted as these are in GNU make specific syntax. Tip: move those checks to Makefile.linux Anyways, have fun with the new client all. Quote Share this post Link to post Share on other sites
Korythaiolos Report post Posted February 12, 2010 The FreeBSD port of EL has recently been broken by the Mesa upgrade to 7.6.1 (set WITHOUT_NOUVEAU in /etc/make.conf). Can anyone else confirm this or is there an easy fix? :/ Quote Share this post Link to post Share on other sites
bluap Report post Posted February 12, 2010 (edited) The FreeBSD port of EL has recently been broken by the Mesa upgrade to 7.6.1 (set WITHOUT_NOUVEAU in /etc/make.conf). Can anyone else confirm this or is there an easy fix? :/ I don't know if its related but Llywar said building el on Gentoo was broken by a mesa change too. You could ask them what they did to fix it: see this thread. Edited February 12, 2010 by bluap Quote Share this post Link to post Share on other sites
Korythaiolos Report post Posted February 13, 2010 (edited) I’ve just tried compiling from CVS: Apparently, the gl_ext.h (old load_gl_extensions.h) stuff is fixed as it now checks for the GL version, but now I’m getting other kinds of errors: EDIT: Ok, I’ve modified the Makefile to get rid of most errors, but these remain (and I have no idea why or how to fix that): map.o(.text+0x9f6): In function `init_server_markers': : undefined reference to `cmp_fn_int' map.o(.text+0x9fb): In function `init_server_markers': : undefined reference to `hash_fn_int' books/fontdef.o(.text+0x7f8): In function `fd_load': : undefined reference to `LOG_ERROR' books/fontdef.o(.text+0x809): In function `fd_load': : undefined reference to `LOG_ERROR' books/fontdef.o(.text+0x81a): In function `fd_load': : undefined reference to `LOG_ERROR' books/fontdef.o(.text+0x835): In function `fd_load': : undefined reference to `LOG_ERROR' books/fontdef.o(.text+0x850): In function `fd_load': : undefined reference to `LOG_ERROR' books/fontdef.o(.text+0x86b): more undefined references to `LOG_ERROR' follow EDIT2: Got the CVS client to compile. I had to: #include "../errors.h" in books/fontdef.c remove __inline__ from definition/declaration of [cmp|hash]_fn_[str|int] functions in hash.h as well as hash.c (why are these inline functions although they are used by map.c?) Edited February 14, 2010 by Korythaiolos Quote Share this post Link to post Share on other sites
Korythaiolos Report post Posted February 14, 2010 (edited) ...and here is the Makefile I used (not very nice yet, I’ve modified the above file to work with newer CVS clients; you also have to set some options in BSDmakefile.inc obviously). I’ll make it work with make.defaults though so that it can be committed to CVS as Makefile.bsd hopefully. VERSION=180 PROG=el.x86.bsd.bin.${VERSION} NO_MAN=yes EXTRA_INCLUDES?= EXTRA_LIBS?= CPPFLAGS=-DBSD -DELC ${EXTRA_INCLUDES} CFLAGS+=-ffast-math CXXFLAGS+=-ffast-math # Core sources SRCS=2d_objects.c 3d_objects.c \ actor_scripts.c actors.c alphamap.c asc.c astrology.c \ bbox_tree.c books.c buddy.c buffs.c bags.c \ cache.c cal.c calc.c chat.c cluster.c colors.c console.c consolewin.c \ counters.c cursors.c dds.c ddsimage.c dialogues.c draw_scene.c \ eye_candy_debugwin.c elconfig.c elwindows.c encyclopedia.c errors.c events.c \ filter.c font.c framebuffer.c frustum.c \ gamewin.c gl_init.c hud.c help.c highlight.c \ ignore.c init.c interface.c items.c \ io/e3d_io.c io/elc_io.c io/map_io.c \ io/half.c io/normal.c \ keys.c knowledge.c langselwin.c lights.c list.c load_gl_extensions.c \ loginwin.c loading_win.c \ main.c manufacture.c map.c mapwin.c \ md5.c mines.c misc.c missiles.c multiplayer.c \ new_actors.c new_character.c \ openingwin.c \ particles.c paste.c pathfinder.c pm_log.c \ questlog.c queue.c reflection.c rules.c \ skeletons.c skills.c serverpopup.c servers.c session.c shadows.c sound.c \ spells.c stats.c storage.c \ tabs.c text.c textures.c tile_map.c timers.c translate.c trade.c \ update.c url.c weather.c widgets.c makeargv.c hash.c \ cal3d_wrapper.cpp actor_init.cpp optimizer.cpp sendvideoinfo.cpp \ # Feature related sources ENCYCLOPEDIA_SRCS = books/fontdef.c books/parser.c books/symbols.c books/typesetter.c sort.c symbol_table.c MEMORY_DEBUG_SRCS = elmemory.c NOTEPAD_SRCS = notepad.c POPUP_SRCS = popup.c SFX_SRCS = special_effects.c MINIMAP_SRCS = minimap.c SKY_FPV_CURSOR_SRCS = sky.c NEW_FILE_IO_SRCS = io/elpathwrapper.c io/xmlcallbacks.c NEW_FILE_IO_SRCS += io/elfilewrapper.cpp io/elfile.cpp io/zipfilesystem.cpp USE_SHADER_SRCS = shader/noise.c shader/shader.c PAWN_SRCS = pawn/amx.c pawn/amxaux.c pawn/amxcons.c pawn/amxel.c \ pawn/amxfloat.c pawn/amxstring.c pawn/elpawn.c USE_SEND_VIDEO_INFO_SRCS = sendvideoinfo.cpp CXX_MISC_SRCS = exceptions/extendedexception.cpp xml/xmlhelper.cpp NEW_SELECTION_SRCS = select.cpp CONTEXT_MENUS_SRCS = context_menu.cpp TEXT_ALIASES_SRCS = text_aliases.c ITEM_LISTS_SRCS = item_lists.cpp EMOTES_SRCS = emotes.c USER_MENUS_SRCS = user_menus.cpp EYE_CANDY_SRCS=eye_candy_wrapper.cpp \ eye_candy/eye_candy.cpp eye_candy/math_cache.cpp eye_candy/effect_lamp.cpp \ eye_candy/effect_candle.cpp \ eye_candy/effect_campfire.cpp eye_candy/effect_fountain.cpp \ eye_candy/effect_teleporter.cpp eye_candy/effect_firefly.cpp \ eye_candy/effect_sword.cpp eye_candy/effect_summon.cpp \ eye_candy/effect_selfmagic.cpp eye_candy/effect_targetmagic.cpp \ eye_candy/effect_ongoing.cpp eye_candy/effect_impact.cpp \ eye_candy/effect_smoke.cpp eye_candy/effect_bag.cpp eye_candy/effect_cloud.cpp \ eye_candy/effect_harvesting.cpp eye_candy/effect_wind.cpp \ eye_candy/effect_breath.cpp eye_candy/effect_glow.cpp eye_candy/effect_mines.cpp \ eye_candy/effect_missile.cpp eye_candy/orbital_mover.cpp eye_candy/kepler_orbit.cpp \ eye_candy/effect_staff.cpp # SDL. Some old ports use sdl$version-config, set accordingly SDL_CONFIG?=/usr/local/bin/sdl-config SDL_CFLAGS!=${SDL_CONFIG} --cflags SDL_LIBS!=${SDL_CONFIG} --libs # XML 2. XML2_CONFIG?=/usr/local/bin/xml2-config XML2_CFLAGS!=${XML2_CONFIG} --cflags XML2_LIBS!=${XML2_CONFIG} --libs # Preprocessor basics CPPFLAGS+=-I/usr/local/include -I. -Ibooks -Ieye_candy -Iio -Ipawn ${SDL_CFLAGS} ${XML2_CFLAGS} # Linking basics LDFLAGS+=-L/usr/local/lib LDADD=${SDL_LIBS} ${XML2_LIBS} -lSDL_net -lSDL_image -lopenal -lalut -lGL LDADD+=-lGLU -lcal3d -lm ${EXTRA_LIBS} # Feature related libs ZLIB_LIBS = -lz NEW_FILE_IO_LIBS = -lz EYE_CANDY_LIBS = -lpng PNG_SCREENSHOT_LIBS = -lpng OGG_VORBIS_LIBS = -lvorbis -lvorbisfile # Include features and add them to sources, defines and libs .include <BSDmakefile.inc> .for _FEATURE in ${FEATURES} CPPFLAGS+=-D${_FEATURE} .if defined(${_FEATURE}_SRCS) SRCS+=${${_FEATURE}_SRCS} .endif .if defined(${_FEATURE}_LIBS) LDADD+=${${_FEATURE}_LIBS} .endif .endfor .c.o: ${CC} ${CPPFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} .cpp.o: ${CXX} ${CPPFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} pawn_scripts/features.inc: BSDmakefile.inc echo "#if defined _features_included" > ${.TARGET}; \ echo -e "\t#endinput" >> ${.TARGET}; \ echo "#endif" >> ${.TARGET}; \ echo "#define _features_included" >> ${.TARGET}; \ for feature in ${FEATURES}; do \ echo "#define $${feature}" >> ${.TARGET}; \ done .include <bsd.prog.mk> ...and I just noticed that tabs get converted to spaces by the forum software. BSD’s make doesn’t like spaces; use tabs instead. Edited February 14, 2010 by Korythaiolos Quote Share this post Link to post Share on other sites
Guest Kushtica Report post Posted December 16, 2016 Im a new user of freebsd, so forgive me if i seem ignorant. I have downloaded el and it will run all the way to open login screen, once i enter my login info it says preparing opening window, never moves past this screen, please help Quote Share this post Link to post Share on other sites
bluap Report post Posted December 17, 2016 I'm not a BSD user but I can try to help. Have you checked the EL log file for errors or to see where the client has got stuck? cat $HOME/.elc/log/main_*.log Also, do you have 3D accelerated graphic drivers installed and working? Quote Share this post Link to post Share on other sites