Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 27 Apr 2011
Offline Last Active Nov 22 2013 12:11 AM

#5062023 Graphics Gale Exporter

Posted by on 15 May 2013 - 06:19 AM

I'm currently working on a 2D platformer with a friend of mine. I do the programming, he does the art. He uses GraphicsGale for all his sprite animations and, as of now builds our sprite sheets in Photoshop manually.


As I had some down time yesterday I decided to see, if I can speed up his workflow in some way. I found GraphicsGale's exporter lacking in several respects. There is no plugin system to export to custom formats, just one format for frame information (csv, no xml or json) and no export from the command line.

Of course you can export single frames and use a tool like TexturePacker to build sprite sheets, but that's still hard to automate.


So I started to write my own exporter for .gal files (luckily they provide an API), It's not far along yet, but has already basically the same features as the internal GraphicsGale one.
I plan to add:

  • Custom exporter support via LUA or Python (will probably build some for the basic TexturePacker formats)
  • Easy integration into your build process
  • And more stuff as it is needed

I'll also share the code under an open source license.

I don't know how wide spread GraphicsGale actually is, but if you're interested in something like that let me know!

#5061475 C++ 2d Game engine

Posted by on 13 May 2013 - 03:47 AM

While SFML is not an engine, but rather a framework, I think it is a great starting point anyway. It has a large community, good tutorials and follows object oriented design principles. Setting it up is quite easy and getting something to show up on the screen is a matter of minutes.

It doesn't have an editor, physics or anything else a proper game engine might have though.

#5057334 Game Jams, when can I participate?

Posted by on 27 April 2013 - 03:04 PM

Basically, what Rld_ said!

I went to my first game jam just under a year ago and it completely changed how I go about making games and how I interact with the local community. I was worried about my skill level as well, I thought that I might detract from the experience of the other people. That was never a problem.

During my first jam I made a game in five hours, I didn't know what I was doing, but everyone loved it. Getting feedback like that, from people who might have years of industry experience, will boost your moral extremely.

Since then I have been to around ten other game jams, including the Global Game Jam in January and never had a bad experience. Everyone's just so nice! We get a lot of new people coming in all the time. People who often don't know anything about coding at all, but that doesn't matter. As long as you are passionate about making games you'll find a place and make great friends along the way.


Edit: If you wanna check out what kinda games are made during game jams and get an idea what you can expect check out the Berlin Mini Game Jam blog (8 hour jams) or Ludum Dare which is actually going on right now (online, 48 (?) hours).

#5042449 Confused on Big Oh

Posted by on 12 March 2013 - 03:13 PM

Concerning your examples:


My examples should be correct based on what I stated

n^2 O n^2
n^2 O n^3


n² = O(n²)

n² = O(n³)


Are correct in terms of the formal definition (jwezorek got it right except the "big values of n" part):


"Every appearance of O(f(n)) means precisly this: There are positive constants M and n0 such that the number xn represented by O(f(n)) satisfies the condition |xn| ≤ M |f(n)|, for all integers nn0."

(The Art of Computer Programming Volume I p. 107)


Your intuition "Big Oh is used when you have the growth of a function on the left less than or equal to the growth of a function on the right." is actually quite correct.


Lets say you have the functions f(n) = n² and g(n) = n³. The only thing you have to do to prove that f(n) = O(g(n)) is to find a factor M and some value n0 for which g(n) is always bigger than or equal f(n). In this example you could say M = 1 and n0= 1. Then you get 1² ≤ 1 * 1³ which is obviously true. Usually you are not required to argue that this holds for any n greater than n0 as this is often quite obvious. If you have to, that part can get quite tricky


This is how your example would look graphically:




As you can see the red function g(x) overtakes the blue f(x) at n = 1 and it stays always bigger than it. This works only if you know that the functions you are working with are strictly monotonic increasing, i.e. they keep on growing forever. Luckely that is true for every function you will encounter in the analysis of algorithms as you don't have the case that the input gets bigger, but the time it takes to process the input gets smaller.


A good rule of thumb for the growth of functions and how "fast" you can expect corresponding algorithms to run is:


Very fast:

  • Constant O(1): Access of a variable or an item in an array
  • Logarithmic O(log n): Find an item using binary search


  • Linear O(n): Find an item using linear search, Depth-/Breadth-first search in graphs (single for-loop)
  • Linear * Logarithmic O(n log n): Fastest a sorting algorithm based on comparisons can get (Quicksort, Mergesort, etc)

Okay (anything above O(n³) is kinda slow):

  • Polynomial O(nx): Naive sorting algorithms like Bubblesort and Insertionsort  (double for-loop).

Really slow, only applicable for small problem sizes:

  • Exponential O(xn), O(n!), ... : Building all permutations of a set, Travelling Salesman Problem



#5001846 Need Better Physics Engine in Game

Posted by on 17 November 2012 - 03:20 PM

I've been writing my own "physics engine" as well, though it's 2D. You might want to have a look at euclideanspace.com as well as this paper.
The paper is essentially an overview of everything you need in a physics engine. I hope his helps to get you started :)

Edit: And btw, as long as you're not very versed in the involved math and physics as well as general algorithm design it will be quite hard to get results like the stuff in the video you posted. It gets really hairy in the details. But even if you don't get to that point you'll learn a lot on the way and that seems to be what you're going for anyway.

#4957667 Setting up for a team project

Posted by on 10 July 2012 - 11:20 AM

Is there a way to use a version system with Tortoise?

Do you mean the option of tracking past versions of files and being able to revert your directory to any past revision? If yes, then Tortoise is what you're looking for. It even has a nice interface (when you press commit you can decide which files to add). Not only that but in the case of a conflict you can look at the two files side by side and Tortoise shows you what is conflicting and offers you options how to resolve the conflict.

#4884956 Collision Response With Penetration Depth

Posted by on 17 November 2011 - 08:01 AM

As I had the same problem I looked into it and found the mistake:

You need to add a second condition to your If-Branches
Imagine with your current form:

  if( right > other_left )
 				penetration.x = other_left/*200*/ - right/*250*/;

What happens if the box is on the right of the other box? So right > other_right.
You still go in this if-branch and push the volume all the way to the left, which results in "jumping over the box".
What you need to do is add a second condition to all your if's:

  if( right > other_left  && right <= other_right)
  				penetration.x = other_left/*200*/ - right/*250*/;

like this.

And remember to check the penetration distance in absolute values, otherwise a overlap like this:

left = 250
other_left = 100

right = 750
other_right = 600

top = 0
other_top = 45

bottom = 50
other_bottom = 95

Would be resolved by moving the object to the left, because
left - other_right = -350 is smaller than
top - other_top = -5
but the actual distance you want it to move is bigger.

I hope this helps.

#4884637 Collision Response With Penetration Depth

Posted by on 16 November 2011 - 12:55 PM

Hi, I've just had about the same problem.
I suppose what you want to do is to keep the player above the plattform if he falls on it, beneath it if he runs into it or under it if he jumps into it.
Now you are checking the intersection distance in Y as well as in X direction and then moving the player in respect to both distances.

This results in the problem you show in the picture. The player is moved above the plattform and then to the left as well.
I solved it by checking what the shortest distance is to move out of collision and then just applying that one.

This should work just fine for what you are doing right now.

edit: Infernal-rk is right. I forgot to mention that I test first if there is a collision.