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

Author Topic: Spooker - Open Source Game Framework  (Read 27016 times)

0 Members and 1 Guest are viewing this topic.

Deathbeam

  • Jr. Member
  • **
  • Posts: 82
  • VB6, VB.NET, C#, HTML, PHP, CSS, JavaScript nerd.
    • View Profile
    • My portfolio
    • Email
Spooker - Open Source Game Framework
« on: February 16, 2014, 06:01:15 pm »
Spooker
Open Source Game Framework

Hello everyone, I am new here and I wanna share with you project on what I am working.

Spooker Framework is fully free and open source game library, what will help game developers in making their own games faster. Spooker is based on SFML (Simple and Fast Multimedia Library) and its port binding SFML.NET. SFML is cross-platform (running on top of OpenGL) multimedia library, what is really fast and easy to use. Becouse of using cross-platform libraries, Spooker is able to run on most platforms, including Windows, Linux and even Mac.

I am working on this project mainly becouse I need good, stable and fast base for game on what I am working, so I am frequently testing all features and finding ways how to short time spent coding game using this framework. This framework will be pure 2D, do not expect any more dimensions from it (okay, we can jump over 3rd dimension and add here also time as 4th dimension, becouse using this framework is taking more or less time, and I believe that time is the 4th dimension, I do not care about scientists telling that it is not, for me it is! :D). Less code == More fun.

Please, consider watching us on GitHub to be updated with latest releases. You can use this library in any project freely. Share it with your friends.
 
Website: http://spooker-dev.github.io/
« Last Edit: April 04, 2014, 07:15:06 pm by Deathbeam »
Spooker Framework - Open source gaming library
My portfolio
Indie Armory - Small community of a game developers. Everyone is welcome. Bring your friends, family, pets...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
Re: [.NET] SFGL - Simple and fast game library
« Reply #1 on: February 16, 2014, 07:27:55 pm »
Calling your project SFGL is not a good idea:
- everyone wants to call his SFML-based engine SFGL
- the naming is really close to "SFML", which may make people think that it's the "official" engine based on SFML

This is just my thought, based on what I've already seen. The choice is of course up to you ;)
Laurent Gomila - SFML developer

Deathbeam

  • Jr. Member
  • **
  • Posts: 82
  • VB6, VB.NET, C#, HTML, PHP, CSS, JavaScript nerd.
    • View Profile
    • My portfolio
    • Email
Re: [.NET] SFGL - Simple and fast game library
« Reply #2 on: February 16, 2014, 08:47:45 pm »
Calling your project SFGL is not a good idea:
- everyone wants to call his SFML-based engine SFGL
- the naming is really close to "SFML", which may make people think that it's the "official" engine based on SFML

This is just my thought, based on what I've already seen. The choice is of course up to you ;)

I know, but I thought it will be good idea, becouse I am trying to strictly follow SFML way of handling things (like main game window initializing is simply inherited class from RenderWindow, so it can be initialized in almost same way). And also, I just <3 SFML and I want to show to everyone that I based this library of SFML.
Spooker Framework - Open source gaming library
My portfolio
Indie Armory - Small community of a game developers. Everyone is welcome. Bring your friends, family, pets...

Nexus

  • SFML Team
  • Hero Member
  • *****
  • Posts: 6287
  • Thor Developer
    • View Profile
    • Bromeon
Re: [.NET] SFGL - Simple and fast game library
« Reply #3 on: February 16, 2014, 09:50:03 pm »
I know, but I thought it will be good idea, becouse I am trying to strictly follow SFML way of handling things (like main game window initializing is simply inherited class from RenderWindow, so it can be initialized in almost same way).
I think this is also a bad idea ;)

The SFML way of handling things is having functionality that is modular and independent to a big extent -- basic building blocks one can put together. Game engines, on the other hand, have a rather different approach: a lot of features are already fully implemented, the choice of how to use and combine them is often not left to the user. Furthermore, inheritance should be considered carefully, as it introduces high coupling and is often done wrong (see LSP). Instead, composition might be a good choice.

I agree with Laurent; I wouldn't call the library SFGL simply because it is based on SFML. It will just create too much confusion: on one side with SFML itself, on the other with the at least two existing projects that are called SFGL. Find a unique name that one can remember, and that represents the philosophy behind your game engine :)
Zloxx II: action platformer
Thor Library: particle systems, animations, dot products, ...
SFML Game Development:

Lo-X

  • Hero Member
  • *****
  • Posts: 618
    • View Profile
    • My personal website, with CV, portfolio and projects
Re: [.NET] SFGL - Simple and fast game library
« Reply #4 on: February 16, 2014, 10:02:27 pm »
Funny, we had another SFGL just a few weeks ago :) Indeed the name is misleading/may be changed.

Your website is really nice even if not finished. You have a link that points on something called Cookie2D, or it's a mistake or I didn't get the link with your lib.
You should make a list of the features your lib have, I got to browse the code to know :)

Did you test it on linux and mac ? Because with .NET it's not straightforward on these platforms. You have to install things like Mono.

zsbzsb

  • Hero Member
  • *****
  • Posts: 1409
  • Active Maintainer of CSFML/SFML.NET
    • View Profile
    • My little corner...
    • Email
Re: [.NET] SFGL - Simple and fast game library
« Reply #5 on: February 16, 2014, 10:30:02 pm »
I agree about the name, you should find something unique to describe your library. However, here are some of my thoughts after looking over the code.

  • Clean up your code formatting, all over I see misaligned brackets making it hard to read and follow code blocks.
  • Use the IDisposable interface correctly. In your content classes you should have a flag to determine if the object has already been disposed. See here for more information.
  • Take your collision class for instance. If you insist on using static functions/variables make sure you declare the class static also.
  • Also in your collision class, consider instead of taking sprites as parameters, make it more generic and use SFML.Graphics.Transformable as the type.
  • In your binary serialization class (whats that got to do with games ???) anyways, you should return the serialized data instead of having the user pass for instance a string in. There is no indication that the string will contain the data when the method returns. Also an object is not required to implement ISerializable in order to be serialized, the only requirement is that the type has the attribute [Serializable].
  • "IUpdateable" makes more sense to me as a native english speaker spelled "IUpdatable"
  • Why do you implement your own drawable interface with the only parameter being time? Drawing code should have no idea of elapsed time. Instead you should use the provided SFML drawable and utilize the target and states parameters.
  • I see you used my NetEXT Time and Clock classes by copy pasting them in. I have no issue with it (thanks for mentioning my name), but what was wrong with just adding NetEXT as another dependency and utilizing it directly? By adding NetEXT you are also giving users direct access to more features your code base doesn't provide. I also can think of other reasons directly including NetEXT would be a better idea. ;)
  • About Tao and the direct OpenGL calls, I am unsure as to why you even have Tao as a dependency. From what I could see the only place you are using it is to clear a depth buffer.
  • One last thing, if you want you can mention my full name instead of just my forum name (Zachariah Brown) and my website [still WIP] for my projects.  ;)

Also to be clear in your readme, SFML.NET is not a port, it is a binding.

Just my thoughts, there are some other things that could be done, but I hope you don't mind me giving feedback  :D

Did you test it on linux and mac ? Because with .NET it's not straightforward on these platforms. You have to install things like Mono.

Even on windows you still need to install the .NET framework  ::) And other than using Tao (for what I don't know yet) from what I looked at his code will run fine with mono.
« Last Edit: February 16, 2014, 11:57:45 pm by zsbzsb »
Motion / MotionNET - Complete video / audio playback for SFML / SFML.NET

NetEXT - An SFML.NET Extension Library based on Thor

Deathbeam

  • Jr. Member
  • **
  • Posts: 82
  • VB6, VB.NET, C#, HTML, PHP, CSS, JavaScript nerd.
    • View Profile
    • My portfolio
    • Email
Re: [.NET] SFGL - Simple and fast game library
« Reply #6 on: February 17, 2014, 12:25:45 pm »
.NET can be replaced in other platforms with Mono. I already tested entire library with Mono compatibility (on my development PC I do not even have .NET installed, I am using MonoDevelop and Mono). And I am using Tao only temporary until I will make my own GUI library, becouse Gwen requires to clear depth buffer. Thanks for telling me your full name zsbzsb, It is always nicer to have full names in credits.
Spooker Framework - Open source gaming library
My portfolio
Indie Armory - Small community of a game developers. Everyone is welcome. Bring your friends, family, pets...

Lolilolight

  • Hero Member
  • *****
  • Posts: 1232
    • View Profile
Re: [.NET] SFGL - Simple and fast game library
« Reply #7 on: February 17, 2014, 01:08:27 pm »
The name of the library remind me something, but I've changed the name because my framework is not the official game engine of SFML.  :)

I don't use .NET, it's very paintfull to makes it works on linux and I've never have a sucess result.
I tried to run this followings games on linux : League of legends and rift.

But if your framework work with mono, why not. (But I hate to have to install an emulator, and it often doesn't work so well as the original plateform, personnally I'll not use this framework not because of your framework but because all the games doesn't work on linux, so I've stayed on window and I try to build the first big game who work on linux without using mono, but, it's a very long task)
So I'll be able to play and work on linux, and don't have to be dependant on window to play with my favorite game.
« Last Edit: February 17, 2014, 01:10:06 pm by Lolilolight »

Deathbeam

  • Jr. Member
  • **
  • Posts: 82
  • VB6, VB.NET, C#, HTML, PHP, CSS, JavaScript nerd.
    • View Profile
    • My portfolio
    • Email
Re: [.NET] SFGL - Simple and fast game library
« Reply #8 on: February 17, 2014, 04:06:30 pm »
And why I do not wanna include NetExt? Becouse I am planning to make my own particle system, and it will simply interfere with NetExt particle system and also I have own content managing system, so I do not need one from NetExt and I think it will confuse users when they will have that much choices :)

Btw, updated website with new Bootstrap theme by http://bootswatch.com/ called Spacelab. Now it is looking alot better imo. And also there added another tutorial for creating scenes.
Spooker Framework - Open source gaming library
My portfolio
Indie Armory - Small community of a game developers. Everyone is welcome. Bring your friends, family, pets...

Deathbeam

  • Jr. Member
  • **
  • Posts: 82
  • VB6, VB.NET, C#, HTML, PHP, CSS, JavaScript nerd.
    • View Profile
    • My portfolio
    • Email
Re: [.NET] SFGL - Simple and fast game library
« Reply #9 on: February 20, 2014, 11:01:35 am »
Hmm I think this is not double-post, I do not know rules of this forum very good, but 3 days passed, so I think it is not.

I am working on new documentation using Sandcastle Help File Builder, so I started commenting library code. It is really pain and I am bored of it already lol. But I pushed some commits to GitHub, and I sucesfully commented most of code. Also, I created new state manager (hmm I should update site with updated tutorials....). And, as zsbzsb suggested, I removed Tao reference and updated readme.
Spooker Framework - Open source gaming library
My portfolio
Indie Armory - Small community of a game developers. Everyone is welcome. Bring your friends, family, pets...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
Re: [.NET] SFGL - Simple and fast game library
« Reply #10 on: February 20, 2014, 11:29:10 am »
Quote
Hmm I think this is not double-post, I do not know rules of this forum very good, but 3 days passed, so I think it is not.
I don't care about multiple posts. As long as you have something new to say, you can say it ;)
Laurent Gomila - SFML developer

Deathbeam

  • Jr. Member
  • **
  • Posts: 82
  • VB6, VB.NET, C#, HTML, PHP, CSS, JavaScript nerd.
    • View Profile
    • My portfolio
    • Email
Re: [.NET] SFGL - Simple and fast game library
« Reply #11 on: February 21, 2014, 07:15:05 pm »
Quote
Hmm I think this is not double-post, I do not know rules of this forum very good, but 3 days passed, so I think it is not.
I don't care about multiple posts. As long as you have something new to say, you can say it ;)
Fair enought :)

New SFGL 1.1 Release!

In this release I commented many more parts of code. Also, new scene manager is fully working. Also, most of code is using now my new Rectangle and Vector2 classes (structs).

I updated website of SFGL too with new landing page, new downloads page and hopefully finished and working documentation page.

You can download latest release here: http://sfgl-dev.github.io/downloads.html.

I am occuring some StackOverflow bug right now, I think it is caused by GameComponent inheritance, so I am probably going to make GameWindow class static (and remove inheritance of RenderWindow and make it as component), hopefully it will fix it. But I do not wanna use GameWindow as static class, so if you guys have any tips how can I fix it, I will appreciate them. For some reason, MonoDevelop is refusing where that stackoverflow error occurs, so I am not sure if that GameComponent causes it.


Spooker Framework - Open source gaming library
My portfolio
Indie Armory - Small community of a game developers. Everyone is welcome. Bring your friends, family, pets...

zsbzsb

  • Hero Member
  • *****
  • Posts: 1409
  • Active Maintainer of CSFML/SFML.NET
    • View Profile
    • My little corner...
    • Email
Re: [.NET] SFGL - Simple and fast game library
« Reply #12 on: February 21, 2014, 07:48:47 pm »
I'm sorry this might sound rude, but let me get this straight. You copy and pasted in some NetEXT code and copy pasted in SFML.NET rectangle/vector classes all for the sake of "not confusing the user". Then you reinvent the wheel with your own drawable class (which looks more like an update class) all for the sake of trying to write a self contained library that hides what the library really doing internally for your little game dev community.

You also claim that the GUI used by your library is your own advanced code when you are really using Gwen. This really should be clarified, "Our GUI library makes endless possibilities in making of GUI for your own game" is extremely misleading.

To sum it up, you do your best to write your own library that hides the internal implementations from the user and prevents them from using the internal implementation directly in their own code. But at the same time you come to the community that powers your library and ask them to try your code that broken with the original library because you decided to copy and paste in code. It seems like an oxymoron to me, abstract away dependencies and then ask the dependency community to try out your code without directly using the dependency.

Not too good in my opinion, you can do what you want with the way you take my above comments. Remember its only the way I see it, but I don't plan on using any of your code since because as stated above, is broken with other libraries.

What I really would suggest you do is, #1 change the name - SFGL doesn't make much sense and is confusing, not to mention we just had this discussion over Lololilight's lib  #2 don't re-implement other libraries code in your own library just because being self contained seems neat - in the end it just causes more headaches.

Oh and since you are up to 3 different "game engines" now I suggest you read the following link.
http://scientificninja.com/blog/write-games-not-engines
« Last Edit: February 21, 2014, 08:00:35 pm by zsbzsb »
Motion / MotionNET - Complete video / audio playback for SFML / SFML.NET

NetEXT - An SFML.NET Extension Library based on Thor

Deathbeam

  • Jr. Member
  • **
  • Posts: 82
  • VB6, VB.NET, C#, HTML, PHP, CSS, JavaScript nerd.
    • View Profile
    • My portfolio
    • Email
Re: [.NET] SFGL - Simple and fast game library
« Reply #13 on: February 21, 2014, 07:59:26 pm »
I'm sorry this might sound rude, but let me get this straight. You copy and pasted in some NetEXT code and copy pasted in SFML.NET rectangle/vector classes all for the sake of "not confusing the user". Then you reinvent the wheel with your own drawable class (which looks more like an update class) all for the sake of trying to write a self contained library that hides what the library really doing internally for your little game dev community.

You also claim that the GUI used by your library is your own advanced code when you are really using Gwen. This really should be clarified, "Our GUI library makes endless possibilities in making of GUI for your own game" is extremely misleading.

To sum it up, you do your best to write your own library that hides the internal implementations from the user and prevents them from using the internal implementation directly in their own code. But at the same time you come to the community that powers your library and ask them to try your code that broken with the original library because you decided to copy and paste in code.

Not too good in my opinion, you can do what you want with the way you take my above comments. Remember its only the way I see it, but I don't plan on using any of your code since because as stated above, is broken with other libraries.

What I really would suggest you do is, #1 change the name - SFGL doesn't make much sense and is confusing, not to mention we just had this discussion over Lololilight's lib  #2 don't re-implement other libraries code in your own library just because being self contained seems neat - in the end it just causes more headaches.

Oh and since you are up to 3 different "game engines" now I suggest you read the following link.
http://scientificninja.com/blog/write-games-not-engines

As first, I have all credits there. Second, I wanted to inherit that classes and just add functionality there, but for some reason, ihneriting structures is not possible. And in header of that 2 classes, I have that it is code from SFML. And no, I am not claiming that that GUI is mine, i have written in my release package on git that it is not my GUI library and that I am planning to write my own. But I understand what do you mean. And thanks for that link, I will surely read it. And, I am working on this lib as base for my game on what I am working on with some friends, here are few examples of it:


« Last Edit: February 21, 2014, 08:05:49 pm by Deathbeam »
Spooker Framework - Open source gaming library
My portfolio
Indie Armory - Small community of a game developers. Everyone is welcome. Bring your friends, family, pets...

zsbzsb

  • Hero Member
  • *****
  • Posts: 1409
  • Active Maintainer of CSFML/SFML.NET
    • View Profile
    • My little corner...
    • Email
Re: [.NET] SFGL - Simple and fast game library
« Reply #14 on: February 21, 2014, 08:07:28 pm »
Just to be clear, I have no issue with you utilizing other libraries, or for that fact directly copying them in. My issue is when that method breaks usage with the original library due to the overuse of abstraction and boxing in the users. But as I said, do as you wish with whatever floats your ship.

Quote
ihneriting structures is not possible

Look at extension methods then. Also consider composition over inheritance.  ;)
« Last Edit: February 21, 2014, 08:13:32 pm by zsbzsb »
Motion / MotionNET - Complete video / audio playback for SFML / SFML.NET

NetEXT - An SFML.NET Extension Library based on Thor