Sign in to follow this  
MickeyMouse

Tiny2D - new 2D C++ game library

Recommended Posts

MickeyMouse    201

Hi everyone,

 

I have just open sourced my 2D game library called Tiny2D.

 

My focus with this library was on being easy and quick to use. Minimum code, maximum effect. Whether you plan to develop commercial game or just taking part in some game jam, you might be interested.

 

Current feature set includes:

  • animated sprites
  • particle effects
  • shader based materials
  • render targets
  • some built-in postprocessing filters
  • asynchronous resource loading
  • audio

Home page: http://tiny2d.pixelelephant.com

Blog: http://gamedevcoder.wordpress.com/2014/01/16/tiny2d/

GitHub: https://github.com/macieks/Tiny2D

 

Any feedback welcome!

 

Maciej

Share this post


Link to post
Share on other sites
MickeyMouse    201

I would like it more if it would be c library

 

Why is that? smile.png

 

I love C and I prefer it in many cases (over C++) but C++ proved to result in a bit cleaner and more robust API than it would have been in C.

 

In fact I have initially coded Tiny2D in C but switched to C++ later on. The main reason for that was automatic destruction of objects via destructor. The only little thing I don't like about Tiny2D interface now is that you still see an internal private pointer inside of the class' declaractions (see the main header file https://github.com/macieks/Tiny2D/blob/master/Include/Tiny2D.h ) - e.g. MaterialObj* obj inside of Material. Ideally I'd like to hide that from the user. In C, it wouldn't have been an issue. But overall I think this is very minor.

Edited by MickeyMouse

Share this post


Link to post
Share on other sites
fir    460

 

I would like it more if it would be c library

 

Why is that? smile.png

 

 

 

Well i will not tell you nothing interesting, I just prefer c as language and c libs over c++ libs.

I never used c++ style lib from c - do you think that using it 

from c would be hard? could you maybe explain a bit?

Share this post


Link to post
Share on other sites
MickeyMouse    201

 

 

I would like it more if it would be c library

 

Why is that? smile.png

 

 

 

Well i will not tell you nothing interesting, I just prefer c as language and c libs over c++ libs.

I never used c++ style lib from c - do you think that using it 

from c would be hard? could you maybe explain a bit?

 

Many compilers allow you to mix C with C++. Since C is a mostly just a subset of C++, you can have all of your code in C if you like and still use Tiny2D which is in C++. You just have to tell the compiler that the files using Tiny2D shall be compiled with C++, not C, compiler - typically you just need to set their extension to .cpp instead of .c

Share this post


Link to post
Share on other sites
fir    460

Many compilers allow you to mix C with C++. Since C is a mostly just a subset of C++, you can have all of your code in C if you like and still use Tiny2D which is in C++. You just have to tell the compiler that the files using Tiny2D shall be compiled with C++, not C, compiler - typically you just need to set their extension to .cpp instead of .c

 

that would break my rule of not using c++ ;\

Share this post


Link to post
Share on other sites
Aldacron    4544

Many compilers allow you to mix C with C++. Since C is a mostly just a subset of C++, you can have all of your code in C if you like and still use Tiny2D which is in C++. You just have to tell the compiler that the files using Tiny2D shall be compiled with C++, not C, compiler - typically you just need to set their extension to .cpp instead of .c


Not quite. You can mix C with your C++ source and compile as C++ mostly as-is (excepting a few corner cases), but it doesn't work the other way unless you have a C interface in the C++ headers. Take a look at SFML for an example of what I mean. It's usable from C, but only through the CSFML API, which wraps the C++ API. A C interface is also useful for creating bindings to other languages. The C ABI and calling convention is about as universal as you can get, something that is not true of C++. Edited by Aldacron

Share this post


Link to post
Share on other sites
MickeyMouse    201

unless you have a C interface in the C++ headers.

 

That's what I was thinking. Basically write all of _your_ code in C but compile with C++ compiler. That way you can use external C++ code.

 

And yeah, good point about C interface being great for doing all kinds of language bindings. With some effort I'd probably manage to extract pure C interface out of my library for that purpose.

Edited by MickeyMouse

Share this post


Link to post
Share on other sites
fir    460

 

And yeah, good point about C interface being great for doing all kinds of language bindings. With some effort I'd probably manage to extract pure C interface out of my library for that purpose.

 

you should do that

Share this post


Link to post
Share on other sites
MickeyMouse    201

How long did it take to create the engine?

 

Took about 5 months by now but I've only worked on it in my spare time which I didn't have too much recently. On average probably less than 1 hour a day.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this