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

Author Topic: Feather Kit - A C++ Game Framework  (Read 45629 times)

0 Members and 2 Guests are viewing this topic.

therocode

  • Full Member
  • ***
  • Posts: 125
    • View Profile
    • Development blog
Re: Feather Kit - A C++ Game Framework
« Reply #45 on: April 06, 2014, 02:06:03 pm »
Greetings!

It has been a while since I posted here last time. I have some update news regarding the framework and since a few of you guys seemed interested I'll write them here. :)

General approach changes
Up until now, version management and such was a mess. But I have now decided to follow semantic versioning. This in short terms mean that you can tell from the versioning number what an update does. 0.0.x is a bugfix/patch update, 0.x.0 is a feature addition update in a way that does not break compatibility and x.0.0 is a compatibility breaking update.

I will also no longer develop on the master branch (which is a very bad thing to do in the first place for a library) so the default cloning of the repo will always be the latest official release and will match the documentation.

From now on every new release will come with changes listed in the changelog.txt and information will be available on how to transition in case of API breaking changes.

New features/big changes
Woo, everyone loves new features!

The biggest addition is a whole new module. The Audio module. This module lets you play audio, music or custom streams in a way fairly similar to SFML. It also lets you apply effects and filters with which you can create realistic room acoustics, muffle the sounds under water or maybe add an echo to a canyon level.

Aside from that, a big part of the Entity System module is now also rewritten to be way more safe. It can also store any data type now, and the API is more convenient to use.

Other changes
However much I like the UK spelling myself, this is far from standard in the programming world. Feather Kit now uses US spelling.

All header files have been renamed to .hpp and the templated ones now hide the implementation in .inl files.

The CMakeLists now makes sure to use the -d prefix for debug builds and the FindFeatherKit.cmake is updated to reflect this as well.

The forum has been updated, but not many people registered there anyway so I am not sure who cares about this. :D

So what now?
Before the true 1.0.0 release, I will write more tutorials and update the website a bit more. There will also be a showcase application to show what Feather Kit can be used for. When that is done, I will see if I can post about Feather Kit in other places than just here to see if there is an interest.

Oh, the web build is also not working right now in the 1.0.0rc1 version and will be patched as soon as possible.

If you're interested, check the new version out at the website or go directly to the source code.

Feather Kit website
Source code

Thanks for reading! :)

Nexus

  • SFML Team
  • Hero Member
  • *****
  • Posts: 6287
  • Thor Developer
    • View Profile
    • Bromeon
Re: Feather Kit - A C++ Game Framework
« Reply #46 on: April 06, 2014, 09:47:30 pm »
I will also no longer develop on the master branch (which is a very bad thing to do in the first place for a library) so the default cloning of the repo will always be the latest official release and will match the documentation.
Why that? I would say users that clone the Git repository expect to have the latest changes.

You can use Git tags to refer to official releases.

Zloxx II: action platformer
Thor Library: particle systems, animations, dot products, ...
SFML Game Development:

therocode

  • Full Member
  • ***
  • Posts: 125
    • View Profile
    • Development blog
Re: Feather Kit - A C++ Game Framework
« Reply #47 on: April 06, 2014, 10:21:14 pm »
Why that? I would say users that clone the Git repository expect to have the latest changes.

You can use Git tags to refer to official releases.

Well, I guess it depends on the release cycle of the library. I aim to wrap up and release things rapidly, and fix bugs really quickly etc. Combined with semantic versioning that lets me push bugfixes and feature additions as releases to the master quickly enough to be equivalent to "latest changes". Then if you as user want the experimental non-released stuff you can check out the development branch.

But of course, if you have a way slower release cycle like SFML for example, then you might want to use the other approach. :)

minirop

  • Sr. Member
  • ****
  • Posts: 254
    • View Profile
    • http://dev.peyj.com
Re: Feather Kit - A C++ Game Framework
« Reply #48 on: April 07, 2014, 11:02:43 pm »
I will also no longer develop on the master branch (which is a very bad thing to do in the first place for a library) so the default cloning of the repo will always be the latest official release and will match the documentation.
Why that? I would say users that clone the Git repository expect to have the latest changes.

You can use Git tags to refer to official releases.
sometimes it can help.
« Last Edit: April 07, 2014, 11:05:10 pm by minirop »

therocode

  • Full Member
  • ***
  • Posts: 125
    • View Profile
    • Development blog
Re: Feather Kit - A C++ Game Framework
« Reply #49 on: June 30, 2014, 11:21:20 am »
Alright, I felt it was time to update this thread again in case someone is interested in knowing the progress. :)

Since last time, I've seen some interest in the framework and I've got some users/contributors (for example this project)which really helps the maturing of the library. :)

I am still trying to get the library in a good shape for the 1.0.0 release (it is now at 1.0.0rc4) and some things might change until then, but as it hits 1.0.0, there will be no API breaking changes until 2.0.0.

Some notable changes since last time:

  • Audio module relies on libvorbisfile instead of libsndfile.
  • Added an A* pathfinding class.
  • Added a set of noise tools (probably most interesting for generating simplex noise).
  • Added word wrap functionality for the text surface.
  • One can now add custom shader uniforms to any drawable for use with custom shaders.
  • Include directories and library prefixes are "fea" instead of "featherkit".
  • Messaging now works by sending any structs instead of tuple-based messages. Great for type safety.
  • Many other smaller updates/fixes.

The pathfinder is completely general and can work on any data, so even if you are not interested in using featherkit in general for your project, you can still use only the pathfinder would you need to.

Example 1:
This shows how an infinite landscape can be created using the noise tools:
Link
Controls:
- Cursor keys to steer the camera.
- Click to see what biome is at a certain point.

Example 2:
This shows among other things, text rendering, entity management and pathfinding.
Link
Controls:
- Click "begin" to get past splash screen.
- WSAD to steer the camera.
- Click/drag left mouse button to place walls.
- Click/drag right mouse button to erase walls.
- Scroll to zoom.
- Press B to place a building. The workers will find a path to the building site if it exists, and build it.
« Last Edit: June 30, 2014, 01:18:51 pm by therocode »

Temeez

  • Newbie
  • *
  • Posts: 3
    • View Profile
Re: Feather Kit - A C++ Game Framework
« Reply #50 on: June 30, 2014, 06:47:16 pm »
I registered just to say this: Awesome job mate, I just found this today and its very awesome!

Those examples are intriguing and I hope their source code will be available later. :)

Lo-X

  • Hero Member
  • *****
  • Posts: 618
    • View Profile
    • My personal website, with CV, portfolio and projects
Re: Feather Kit - A C++ Game Framework
« Reply #51 on: June 30, 2014, 08:14:04 pm »
Yes I would definitively would like some tutorials/examples about each modules, but the source code is amazing !

therocode

  • Full Member
  • ***
  • Posts: 125
    • View Profile
    • Development blog
Re: Feather Kit - A C++ Game Framework
« Reply #52 on: July 01, 2014, 05:27:53 am »
Thanks for the feedback! :)

The source of the landscape generator will be made available. I just need to refactor it becasue it is currently very (read extremely) ugly... When I've done that, I'll definitely make the source available.

Not sure about the other one though since it is a game project I am working on, and right now I haven't decided if I want it closed source or not. But it is on my todo-list to write example programs to showcase the things shown there anyway.

I will also definitely write more tutorials! The current 4 tutorials doesn't touch most of the modules hehe. Cheers.

Xafi

  • Newbie
  • *
  • Posts: 18
  • My project, http://1ndieidea.hol.es/
    • View Profile
Re: Feather Kit - A C++ Game Framework
« Reply #53 on: July 04, 2014, 06:06:23 pm »
I need watch this source so i can learn new way of programming

Lo-X

  • Hero Member
  • *****
  • Posts: 618
    • View Profile
    • My personal website, with CV, portfolio and projects
Re: Feather Kit - A C++ Game Framework
« Reply #54 on: October 08, 2014, 03:17:13 pm »
I've got an error when I build the lib :

/featherkit/src/entity/glmtypeadder.cpp:40:20: error: ‘u64vec2’ is not a member of ‘glm’
return glm::u64vec2(static_cast<uint64_t>(std::stoul(params[0])), static_cast<uint64_t>(std::stoul(params[1])));
              ^

I've the last libglm version available in Ubuntu packages.


Edit: the same with all u64vecX and i64vecX, I replaced them by their rightfull name : uvecX and ivecX and it solved these errors.

But I've got another error :

/featherkit/src/rendering/quad.cpp:6:37: error: converting to ‘const vec2 {aka const glm::detail::tvec2<float>}’ from initializer list would use explicit constructor ‘glm::detail::tvec2<T>::tvec2(const value_type&, const value_type&) [with T = float; glm::detail::tvec2<T>::value_type = float]’
     Quad::Quad() : Quad({2.0f, 2.0f})

along with some other initializer errors that I corrected in the sources (switch from init. list to constructors) and it worked

« Last Edit: October 08, 2014, 03:30:24 pm by Lo-X »

therocode

  • Full Member
  • ***
  • Posts: 125
    • View Profile
    • Development blog
Re: Feather Kit - A C++ Game Framework
« Reply #55 on: October 09, 2014, 02:17:43 pm »
Ah, hmm, Interesting with the "not a member" error. I haven't gotten that myself and glm::u64vec2 does definitely exist. Maybe glm/gtc/type_precision.hpp needs to be included. Would you mind trying adding #include <glm/gtc/type_precision.hpp> under the glm include in that file to see if that fixes it? If it does, I'll add it.

As for the second errors, would you be able to show a diff of where you changed the { } to constructors? I'll add those as well in that case.

Thanks for the information. :)

therocode

  • Full Member
  • ***
  • Posts: 125
    • View Profile
    • Development blog
Re: Feather Kit - A C++ Game Framework
« Reply #56 on: October 18, 2014, 04:24:25 pm »
I myself got these errors now with an updated clang version, so I have fixed all of them and the changes are in the incoming branch. Thanks!