With Sonic fangames in general, they're either ROM hacks or use tools like Multimedia Fusion
, Game Maker
, or some other existing engine. People coding an engine from scratch is actually fairly rare around here, but obviously it can be done.
From the sounds of it, you're using C/C++. In such a case, SFML 2.0 is a pretty good library. For a 2D game, it has most of everything you need; hardware-accelerated graphics, input, sound, networking. Another decent one (if you don't mind pure C-style) is Allegro 5
), which is about as complete as SFML. It just has a different API style.
If you're just starting out with game development, I would recommend making simple games first, like Pong, Breakout, Pacman, Mario, etc. You don't want to overwhelm yourself with new concepts all at once, so you have to build from simpler things. But once you do get to things like, say, Sonic games, the Sonic Physics Guide
can be very helpful in implementing classic Sonic physics. But like I said, don't try to do Sonic games as your very first game programming project; there's a lot of lower-level concepts and things going on that you need to grasp first.
This post has been edited by Delta: 18 August 2012 - 09:14 PM