SFML community forums

General => SFML projects => Topic started by: Tank on December 07, 2011, 07:19:34 pm

Title: FlexWorld
Post by: Tank on December 07, 2011, 07:19:34 pm
(http://www.abload.de/img/banners9ytj.png)

About

FlexWorld is a flexible open-content 3D single- and multiplayer game with a highly modifiable world.

Originally inspired by Ultima Online and its free-shard community, FlexWorld tries to provide an environment where you can not only play, but also get creative and develop.

The game uses 3D graphics and a fixed grid for its maps, resulting in completely modifiable terrains and structures. Everything in the game is designed to be modular, including 3D models, textures, sound effects and game logics.

For the latter FlexWorld includes the Lua scripting language. Everything that happens in-game can be fully scripted.

Due to the nature of the project, one can't clearly tell what FlexWorld is about in detail, because what you do with it highly depends on the content you're about to use. The first official release will include an RPG-like game mode with 3 tribes, where your goal is to choose between one of them and gain might and power by fighting, trading or improving the tribe's status in other ways.

Current state

FlexWorld has been in development since March 2011 and got a partial rewrite in August/September 2011. The project is still in pre-alpha status which means it's very technical and not very playable yet.

However a lot of internal things are already done and stable, like rendering maps and objects, a graphical user interface, Lua scripts, resource import, multiplayer capatibilities and much more.

For news, media and more information, including how to fund the project or apply as a tester, visit its official website. We'd love to hear from you!

Website: http://flexworld-game.com/

Some details for the techies

SFML is used for OpenGL context creation, window and event management, image loading routines, sound and simple 2D graphics. The 3D graphics are done using a self-written scene-graph called FWSG. Logics are powered by Lua and calculated using a self-written component-based system library. The graphical user interface is rendered by libRocket (a quite dead project, so beware if you're planning to  use it!). Networking is powered by the Boost Asio library.

At the moment of writing this, the project (including libraries that have been developed for it) consists of 19,184 lines of C++ source code (without comments and blank lines, pure code) and follows the test-driven development workflow and is being developed in an agile manner (Pomodoro, Scrum). The team is staffed by 1 C++ developer, 1 web developer, 12 game testers and bug hunters, 1 artist and 1 musician.
Title: FlexWorld
Post by: fatum on December 08, 2011, 09:29:19 am
Wow, looks very interesting.  Good luck in getting adequate funds!
Title: FlexWorld
Post by: eXpl0it3r on December 08, 2011, 09:36:18 am
Sounds still nice!  :D
A bit more details would have been nice, but I've already seen a bit more than the most. :-P

You're talking in the 'we'-form at IndieGoGo - are you refering to your multiple personalities or is there someone else (which didn't get mentioned or so)?  :wink:

I may consider contributing but as a student money is mostly short...
Title: FlexWorld
Post by: Tank on December 08, 2011, 03:53:57 pm
Quote from: "fatum"
Wow, looks very interesting.  Good luck in getting adequate funds!

Thank you!

Quote
A bit more details would have been nice, but I've already seen a bit more than the most.  

More details will follow as soon as the proper areas are considered stable. I don't want to publish info/screenshots of ugly-looking and unstable stuff. ;)

Quote
ou're talking in the 'we'-form at IndieGoGo - are you refering to your multiple personalities or is there someone else (which didn't get mentioned or so)?

:D At least two others guys are going to test the scripting API, and one of them will do large portions of the Factions game mode.

Quote
I may consider contributing but as a student money is mostly short...

No problem at all! If people like the idea I'm already kinda satisfied. ;)

Edit: Link to website added.
Title: FlexWorld
Post by: Tank on January 02, 2012, 10:18:10 am
Small update:

We've published some screenshots that show the GUI. You can find them in the blog (http://flexworld-game.com/blog/list.php). The GUI is fully functional and settings are saved persistently, of course.

There you'll also find the first post of the "in-depth series" (http://flexworld-game.com/blog/list.php?tag=Indepth), which describe several features of FlexWorld in a very technical manner. It's primarily aimed at programmers who're interested in some internals.

We're still working very hard to get some screenshots from in-game, however the switch to test-driven development is still in progress and I highly doubt you're interested in seeing screenshots of the unit test framework's output. ;)
Title: FlexWorld
Post by: Tank on February 15, 2012, 01:16:35 pm
Update:

We just completed the first version of the planet renderer and would like to show you guys one screenshot of it -- exclusively for this forum, they're not shown anywhere else. ;)

The renderer takes any 3D models (simple cubes, cones, spheres or even complex stuff; you can create models yourself if you wish and convert them to FlexWorld's own model format using a tool that's included in future releases; the converter tool reads 3DS, Blender, Collada, DX, OBJ and many many more) and textures, puts them together and applies some optimization steps to make the experience nice and fast.

At the moment the test planet doesn't look very exiting, because we didn't spend much time doing fancy things. That's up to our testing team when modifying the world in-game is possible, which leads me to another topic:

The next two steps are re-implementing entities (game objects, like weapons, characters etc.) and the Lua scripting API that controls the FULL logic of a FlexWorld gaming session.

Here's a screenshot:
(http://www.abload.de/thumb/fw_ssqyzf8.jpg) (http://www.abload.de/image.php?img=fw_ssqyzf8.jpg)

You can actually see two shots, one with regular filling and the other one with wireframes. The planet you're looking at consists of a "floor" (built by cubes, whereas the cube has been modeled and UV-mapped in Blender) and a pyramid built of cubes that shows a test texture for ensuring UV coordinates are correctly imported.

Both geometry variants have been specified in "FlexWorld classes" before with a YAML syntax. That means you're very flexible in terms of what kind of stuff you want in your gaming session. Models and textures can even be reused or differently combined (in the screenshots the same model was reused, just the texture got defined differently).

Besides of the graphical part everything you see on the screenshot has been sent over the network part by part in realtime.

Stay tuned for more updates and make sure to checkout our website (http://flexworld-game.com) regularly. And as always: If you've got questions or anything else, reply! :-)
Title: FlexWorld
Post by: Nexus on March 03, 2012, 02:17:32 pm
The project sounds interesting, however the descriptions are a little bit too abstract in my opinion. It somehow reminds me of MineCraft, yet I can't really imagine how the gameplay will look or what will be the challenge and goal of the game. ;)

You also want to provide actually everything (unlimited game modes, models, etc.). While it is good to have user-based content and leave much room for creativity, I guess it wouldn't be bad to have a somehow narrower concept in the beginning. If people have a clearer idea of your game, they feel more addressed and are likelier to play it. Also, the risk of a giant, never-finished work is smaller. Extensions are still possible in later versions...

That's just my impression, I'm aware that there are many things to do until the project becomes ready. And I'm looking forward to hearing of more, maybe more concrete, details about FlexWorld! :)
Title: FlexWorld
Post by: Groogy on March 03, 2012, 05:41:42 pm
Well putting out a actual gameplay video would be awesome :D
Title: FlexWorld
Post by: Grimshaw on March 03, 2012, 09:51:47 pm
It sounds promising, but I will be honest, with the information given, I don't really understand what exactly it is about.

The concept is looking a little generic, while it does create a big expectation from us :)

What about a concrete example of what to do with it?
Title: FlexWorld
Post by: Tank on March 06, 2012, 02:22:56 am
Quote
The project sounds interesting, however the descriptions are a little bit too abstract in my opinion. It somehow reminds me of MineCraft, yet I can't really imagine how the gameplay will look or what will be the challenge and goal of the game.

The first one comparing FlexWorld with Ultima Online will get a cookie from me. ;-) Seriously: The design of FlexWorld is highly inspired by Ultima Online, which *basically* is a role-playing game in a specific setting.

Due to some people building server emulators and reverse-engineering the file formats, it became one of the biggest MMORPG toolkits available, which is the reason why that game is still being played by thousands of people.

Now I don't want to clone Ultima Online (there's already one), and I don't want to clone Minecraft (does exist already, too). My goal is create an environment (mostly technically) similar to Ultima Online. Minecraft was a good inspiration for the graphics part (not the style, still talking about technically things here).

That's still very abstract and it's really hard to tell how concrete a gaming session will look like. The very first impressions will arise when game logics are being scripted, tested and evaluated. We've got a couple of people who're brainstorming, creating ideas and interesting concepts that'll be tried out to get an interesting experience.

Quote
You also want to provide actually everything (unlimited game modes, models, etc.). While it is good to have user-based content and leave much room for creativity, I guess it wouldn't be bad to have a somehow narrower concept in the beginning.


WE do not want to provide everything. :-) We're trying to create an interesting game, but let the user the freedom to manipulate, extend or start from scratch to try out own ideas. FlexWorld is very much designed to allow that.

FlexWorld will include a game mode called "Factions" in the beginning that mixes some key features like character building, adventuring, economy and fighting. The website already tries to give a rough idea about Factions. However I understand that someone not involved won't directly see what the heck it's all about. ;-)

It's important to differentiate between FlexWorld and Factions (for example!). Factions is developed using FlexWorld's techniques, like a dynamic 3D world, logics through Lua scripts, the asset pipeline (models, textures, classes, ...) etc. So basically we could also call Factions a "reference implementation", which is of course just *one* implementation. FlexWorld is not tied to one end-product, or one specific game. It's more tied to specific resources that can be combined, changed and created in a lot of ways.

Quote
That's just my impression, I'm aware that there are many things to do until the project becomes ready. And I'm looking forward to hearing of more, maybe more concrete, details about FlexWorld!


More details will follow in a not so long period. We're currently working hard to get the sub-systems ready for game logics and interactions within the world, which means that the "fun part" in the end-user's perspective will begin. :-)

You mentioned it: There're many things that have to be done – but there're also a lot of things that are already completed, like networking (both local and remote sessions, singleplayer and multiplayer), accounting, dynamic resource management with automatic download of missing assets, 3D renderer for dynamic (i.e. a highly modifyable) environments and much more.

Quote
Well putting out a actual gameplay video would be awesome


I fully agree to that, and I'd really love to fire up the game, click on "Record", do some fancy things and upload an episode every 2nd day. :-) However I'm really afraid you guys would be bored. Just think about how a game looks like (I guess many of us are here for writing them) when it's in development: Developer art, testing assets, ugly-looking environments just to confirm everything's working etc.

We're working very hard to get the first (interesting!) screenshots ready and even a short video that finally shows some interesting things you can do. Just need a little more patience.. ;-)

There's one thing I want to point out: Thank you very much, all three of you. I was always curious about why there're no replies/questions/whatever. I think the project does currently feel "too chaotic" or not targeted to a clear goal. There're about ~10 people involved in the project (most of them being in the testing team), and we talk a lot on IRC so they slowly got the idea of what it's all about, but bringing the whole idea to the table in short words to a wider audience is a difficult task.

I'll think a little more about a good description about the project on the website.
Title: Re: FlexWorld
Post by: Tank on March 28, 2012, 10:40:23 am
Update from FlexWorld: We finally started implementing the Lua scripting API. For more details please check the following blog post: http://www.flexworld-game.com/blog/11/lua-scripting.html

In case of any feedback: Do not hesitate to reply! :)
Title: Re: FlexWorld
Post by: aBallofWin on March 30, 2012, 11:45:07 am
This project definitively looks intriguing! Can't wait to see some action of it, but of course, take your time :)
Title: Re: FlexWorld
Post by: Tank on March 30, 2012, 04:18:18 pm
Thanks for your reply. The next post will contain some in-game/gameplay stuff, finally. ;)
Title: Re: FlexWorld
Post by: Tank on April 01, 2012, 07:21:09 pm
A small and fat man with an eye patch steps into the room, looks around and starts yelling: »Ahoy! We dispersed the coward Lubbers and threw some of them into the Bilge Rat! For all you travelers we've got some nice Grog and music played on Hornpipes. Smartly get on ship!«

(in case you have problems reading the text above: http://www.talklikeapirate.com/howto.html ;))

Website (http://flexworld-game.com) updated and a happy April Fools' Day to everyone.
Title: Re: FlexWorld
Post by: Bocaj on April 04, 2012, 02:31:45 am
I'm sorry... but this sounds WAY too much like minecraft.
Title: Re: FlexWorld
Post by: eXpl0it3r on April 04, 2012, 10:13:24 am
I'm sorry... but this sounds WAY too much like minecraft.

Dude what the heck is wrong with you?
Stop spaming around! >:(

It sure as familiaries with MC but then again, whenever somebody sees a voxel engine they call it MC nowadays. And is there a law that wouldn't allow anyone to make something familiar?

If you had read more you'd have noticed that it will be much more than minecraft. The render technique as voxels will be the same the whole gameplay will be completly diffrent, WAY more into the direction of RPG.
Title: Re: FlexWorld
Post by: Tank on April 04, 2012, 10:33:01 am
Quote
I'm sorry... but this sounds WAY too much like minecraft.
I agree that from an external perspective (and without seeing screenshots/screencasts or being involved in the development process) it indeed sounds like another clone. But I'm quite happy to tell you it isn't. :)

I won't deny that Minecraft influenced FlexWorld regarding to the rendering. FlexWorld indeed has a quite long history, it started topdown, then isometric and finally 3D. However the inspiring example has always been Ultima Online, a game with a highly modifyable world too (except the terrain).

By the way, it's very common that successful concepts from the gaming industry are mixed and put into a new product to enhance previous games. You just can't reinvent the wheel everytime. I still hope you probably give it a try when a demo version is released; I'd even personally invite you to do so.

Quote
Dude what the heck is wrong with you?
Stop spaming around!
Calm down. ;) I'm thankful for every feedback, comment or question.

Quote
The render technique as voxels will be the same the whole gameplay will be completly diffrent, WAY more into the direction of RPG.
I don't really like the word "voxels", as it implies that everything will be built of cubes, which is not the case. However FlexWorld uses a fixed grid, that's true.
Title: Re: FlexWorld
Post by: eXpl0it3r on April 04, 2012, 10:40:03 am
Calm down. ;) I'm thankful for every feedback, comment or question.

It wasn't specific to this thread but he fills up the forum with nonsense (see his profile (http://en.sfml-dev.org/forums/index.php?action=profile;area=showposts;u=6448)).

Okay I'll now shutup it shouldn't be my problem, it just annoys me.  >:(

I don't really like the word "voxels", as it implies that everything will be built of cubes, which is not the case. However FlexWorld uses a fixed grid, that's true.
Okay grid it is! :D
Title: Re: FlexWorld
Post by: Nexus on May 28, 2012, 12:05:06 pm
Do you use SFML for parts of the game? How is the 3D scene rendered?
Title: Re: FlexWorld
Post by: Tank on May 29, 2012, 02:04:40 am
Yes, SFML is being used as the rendering interface for most 2D stuff, loading textures, font rendering, window management, inputs, timers and audio.

The 3D scene is rendered using a self-made scene graph and OpenGL state-aware renderer, check this (https://github.com/TankOs/FWSG).
Title: Re: FlexWorld
Post by: Tank on June 01, 2012, 10:10:06 pm
Nexus, is there a special reason why you're asking? ;)
Title: Re: FlexWorld
Post by: Nexus on June 02, 2012, 06:56:42 pm
No, I thought maybe you'd use something already existing for the 3D rendering, like Irrlicht or Ogre. Would have been interesting to combine with SFML ;)
Title: Re: FlexWorld
Post by: Tank on July 24, 2012, 06:57:00 pm
Hey guys,

there haven't been news for quite a long time, so I'd like to show you a first video that our testing team coordinator eXpl0it3r (some may know him from this forum) did where you can watch him building a castle. The music in the background was produced by TheExenter (http://www.youtube.com/user/TheExenter).

Important note: Only because he's using cubes for building, it doesn't mean you're limited to that. So: No, this is not a Minecraft clone. Thank you. :)

http://www.youtube.com/watch?v=1nEezhfO4Us
Title: Re: FlexWorld
Post by: Tank on July 26, 2012, 02:28:49 pm
First post (http://en.sfml-dev.org/forums/index.php?topic=6436.msg42540#msg42540) has been updated in case you're looking for some more in-detail information. :-)
Title: Re: FlexWorld
Post by: lolz123 on July 27, 2012, 01:26:51 am
Looks great! I like how everything is open and scriptable. Something Minecraft is still lacking  ;)

My only complaint is the shading. The directional light alone makes it hard to recognize details in the geometry. Check this out: http://codeflow.org/entries/2010/dec/09/minecraft-like-rendering-experiments-in-opengl-4/ (http://codeflow.org/entries/2010/dec/09/minecraft-like-rendering-experiments-in-opengl-4/)
It says OpenGL 4, but it can easily be done without  :)

Also, I hope you don't mind me asking: How are you storing the voxels (on the hard drive)? Do you do any sort of compression?
Title: Re: FlexWorld
Post by: Tank on July 27, 2012, 10:45:41 am
Looks great! I like how everything is open and scriptable. Something Minecraft is still lacking  ;)
If I got a penny for every "Minecraft", I'd be rich already. ;)

Quote
My only complaint is the shading.
There's absolutely nothing in the codebase that does any nice shading yet. The shading you see in the video is a simple fixed OpenGL light to be able to separate between geometry at all.

The plan is to implement real-time lighting using a deferred method. It requires more decent hardware, but will also give a much nicer look. This may sound weird, but the renderer is currently on low priority due to other subsystems, like collision, containers (for inventory), basic physics (movement, jumping, crouching) and such.

Quote
Also, I hope you don't mind me asking: How are you storing the voxels (on the hard drive)? Do you do any sort of compression?
I'm happy to answer any questions! :) No compression yet, as it falls into the field of optimizations which are also on low priority. Of course there are a lot of ideas in that regard, e.g. using well-established compression algorithms like bz2, but nothing has been decided yet.

Same applies to network transfer of world data: Happens still uncompressed. Like said, FlexWorld is being programmed in an agile manner, which often means: Don't implement stuff when there's no demand (yet). ;)

Thanks for your reply!
Title: Re: FlexWorld
Post by: lolz123 on July 27, 2012, 05:52:45 pm
Do you store each chunk in its own file like ... ahem ... Minecraft (+$0.01)? Also, how long does it take to generate the chunks? Is there any special optimization you performed in order to get it to generate faster? I am asking because I also made a voxel engine too, but chunks take awfully long to generate due to the Perlin noise function performed for each voxel. Maybe I am approaching it incorrectly, or perhaps I just never really noticed how long it takes before since Minecraft (+$0.01) generates them in another thread as you go.
Title: Re: FlexWorld
Post by: Tank on July 27, 2012, 06:27:31 pm
Quote
Do you store each chunk in its own file like ... ahem ... Minecraft (+$0.01)?
Yes, as it saves HDD space for non-initialized chunks, which is even more important on the client-side where caches are stored.

Quote
Also, how long does it take to generate the chunks? Is there any special optimization you performed in order to get it to generate faster?
~1/4 second for the full view cuboid. However the terrain generator is very simple at the moment (simple height map). No optimizations so far, and I think it's even no big problem if it takes a little longer as it only happens once (to recall: FW doesn't have infinite maps).

Quote
Maybe I am approaching it incorrectly, or perhaps I just never really noticed how long it takes before since Minecraft (+$0.01) generates them in another thread as you go.
Can't comment on that because I don't know how you do it. :) I'm using a separate thread for preparing the geometry for the GPU, which might be the more time-consuming part (hidden-face removal etc.). The terrain is currently pre-generated, therefore I can't measure breaks during runtime. The current terrain however generates in no time. ;)
Title: Re: FlexWorld
Post by: Tank on August 24, 2012, 04:21:08 pm
Those following the development of the game might be interested in the upcoming physics integration. :)

Link: http://www.flexworld-game.com/blog/16/physics.html

Some more programming-related info: Physics are handled by the new component-based system library. Entities in the game can have any number of properties (like variables) of any type (even completely custom ones). Controllers can then be plugged in, to control and process the entities. Depending on what properties an entity has, the controllers automatically connect to them.

For example if you had an entity with the properties "velocity" and "position" and a controller "Movement" that's listening for those properties, it would automatically modify the position of the entity.

When we are finished adding the library to the game we will upload a new video showing basic physics (actually movement) and collision detection.

Stay tuned, and as always: Feedback welcome!
Title: Re: FlexWorld
Post by: model76 on August 24, 2012, 07:13:58 pm
Tank, don't worry about the Minecraft clone talk. This is a phase every new popular game genre goes through.

I am old enough to remember when Doom was released, and then the subsequent "Doom-clones". Funny enough, Wolfenstein came first, and Doom was a derivative of that. Today that genre has a proper name: 1st person shooter.

Interestingly, Infiniminer came before Minecraft, so perhaps the clone-crowd should be calling FlexWorld an Infiniminer clone. Even though it sounds like more of a mixed-genre game.

In time the "Mincraft-clone" genre will get a proper name, I am sure.
Title: Re: FlexWorld
Post by: Tank on August 24, 2012, 07:36:39 pm
I don't worry about it, I can even understand the reaction from people when they see the published videos for example. It indeed looks similar. The big advantage is that FlexWorld is not limited to the block style; a lot will happen regarding visuals.

Btw, Doom was created by id Software, just like Wolfenstein 3D. So it's rather a sequel than a derivate. :)

The genre Minecraft and Infinimer are in doesn't need to be invented I guess. They both belong to sandbox games, Minecraft also has survival elements in it.

However, thanks for your support! Good to hear that at least some people are a little bit more open-minded for FlexWorld. :)
Title: Re: FlexWorld
Post by: Dimple on August 25, 2012, 04:18:14 pm
Is there a specific reason why you're not using a ready-made physics engine for the physics?
Title: Re: FlexWorld
Post by: eXpl0it3r on August 25, 2012, 05:10:26 pm
The problems with using already existing libraries can be various:
And then there's the aspect of wanting to have your own code.

As for FlexWorld I believe it's a mixture of most of the reasons above plus as Tank already said the idea was in the beginning to have something very simple and thus using a full blown library would've been overkill. Now with the whole new property system using another library could also be harder or need unnessecary class instances etc.

The home made stuff just matches perfectly the needs. ;)
Title: Re: FlexWorld
Post by: Tank on August 26, 2012, 01:50:07 pm
Quote
Is there a specific reason why you're not using a ready-made physics engine for the physics?
eXpl0it3r basically explained the reason(s).

Physics are only one part of the new component system, which provides a very flexible way of plugging new things in. And it would be a pity not using it in the end. Of course external libraries could have also been adopted to the component system, but that often feels alien.

The same applies for the rendering system: It's completely written from scratch instead of using an already established engine, like Irrlicht, Ogre 3D or others. The main reason is that I exactly know what I need, and how I want to use it, so I go for it myself.

And last but not least: We are programmers, so it's fun doing those things yourself. :)
Title: Re: FlexWorld
Post by: Nexus on August 26, 2012, 06:19:45 pm
You both omitted points that shouldn't be underestimated in my opinion. Most important, you need much time to implement features, and even more time to maintain them. Valuable time you could invest in gameplay and content, instead of rewriting existing basic functionality.

Also keep in mind that it is very probable that your self-written physics and graphics engine cannot compete with libraries that have been debugged and optimized over years, maybe even developped by large teams. Even if an external library doesn't directly integrate to your project, you can encapsulate it behind your own interfaces. For libraries like Irrlicht, the license permits you to do virtually anything, so adaptions aren't an obstacle either.

Of course it may be fun to do things on your own, but especially for a project like FlexWorld that is going to grow continuously, it is wise to have a solid code base that scales with the application size. Or at least to implement physics and graphics in a modular way, so that an other framework could be employed with small effort.
Title: Re: FlexWorld
Post by: Tank on August 26, 2012, 07:17:46 pm
Quote
Also keep in mind that it is very probable that your self-written physics and graphics engine cannot compete with libraries that have been debugged and optimized over years, maybe even developped by large teams.
True. Indeed I'm very sure that the physics which have been recently added to FlexWorld are not as complete as other generalized physics libraries. But the question is: What does the game need?

Like said previously, the initial attempt to add physics was to keep things really simple. We don't plan to have ragdolls, fancy explosions (in terms of physics) or other physics gimmicks that other libraries provide. The reason why we ended up with real-world physics laws is simplicity and authenticity: It's easier to use well-known equations than trying to "fake" motions.

Quote
Even if an external library doesn't directly integrate to your project, you can encapsulate it behind your own interfaces.
Yes, and the new component system will always allow to do it in the future, even quite simple. Entities have properties that indirectly define their behaviour, and controllers decide what exactly happens. Whether we use our own controllers or hack in wrappers to other libraries doesn't really matter. I really tend to keep myself the doors open. :)

Quote
Of course it may be fun to do things on your own, but especially for a project like FlexWorld that is going to grow continuously, it is wise to have a solid code base that scales with the application size. Or at least to implement physics and graphics in a modular way, so that an other framework could be employed with small effort.
I played around with graphics engines in the past years a lot, especially Irrlicht (Ogre 3D always was a pain to build for me, at least in Linux). To be honest I didn't like the code design and the way of doing things. This is pure personal taste, and maybe I haven't digged deep enough to be proven otherwise, but that's what I came up with.

On the other side I really love programming, and I tend to know what happens, especially for things that highly impact performance and features. For example if an external 3D engine is missing a needed feature, I have to add it, which means that I also have to learn about the engine: How can it be changed to support my feature? What are the coding guidelines? Do my changes interfere with anything? That takes time, just like writing your own libraries does.

A good and recent example is the GUI library we use in FlexWorld: Initially it was SFGUI, then we switched to libRocket because SFGUI was lacking a lot of features that we needed and we didn't want to spend too much time and effort into maturing SFGUI, to match our needs. libRocket looked nice and provided everything we needed. Then the day came when all the code changes were merged into the master line and our continuous integration service tried to compile it on Windows. Of course, it failed.

We had to apply a lot of workarounds in our own code and some patches in libRocket, just to make it work. We found "_asm {}" blocks and other nasty things. Things nobody talked about, neither on the forums nor somewhere else. We assumed libRocket is of a good quality because we trusted what users said about it.

libRocket is still being used today, but we're already looking out for SFGUI again, because we know how it works, we know how to fix/enhance it and we know that whenever something stupid happens, we will be able to solve the problems.

That's why I'm afraid of relying on 3rd party libraries too much: It requires you to give away control to a certain degree and to hope that everything will go fine. If it does not, the only thing you can hope is that the library is written in proper source code and it will be easy to fix the bug or enhance the library to support a new feature. And to be honest, we already have a shitload of external dependencies, like Boost (utils, ASIO, functional...), Assimp, SFML, Diluculum and many others.

And last, but not least: You are fully right that our own libraries (both graphics and physics) are not as feature-complete as other matured and popular ones, but the assumption that it may be buggy (because it's new and not well tested by many others) is not valid. We're strictly following test-driven development in the development flow, which also applies to those sub-systems. So at least we can give a very high percental value of "Bugfree". ;) (except in the client, which is not being unittested but mainly acceptance-test-driven -- yeah yeah, it's a big mistake and we *will* change that ;))

Okay, this reply got quite long, but I'd like to thank you for your reply, Nexus. It at least forces us to (re)think about several things, something that's always needed to improve. So, thanks!
Title: Re: FlexWorld
Post by: Dimple on August 27, 2012, 01:52:40 pm
The reason why I'm asking is that I've been reading about physics engines and their development lately, and I've found that there are some really good free libraries (at least feature-wise) with very liberal licenses available. Of couse I'm making my own at the moment, but it's out of curiousity, I wouldn't really even need it for anything at the moment. ;)

Thanks for the input. This project seems interesting, I hope it works out. :)
Title: Re: FlexWorld
Post by: Tank on August 28, 2012, 07:52:36 am
I see. :) And thanks!
Title: Re: FlexWorld
Post by: binary1248 on August 31, 2012, 02:54:23 am
...
Amen. This is why everybody who wants to master SFML should read through the source one day :).
Title: Re: FlexWorld
Post by: Tank on September 03, 2012, 08:53:51 am
Mrm, I don't get it? ;)