Advertisement

Tiny2D - new 2D C++ game library

Started by January 17, 2014 11:53 AM
11 comments, last by MickeyMouse 10 years, 10 months ago

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

Maciej Sawitus
my blog | my games

Sounds good!

I'd update your website with some screenshots or example content ;)

Advertisement

Good point! Going to put some screenshots in there soon.

Cheers!

Maciej Sawitus
my blog | my games

I would like it more if it would be c library

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.

Maciej Sawitus
my blog | my games

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?

Advertisement

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

Maciej Sawitus
my blog | my games

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++ ;\

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++.

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.

Maciej Sawitus
my blog | my games

This topic is closed to new replies.

Advertisement