Skip to main content
GameDev.net gamedev.net
🔒 Locked

Tiny2D - new 2D C++ game library

Started by MickeyMouse Jan 17, 2014 at 11:53 AM 11 replies 4.7k views
Original Post
MickeyMouse
MickeyMouse

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
ambershee
ambershee

Sounds good!

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

fir
fir

I would like it more if it would be c library

MickeyMouse
MickeyMouse

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.

fir
fir

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?

MickeyMouse
MickeyMouse

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
fir
fir

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

Aldacron
Aldacron

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

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.

fir
fir

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

DragonBooster
DragonBooster

Impressive, the code looks clean and simple yet powerful and OO which is a huge advantage for me. I must say well done. How long did it take to create the engine?

MickeyMouse
MickeyMouse

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.

Maciej Sawitus
my blog | my games

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.