Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: FlexWorld  (Read 21625 times)

0 Members and 1 Guest are viewing this topic.

Tank

  • SFML Team
  • Hero Member
  • *****
  • Posts: 1486
    • View Profile
    • Blog
    • Email
Re: FlexWorld
« Reply #30 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. :)

Dimple

  • Newbie
  • *
  • Posts: 30
    • View Profile
Re: FlexWorld
« Reply #31 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?

eXpl0it3r

  • SFML Team
  • Hero Member
  • *****
  • Posts: 10821
    • View Profile
    • development blog
    • Email
Re: FlexWorld
« Reply #32 on: August 25, 2012, 05:10:26 pm »
The problems with using already existing libraries can be various:
  • The license does match you needs.
  • The library is way too heavy for the needed task.
  • The library doesn't match the wanted result exactly and thus would need some redesign/rewrite (if the license allows that).
  • The library can't be integrated easily into your application/game.
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. ;)
Official FAQ: https://www.sfml-dev.org/faq.php
Official Discord Server: https://discord.gg/nr4X7Fh
——————————————————————
Dev Blog: https://duerrenberger.dev/blog/

Tank

  • SFML Team
  • Hero Member
  • *****
  • Posts: 1486
    • View Profile
    • Blog
    • Email
Re: FlexWorld
« Reply #33 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. :)

Nexus

  • SFML Team
  • Hero Member
  • *****
  • Posts: 6286
  • Thor Developer
    • View Profile
    • Bromeon
Re: FlexWorld
« Reply #34 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.
Zloxx II: action platformer
Thor Library: particle systems, animations, dot products, ...
SFML Game Development:

Tank

  • SFML Team
  • Hero Member
  • *****
  • Posts: 1486
    • View Profile
    • Blog
    • Email
Re: FlexWorld
« Reply #35 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!

Dimple

  • Newbie
  • *
  • Posts: 30
    • View Profile
Re: FlexWorld
« Reply #36 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. :)

Tank

  • SFML Team
  • Hero Member
  • *****
  • Posts: 1486
    • View Profile
    • Blog
    • Email
Re: FlexWorld
« Reply #37 on: August 28, 2012, 07:52:36 am »
I see. :) And thanks!

binary1248

  • SFML Team
  • Hero Member
  • *****
  • Posts: 1405
  • I am awesome.
    • View Profile
    • The server that really shouldn't be running
Re: FlexWorld
« Reply #38 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 :).
SFGUI # SFNUL # GLS # Wyrm <- Why do I waste my time on such a useless project? Because I am awesome (first meaning).

Tank

  • SFML Team
  • Hero Member
  • *****
  • Posts: 1486
    • View Profile
    • Blog
    • Email
Re: FlexWorld
« Reply #39 on: September 03, 2012, 08:53:51 am »
Mrm, I don't get it? ;)