Which games could I play in this platform?

Hey kpedersen ,
it looks like you have the skills to port games to FreeBSD paired with a very optimistic view for the future. You also mentioned ETQW, one of the best games ever, and you are saying you would be able to port it? WOW! So why not offer yourself to Steam or some game company to do that, let's say starting as a project/experiment with the right to do so and that way push and promote FreeBSD for the future? If no company would do that for us, maybe you can with their permission or in their name? If I had your skills, I would definetley try!
 
I think that the FreeBSD-'version' of this would be more like what TrueOS focuses on.

TrueOS is mostly focused on mismanaging their limited resources by spending time on fun (to them) things like writing yet another media player or making base system packaged. I'd rather believe in DragonFlyBSD or Haiku approaching a reasonable desktop experience in the future. Seems more realistic.
 
TrueOS is mostly focused on mismanaging their limited resources by spending time on fun (to them) things like writing yet another media player or making base system packaged. I'd rather believe in DragonFlyBSD or Haiku approaching a reasonable desktop experience in the future. Seems more realistic.

Actually I hope that they are a little more serious than that... But I wouldn't know since I have no plans on migrating. Can do without the desktop complex. :)

cabriofahrer
https://en.wikipedia.org/wiki/TrueOS
 
There is nothing about a special software running games. It's only an article about TrueOS in general. Only wine is mentioned. They can do nothing what we can't do with wine and winetricks.
 
You also mentioned ETQW, one of the best games ever, and you are saying you would be able to port it?
There are developers much, much more capable than myself at porting software but the sad truth is that if I went up to Bethesda and asked if I could port ETQW to FreeBSD, they would simply say no. Or they would make me sign an NDA which would allow me to do the port for my personal use but not ever share it with anyone else (which for ETQW would absolutely suck! ;).

There is unfortunately more to porting games than technical limitations :/

That said, as for the technical aspects, porting a game from Linux to FreeBSD has in the past never been *too* difficult (in the end Linux kinda strives to emulate UNIX). Games are often quite limited in the external APIs they call (i.e OpenGL, SDL, OpenAL... and very little else). If the game already works on Linux then the networking code (BSD / UNIX Sockets is already ported from Microsoft Winsock. Often the hardest bit is fixing the GNUisms in the typically god awful build system (id Software has typically favored scons which I am not a massive fan of decrustifying). The good news is that the idTech 4 engine is quite a bit smaller than UE4.



Nice, It looks like Doom 3 has already been ported. I would definitely favor this one to the Linux compat binary. And it uses CMake "squeeeee!". I might have to give it a shot :)
 
There are developers much, much more capable than myself at porting software but the sad truth is that if I went up to Bethesda and asked if I could port ETQW to FreeBSD, they would simply say no. Or they would make me sign an NDA which would allow me to do the port for my personal use but not ever share it with anyone else (which for ETQW would absolutely suck! ;).

Why would they say no? Nobody buys/plays that game anymore. It is not even offered on Steam. They would have the chance to revive that game if they offered it on Steam for 9,99 $ or so...

Have you ever heard about this game (Sand Warriors)? Now imagine that ported to BSD with idTech 4 engine! There is a free demo for download, do you want to give that a try?

https://www.dosgamesarchive.com/download/sandwarriors/

Also imagine the old Duke Nukem Forever ported to the Doom3 Engine mentioned above. I cannot imagine that no game company of 20 year old games would allow porting...


Nice, It looks like Doom 3 has already been ported. I would definitely favor this one to the Linux compat binary.

Would there be any noticeable improvement in graphics over the Linux binary, let's say additional effects, more realistic, etc?
 
Why would they say no? Nobody buys/plays that game anymore. It is not even offered on Steam. They would have the chance to revive that game if they offered it on Steam for 9,99 $ or so...

...Also imagine the old Duke Nukem Forever ported to the Doom3 Engine mentioned above. I cannot imagine that no game company of 20 year old games would allow porting...

Unfortunately that is just life. They would probably have to put it through their own QA first so their "brand" or trademark is not damaged by a poor quality port. This will cost them a little bit of money (employee time). This alone is enough for a company to deny the request. They are already working on their next cash cow and do not have the employee time to spare.

if you approached them as a company with a good track record of past successful ports, they might allow you to work on an Android / iOS port (any consumer OS basically) as part of a revenue share contract but as an individual, not a chance :(.

Have you ever heard about this game (Sand Warriors)? Now imagine that ported to BSD with idTech 4 engine! There is a free demo for download, do you want to give that a try?

Porting a game to a different engine entirely is not feasible. Often it is better to start a rewrite. I don't think this will happen ;).

Would there be any noticeable improvement in graphics over the Linux binary, let's say additional effects, more realistic, etc?
The graphics will be exactly the same. At the end of the day, the exact same commands will be sent to the GPU.
The game *might* run slightly faster due to a bit less indirection through the Linux compat layer but the bottleneck is probably GPU anyway.

A native FreeBSD is purely about future maintenance and portability. I.e future work to get it working from FreeBSD 11 to FreeBSD 23 will be a lot easier than from Linux 3.x.
 
To go back to the original question "Which games could I play on this platform" I would like to throw in the following experience with a Linux game demo:

https://srj-studio.itch.io/jet-racing-extreme

Unfortunately it does not run:

Code:
$ cd jrex-1.0.0.rc6_linux/
$ ls
jrex-1.0.0.rc6_Data    jrex-1.0.0.rc6.x86    jrex-1.0.0.rc6.x86_64
$ ./jrex-1.0.0.rc6.x86
./jrex-1.0.0.rc6.x86: /lib/libc.so.6: version `GLIBC_2.15' not found (required by ./jrex-1.0.0.rc6.x86)
./jrex-1.0.0.rc6.x86: /lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./jrex-1.0.0.rc6.x86)
$

I have linux_base-c6 installed, would linux_base-c7 solve the problem?
 
Star Ruler 2 source has just been uploaded on GitHub, it would be interesting to see how much effort it would be to build on FreeBSD;
I've been trying a while to get it to compile, but keep getting stopped in the final linking stage. I'm at a loss here, since the error seems to suggest it can't resolve a symbol that's in libc++, but I'm certain I'm linking with "-lc++".
Also I have only system clang, no gcc or anything else that might be causing this.

Any help would certainly be appreciated. If I can get it to compile and run I'll be happy to make it into an official port (or at least try to).

Code:
cc -Ofast -DNDEBUG -fno-lto -m64 -march=athlon64 -mtune=generic -DAS_64BIT_PTR -std=c++11 -DLIN_MODE -DGLIBCXX_USE_NANOSLEEP -Wall -Wno-invalid-offsetof -Wno-switch -Wno-reorder -Wno-unused-local-typedefs -Wuninitialized -Werror=return-type -I./source/game -I./source/angelscript/include -isystem./source/glfw/include -I./source/sound/include -I./source/as_addons/include -I./source/os/include -I./source/libircclient/include -I./source/util/include -I./source/network/include -I./source/rapidjson/include -DNSTEAM -fdiagnostics-color=auto -I/usr/local/include -I/usr/local/include/freetype2 -L/usr/local/lib -Lsource/lib/fbsd64 -lexecinfo -linotify -lGL -lGLU -lX11 -lXrandr -lXxf86vm -lXi -lopenal -lcurl -lc++ -lGLEW -lpng -lz -lpthread -lm -lfreetype -lvorbisfile obj/fbsd64/as/as_jit.o obj/fbsd64/design/design.o obj/fbsd64/design/effect.o obj/fbsd64/design/effector.o obj/fbsd64/design/effector_functions.o obj/fbsd64/design/hull.o obj/fbsd64/design/subsystem.o obj/fbsd64/design/projectiles.o obj/fbsd64/gui/skin.o obj/fbsd64/main/initialization.o obj/fbsd64/main/input_handling.o obj/fbsd64/main/logging.o obj/fbsd64/main/profiler.o obj/fbsd64/main/references.o obj/fbsd64/main/tick.o obj/fbsd64/main/console.o obj/fbsd64/main/save_load.o obj/fbsd64/mods/mod_manager.o obj/fbsd64/network/network_manager.o obj/fbsd64/obj/blueprint.o obj/fbsd64/obj/lock.o obj/fbsd64/obj/object.o obj/fbsd64/obj/obj_group.o obj/fbsd64/obj/universe.o obj/fbsd64/obj/object_saving.o obj/fbsd64/os/glfw_driver.o obj/fbsd64/physics/physics_world.o obj/fbsd64/profile/keybinds.o obj/fbsd64/profile/settings.o obj/fbsd64/render/camera.o obj/fbsd64/render/font_fnt.o obj/fbsd64/render/font_ft2.o obj/fbsd64/render/gl_driver.o obj/fbsd64/render/gl_framebuffer.o obj/fbsd64/render/gl_mesh.o obj/fbsd64/render/gl_shader.o obj/fbsd64/render/gl_texture.o obj/fbsd64/render/gl_vertexBuffer.o obj/fbsd64/render/lighting.o obj/fbsd64/render/obj_loader.o obj/fbsd64/render/ogex_loader.o obj/fbsd64/render/render_state.o obj/fbsd64/render/spritesheet.o obj/fbsd64/render/x_loader.o obj/fbsd64/render/bmf_loader.o obj/fbsd64/render/shader_states.o obj/fbsd64/resource/library.o obj/fbsd64/resource/load_font.o obj/fbsd64/resource/load_material.o obj/fbsd64/resource/load_model.o obj/fbsd64/resource/load_shader.o obj/fbsd64/resource/load_skin.o obj/fbsd64/resource/load_sound.o obj/fbsd64/resource/locale.o obj/fbsd64/resource/hot_loading.o obj/fbsd64/scene/animation/anim_linear.o obj/fbsd64/scene/animation/anim_group.o obj/fbsd64/scene/animation/anim_node_sync.o obj/fbsd64/scene/animation/anim_projectile.o obj/fbsd64/scene/particle_system.o obj/fbsd64/scene/billboard_node.o obj/fbsd64/scene/beam_node.o obj/fbsd64/scene/line_trail_node.o obj/fbsd64/scene/frame_line.o obj/fbsd64/scene/mesh_node.o obj/fbsd64/scene/plane_node.o obj/fbsd64/scene/mesh_icon_node.o obj/fbsd64/scene/icon_node.o obj/fbsd64/scene/scripted_node.o obj/fbsd64/scene/culling_node.o obj/fbsd64/scene/node.o obj/fbsd64/scripts/bind_creation.o obj/fbsd64/scripts/bind_data.o obj/fbsd64/scripts/bind_design.o obj/fbsd64/scripts/bind_empire.o obj/fbsd64/scripts/bind_general.o obj/fbsd64/scripts/bind_gui.o obj/fbsd64/scripts/bind_inspection.o obj/fbsd64/scripts/bind_joystick.o obj/fbsd64/scripts/bind_menu.o obj/fbsd64/scripts/bind_object.o obj/fbsd64/scripts/bind_profile.o obj/fbsd64/scripts/bind_render.o obj/fbsd64/scripts/bind_threading.o obj/fbsd64/scripts/bind_events.o obj/fbsd64/scripts/bind_formula.o obj/fbsd64/scripts/bind_sound.o obj/fbsd64/scripts/bind_dynamic.o obj/fbsd64/scripts/bind_network.o obj/fbsd64/scripts/bind_savefile.o obj/fbsd64/scripts/bind_datafile.o obj/fbsd64/scripts/bind_json.o obj/fbsd64/scripts/bind_web.o obj/fbsd64/scripts/bind_irc.o obj/fbsd64/scripts/binds.o obj/fbsd64/scripts/context_cache.o obj/fbsd64/scripts/manager.o obj/fbsd64/scripts/script_bind.o obj/fbsd64/scripts/generic_call.o obj/fbsd64/scripts/script_type.o obj/fbsd64/scripts/script_components.o obj/fbsd64/scripts/script_hooks.o obj/fbsd64/util/format.o obj/fbsd64/util/formula.o obj/fbsd64/util/generic.o obj/fbsd64/util/mesh_generation.o obj/fbsd64/util/random.o obj/fbsd64/util/threaded_loader.o obj/fbsd64/util/elevation_map.o obj/fbsd64/util/name_generator.o obj/fbsd64/util/stat_history.o obj/fbsd64/util/bbcode.o obj/fbsd64/util/save_file.o obj/fbsd64/empire.o obj/fbsd64/empire_stats.o obj/fbsd64/general_states.o obj/fbsd64/processing.o obj/fbsd64/main.o obj/fbsd64/libangelscript.a obj/fbsd64/libglfw3.a obj/fbsd64/libsound.a obj/fbsd64/libas_addons.a obj/fbsd64/libircclient.a obj/fbsd64/libos.a obj/fbsd64/libnetwork.a obj/fbsd64/libutil.a -o bin/fbsd64/StarRuler2.bin
obj/fbsd64/libas_addons.a(scriptstdstring.o): In function `RegisterStdString_Native(asIScriptEngine*)':
scriptstdstring.cpp:(.text+0x379b): undefined reference to `std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator+=(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
/usr/bin/ld: bin/fbsd64/StarRuler2.bin: hidden symbol `_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEpLERKS5_' isn't defined
/usr/bin/ld: final link failed: Nonrepresentable section on output
Code:
 
Back
Top