# Game engines that could potentially be used to spark a FreeBSD gaming revolution



## A. D. Sharpe Sr. (Dec 15, 2017)

These are some of the engines that I briefly checked out. The links lead to the part of the codetrees that contain OS specific support, not the root of the codetrees. There're many other engines, but I left out engines who either did not have code repositories online, were for specifically for mobile games, were not primarily coded in C/C++, or did not have any Unix support.

Torque3D engine: https://github.com/GarageGames/Torque3D/tree/development/Engine/source/platformX86UNIX
Has at least some FreeBSD support, but I'm not sure how well it's been exercised.

GoDot engine: https://github.com/godotengine/godot/tree/master/platform
Doesn't have FreeBSD support, but has Haiku support. How'd we get beat by an OS that doesn't even have a real release???

Ogre3D (rendering ONLY): https://github.com/OGRECave/ogre/tree/master/OgreMain/src
Has some support for GLX. It might actually work great.

Panda3d engine: https://github.com/panda3d/panda3d/tree/master/panda/src
Has some support for GLX. It might actually work great.

Irrlicht engine: https://sourceforge.net/p/irrlicht/code/HEAD/tree/trunk/source/Irrlicht/
Has some support for GLX. It might actually work great.

Delta3D engine: https://sourceforge.net/p/delta3d/code/HEAD/tree/trunk/delta3d/src/
Has some X11 support. Not sure of how functional it is.

Quake2 engine: https://github.com/id-Software/Quake-2
Has native Linux & native Irix code, but doesn't have native FreeBSD code. Has generic Unix code, so maybe that could be used as a basis for creating native code for FreeBSD.


----------



## SirDice (Dec 15, 2017)

A. D. Sharpe Sr. said:


> Quake2 engine: https://github.com/id-Software/Quake-2
> Has native Linux & native Irix code, but doesn't have native FreeBSD code. Has generic Unix code, so maybe that could be used as a basis for creating native code for FreeBSD.


Runs natively: games/quake2lnx


----------



## tobik@ (Dec 15, 2017)

games/openmw. From their FAQ:


> Do I need Morrowind to use OpenMW?
> [...]
> No, OpenMW is a complete game engine. It is possible for other projects to use OpenMW and OpenMW-CS to create their own game game. There are several projects currently underway such as:
> 
> ...


----------



## A. D. Sharpe Sr. (Dec 15, 2017)

SirDice said:


> Runs natively: games/quake2lnx


I based my list off of the code found in the project’s official repository.


----------



## tingo (Dec 17, 2017)

Cool. Now you only need to find a few hundred game developers who think that getting games working under FreeBSD is a nice thing.


----------



## A. D. Sharpe Sr. (Dec 17, 2017)

tingo said:


> Cool. Now you only need to find a few hundred game developers who think that getting games working under FreeBSD is a nice thing.



Or, the community can prime the well & show them the way by developing a few games within our community (itself) & heavily promote them. There are already 2 such sites that may actually be able to help with promotion:

http://www.bsdgaming.com/
http://www.gamebsd.com/


----------



## sidetone (Jan 13, 2018)

Here are good development tools that can be used for games:
devel/sdl20 (Zlib License)
devel/sfml (Zlib License)
math/py-matplotlib (Python Standard Foundation License) - for 2D game and spatial physics

Aside from TCL/TK used by GameBSD.


----------



## sidetone (Jan 14, 2018)

Here are more:
devel/allegro [Giftware license] uses C like SDL. http://liballeg.org/
Examples here: https://www.allegro.cc/depot/adventure/

devel/renpy [combination of licenses] is an engine for graphical RPG's and story telling games. https://www.renpy.org/

devel/love [ZLIB] 2D game engine, uses lua. https://love2d.org/

devel/godot [MIT, CC3.0] 2D and 3D game engine. https://godotengine.org/


----------



## sidetone (Jan 18, 2018)

SFML examples, from https://en.sfml-dev.org/forums/index.php?topic=17188.0:


----------



## kpedersen (Jan 18, 2018)

Shameless plug:
Mutiny! (https://github.com/osen/mutiny)

Unfortunately, for 3D games, kids and other game makers only really want to use consumer products like Unity and Flash. This is because they have big chunky editors where kids can make games to show their parents and then immediately discard them. Because Unity and Flash will never be ported to FreeBSD, this has pretty much prevented the vast majority of games from appearing on these platforms.
The marketing budget for Unity is immense and they are present at *every* GameJam, and *every* indie industry event so people immediately jump on the bandwagon and get completely locked into a non-innovative and unflexible platform. I find it very difficult to rip my students away from Unity so that they can actually learn something.

Epic (Unreal Engine 4) is starting to understand the "allure" of a kid friendly GUI editor and so have made a good attempt with their indie-friendly (non-AAA toolchain). The fact that UE4 is not open-source (i.e not BSD or GPL) but the source is available for free after signing a license agreement, it can be ported to FreeBSD and also there is some hope that once Unity and Flash have died, that UE4 can take over.

I know this post was semi-ranty but crap like Flash and Unity does annoy me quite a bit haha. It also allows "pretenders" to swank around telling people that they are 3D graphics developers because they can drag and drop a cube into Unity and press play. I hate working with these people!

sidetone 
For 2D games, SDL is certainly the standard these days and works very well on FreeBSD. However, I actually recommend SDL 1.2 (https://www.libsdl.org/download-1.2.php). The reason being is that 2.0 is largely swayed by Valve and portability to platforms such as homebrew, retro, Amiga, RISCOS, DOS, UNIX etc... is very low on their agenda. As such 2.0 is not very portable to anything that isn't a 2012+ desktop operating system, unlike 1.2.


----------



## sidetone (Jan 19, 2018)

Flash not being supported on FreeBSD was a blessing in disguise. Flash being touted as so great, yet being insecure and a failure reminds me of what Systemd is. It is also irrelevant for all intents and purposes, especially in FreeBSD. (That was my rant about Flash).

SDL seems to be limited in it's graphical appearance. While SFML examples look nicer, I've read that SFML is not a low level language like SDL is.

Why not try Godot for 3D?


----------



## aimeec1995 (Feb 25, 2020)

sidetone said:


> SFML examples, from https://en.sfml-dev.org/forums/index.php?topic=17188.0:
> 
> 
> 
> ...



That last picture. What a charming style of art, I couldn't find the corresponding post for it in the thread you linked though.. Would you have more info on it by chance?


----------



## sidetone (Feb 25, 2020)

Screenshot Thread
					

Screenshot Thread




					en.sfml-dev.org


----------



## Filip2020 (Mar 4, 2020)

Here you can find 3D and 2D assets for Godot: godotmarketplace.com


----------



## trev (Mar 4, 2020)

Pascal game development engine using Lazarus and Free Pascal

*Castle Game Engine*
*Website:* https://castle-engine.io/

It's probably the most powerful Pascal game engine. It is a game framework not a game builder, you have to integrate it into your Lazarus/FPC to use it. Learning the Castle Game Engine is much harder than ZGameEditor and the resulting binaries are much bigger too. I wish I had more time so I could explore or even use it. Castle Game Engine is really an interesting project.

Multi platform support: Windows, Linux, FreeBSD, macOS, Android, iOS, Nintendo Switch


----------



## Samuel Venable (Mar 16, 2020)

The Extensible, Non-Interpreted, GameMaker Augumentation, (otherwise abbreviated ENIGMA), is a free and open source alternative to the popular software GameMaker, which is even compatible with existing GameMaker project formats ranging from GameMaker 6 to GameMaker Studio 1.4, and with support for GameMaker Studio 2 projects in the works.

Currently supports editing and compiling games on and for Windows, Linux, and FreeBSD. macOS and Android support are near finished but not entirely useable yet.











(Screenshots taken on NomadBSD, a FreeBSD-based BSD distro)

Official Announcement:





						Announcing FreeBSD Support
					






					enigma-dev.org
				




Example game:








						Key to Success by Samuel Venable
					






					samuel-venable.itch.io
				




Note: currently the install instructions require you to DELETE your existing make executable and replace it with a symlink to gmake; please be aware of this before attempting to install. We are looking into a better solution in the meantime. Also, I am the one who ported ENIGMA to FreeBSD, (you're welcome)!


----------



## hoobastank69 (Jul 22, 2020)

I think the key would be to have linux ports of GoG games and steam games working properly due to wine's issue of no wow64 yet
which is very limiting


----------



## Samuel Venable (Aug 16, 2020)

FreeBSD-and-GameMaker-compatible game creation suite ENIGMA now supports basic video playback functionality:





						Video Player Extension for ENIGMA Early Access
					






					enigma-dev.org
				











Although it is also Windows and Linux compatible, these screenshots were taken on FreeBSD running KDE Plasma.


----------



## kpedersen (Aug 16, 2020)

If nvidia keeps sucking or drops their FreeBSD driver support, perhaps something like this will allow us to keep 3D games working on FreeBSD 

I hacked this software rasterizer together during a ~24hr games jam at work. I was on a laptop with an old nvidia GPU meaning no 3D acceleration. In hindsight I probably should have just used OpenGL and LLVMpipe, however I guess NIH syndrome struck XD.



 

 



C++ Renderer, Engine and Game: https://github.com/osen/software-3d-renderer
C89 Renderer: https://github.com/osen/rend-c

So if you ever find yourself on a server or VM with no real GPU and still fancy making some 3D games. Feel free to give this a try!


----------



## kpedersen (Aug 16, 2020)

Samuel Venable said:


> FreeBSD-and-GameMaker-compatible game creation suite ENIGMA



I do like the idea of your project. I have a lot of students with GameMaker games and I was always worried that they would get discouraged if the company behind GameMaker disappeared. Your project gives them a good migration path!


----------



## GoNeFast_01 (Feb 14, 2021)

People in the BSD community that are talking gaming engines def a great plus for all younger gen... I looked at some of the popular gaming engines (due to success of roblox which is engine as a service = how I look at their business) and many don't even have BSD instruction set to install... Found this little heart-wrenching but anyways their loss. 

Once I finish a 2 step immersion system with some blade server I am building for fun will offer some test Jail VM with some engines install... Will be a nice testbed for performance and temp testing when pushing hard on some 16-64 Core processor with some gaming engines on BSD... The test will have to be with NO GPU for now , processor + ram + ssd or we can test on nvme.


----------



## isseeder96 (Feb 27, 2021)

I must be crazy. I thought starbound an terraria could be played on any platform with but apparently that is very incorrect, I seem to remember someone getting it to work natively on linux..
Anyone remember something like that? maybe im thinking of stardust valley.


----------



## shkhln (Mar 4, 2021)

isseeder96 said:


> I must be crazy. I thought starbound an terraria could be played on any platform with but apparently that is very incorrect, I seem to remember someone getting it to work natively on linux..
> Anyone remember something like that? maybe im thinking of stardust valley.


All these games have native Linux ports, this not at all difficult to verify. Terraria and Stardew Valley in particular are using XNA/FNA, so you can swap the engine for the native FNA build if you so desire. (There is this OpenBSD-centered shopping guide, which is largely an FNA game list: https://www.playonbsd.com/shopping_guide.) For lazy people we also have Linuxulator, it should work as well.


----------



## r2com (May 29, 2021)

what is the point of all this? I have >320 games in steam and for that I have win10 drive and I dual boot with FreeBSD (starting out with FreeBSD and want to port some EDA work there).. but games..I mean each stuff has its own tool/environment. Gaming is dominated primarily by non-technical crowd who do not even know what is command line...yet running FreeBSD... and game dev. community is not going to switch gears in order to support small niche called FreeBSD (or even Linux; Linux gaming is a failure as well)

change my mind.


----------



## kpedersen (May 29, 2021)

r2com said:


> what is the point of all this? I have >320 games in steam and for that I have win10 drive


For me it is lifespan. You will get to a point in ~10/20 years where a game will only run on i.e an older Windows (i.e 10) but Steam only supports the very latest Windows. So far we seem to have gotten away with it because Windows has fantastic backwards compatibility. However this cannot be kept up indefinitely, especially one the world progresses onto newer architectures. When it happens, things like Linux / FreeBSD / Wine will be in place to pick up the slack.



r2com said:


> change my mind.


Not necessary. The future will come and you will likely adapt to it gradually. Things don't happen over night (luckily).


----------



## shkhln (May 29, 2021)

r2com said:


> I mean each stuff has its own tool/environment.


Although I'm not a fan of the premise of this thread, games ultimately are just applications with specific input, output and scheduling needs (i.e. not a batch job), all of which FreeBSD supports.



r2com said:


> change my mind.


We don't care to.


----------



## r2com (May 29, 2021)

shkhln said:


> We don't care to.


neither do serious game devs care about other OS, nor do the majority of gamers

statistics is showing what apps populated across what OS'es, and that is the reality which you deal with.

also the concern was not about whether or not FreeBSD can support functions needed for a game, of course it can, maybe even better than win10 I'm pretty sure...the question is in the level of expertise needed to be able to run FreeBSD, how do you envision a person who does not even know what is command line to go ahead and setup FreeBSD in order to start gaming? just as I said, the crowd of gaming is non technical, non programming type people and the game industry is oriented for that crowd, as simple as that.


----------



## drhowarddrfine (May 29, 2021)

r2com said:


> Gaming is dominated primarily by non-technical crowd who do not even know what is command line...yet running FreeBSD... and game dev. community is not going to switch gears in order to support small niche called FreeBSD (or even Linux; Linux gaming is a failure as well)


My point exactly. When FreeBSD devs and programmers and server users wake up in the morning, they NEVER consider what game they are going to play or wish worked on FreeBSD. 

I'm also betting that Linux did not get to where it is today based on the number of game players over there.


----------



## drhowarddrfine (May 29, 2021)

shkhln said:


> We don't care to.


My point exactly!


----------



## kpedersen (May 29, 2021)

There is so much more to computing than games. Yes, they are a fun distraction, and yes sometimes they provide fun technical challenges to get working but honestly have zero bearing on what constitutes a useful platform.

Surely this is the general consensus right?


----------



## drhowarddrfine (May 30, 2021)

Right!


----------



## fbsd_ (May 30, 2021)

Well while Unity and Unreal Engine not supporting FreeBSD, that would be not possible. Lots of people uses them and most of them dont know other game engines. Like how much of us seeing Unity logo when downloaded a game? For me Im feeling like 1/5 of games I downloaded was made with Unity. Unreal Engine not requires coding or kinda things so its why user-friendly... I think it reduces the desire to make game. Just why coding a lot of codes with C/C++ while other kids or people be able to do all of them without any code???

I think there is no point to write one more game engine too. There is already a lot of open-source and free ones exist. No point to write a lot of lines for one game too belive. But this doesnt means Im not respecting to C/C++ game makes from scratch. Im trying to be like them sometimes actually and not very respecting to Unreal Engines no-code required games.

Edit:
I see Unreal Engine supports FreeBSD anyway. Thanks to kpedersen


----------



## kpedersen (May 30, 2021)

fbsd_ said:


> Well while Unity and Unreal Engine not supporting FreeBSD, that would be not possible. Lots of people uses them and most of them dont know other game engines. Like how much of us seeing Unity logo when downloaded a game? For me Im feeling like 1/5 of games I downloaded was made with Unity. Unreal Engine not requires coding or kinda things so its why user-friendly... I think it reduces the desire to make game. Just why coding a lot of codes with C/C++ while other kids or people be able to do all of them without any code???
> 
> I think there is no point to write one more game engine too. There is already a lot of open-source and free ones exist. No point to write a lot of lines for one game too belive. But this doesnt means Im not respecting to C/C++ game makes from scratch. Im trying to be like them sometimes actually and not very respecting to Unreal Engines no-code required games.


Unreal Engine 4 (also available and working well on FreeBSD) very much requires coding in C++. What you might be referring to is its "low code" solution called Blueprint. Unity has an equivalent but it is quite far behind (as usual).

With things like Blueprint, you can only "automate" the engine. Arguably you could never hope to achieve things such as reading specific file formats, reading sensor data, etc or anything else that isn't spoon-fed to you by the engine. C++ and (to some extent) CSharp will always provide a programmer with the advantage compared to "automaters". Simply because you can tap into 3rd party libraries.

These days, as an independent / hobby developer, unless you already have your own engine, I would recommend just writing your game (I like SDL and OpenGL) and then extract useful parts into your own game framework after release. I think engines are a little overrated. They are just glorified libraries after all. I always find it a bit laughable when the engine size absolutely dwarfs the actual game code.


----------



## malavon (May 31, 2021)

For those of you who don't know, I've been maintaining a port (NOT in the sense of /usr/ports) of UE4 since early 2018 - see this forum for a few threads about it.


kpedersen said:


> These days, as an independent / hobby developer, unless you already have your own engine, I would recommend just writing your game (I like SDL and OpenGL) and then extract useful parts into your own game framework after release. I think engines are a little overrated. They are just glorified libraries after all. I always find it a bit laughable when the engine size absolutely dwarfs the actual game code.


I'll have to partially agree and disagree on that. Disclaimer, I have read and modified the sources of only the Unreal Engine - other engines may not apply.
I agree on the part that writing your own engine/framework/library is possible and as a teaching aid I'd surely recommend it. If you can write just enough code for your needs you'll be certainly off with a much smaller and possibly faster package. But that also comes with its own risks and pitfalls. If you look up the list of (small or large) game developers that created their own engine and went bust it'll be clear that it's a risky strategy. It's also far from easy to support advanced features beyond "display a cube" code. Getting to the same point that the commercial engines are at takes a lot of work. We're talking about man-years here and that's time that needs to be payed for somehow.
Fun fact: the first open-source engine I wanted to "port" to FreeBSD wasn't UE4 but the Nebula Device by Radon Labs. Never got anywhere with it though. Radon Labs went bankrupt  in 2010.

Thus, in come the big wieldy engines. They bring nice editors, a more or less usable graphical programming environment and much more features already built in. Taking UE as an example, you have code and build system to support Linux, Windows, MacOS but also PS4, XBox, Android, IOS etc. DirectX, OpenGL, Vulkan, Metal are already there. No need to code anything further. Spatialized audio? Physics engine integration? Network replication? Destructible environments? It's all there. But that all does come with serious downsides too. Being forced to work in a certain way, massive executables, lots of code and features you'll personally never use. It's all a trade-off.
The best reason to start with an existing engine (on a supported platform...  ) however is that _it just works_ and there's actual support. If you have something that isn't behaving right you can look to get some help online. Anything you've written yourself means you have no-one else to fall back on for help. Again, a great learning platform but probably not a very commercially-viable one.

Now, if I were to create a game or large visualization project myself I'd start with an existing engine. If I need something that the engine doesn't provide, I'll add it. If performance isn't good enough or executables are too big, I'll look into it and change the code or build system. I'd probably throw out quite a lot of abstractions too, e.g. having multiple RHI's on a single platform will slow down the code. Things that get compiled in while I'm not using them I'd try to out-#define. 


Now, to add to the discussion about having a FreeBSD gaming revolution. It's probably not going to happen 
_We_ all know that FreeBSD is a great OS and is really feasible as a gaming platform as well. But FreeBSD doesn't have the numbers to make porting commercial games or software to FreeBSD a commercially viable solution. It's not just about engine support, it's also having distribution means. There is no (native) Steam for BSD, which is still the largest gaming platform out there. There's no Epic game store either. No GOG installers for FreeBSD. There's just nothing. 

Now, you might be thinking that we could indeed start a bunch of open-source games using one of the supported engines. That's great, but it's also a massive amount of work. It's not impossible, but it takes real dedication to get to somewhere that there's actually something playable and gain the attention of people. And once it has people's attention I guarantee you it'll be ported to Linux and possibly Windows. There's also a good chance someone puts it on Steam or a mobile app store under a different name to make a quick buck.
Also FreeBSD doesn't even have ports of all open-source games, clearly indicating that there isn't that much interest of coders/porters. I myself have had The Dark Mod on my todo list for years and still haven't gotten around to it.


----------



## kpedersen (May 31, 2021)

malavon said:


> The best reason to start with an existing engine (on a supported platform...  ) however is that _it just works_ and there's actual support. If you have something that isn't behaving right you can look to get some help online. Anything you've written yourself means you have no-one else to fall back on for help. Again, a great learning platform but probably not a very commercially-viable one.


A good point, I certainly see the use of engines. What I kind of had in mind with independent or hobby games, particularly in the open-source world is around the tech level of TeeWorlds, GemRb or SuperTux. I don't feel these are particularly well served by large engines. I see a lot of Flappy Bird clones written in Unity and it just feels so wasteful.

In terms of maintenance, 10 years down the line, it is quite likely someone will tweak a simple SDL2 game to play Flappy Birds. However they likely won't be convinced to maintain a large engine like Unity or UE4, just to play Flappy Birds so that game will end up bit-rotting away and disappear (in this case, perhaps that is a good thing!)

For larger games or simulations, yes, I would rather a maintenance challenge rather than no finished software at all because they are still too busy writing the .obj loader 



malavon said:


> Also FreeBSD doesn't even have ports of all open-source games, clearly indicating that there isn't that much interest of coders/porters. I myself have had The Dark Mod on my todo list for years and still haven't gotten around to it.


Heh, I know the feeling. Only recently have I picked up on a couple of ports (taking maintainership of allegro5 and a few Half-Life / GCF tools). I need to start hurrying up; I kept promising myself to put together a port of rtcw but I was beaten to the punch with iortcw. They are too similar to be worth a separate port!


----------



## malavon (May 31, 2021)

kpedersen said:


> I see a lot of Flappy Bird clones written in Unity and it just feels so wasteful.


Be sure to check out FlappyChicken demo by Epic for one of those :-D I don't think I ever made that downloadable as a binary though.


----------



## kpedersen (May 31, 2021)

malavon said:


> Be sure to check out FlappyChicken demo by Epic for one of those :-D I don't think I ever made that downloadable as a binary though.


Heh, this one did come to mind. I just couldn't find it. The closest I could get was: https://ahmadawais.com/flappy-chicken/

But! With renewed passion for the search, it turns out, it is *Tappy*Chicken.


----------



## malavon (May 31, 2021)

kpedersen said:


> But! With renewed passion for the search, it turns out, it is *Tappy*Chicken.


I should have looked it up before typing, it's indeed TappyChicken. At least they were creative in the naming if not for the concept :-D


----------



## sidetone (Jul 21, 2022)

devel/raylib is a game library in C. The games from it on Youtube look good. There's nothing dependent on it in FreeBSD ports. This one has its own physics engine.

devel/allegro and devel/allegro5 are game libraries in C.

Everyone's heard of devel/sdl2. It's also a gaming and multimedia library in C. games/openbor (Open Beats of Rage) is a game engine for 2D fighting games that relies on SDL.

devel/sfml is a gaming library written in C++.

These libraries have interfaces to other programming languages. So, many games that use these libraries are written in other languages than the one they're made in. Some of these libraries also have an interface to OpenGL, for games that need these capabilities

devel/ChipmunkPhysics is a physics engine that can be used for games that is written in C.

Allegro, SDL, SFML, Raylib and OpenBOR have games which styles include those of classics from console games. Raylib, Allegro, SDL and SFML rely on xlib, and otherwise not on libxcb. The libraries and engines on this page have liberal licenses.


----------

